module.exports = [ "[project]/node_modules/next/dist/esm/server/route-modules/app-route/module.compiled.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { 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/app-route-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-route-turbo.runtime.dev.js, cjs)"); } else //TURBOPACK unreachable ; } else //TURBOPACK unreachable ; } } //# sourceMappingURL=module.compiled.js.map }), "[project]/node_modules/next/dist/esm/server/route-kind.js [app-route] (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; }({}); //# sourceMappingURL=route-kind.js.map }), "[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * 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 __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 ]); 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" ]); ; //# sourceMappingURL=constants.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/is-thenable.js [app-route] (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'; } //# sourceMappingURL=is-thenable.js.map }), "[project]/node_modules/next/dist/compiled/@opentelemetry/api/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { (()=>{ "use strict"; var e = { 491: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.ContextAPI = void 0; const n = r(223); const a = r(172); const o = r(930); const i = "context"; const c = new n.NoopContextManager; class ContextAPI { constructor(){} static getInstance() { if (!this._instance) { this._instance = new ContextAPI; } return this._instance; } setGlobalContextManager(e) { return (0, a.registerGlobal)(i, e, o.DiagAPI.instance()); } active() { return this._getContextManager().active(); } with(e, t, r, ...n) { return this._getContextManager().with(e, t, r, ...n); } bind(e, t) { return this._getContextManager().bind(e, t); } _getContextManager() { return (0, a.getGlobal)(i) || c; } disable() { this._getContextManager().disable(); (0, a.unregisterGlobal)(i, o.DiagAPI.instance()); } } t.ContextAPI = ContextAPI; }, 930: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.DiagAPI = void 0; const n = r(56); const a = r(912); const o = r(957); const i = r(172); const c = "diag"; class DiagAPI { constructor(){ function _logProxy(e) { return function(...t) { const r = (0, i.getGlobal)("diag"); if (!r) return; return r[e](...t); }; } const e = this; const setLogger = (t, r = { logLevel: o.DiagLogLevel.INFO })=>{ var n, c, s; if (t === e) { const t = new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation"); e.error((n = t.stack) !== null && n !== void 0 ? n : t.message); return false; } if (typeof r === "number") { r = { logLevel: r }; } const u = (0, i.getGlobal)("diag"); const l = (0, a.createLogLevelDiagLogger)((c = r.logLevel) !== null && c !== void 0 ? c : o.DiagLogLevel.INFO, t); if (u && !r.suppressOverrideMessage) { const e = (s = (new Error).stack) !== null && s !== void 0 ? s : ""; u.warn(`Current logger will be overwritten from ${e}`); l.warn(`Current logger will overwrite one already registered from ${e}`); } return (0, i.registerGlobal)("diag", l, e, true); }; e.setLogger = setLogger; e.disable = ()=>{ (0, i.unregisterGlobal)(c, e); }; e.createComponentLogger = (e)=>new n.DiagComponentLogger(e); e.verbose = _logProxy("verbose"); e.debug = _logProxy("debug"); e.info = _logProxy("info"); e.warn = _logProxy("warn"); e.error = _logProxy("error"); } static instance() { if (!this._instance) { this._instance = new DiagAPI; } return this._instance; } } t.DiagAPI = DiagAPI; }, 653: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.MetricsAPI = void 0; const n = r(660); const a = r(172); const o = r(930); const i = "metrics"; class MetricsAPI { constructor(){} static getInstance() { if (!this._instance) { this._instance = new MetricsAPI; } return this._instance; } setGlobalMeterProvider(e) { return (0, a.registerGlobal)(i, e, o.DiagAPI.instance()); } getMeterProvider() { return (0, a.getGlobal)(i) || n.NOOP_METER_PROVIDER; } getMeter(e, t, r) { return this.getMeterProvider().getMeter(e, t, r); } disable() { (0, a.unregisterGlobal)(i, o.DiagAPI.instance()); } } t.MetricsAPI = MetricsAPI; }, 181: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.PropagationAPI = void 0; const n = r(172); const a = r(874); const o = r(194); const i = r(277); const c = r(369); const s = r(930); const u = "propagation"; const l = new a.NoopTextMapPropagator; class PropagationAPI { constructor(){ this.createBaggage = c.createBaggage; this.getBaggage = i.getBaggage; this.getActiveBaggage = i.getActiveBaggage; this.setBaggage = i.setBaggage; this.deleteBaggage = i.deleteBaggage; } static getInstance() { if (!this._instance) { this._instance = new PropagationAPI; } return this._instance; } setGlobalPropagator(e) { return (0, n.registerGlobal)(u, e, s.DiagAPI.instance()); } inject(e, t, r = o.defaultTextMapSetter) { return this._getGlobalPropagator().inject(e, t, r); } extract(e, t, r = o.defaultTextMapGetter) { return this._getGlobalPropagator().extract(e, t, r); } fields() { return this._getGlobalPropagator().fields(); } disable() { (0, n.unregisterGlobal)(u, s.DiagAPI.instance()); } _getGlobalPropagator() { return (0, n.getGlobal)(u) || l; } } t.PropagationAPI = PropagationAPI; }, 997: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.TraceAPI = void 0; const n = r(172); const a = r(846); const o = r(139); const i = r(607); const c = r(930); const s = "trace"; class TraceAPI { constructor(){ this._proxyTracerProvider = new a.ProxyTracerProvider; this.wrapSpanContext = o.wrapSpanContext; this.isSpanContextValid = o.isSpanContextValid; this.deleteSpan = i.deleteSpan; this.getSpan = i.getSpan; this.getActiveSpan = i.getActiveSpan; this.getSpanContext = i.getSpanContext; this.setSpan = i.setSpan; this.setSpanContext = i.setSpanContext; } static getInstance() { if (!this._instance) { this._instance = new TraceAPI; } return this._instance; } setGlobalTracerProvider(e) { const t = (0, n.registerGlobal)(s, this._proxyTracerProvider, c.DiagAPI.instance()); if (t) { this._proxyTracerProvider.setDelegate(e); } return t; } getTracerProvider() { return (0, n.getGlobal)(s) || this._proxyTracerProvider; } getTracer(e, t) { return this.getTracerProvider().getTracer(e, t); } disable() { (0, n.unregisterGlobal)(s, c.DiagAPI.instance()); this._proxyTracerProvider = new a.ProxyTracerProvider; } } t.TraceAPI = TraceAPI; }, 277: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.deleteBaggage = t.setBaggage = t.getActiveBaggage = t.getBaggage = void 0; const n = r(491); const a = r(780); const o = (0, a.createContextKey)("OpenTelemetry Baggage Key"); function getBaggage(e) { return e.getValue(o) || undefined; } t.getBaggage = getBaggage; function getActiveBaggage() { return getBaggage(n.ContextAPI.getInstance().active()); } t.getActiveBaggage = getActiveBaggage; function setBaggage(e, t) { return e.setValue(o, t); } t.setBaggage = setBaggage; function deleteBaggage(e) { return e.deleteValue(o); } t.deleteBaggage = deleteBaggage; }, 993: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.BaggageImpl = void 0; class BaggageImpl { constructor(e){ this._entries = e ? new Map(e) : new Map; } getEntry(e) { const t = this._entries.get(e); if (!t) { return undefined; } return Object.assign({}, t); } getAllEntries() { return Array.from(this._entries.entries()).map(([e, t])=>[ e, t ]); } setEntry(e, t) { const r = new BaggageImpl(this._entries); r._entries.set(e, t); return r; } removeEntry(e) { const t = new BaggageImpl(this._entries); t._entries.delete(e); return t; } removeEntries(...e) { const t = new BaggageImpl(this._entries); for (const r of e){ t._entries.delete(r); } return t; } clear() { return new BaggageImpl; } } t.BaggageImpl = BaggageImpl; }, 830: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.baggageEntryMetadataSymbol = void 0; t.baggageEntryMetadataSymbol = Symbol("BaggageEntryMetadata"); }, 369: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.baggageEntryMetadataFromString = t.createBaggage = void 0; const n = r(930); const a = r(993); const o = r(830); const i = n.DiagAPI.instance(); function createBaggage(e = {}) { return new a.BaggageImpl(new Map(Object.entries(e))); } t.createBaggage = createBaggage; function baggageEntryMetadataFromString(e) { if (typeof e !== "string") { i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`); e = ""; } return { __TYPE__: o.baggageEntryMetadataSymbol, toString () { return e; } }; } t.baggageEntryMetadataFromString = baggageEntryMetadataFromString; }, 67: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.context = void 0; const n = r(491); t.context = n.ContextAPI.getInstance(); }, 223: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.NoopContextManager = void 0; const n = r(780); class NoopContextManager { active() { return n.ROOT_CONTEXT; } with(e, t, r, ...n) { return t.call(r, ...n); } bind(e, t) { return t; } enable() { return this; } disable() { return this; } } t.NoopContextManager = NoopContextManager; }, 780: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.ROOT_CONTEXT = t.createContextKey = void 0; function createContextKey(e) { return Symbol.for(e); } t.createContextKey = createContextKey; class BaseContext { constructor(e){ const t = this; t._currentContext = e ? new Map(e) : new Map; t.getValue = (e)=>t._currentContext.get(e); t.setValue = (e, r)=>{ const n = new BaseContext(t._currentContext); n._currentContext.set(e, r); return n; }; t.deleteValue = (e)=>{ const r = new BaseContext(t._currentContext); r._currentContext.delete(e); return r; }; } } t.ROOT_CONTEXT = new BaseContext; }, 506: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.diag = void 0; const n = r(930); t.diag = n.DiagAPI.instance(); }, 56: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.DiagComponentLogger = void 0; const n = r(172); class DiagComponentLogger { constructor(e){ this._namespace = e.namespace || "DiagComponentLogger"; } debug(...e) { return logProxy("debug", this._namespace, e); } error(...e) { return logProxy("error", this._namespace, e); } info(...e) { return logProxy("info", this._namespace, e); } warn(...e) { return logProxy("warn", this._namespace, e); } verbose(...e) { return logProxy("verbose", this._namespace, e); } } t.DiagComponentLogger = DiagComponentLogger; function logProxy(e, t, r) { const a = (0, n.getGlobal)("diag"); if (!a) { return; } r.unshift(t); return a[e](...r); } }, 972: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.DiagConsoleLogger = void 0; const r = [ { n: "error", c: "error" }, { n: "warn", c: "warn" }, { n: "info", c: "info" }, { n: "debug", c: "debug" }, { n: "verbose", c: "trace" } ]; class DiagConsoleLogger { constructor(){ function _consoleFunc(e) { return function(...t) { if (console) { let r = console[e]; if (typeof r !== "function") { r = console.log; } if (typeof r === "function") { return r.apply(console, t); } } }; } for(let e = 0; e < r.length; e++){ this[r[e].n] = _consoleFunc(r[e].c); } } } t.DiagConsoleLogger = DiagConsoleLogger; }, 912: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.createLogLevelDiagLogger = void 0; const n = r(957); function createLogLevelDiagLogger(e, t) { if (e < n.DiagLogLevel.NONE) { e = n.DiagLogLevel.NONE; } else if (e > n.DiagLogLevel.ALL) { e = n.DiagLogLevel.ALL; } t = t || {}; function _filterFunc(r, n) { const a = t[r]; if (typeof a === "function" && e >= n) { return a.bind(t); } return function() {}; } return { error: _filterFunc("error", n.DiagLogLevel.ERROR), warn: _filterFunc("warn", n.DiagLogLevel.WARN), info: _filterFunc("info", n.DiagLogLevel.INFO), debug: _filterFunc("debug", n.DiagLogLevel.DEBUG), verbose: _filterFunc("verbose", n.DiagLogLevel.VERBOSE) }; } t.createLogLevelDiagLogger = createLogLevelDiagLogger; }, 957: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.DiagLogLevel = void 0; var r; (function(e) { e[e["NONE"] = 0] = "NONE"; e[e["ERROR"] = 30] = "ERROR"; e[e["WARN"] = 50] = "WARN"; e[e["INFO"] = 60] = "INFO"; e[e["DEBUG"] = 70] = "DEBUG"; e[e["VERBOSE"] = 80] = "VERBOSE"; e[e["ALL"] = 9999] = "ALL"; })(r = t.DiagLogLevel || (t.DiagLogLevel = {})); }, 172: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.unregisterGlobal = t.getGlobal = t.registerGlobal = void 0; const n = r(200); const a = r(521); const o = r(130); const i = a.VERSION.split(".")[0]; const c = Symbol.for(`opentelemetry.js.api.${i}`); const s = n._globalThis; function registerGlobal(e, t, r, n = false) { var o; const i = s[c] = (o = s[c]) !== null && o !== void 0 ? o : { version: a.VERSION }; if (!n && i[e]) { const t = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`); r.error(t.stack || t.message); return false; } if (i.version !== a.VERSION) { const t = new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`); r.error(t.stack || t.message); return false; } i[e] = t; r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`); return true; } t.registerGlobal = registerGlobal; function getGlobal(e) { var t, r; const n = (t = s[c]) === null || t === void 0 ? void 0 : t.version; if (!n || !(0, o.isCompatible)(n)) { return; } return (r = s[c]) === null || r === void 0 ? void 0 : r[e]; } t.getGlobal = getGlobal; function unregisterGlobal(e, t) { t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`); const r = s[c]; if (r) { delete r[e]; } } t.unregisterGlobal = unregisterGlobal; }, 130: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.isCompatible = t._makeCompatibilityCheck = void 0; const n = r(521); const a = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/; function _makeCompatibilityCheck(e) { const t = new Set([ e ]); const r = new Set; const n = e.match(a); if (!n) { return ()=>false; } const o = { major: +n[1], minor: +n[2], patch: +n[3], prerelease: n[4] }; if (o.prerelease != null) { return function isExactmatch(t) { return t === e; }; } function _reject(e) { r.add(e); return false; } function _accept(e) { t.add(e); return true; } return function isCompatible(e) { if (t.has(e)) { return true; } if (r.has(e)) { return false; } const n = e.match(a); if (!n) { return _reject(e); } const i = { major: +n[1], minor: +n[2], patch: +n[3], prerelease: n[4] }; if (i.prerelease != null) { return _reject(e); } if (o.major !== i.major) { return _reject(e); } if (o.major === 0) { if (o.minor === i.minor && o.patch <= i.patch) { return _accept(e); } return _reject(e); } if (o.minor <= i.minor) { return _accept(e); } return _reject(e); }; } t._makeCompatibilityCheck = _makeCompatibilityCheck; t.isCompatible = _makeCompatibilityCheck(n.VERSION); }, 886: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.metrics = void 0; const n = r(653); t.metrics = n.MetricsAPI.getInstance(); }, 901: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.ValueType = void 0; var r; (function(e) { e[e["INT"] = 0] = "INT"; e[e["DOUBLE"] = 1] = "DOUBLE"; })(r = t.ValueType || (t.ValueType = {})); }, 102: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.createNoopMeter = t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = t.NOOP_OBSERVABLE_GAUGE_METRIC = t.NOOP_OBSERVABLE_COUNTER_METRIC = t.NOOP_UP_DOWN_COUNTER_METRIC = t.NOOP_HISTOGRAM_METRIC = t.NOOP_COUNTER_METRIC = t.NOOP_METER = t.NoopObservableUpDownCounterMetric = t.NoopObservableGaugeMetric = t.NoopObservableCounterMetric = t.NoopObservableMetric = t.NoopHistogramMetric = t.NoopUpDownCounterMetric = t.NoopCounterMetric = t.NoopMetric = t.NoopMeter = void 0; class NoopMeter { constructor(){} createHistogram(e, r) { return t.NOOP_HISTOGRAM_METRIC; } createCounter(e, r) { return t.NOOP_COUNTER_METRIC; } createUpDownCounter(e, r) { return t.NOOP_UP_DOWN_COUNTER_METRIC; } createObservableGauge(e, r) { return t.NOOP_OBSERVABLE_GAUGE_METRIC; } createObservableCounter(e, r) { return t.NOOP_OBSERVABLE_COUNTER_METRIC; } createObservableUpDownCounter(e, r) { return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; } addBatchObservableCallback(e, t) {} removeBatchObservableCallback(e) {} } t.NoopMeter = NoopMeter; class NoopMetric { } t.NoopMetric = NoopMetric; class NoopCounterMetric extends NoopMetric { add(e, t) {} } t.NoopCounterMetric = NoopCounterMetric; class NoopUpDownCounterMetric extends NoopMetric { add(e, t) {} } t.NoopUpDownCounterMetric = NoopUpDownCounterMetric; class NoopHistogramMetric extends NoopMetric { record(e, t) {} } t.NoopHistogramMetric = NoopHistogramMetric; class NoopObservableMetric { addCallback(e) {} removeCallback(e) {} } t.NoopObservableMetric = NoopObservableMetric; class NoopObservableCounterMetric extends NoopObservableMetric { } t.NoopObservableCounterMetric = NoopObservableCounterMetric; class NoopObservableGaugeMetric extends NoopObservableMetric { } t.NoopObservableGaugeMetric = NoopObservableGaugeMetric; class NoopObservableUpDownCounterMetric extends NoopObservableMetric { } t.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric; t.NOOP_METER = new NoopMeter; t.NOOP_COUNTER_METRIC = new NoopCounterMetric; t.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric; t.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric; t.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric; t.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric; t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric; function createNoopMeter() { return t.NOOP_METER; } t.createNoopMeter = createNoopMeter; }, 660: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.NOOP_METER_PROVIDER = t.NoopMeterProvider = void 0; const n = r(102); class NoopMeterProvider { getMeter(e, t, r) { return n.NOOP_METER; } } t.NoopMeterProvider = NoopMeterProvider; t.NOOP_METER_PROVIDER = new NoopMeterProvider; }, 200: function(e, t, r) { var n = this && this.__createBinding || (Object.create ? function(e, t, r, n) { if (n === undefined) n = r; Object.defineProperty(e, n, { enumerable: true, get: function() { return t[r]; } }); } : function(e, t, r, n) { if (n === undefined) n = r; e[n] = t[r]; }); var a = this && this.__exportStar || function(e, t) { for(var r in e)if (r !== "default" && !Object.prototype.hasOwnProperty.call(t, r)) n(t, e, r); }; Object.defineProperty(t, "__esModule", { value: true }); a(r(46), t); }, 651: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t._globalThis = void 0; t._globalThis = typeof globalThis === "object" ? globalThis : /*TURBOPACK member replacement*/ __turbopack_context__.g; }, 46: function(e, t, r) { var n = this && this.__createBinding || (Object.create ? function(e, t, r, n) { if (n === undefined) n = r; Object.defineProperty(e, n, { enumerable: true, get: function() { return t[r]; } }); } : function(e, t, r, n) { if (n === undefined) n = r; e[n] = t[r]; }); var a = this && this.__exportStar || function(e, t) { for(var r in e)if (r !== "default" && !Object.prototype.hasOwnProperty.call(t, r)) n(t, e, r); }; Object.defineProperty(t, "__esModule", { value: true }); a(r(651), t); }, 939: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.propagation = void 0; const n = r(181); t.propagation = n.PropagationAPI.getInstance(); }, 874: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.NoopTextMapPropagator = void 0; class NoopTextMapPropagator { inject(e, t) {} extract(e, t) { return e; } fields() { return []; } } t.NoopTextMapPropagator = NoopTextMapPropagator; }, 194: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.defaultTextMapSetter = t.defaultTextMapGetter = void 0; t.defaultTextMapGetter = { get (e, t) { if (e == null) { return undefined; } return e[t]; }, keys (e) { if (e == null) { return []; } return Object.keys(e); } }; t.defaultTextMapSetter = { set (e, t, r) { if (e == null) { return; } e[t] = r; } }; }, 845: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.trace = void 0; const n = r(997); t.trace = n.TraceAPI.getInstance(); }, 403: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.NonRecordingSpan = void 0; const n = r(476); class NonRecordingSpan { constructor(e = n.INVALID_SPAN_CONTEXT){ this._spanContext = e; } spanContext() { return this._spanContext; } setAttribute(e, t) { return this; } setAttributes(e) { return this; } addEvent(e, t) { return this; } setStatus(e) { return this; } updateName(e) { return this; } end(e) {} isRecording() { return false; } recordException(e, t) {} } t.NonRecordingSpan = NonRecordingSpan; }, 614: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.NoopTracer = void 0; const n = r(491); const a = r(607); const o = r(403); const i = r(139); const c = n.ContextAPI.getInstance(); class NoopTracer { startSpan(e, t, r = c.active()) { const n = Boolean(t === null || t === void 0 ? void 0 : t.root); if (n) { return new o.NonRecordingSpan; } const s = r && (0, a.getSpanContext)(r); if (isSpanContext(s) && (0, i.isSpanContextValid)(s)) { return new o.NonRecordingSpan(s); } else { return new o.NonRecordingSpan; } } startActiveSpan(e, t, r, n) { let o; let i; let s; if (arguments.length < 2) { return; } else if (arguments.length === 2) { s = t; } else if (arguments.length === 3) { o = t; s = r; } else { o = t; i = r; s = n; } const u = i !== null && i !== void 0 ? i : c.active(); const l = this.startSpan(e, o, u); const g = (0, a.setSpan)(u, l); return c.with(g, s, undefined, l); } } t.NoopTracer = NoopTracer; function isSpanContext(e) { return typeof e === "object" && typeof e["spanId"] === "string" && typeof e["traceId"] === "string" && typeof e["traceFlags"] === "number"; } }, 124: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.NoopTracerProvider = void 0; const n = r(614); class NoopTracerProvider { getTracer(e, t, r) { return new n.NoopTracer; } } t.NoopTracerProvider = NoopTracerProvider; }, 125: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.ProxyTracer = void 0; const n = r(614); const a = new n.NoopTracer; class ProxyTracer { constructor(e, t, r, n){ this._provider = e; this.name = t; this.version = r; this.options = n; } startSpan(e, t, r) { return this._getTracer().startSpan(e, t, r); } startActiveSpan(e, t, r, n) { const a = this._getTracer(); return Reflect.apply(a.startActiveSpan, a, arguments); } _getTracer() { if (this._delegate) { return this._delegate; } const e = this._provider.getDelegateTracer(this.name, this.version, this.options); if (!e) { return a; } this._delegate = e; return this._delegate; } } t.ProxyTracer = ProxyTracer; }, 846: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.ProxyTracerProvider = void 0; const n = r(125); const a = r(124); const o = new a.NoopTracerProvider; class ProxyTracerProvider { getTracer(e, t, r) { var a; return (a = this.getDelegateTracer(e, t, r)) !== null && a !== void 0 ? a : new n.ProxyTracer(this, e, t, r); } getDelegate() { var e; return (e = this._delegate) !== null && e !== void 0 ? e : o; } setDelegate(e) { this._delegate = e; } getDelegateTracer(e, t, r) { var n; return (n = this._delegate) === null || n === void 0 ? void 0 : n.getTracer(e, t, r); } } t.ProxyTracerProvider = ProxyTracerProvider; }, 996: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.SamplingDecision = void 0; var r; (function(e) { e[e["NOT_RECORD"] = 0] = "NOT_RECORD"; e[e["RECORD"] = 1] = "RECORD"; e[e["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; })(r = t.SamplingDecision || (t.SamplingDecision = {})); }, 607: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.getSpanContext = t.setSpanContext = t.deleteSpan = t.setSpan = t.getActiveSpan = t.getSpan = void 0; const n = r(780); const a = r(403); const o = r(491); const i = (0, n.createContextKey)("OpenTelemetry Context Key SPAN"); function getSpan(e) { return e.getValue(i) || undefined; } t.getSpan = getSpan; function getActiveSpan() { return getSpan(o.ContextAPI.getInstance().active()); } t.getActiveSpan = getActiveSpan; function setSpan(e, t) { return e.setValue(i, t); } t.setSpan = setSpan; function deleteSpan(e) { return e.deleteValue(i); } t.deleteSpan = deleteSpan; function setSpanContext(e, t) { return setSpan(e, new a.NonRecordingSpan(t)); } t.setSpanContext = setSpanContext; function getSpanContext(e) { var t; return (t = getSpan(e)) === null || t === void 0 ? void 0 : t.spanContext(); } t.getSpanContext = getSpanContext; }, 325: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.TraceStateImpl = void 0; const n = r(564); const a = 32; const o = 512; const i = ","; const c = "="; class TraceStateImpl { constructor(e){ this._internalState = new Map; if (e) this._parse(e); } set(e, t) { const r = this._clone(); if (r._internalState.has(e)) { r._internalState.delete(e); } r._internalState.set(e, t); return r; } unset(e) { const t = this._clone(); t._internalState.delete(e); return t; } get(e) { return this._internalState.get(e); } serialize() { return this._keys().reduce((e, t)=>{ e.push(t + c + this.get(t)); return e; }, []).join(i); } _parse(e) { if (e.length > o) return; this._internalState = e.split(i).reverse().reduce((e, t)=>{ const r = t.trim(); const a = r.indexOf(c); if (a !== -1) { const o = r.slice(0, a); const i = r.slice(a + 1, t.length); if ((0, n.validateKey)(o) && (0, n.validateValue)(i)) { e.set(o, i); } else {} } return e; }, new Map); if (this._internalState.size > a) { this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, a)); } } _keys() { return Array.from(this._internalState.keys()).reverse(); } _clone() { const e = new TraceStateImpl; e._internalState = new Map(this._internalState); return e; } } t.TraceStateImpl = TraceStateImpl; }, 564: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.validateValue = t.validateKey = void 0; const r = "[_0-9a-z-*/]"; const n = `[a-z]${r}{0,255}`; const a = `[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`; const o = new RegExp(`^(?:${n}|${a})$`); const i = /^[ -~]{0,255}[!-~]$/; const c = /,|=/; function validateKey(e) { return o.test(e); } t.validateKey = validateKey; function validateValue(e) { return i.test(e) && !c.test(e); } t.validateValue = validateValue; }, 98: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.createTraceState = void 0; const n = r(325); function createTraceState(e) { return new n.TraceStateImpl(e); } t.createTraceState = createTraceState; }, 476: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.INVALID_SPAN_CONTEXT = t.INVALID_TRACEID = t.INVALID_SPANID = void 0; const n = r(475); t.INVALID_SPANID = "0000000000000000"; t.INVALID_TRACEID = "00000000000000000000000000000000"; t.INVALID_SPAN_CONTEXT = { traceId: t.INVALID_TRACEID, spanId: t.INVALID_SPANID, traceFlags: n.TraceFlags.NONE }; }, 357: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.SpanKind = void 0; var r; (function(e) { e[e["INTERNAL"] = 0] = "INTERNAL"; e[e["SERVER"] = 1] = "SERVER"; e[e["CLIENT"] = 2] = "CLIENT"; e[e["PRODUCER"] = 3] = "PRODUCER"; e[e["CONSUMER"] = 4] = "CONSUMER"; })(r = t.SpanKind || (t.SpanKind = {})); }, 139: (e, t, r)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.wrapSpanContext = t.isSpanContextValid = t.isValidSpanId = t.isValidTraceId = void 0; const n = r(476); const a = r(403); const o = /^([0-9a-f]{32})$/i; const i = /^[0-9a-f]{16}$/i; function isValidTraceId(e) { return o.test(e) && e !== n.INVALID_TRACEID; } t.isValidTraceId = isValidTraceId; function isValidSpanId(e) { return i.test(e) && e !== n.INVALID_SPANID; } t.isValidSpanId = isValidSpanId; function isSpanContextValid(e) { return isValidTraceId(e.traceId) && isValidSpanId(e.spanId); } t.isSpanContextValid = isSpanContextValid; function wrapSpanContext(e) { return new a.NonRecordingSpan(e); } t.wrapSpanContext = wrapSpanContext; }, 847: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.SpanStatusCode = void 0; var r; (function(e) { e[e["UNSET"] = 0] = "UNSET"; e[e["OK"] = 1] = "OK"; e[e["ERROR"] = 2] = "ERROR"; })(r = t.SpanStatusCode || (t.SpanStatusCode = {})); }, 475: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.TraceFlags = void 0; var r; (function(e) { e[e["NONE"] = 0] = "NONE"; e[e["SAMPLED"] = 1] = "SAMPLED"; })(r = t.TraceFlags || (t.TraceFlags = {})); }, 521: (e, t)=>{ Object.defineProperty(t, "__esModule", { value: true }); t.VERSION = void 0; t.VERSION = "1.6.0"; } }; var t = {}; function __nccwpck_require__(r) { var n = t[r]; if (n !== undefined) { return n.exports; } var a = t[r] = { exports: {} }; var o = true; try { e[r].call(a.exports, a, a.exports, __nccwpck_require__); o = false; } finally{ if (o) delete t[r]; } return a.exports; } if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/node_modules/next/dist/compiled/@opentelemetry/api") + "/"; var r = {}; (()=>{ var e = r; Object.defineProperty(e, "__esModule", { value: true }); e.trace = e.propagation = e.metrics = e.diag = e.context = e.INVALID_SPAN_CONTEXT = e.INVALID_TRACEID = e.INVALID_SPANID = e.isValidSpanId = e.isValidTraceId = e.isSpanContextValid = e.createTraceState = e.TraceFlags = e.SpanStatusCode = e.SpanKind = e.SamplingDecision = e.ProxyTracerProvider = e.ProxyTracer = e.defaultTextMapSetter = e.defaultTextMapGetter = e.ValueType = e.createNoopMeter = e.DiagLogLevel = e.DiagConsoleLogger = e.ROOT_CONTEXT = e.createContextKey = e.baggageEntryMetadataFromString = void 0; var t = __nccwpck_require__(369); Object.defineProperty(e, "baggageEntryMetadataFromString", { enumerable: true, get: function() { return t.baggageEntryMetadataFromString; } }); var n = __nccwpck_require__(780); Object.defineProperty(e, "createContextKey", { enumerable: true, get: function() { return n.createContextKey; } }); Object.defineProperty(e, "ROOT_CONTEXT", { enumerable: true, get: function() { return n.ROOT_CONTEXT; } }); var a = __nccwpck_require__(972); Object.defineProperty(e, "DiagConsoleLogger", { enumerable: true, get: function() { return a.DiagConsoleLogger; } }); var o = __nccwpck_require__(957); Object.defineProperty(e, "DiagLogLevel", { enumerable: true, get: function() { return o.DiagLogLevel; } }); var i = __nccwpck_require__(102); Object.defineProperty(e, "createNoopMeter", { enumerable: true, get: function() { return i.createNoopMeter; } }); var c = __nccwpck_require__(901); Object.defineProperty(e, "ValueType", { enumerable: true, get: function() { return c.ValueType; } }); var s = __nccwpck_require__(194); Object.defineProperty(e, "defaultTextMapGetter", { enumerable: true, get: function() { return s.defaultTextMapGetter; } }); Object.defineProperty(e, "defaultTextMapSetter", { enumerable: true, get: function() { return s.defaultTextMapSetter; } }); var u = __nccwpck_require__(125); Object.defineProperty(e, "ProxyTracer", { enumerable: true, get: function() { return u.ProxyTracer; } }); var l = __nccwpck_require__(846); Object.defineProperty(e, "ProxyTracerProvider", { enumerable: true, get: function() { return l.ProxyTracerProvider; } }); var g = __nccwpck_require__(996); Object.defineProperty(e, "SamplingDecision", { enumerable: true, get: function() { return g.SamplingDecision; } }); var p = __nccwpck_require__(357); Object.defineProperty(e, "SpanKind", { enumerable: true, get: function() { return p.SpanKind; } }); var d = __nccwpck_require__(847); Object.defineProperty(e, "SpanStatusCode", { enumerable: true, get: function() { return d.SpanStatusCode; } }); var _ = __nccwpck_require__(475); Object.defineProperty(e, "TraceFlags", { enumerable: true, get: function() { return _.TraceFlags; } }); var f = __nccwpck_require__(98); Object.defineProperty(e, "createTraceState", { enumerable: true, get: function() { return f.createTraceState; } }); var b = __nccwpck_require__(139); Object.defineProperty(e, "isSpanContextValid", { enumerable: true, get: function() { return b.isSpanContextValid; } }); Object.defineProperty(e, "isValidTraceId", { enumerable: true, get: function() { return b.isValidTraceId; } }); Object.defineProperty(e, "isValidSpanId", { enumerable: true, get: function() { return b.isValidSpanId; } }); var v = __nccwpck_require__(476); Object.defineProperty(e, "INVALID_SPANID", { enumerable: true, get: function() { return v.INVALID_SPANID; } }); Object.defineProperty(e, "INVALID_TRACEID", { enumerable: true, get: function() { return v.INVALID_TRACEID; } }); Object.defineProperty(e, "INVALID_SPAN_CONTEXT", { enumerable: true, get: function() { return v.INVALID_SPAN_CONTEXT; } }); const O = __nccwpck_require__(67); Object.defineProperty(e, "context", { enumerable: true, get: function() { return O.context; } }); const P = __nccwpck_require__(506); Object.defineProperty(e, "diag", { enumerable: true, get: function() { return P.diag; } }); const N = __nccwpck_require__(886); Object.defineProperty(e, "metrics", { enumerable: true, get: function() { return N.metrics; } }); const S = __nccwpck_require__(939); Object.defineProperty(e, "propagation", { enumerable: true, get: function() { return S.propagation; } }); const C = __nccwpck_require__(845); Object.defineProperty(e, "trace", { enumerable: true, get: function() { return C.trace; } }); e["default"] = { context: O.context, diag: P.diag, metrics: N.metrics, propagation: S.propagation, trace: C.trace }; })(); module.exports = r; })(); }), "[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/is-thenable.js [app-route] (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 [app-route] (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) { const activeContext = context.active(); 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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); } } } const getTracer = (()=>{ const tracer = new NextTracerImpl(); return ()=>tracer; })(); ; //# sourceMappingURL=tracer.js.map }), "[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ACTION_SUFFIX", ()=>ACTION_SUFFIX, "APP_DIR_ALIAS", ()=>APP_DIR_ALIAS, "CACHE_ONE_YEAR", ()=>CACHE_ONE_YEAR, "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_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_QUERY_PARAM_PREFIX", ()=>NEXT_QUERY_PARAM_PREFIX, "NEXT_RESUME_HEADER", ()=>NEXT_RESUME_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_PREFETCH_SUFFIX", ()=>RSC_PREFETCH_SUFFIX, "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_PREFETCH_SUFFIX = '.prefetch.rsc'; 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_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_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 CACHE_ONE_YEAR = 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__' }; ; //# sourceMappingURL=constants.js.map }), "[project]/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { 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/app-page-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-page-turbo.runtime.dev.js, cjs)"); } else //TURBOPACK unreachable ; } else //TURBOPACK unreachable ; } } //# sourceMappingURL=module.compiled.js.map }), "[project]/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; module.exports = __turbopack_context__.r("[project]/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-route] (ecmascript)").vendored['react-rsc'].React; //# sourceMappingURL=react.js.map }), "[project]/node_modules/next/dist/esm/client/components/hooks-server-context.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "DynamicServerError", ()=>DynamicServerError, "isDynamicServerError", ()=>isDynamicServerError ]); const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'; class DynamicServerError extends Error { constructor(description){ super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE; } } function isDynamicServerError(err) { if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') { return false; } return err.digest === DYNAMIC_ERROR_CODE; } //# sourceMappingURL=hooks-server-context.js.map }), "[project]/node_modules/next/dist/esm/client/components/static-generation-bailout.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "StaticGenBailoutError", ()=>StaticGenBailoutError, "isStaticGenBailoutError", ()=>isStaticGenBailoutError ]); const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'; class StaticGenBailoutError extends Error { constructor(...args){ super(...args), this.code = NEXT_STATIC_GEN_BAILOUT; } } function isStaticGenBailoutError(error) { if (typeof error !== 'object' || error === null || !('code' in error)) { return false; } return error.code === NEXT_STATIC_GEN_BAILOUT; } //# sourceMappingURL=static-generation-bailout.js.map }), "[project]/node_modules/next/dist/esm/server/dynamic-rendering-utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "isHangingPromiseRejectionError", ()=>isHangingPromiseRejectionError, "makeDevtoolsIOAwarePromise", ()=>makeDevtoolsIOAwarePromise, "makeHangingPromise", ()=>makeHangingPromise ]); function isHangingPromiseRejectionError(err) { if (typeof err !== 'object' || err === null || !('digest' in err)) { return false; } return err.digest === HANGING_PROMISE_REJECTION; } const HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'; class HangingPromiseRejectionError extends Error { constructor(route, expression){ super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${route}".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION; } } const abortListenersBySignal = new WeakMap(); function makeHangingPromise(signal, route, expression) { if (signal.aborted) { return Promise.reject(new HangingPromiseRejectionError(route, expression)); } else { const hangingPromise = new Promise((_, reject)=>{ const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression)); let currentListeners = abortListenersBySignal.get(signal); if (currentListeners) { currentListeners.push(boundRejection); } else { const listeners = [ boundRejection ]; abortListenersBySignal.set(signal, listeners); signal.addEventListener('abort', ()=>{ for(let i = 0; i < listeners.length; i++){ listeners[i](); } }, { once: true }); } }); // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct // your own promise out of it you'll need to ensure you handle the error when it rejects. hangingPromise.catch(ignoreReject); return hangingPromise; } } function ignoreReject() {} function makeDevtoolsIOAwarePromise(underlying, requestStore, stage) { if (requestStore.stagedRendering) { // We resolve each stage in a timeout, so React DevTools will pick this up as IO. return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying); } // in React DevTools if we resolve in a setTimeout we will observe // the promise resolution as something that can suspend a boundary or root. return new Promise((resolve)=>{ // Must use setTimeout to be considered IO React DevTools. setImmediate will not work. setTimeout(()=>{ resolve(underlying); }, 0); }); } //# sourceMappingURL=dynamic-rendering-utils.js.map }), "[project]/node_modules/next/dist/esm/lib/framework/boundary-constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "METADATA_BOUNDARY_NAME", ()=>METADATA_BOUNDARY_NAME, "OUTLET_BOUNDARY_NAME", ()=>OUTLET_BOUNDARY_NAME, "ROOT_LAYOUT_BOUNDARY_NAME", ()=>ROOT_LAYOUT_BOUNDARY_NAME, "VIEWPORT_BOUNDARY_NAME", ()=>VIEWPORT_BOUNDARY_NAME ]); const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'; const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'; const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'; const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'; //# sourceMappingURL=boundary-constants.js.map }), "[project]/node_modules/next/dist/esm/lib/scheduler.js [app-route] (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)); } } //# sourceMappingURL=scheduler.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; // This has to be a shared module which is shared between client component error boundary and dynamic component __turbopack_context__.s([ "BailoutToCSRError", ()=>BailoutToCSRError, "isBailoutToCSRError", ()=>isBailoutToCSRError ]); const BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'; class BailoutToCSRError extends Error { constructor(reason){ super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR; } } function isBailoutToCSRError(err) { if (typeof err !== 'object' || err === null || !('digest' in err)) { return false; } return err.digest === BAILOUT_TO_CSR; } //# sourceMappingURL=bailout-to-csr.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (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'; } } //# sourceMappingURL=invariant-error.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "createPromiseWithResolvers", ()=>createPromiseWithResolvers ]); function createPromiseWithResolvers() { // Shim of Stage 4 Promise.withResolvers proposal let resolve; let reject; const promise = new Promise((res, rej)=>{ resolve = res; reject = rej; }); return { resolve: resolve, reject: reject, promise }; } //# sourceMappingURL=promise-with-resolvers.js.map }), "[project]/node_modules/next/dist/esm/server/app-render/staged-rendering.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "RenderStage", ()=>RenderStage, "StagedRenderingController", ()=>StagedRenderingController ]); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$promise$2d$with$2d$resolvers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)"); ; ; var RenderStage = /*#__PURE__*/ function(RenderStage) { RenderStage[RenderStage["Static"] = 1] = "Static"; RenderStage[RenderStage["Runtime"] = 2] = "Runtime"; RenderStage[RenderStage["Dynamic"] = 3] = "Dynamic"; return RenderStage; }({}); class StagedRenderingController { constructor(abortSignal = null){ this.abortSignal = abortSignal; this.currentStage = 1; this.runtimeStagePromise = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$promise$2d$with$2d$resolvers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createPromiseWithResolvers"])(); this.dynamicStagePromise = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$promise$2d$with$2d$resolvers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createPromiseWithResolvers"])(); if (abortSignal) { abortSignal.addEventListener('abort', ()=>{ const { reason } = abortSignal; if (this.currentStage < 2) { this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections ; this.runtimeStagePromise.reject(reason); } if (this.currentStage < 3) { this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections ; this.dynamicStagePromise.reject(reason); } }, { once: true }); } } advanceStage(stage) { // If we're already at the target stage or beyond, do nothing. // (this can happen e.g. if sync IO advanced us to the dynamic stage) if (this.currentStage >= stage) { return; } this.currentStage = stage; // Note that we might be going directly from Static to Dynamic, // so we need to resolve the runtime stage as well. if (stage >= 2) { this.runtimeStagePromise.resolve(); } if (stage >= 3) { this.dynamicStagePromise.resolve(); } } getStagePromise(stage) { switch(stage){ case 2: { return this.runtimeStagePromise.promise; } case 3: { return this.dynamicStagePromise.promise; } default: { stage; 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`Invalid render stage: ${stage}`), "__NEXT_ERROR_CODE", { value: "E881", enumerable: false, configurable: true }); } } } waitForStage(stage) { return this.getStagePromise(stage); } delayUntilStage(stage, displayName, resolvedValue) { const ioTriggerPromise = this.getStagePromise(stage); const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue); // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked. // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it). // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning. if (this.abortSignal) { promise.catch(ignoreReject); } return promise; } } function ignoreReject() {} // TODO(restart-on-cache-miss): the layering of `delayUntilStage`, // `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise` // is confusing, we should clean it up. function makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) { // If we create a `new Promise` and give it a displayName // (with no userspace code above us in the stack) // React Devtools will use it as the IO cause when determining "suspended by". // In particular, it should shadow any inner IO that resolved/rejected the promise // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage) const promise = new Promise((resolve, reject)=>{ ioTrigger.then(resolve.bind(null, resolvedValue), reject); }); if (displayName !== undefined) { // @ts-expect-error promise.displayName = displayName; } return promise; } //# sourceMappingURL=staged-rendering.js.map }), "[project]/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * The functions provided by this module are used to communicate certain properties * about the currently running code so that Next.js can make decisions on how to handle * the current execution in different rendering modes such as pre-rendering, resuming, and SSR. * * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering. * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of * Dynamic indications. * * The first is simply an intention to be dynamic. unstable_noStore is an example of this where * the currently executing code simply declares that the current scope is dynamic but if you use it * inside unstable_cache it can still be cached. This type of indication can be removed if we ever * make the default dynamic to begin with because the only way you would ever be static is inside * a cache scope which this indication does not affect. * * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic * because it means that it is inappropriate to cache this at all. using a dynamic data source inside * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should * read that data outside the cache and pass it in as an argument to the cached function. */ // Once postpone is in stable we should switch to importing the postpone export directly __turbopack_context__.s([ "Postpone", ()=>Postpone, "PreludeState", ()=>PreludeState, "abortAndThrowOnSynchronousRequestDataAccess", ()=>abortAndThrowOnSynchronousRequestDataAccess, "abortOnSynchronousPlatformIOAccess", ()=>abortOnSynchronousPlatformIOAccess, "accessedDynamicData", ()=>accessedDynamicData, "annotateDynamicAccess", ()=>annotateDynamicAccess, "consumeDynamicAccess", ()=>consumeDynamicAccess, "createDynamicTrackingState", ()=>createDynamicTrackingState, "createDynamicValidationState", ()=>createDynamicValidationState, "createHangingInputAbortSignal", ()=>createHangingInputAbortSignal, "createRenderInBrowserAbortSignal", ()=>createRenderInBrowserAbortSignal, "delayUntilRuntimeStage", ()=>delayUntilRuntimeStage, "formatDynamicAPIAccesses", ()=>formatDynamicAPIAccesses, "getFirstDynamicReason", ()=>getFirstDynamicReason, "isDynamicPostpone", ()=>isDynamicPostpone, "isPrerenderInterruptedError", ()=>isPrerenderInterruptedError, "logDisallowedDynamicError", ()=>logDisallowedDynamicError, "markCurrentScopeAsDynamic", ()=>markCurrentScopeAsDynamic, "postponeWithTracking", ()=>postponeWithTracking, "throwIfDisallowedDynamic", ()=>throwIfDisallowedDynamic, "throwToInterruptStaticGeneration", ()=>throwToInterruptStaticGeneration, "trackAllowedDynamicAccess", ()=>trackAllowedDynamicAccess, "trackDynamicDataInDynamicRender", ()=>trackDynamicDataInDynamicRender, "trackSynchronousPlatformIOAccessInDev", ()=>trackSynchronousPlatformIOAccessInDev, "useDynamicRouteParams", ()=>useDynamicRouteParams, "useDynamicSearchParams", ()=>useDynamicSearchParams ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$hooks$2d$server$2d$context$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/hooks-server-context.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/static-generation-bailout.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/framework/boundary-constants.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/scheduler.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$lazy$2d$dynamic$2f$bailout$2d$to$2d$csr$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/app-render/staged-rendering.js [app-route] (ecmascript)"); ; ; ; ; ; ; ; ; ; ; ; const hasPostpone = typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].unstable_postpone === 'function'; function createDynamicTrackingState(isDebugDynamicAccesses) { return { isDebugDynamicAccesses, dynamicAccesses: [], syncDynamicErrorWithStack: null }; } function createDynamicValidationState() { return { hasSuspenseAboveBody: false, hasDynamicMetadata: false, hasDynamicViewport: false, hasAllowedDynamic: false, dynamicErrors: [] }; } function getFirstDynamicReason(trackingState) { var _trackingState_dynamicAccesses_; return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression; } function markCurrentScopeAsDynamic(store, workUnitStore, expression) { if (workUnitStore) { switch(workUnitStore.type){ case 'cache': case 'unstable-cache': // Inside cache scopes, marking a scope as dynamic has no effect, // because the outer cache scope creates a cache boundary. This is // subtly different from reading a dynamic data source, which is // forbidden inside a cache scope. return; case 'private-cache': // A private cache scope is already dynamic by definition. return; case 'prerender-legacy': case 'prerender-ppr': case 'request': break; default: workUnitStore; } } // If we're forcing dynamic rendering or we're forcing static rendering, we // don't need to do anything here because the entire page is already dynamic // or it's static and it should not throw or postpone here. if (store.forceDynamic || store.forceStatic) return; if (store.dynamicShouldError) { throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](`Route ${store.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { value: "E553", enumerable: false, configurable: true }); } if (workUnitStore) { switch(workUnitStore.type){ case 'prerender-ppr': return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking); case 'prerender-legacy': workUnitStore.revalidate = 0; // We aren't prerendering, but we are generating a static page. We need // to bail out of static generation. const err = Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$hooks$2d$server$2d$context$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DynamicServerError"](`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { value: "E550", enumerable: false, configurable: true }); store.dynamicUsageDescription = expression; store.dynamicUsageStack = err.stack; throw err; case 'request': if ("TURBOPACK compile-time truthy", 1) { workUnitStore.usedDynamic = true; } break; default: workUnitStore; } } } function throwToInterruptStaticGeneration(expression, store, prerenderStore) { // We aren't prerendering but we are generating a static page. We need to bail out of static generation const err = Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$hooks$2d$server$2d$context$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DynamicServerError"](`Route ${store.route} couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { value: "E558", enumerable: false, configurable: true }); prerenderStore.revalidate = 0; store.dynamicUsageDescription = expression; store.dynamicUsageStack = err.stack; throw err; } function trackDynamicDataInDynamicRender(workUnitStore) { switch(workUnitStore.type){ case 'cache': case 'unstable-cache': // Inside cache scopes, marking a scope as dynamic has no effect, // because the outer cache scope creates a cache boundary. This is // subtly different from reading a dynamic data source, which is // forbidden inside a cache scope. return; case 'private-cache': // A private cache scope is already dynamic by definition. return; case 'prerender': case 'prerender-runtime': case 'prerender-legacy': case 'prerender-ppr': case 'prerender-client': break; case 'request': if ("TURBOPACK compile-time truthy", 1) { workUnitStore.usedDynamic = true; } break; default: workUnitStore; } } function abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) { const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`; const error = createPrerenderInterruptedError(reason); prerenderStore.controller.abort(error); const dynamicTracking = prerenderStore.dynamicTracking; if (dynamicTracking) { dynamicTracking.dynamicAccesses.push({ // When we aren't debugging, we don't need to create another error for the // stack trace. stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, expression }); } } function abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) { const dynamicTracking = prerenderStore.dynamicTracking; abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); // It is important that we set this tracking value after aborting. Aborts are executed // synchronously except for the case where you abort during render itself. By setting this // value late we can use it to determine if any of the aborted tasks are the task that // called the sync IO expression in the first place. if (dynamicTracking) { if (dynamicTracking.syncDynamicErrorWithStack === null) { dynamicTracking.syncDynamicErrorWithStack = errorWithStack; } } } function trackSynchronousPlatformIOAccessInDev(requestStore) { // We don't actually have a controller to abort but we do the semantic equivalent by // advancing the request store out of the prerender stage if (requestStore.stagedRendering) { // TODO: error for sync IO in the runtime stage // (which is not currently covered by the validation render in `spawnDynamicValidationInDev`) requestStore.stagedRendering.advanceStage(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); } } function abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) { const prerenderSignal = prerenderStore.controller.signal; if (prerenderSignal.aborted === false) { // TODO it would be better to move this aborted check into the callsite so we can avoid making // the error object when it isn't relevant to the aborting of the prerender however // since we need the throw semantics regardless of whether we abort it is easier to land // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer // to ideal implementation abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); // It is important that we set this tracking value after aborting. Aborts are executed // synchronously except for the case where you abort during render itself. By setting this // value late we can use it to determine if any of the aborted tasks are the task that // called the sync IO expression in the first place. const dynamicTracking = prerenderStore.dynamicTracking; if (dynamicTracking) { if (dynamicTracking.syncDynamicErrorWithStack === null) { dynamicTracking.syncDynamicErrorWithStack = errorWithStack; } } } throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`); } function Postpone({ reason, route }) { const prerenderStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workUnitAsyncStorage"].getStore(); const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null; postponeWithTracking(route, reason, dynamicTracking); } function postponeWithTracking(route, expression, dynamicTracking) { assertPostpone(); if (dynamicTracking) { dynamicTracking.dynamicAccesses.push({ // When we aren't debugging, we don't need to create another error for the // stack trace. stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, expression }); } __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].unstable_postpone(createPostponeReason(route, expression)); } function createPostponeReason(route, expression) { return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`; } function isDynamicPostpone(err) { if (typeof err === 'object' && err !== null && typeof err.message === 'string') { return isDynamicPostponeReason(err.message); } return false; } function isDynamicPostponeReason(reason) { return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error'); } if (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) { throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { value: "E296", enumerable: false, configurable: true }); } const NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'; function createPrerenderInterruptedError(message) { const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); error.digest = NEXT_PRERENDER_INTERRUPTED; return error; } function isPrerenderInterruptedError(error) { return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error; } function accessedDynamicData(dynamicAccesses) { return dynamicAccesses.length > 0; } function consumeDynamicAccess(serverDynamic, clientDynamic) { // We mutate because we only call this once we are no longer writing // to the dynamicTrackingState and it's more efficient than creating a new // array. serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses); return serverDynamic.dynamicAccesses; } function formatDynamicAPIAccesses(dynamicAccesses) { return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{ stack = stack.split('\n') // Remove the "Error: " prefix from the first line of the stack trace as // well as the first 4 lines of the stack trace which is the distance // from the user code and the `new Error().stack` call. .slice(4).filter((line)=>{ // Exclude Next.js internals from the stack trace. if (line.includes('node_modules/next/')) { return false; } // Exclude anonymous functions from the stack trace. if (line.includes(' ()')) { return false; } // Exclude Node.js internals from the stack trace. if (line.includes(' (node:')) { return false; } return true; }).join('\n'); return `Dynamic API Usage Debug - ${expression}:\n${stack}`; }); } function assertPostpone() { if (!hasPostpone) { throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), "__NEXT_ERROR_CODE", { value: "E224", enumerable: false, configurable: true }); } } function createRenderInBrowserAbortSignal() { const controller = new AbortController(); controller.abort(Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$lazy$2d$dynamic$2f$bailout$2d$to$2d$csr$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BailoutToCSRError"]('Render in Browser'), "__NEXT_ERROR_CODE", { value: "E721", enumerable: false, configurable: true })); return controller.signal; } function createHangingInputAbortSignal(workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-runtime': const controller = new AbortController(); if (workUnitStore.cacheSignal) { // If we have a cacheSignal it means we're in a prospective render. If // the input we're waiting on is coming from another cache, we do want // to wait for it so that we can resolve this cache entry too. workUnitStore.cacheSignal.inputReady().then(()=>{ controller.abort(); }); } else { // Otherwise we're in the final render and we should already have all // our caches filled. // If the prerender uses stages, we have wait until the runtime stage, // at which point all runtime inputs will be resolved. // (otherwise, a runtime prerender might consider `cookies()` hanging // even though they'd resolve in the next task.) // // We might still be waiting on some microtasks so we // wait one tick before giving up. When we give up, we still want to // render the content of this cache as deeply as we can so that we can // suspend as deeply as possible in the tree or not at all if we don't // end up waiting for the input. const runtimeStagePromise = (0, __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["getRuntimeStagePromise"])(workUnitStore); if (runtimeStagePromise) { runtimeStagePromise.then(()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"])(()=>controller.abort())); } else { (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"])(()=>controller.abort()); } } return controller.signal; case 'prerender-client': case 'prerender-ppr': case 'prerender-legacy': case 'request': case 'cache': case 'private-cache': case 'unstable-cache': return undefined; default: workUnitStore; } } function annotateDynamicAccess(expression, prerenderStore) { const dynamicTracking = prerenderStore.dynamicTracking; if (dynamicTracking) { dynamicTracking.dynamicAccesses.push({ stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, expression }); } } function useDynamicRouteParams(expression) { const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); const workUnitStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workUnitAsyncStorage"].getStore(); if (workStore && workUnitStore) { switch(workUnitStore.type){ case 'prerender-client': case 'prerender': { const fallbackParams = workUnitStore.fallbackRouteParams; if (fallbackParams && fallbackParams.size > 0) { // We are in a prerender with cacheComponents semantics. We are going to // hang here and never resolve. This will cause the currently // rendering component to effectively be a dynamic hole. __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].use((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, expression)); } break; } case 'prerender-ppr': { const fallbackParams = workUnitStore.fallbackRouteParams; if (fallbackParams && fallbackParams.size > 0) { return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking); } break; } case 'prerender-runtime': 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E771", enumerable: false, configurable: true }); case 'cache': case 'private-cache': 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E745", enumerable: false, configurable: true }); case 'prerender-legacy': case 'request': case 'unstable-cache': break; default: workUnitStore; } } } function useDynamicSearchParams(expression) { const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); const workUnitStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workUnitAsyncStorage"].getStore(); if (!workStore) { // We assume pages router context and just return return; } if (!workUnitStore) { (0, __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["throwForMissingRequestStore"])(expression); } switch(workUnitStore.type){ case 'prerender-client': { __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].use((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, expression)); break; } case 'prerender-legacy': case 'prerender-ppr': { if (workStore.forceStatic) { return; } throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$lazy$2d$dynamic$2f$bailout$2d$to$2d$csr$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BailoutToCSRError"](expression), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); } case 'prerender': case 'prerender-runtime': 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E795", enumerable: false, configurable: true }); case 'cache': case 'unstable-cache': case 'private-cache': 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E745", enumerable: false, configurable: true }); case 'request': return; default: workUnitStore; } } const hasSuspenseRegex = /\n\s+at Suspense \(\)/; // Common implicit body tags that React will treat as body when placed directly in html const bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'; // Detects when RootLayoutBoundary (our framework marker component) appears // after Suspense in the component stack, indicating the root layout is wrapped // within a Suspense boundary. Ensures no body/html/implicit-body components are in between. // // Example matches: // at Suspense () // at __next_root_layout_boundary__ () // // Or with other components in between (but not body/html/implicit-body): // at Suspense () // at SomeComponent () // at __next_root_layout_boundary__ () const hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\n\\s+at Suspense \\(\\)(?:(?!\\n\\s+at (?:${bodyAndImplicitTags}) \\(\\))[\\s\\S])*?\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ROOT_LAYOUT_BOUNDARY_NAME"]} \\([^\\n]*\\)`); const hasMetadataRegex = new RegExp(`\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["METADATA_BOUNDARY_NAME"]}[\\n\\s]`); const hasViewportRegex = new RegExp(`\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["VIEWPORT_BOUNDARY_NAME"]}[\\n\\s]`); const hasOutletRegex = new RegExp(`\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["OUTLET_BOUNDARY_NAME"]}[\\n\\s]`); function trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) { if (hasOutletRegex.test(componentStack)) { // We don't need to track that this is dynamic. It is only so when something else is also dynamic. return; } else if (hasMetadataRegex.test(componentStack)) { dynamicValidation.hasDynamicMetadata = true; return; } else if (hasViewportRegex.test(componentStack)) { dynamicValidation.hasDynamicViewport = true; return; } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. dynamicValidation.hasAllowedDynamic = true; dynamicValidation.hasSuspenseAboveBody = true; return; } else if (hasSuspenseRegex.test(componentStack)) { // this error had a Suspense boundary above it so we don't need to report it as a source // of disallowed dynamicValidation.hasAllowedDynamic = true; return; } else if (clientDynamic.syncDynamicErrorWithStack) { // This task was the task that called the sync error. dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); return; } else { const message = `Route "${workStore.route}": Uncached data was accessed outside of ` + '. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route'; const error = createErrorWithComponentOrOwnerStack(message, componentStack); dynamicValidation.dynamicErrors.push(error); return; } } /** * In dev mode, we prefer using the owner stack, otherwise the provided * component stack is used. */ function createErrorWithComponentOrOwnerStack(message, componentStack) { const ownerStack = ("TURBOPACK compile-time value", "development") !== 'production' && __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].captureOwnerStack ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].captureOwnerStack() : null; const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); error.stack = error.name + ': ' + message + (ownerStack ?? componentStack); return error; } var PreludeState = /*#__PURE__*/ function(PreludeState) { PreludeState[PreludeState["Full"] = 0] = "Full"; PreludeState[PreludeState["Empty"] = 1] = "Empty"; PreludeState[PreludeState["Errored"] = 2] = "Errored"; return PreludeState; }({}); function logDisallowedDynamicError(workStore, error) { console.error(error); if (!workStore.dev) { if (workStore.hasReadableErrorStacks) { console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error.`); } else { console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following: - Start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error. - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`); } } } function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) { if (serverDynamic.syncDynamicErrorWithStack) { logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack); throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); } if (prelude !== 0) { if (dynamicValidation.hasSuspenseAboveBody) { // This route has opted into allowing fully dynamic rendering // by including a Suspense boundary above the body. In this case // a lack of a shell is not considered disallowed so we simply return return; } // We didn't have any sync bailouts but there may be user code which // blocked the root. We would have captured these during the prerender // and can log them here and then terminate the build/validating render const dynamicErrors = dynamicValidation.dynamicErrors; if (dynamicErrors.length > 0) { for(let i = 0; i < dynamicErrors.length; i++){ logDisallowedDynamicError(workStore, dynamicErrors[i]); } throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); } // If we got this far then the only other thing that could be blocking // the root is dynamic Viewport. If this is dynamic then // you need to opt into that by adding a Suspense boundary above the body // to indicate your are ok with fully dynamic rendering. if (dynamicValidation.hasDynamicViewport) { console.error(`Route "${workStore.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`); throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); } if (prelude === 1) { // If we ever get this far then we messed up the tracking of invalid dynamic. // We still adhere to the constraint that you must produce a shell but invite the // user to report this as a bug in Next.js. console.error(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`); throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); } } else { if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) { console.error(`Route "${workStore.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`); throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); } } } function delayUntilRuntimeStage(prerenderStore, result) { if (prerenderStore.runtimeStagePromise) { return prerenderStore.runtimeStagePromise.then(()=>result); } return result; } //# sourceMappingURL=dynamic-rendering.js.map }), "[project]/node_modules/next/dist/esm/server/lib/clone-response.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "cloneResponse", ()=>cloneResponse ]); const noop = ()=>{}; let registry; if (globalThis.FinalizationRegistry) { registry = new FinalizationRegistry((weakRef)=>{ const stream = weakRef.deref(); if (stream && !stream.locked) { stream.cancel('Response object has been garbage collected').then(noop); } }); } function cloneResponse(original) { // If the response has no body, then we can just return the original response // twice because it's immutable. if (!original.body) { return [ original, original ]; } const [body1, body2] = original.body.tee(); const cloned1 = new Response(body1, { status: original.status, statusText: original.statusText, headers: original.headers }); Object.defineProperty(cloned1, 'url', { value: original.url, // How the original response.url behaves configurable: true, enumerable: true, writable: false }); // The Fetch Standard allows users to skip consuming the response body by // relying on garbage collection to release connection resources. // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection // // To cancel the stream you then need to cancel both resulting branches. // Teeing a stream will generally lock it for the duration, preventing other // readers from locking it. // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee // cloned2 is stored in a react cache and cloned for subsequent requests. // It is the original request, and is is garbage collected by a // FinalizationRegistry in Undici, but since we're tee-ing the stream // ourselves, we need to cancel clone1's stream (the response returned from // our dedupe fetch) when clone1 is reclaimed, otherwise we leak memory. if (registry && cloned1.body) { registry.register(cloned1, new WeakRef(cloned1.body)); } const cloned2 = new Response(body2, { status: original.status, statusText: original.statusText, headers: original.headers }); Object.defineProperty(cloned2, 'url', { value: original.url, // How the original response.url behaves configurable: true, enumerable: true, writable: false }); return [ cloned1, cloned2 ]; } //# sourceMappingURL=clone-response.js.map }), "[project]/node_modules/next/dist/esm/server/lib/dedupe-fetch.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js */ __turbopack_context__.s([ "createDedupeFetch", ()=>createDedupeFetch ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/clone-response.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); ; ; ; const simpleCacheKey = '["GET",[],null,"follow",null,null,null,null]' // generateCacheKey(new Request('https://blank')); ; // Headers that should not affect deduplication // traceparent and tracestate are used for distributed tracing and should not affect cache keys const headersToExcludeInCacheKey = new Set([ 'traceparent', 'tracestate' ]); function generateCacheKey(request) { // We pick the fields that goes into the key used to dedupe requests. // We don't include the `cache` field, because we end up using whatever // caching resulted from the first request. // Notably we currently don't consider non-standard (or future) options. // This might not be safe. TODO: warn for non-standard extensions differing. // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE. const filteredHeaders = Array.from(request.headers.entries()).filter(([key])=>!headersToExcludeInCacheKey.has(key.toLowerCase())); return JSON.stringify([ request.method, filteredHeaders, request.mode, request.redirect, request.credentials, request.referrer, request.referrerPolicy, request.integrity ]); } function createDedupeFetch(originalFetch) { const getCacheEntries = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cache"]((url)=>[]); return function dedupeFetch(resource, options) { if (options && options.signal) { // If we're passed a signal, then we assume that // someone else controls the lifetime of this object and opts out of // caching. It's effectively the opt-out mechanism. // Ideally we should be able to check this on the Request but // it always gets initialized with its own signal so we don't // know if it's supposed to override - unless we also override the // Request constructor. return originalFetch(resource, options); } // Normalize the Request let url; let cacheKey; if (typeof resource === 'string' && !options) { // Fast path. cacheKey = simpleCacheKey; url = resource; } else { // Normalize the request. // if resource is not a string or a URL (its an instance of Request) // then do not instantiate a new Request but instead // reuse the request as to not disturb the body in the event it's a ReadableStream. const request = typeof resource === 'string' || resource instanceof URL ? new Request(resource, options) : resource; if (request.method !== 'GET' && request.method !== 'HEAD' || request.keepalive) { // We currently don't dedupe requests that might have side-effects. Those // have to be explicitly cached. We assume that the request doesn't have a // body if it's GET or HEAD. // keepalive gets treated the same as if you passed a custom cache signal. return originalFetch(resource, options); } cacheKey = generateCacheKey(request); url = request.url; } const cacheEntries = getCacheEntries(url); for(let i = 0, j = cacheEntries.length; i < j; i += 1){ const [key, promise] = cacheEntries[i]; if (key === cacheKey) { return promise.then(()=>{ const response = cacheEntries[i][2]; if (!response) 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('No cached response'), "__NEXT_ERROR_CODE", { value: "E579", enumerable: false, configurable: true }); // We're cloning the response using this utility because there exists // a bug in the undici library around response cloning. See the // following pull request for more details: // https://github.com/vercel/next.js/pull/73274 const [cloned1, cloned2] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"])(response); cacheEntries[i][2] = cloned2; return cloned1; }); } } // We pass the original arguments here in case normalizing the Request // doesn't include all the options in this environment. const promise = originalFetch(resource, options); const entry = [ cacheKey, promise, null ]; cacheEntries.push(entry); return promise.then((response)=>{ // We're cloning the response using this utility because there exists // a bug in the undici library around response cloning. See the // following pull request for more details: // https://github.com/vercel/next.js/pull/73274 const [cloned1, cloned2] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"])(response); entry[2] = cloned2; return cloned1; }); }; } //# sourceMappingURL=dedupe-fetch.js.map }), "[project]/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (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; } } //# sourceMappingURL=detached-promise.js.map }), "[project]/node_modules/next/dist/esm/lib/batcher.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (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$app$2d$route$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; } } //# sourceMappingURL=batcher.js.map }), "[project]/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (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; }({}); //# sourceMappingURL=types.js.map }), "[project]/node_modules/next/dist/esm/server/stream-utils/encoded-tags.js [app-route] (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 `` OPENING: { // HEAD: new Uint8Array([ 60, 47, 104, 101, 97, 100, 62 ]), // BODY: new Uint8Array([ 60, 47, 98, 111, 100, 121, 62 ]), // HTML: new Uint8Array([ 60, 47, 104, 116, 109, 108, 62 ]), // 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 "/>" // { "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; // 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.slice(0, tagIndex)); removed.set(a.slice(tagIndex + b.length), tagIndex); return removed; } else { return a; } } //# sourceMappingURL=uint8array-helpers.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/errors/constants.js [app-route] (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'; //# sourceMappingURL=constants.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/segment-cache/output-export-prefetch-encoding.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; // In output: export mode, the build id is added to the start of the HTML // document, directly after the doctype declaration. During a prefetch, the // client performs a range request to get the build id, so it can check whether // the target page belongs to the same build. // // The first 64 bytes of the document are requested. The exact number isn't // too important; it must be larger than the build id + doctype + closing and // ending comment markers, but it doesn't need to match the end of the // comment exactly. // // Build ids are 21 bytes long in the default implementation, though this // can be overridden in the Next.js config. For the purposes of this check, // it's OK to only match the start of the id, so we'll truncate it if exceeds // a certain length. __turbopack_context__.s([ "DOC_PREFETCH_RANGE_HEADER_VALUE", ()=>DOC_PREFETCH_RANGE_HEADER_VALUE, "doesExportedHtmlMatchBuildId", ()=>doesExportedHtmlMatchBuildId, "insertBuildIdComment", ()=>insertBuildIdComment ]); const DOCTYPE_PREFIX = '' // 15 bytes ; const MAX_BUILD_ID_LENGTH = 24; const DOC_PREFETCH_RANGE_HEADER_VALUE = 'bytes=0-63'; function escapeBuildId(buildId) { // If the build id is longer than the given limit, it's OK for our purposes // to only match the beginning. const truncated = buildId.slice(0, MAX_BUILD_ID_LENGTH); // Replace hyphens with underscores so it doesn't break the HTML comment. // (Unlikely, but if this did happen it would break the whole document.) return truncated.replace(/-/g, '_'); } function insertBuildIdComment(originalHtml, buildId) { if (buildId.includes('-->') || // React always inserts a doctype at the start of the document. Skip if it // isn't present. Shouldn't happen; suggests an issue elsewhere. !originalHtml.startsWith(DOCTYPE_PREFIX)) { // Return the original HTML unchanged. This means the document will not // be prefetched. // TODO: The build id comment is currently only used during prefetches, but // if we eventually use this mechanism for regular navigations, we may need // to error during build if we fail to insert it for some reason. return originalHtml; } // The comment must be inserted after the doctype. return originalHtml.replace(DOCTYPE_PREFIX, DOCTYPE_PREFIX + ''); } function doesExportedHtmlMatchBuildId(partialHtmlDocument, buildId) { // Check whether the document starts with the expected buildId. return partialHtmlDocument.startsWith(DOCTYPE_PREFIX + ''); } //# sourceMappingURL=output-export-prefetch-encoding.js.map }), "[project]/node_modules/next/dist/esm/client/components/app-router-headers.js [app-route] (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_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_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 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'; //# sourceMappingURL=app-router-headers.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/hash.js [app-route] (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); } //# sourceMappingURL=hash.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "computeCacheBustingSearchParam", ()=>computeCacheBustingSearchParam ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$hash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/hash.js [app-route] (ecmascript)"); ; function computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) { if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) { 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$app$2d$route$5d$__$28$ecmascript$29$__["hexHash"])([ prefetchHeader || '0', segmentPrefetchHeader || '0', stateTreeHeader || '0', nextUrlHeader || '0' ].join(',')); } //# sourceMappingURL=cache-busting-search-param.js.map }), "[project]/node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "chainStreams", ()=>chainStreams, "continueDynamicHTMLResume", ()=>continueDynamicHTMLResume, "continueDynamicPrerender", ()=>continueDynamicPrerender, "continueFizzStream", ()=>continueFizzStream, "continueStaticFallbackPrerender", ()=>continueStaticFallbackPrerender, "continueStaticPrerender", ()=>continueStaticPrerender, "createBufferedTransformStream", ()=>createBufferedTransformStream, "createDocumentClosingStream", ()=>createDocumentClosingStream, "createRootLayoutValidatorStream", ()=>createRootLayoutValidatorStream, "renderToInitialFizzStream", ()=>renderToInitialFizzStream, "streamFromBuffer", ()=>streamFromBuffer, "streamFromString", ()=>streamFromString, "streamToBuffer", ()=>streamToBuffer, "streamToString", ()=>streamToString ]); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/scheduler.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/stream-utils/encoded-tags.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/stream-utils/uint8array-helpers.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/errors/constants.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2d$cache$2f$output$2d$export$2d$prefetch$2d$encoding$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/segment-cache/output-export-prefetch-encoding.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/app-router-headers.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js [app-route] (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 streamToBuffer(stream) { const reader = stream.getReader(); const chunks = []; while(true){ const { done, value } = await reader.read(); if (done) { break; } chunks.push(value); } return Buffer.concat(chunks); } 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$app$2d$route$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$app$2d$route$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 createPrefetchCommentStream(isBuildTimePrerendering, buildId) { // Insert an extra comment at the beginning of the HTML document. This must // come after the DOCTYPE, which is inserted by React. // // The first chunk sent by React will contain the doctype. After that, we can // pass through the rest of the chunks as-is. let didTransformFirstChunk = false; return new TransformStream({ transform (chunk, controller) { if (isBuildTimePrerendering && !didTransformFirstChunk) { didTransformFirstChunk = true; const decoder = new TextDecoder('utf-8', { fatal: true }); const chunkStr = decoder.decode(chunk, { stream: true }); const updatedChunkStr = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2d$cache$2f$output$2d$export$2d$prefetch$2d$encoding$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["insertBuildIdComment"])(chunkStr, buildId); controller.enqueue(encoder.encode(updatedChunkStr)); return; } controller.enqueue(chunk); } }); } 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].META.ICON_MARK); if (iconMarkIndex === -1) { controller.enqueue(chunk); return; } else { // When we found the `` 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$app$2d$route$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 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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 = // insertion = // output = [ ] 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: ... [ resume content ] // 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)); } } } }); } function createClientResumeScriptInsertionTransformStream() { const segmentPath = '/_full'; const cacheBustingHeader = (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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_RSC_UNION_QUERY"]}=${cacheBustingHeader}`; const NEXT_CLIENT_RESUME_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$app$2d$route$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$app$2d$route$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 = // insertion = // output = [ ] 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; } }); } // Suffix after main body content - scripts before , // 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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 = ''; /** * This transform stream moves the suffix to the end of the stream, so results * like `` will be transformed to * ``. */ 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HTML); controller.enqueue(chunk); } }); } 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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(` `)); } }); } 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, isBuildTimePrerendering, buildId, 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 we're generating static HTML we need to wait for it to resolve before continuing. if (isStaticGeneration) { await renderStream.allReady; } return chainTransformers(renderStream, [ // Buffer everything to avoid flushing too frequently createBufferedTransformStream(), // Add build id comment to start of the HTML document (in export mode) createPrefetchCommentStream(isBuildTimePrerendering, buildId), // 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 }) { return prerenderStream // Buffer everything to avoid flushing too frequently .pipeThrough(createBufferedTransformStream()).pipeThrough(createStripDocumentClosingTagsTransform()) // Insert generated tags to head .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Transform metadata .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)); } async function continueStaticPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, isBuildTimePrerendering, buildId }) { return prerenderStream // Buffer everything to avoid flushing too frequently .pipeThrough(createBufferedTransformStream()) // Add build id comment to start of the HTML document (in export mode) .pipeThrough(createPrefetchCommentStream(isBuildTimePrerendering, buildId)) // Insert generated tags to head .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Transform metadata .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)) // Insert the inlined data (Flight data, form state, etc.) stream into the HTML .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, true)) // Close tags should always be deferred to the end .pipeThrough(createMoveSuffixStream()); } async function continueStaticFallbackPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, isBuildTimePrerendering, buildId }) { // Same as `continueStaticPrerender`, but also inserts an additional script // to instruct the client to start fetching the hydration data as early // as possible. return prerenderStream // Buffer everything to avoid flushing too frequently .pipeThrough(createBufferedTransformStream()) // Add build id comment to start of the HTML document (in export mode) .pipeThrough(createPrefetchCommentStream(isBuildTimePrerendering, buildId)) // Insert generated tags to head .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Insert the client resume script into the head .pipeThrough(createClientResumeScriptInsertionTransformStream()) // Transform metadata .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)) // Insert the inlined data (Flight data, form state, etc.) stream into the HTML .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, true)) // Close tags should always be deferred to the end .pipeThrough(createMoveSuffixStream()); } async function continueDynamicHTMLResume(renderStream, { delayDataUntilFirstHtmlChunk, inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata }) { return renderStream // Buffer everything to avoid flushing too frequently .pipeThrough(createBufferedTransformStream()) // Insert generated tags to head .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Transform metadata .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)) // Insert the inlined data (Flight data, form state, etc.) stream into the HTML .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, delayDataUntilFirstHtmlChunk)) // Close tags should always be deferred to the end .pipeThrough(createMoveSuffixStream()); } function createDocumentClosingStream() { return streamFromString(CLOSE_TAG); } //# sourceMappingURL=node-web-streams-helper.js.map }), "[project]/node_modules/next/dist/esm/server/request-meta.js [app-route] (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); } //# sourceMappingURL=request-meta.js.map }), "[project]/node_modules/next/dist/esm/server/web/utils.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (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$app$2d$route$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$app$2d$route$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; } //# sourceMappingURL=utils.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js [app-route] (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; } } } //# sourceMappingURL=detect-domain-locale.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [app-route] (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(/\/$/, '') || '/'; } //# sourceMappingURL=remove-trailing-slash.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (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: '' }; } //# sourceMappingURL=parse-path.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__["parsePath"])(path); return `${prefix}${pathname}${query}${hash}`; } //# sourceMappingURL=add-path-prefix.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__["parsePath"])(path); return `${pathname}${suffix}${query}${hash}`; } //# sourceMappingURL=add-path-suffix.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__["parsePath"])(path); return pathname === prefix || pathname.startsWith(prefix + '/'); } //# sourceMappingURL=path-has-prefix.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["addPathPrefix"])(path, `/${locale}`); } //# sourceMappingURL=add-locale.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(pathname); } //# sourceMappingURL=format-next-pathname-info.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/get-hostname.js [app-route] (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(); } //# sourceMappingURL=get-hostname.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * 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. */ __turbopack_context__.s([ "normalizeLocalePath", ()=>normalizeLocalePath ]); 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 }; } //# sourceMappingURL=normalize-locale-path.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (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$app$2d$route$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}`; } //# sourceMappingURL=remove-path-prefix.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["normalizeLocalePath"])(pathnameNoDataPrefix, i18n.locales); if (result.detectedLocale) { info.locale = result.detectedLocale; } } } return info; } //# sourceMappingURL=get-next-pathname-info.js.map }), "[project]/node_modules/next/dist/esm/server/web/next-url.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/get-hostname.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)"); ; ; ; ; const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/; function parseURL(url, base) { return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost')); } 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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); } } //# sourceMappingURL=next-url.js.map }), "[project]/node_modules/next/dist/esm/server/web/error.js [app-route] (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 `); } } //# sourceMappingURL=error.js.map }), "[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (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 [app-route] (ecmascript) ", ((__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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (ecmascript)"); //# sourceMappingURL=cookies.js.map ; }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/request.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/next-url.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/utils.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/error.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/cookies.js [app-route] (ecmascript) "); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["RemovedUAError"](); } get url() { return this[INTERNALS].url; } } //# sourceMappingURL=request.js.map }), "[project]/node_modules/next/dist/esm/server/base-http/helpers.js [app-route] (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'; //# sourceMappingURL=helpers.js.map }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/request-meta.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/utils.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/request.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/base-http/helpers.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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 } }); } } //# sourceMappingURL=next-request.js.map }), "[project]/node_modules/next/dist/esm/server/client-component-renderer-logger.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; // Combined load times for loading client components __turbopack_context__.s([ "getClientComponentLoaderMetrics", ()=>getClientComponentLoaderMetrics, "wrapClientComponentLoader", ()=>wrapClientComponentLoader ]); 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; } //# sourceMappingURL=client-component-renderer-logger.js.map }), "[project]/node_modules/next/dist/esm/server/pipe-readable.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/client-component-renderer-logger.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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 }); } } //# sourceMappingURL=pipe-readable.js.map }), "[project]/node_modules/next/dist/esm/server/render-result.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/pipe-readable.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["streamFromBuffer"])(this.response) ]; } else { return [ this.response ]; } } /** * 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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["pipeToNodeResponse"])(this.readable, res, this.waitUntil); } } //# sourceMappingURL=render-result.js.map }), "[project]/node_modules/next/dist/esm/server/response-cache/utils.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/render-result.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-kind.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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, 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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$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; } } //# sourceMappingURL=utils.js.map }), "[project]/node_modules/next/dist/esm/server/response-cache/index.js [app-route] (ecmascript) ", ((__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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/batcher.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/scheduler.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/utils.js [app-route] (ecmascript)"); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); ; ; ; ; class ResponseCache { constructor(minimal_mode){ this.getBatcher = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$app$2d$route$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$app$2d$route$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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"] }); this.minimal_mode = minimal_mode; } /** * 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) { var _this_previousCacheItem; // 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 && ((_this_previousCacheItem = this.previousCacheItem) == null ? void 0 : _this_previousCacheItem.key) === key && this.previousCacheItem.expiresAt > Date.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$app$2d$route$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(this.previousCacheItem.entry); } const { incrementalCache, isOnDemandRevalidate = false, isFallback = false, isRoutePPREnabled = false, isPrefetch = false, waitUntil, routeKind } = context; const response = await this.getBatcher.batch({ key, isOnDemandRevalidate }, ({ resolve })=>{ const promise = this.handleGet(key, responseGenerator, { incrementalCache, isOnDemandRevalidate, isFallback, isRoutePPREnabled, isPrefetch, routeKind }, 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$app$2d$route$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$app$2d$route$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); // Handle null response if (!incrementalResponseCacheEntry) { // Unset the previous cache item if it was set so we don't use it again. if (this.minimal_mode) this.previousCacheItem = undefined; 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. * @returns The revalidated cache entry. */ async revalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, waitUntil) { return this.revalidateBatcher.batch(key, ()=>{ const promise = this.handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved); // 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) { 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$app$2d$route$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) { this.previousCacheItem = { key, entry: incrementalResponseCacheEntry, expiresAt: Date.now() + 1000 }; } 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; } } } //# sourceMappingURL=index.js.map }), "[project]/node_modules/next/dist/esm/server/lib/patch-fetch.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "NEXT_PATCH_SYMBOL", ()=>NEXT_PATCH_SYMBOL, "createPatchedFetcher", ()=>createPatchedFetcher, "patchFetch", ()=>patchFetch, "validateRevalidate", ()=>validateRevalidate, "validateTags", ()=>validateTags ]); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$dedupe$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/dedupe-fetch.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); 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$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/index.js [app-route] (ecmascript) "); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/clone-response.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/app-render/staged-rendering.js [app-route] (ecmascript)"); ; ; ; ; ; ; ; ; ; ; const isEdgeRuntime = ("TURBOPACK compile-time value", "nodejs") === 'edge'; const NEXT_PATCH_SYMBOL = Symbol.for('next-patch'); function isFetchPatched() { return globalThis[NEXT_PATCH_SYMBOL] === true; } function validateRevalidate(revalidateVal, route) { try { let normalizedRevalidate = undefined; if (revalidateVal === false) { normalizedRevalidate = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; } else if (typeof revalidateVal === 'number' && !isNaN(revalidateVal) && revalidateVal > -1) { normalizedRevalidate = revalidateVal; } else if (typeof revalidateVal !== 'undefined') { throw Object.defineProperty(new Error(`Invalid revalidate value "${revalidateVal}" on "${route}", must be a non-negative number or false`), "__NEXT_ERROR_CODE", { value: "E179", enumerable: false, configurable: true }); } return normalizedRevalidate; } catch (err) { // handle client component error from attempting to check revalidate value if (err instanceof Error && err.message.includes('Invalid revalidate')) { throw err; } return undefined; } } function validateTags(tags, description) { const validTags = []; const invalidTags = []; for(let i = 0; i < tags.length; i++){ const tag = tags[i]; if (typeof tag !== 'string') { invalidTags.push({ tag, reason: 'invalid type, must be a string' }); } else if (tag.length > __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAG_MAX_LENGTH"]) { invalidTags.push({ tag, reason: `exceeded max length of ${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAG_MAX_LENGTH"]}` }); } else { validTags.push(tag); } if (validTags.length > __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAG_MAX_ITEMS"]) { console.warn(`Warning: exceeded max tag count for ${description}, dropped tags:`, tags.slice(i).join(', ')); break; } } if (invalidTags.length > 0) { console.warn(`Warning: invalid tags passed to ${description}: `); for (const { tag, reason } of invalidTags){ console.log(`tag: "${tag}" ${reason}`); } } return validTags; } function trackFetchMetric(workStore, ctx) { if (!workStore.shouldTrackFetchMetrics) { return; } workStore.fetchMetrics ??= []; workStore.fetchMetrics.push({ ...ctx, end: performance.timeOrigin + performance.now(), idx: workStore.nextFetchId || 0 }); } async function createCachedPrerenderResponse(res, cacheKey, incrementalCacheContext, incrementalCache, revalidate, handleUnlock) { // We are prerendering at build time or revalidate time with cacheComponents so we // need to buffer the response so we can guarantee it can be read in a // microtask. const bodyBuffer = await res.arrayBuffer(); const fetchedData = { headers: Object.fromEntries(res.headers.entries()), body: Buffer.from(bodyBuffer).toString('base64'), status: res.status, url: res.url }; // We can skip setting the serverComponentsHmrCache because we aren't in dev // mode. if (incrementalCacheContext) { await incrementalCache.set(cacheKey, { 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$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].FETCH, data: fetchedData, revalidate }, incrementalCacheContext); } await handleUnlock(); // We return a new Response to the caller. return new Response(bodyBuffer, { headers: res.headers, status: res.status, statusText: res.statusText }); } async function createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheContext, incrementalCache, serverComponentsHmrCache, revalidate, input, handleUnlock) { // We're cloning the response using this utility because there exists a bug in // the undici library around response cloning. See the following pull request // for more details: https://github.com/vercel/next.js/pull/73274 const [cloned1, cloned2] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"])(res); // We are dynamically rendering including dev mode. We want to return the // response to the caller as soon as possible because it might stream over a // very long time. const cacheSetPromise = cloned1.arrayBuffer().then(async (arrayBuffer)=>{ const bodyBuffer = Buffer.from(arrayBuffer); const fetchedData = { headers: Object.fromEntries(cloned1.headers.entries()), body: bodyBuffer.toString('base64'), status: cloned1.status, url: cloned1.url }; serverComponentsHmrCache == null ? void 0 : serverComponentsHmrCache.set(cacheKey, fetchedData); if (incrementalCacheContext) { await incrementalCache.set(cacheKey, { 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$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].FETCH, data: fetchedData, revalidate }, incrementalCacheContext); } }).catch((error)=>console.warn(`Failed to set fetch cache`, input, error)).finally(handleUnlock); const pendingRevalidateKey = `cache-set-${cacheKey}`; workStore.pendingRevalidates ??= {}; if (pendingRevalidateKey in workStore.pendingRevalidates) { // there is already a pending revalidate entry that we need to await to // avoid race conditions await workStore.pendingRevalidates[pendingRevalidateKey]; } workStore.pendingRevalidates[pendingRevalidateKey] = cacheSetPromise.finally(()=>{ var _workStore_pendingRevalidates; // If the pending revalidate is not present in the store, then we have // nothing to delete. if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) { return; } delete workStore.pendingRevalidates[pendingRevalidateKey]; }); return cloned2; } function createPatchedFetcher(originFetch, { workAsyncStorage, workUnitAsyncStorage }) { // Create the patched fetch function. const patched = async function fetch(input, init) { var _init_method, _init_next; let url; try { url = new URL(input instanceof Request ? input.url : input); url.username = ''; url.password = ''; } catch { // Error caused by malformed URL should be handled by native fetch url = undefined; } const fetchUrl = (url == null ? void 0 : url.href) ?? ''; const method = (init == null ? void 0 : (_init_method = init.method) == null ? void 0 : _init_method.toUpperCase()) || 'GET'; // Do create a new span trace for internal fetches in the // non-verbose mode. const isInternal = (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) === true; const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1'; // We don't track fetch metrics for internal fetches // so it's not critical that we have a start time, as it won't be recorded. // This is to workaround a flaky issue where performance APIs might // not be available and will require follow-up investigation. const fetchStart = isInternal ? undefined : performance.timeOrigin + performance.now(); const workStore = workAsyncStorage.getStore(); const workUnitStore = workUnitAsyncStorage.getStore(); let cacheSignal = workUnitStore ? (0, __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["getCacheSignal"])(workUnitStore) : null; if (cacheSignal) { cacheSignal.beginRead(); } const result = (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$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().trace(isInternal ? __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$app$2d$route$5d$__$28$ecmascript$29$__["NextNodeServerSpan"].internalFetch : __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$app$2d$route$5d$__$28$ecmascript$29$__["AppRenderSpan"].fetch, { hideSpan, 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$app$2d$route$5d$__$28$ecmascript$29$__["SpanKind"].CLIENT, spanName: [ 'fetch', method, fetchUrl ].filter(Boolean).join(' '), attributes: { 'http.url': fetchUrl, 'http.method': method, 'net.peer.name': url == null ? void 0 : url.hostname, 'net.peer.port': (url == null ? void 0 : url.port) || undefined } }, async ()=>{ var _getRequestMeta; // If this is an internal fetch, we should not do any special treatment. if (isInternal) { return originFetch(input, init); } // If the workStore is not available, we can't do any // special treatment of fetch, therefore fallback to the original // fetch implementation. if (!workStore) { return originFetch(input, init); } // We should also fallback to the original fetch implementation if we // are in draft mode, it does not constitute a static generation. if (workStore.isDraftMode) { return originFetch(input, init); } const isRequestInput = input && typeof input === 'object' && typeof input.method === 'string'; const getRequestMeta = (field)=>{ // If request input is present but init is not, retrieve from input first. const value = init == null ? void 0 : init[field]; return value || (isRequestInput ? input[field] : null); }; let finalRevalidate = undefined; const getNextField = (field)=>{ var _init_next, _init_next1, _input_next; return typeof (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next[field]) !== 'undefined' ? init == null ? void 0 : (_init_next1 = init.next) == null ? void 0 : _init_next1[field] : isRequestInput ? (_input_next = input.next) == null ? void 0 : _input_next[field] : undefined; }; // RequestInit doesn't keep extra fields e.g. next so it's // only available if init is used separate const originalFetchRevalidate = getNextField('revalidate'); let currentFetchRevalidate = originalFetchRevalidate; const tags = validateTags(getNextField('tags') || [], `fetch ${input.toString()}`); let revalidateStore; if (workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-runtime': // TODO: Stop accumulating tags in client prerender. (fallthrough) case 'prerender-client': case 'prerender-ppr': case 'prerender-legacy': case 'cache': case 'private-cache': revalidateStore = workUnitStore; break; case 'request': case 'unstable-cache': break; default: workUnitStore; } } if (revalidateStore) { if (Array.isArray(tags)) { // Collect tags onto parent caches or parent prerenders. const collectedTags = revalidateStore.tags ?? (revalidateStore.tags = []); for (const tag of tags){ if (!collectedTags.includes(tag)) { collectedTags.push(tag); } } } } const implicitTags = workUnitStore == null ? void 0 : workUnitStore.implicitTags; let pageFetchCacheMode = workStore.fetchCache; if (workUnitStore) { switch(workUnitStore.type){ case 'unstable-cache': // Inside unstable-cache we treat it the same as force-no-store on // the page. pageFetchCacheMode = 'force-no-store'; break; case 'prerender': case 'prerender-client': case 'prerender-runtime': case 'prerender-ppr': case 'prerender-legacy': case 'request': case 'cache': case 'private-cache': break; default: workUnitStore; } } const isUsingNoStore = !!workStore.isUnstableNoStore; let currentFetchCacheConfig = getRequestMeta('cache'); let cacheReason = ''; let cacheWarning; if (typeof currentFetchCacheConfig === 'string' && typeof currentFetchRevalidate !== 'undefined') { // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values. const isConflictingRevalidate = currentFetchCacheConfig === 'force-cache' && currentFetchRevalidate === 0 || // revalidate: >0 or revalidate: false and cache: no-store currentFetchCacheConfig === 'no-store' && (currentFetchRevalidate > 0 || currentFetchRevalidate === false); if (isConflictingRevalidate) { cacheWarning = `Specified "cache: ${currentFetchCacheConfig}" and "revalidate: ${currentFetchRevalidate}", only one should be specified.`; currentFetchCacheConfig = undefined; currentFetchRevalidate = undefined; } } const hasExplicitFetchCacheOptOut = currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store' || // the fetch isn't explicitly caching and the segment level cache config signals not to cache // note: `pageFetchCacheMode` is also set by being in an unstable_cache context. pageFetchCacheMode === 'force-no-store' || pageFetchCacheMode === 'only-no-store'; // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set, // we shouldn't consider caching the fetch. This is because the `dynamic` cache // is considered a "top-level" cache mode, whereas something like `fetchCache` is more // fine-grained. Top-level modes are responsible for setting reasonable defaults for the // other configurations. const noFetchConfigAndForceDynamic = !pageFetchCacheMode && !currentFetchCacheConfig && !currentFetchRevalidate && workStore.forceDynamic; if (// which will signal the cache to not revalidate currentFetchCacheConfig === 'force-cache' && typeof currentFetchRevalidate === 'undefined') { currentFetchRevalidate = false; } else if (hasExplicitFetchCacheOptOut || noFetchConfigAndForceDynamic) { currentFetchRevalidate = 0; } if (currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store') { cacheReason = `cache: ${currentFetchCacheConfig}`; } finalRevalidate = validateRevalidate(currentFetchRevalidate, workStore.route); const _headers = getRequestMeta('headers'); const initHeaders = typeof (_headers == null ? void 0 : _headers.get) === 'function' ? _headers : new Headers(_headers || {}); const hasUnCacheableHeader = initHeaders.get('authorization') || initHeaders.get('cookie'); const isUnCacheableMethod = ![ 'get', 'head' ].includes(((_getRequestMeta = getRequestMeta('method')) == null ? void 0 : _getRequestMeta.toLowerCase()) || 'get'); /** * We automatically disable fetch caching under the following conditions: * - Fetch cache configs are not set. Specifically: * - A page fetch cache mode is not set (export const fetchCache=...) * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... })) * or the fetch cache mode is set to 'default' * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... })) * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies()) * and the fetch was considered uncacheable (e.g., POST method or has authorization headers) */ const hasNoExplicitCacheConfig = pageFetchCacheMode == undefined && // eslint-disable-next-line eqeqeq (currentFetchCacheConfig == undefined || // when considering whether to opt into the default "no-cache" fetch semantics, // a "default" cache config should be treated the same as no cache config currentFetchCacheConfig === 'default') && // eslint-disable-next-line eqeqeq currentFetchRevalidate == undefined; let autoNoCache = Boolean((hasUnCacheableHeader || isUnCacheableMethod) && (revalidateStore == null ? void 0 : revalidateStore.revalidate) === 0); let isImplicitBuildTimeCache = false; if (!autoNoCache && hasNoExplicitCacheConfig) { // We don't enable automatic no-cache behavior during build-time // prerendering so that we can still leverage the fetch cache between // export workers. if (workStore.isBuildTimePrerendering) { isImplicitBuildTimeCache = true; } else { autoNoCache = true; } } // If we have no cache config, and we're in Dynamic I/O prerendering, // it'll be a dynamic call. We don't have to issue that dynamic call. if (hasNoExplicitCacheConfig && workUnitStore !== undefined) { switch(workUnitStore.type){ case 'prerender': case 'prerender-runtime': // While we don't want to do caching in the client scope we know the // fetch will be dynamic for cacheComponents so we may as well avoid the // call here. (fallthrough) case 'prerender-client': if (cacheSignal) { cacheSignal.endRead(); cacheSignal = null; } return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); case 'request': if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { if (cacheSignal) { cacheSignal.endRead(); cacheSignal = null; } await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); } break; case 'prerender-ppr': case 'prerender-legacy': case 'cache': case 'private-cache': case 'unstable-cache': break; default: workUnitStore; } } switch(pageFetchCacheMode){ case 'force-no-store': { cacheReason = 'fetchCache = force-no-store'; break; } case 'only-no-store': { if (currentFetchCacheConfig === 'force-cache' || typeof finalRevalidate !== 'undefined' && finalRevalidate > 0) { throw Object.defineProperty(new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`), "__NEXT_ERROR_CODE", { value: "E448", enumerable: false, configurable: true }); } cacheReason = 'fetchCache = only-no-store'; break; } case 'only-cache': { if (currentFetchCacheConfig === 'no-store') { throw Object.defineProperty(new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`), "__NEXT_ERROR_CODE", { value: "E521", enumerable: false, configurable: true }); } break; } case 'force-cache': { if (typeof currentFetchRevalidate === 'undefined' || currentFetchRevalidate === 0) { cacheReason = 'fetchCache = force-cache'; finalRevalidate = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; } break; } case 'default-cache': case 'default-no-store': case 'auto': case undefined: break; default: pageFetchCacheMode; } if (typeof finalRevalidate === 'undefined') { if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) { finalRevalidate = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; cacheReason = 'fetchCache = default-cache'; } else if (pageFetchCacheMode === 'default-no-store') { finalRevalidate = 0; cacheReason = 'fetchCache = default-no-store'; } else if (isUsingNoStore) { finalRevalidate = 0; cacheReason = 'noStore call'; } else if (autoNoCache) { finalRevalidate = 0; cacheReason = 'auto no cache'; } else { // TODO: should we consider this case an invariant? cacheReason = 'auto cache'; finalRevalidate = revalidateStore ? revalidateStore.revalidate : __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; } } else if (!cacheReason) { cacheReason = `revalidate: ${finalRevalidate}`; } if (// `revalidate: 0` values !(workStore.forceStatic && finalRevalidate === 0) && // we don't consider autoNoCache to switch to dynamic for ISR !autoNoCache && // If the revalidate value isn't currently set or the value is less // than the current revalidate value, we should update the revalidate // value. revalidateStore && finalRevalidate < revalidateStore.revalidate) { // If we were setting the revalidate value to 0, we should try to // postpone instead first. if (finalRevalidate === 0) { if (workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-client': case 'prerender-runtime': if (cacheSignal) { cacheSignal.endRead(); cacheSignal = null; } return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); case 'request': if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { if (cacheSignal) { cacheSignal.endRead(); cacheSignal = null; } await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); } break; case 'prerender-ppr': case 'prerender-legacy': case 'cache': case 'private-cache': case 'unstable-cache': break; default: workUnitStore; } } (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["markCurrentScopeAsDynamic"])(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`); } // We only want to set the revalidate store's revalidate time if it // was explicitly set for the fetch call, i.e. // originalFetchRevalidate. if (revalidateStore && originalFetchRevalidate === finalRevalidate) { revalidateStore.revalidate = finalRevalidate; } } const isCacheableRevalidate = typeof finalRevalidate === 'number' && finalRevalidate > 0; let cacheKey; const { incrementalCache } = workStore; let isHmrRefresh = false; let serverComponentsHmrCache; if (workUnitStore) { switch(workUnitStore.type){ case 'request': case 'cache': case 'private-cache': isHmrRefresh = workUnitStore.isHmrRefresh ?? false; serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache; break; case 'prerender': case 'prerender-client': case 'prerender-runtime': case 'prerender-ppr': case 'prerender-legacy': case 'unstable-cache': break; default: workUnitStore; } } if (incrementalCache && (isCacheableRevalidate || serverComponentsHmrCache)) { try { cacheKey = await incrementalCache.generateCacheKey(fetchUrl, isRequestInput ? input : init); } catch (err) { console.error(`Failed to generate cache key for`, input); } } const fetchIdx = workStore.nextFetchId ?? 1; workStore.nextFetchId = fetchIdx + 1; let handleUnlock = ()=>{}; const doOriginalFetch = async (isStale, cacheReasonOverride)=>{ const requestInputFields = [ 'cache', 'credentials', 'headers', 'integrity', 'keepalive', 'method', 'mode', 'redirect', 'referrer', 'referrerPolicy', 'window', 'duplex', // don't pass through signal when revalidating ...isStale ? [] : [ 'signal' ] ]; if (isRequestInput) { const reqInput = input; const reqOptions = { body: reqInput._ogBody || reqInput.body }; for (const field of requestInputFields){ // @ts-expect-error custom fields reqOptions[field] = reqInput[field]; } input = new Request(reqInput.url, reqOptions); } else if (init) { const { _ogBody, body, signal, ...otherInput } = init; init = { ...otherInput, body: _ogBody || body, signal: isStale ? undefined : signal }; } // add metadata to init without editing the original const clonedInit = { ...init, next: { ...init == null ? void 0 : init.next, fetchType: 'origin', fetchIdx } }; return originFetch(input, clonedInit).then(async (res)=>{ if (!isStale && fetchStart) { trackFetchMetric(workStore, { start: fetchStart, url: fetchUrl, cacheReason: cacheReasonOverride || cacheReason, cacheStatus: finalRevalidate === 0 || cacheReasonOverride ? 'skip' : 'miss', cacheWarning, status: res.status, method: clonedInit.method || 'GET' }); } if (res.status === 200 && incrementalCache && cacheKey && (isCacheableRevalidate || serverComponentsHmrCache)) { const normalizedRevalidate = finalRevalidate >= __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"] ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CACHE_ONE_YEAR"] : finalRevalidate; const incrementalCacheConfig = isCacheableRevalidate ? { fetchCache: true, fetchUrl, fetchIdx, tags, isImplicitBuildTimeCache } : undefined; switch(workUnitStore == null ? void 0 : workUnitStore.type){ case 'prerender': case 'prerender-client': case 'prerender-runtime': return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock); case 'request': if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering && workUnitStore.cacheSignal) { // We're filling caches for a staged render, // so we need to wait for the response to finish instead of streaming. return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock); } // fallthrough case 'prerender-ppr': case 'prerender-legacy': case 'cache': case 'private-cache': case 'unstable-cache': case undefined: return createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheConfig, incrementalCache, serverComponentsHmrCache, normalizedRevalidate, input, handleUnlock); default: workUnitStore; } } // we had response that we determined shouldn't be cached so we return it // and don't cache it. This also needs to unlock the cache lock we acquired. await handleUnlock(); return res; }).catch((error)=>{ handleUnlock(); throw error; }); }; let cacheReasonOverride; let isForegroundRevalidate = false; let isHmrRefreshCache = false; if (cacheKey && incrementalCache) { let cachedFetchData; if (isHmrRefresh && serverComponentsHmrCache) { cachedFetchData = serverComponentsHmrCache.get(cacheKey); isHmrRefreshCache = true; } if (isCacheableRevalidate && !cachedFetchData) { handleUnlock = await incrementalCache.lock(cacheKey); const entry = workStore.isOnDemandRevalidate ? null : await incrementalCache.get(cacheKey, { 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$app$2d$route$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].FETCH, revalidate: finalRevalidate, fetchUrl, fetchIdx, tags, softTags: implicitTags == null ? void 0 : implicitTags.tags }); if (hasNoExplicitCacheConfig && workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-client': case 'prerender-runtime': // We sometimes use the cache to dedupe fetches that do not // specify a cache configuration. In these cases we want to // make sure we still exclude them from prerenders if // cacheComponents is on so we introduce an artificial task boundary // here. await getTimeoutBoundary(); break; case 'request': if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); } break; case 'prerender-ppr': case 'prerender-legacy': case 'cache': case 'private-cache': case 'unstable-cache': break; default: workUnitStore; } } if (entry) { await handleUnlock(); } else { // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers // TODO: it seems like we also hit this after revalidates in dev? cacheReasonOverride = 'cache-control: no-cache (hard refresh)'; } if ((entry == null ? void 0 : entry.value) && entry.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$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].FETCH) { // when stale and is revalidating we wait for fresh data // so the revalidated entry has the updated data if (workStore.isStaticGeneration && entry.isStale) { isForegroundRevalidate = true; } else { if (entry.isStale) { workStore.pendingRevalidates ??= {}; if (!workStore.pendingRevalidates[cacheKey]) { const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({ body: await response.arrayBuffer(), headers: response.headers, status: response.status, statusText: response.statusText })).finally(()=>{ workStore.pendingRevalidates ??= {}; delete workStore.pendingRevalidates[cacheKey || '']; }); // Attach the empty catch here so we don't get a "unhandled // promise rejection" warning. pendingRevalidate.catch(console.error); workStore.pendingRevalidates[cacheKey] = pendingRevalidate; } } cachedFetchData = entry.value.data; } } } if (cachedFetchData) { if (fetchStart) { trackFetchMetric(workStore, { start: fetchStart, url: fetchUrl, cacheReason, cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit', cacheWarning, status: cachedFetchData.status || 200, method: (init == null ? void 0 : init.method) || 'GET' }); } const response = new Response(Buffer.from(cachedFetchData.body, 'base64'), { headers: cachedFetchData.headers, status: cachedFetchData.status }); Object.defineProperty(response, 'url', { value: cachedFetchData.url }); return response; } } if ((workStore.isStaticGeneration || ("TURBOPACK compile-time value", "development") === 'development' && ("TURBOPACK compile-time value", false) && workUnitStore && // eslint-disable-next-line no-restricted-syntax workUnitStore.type === 'request' && workUnitStore.stagedRendering) && init && typeof init === 'object') { const { cache } = init; // Delete `cache` property as Cloudflare Workers will throw an error if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; if (cache === 'no-store') { // If enabled, we should bail out of static generation. if (workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-client': case 'prerender-runtime': if (cacheSignal) { cacheSignal.endRead(); cacheSignal = null; } return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); case 'request': if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { if (cacheSignal) { cacheSignal.endRead(); cacheSignal = null; } await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); } break; case 'prerender-ppr': case 'prerender-legacy': case 'cache': case 'private-cache': case 'unstable-cache': break; default: workUnitStore; } } (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["markCurrentScopeAsDynamic"])(workStore, workUnitStore, `no-store fetch ${input} ${workStore.route}`); } const hasNextConfig = 'next' in init; const { next = {} } = init; if (typeof next.revalidate === 'number' && revalidateStore && next.revalidate < revalidateStore.revalidate) { if (next.revalidate === 0) { // If enabled, we should bail out of static generation. if (workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-client': case 'prerender-runtime': return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); case 'request': if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); } break; case 'cache': case 'private-cache': case 'unstable-cache': case 'prerender-legacy': case 'prerender-ppr': break; default: workUnitStore; } } (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["markCurrentScopeAsDynamic"])(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`); } if (!workStore.forceStatic || next.revalidate !== 0) { revalidateStore.revalidate = next.revalidate; } } if (hasNextConfig) delete init.next; } // if we are revalidating the whole page via time or on-demand and // the fetch cache entry is stale we should still de-dupe the // origin hit if it's a cache-able entry if (cacheKey && isForegroundRevalidate) { const pendingRevalidateKey = cacheKey; workStore.pendingRevalidates ??= {}; let pendingRevalidate = workStore.pendingRevalidates[pendingRevalidateKey]; if (pendingRevalidate) { const revalidatedResult = await pendingRevalidate; return new Response(revalidatedResult.body, { headers: revalidatedResult.headers, status: revalidatedResult.status, statusText: revalidatedResult.statusText }); } // We used to just resolve the Response and clone it however for // static generation with cacheComponents we need the response to be able to // be resolved in a microtask and cloning the response will never have // a body that can resolve in a microtask in node (as observed through // experimentation) So instead we await the body and then when it is // available we construct manually cloned Response objects with the // body as an ArrayBuffer. This will be resolvable in a microtask // making it compatible with cacheComponents. const pendingResponse = doOriginalFetch(true, cacheReasonOverride) // We're cloning the response using this utility because there // exists a bug in the undici library around response cloning. // See the following pull request for more details: // https://github.com/vercel/next.js/pull/73274 .then(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"]); pendingRevalidate = pendingResponse.then(async (responses)=>{ const response = responses[0]; return { body: await response.arrayBuffer(), headers: response.headers, status: response.status, statusText: response.statusText }; }).finally(()=>{ var _workStore_pendingRevalidates; // If the pending revalidate is not present in the store, then // we have nothing to delete. if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) { return; } delete workStore.pendingRevalidates[pendingRevalidateKey]; }); // Attach the empty catch here so we don't get a "unhandled promise // rejection" warning pendingRevalidate.catch(()=>{}); workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate; return pendingResponse.then((responses)=>responses[1]); } else { return doOriginalFetch(false, cacheReasonOverride); } }); if (cacheSignal) { try { return await result; } finally{ if (cacheSignal) { cacheSignal.endRead(); } } } return result; }; // Attach the necessary properties to the patched fetch function. // We don't use this to determine if the fetch function has been patched, // but for external consumers to determine if the fetch function has been // patched. patched.__nextPatched = true; patched.__nextGetStaticStore = ()=>workAsyncStorage; patched._nextOriginalFetch = originFetch; globalThis[NEXT_PATCH_SYMBOL] = true; // Assign the function name also as a name property, so that it's preserved // even when mangling is enabled. Object.defineProperty(patched, 'name', { value: 'fetch', writable: false }); return patched; } function patchFetch(options) { // If we've already patched fetch, we should not patch it again. if (isFetchPatched()) return; // Grab the original fetch function. We'll attach this so we can use it in // the patched fetch function. const original = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$dedupe$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createDedupeFetch"])(globalThis.fetch); // Set the global fetch to the patched fetch. globalThis.fetch = createPatchedFetcher(original, options); } let currentTimeoutBoundary = null; function getTimeoutBoundary() { if (!currentTimeoutBoundary) { currentTimeoutBoundary = new Promise((r)=>{ setTimeout(()=>{ currentTimeoutBoundary = null; r(); }, 0); }); } return currentTimeoutBoundary; } //# sourceMappingURL=patch-fetch.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * For a given page path, this function ensures that there is a leading slash. * If there is not a leading slash, one is added, otherwise it is noop. */ __turbopack_context__.s([ "ensureLeadingSlash", ()=>ensureLeadingSlash ]); function ensureLeadingSlash(path) { return path.startsWith('/') ? path : `/${path}`; } //# sourceMappingURL=ensure-leading-slash.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/segment.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "DEFAULT_SEGMENT_KEY", ()=>DEFAULT_SEGMENT_KEY, "PAGE_SEGMENT_KEY", ()=>PAGE_SEGMENT_KEY, "addSearchParamsIfPageSegment", ()=>addSearchParamsIfPageSegment, "computeSelectedLayoutSegment", ()=>computeSelectedLayoutSegment, "getSegmentValue", ()=>getSegmentValue, "getSelectedLayoutSegmentPath", ()=>getSelectedLayoutSegmentPath, "isGroupSegment", ()=>isGroupSegment, "isParallelRouteSegment", ()=>isParallelRouteSegment ]); function getSegmentValue(segment) { return Array.isArray(segment) ? segment[1] : segment; } function isGroupSegment(segment) { // Use array[0] for performant purpose return segment[0] === '(' && segment.endsWith(')'); } function isParallelRouteSegment(segment) { return segment.startsWith('@') && segment !== '@children'; } function addSearchParamsIfPageSegment(segment, searchParams) { const isPageSegment = segment.includes(PAGE_SEGMENT_KEY); if (isPageSegment) { const stringifiedQuery = JSON.stringify(searchParams); return stringifiedQuery !== '{}' ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery : PAGE_SEGMENT_KEY; } return segment; } function computeSelectedLayoutSegment(segments, parallelRouteKey) { if (!segments || segments.length === 0) { return null; } // For 'children', use first segment; for other parallel routes, use last segment const rawSegment = parallelRouteKey === 'children' ? segments[0] : segments[segments.length - 1]; // If the default slot is showing, return null since it's not technically "selected" (it's a fallback) // Returning an internal value like `__DEFAULT__` would be confusing return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment; } function getSelectedLayoutSegmentPath(tree, parallelRouteKey, first = true, segmentPath = []) { let node; if (first) { // Use the provided parallel route key on the first parallel route node = tree[1][parallelRouteKey]; } else { // After first parallel route prefer children, if there's no children pick the first parallel route. const parallelRoutes = tree[1]; node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]; } if (!node) return segmentPath; const segment = node[0]; let segmentValue = getSegmentValue(segment); if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) { return segmentPath; } segmentPath.push(segmentValue); return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath); } const PAGE_SEGMENT_KEY = '__PAGE__'; const DEFAULT_SEGMENT_KEY = '__DEFAULT__'; //# sourceMappingURL=segment.js.map }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "normalizeAppPath", ()=>normalizeAppPath, "normalizeRscURL", ()=>normalizeRscURL ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$page$2d$path$2f$ensure$2d$leading$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/segment.js [app-route] (ecmascript)"); ; ; function normalizeAppPath(route) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$page$2d$path$2f$ensure$2d$leading$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ensureLeadingSlash"])(route.split('/').reduce((pathname, segment, index, segments)=>{ // Empty segments are ignored. if (!segment) { return pathname; } // Groups are ignored. if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isGroupSegment"])(segment)) { return pathname; } // Parallel segments are ignored. if (segment[0] === '@') { return pathname; } // The last segment (if it's a leaf) should be ignored. if ((segment === 'page' || segment === 'route') && index === segments.length - 1) { return pathname; } return `${pathname}/${segment}`; }, '')); } function normalizeRscURL(url) { return url.replace(/\.rsc($|\?)/, '$1'); } //# sourceMappingURL=app-paths.js.map }), "[project]/node_modules/next/dist/esm/server/app-render/encryption-utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "arrayBufferToString", ()=>arrayBufferToString, "decrypt", ()=>decrypt, "encrypt", ()=>encrypt, "getActionEncryptionKey", ()=>getActionEncryptionKey, "getClientReferenceManifestForRsc", ()=>getClientReferenceManifestForRsc, "getServerModuleMap", ()=>getServerModuleMap, "setReferenceManifestsSingleton", ()=>setReferenceManifestsSingleton, "stringToUint8Array", ()=>stringToUint8Array ]); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (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$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); ; ; ; let __next_loaded_action_key; function arrayBufferToString(buffer) { const bytes = new Uint8Array(buffer); const len = bytes.byteLength; // @anonrig: V8 has a limit of 65535 arguments in a function. // For len < 65535, this is faster. // https://github.com/vercel/next.js/pull/56377#pullrequestreview-1656181623 if (len < 65535) { return String.fromCharCode.apply(null, bytes); } let binary = ''; for(let i = 0; i < len; i++){ binary += String.fromCharCode(bytes[i]); } return binary; } function stringToUint8Array(binary) { const len = binary.length; const arr = new Uint8Array(len); for(let i = 0; i < len; i++){ arr[i] = binary.charCodeAt(i); } return arr; } function encrypt(key, iv, data) { return crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, data); } function decrypt(key, iv, data) { return crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, data); } // This is a global singleton that is used to encode/decode the action bound args from // the closure. This can't be using a AsyncLocalStorage as it might happen on the module // level. Since the client reference manifest won't be mutated, let's use a global singleton // to keep it. const SERVER_ACTION_MANIFESTS_SINGLETON = Symbol.for('next.server.action-manifests'); function setReferenceManifestsSingleton({ page, clientReferenceManifest, serverActionsManifest, serverModuleMap }) { var _globalThis_SERVER_ACTION_MANIFESTS_SINGLETON; // @ts-expect-error const clientReferenceManifestsPerPage = (_globalThis_SERVER_ACTION_MANIFESTS_SINGLETON = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON]) == null ? void 0 : _globalThis_SERVER_ACTION_MANIFESTS_SINGLETON.clientReferenceManifestsPerPage; // @ts-expect-error globalThis[SERVER_ACTION_MANIFESTS_SINGLETON] = { clientReferenceManifestsPerPage: { ...clientReferenceManifestsPerPage, [(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])(page)]: clientReferenceManifest }, serverActionsManifest, serverModuleMap }; } function getServerModuleMap() { const serverActionsManifestSingleton = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON]; if (!serverActionsManifestSingleton) { 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('Missing manifest for Server Actions.'), "__NEXT_ERROR_CODE", { value: "E606", enumerable: false, configurable: true }); } return serverActionsManifestSingleton.serverModuleMap; } function getClientReferenceManifestForRsc() { const serverActionsManifestSingleton = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON]; if (!serverActionsManifestSingleton) { 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('Missing manifest for Server Actions.'), "__NEXT_ERROR_CODE", { value: "E606", enumerable: false, configurable: true }); } const { clientReferenceManifestsPerPage } = serverActionsManifestSingleton; const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); if (!workStore) { // If there's no work store defined, we can assume that a client reference // manifest is needed during module evaluation, e.g. to create a server // action using a higher-order function. This might also use client // components which need to be serialized by Flight, and therefore client // references need to be resolvable. To make this work, we're returning a // merged manifest across all pages. This is fine as long as the module IDs // are not page specific, which they are not for Webpack. TODO: Fix this in // Turbopack. return mergeClientReferenceManifests(clientReferenceManifestsPerPage); } const clientReferenceManifest = clientReferenceManifestsPerPage[workStore.route]; if (!clientReferenceManifest) { 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`Missing Client Reference Manifest for ${workStore.route}.`), "__NEXT_ERROR_CODE", { value: "E570", enumerable: false, configurable: true }); } return clientReferenceManifest; } async function getActionEncryptionKey() { if (__next_loaded_action_key) { return __next_loaded_action_key; } const serverActionsManifestSingleton = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON]; if (!serverActionsManifestSingleton) { 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('Missing manifest for Server Actions.'), "__NEXT_ERROR_CODE", { value: "E606", enumerable: false, configurable: true }); } const rawKey = process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY || serverActionsManifestSingleton.serverActionsManifest.encryptionKey; if (rawKey === undefined) { 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$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('Missing encryption key for Server Actions'), "__NEXT_ERROR_CODE", { value: "E571", enumerable: false, configurable: true }); } __next_loaded_action_key = await crypto.subtle.importKey('raw', stringToUint8Array(atob(rawKey)), 'AES-GCM', true, [ 'encrypt', 'decrypt' ]); return __next_loaded_action_key; } function mergeClientReferenceManifests(clientReferenceManifestsPerPage) { const clientReferenceManifests = Object.values(clientReferenceManifestsPerPage); const mergedClientReferenceManifest = { clientModules: {}, edgeRscModuleMapping: {}, rscModuleMapping: {} }; for (const clientReferenceManifest of clientReferenceManifests){ mergedClientReferenceManifest.clientModules = { ...mergedClientReferenceManifest.clientModules, ...clientReferenceManifest.clientModules }; mergedClientReferenceManifest.edgeRscModuleMapping = { ...mergedClientReferenceManifest.edgeRscModuleMapping, ...clientReferenceManifest.edgeRscModuleMapping }; mergedClientReferenceManifest.rscModuleMapping = { ...mergedClientReferenceManifest.rscModuleMapping, ...clientReferenceManifest.rscModuleMapping }; } return mergedClientReferenceManifest; } //# sourceMappingURL=encryption-utils.js.map }), "[project]/node_modules/next/dist/esm/server/app-render/action-utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "createServerModuleMap", ()=>createServerModuleMap, "selectWorkerForForwarding", ()=>selectWorkerForForwarding ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); ; ; ; ; function createServerModuleMap({ serverActionsManifest }) { return new Proxy({}, { get: (_, id)=>{ var _serverActionsManifest__id, _serverActionsManifest_; const workers = (_serverActionsManifest_ = serverActionsManifest[("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'node']) == null ? void 0 : (_serverActionsManifest__id = _serverActionsManifest_[id]) == null ? void 0 : _serverActionsManifest__id.workers; if (!workers) { return undefined; } const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); let workerEntry; if (workStore) { workerEntry = workers[normalizeWorkerPageName(workStore.page)]; } else { // If there's no work store defined, we can assume that a server // module map is needed during module evaluation, e.g. to create a // server action using a higher-order function. Therefore it should be // safe to return any entry from the manifest that matches the action // ID. They all refer to the same module ID, which must also exist in // the current page bundle. TODO: This is currently not guaranteed in // Turbopack, and needs to be fixed. workerEntry = Object.values(workers).at(0); } if (!workerEntry) { return undefined; } const { moduleId, async } = workerEntry; return { id: moduleId, name: id, chunks: [], async }; } }); } function selectWorkerForForwarding(actionId, pageName, serverActionsManifest) { var _serverActionsManifest__actionId; const workers = (_serverActionsManifest__actionId = serverActionsManifest[("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'node'][actionId]) == null ? void 0 : _serverActionsManifest__actionId.workers; const workerName = normalizeWorkerPageName(pageName); // no workers, nothing to forward to if (!workers) return; // if there is a worker for this page, no need to forward it. if (workers[workerName]) { return; } // otherwise, grab the first worker that has a handler for this action id return denormalizeWorkerPageName(Object.keys(workers)[0]); } /** * The flight entry loader keys actions by bundlePath. * bundlePath corresponds with the relative path (including 'app') to the page entrypoint. */ function normalizeWorkerPageName(pageName) { 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$app$2d$route$5d$__$28$ecmascript$29$__["pathHasPrefix"])(pageName, 'app')) { return pageName; } return 'app' + pageName; } /** * Converts a bundlePath (relative path to the entrypoint) to a routable page name */ function denormalizeWorkerPageName(bundlePath) { 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$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])((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$app$2d$route$5d$__$28$ecmascript$29$__["removePathPrefix"])(bundlePath, 'app')); } //# sourceMappingURL=action-utils.js.map }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ReflectAdapter", ()=>ReflectAdapter ]); class ReflectAdapter { static get(target, prop, receiver) { const value = Reflect.get(target, prop, receiver); if (typeof value === 'function') { return value.bind(target); } return value; } static set(target, prop, value, receiver) { return Reflect.set(target, prop, value, receiver); } static has(target, prop) { return Reflect.has(target, prop); } static deleteProperty(target, prop) { return Reflect.deleteProperty(target, prop); } } //# sourceMappingURL=reflect.js.map }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "HeadersAdapter", ()=>HeadersAdapter, "ReadonlyHeadersError", ()=>ReadonlyHeadersError ]); 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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); ; class ReadonlyHeadersError extends Error { constructor(){ super('Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'); } static callable() { throw new ReadonlyHeadersError(); } } class HeadersAdapter extends Headers { constructor(headers){ // We've already overridden the methods that would be called, so we're just // calling the super constructor to ensure that the instanceof check works. super(); this.headers = new Proxy(headers, { get (target, prop, receiver) { // Because this is just an object, we expect that all "get" operations // are for properties. If it's a "get" for a symbol, we'll just return // the symbol. if (typeof prop === 'symbol') { return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].get(target, prop, receiver); } const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, return undefined. if (typeof original === 'undefined') return; // If the original casing exists, return the value. return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].get(target, original, receiver); }, set (target, prop, value, receiver) { if (typeof prop === 'symbol') { return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].set(target, prop, value, receiver); } const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, use the prop as the key. return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].set(target, original ?? prop, value, receiver); }, has (target, prop) { if (typeof prop === 'symbol') return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].has(target, prop); const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, return false. if (typeof original === 'undefined') return false; // If the original casing exists, return true. return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].has(target, original); }, deleteProperty (target, prop) { if (typeof prop === 'symbol') return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].deleteProperty(target, prop); const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, return true. if (typeof original === 'undefined') return true; // If the original casing exists, delete the property. return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].deleteProperty(target, original); } }); } /** * Seals a Headers instance to prevent modification by throwing an error when * any mutating method is called. */ static seal(headers) { return new Proxy(headers, { get (target, prop, receiver) { switch(prop){ case 'append': case 'delete': case 'set': return ReadonlyHeadersError.callable; default: return __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$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].get(target, prop, receiver); } } }); } /** * Merges a header value into a string. This stores multiple values as an * array, so we need to merge them into a string. * * @param value a header value * @returns a merged header value (a string) */ merge(value) { if (Array.isArray(value)) return value.join(', '); return value; } /** * Creates a Headers instance from a plain object or a Headers instance. * * @param headers a plain object or a Headers instance * @returns a headers instance */ static from(headers) { if (headers instanceof Headers) return headers; return new HeadersAdapter(headers); } append(name, value) { const existing = this.headers[name]; if (typeof existing === 'string') { this.headers[name] = [ existing, value ]; } else if (Array.isArray(existing)) { existing.push(value); } else { this.headers[name] = value; } } delete(name) { delete this.headers[name]; } get(name) { const value = this.headers[name]; if (typeof value !== 'undefined') return this.merge(value); return null; } has(name) { return typeof this.headers[name] !== 'undefined'; } set(name, value) { this.headers[name] = value; } forEach(callbackfn, thisArg) { for (const [name, value] of this.entries()){ callbackfn.call(thisArg, value, name, this); } } *entries() { for (const key of Object.keys(this.headers)){ const name = key.toLowerCase(); // We assert here that this is a string because we got it from the // Object.keys() call above. const value = this.get(name); yield [ name, value ]; } } *keys() { for (const key of Object.keys(this.headers)){ const name = key.toLowerCase(); yield name; } } *values() { for (const key of Object.keys(this.headers)){ // We assert here that this is a string because we got it from the // Object.keys() call above. const value = this.get(key); yield value; } } [Symbol.iterator]() { return this.entries(); } } //# sourceMappingURL=headers.js.map }), "[project]/node_modules/next/dist/compiled/cookie/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { (()=>{ "use strict"; if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/node_modules/next/dist/compiled/cookie") + "/"; var e = {}; (()=>{ var r = e; /*! * cookie * Copyright(c) 2012-2014 Roman Shtylman * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ r.parse = parse; r.serialize = serialize; var i = decodeURIComponent; var t = encodeURIComponent; var a = /; */; var n = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; function parse(e, r) { if (typeof e !== "string") { throw new TypeError("argument str must be a string"); } var t = {}; var n = r || {}; var o = e.split(a); var s = n.decode || i; for(var p = 0; p < o.length; p++){ var f = o[p]; var u = f.indexOf("="); if (u < 0) { continue; } var v = f.substr(0, u).trim(); var c = f.substr(++u, f.length).trim(); if ('"' == c[0]) { c = c.slice(1, -1); } if (undefined == t[v]) { t[v] = tryDecode(c, s); } } return t; } function serialize(e, r, i) { var a = i || {}; var o = a.encode || t; if (typeof o !== "function") { throw new TypeError("option encode is invalid"); } if (!n.test(e)) { throw new TypeError("argument name is invalid"); } var s = o(r); if (s && !n.test(s)) { throw new TypeError("argument val is invalid"); } var p = e + "=" + s; if (null != a.maxAge) { var f = a.maxAge - 0; if (isNaN(f) || !isFinite(f)) { throw new TypeError("option maxAge is invalid"); } p += "; Max-Age=" + Math.floor(f); } if (a.domain) { if (!n.test(a.domain)) { throw new TypeError("option domain is invalid"); } p += "; Domain=" + a.domain; } if (a.path) { if (!n.test(a.path)) { throw new TypeError("option path is invalid"); } p += "; Path=" + a.path; } if (a.expires) { if (typeof a.expires.toUTCString !== "function") { throw new TypeError("option expires is invalid"); } p += "; Expires=" + a.expires.toUTCString(); } if (a.httpOnly) { p += "; HttpOnly"; } if (a.secure) { p += "; Secure"; } if (a.sameSite) { var u = typeof a.sameSite === "string" ? a.sameSite.toLowerCase() : a.sameSite; switch(u){ case true: p += "; SameSite=Strict"; break; case "lax": p += "; SameSite=Lax"; break; case "strict": p += "; SameSite=Strict"; break; case "none": p += "; SameSite=None"; break; default: throw new TypeError("option sameSite is invalid"); } } return p; } function tryDecode(e, r) { try { return r(e); } catch (r) { return e; } } })(); module.exports = e; })(); }), "[project]/node_modules/next/dist/esm/server/api-utils/index.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ApiError", ()=>ApiError, "COOKIE_NAME_PRERENDER_BYPASS", ()=>COOKIE_NAME_PRERENDER_BYPASS, "COOKIE_NAME_PRERENDER_DATA", ()=>COOKIE_NAME_PRERENDER_DATA, "RESPONSE_LIMIT_DEFAULT", ()=>RESPONSE_LIMIT_DEFAULT, "SYMBOL_CLEARED_COOKIES", ()=>SYMBOL_CLEARED_COOKIES, "SYMBOL_PREVIEW_DATA", ()=>SYMBOL_PREVIEW_DATA, "checkIsOnDemandRevalidate", ()=>checkIsOnDemandRevalidate, "clearPreviewData", ()=>clearPreviewData, "redirect", ()=>redirect, "sendError", ()=>sendError, "sendStatusCode", ()=>sendStatusCode, "setLazyProp", ()=>setLazyProp, "wrapApiHandler", ()=>wrapApiHandler ]); 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$headers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); ; ; ; ; function wrapApiHandler(page, handler) { return (...args)=>{ (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$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().setRootSpanAttribute('next.route', page); // Call API route method 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$app$2d$route$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$app$2d$route$5d$__$28$ecmascript$29$__["NodeSpan"].runHandler, { spanName: `executing api route (pages) ${page}` }, ()=>handler(...args)); }; } function sendStatusCode(res, statusCode) { res.statusCode = statusCode; return res; } function redirect(res, statusOrUrl, url) { if (typeof statusOrUrl === 'string') { url = statusOrUrl; statusOrUrl = 307; } if (typeof statusOrUrl !== 'number' || typeof url !== 'string') { throw Object.defineProperty(new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`), "__NEXT_ERROR_CODE", { value: "E389", enumerable: false, configurable: true }); } res.writeHead(statusOrUrl, { Location: url }); res.write(url); res.end(); return res; } function checkIsOnDemandRevalidate(req, previewProps) { const headers = __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$headers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["HeadersAdapter"].from(req.headers); const previewModeId = headers.get(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["PRERENDER_REVALIDATE_HEADER"]); const isOnDemandRevalidate = previewModeId === previewProps.previewModeId; const revalidateOnlyGenerated = headers.has(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER"]); return { isOnDemandRevalidate, revalidateOnlyGenerated }; } const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`; const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`; const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024; const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA); const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS); function clearPreviewData(res, options = {}) { if (SYMBOL_CLEARED_COOKIES in res) { return res; } const { serialize } = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/cookie/index.js [app-route] (ecmascript)"); const previous = res.getHeader('Set-Cookie'); res.setHeader(`Set-Cookie`, [ ...typeof previous === 'string' ? [ previous ] : Array.isArray(previous) ? previous : [], serialize(COOKIE_NAME_PRERENDER_BYPASS, '', { // To delete a cookie, set `expires` to a date in the past: // https://tools.ietf.org/html/rfc6265#section-4.1.1 // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. expires: new Date(0), httpOnly: true, sameSite: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'lax', secure: ("TURBOPACK compile-time value", "development") !== 'development', path: '/', ...options.path !== undefined ? { path: options.path } : undefined }), serialize(COOKIE_NAME_PRERENDER_DATA, '', { // To delete a cookie, set `expires` to a date in the past: // https://tools.ietf.org/html/rfc6265#section-4.1.1 // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. expires: new Date(0), httpOnly: true, sameSite: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'lax', secure: ("TURBOPACK compile-time value", "development") !== 'development', path: '/', ...options.path !== undefined ? { path: options.path } : undefined }) ]); Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, { value: true, enumerable: false }); return res; } class ApiError extends Error { constructor(statusCode, message){ super(message); this.statusCode = statusCode; } } function sendError(res, statusCode, message) { res.statusCode = statusCode; res.statusMessage = message; res.end(message); } function setLazyProp({ req }, prop, getter) { const opts = { configurable: true, enumerable: true }; const optsReset = { ...opts, writable: true }; Object.defineProperty(req, prop, { ...opts, get: ()=>{ const value = getter(); // we set the property on the object to avoid recalculating it Object.defineProperty(req, prop, { ...optsReset, value }); return value; }, set: (value)=>{ Object.defineProperty(req, prop, { ...optsReset, value }); } }); } //# sourceMappingURL=index.js.map }), "[project]/node_modules/next/dist/esm/client/components/redirect-status-code.js [app-route] (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; }({}); //# sourceMappingURL=redirect-status-code.js.map }), "[project]/node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Parse cookies from the `headers` of request * @param req request object */ __turbopack_context__.s([ "getCookieParser", ()=>getCookieParser ]); function getCookieParser(headers) { return function parseCookie() { const { cookie } = headers; if (!cookie) { return {}; } const { parse: parseCookieFn } = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/cookie/index.js [app-route] (ecmascript)"); return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie); }; } //# sourceMappingURL=get-cookie-parser.js.map }), "[project]/node_modules/next/dist/esm/server/base-http/index.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "BaseNextRequest", ()=>BaseNextRequest, "BaseNextResponse", ()=>BaseNextResponse ]); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/redirect-status-code.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$get$2d$cookie$2d$parser$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js [app-route] (ecmascript)"); ; ; class BaseNextRequest { constructor(method, url, body){ this.method = method; this.url = url; this.body = body; } // Utils implemented using the abstract methods above get cookies() { if (this._cookies) return this._cookies; return this._cookies = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$get$2d$cookie$2d$parser$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getCookieParser"])(this.headers)(); } } class BaseNextResponse { constructor(destination){ this.destination = destination; } // Utils implemented using the abstract methods above redirect(destination, statusCode) { this.setHeader('Location', destination); this.statusCode = statusCode; // Since IE11 doesn't support the 308 header add backwards // compatibility using refresh header 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$app$2d$route$5d$__$28$ecmascript$29$__["RedirectStatusCode"].PermanentRedirect) { this.setHeader('Refresh', `0;url=${destination}`); } return this; } } //# sourceMappingURL=index.js.map }), "[project]/node_modules/next/dist/esm/server/base-http/node.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "NodeNextRequest", ()=>NodeNextRequest, "NodeNextResponse", ()=>NodeNextResponse ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/api-utils/index.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/request-meta.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/base-http/index.js [app-route] (ecmascript)"); ; ; ; let prop; class NodeNextRequest extends __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BaseNextRequest"] { static #_ = prop = _NEXT_REQUEST_META = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]; constructor(_req){ var _this__req; super(_req.method.toUpperCase(), _req.url, _req), this._req = _req, this.headers = this._req.headers, this.fetchMetrics = (_this__req = this._req) == null ? void 0 : _this__req.fetchMetrics, this[_NEXT_REQUEST_META] = this._req[__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]] || {}, this.streaming = false; } get originalRequest() { // Need to mimic these changes to the original req object for places where we use it: // render.tsx, api/ssg requests this._req[__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]] = this[__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]]; this._req.url = this.url; this._req.cookies = this.cookies; return this._req; } set originalRequest(value) { this._req = value; } /** * Returns the request body as a Web Readable Stream. The body here can only * be read once as the body will start flowing as soon as the data handler * is attached. * * @internal */ stream() { if (this.streaming) { throw Object.defineProperty(new Error('Invariant: NodeNextRequest.stream() can only be called once'), "__NEXT_ERROR_CODE", { value: "E467", enumerable: false, configurable: true }); } this.streaming = true; return new ReadableStream({ start: (controller)=>{ this._req.on('data', (chunk)=>{ controller.enqueue(new Uint8Array(chunk)); }); this._req.on('end', ()=>{ controller.close(); }); this._req.on('error', (err)=>{ controller.error(err); }); } }); } } class NodeNextResponse extends __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BaseNextResponse"] { get originalResponse() { if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SYMBOL_CLEARED_COOKIES"] in this) { this._res[__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SYMBOL_CLEARED_COOKIES"]] = this[__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SYMBOL_CLEARED_COOKIES"]]; } return this._res; } constructor(_res){ super(_res), this._res = _res, this.textBody = undefined; } get sent() { return this._res.finished || this._res.headersSent; } get statusCode() { return this._res.statusCode; } set statusCode(value) { this._res.statusCode = value; } get statusMessage() { return this._res.statusMessage; } set statusMessage(value) { this._res.statusMessage = value; } setHeader(name, value) { this._res.setHeader(name, value); return this; } removeHeader(name) { this._res.removeHeader(name); return this; } getHeaderValues(name) { const values = this._res.getHeader(name); if (values === undefined) return undefined; return (Array.isArray(values) ? values : [ values ]).map((value)=>value.toString()); } hasHeader(name) { return this._res.hasHeader(name); } getHeader(name) { const values = this.getHeaderValues(name); return Array.isArray(values) ? values.join(',') : undefined; } getHeaders() { return this._res.getHeaders(); } appendHeader(name, value) { const currentValues = this.getHeaderValues(name) ?? []; if (!currentValues.includes(value)) { this._res.setHeader(name, [ ...currentValues, value ]); } return this; } body(value) { this.textBody = value; return this; } send() { this._res.end(this.textBody); } onClose(callback) { this.originalResponse.on('close', callback); } } var _NEXT_REQUEST_META; //# sourceMappingURL=node.js.map }), "[project]/node_modules/next/dist/esm/server/instrumentation/utils.js [app-route] (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; } //# sourceMappingURL=utils.js.map }), "[project]/node_modules/next/dist/esm/server/send-response.js [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "sendResponse", ()=>sendResponse ]); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/base-http/helpers.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/pipe-readable.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/utils.js [app-route] (ecmascript)"); ; ; ; async function sendResponse(req, res, response, waitUntil) { 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$app$2d$route$5d$__$28$ecmascript$29$__["isNodeNextResponse"])(res)) { var _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["splitCookiesString"])(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { 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$app$2d$route$5d$__$28$ecmascript$29$__["pipeToNodeResponse"])(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map }), "[project]/node_modules/next/dist/esm/server/lib/cache-control.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__["CACHE_ONE_YEAR"]}${swrHeader}`; } //# sourceMappingURL=cache-control.js.map }), "[project]/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "detectDomainLocale", { enumerable: true, get: function() { return 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; } } } //# sourceMappingURL=detect-domain-locale.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "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` * - `/` -> `/` */ Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "removeTrailingSlash", { enumerable: true, get: function() { return removeTrailingSlash; } }); function removeTrailingSlash(route) { return route.replace(/\/$/, '') || '/'; } //# sourceMappingURL=remove-trailing-slash.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "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 */ Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "parsePath", { enumerable: true, get: function() { return 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: '' }; } //# sourceMappingURL=parse-path.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "addPathPrefix", { enumerable: true, get: function() { return addPathPrefix; } }); const _parsepath = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); function addPathPrefix(path, prefix) { if (!path.startsWith('/') || !prefix) { return path; } const { pathname, query, hash } = (0, _parsepath.parsePath)(path); return `${prefix}${pathname}${query}${hash}`; } //# sourceMappingURL=add-path-prefix.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "addPathSuffix", { enumerable: true, get: function() { return addPathSuffix; } }); const _parsepath = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); function addPathSuffix(path, suffix) { if (!path.startsWith('/') || !suffix) { return path; } const { pathname, query, hash } = (0, _parsepath.parsePath)(path); return `${pathname}${suffix}${query}${hash}`; } //# sourceMappingURL=add-path-suffix.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "pathHasPrefix", { enumerable: true, get: function() { return pathHasPrefix; } }); const _parsepath = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); function pathHasPrefix(path, prefix) { if (typeof path !== 'string') { return false; } const { pathname } = (0, _parsepath.parsePath)(path); return pathname === prefix || pathname.startsWith(prefix + '/'); } //# sourceMappingURL=path-has-prefix.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/add-locale.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "addLocale", { enumerable: true, get: function() { return addLocale; } }); const _addpathprefix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)"); const _pathhasprefix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (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, _pathhasprefix.pathHasPrefix)(lower, '/api')) return path; if ((0, _pathhasprefix.pathHasPrefix)(lower, `/${locale.toLowerCase()}`)) return path; } // Add the locale prefix to the path. return (0, _addpathprefix.addPathPrefix)(path, `/${locale}`); } //# sourceMappingURL=add-locale.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "formatNextPathnameInfo", { enumerable: true, get: function() { return formatNextPathnameInfo; } }); const _removetrailingslash = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js [app-route] (ecmascript)"); const _addpathprefix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)"); const _addpathsuffix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js [app-route] (ecmascript)"); const _addlocale = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/add-locale.js [app-route] (ecmascript)"); function formatNextPathnameInfo(info) { let pathname = (0, _addlocale.addLocale)(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix); if (info.buildId || !info.trailingSlash) { pathname = (0, _removetrailingslash.removeTrailingSlash)(pathname); } if (info.buildId) { pathname = (0, _addpathsuffix.addPathSuffix)((0, _addpathprefix.addPathPrefix)(pathname, `/_next/data/${info.buildId}`), info.pathname === '/' ? 'index.json' : '.json'); } pathname = (0, _addpathprefix.addPathPrefix)(pathname, info.basePath); return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? (0, _addpathsuffix.addPathSuffix)(pathname, '/') : pathname : (0, _removetrailingslash.removeTrailingSlash)(pathname); } //# sourceMappingURL=format-next-pathname-info.js.map }), "[project]/node_modules/next/dist/shared/lib/get-hostname.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getHostname", { enumerable: true, get: function() { return 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(); } //# sourceMappingURL=get-hostname.js.map }), "[project]/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "normalizeLocalePath", { enumerable: true, get: function() { return 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 }; } //# sourceMappingURL=normalize-locale-path.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "removePathPrefix", { enumerable: true, get: function() { return removePathPrefix; } }); const _pathhasprefix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (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, _pathhasprefix.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}`; } //# sourceMappingURL=remove-path-prefix.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getNextPathnameInfo", { enumerable: true, get: function() { return getNextPathnameInfo; } }); const _normalizelocalepath = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)"); const _removepathprefix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)"); const _pathhasprefix = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); function getNextPathnameInfo(pathname, options) { const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}; const info = { pathname, trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash }; if (basePath && (0, _pathhasprefix.pathHasPrefix)(info.pathname, basePath)) { info.pathname = (0, _removepathprefix.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, _normalizelocalepath.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, _normalizelocalepath.normalizeLocalePath)(pathnameNoDataPrefix, i18n.locales); if (result.detectedLocale) { info.locale = result.detectedLocale; } } } return info; } //# sourceMappingURL=get-next-pathname-info.js.map }), "[project]/node_modules/next/dist/server/web/next-url.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "NextURL", { enumerable: true, get: function() { return NextURL; } }); const _detectdomainlocale = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js [app-route] (ecmascript)"); const _formatnextpathnameinfo = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js [app-route] (ecmascript)"); const _gethostname = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/get-hostname.js [app-route] (ecmascript)"); const _getnextpathnameinfo = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)"); const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/; function parseURL(url, base) { return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost')); } 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, _getnextpathnameinfo.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, _gethostname.getHostname)(this[Internal].url, this[Internal].options.headers); this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, _detectdomainlocale.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, _formatnextpathnameinfo.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); } } //# sourceMappingURL=next-url.js.map }), "[project]/node_modules/next/dist/lib/constants.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { ACTION_SUFFIX: null, APP_DIR_ALIAS: null, CACHE_ONE_YEAR: null, DOT_NEXT_ALIAS: null, ESLINT_DEFAULT_DIRS: null, GSP_NO_RETURNED_VALUE: null, GSSP_COMPONENT_MEMBER_ERROR: null, GSSP_NO_RETURNED_VALUE: null, HTML_CONTENT_TYPE_HEADER: null, INFINITE_CACHE: null, INSTRUMENTATION_HOOK_FILENAME: null, JSON_CONTENT_TYPE_HEADER: null, MATCHED_PATH_HEADER: null, MIDDLEWARE_FILENAME: null, MIDDLEWARE_LOCATION_REGEXP: null, NEXT_BODY_SUFFIX: null, NEXT_CACHE_IMPLICIT_TAG_ID: null, NEXT_CACHE_REVALIDATED_TAGS_HEADER: null, NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: null, NEXT_CACHE_SOFT_TAG_MAX_LENGTH: null, NEXT_CACHE_TAGS_HEADER: null, NEXT_CACHE_TAG_MAX_ITEMS: null, NEXT_CACHE_TAG_MAX_LENGTH: null, NEXT_DATA_SUFFIX: null, NEXT_INTERCEPTION_MARKER_PREFIX: null, NEXT_META_SUFFIX: null, NEXT_QUERY_PARAM_PREFIX: null, NEXT_RESUME_HEADER: null, NON_STANDARD_NODE_ENV: null, PAGES_DIR_ALIAS: null, PRERENDER_REVALIDATE_HEADER: null, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: null, PROXY_FILENAME: null, PROXY_LOCATION_REGEXP: null, PUBLIC_DIR_MIDDLEWARE_CONFLICT: null, ROOT_DIR_ALIAS: null, RSC_ACTION_CLIENT_WRAPPER_ALIAS: null, RSC_ACTION_ENCRYPTION_ALIAS: null, RSC_ACTION_PROXY_ALIAS: null, RSC_ACTION_VALIDATE_ALIAS: null, RSC_CACHE_WRAPPER_ALIAS: null, RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: null, RSC_MOD_REF_PROXY_ALIAS: null, RSC_PREFETCH_SUFFIX: null, RSC_SEGMENTS_DIR_SUFFIX: null, RSC_SEGMENT_SUFFIX: null, RSC_SUFFIX: null, SERVER_PROPS_EXPORT_ERROR: null, SERVER_PROPS_GET_INIT_PROPS_CONFLICT: null, SERVER_PROPS_SSG_CONFLICT: null, SERVER_RUNTIME: null, SSG_FALLBACK_EXPORT_ERROR: null, SSG_GET_INITIAL_PROPS_CONFLICT: null, STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: null, TEXT_PLAIN_CONTENT_TYPE_HEADER: null, UNSTABLE_REVALIDATE_RENAME_ERROR: null, WEBPACK_LAYERS: null, WEBPACK_RESOURCE_QUERIES: null, WEB_SOCKET_MAX_RECONNECTIONS: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { ACTION_SUFFIX: function() { return ACTION_SUFFIX; }, APP_DIR_ALIAS: function() { return APP_DIR_ALIAS; }, CACHE_ONE_YEAR: function() { return CACHE_ONE_YEAR; }, DOT_NEXT_ALIAS: function() { return DOT_NEXT_ALIAS; }, ESLINT_DEFAULT_DIRS: function() { return ESLINT_DEFAULT_DIRS; }, GSP_NO_RETURNED_VALUE: function() { return GSP_NO_RETURNED_VALUE; }, GSSP_COMPONENT_MEMBER_ERROR: function() { return GSSP_COMPONENT_MEMBER_ERROR; }, GSSP_NO_RETURNED_VALUE: function() { return GSSP_NO_RETURNED_VALUE; }, HTML_CONTENT_TYPE_HEADER: function() { return HTML_CONTENT_TYPE_HEADER; }, INFINITE_CACHE: function() { return INFINITE_CACHE; }, INSTRUMENTATION_HOOK_FILENAME: function() { return INSTRUMENTATION_HOOK_FILENAME; }, JSON_CONTENT_TYPE_HEADER: function() { return JSON_CONTENT_TYPE_HEADER; }, MATCHED_PATH_HEADER: function() { return MATCHED_PATH_HEADER; }, MIDDLEWARE_FILENAME: function() { return MIDDLEWARE_FILENAME; }, MIDDLEWARE_LOCATION_REGEXP: function() { return MIDDLEWARE_LOCATION_REGEXP; }, NEXT_BODY_SUFFIX: function() { return NEXT_BODY_SUFFIX; }, NEXT_CACHE_IMPLICIT_TAG_ID: function() { return NEXT_CACHE_IMPLICIT_TAG_ID; }, NEXT_CACHE_REVALIDATED_TAGS_HEADER: function() { return NEXT_CACHE_REVALIDATED_TAGS_HEADER; }, NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: function() { return NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER; }, NEXT_CACHE_SOFT_TAG_MAX_LENGTH: function() { return NEXT_CACHE_SOFT_TAG_MAX_LENGTH; }, NEXT_CACHE_TAGS_HEADER: function() { return NEXT_CACHE_TAGS_HEADER; }, NEXT_CACHE_TAG_MAX_ITEMS: function() { return NEXT_CACHE_TAG_MAX_ITEMS; }, NEXT_CACHE_TAG_MAX_LENGTH: function() { return NEXT_CACHE_TAG_MAX_LENGTH; }, NEXT_DATA_SUFFIX: function() { return NEXT_DATA_SUFFIX; }, NEXT_INTERCEPTION_MARKER_PREFIX: function() { return NEXT_INTERCEPTION_MARKER_PREFIX; }, NEXT_META_SUFFIX: function() { return NEXT_META_SUFFIX; }, NEXT_QUERY_PARAM_PREFIX: function() { return NEXT_QUERY_PARAM_PREFIX; }, NEXT_RESUME_HEADER: function() { return NEXT_RESUME_HEADER; }, NON_STANDARD_NODE_ENV: function() { return NON_STANDARD_NODE_ENV; }, PAGES_DIR_ALIAS: function() { return PAGES_DIR_ALIAS; }, PRERENDER_REVALIDATE_HEADER: function() { return PRERENDER_REVALIDATE_HEADER; }, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: function() { return PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER; }, PROXY_FILENAME: function() { return PROXY_FILENAME; }, PROXY_LOCATION_REGEXP: function() { return PROXY_LOCATION_REGEXP; }, PUBLIC_DIR_MIDDLEWARE_CONFLICT: function() { return PUBLIC_DIR_MIDDLEWARE_CONFLICT; }, ROOT_DIR_ALIAS: function() { return ROOT_DIR_ALIAS; }, RSC_ACTION_CLIENT_WRAPPER_ALIAS: function() { return RSC_ACTION_CLIENT_WRAPPER_ALIAS; }, RSC_ACTION_ENCRYPTION_ALIAS: function() { return RSC_ACTION_ENCRYPTION_ALIAS; }, RSC_ACTION_PROXY_ALIAS: function() { return RSC_ACTION_PROXY_ALIAS; }, RSC_ACTION_VALIDATE_ALIAS: function() { return RSC_ACTION_VALIDATE_ALIAS; }, RSC_CACHE_WRAPPER_ALIAS: function() { return RSC_CACHE_WRAPPER_ALIAS; }, RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: function() { return RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS; }, RSC_MOD_REF_PROXY_ALIAS: function() { return RSC_MOD_REF_PROXY_ALIAS; }, RSC_PREFETCH_SUFFIX: function() { return RSC_PREFETCH_SUFFIX; }, RSC_SEGMENTS_DIR_SUFFIX: function() { return RSC_SEGMENTS_DIR_SUFFIX; }, RSC_SEGMENT_SUFFIX: function() { return RSC_SEGMENT_SUFFIX; }, RSC_SUFFIX: function() { return RSC_SUFFIX; }, SERVER_PROPS_EXPORT_ERROR: function() { return SERVER_PROPS_EXPORT_ERROR; }, SERVER_PROPS_GET_INIT_PROPS_CONFLICT: function() { return SERVER_PROPS_GET_INIT_PROPS_CONFLICT; }, SERVER_PROPS_SSG_CONFLICT: function() { return SERVER_PROPS_SSG_CONFLICT; }, SERVER_RUNTIME: function() { return SERVER_RUNTIME; }, SSG_FALLBACK_EXPORT_ERROR: function() { return SSG_FALLBACK_EXPORT_ERROR; }, SSG_GET_INITIAL_PROPS_CONFLICT: function() { return SSG_GET_INITIAL_PROPS_CONFLICT; }, STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function() { return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR; }, TEXT_PLAIN_CONTENT_TYPE_HEADER: function() { return TEXT_PLAIN_CONTENT_TYPE_HEADER; }, UNSTABLE_REVALIDATE_RENAME_ERROR: function() { return UNSTABLE_REVALIDATE_RENAME_ERROR; }, WEBPACK_LAYERS: function() { return WEBPACK_LAYERS; }, WEBPACK_RESOURCE_QUERIES: function() { return WEBPACK_RESOURCE_QUERIES; }, WEB_SOCKET_MAX_RECONNECTIONS: function() { return 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_PREFETCH_SUFFIX = '.prefetch.rsc'; 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_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_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 CACHE_ONE_YEAR = 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__' }; //# sourceMappingURL=constants.js.map }), "[project]/node_modules/next/dist/server/web/utils.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { fromNodeOutgoingHttpHeaders: null, normalizeNextQueryParam: null, splitCookiesString: null, toNodeOutgoingHttpHeaders: null, validateURL: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { fromNodeOutgoingHttpHeaders: function() { return fromNodeOutgoingHttpHeaders; }, normalizeNextQueryParam: function() { return normalizeNextQueryParam; }, splitCookiesString: function() { return splitCookiesString; }, toNodeOutgoingHttpHeaders: function() { return toNodeOutgoingHttpHeaders; }, validateURL: function() { return validateURL; } }); const _constants = __turbopack_context__.r("[project]/node_modules/next/dist/lib/constants.js [app-route] (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 = [ _constants.NEXT_QUERY_PARAM_PREFIX, _constants.NEXT_INTERCEPTION_MARKER_PREFIX ]; for (const prefix of prefixes){ if (key !== prefix && key.startsWith(prefix)) { return key.substring(prefix.length); } } return null; } //# sourceMappingURL=utils.js.map }), "[project]/node_modules/next/dist/server/web/error.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { PageSignatureError: null, RemovedPageError: null, RemovedUAError: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { PageSignatureError: function() { return PageSignatureError; }, RemovedPageError: function() { return RemovedPageError; }, RemovedUAError: function() { return 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 `); } } //# sourceMappingURL=error.js.map }), "[project]/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { RequestCookies: null, ResponseCookies: null, stringifyCookie: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { RequestCookies: function() { return _cookies.RequestCookies; }, ResponseCookies: function() { return _cookies.ResponseCookies; }, stringifyCookie: function() { return _cookies.stringifyCookie; } }); const _cookies = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (ecmascript)"); //# sourceMappingURL=cookies.js.map }), "[project]/node_modules/next/dist/server/web/spec-extension/request.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { INTERNALS: null, NextRequest: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { INTERNALS: function() { return INTERNALS; }, NextRequest: function() { return NextRequest; } }); const _nexturl = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/next-url.js [app-route] (ecmascript)"); const _utils = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/utils.js [app-route] (ecmascript)"); const _error = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/error.js [app-route] (ecmascript)"); const _cookies = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (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, _utils.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 _nexturl.NextURL(url, { headers: (0, _utils.toNodeOutgoingHttpHeaders)(this.headers), nextConfig: init.nextConfig }); this[INTERNALS] = { cookies: new _cookies.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 _error.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 _error.RemovedUAError(); } get url() { return this[INTERNALS].url; } } //# sourceMappingURL=request.js.map }), "[project]/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ReflectAdapter", { enumerable: true, get: function() { return ReflectAdapter; } }); class ReflectAdapter { static get(target, prop, receiver) { const value = Reflect.get(target, prop, receiver); if (typeof value === 'function') { return value.bind(target); } return value; } static set(target, prop, value, receiver) { return Reflect.set(target, prop, value, receiver); } static has(target, prop) { return Reflect.has(target, prop); } static deleteProperty(target, prop) { return Reflect.deleteProperty(target, prop); } } //# sourceMappingURL=reflect.js.map }), "[project]/node_modules/next/dist/server/web/spec-extension/response.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "NextResponse", { enumerable: true, get: function() { return NextResponse; } }); const _cookies = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); const _nexturl = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/next-url.js [app-route] (ecmascript)"); const _utils = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/utils.js [app-route] (ecmascript)"); const _reflect = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); const _cookies1 = __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); const INTERNALS = Symbol('internal response'); const REDIRECTS = new Set([ 301, 302, 303, 307, 308 ]); function handleMiddlewareField(init, headers) { var _init_request; if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) { if (!(init.request.headers instanceof Headers)) { throw Object.defineProperty(new Error('request.headers must be an instance of Headers'), "__NEXT_ERROR_CODE", { value: "E119", enumerable: false, configurable: true }); } const keys = []; for (const [key, value] of init.request.headers){ headers.set('x-middleware-request-' + key, value); keys.push(key); } headers.set('x-middleware-override-headers', keys.join(',')); } } class NextResponse extends Response { constructor(body, init = {}){ super(body, init); const headers = this.headers; const cookies = new _cookies1.ResponseCookies(headers); const cookiesProxy = new Proxy(cookies, { get (target, prop, receiver) { switch(prop){ case 'delete': case 'set': { return (...args)=>{ const result = Reflect.apply(target[prop], target, args); const newHeaders = new Headers(headers); if (result instanceof _cookies1.ResponseCookies) { headers.set('x-middleware-set-cookie', result.getAll().map((cookie)=>(0, _cookies.stringifyCookie)(cookie)).join(',')); } handleMiddlewareField(init, newHeaders); return result; }; } default: return _reflect.ReflectAdapter.get(target, prop, receiver); } } }); this[INTERNALS] = { cookies: cookiesProxy, url: init.url ? new _nexturl.NextURL(init.url, { headers: (0, _utils.toNodeOutgoingHttpHeaders)(headers), nextConfig: init.nextConfig }) : undefined }; } [Symbol.for('edge-runtime.inspect.custom')]() { return { cookies: this.cookies, url: this.url, // rest of props come from Response body: this.body, bodyUsed: this.bodyUsed, headers: Object.fromEntries(this.headers), ok: this.ok, redirected: this.redirected, status: this.status, statusText: this.statusText, type: this.type }; } get cookies() { return this[INTERNALS].cookies; } static json(body, init) { const response = Response.json(body, init); return new NextResponse(response.body, response); } static redirect(url, init) { const status = typeof init === 'number' ? init : (init == null ? void 0 : init.status) ?? 307; if (!REDIRECTS.has(status)) { throw Object.defineProperty(new RangeError('Failed to execute "redirect" on "response": Invalid status code'), "__NEXT_ERROR_CODE", { value: "E529", enumerable: false, configurable: true }); } const initObj = typeof init === 'object' ? init : {}; const headers = new Headers(initObj == null ? void 0 : initObj.headers); headers.set('Location', (0, _utils.validateURL)(url)); return new NextResponse(null, { ...initObj, headers, status }); } static rewrite(destination, init) { const headers = new Headers(init == null ? void 0 : init.headers); headers.set('x-middleware-rewrite', (0, _utils.validateURL)(destination)); handleMiddlewareField(init, headers); return new NextResponse(null, { ...init, headers }); } static next(init) { const headers = new Headers(init == null ? void 0 : init.headers); headers.set('x-middleware-next', '1'); handleMiddlewareField(init, headers); return new NextResponse(null, { ...init, headers }); } } //# sourceMappingURL=response.js.map }), "[project]/node_modules/next/dist/server/web/spec-extension/image-response.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; /** * @deprecated ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead. * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import */ Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ImageResponse", { enumerable: true, get: function() { return ImageResponse; } }); function ImageResponse() { throw Object.defineProperty(new Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'), "__NEXT_ERROR_CODE", { value: "E183", enumerable: false, configurable: true }); } //# sourceMappingURL=image-response.js.map }), "[project]/node_modules/next/dist/compiled/ua-parser-js/ua-parser.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { (()=>{ var i = { 226: function(i, e) { (function(o, a) { "use strict"; var r = "1.0.35", t = "", n = "?", s = "function", b = "undefined", w = "object", l = "string", d = "major", c = "model", u = "name", p = "type", m = "vendor", f = "version", h = "architecture", v = "console", g = "mobile", k = "tablet", x = "smarttv", _ = "wearable", y = "embedded", q = 350; var T = "Amazon", S = "Apple", z = "ASUS", N = "BlackBerry", A = "Browser", C = "Chrome", E = "Edge", O = "Firefox", U = "Google", j = "Huawei", P = "LG", R = "Microsoft", M = "Motorola", B = "Opera", V = "Samsung", D = "Sharp", I = "Sony", W = "Viera", F = "Xiaomi", G = "Zebra", H = "Facebook", L = "Chromium OS", Z = "Mac OS"; var extend = function(i, e) { var o = {}; for(var a in i){ if (e[a] && e[a].length % 2 === 0) { o[a] = e[a].concat(i[a]); } else { o[a] = i[a]; } } return o; }, enumerize = function(i) { var e = {}; for(var o = 0; o < i.length; o++){ e[i[o].toUpperCase()] = i[o]; } return e; }, has = function(i, e) { return typeof i === l ? lowerize(e).indexOf(lowerize(i)) !== -1 : false; }, lowerize = function(i) { return i.toLowerCase(); }, majorize = function(i) { return typeof i === l ? i.replace(/[^\d\.]/g, t).split(".")[0] : a; }, trim = function(i, e) { if (typeof i === l) { i = i.replace(/^\s\s*/, t); return typeof e === b ? i : i.substring(0, q); } }; var rgxMapper = function(i, e) { var o = 0, r, t, n, b, l, d; while(o < e.length && !l){ var c = e[o], u = e[o + 1]; r = t = 0; while(r < c.length && !l){ if (!c[r]) { break; } l = c[r++].exec(i); if (!!l) { for(n = 0; n < u.length; n++){ d = l[++t]; b = u[n]; if (typeof b === w && b.length > 0) { if (b.length === 2) { if (typeof b[1] == s) { this[b[0]] = b[1].call(this, d); } else { this[b[0]] = b[1]; } } else if (b.length === 3) { if (typeof b[1] === s && !(b[1].exec && b[1].test)) { this[b[0]] = d ? b[1].call(this, d, b[2]) : a; } else { this[b[0]] = d ? d.replace(b[1], b[2]) : a; } } else if (b.length === 4) { this[b[0]] = d ? b[3].call(this, d.replace(b[1], b[2])) : a; } } else { this[b] = d ? d : a; } } } } o += 2; } }, strMapper = function(i, e) { for(var o in e){ if (typeof e[o] === w && e[o].length > 0) { for(var r = 0; r < e[o].length; r++){ if (has(e[o][r], i)) { return o === n ? a : o; } } } else if (has(e[o], i)) { return o === n ? a : o; } } return i; }; var $ = { "1.0": "/8", 1.2: "/1", 1.3: "/3", "2.0": "/412", "2.0.2": "/416", "2.0.3": "/417", "2.0.4": "/419", "?": "/" }, X = { ME: "4.90", "NT 3.11": "NT3.51", "NT 4.0": "NT4.0", 2e3: "NT 5.0", XP: [ "NT 5.1", "NT 5.2" ], Vista: "NT 6.0", 7: "NT 6.1", 8: "NT 6.2", 8.1: "NT 6.3", 10: [ "NT 6.4", "NT 10.0" ], RT: "ARM" }; var K = { browser: [ [ /\b(?:crmo|crios)\/([\w\.]+)/i ], [ f, [ u, "Chrome" ] ], [ /edg(?:e|ios|a)?\/([\w\.]+)/i ], [ f, [ u, "Edge" ] ], [ /(opera mini)\/([-\w\.]+)/i, /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i ], [ u, f ], [ /opios[\/ ]+([\w\.]+)/i ], [ f, [ u, B + " Mini" ] ], [ /\bopr\/([\w\.]+)/i ], [ f, [ u, B ] ], [ /(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, /(ba?idubrowser)[\/ ]?([\w\.]+)/i, /(?:ms|\()(ie) ([\w\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, /(heytap|ovi)browser\/([\d\.]+)/i, /(weibo)__([\d\.]+)/i ], [ u, f ], [ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i ], [ f, [ u, "UC" + A ] ], [ /microm.+\bqbcore\/([\w\.]+)/i, /\bqbcore\/([\w\.]+).+microm/i ], [ f, [ u, "WeChat(Win) Desktop" ] ], [ /micromessenger\/([\w\.]+)/i ], [ f, [ u, "WeChat" ] ], [ /konqueror\/([\w\.]+)/i ], [ f, [ u, "Konqueror" ] ], [ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i ], [ f, [ u, "IE" ] ], [ /ya(?:search)?browser\/([\w\.]+)/i ], [ f, [ u, "Yandex" ] ], [ /(avast|avg)\/([\w\.]+)/i ], [ [ u, /(.+)/, "$1 Secure " + A ], f ], [ /\bfocus\/([\w\.]+)/i ], [ f, [ u, O + " Focus" ] ], [ /\bopt\/([\w\.]+)/i ], [ f, [ u, B + " Touch" ] ], [ /coc_coc\w+\/([\w\.]+)/i ], [ f, [ u, "Coc Coc" ] ], [ /dolfin\/([\w\.]+)/i ], [ f, [ u, "Dolphin" ] ], [ /coast\/([\w\.]+)/i ], [ f, [ u, B + " Coast" ] ], [ /miuibrowser\/([\w\.]+)/i ], [ f, [ u, "MIUI " + A ] ], [ /fxios\/([-\w\.]+)/i ], [ f, [ u, O ] ], [ /\bqihu|(qi?ho?o?|360)browser/i ], [ [ u, "360 " + A ] ], [ /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i ], [ [ u, /(.+)/, "$1 " + A ], f ], [ /(comodo_dragon)\/([\w\.]+)/i ], [ [ u, /_/g, " " ], f ], [ /(electron)\/([\w\.]+) safari/i, /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i ], [ u, f ], [ /(metasr)[\/ ]?([\w\.]+)/i, /(lbbrowser)/i, /\[(linkedin)app\]/i ], [ u ], [ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i ], [ [ u, H ], f ], [ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, /safari (line)\/([\w\.]+)/i, /\b(line)\/([\w\.]+)\/iab/i, /(chromium|instagram)[\/ ]([-\w\.]+)/i ], [ u, f ], [ /\bgsa\/([\w\.]+) .*safari\//i ], [ f, [ u, "GSA" ] ], [ /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i ], [ f, [ u, "TikTok" ] ], [ /headlesschrome(?:\/([\w\.]+)| )/i ], [ f, [ u, C + " Headless" ] ], [ / wv\).+(chrome)\/([\w\.]+)/i ], [ [ u, C + " WebView" ], f ], [ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i ], [ f, [ u, "Android " + A ] ], [ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i ], [ u, f ], [ /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i ], [ f, [ u, "Mobile Safari" ] ], [ /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i ], [ f, u ], [ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i ], [ u, [ f, strMapper, $ ] ], [ /(webkit|khtml)\/([\w\.]+)/i ], [ u, f ], [ /(navigator|netscape\d?)\/([-\w\.]+)/i ], [ [ u, "Netscape" ], f ], [ /mobile vr; rv:([\w\.]+)\).+firefox/i ], [ f, [ u, O + " Reality" ] ], [ /ekiohf.+(flow)\/([\w\.]+)/i, /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, /(firefox)\/([\w\.]+)/i, /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, /(links) \(([\w\.]+)/i, /panasonic;(viera)/i ], [ u, f ], [ /(cobalt)\/([\w\.]+)/i ], [ u, [ f, /master.|lts./, "" ] ] ], cpu: [ [ /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i ], [ [ h, "amd64" ] ], [ /(ia32(?=;))/i ], [ [ h, lowerize ] ], [ /((?:i[346]|x)86)[;\)]/i ], [ [ h, "ia32" ] ], [ /\b(aarch64|arm(v?8e?l?|_?64))\b/i ], [ [ h, "arm64" ] ], [ /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i ], [ [ h, "armhf" ] ], [ /windows (ce|mobile); ppc;/i ], [ [ h, "arm" ] ], [ /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i ], [ [ h, /ower/, t, lowerize ] ], [ /(sun4\w)[;\)]/i ], [ [ h, "sparc" ] ], [ /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i ], [ [ h, lowerize ] ] ], device: [ [ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i ], [ c, [ m, V ], [ p, k ] ], [ /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, /samsung[- ]([-\w]+)/i, /sec-(sgh\w+)/i ], [ c, [ m, V ], [ p, g ] ], [ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i ], [ c, [ m, S ], [ p, g ] ], [ /\((ipad);[-\w\),; ]+apple/i, /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i ], [ c, [ m, S ], [ p, k ] ], [ /(macintosh);/i ], [ c, [ m, S ] ], [ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i ], [ c, [ m, D ], [ p, g ] ], [ /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i ], [ c, [ m, j ], [ p, k ] ], [ /(?:huawei|honor)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i ], [ c, [ m, j ], [ p, g ] ], [ /\b(poco[\w ]+)(?: bui|\))/i, /\b; (\w+) build\/hm\1/i, /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i ], [ [ c, /_/g, " " ], [ m, F ], [ p, g ] ], [ /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i ], [ [ c, /_/g, " " ], [ m, F ], [ p, k ] ], [ /; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i ], [ c, [ m, "OPPO" ], [ p, g ] ], [ /vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i ], [ c, [ m, "Vivo" ], [ p, g ] ], [ /\b(rmx[12]\d{3})(?: bui|;|\))/i ], [ c, [ m, "Realme" ], [ p, g ] ], [ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i ], [ c, [ m, M ], [ p, g ] ], [ /\b(mz60\d|xoom[2 ]{0,2}) build\//i ], [ c, [ m, M ], [ p, k ] ], [ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i ], [ c, [ m, P ], [ p, k ] ], [ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, /\blg-?([\d\w]+) bui/i ], [ c, [ m, P ], [ p, g ] ], [ /(ideatab[-\w ]+)/i, /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i ], [ c, [ m, "Lenovo" ], [ p, k ] ], [ /(?:maemo|nokia).*(n900|lumia \d+)/i, /nokia[-_ ]?([-\w\.]*)/i ], [ [ c, /_/g, " " ], [ m, "Nokia" ], [ p, g ] ], [ /(pixel c)\b/i ], [ c, [ m, U ], [ p, k ] ], [ /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i ], [ c, [ m, U ], [ p, g ] ], [ /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i ], [ c, [ m, I ], [ p, g ] ], [ /sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i ], [ [ c, "Xperia Tablet" ], [ m, I ], [ p, k ] ], [ / (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i ], [ c, [ m, "OnePlus" ], [ p, g ] ], [ /(alexa)webm/i, /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, /(kf[a-z]+)( bui|\)).+silk\//i ], [ c, [ m, T ], [ p, k ] ], [ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i ], [ [ c, /(.+)/g, "Fire Phone $1" ], [ m, T ], [ p, g ] ], [ /(playbook);[-\w\),; ]+(rim)/i ], [ c, m, [ p, k ] ], [ /\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i ], [ c, [ m, N ], [ p, g ] ], [ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i ], [ c, [ m, z ], [ p, k ] ], [ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i ], [ c, [ m, z ], [ p, g ] ], [ /(nexus 9)/i ], [ c, [ m, "HTC" ], [ p, k ] ], [ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i ], [ m, [ c, /_/g, " " ], [ p, g ] ], [ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i ], [ c, [ m, "Acer" ], [ p, k ] ], [ /droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i ], [ c, [ m, "Meizu" ], [ p, g ] ], [ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, /(hp) ([\w ]+\w)/i, /(asus)-?(\w+)/i, /(microsoft); (lumia[\w ]+)/i, /(lenovo)[-_ ]?([-\w]+)/i, /(jolla)/i, /(oppo) ?([\w ]+) bui/i ], [ m, c, [ p, g ] ], [ /(kobo)\s(ereader|touch)/i, /(archos) (gamepad2?)/i, /(hp).+(touchpad(?!.+tablet)|tablet)/i, /(kindle)\/([\w\.]+)/i, /(nook)[\w ]+build\/(\w+)/i, /(dell) (strea[kpr\d ]*[\dko])/i, /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, /(trinity)[- ]*(t\d{3}) bui/i, /(gigaset)[- ]+(q\w{1,9}) bui/i, /(vodafone) ([\w ]+)(?:\)| bui)/i ], [ m, c, [ p, k ] ], [ /(surface duo)/i ], [ c, [ m, R ], [ p, k ] ], [ /droid [\d\.]+; (fp\du?)(?: b|\))/i ], [ c, [ m, "Fairphone" ], [ p, g ] ], [ /(u304aa)/i ], [ c, [ m, "AT&T" ], [ p, g ] ], [ /\bsie-(\w*)/i ], [ c, [ m, "Siemens" ], [ p, g ] ], [ /\b(rct\w+) b/i ], [ c, [ m, "RCA" ], [ p, k ] ], [ /\b(venue[\d ]{2,7}) b/i ], [ c, [ m, "Dell" ], [ p, k ] ], [ /\b(q(?:mv|ta)\w+) b/i ], [ c, [ m, "Verizon" ], [ p, k ] ], [ /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i ], [ c, [ m, "Barnes & Noble" ], [ p, k ] ], [ /\b(tm\d{3}\w+) b/i ], [ c, [ m, "NuVision" ], [ p, k ] ], [ /\b(k88) b/i ], [ c, [ m, "ZTE" ], [ p, k ] ], [ /\b(nx\d{3}j) b/i ], [ c, [ m, "ZTE" ], [ p, g ] ], [ /\b(gen\d{3}) b.+49h/i ], [ c, [ m, "Swiss" ], [ p, g ] ], [ /\b(zur\d{3}) b/i ], [ c, [ m, "Swiss" ], [ p, k ] ], [ /\b((zeki)?tb.*\b) b/i ], [ c, [ m, "Zeki" ], [ p, k ] ], [ /\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i ], [ [ m, "Dragon Touch" ], c, [ p, k ] ], [ /\b(ns-?\w{0,9}) b/i ], [ c, [ m, "Insignia" ], [ p, k ] ], [ /\b((nxa|next)-?\w{0,9}) b/i ], [ c, [ m, "NextBook" ], [ p, k ] ], [ /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i ], [ [ m, "Voice" ], c, [ p, g ] ], [ /\b(lvtel\-)?(v1[12]) b/i ], [ [ m, "LvTel" ], c, [ p, g ] ], [ /\b(ph-1) /i ], [ c, [ m, "Essential" ], [ p, g ] ], [ /\b(v(100md|700na|7011|917g).*\b) b/i ], [ c, [ m, "Envizen" ], [ p, k ] ], [ /\b(trio[-\w\. ]+) b/i ], [ c, [ m, "MachSpeed" ], [ p, k ] ], [ /\btu_(1491) b/i ], [ c, [ m, "Rotor" ], [ p, k ] ], [ /(shield[\w ]+) b/i ], [ c, [ m, "Nvidia" ], [ p, k ] ], [ /(sprint) (\w+)/i ], [ m, c, [ p, g ] ], [ /(kin\.[onetw]{3})/i ], [ [ c, /\./g, " " ], [ m, R ], [ p, g ] ], [ /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i ], [ c, [ m, G ], [ p, k ] ], [ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i ], [ c, [ m, G ], [ p, g ] ], [ /smart-tv.+(samsung)/i ], [ m, [ p, x ] ], [ /hbbtv.+maple;(\d+)/i ], [ [ c, /^/, "SmartTV" ], [ m, V ], [ p, x ] ], [ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i ], [ [ m, P ], [ p, x ] ], [ /(apple) ?tv/i ], [ m, [ c, S + " TV" ], [ p, x ] ], [ /crkey/i ], [ [ c, C + "cast" ], [ m, U ], [ p, x ] ], [ /droid.+aft(\w)( bui|\))/i ], [ c, [ m, T ], [ p, x ] ], [ /\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i ], [ c, [ m, D ], [ p, x ] ], [ /(bravia[\w ]+)( bui|\))/i ], [ c, [ m, I ], [ p, x ] ], [ /(mitv-\w{5}) bui/i ], [ c, [ m, F ], [ p, x ] ], [ /Hbbtv.*(technisat) (.*);/i ], [ m, c, [ p, x ] ], [ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i ], [ [ m, trim ], [ c, trim ], [ p, x ] ], [ /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i ], [ [ p, x ] ], [ /(ouya)/i, /(nintendo) ([wids3utch]+)/i ], [ m, c, [ p, v ] ], [ /droid.+; (shield) bui/i ], [ c, [ m, "Nvidia" ], [ p, v ] ], [ /(playstation [345portablevi]+)/i ], [ c, [ m, I ], [ p, v ] ], [ /\b(xbox(?: one)?(?!; xbox))[\); ]/i ], [ c, [ m, R ], [ p, v ] ], [ /((pebble))app/i ], [ m, c, [ p, _ ] ], [ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i ], [ c, [ m, S ], [ p, _ ] ], [ /droid.+; (glass) \d/i ], [ c, [ m, U ], [ p, _ ] ], [ /droid.+; (wt63?0{2,3})\)/i ], [ c, [ m, G ], [ p, _ ] ], [ /(quest( 2| pro)?)/i ], [ c, [ m, H ], [ p, _ ] ], [ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i ], [ m, [ p, y ] ], [ /(aeobc)\b/i ], [ c, [ m, T ], [ p, y ] ], [ /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i ], [ c, [ p, g ] ], [ /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i ], [ c, [ p, k ] ], [ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i ], [ [ p, k ] ], [ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i ], [ [ p, g ] ], [ /(android[-\w\. ]{0,9});.+buil/i ], [ c, [ m, "Generic" ] ] ], engine: [ [ /windows.+ edge\/([\w\.]+)/i ], [ f, [ u, E + "HTML" ] ], [ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i ], [ f, [ u, "Blink" ] ], [ /(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, /ekioh(flow)\/([\w\.]+)/i, /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, /(icab)[\/ ]([23]\.[\d\.]+)/i, /\b(libweb)/i ], [ u, f ], [ /rv\:([\w\.]{1,9})\b.+(gecko)/i ], [ f, u ] ], os: [ [ /microsoft (windows) (vista|xp)/i ], [ u, f ], [ /(windows) nt 6\.2; (arm)/i, /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i ], [ u, [ f, strMapper, X ] ], [ /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i ], [ [ u, "Windows" ], [ f, strMapper, X ] ], [ /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, /ios;fbsv\/([\d\.]+)/i, /cfnetwork\/.+darwin/i ], [ [ f, /_/g, "." ], [ u, "iOS" ] ], [ /(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i ], [ [ u, Z ], [ f, /_/g, "." ] ], [ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i ], [ f, u ], [ /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, /(blackberry)\w*\/([\w\.]*)/i, /(tizen|kaios)[\/ ]([\w\.]+)/i, /\((series40);/i ], [ u, f ], [ /\(bb(10);/i ], [ f, [ u, N ] ], [ /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i ], [ f, [ u, "Symbian" ] ], [ /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i ], [ f, [ u, O + " OS" ] ], [ /web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i ], [ f, [ u, "webOS" ] ], [ /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i ], [ f, [ u, "watchOS" ] ], [ /crkey\/([\d\.]+)/i ], [ f, [ u, C + "cast" ] ], [ /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i ], [ [ u, L ], f ], [ /panasonic;(viera)/i, /(netrange)mmh/i, /(nettv)\/(\d+\.[\w\.]+)/i, /(nintendo|playstation) ([wids345portablevuch]+)/i, /(xbox); +xbox ([^\);]+)/i, /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, /(mint)[\/\(\) ]?(\w*)/i, /(mageia|vectorlinux)[; ]/i, /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, /(hurd|linux) ?([\w\.]*)/i, /(gnu) ?([\w\.]*)/i, /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, /(haiku) (\w+)/i ], [ u, f ], [ /(sunos) ?([\w\.\d]*)/i ], [ [ u, "Solaris" ], f ], [ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, /(unix) ?([\w\.]*)/i ], [ u, f ] ] }; var UAParser = function(i, e) { if (typeof i === w) { e = i; i = a; } if (!(this instanceof UAParser)) { return new UAParser(i, e).getResult(); } var r = typeof o !== b && o.navigator ? o.navigator : a; var n = i || (r && r.userAgent ? r.userAgent : t); var v = r && r.userAgentData ? r.userAgentData : a; var x = e ? extend(K, e) : K; var _ = r && r.userAgent == n; this.getBrowser = function() { var i = {}; i[u] = a; i[f] = a; rgxMapper.call(i, n, x.browser); i[d] = majorize(i[f]); if (_ && r && r.brave && typeof r.brave.isBrave == s) { i[u] = "Brave"; } return i; }; this.getCPU = function() { var i = {}; i[h] = a; rgxMapper.call(i, n, x.cpu); return i; }; this.getDevice = function() { var i = {}; i[m] = a; i[c] = a; i[p] = a; rgxMapper.call(i, n, x.device); if (_ && !i[p] && v && v.mobile) { i[p] = g; } if (_ && i[c] == "Macintosh" && r && typeof r.standalone !== b && r.maxTouchPoints && r.maxTouchPoints > 2) { i[c] = "iPad"; i[p] = k; } return i; }; this.getEngine = function() { var i = {}; i[u] = a; i[f] = a; rgxMapper.call(i, n, x.engine); return i; }; this.getOS = function() { var i = {}; i[u] = a; i[f] = a; rgxMapper.call(i, n, x.os); if (_ && !i[u] && v && v.platform != "Unknown") { i[u] = v.platform.replace(/chrome os/i, L).replace(/macos/i, Z); } return i; }; this.getResult = function() { return { ua: this.getUA(), browser: this.getBrowser(), engine: this.getEngine(), os: this.getOS(), device: this.getDevice(), cpu: this.getCPU() }; }; this.getUA = function() { return n; }; this.setUA = function(i) { n = typeof i === l && i.length > q ? trim(i, q) : i; return this; }; this.setUA(n); return this; }; UAParser.VERSION = r; UAParser.BROWSER = enumerize([ u, f, d ]); UAParser.CPU = enumerize([ h ]); UAParser.DEVICE = enumerize([ c, m, p, v, g, x, k, _, y ]); UAParser.ENGINE = UAParser.OS = enumerize([ u, f ]); if (typeof e !== b) { if ("object" !== b && i.exports) { e = i.exports = UAParser; } e.UAParser = UAParser; } else { if (typeof define === s && define.amd) { ((r)=>r !== undefined && __turbopack_context__.v(r))(function() { return UAParser; }(__turbopack_context__.r, exports, module)); } else if (typeof o !== b) { o.UAParser = UAParser; } } var Q = typeof o !== b && (o.jQuery || o.Zepto); if (Q && !Q.ua) { var Y = new UAParser; Q.ua = Y.getResult(); Q.ua.get = function() { return Y.getUA(); }; Q.ua.set = function(i) { Y.setUA(i); var e = Y.getResult(); for(var o in e){ Q.ua[o] = e[o]; } }; } })(("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : this); } }; var e = {}; function __nccwpck_require__(o) { var a = e[o]; if (a !== undefined) { return a.exports; } var r = e[o] = { exports: {} }; var t = true; try { i[o].call(r.exports, r, r.exports, __nccwpck_require__); t = false; } finally{ if (t) delete e[o]; } return r.exports; } if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/node_modules/next/dist/compiled/ua-parser-js") + "/"; var o = __nccwpck_require__(226); module.exports = o; })(); }), "[project]/node_modules/next/dist/server/web/spec-extension/user-agent.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { isBot: null, userAgent: null, userAgentFromString: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { isBot: function() { return isBot; }, userAgent: function() { return userAgent; }, userAgentFromString: function() { return userAgentFromString; } }); const _uaparserjs = /*#__PURE__*/ _interop_require_default(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/ua-parser-js/ua-parser.js [app-route] (ecmascript)")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isBot(input) { return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input); } function userAgentFromString(input) { return { ...(0, _uaparserjs.default)(input), isBot: input === undefined ? false : isBot(input) }; } function userAgent({ headers }) { return userAgentFromString(headers.get('user-agent') || undefined); } //# sourceMappingURL=user-agent.js.map }), "[project]/node_modules/next/dist/server/web/spec-extension/url-pattern.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "URLPattern", { enumerable: true, get: function() { return GlobalURLPattern; } }); const GlobalURLPattern = typeof URLPattern === 'undefined' ? undefined : URLPattern; //# sourceMappingURL=url-pattern.js.map }), "[project]/node_modules/next/dist/server/after/after.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "after", { enumerable: true, get: function() { return after; } }); const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); function after(task) { const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); if (!workStore) { // TODO(after): the linked docs page talks about *dynamic* APIs, which after soon won't be anymore throw Object.defineProperty(new Error('`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context'), "__NEXT_ERROR_CODE", { value: "E468", enumerable: false, configurable: true }); } const { afterContext } = workStore; return afterContext.after(task); } //# sourceMappingURL=after.js.map }), "[project]/node_modules/next/dist/server/after/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && __export(__turbopack_context__.r("[project]/node_modules/next/dist/server/after/after.js [app-route] (ecmascript)")); _export_star(__turbopack_context__.r("[project]/node_modules/next/dist/server/after/after.js [app-route] (ecmascript)"), exports); function _export_star(from, to) { Object.keys(from).forEach(function(k) { if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) { Object.defineProperty(to, k, { enumerable: true, get: function() { return from[k]; } }); } }); return from; } //# sourceMappingURL=index.js.map }), "[project]/node_modules/next/dist/client/components/hooks-server-context.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { DynamicServerError: null, isDynamicServerError: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { DynamicServerError: function() { return DynamicServerError; }, isDynamicServerError: function() { return isDynamicServerError; } }); const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'; class DynamicServerError extends Error { constructor(description){ super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE; } } function isDynamicServerError(err) { if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') { return false; } return err.digest === DYNAMIC_ERROR_CODE; } 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; } //# sourceMappingURL=hooks-server-context.js.map }), "[project]/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { StaticGenBailoutError: null, isStaticGenBailoutError: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { StaticGenBailoutError: function() { return StaticGenBailoutError; }, isStaticGenBailoutError: function() { return isStaticGenBailoutError; } }); const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'; class StaticGenBailoutError extends Error { constructor(...args){ super(...args), this.code = NEXT_STATIC_GEN_BAILOUT; } } function isStaticGenBailoutError(error) { if (typeof error !== 'object' || error === null || !('code' in error)) { return false; } return error.code === NEXT_STATIC_GEN_BAILOUT; } 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; } //# sourceMappingURL=static-generation-bailout.js.map }), "[project]/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { isHangingPromiseRejectionError: null, makeDevtoolsIOAwarePromise: null, makeHangingPromise: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { isHangingPromiseRejectionError: function() { return isHangingPromiseRejectionError; }, makeDevtoolsIOAwarePromise: function() { return makeDevtoolsIOAwarePromise; }, makeHangingPromise: function() { return makeHangingPromise; } }); function isHangingPromiseRejectionError(err) { if (typeof err !== 'object' || err === null || !('digest' in err)) { return false; } return err.digest === HANGING_PROMISE_REJECTION; } const HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'; class HangingPromiseRejectionError extends Error { constructor(route, expression){ super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${route}".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION; } } const abortListenersBySignal = new WeakMap(); function makeHangingPromise(signal, route, expression) { if (signal.aborted) { return Promise.reject(new HangingPromiseRejectionError(route, expression)); } else { const hangingPromise = new Promise((_, reject)=>{ const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression)); let currentListeners = abortListenersBySignal.get(signal); if (currentListeners) { currentListeners.push(boundRejection); } else { const listeners = [ boundRejection ]; abortListenersBySignal.set(signal, listeners); signal.addEventListener('abort', ()=>{ for(let i = 0; i < listeners.length; i++){ listeners[i](); } }, { once: true }); } }); // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct // your own promise out of it you'll need to ensure you handle the error when it rejects. hangingPromise.catch(ignoreReject); return hangingPromise; } } function ignoreReject() {} function makeDevtoolsIOAwarePromise(underlying, requestStore, stage) { if (requestStore.stagedRendering) { // We resolve each stage in a timeout, so React DevTools will pick this up as IO. return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying); } // in React DevTools if we resolve in a setTimeout we will observe // the promise resolution as something that can suspend a boundary or root. return new Promise((resolve)=>{ // Must use setTimeout to be considered IO React DevTools. setImmediate will not work. setTimeout(()=>{ resolve(underlying); }, 0); }); } //# sourceMappingURL=dynamic-rendering-utils.js.map }), "[project]/node_modules/next/dist/lib/framework/boundary-constants.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { METADATA_BOUNDARY_NAME: null, OUTLET_BOUNDARY_NAME: null, ROOT_LAYOUT_BOUNDARY_NAME: null, VIEWPORT_BOUNDARY_NAME: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { METADATA_BOUNDARY_NAME: function() { return METADATA_BOUNDARY_NAME; }, OUTLET_BOUNDARY_NAME: function() { return OUTLET_BOUNDARY_NAME; }, ROOT_LAYOUT_BOUNDARY_NAME: function() { return ROOT_LAYOUT_BOUNDARY_NAME; }, VIEWPORT_BOUNDARY_NAME: function() { return VIEWPORT_BOUNDARY_NAME; } }); const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'; const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'; const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'; const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'; //# sourceMappingURL=boundary-constants.js.map }), "[project]/node_modules/next/dist/lib/scheduler.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { atLeastOneTask: null, scheduleImmediate: null, scheduleOnNextTick: null, waitAtLeastOneReactRenderTask: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { atLeastOneTask: function() { return atLeastOneTask; }, scheduleImmediate: function() { return scheduleImmediate; }, scheduleOnNextTick: function() { return scheduleOnNextTick; }, waitAtLeastOneReactRenderTask: function() { return 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)); } } //# sourceMappingURL=scheduler.js.map }), "[project]/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; // This has to be a shared module which is shared between client component error boundary and dynamic component Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { BailoutToCSRError: null, isBailoutToCSRError: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { BailoutToCSRError: function() { return BailoutToCSRError; }, isBailoutToCSRError: function() { return isBailoutToCSRError; } }); const BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'; class BailoutToCSRError extends Error { constructor(reason){ super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR; } } function isBailoutToCSRError(err) { if (typeof err !== 'object' || err === null || !('digest' in err)) { return false; } return err.digest === BAILOUT_TO_CSR; } //# sourceMappingURL=bailout-to-csr.js.map }), "[project]/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "InvariantError", { enumerable: true, get: function() { return 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'; } } //# sourceMappingURL=invariant-error.js.map }), "[project]/node_modules/next/dist/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "createPromiseWithResolvers", { enumerable: true, get: function() { return createPromiseWithResolvers; } }); function createPromiseWithResolvers() { // Shim of Stage 4 Promise.withResolvers proposal let resolve; let reject; const promise = new Promise((res, rej)=>{ resolve = res; reject = rej; }); return { resolve: resolve, reject: reject, promise }; } //# sourceMappingURL=promise-with-resolvers.js.map }), "[project]/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { RenderStage: null, StagedRenderingController: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { RenderStage: function() { return RenderStage; }, StagedRenderingController: function() { return StagedRenderingController; } }); const _invarianterror = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); const _promisewithresolvers = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)"); var RenderStage = /*#__PURE__*/ function(RenderStage) { RenderStage[RenderStage["Static"] = 1] = "Static"; RenderStage[RenderStage["Runtime"] = 2] = "Runtime"; RenderStage[RenderStage["Dynamic"] = 3] = "Dynamic"; return RenderStage; }({}); class StagedRenderingController { constructor(abortSignal = null){ this.abortSignal = abortSignal; this.currentStage = 1; this.runtimeStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)(); this.dynamicStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)(); if (abortSignal) { abortSignal.addEventListener('abort', ()=>{ const { reason } = abortSignal; if (this.currentStage < 2) { this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections ; this.runtimeStagePromise.reject(reason); } if (this.currentStage < 3) { this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections ; this.dynamicStagePromise.reject(reason); } }, { once: true }); } } advanceStage(stage) { // If we're already at the target stage or beyond, do nothing. // (this can happen e.g. if sync IO advanced us to the dynamic stage) if (this.currentStage >= stage) { return; } this.currentStage = stage; // Note that we might be going directly from Static to Dynamic, // so we need to resolve the runtime stage as well. if (stage >= 2) { this.runtimeStagePromise.resolve(); } if (stage >= 3) { this.dynamicStagePromise.resolve(); } } getStagePromise(stage) { switch(stage){ case 2: { return this.runtimeStagePromise.promise; } case 3: { return this.dynamicStagePromise.promise; } default: { stage; throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), "__NEXT_ERROR_CODE", { value: "E881", enumerable: false, configurable: true }); } } } waitForStage(stage) { return this.getStagePromise(stage); } delayUntilStage(stage, displayName, resolvedValue) { const ioTriggerPromise = this.getStagePromise(stage); const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue); // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked. // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it). // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning. if (this.abortSignal) { promise.catch(ignoreReject); } return promise; } } function ignoreReject() {} // TODO(restart-on-cache-miss): the layering of `delayUntilStage`, // `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise` // is confusing, we should clean it up. function makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) { // If we create a `new Promise` and give it a displayName // (with no userspace code above us in the stack) // React Devtools will use it as the IO cause when determining "suspended by". // In particular, it should shadow any inner IO that resolved/rejected the promise // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage) const promise = new Promise((resolve, reject)=>{ ioTrigger.then(resolve.bind(null, resolvedValue), reject); }); if (displayName !== undefined) { // @ts-expect-error promise.displayName = displayName; } return promise; } //# sourceMappingURL=staged-rendering.js.map }), "[project]/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; /** * The functions provided by this module are used to communicate certain properties * about the currently running code so that Next.js can make decisions on how to handle * the current execution in different rendering modes such as pre-rendering, resuming, and SSR. * * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering. * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of * Dynamic indications. * * The first is simply an intention to be dynamic. unstable_noStore is an example of this where * the currently executing code simply declares that the current scope is dynamic but if you use it * inside unstable_cache it can still be cached. This type of indication can be removed if we ever * make the default dynamic to begin with because the only way you would ever be static is inside * a cache scope which this indication does not affect. * * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic * because it means that it is inappropriate to cache this at all. using a dynamic data source inside * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should * read that data outside the cache and pass it in as an argument to the cached function. */ Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { Postpone: null, PreludeState: null, abortAndThrowOnSynchronousRequestDataAccess: null, abortOnSynchronousPlatformIOAccess: null, accessedDynamicData: null, annotateDynamicAccess: null, consumeDynamicAccess: null, createDynamicTrackingState: null, createDynamicValidationState: null, createHangingInputAbortSignal: null, createRenderInBrowserAbortSignal: null, delayUntilRuntimeStage: null, formatDynamicAPIAccesses: null, getFirstDynamicReason: null, isDynamicPostpone: null, isPrerenderInterruptedError: null, logDisallowedDynamicError: null, markCurrentScopeAsDynamic: null, postponeWithTracking: null, throwIfDisallowedDynamic: null, throwToInterruptStaticGeneration: null, trackAllowedDynamicAccess: null, trackDynamicDataInDynamicRender: null, trackSynchronousPlatformIOAccessInDev: null, useDynamicRouteParams: null, useDynamicSearchParams: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { Postpone: function() { return Postpone; }, PreludeState: function() { return PreludeState; }, abortAndThrowOnSynchronousRequestDataAccess: function() { return abortAndThrowOnSynchronousRequestDataAccess; }, abortOnSynchronousPlatformIOAccess: function() { return abortOnSynchronousPlatformIOAccess; }, accessedDynamicData: function() { return accessedDynamicData; }, annotateDynamicAccess: function() { return annotateDynamicAccess; }, consumeDynamicAccess: function() { return consumeDynamicAccess; }, createDynamicTrackingState: function() { return createDynamicTrackingState; }, createDynamicValidationState: function() { return createDynamicValidationState; }, createHangingInputAbortSignal: function() { return createHangingInputAbortSignal; }, createRenderInBrowserAbortSignal: function() { return createRenderInBrowserAbortSignal; }, delayUntilRuntimeStage: function() { return delayUntilRuntimeStage; }, formatDynamicAPIAccesses: function() { return formatDynamicAPIAccesses; }, getFirstDynamicReason: function() { return getFirstDynamicReason; }, isDynamicPostpone: function() { return isDynamicPostpone; }, isPrerenderInterruptedError: function() { return isPrerenderInterruptedError; }, logDisallowedDynamicError: function() { return logDisallowedDynamicError; }, markCurrentScopeAsDynamic: function() { return markCurrentScopeAsDynamic; }, postponeWithTracking: function() { return postponeWithTracking; }, throwIfDisallowedDynamic: function() { return throwIfDisallowedDynamic; }, throwToInterruptStaticGeneration: function() { return throwToInterruptStaticGeneration; }, trackAllowedDynamicAccess: function() { return trackAllowedDynamicAccess; }, trackDynamicDataInDynamicRender: function() { return trackDynamicDataInDynamicRender; }, trackSynchronousPlatformIOAccessInDev: function() { return trackSynchronousPlatformIOAccessInDev; }, useDynamicRouteParams: function() { return useDynamicRouteParams; }, useDynamicSearchParams: function() { return useDynamicSearchParams; } }); const _react = /*#__PURE__*/ _interop_require_default(__turbopack_context__.r("[project]/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)")); const _hooksservercontext = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/hooks-server-context.js [app-route] (ecmascript)"); const _staticgenerationbailout = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); const _dynamicrenderingutils = __turbopack_context__.r("[project]/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); const _boundaryconstants = __turbopack_context__.r("[project]/node_modules/next/dist/lib/framework/boundary-constants.js [app-route] (ecmascript)"); const _scheduler = __turbopack_context__.r("[project]/node_modules/next/dist/lib/scheduler.js [app-route] (ecmascript)"); const _bailouttocsr = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)"); const _invarianterror = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); const _stagedrendering = __turbopack_context__.r("[project]/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const hasPostpone = typeof _react.default.unstable_postpone === 'function'; function createDynamicTrackingState(isDebugDynamicAccesses) { return { isDebugDynamicAccesses, dynamicAccesses: [], syncDynamicErrorWithStack: null }; } function createDynamicValidationState() { return { hasSuspenseAboveBody: false, hasDynamicMetadata: false, hasDynamicViewport: false, hasAllowedDynamic: false, dynamicErrors: [] }; } function getFirstDynamicReason(trackingState) { var _trackingState_dynamicAccesses_; return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression; } function markCurrentScopeAsDynamic(store, workUnitStore, expression) { if (workUnitStore) { switch(workUnitStore.type){ case 'cache': case 'unstable-cache': // Inside cache scopes, marking a scope as dynamic has no effect, // because the outer cache scope creates a cache boundary. This is // subtly different from reading a dynamic data source, which is // forbidden inside a cache scope. return; case 'private-cache': // A private cache scope is already dynamic by definition. return; case 'prerender-legacy': case 'prerender-ppr': case 'request': break; default: workUnitStore; } } // If we're forcing dynamic rendering or we're forcing static rendering, we // don't need to do anything here because the entire page is already dynamic // or it's static and it should not throw or postpone here. if (store.forceDynamic || store.forceStatic) return; if (store.dynamicShouldError) { throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${store.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { value: "E553", enumerable: false, configurable: true }); } if (workUnitStore) { switch(workUnitStore.type){ case 'prerender-ppr': return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking); case 'prerender-legacy': workUnitStore.revalidate = 0; // We aren't prerendering, but we are generating a static page. We need // to bail out of static generation. const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { value: "E550", enumerable: false, configurable: true }); store.dynamicUsageDescription = expression; store.dynamicUsageStack = err.stack; throw err; case 'request': if ("TURBOPACK compile-time truthy", 1) { workUnitStore.usedDynamic = true; } break; default: workUnitStore; } } } function throwToInterruptStaticGeneration(expression, store, prerenderStore) { // We aren't prerendering but we are generating a static page. We need to bail out of static generation const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { value: "E558", enumerable: false, configurable: true }); prerenderStore.revalidate = 0; store.dynamicUsageDescription = expression; store.dynamicUsageStack = err.stack; throw err; } function trackDynamicDataInDynamicRender(workUnitStore) { switch(workUnitStore.type){ case 'cache': case 'unstable-cache': // Inside cache scopes, marking a scope as dynamic has no effect, // because the outer cache scope creates a cache boundary. This is // subtly different from reading a dynamic data source, which is // forbidden inside a cache scope. return; case 'private-cache': // A private cache scope is already dynamic by definition. return; case 'prerender': case 'prerender-runtime': case 'prerender-legacy': case 'prerender-ppr': case 'prerender-client': break; case 'request': if ("TURBOPACK compile-time truthy", 1) { workUnitStore.usedDynamic = true; } break; default: workUnitStore; } } function abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) { const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`; const error = createPrerenderInterruptedError(reason); prerenderStore.controller.abort(error); const dynamicTracking = prerenderStore.dynamicTracking; if (dynamicTracking) { dynamicTracking.dynamicAccesses.push({ // When we aren't debugging, we don't need to create another error for the // stack trace. stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, expression }); } } function abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) { const dynamicTracking = prerenderStore.dynamicTracking; abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); // It is important that we set this tracking value after aborting. Aborts are executed // synchronously except for the case where you abort during render itself. By setting this // value late we can use it to determine if any of the aborted tasks are the task that // called the sync IO expression in the first place. if (dynamicTracking) { if (dynamicTracking.syncDynamicErrorWithStack === null) { dynamicTracking.syncDynamicErrorWithStack = errorWithStack; } } } function trackSynchronousPlatformIOAccessInDev(requestStore) { // We don't actually have a controller to abort but we do the semantic equivalent by // advancing the request store out of the prerender stage if (requestStore.stagedRendering) { // TODO: error for sync IO in the runtime stage // (which is not currently covered by the validation render in `spawnDynamicValidationInDev`) requestStore.stagedRendering.advanceStage(_stagedrendering.RenderStage.Dynamic); } } function abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) { const prerenderSignal = prerenderStore.controller.signal; if (prerenderSignal.aborted === false) { // TODO it would be better to move this aborted check into the callsite so we can avoid making // the error object when it isn't relevant to the aborting of the prerender however // since we need the throw semantics regardless of whether we abort it is easier to land // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer // to ideal implementation abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); // It is important that we set this tracking value after aborting. Aborts are executed // synchronously except for the case where you abort during render itself. By setting this // value late we can use it to determine if any of the aborted tasks are the task that // called the sync IO expression in the first place. const dynamicTracking = prerenderStore.dynamicTracking; if (dynamicTracking) { if (dynamicTracking.syncDynamicErrorWithStack === null) { dynamicTracking.syncDynamicErrorWithStack = errorWithStack; } } } throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`); } function Postpone({ reason, route }) { const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null; postponeWithTracking(route, reason, dynamicTracking); } function postponeWithTracking(route, expression, dynamicTracking) { assertPostpone(); if (dynamicTracking) { dynamicTracking.dynamicAccesses.push({ // When we aren't debugging, we don't need to create another error for the // stack trace. stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, expression }); } _react.default.unstable_postpone(createPostponeReason(route, expression)); } function createPostponeReason(route, expression) { return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`; } function isDynamicPostpone(err) { if (typeof err === 'object' && err !== null && typeof err.message === 'string') { return isDynamicPostponeReason(err.message); } return false; } function isDynamicPostponeReason(reason) { return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error'); } if (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) { throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { value: "E296", enumerable: false, configurable: true }); } const NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'; function createPrerenderInterruptedError(message) { const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); error.digest = NEXT_PRERENDER_INTERRUPTED; return error; } function isPrerenderInterruptedError(error) { return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error; } function accessedDynamicData(dynamicAccesses) { return dynamicAccesses.length > 0; } function consumeDynamicAccess(serverDynamic, clientDynamic) { // We mutate because we only call this once we are no longer writing // to the dynamicTrackingState and it's more efficient than creating a new // array. serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses); return serverDynamic.dynamicAccesses; } function formatDynamicAPIAccesses(dynamicAccesses) { return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{ stack = stack.split('\n') // Remove the "Error: " prefix from the first line of the stack trace as // well as the first 4 lines of the stack trace which is the distance // from the user code and the `new Error().stack` call. .slice(4).filter((line)=>{ // Exclude Next.js internals from the stack trace. if (line.includes('node_modules/next/')) { return false; } // Exclude anonymous functions from the stack trace. if (line.includes(' ()')) { return false; } // Exclude Node.js internals from the stack trace. if (line.includes(' (node:')) { return false; } return true; }).join('\n'); return `Dynamic API Usage Debug - ${expression}:\n${stack}`; }); } function assertPostpone() { if (!hasPostpone) { throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), "__NEXT_ERROR_CODE", { value: "E224", enumerable: false, configurable: true }); } } function createRenderInBrowserAbortSignal() { const controller = new AbortController(); controller.abort(Object.defineProperty(new _bailouttocsr.BailoutToCSRError('Render in Browser'), "__NEXT_ERROR_CODE", { value: "E721", enumerable: false, configurable: true })); return controller.signal; } function createHangingInputAbortSignal(workUnitStore) { switch(workUnitStore.type){ case 'prerender': case 'prerender-runtime': const controller = new AbortController(); if (workUnitStore.cacheSignal) { // If we have a cacheSignal it means we're in a prospective render. If // the input we're waiting on is coming from another cache, we do want // to wait for it so that we can resolve this cache entry too. workUnitStore.cacheSignal.inputReady().then(()=>{ controller.abort(); }); } else { // Otherwise we're in the final render and we should already have all // our caches filled. // If the prerender uses stages, we have wait until the runtime stage, // at which point all runtime inputs will be resolved. // (otherwise, a runtime prerender might consider `cookies()` hanging // even though they'd resolve in the next task.) // // We might still be waiting on some microtasks so we // wait one tick before giving up. When we give up, we still want to // render the content of this cache as deeply as we can so that we can // suspend as deeply as possible in the tree or not at all if we don't // end up waiting for the input. const runtimeStagePromise = (0, _workunitasyncstorageexternal.getRuntimeStagePromise)(workUnitStore); if (runtimeStagePromise) { runtimeStagePromise.then(()=>(0, _scheduler.scheduleOnNextTick)(()=>controller.abort())); } else { (0, _scheduler.scheduleOnNextTick)(()=>controller.abort()); } } return controller.signal; case 'prerender-client': case 'prerender-ppr': case 'prerender-legacy': case 'request': case 'cache': case 'private-cache': case 'unstable-cache': return undefined; default: workUnitStore; } } function annotateDynamicAccess(expression, prerenderStore) { const dynamicTracking = prerenderStore.dynamicTracking; if (dynamicTracking) { dynamicTracking.dynamicAccesses.push({ stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, expression }); } } function useDynamicRouteParams(expression) { const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); if (workStore && workUnitStore) { switch(workUnitStore.type){ case 'prerender-client': case 'prerender': { const fallbackParams = workUnitStore.fallbackRouteParams; if (fallbackParams && fallbackParams.size > 0) { // We are in a prerender with cacheComponents semantics. We are going to // hang here and never resolve. This will cause the currently // rendering component to effectively be a dynamic hole. _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression)); } break; } case 'prerender-ppr': { const fallbackParams = workUnitStore.fallbackRouteParams; if (fallbackParams && fallbackParams.size > 0) { return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking); } break; } case 'prerender-runtime': throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E771", enumerable: false, configurable: true }); case 'cache': case 'private-cache': throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E745", enumerable: false, configurable: true }); case 'prerender-legacy': case 'request': case 'unstable-cache': break; default: workUnitStore; } } } function useDynamicSearchParams(expression) { const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); if (!workStore) { // We assume pages router context and just return return; } if (!workUnitStore) { (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(expression); } switch(workUnitStore.type){ case 'prerender-client': { _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression)); break; } case 'prerender-legacy': case 'prerender-ppr': { if (workStore.forceStatic) { return; } throw Object.defineProperty(new _bailouttocsr.BailoutToCSRError(expression), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); } case 'prerender': case 'prerender-runtime': throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E795", enumerable: false, configurable: true }); case 'cache': case 'unstable-cache': case 'private-cache': throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { value: "E745", enumerable: false, configurable: true }); case 'request': return; default: workUnitStore; } } const hasSuspenseRegex = /\n\s+at Suspense \(\)/; // Common implicit body tags that React will treat as body when placed directly in html const bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'; // Detects when RootLayoutBoundary (our framework marker component) appears // after Suspense in the component stack, indicating the root layout is wrapped // within a Suspense boundary. Ensures no body/html/implicit-body components are in between. // // Example matches: // at Suspense () // at __next_root_layout_boundary__ () // // Or with other components in between (but not body/html/implicit-body): // at Suspense () // at SomeComponent () // at __next_root_layout_boundary__ () const hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\n\\s+at Suspense \\(\\)(?:(?!\\n\\s+at (?:${bodyAndImplicitTags}) \\(\\))[\\s\\S])*?\\n\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`); const hasMetadataRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\n\\s]`); const hasViewportRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`); const hasOutletRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\n\\s]`); function trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) { if (hasOutletRegex.test(componentStack)) { // We don't need to track that this is dynamic. It is only so when something else is also dynamic. return; } else if (hasMetadataRegex.test(componentStack)) { dynamicValidation.hasDynamicMetadata = true; return; } else if (hasViewportRegex.test(componentStack)) { dynamicValidation.hasDynamicViewport = true; return; } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. dynamicValidation.hasAllowedDynamic = true; dynamicValidation.hasSuspenseAboveBody = true; return; } else if (hasSuspenseRegex.test(componentStack)) { // this error had a Suspense boundary above it so we don't need to report it as a source // of disallowed dynamicValidation.hasAllowedDynamic = true; return; } else if (clientDynamic.syncDynamicErrorWithStack) { // This task was the task that called the sync error. dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); return; } else { const message = `Route "${workStore.route}": Uncached data was accessed outside of ` + '. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route'; const error = createErrorWithComponentOrOwnerStack(message, componentStack); dynamicValidation.dynamicErrors.push(error); return; } } /** * In dev mode, we prefer using the owner stack, otherwise the provided * component stack is used. */ function createErrorWithComponentOrOwnerStack(message, componentStack) { const ownerStack = ("TURBOPACK compile-time value", "development") !== 'production' && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null; const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); error.stack = error.name + ': ' + message + (ownerStack ?? componentStack); return error; } var PreludeState = /*#__PURE__*/ function(PreludeState) { PreludeState[PreludeState["Full"] = 0] = "Full"; PreludeState[PreludeState["Empty"] = 1] = "Empty"; PreludeState[PreludeState["Errored"] = 2] = "Errored"; return PreludeState; }({}); function logDisallowedDynamicError(workStore, error) { console.error(error); if (!workStore.dev) { if (workStore.hasReadableErrorStacks) { console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error.`); } else { console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following: - Start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error. - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`); } } } function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) { if (serverDynamic.syncDynamicErrorWithStack) { logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack); throw new _staticgenerationbailout.StaticGenBailoutError(); } if (prelude !== 0) { if (dynamicValidation.hasSuspenseAboveBody) { // This route has opted into allowing fully dynamic rendering // by including a Suspense boundary above the body. In this case // a lack of a shell is not considered disallowed so we simply return return; } // We didn't have any sync bailouts but there may be user code which // blocked the root. We would have captured these during the prerender // and can log them here and then terminate the build/validating render const dynamicErrors = dynamicValidation.dynamicErrors; if (dynamicErrors.length > 0) { for(let i = 0; i < dynamicErrors.length; i++){ logDisallowedDynamicError(workStore, dynamicErrors[i]); } throw new _staticgenerationbailout.StaticGenBailoutError(); } // If we got this far then the only other thing that could be blocking // the root is dynamic Viewport. If this is dynamic then // you need to opt into that by adding a Suspense boundary above the body // to indicate your are ok with fully dynamic rendering. if (dynamicValidation.hasDynamicViewport) { console.error(`Route "${workStore.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`); throw new _staticgenerationbailout.StaticGenBailoutError(); } if (prelude === 1) { // If we ever get this far then we messed up the tracking of invalid dynamic. // We still adhere to the constraint that you must produce a shell but invite the // user to report this as a bug in Next.js. console.error(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`); throw new _staticgenerationbailout.StaticGenBailoutError(); } } else { if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) { console.error(`Route "${workStore.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`); throw new _staticgenerationbailout.StaticGenBailoutError(); } } } function delayUntilRuntimeStage(prerenderStore, result) { if (prerenderStore.runtimeStagePromise) { return prerenderStore.runtimeStagePromise.then(()=>result); } return result; } //# sourceMappingURL=dynamic-rendering.js.map }), "[project]/node_modules/next/dist/server/request/utils.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { isRequestAPICallableInsideAfter: null, throwForSearchParamsAccessInUseCache: null, throwWithStaticGenerationBailoutErrorWithDynamicError: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { isRequestAPICallableInsideAfter: function() { return isRequestAPICallableInsideAfter; }, throwForSearchParamsAccessInUseCache: function() { return throwForSearchParamsAccessInUseCache; }, throwWithStaticGenerationBailoutErrorWithDynamicError: function() { return throwWithStaticGenerationBailoutErrorWithDynamicError; } }); const _staticgenerationbailout = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); const _aftertaskasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/after-task-async-storage.external.js [external] (next/dist/server/app-render/after-task-async-storage.external.js, cjs)"); function throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) { throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} with \`dynamic = "error"\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { value: "E543", enumerable: false, configurable: true }); } function throwForSearchParamsAccessInUseCache(workStore, constructorOpt) { const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { value: "E842", enumerable: false, configurable: true }); Error.captureStackTrace(error, constructorOpt); workStore.invalidDynamicUsageError ??= error; throw error; } function isRequestAPICallableInsideAfter() { const afterTaskStore = _aftertaskasyncstorageexternal.afterTaskAsyncStorage.getStore(); return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action'; } //# sourceMappingURL=utils.js.map }), "[project]/node_modules/next/dist/server/request/connection.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "connection", { enumerable: true, get: function() { return connection; } }); const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); const _dynamicrendering = __turbopack_context__.r("[project]/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); const _staticgenerationbailout = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); const _dynamicrenderingutils = __turbopack_context__.r("[project]/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); const _utils = __turbopack_context__.r("[project]/node_modules/next/dist/server/request/utils.js [app-route] (ecmascript)"); const _stagedrendering = __turbopack_context__.r("[project]/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)"); function connection() { const callingExpression = 'connection'; const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); if (workStore) { if (workUnitStore && workUnitStore.phase === 'after' && !(0, _utils.isRequestAPICallableInsideAfter)()) { throw Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside \`after()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but \`after()\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`), "__NEXT_ERROR_CODE", { value: "E827", enumerable: false, configurable: true }); } if (workStore.forceStatic) { // When using forceStatic, we override all other logic and always just // return a resolving promise without tracking. return Promise.resolve(undefined); } if (workStore.dynamicShouldError) { throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${workStore.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { value: "E847", enumerable: false, configurable: true }); } if (workUnitStore) { switch(workUnitStore.type){ case 'cache': { const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { value: "E841", enumerable: false, configurable: true }); Error.captureStackTrace(error, connection); workStore.invalidDynamicUsageError ??= error; throw error; } case 'private-cache': { // It might not be intuitive to throw for private caches as well, but // we don't consider runtime prefetches as "actual requests" (in the // navigation sense), despite allowing them to read cookies. const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { value: "E837", enumerable: false, configurable: true }); Error.captureStackTrace(error, connection); workStore.invalidDynamicUsageError ??= error; throw error; } case 'unstable-cache': throw Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside a function cached with \`unstable_cache()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`), "__NEXT_ERROR_CODE", { value: "E840", enumerable: false, configurable: true }); case 'prerender': case 'prerender-client': case 'prerender-runtime': // We return a promise that never resolves to allow the prerender to // stall at this point. return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`connection()`'); case 'prerender-ppr': // We use React's postpone API to interrupt rendering here to create a // dynamic hole return (0, _dynamicrendering.postponeWithTracking)(workStore.route, 'connection', workUnitStore.dynamicTracking); case 'prerender-legacy': // We throw an error here to interrupt prerendering to mark the route // as dynamic return (0, _dynamicrendering.throwToInterruptStaticGeneration)('connection', workStore, workUnitStore); case 'request': (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore); if ("TURBOPACK compile-time truthy", 1) { // Semantically we only need the dev tracking when running in `next dev` // but since you would never use next dev with production NODE_ENV we use this // as a proxy so we can statically exclude this code from production builds. if (workUnitStore.asyncApiPromises) { return workUnitStore.asyncApiPromises.connection; } return (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(undefined, workUnitStore, _stagedrendering.RenderStage.Dynamic); } else //TURBOPACK unreachable ; default: workUnitStore; } } } // If we end up here, there was no work store or work unit store present. (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(callingExpression); } //# sourceMappingURL=connection.js.map }), "[project]/node_modules/next/server.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { const serverExports = { NextRequest: __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/request.js [app-route] (ecmascript)").NextRequest, NextResponse: __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/response.js [app-route] (ecmascript)").NextResponse, ImageResponse: __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/image-response.js [app-route] (ecmascript)").ImageResponse, userAgentFromString: __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/user-agent.js [app-route] (ecmascript)").userAgentFromString, userAgent: __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/user-agent.js [app-route] (ecmascript)").userAgent, URLPattern: __turbopack_context__.r("[project]/node_modules/next/dist/server/web/spec-extension/url-pattern.js [app-route] (ecmascript)").URLPattern, after: __turbopack_context__.r("[project]/node_modules/next/dist/server/after/index.js [app-route] (ecmascript)").after, connection: __turbopack_context__.r("[project]/node_modules/next/dist/server/request/connection.js [app-route] (ecmascript)").connection }; // https://nodejs.org/api/esm.html#commonjs-namespaces // When importing CommonJS modules, the module.exports object is provided as the default export module.exports = serverExports; // make import { xxx } from 'next/server' work exports.NextRequest = serverExports.NextRequest; exports.NextResponse = serverExports.NextResponse; exports.ImageResponse = serverExports.ImageResponse; exports.userAgentFromString = serverExports.userAgentFromString; exports.userAgent = serverExports.userAgent; exports.URLPattern = serverExports.URLPattern; exports.after = serverExports.after; exports.connection = serverExports.connection; }), "[project]/node_modules/next/dist/esm/build/templates/app-route.js { INNER_APP_ROUTE => \"[project]/app/api/config/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "handler", ()=>handler, "patchFetch", ()=>patchFetch, "routeModule", ()=>routeModule, "serverHooks", ()=>serverHooks, "workAsyncStorage", ()=>workAsyncStorage, "workUnitAsyncStorage", ()=>workUnitAsyncStorage ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$app$2d$route$2f$module$2e$compiled$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-modules/app-route/module.compiled.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-kind.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$patch$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/patch-fetch.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/request-meta.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$encryption$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/app-render/encryption-utils.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$action$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/app-render/action-utils.js [app-route] (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$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$node$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/base-http/node.js [app-route] (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$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/instrumentation/utils.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/send-response.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/utils.js [app-route] (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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/cache-control.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [app-route] (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$server$2f$response$2d$cache$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/index.js [app-route] (ecmascript) "); 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$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$app$2f$api$2f$config$2f$route$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/app/api/config/route.ts [app-route] (ecmascript)"); ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = ""; const routeModule = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$app$2d$route$2f$module$2e$compiled$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["AppRouteRouteModule"]({ 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$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].APP_ROUTE, page: "/api/config/route", pathname: "/api/config", filename: "route", bundlePath: "" }, distDir: ("TURBOPACK compile-time value", ".next/dev") || '', relativeProjectDir: ("TURBOPACK compile-time value", "") || '', resolvedPagePath: "[project]/app/api/config/route.ts", nextConfigOutput, userland: __TURBOPACK__imported__module__$5b$project$5d2f$app$2f$api$2f$config$2f$route$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$patch$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["patchFetch"])({ workAsyncStorage, workUnitAsyncStorage }); } ; async function handler(req, res, ctx) { 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$app$2d$route$5d$__$28$ecmascript$29$__["addRequestMeta"])(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint()); } let srcPage = "/api/config/route"; // 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 null; } const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult; const normalizedSrcPage = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); 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'); } return null; }; if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { if (nextConfig.experimental.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"](); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isStaticGeneration = isIsr && !supportsDynamicResponse; // Before rendering (which initializes component tree modules), we have to // set the reference manifests to our global store so Server Action's // encryption util can access to them at the top level of the page module. if (serverActionsManifest && clientReferenceManifest) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$encryption$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["setReferenceManifestsSingleton"])({ page: srcPage, clientReferenceManifest, serverActionsManifest, serverModuleMap: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$action$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createServerModuleMap"])({ serverActionsManifest }) }); } const method = req.method || 'GET'; 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$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, cacheComponents: Boolean(nextConfig.cacheComponents), supportsDynamicResponse, incrementalCache: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'incrementalCache'), cacheLifeProfiles: nextConfig.cacheLife, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$node$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NodeNextRequest"](req); const nodeNextRes = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$node$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NodeNextResponse"](res); const nextReq = __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$app$2d$route$5d$__$28$ecmascript$29$__["NextRequestAdapter"].fromNodeNextRequest(nodeNextReq, (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$app$2d$route$5d$__$28$ecmascript$29$__["signalFromNodeResponse"])(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).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$app$2d$route$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); } else { span.updateName(`${method} ${srcPage}`); } }); }; const isMinimalMode = Boolean(("TURBOPACK compile-time value", false) || (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'minimalMode')); const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { 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; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const 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$app$2d$route$5d$__$28$ecmascript$29$__["toNodeOutgoingHttpHeaders"])(response.headers); if (cacheTags) { headers[__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAGS_HEADER"]] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"] ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"] ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const 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$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["sendResponse"])(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } 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) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', 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$app$2d$route$5d$__$28$ecmascript$29$__["getRevalidateReason"])({ isStaticGeneration, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil, isMinimalMode }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_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$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!isMinimalMode) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const 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$app$2d$route$5d$__$28$ecmascript$29$__["fromNodeOutgoingHttpHeaders"])(cacheEntry.value.headers); if (!(isMinimalMode && isIsr)) { headers.delete(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAGS_HEADER"]); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('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$app$2d$route$5d$__$28$ecmascript$29$__["getCacheControlHeader"])(cacheEntry.cacheControl)); } await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["sendResponse"])(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { 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$app$2d$route$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$app$2d$route$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"])) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', 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$app$2d$route$5d$__$28$ecmascript$29$__["getRevalidateReason"])({ isStaticGeneration, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["sendResponse"])(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map }), ]; //# sourceMappingURL=node_modules_next_9048f309._.js.map