next 15.4.0-canary.72 → 15.4.0-canary.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +2 -2
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/webpack-config.js +2 -2
  5. package/dist/client/app-bootstrap.js +1 -1
  6. package/dist/client/index.js +1 -1
  7. package/dist/compiled/next-devtools/index.js +1 -1
  8. package/dist/compiled/next-devtools/index.js.map +1 -1
  9. package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js +1 -1
  10. package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js.map +1 -1
  11. package/dist/compiled/next-server/pages-api.runtime.prod.js +1 -1
  12. package/dist/compiled/next-server/pages-api.runtime.prod.js.map +1 -1
  13. package/dist/compiled/next-server/pages-turbo.runtime.dev.js +2 -2
  14. package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
  15. package/dist/compiled/next-server/pages.runtime.prod.js +2 -2
  16. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  17. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  18. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  19. package/dist/esm/build/index.js +2 -2
  20. package/dist/esm/build/swc/index.js +1 -1
  21. package/dist/esm/build/webpack-config.js +2 -2
  22. package/dist/esm/client/app-bootstrap.js +1 -1
  23. package/dist/esm/client/index.js +1 -1
  24. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  25. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  26. package/dist/esm/server/lib/app-info-log.js +1 -1
  27. package/dist/esm/server/lib/start-server.js +1 -1
  28. package/dist/esm/server/lib/streaming-metadata.js +5 -2
  29. package/dist/esm/server/lib/streaming-metadata.js.map +1 -1
  30. package/dist/esm/shared/lib/canary-only.js +1 -1
  31. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  32. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  33. package/dist/server/lib/app-info-log.js +1 -1
  34. package/dist/server/lib/start-server.js +1 -1
  35. package/dist/server/lib/streaming-metadata.js +5 -2
  36. package/dist/server/lib/streaming-metadata.js.map +1 -1
  37. package/dist/shared/lib/canary-only.js +1 -1
  38. package/dist/telemetry/anonymous-meta.js +1 -1
  39. package/dist/telemetry/events/session-stopped.js +2 -2
  40. package/dist/telemetry/events/version.js +2 -2
  41. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"pages-api.runtime.prod.js","sources":["webpack://next/./dist/compiled/@edge-runtime/cookies/index.js","webpack://next/./dist/compiled/bytes/index.js","webpack://next/./dist/compiled/content-type/index.js","webpack://next/./dist/compiled/cookie/index.js","webpack://next/./dist/compiled/fresh/index.js","webpack://next/./dist/compiled/path-to-regexp/index.js","webpack://next/./dist/src/lib/constants.ts","webpack://next/./dist/src/server/api-utils/index.ts","webpack://next/./dist/src/server/api-utils/node/try-get-preview-data.ts","webpack://next/./dist/src/server/crypto-utils.ts","webpack://next/./dist/src/server/lib/trace/constants.ts","webpack://next/./dist/src/server/web/spec-extension/adapters/reflect.ts","webpack://next/./dist/src/server/web/spec-extension/adapters/headers.ts","webpack://next/./dist/src/shared/lib/modern-browserslist-target.js","webpack://next/./dist/compiled/superstruct/index.cjs","webpack://next/webpack/runtime/compat_get_default_export","webpack://next/webpack/runtime/create_fake_namespace_object","webpack://next/webpack/runtime/define_property_getters","webpack://next/webpack/runtime/has_own_property","webpack://next/webpack/runtime/make_namespace_object","webpack://next/./dist/src/shared/lib/constants.ts","webpack://next/./dist/src/lib/url.ts","webpack://next/./dist/src/shared/lib/i18n/normalize-locale-path.ts","webpack://next/./dist/src/shared/lib/page-path/ensure-leading-slash.ts","webpack://next/./dist/src/shared/lib/router/utils/app-paths.ts","webpack://next/./dist/src/shared/lib/router/utils/interception-routes.ts","webpack://next/./dist/src/shared/lib/router/utils/is-dynamic.ts","webpack://next/./dist/src/shared/lib/segment.ts","webpack://next/./dist/src/shared/lib/router/utils/path-has-prefix.ts","webpack://next/./dist/src/shared/lib/router/utils/parse-path.ts","webpack://next/./dist/src/shared/lib/escape-regexp.ts","webpack://next/./dist/src/shared/lib/router/utils/remove-trailing-slash.ts","webpack://next/./dist/src/shared/lib/router/utils/route-regex.ts","webpack://next/./dist/src/shared/lib/utils.ts","webpack://next/./dist/src/shared/lib/router/utils/route-matcher.ts","webpack://next/./dist/src/shared/lib/router/utils/querystring.ts","webpack://next/./dist/src/server/api-utils/get-cookie-parser.ts","webpack://next/./dist/src/shared/lib/router/utils/prepare-destination.ts","webpack://next/./dist/src/server/web/utils.ts","webpack://next/./dist/src/server/lib/decode-query-path-parameter.ts","webpack://next/./dist/src/shared/lib/router/utils/format-url.ts","webpack://next/./dist/src/server/app-render/types.ts","webpack://next/./dist/src/client/components/router-reducer/compute-changed-path.ts","webpack://next/./dist/src/server/server-utils.ts","webpack://next/./dist/src/shared/lib/page-path/normalize-data-path.ts","webpack://next/./dist/src/server/request-meta.ts","webpack://next/./dist/src/lib/metadata/is-metadata-route.ts","webpack://next/./dist/src/server/route-modules/route-module.ts","webpack://next/./dist/src/shared/lib/page-path/normalize-page-path.ts","webpack://next/./dist/src/lib/is-app-route-route.ts","webpack://next/./dist/src/shared/lib/page-path/normalize-path-sep.ts","webpack://next/./dist/src/shared/lib/router/utils/remove-path-prefix.ts","webpack://next/./dist/src/shared/lib/router/utils/path-match.ts","webpack://next/./dist/src/lib/generate-interception-routes-rewrites.ts","webpack://next/./dist/src/client/components/app-router-headers.ts","webpack://next/./dist/src/server/app-render/parse-and-validate-flight-router-state.tsx","webpack://next/./dist/src/shared/lib/router/utils/parse-url.ts","webpack://next/./dist/src/shared/lib/router/utils/parse-relative-url.ts","webpack://next/./dist/src/shared/lib/i18n/detect-domain-locale.ts","webpack://next/./dist/src/shared/lib/get-hostname.ts","webpack://next/./dist/src/server/lib/etag.ts","webpack://next/./dist/src/lib/is-error.ts","webpack://next/./dist/src/server/api-utils/node/parse-body.ts","webpack://next/./dist/src/server/lib/router-utils/router-server-context.ts","webpack://next/./dist/src/server/api-utils/node/api-resolver.ts","webpack://next/./dist/src/server/send-payload.ts","webpack://next/./dist/src/lib/interop-default.ts","webpack://next/./dist/src/server/route-modules/pages-api/module.ts"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestCookies,\n ResponseCookies,\n parseCookie,\n parseSetCookie,\n stringifyCookie\n});\n","(()=>{\"use strict\";var e={56:e=>{\n/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\ne.exports=bytes;e.exports.format=format;e.exports.parse=parse;var r=/\\B(?=(\\d{3})+(?!\\d))/g;var a=/(?:\\.0*|(\\.[^0]+)0+)$/;var t={b:1,kb:1<<10,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)};var i=/^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;function bytes(e,r){if(typeof e===\"string\"){return parse(e)}if(typeof e===\"number\"){return format(e,r)}return null}function format(e,i){if(!Number.isFinite(e)){return null}var n=Math.abs(e);var o=i&&i.thousandsSeparator||\"\";var s=i&&i.unitSeparator||\"\";var f=i&&i.decimalPlaces!==undefined?i.decimalPlaces:2;var u=Boolean(i&&i.fixedDecimals);var p=i&&i.unit||\"\";if(!p||!t[p.toLowerCase()]){if(n>=t.pb){p=\"PB\"}else if(n>=t.tb){p=\"TB\"}else if(n>=t.gb){p=\"GB\"}else if(n>=t.mb){p=\"MB\"}else if(n>=t.kb){p=\"KB\"}else{p=\"B\"}}var b=e/t[p.toLowerCase()];var l=b.toFixed(f);if(!u){l=l.replace(a,\"$1\")}if(o){l=l.split(\".\").map((function(e,a){return a===0?e.replace(r,o):e})).join(\".\")}return l+s+p}function parse(e){if(typeof e===\"number\"&&!isNaN(e)){return e}if(typeof e!==\"string\"){return null}var r=i.exec(e);var a;var n=\"b\";if(!r){a=parseInt(e,10);n=\"b\"}else{a=parseFloat(r[1]);n=r[4].toLowerCase()}return Math.floor(t[n]*a)}}};var r={};function __nccwpck_require__(a){var t=r[a];if(t!==undefined){return t.exports}var i=r[a]={exports:{}};var n=true;try{e[a](i,i.exports,__nccwpck_require__);n=false}finally{if(n)delete r[a]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var a=__nccwpck_require__(56);module.exports=a})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */var t=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g;var a=/^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/;var n=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;var i=/\\\\([\\u000b\\u0020-\\u00ff])/g;var o=/([\\\\\"])/g;var f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;r.format=format;r.parse=parse;function format(e){if(!e||typeof e!==\"object\"){throw new TypeError(\"argument obj is required\")}var r=e.parameters;var t=e.type;if(!t||!f.test(t)){throw new TypeError(\"invalid type\")}var a=t;if(r&&typeof r===\"object\"){var i;var o=Object.keys(r).sort();for(var u=0;u<o.length;u++){i=o[u];if(!n.test(i)){throw new TypeError(\"invalid parameter name\")}a+=\"; \"+i+\"=\"+qstring(r[i])}}return a}function parse(e){if(!e){throw new TypeError(\"argument string is required\")}var r=typeof e===\"object\"?getcontenttype(e):e;if(typeof r!==\"string\"){throw new TypeError(\"argument string is required to be a string\")}var a=r.indexOf(\";\");var n=a!==-1?r.substr(0,a).trim():r.trim();if(!f.test(n)){throw new TypeError(\"invalid media type\")}var o=new ContentType(n.toLowerCase());if(a!==-1){var u;var p;var s;t.lastIndex=a;while(p=t.exec(r)){if(p.index!==a){throw new TypeError(\"invalid parameter format\")}a+=p[0].length;u=p[1].toLowerCase();s=p[2];if(s[0]==='\"'){s=s.substr(1,s.length-2).replace(i,\"$1\")}o.parameters[u]=s}if(a!==r.length){throw new TypeError(\"invalid parameter format\")}}return o}function getcontenttype(e){var r;if(typeof e.getHeader===\"function\"){r=e.getHeader(\"content-type\")}else if(typeof e.headers===\"object\"){r=e.headers&&e.headers[\"content-type\"]}if(typeof r!==\"string\"){throw new TypeError(\"content-type header is missing from object\")}return r}function qstring(e){var r=String(e);if(n.test(r)){return r}if(r.length>0&&!a.test(r)){throw new TypeError(\"invalid parameter value\")}return'\"'+r.replace(o,\"\\\\$1\")+'\"'}function ContentType(e){this.parameters=Object.create(null);this.type=e}})();module.exports=e})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */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})();","(()=>{\"use strict\";var e={695:e=>{\n/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\nvar r=/(?:^|,)\\s*?no-cache\\s*?(?:,|$)/;e.exports=fresh;function fresh(e,a){var t=e[\"if-modified-since\"];var s=e[\"if-none-match\"];if(!t&&!s){return false}var i=e[\"cache-control\"];if(i&&r.test(i)){return false}if(s&&s!==\"*\"){var f=a[\"etag\"];if(!f){return false}var n=true;var u=parseTokenList(s);for(var _=0;_<u.length;_++){var o=u[_];if(o===f||o===\"W/\"+f||\"W/\"+o===f){n=false;break}}if(n){return false}}if(t){var p=a[\"last-modified\"];var v=!p||!(parseHttpDate(p)<=parseHttpDate(t));if(v){return false}}return true}function parseHttpDate(e){var r=e&&Date.parse(e);return typeof r===\"number\"?r:NaN}function parseTokenList(e){var r=0;var a=[];var t=0;for(var s=0,i=e.length;s<i;s++){switch(e.charCodeAt(s)){case 32:if(t===r){t=r=s+1}break;case 44:a.push(e.substring(t,r));t=r=s+1;break;default:r=s+1;break}}a.push(e.substring(t,r));return a}}};var r={};function __nccwpck_require__(a){var t=r[a];if(t!==undefined){return t.exports}var s=r[a]={exports:{}};var i=true;try{e[a](s,s.exports,__nccwpck_require__);i=false}finally{if(i)delete r[a]}return s.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var a=__nccwpck_require__(695);module.exports=a})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;Object.defineProperty(r,\"__esModule\",{value:true});function lexer(e){var r=[];var n=0;while(n<e.length){var t=e[n];if(t===\"*\"||t===\"+\"||t===\"?\"){r.push({type:\"MODIFIER\",index:n,value:e[n++]});continue}if(t===\"\\\\\"){r.push({type:\"ESCAPED_CHAR\",index:n++,value:e[n++]});continue}if(t===\"{\"){r.push({type:\"OPEN\",index:n,value:e[n++]});continue}if(t===\"}\"){r.push({type:\"CLOSE\",index:n,value:e[n++]});continue}if(t===\":\"){var i=\"\";var a=n+1;while(a<e.length){var o=e.charCodeAt(a);if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){i+=e[a++];continue}break}if(!i)throw new TypeError(\"Missing parameter name at \"+n);r.push({type:\"NAME\",index:n,value:i});n=a;continue}if(t===\"(\"){var f=1;var u=\"\";var a=n+1;if(e[a]===\"?\"){throw new TypeError('Pattern cannot start with \"?\" at '+a)}while(a<e.length){if(e[a]===\"\\\\\"){u+=e[a++]+e[a++];continue}if(e[a]===\")\"){f--;if(f===0){a++;break}}else if(e[a]===\"(\"){f++;if(e[a+1]!==\"?\"){throw new TypeError(\"Capturing groups are not allowed at \"+a)}}u+=e[a++]}if(f)throw new TypeError(\"Unbalanced pattern at \"+n);if(!u)throw new TypeError(\"Missing pattern at \"+n);r.push({type:\"PATTERN\",index:n,value:u});n=a;continue}r.push({type:\"CHAR\",index:n,value:e[n++]})}r.push({type:\"END\",index:n,value:\"\"});return r}function parse(e,r){if(r===void 0){r={}}var n=lexer(e);var t=r.prefixes,i=t===void 0?\"./\":t;var a=\"[^\"+escapeString(r.delimiter||\"/#?\")+\"]+?\";var o=[];var f=0;var u=0;var p=\"\";var tryConsume=function(e){if(u<n.length&&n[u].type===e)return n[u++].value};var mustConsume=function(e){var r=tryConsume(e);if(r!==undefined)return r;var t=n[u],i=t.type,a=t.index;throw new TypeError(\"Unexpected \"+i+\" at \"+a+\", expected \"+e)};var consumeText=function(){var e=\"\";var r;while(r=tryConsume(\"CHAR\")||tryConsume(\"ESCAPED_CHAR\")){e+=r}return e};while(u<n.length){var v=tryConsume(\"CHAR\");var c=tryConsume(\"NAME\");var s=tryConsume(\"PATTERN\");if(c||s){var d=v||\"\";if(i.indexOf(d)===-1){p+=d;d=\"\"}if(p){o.push(p);p=\"\"}o.push({name:c||f++,prefix:d,suffix:\"\",pattern:s||a,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}var g=v||tryConsume(\"ESCAPED_CHAR\");if(g){p+=g;continue}if(p){o.push(p);p=\"\"}var x=tryConsume(\"OPEN\");if(x){var d=consumeText();var l=tryConsume(\"NAME\")||\"\";var h=tryConsume(\"PATTERN\")||\"\";var m=consumeText();mustConsume(\"CLOSE\");o.push({name:l||(h?f++:\"\"),pattern:l&&!h?a:h,prefix:d,suffix:m,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}mustConsume(\"END\")}return o}r.parse=parse;function compile(e,r){return tokensToFunction(parse(e,r),r)}r.compile=compile;function tokensToFunction(e,r){if(r===void 0){r={}}var n=flags(r);var t=r.encode,i=t===void 0?function(e){return e}:t,a=r.validate,o=a===void 0?true:a;var f=e.map((function(e){if(typeof e===\"object\"){return new RegExp(\"^(?:\"+e.pattern+\")$\",n)}}));return function(r){var n=\"\";for(var t=0;t<e.length;t++){var a=e[t];if(typeof a===\"string\"){n+=a;continue}var u=r?r[a.name]:undefined;var p=a.modifier===\"?\"||a.modifier===\"*\";var v=a.modifier===\"*\"||a.modifier===\"+\";if(Array.isArray(u)){if(!v){throw new TypeError('Expected \"'+a.name+'\" to not repeat, but got an array')}if(u.length===0){if(p)continue;throw new TypeError('Expected \"'+a.name+'\" to not be empty')}for(var c=0;c<u.length;c++){var s=i(u[c],a);if(o&&!f[t].test(s)){throw new TypeError('Expected all \"'+a.name+'\" to match \"'+a.pattern+'\", but got \"'+s+'\"')}n+=a.prefix+s+a.suffix}continue}if(typeof u===\"string\"||typeof u===\"number\"){var s=i(String(u),a);if(o&&!f[t].test(s)){throw new TypeError('Expected \"'+a.name+'\" to match \"'+a.pattern+'\", but got \"'+s+'\"')}n+=a.prefix+s+a.suffix;continue}if(p)continue;var d=v?\"an array\":\"a string\";throw new TypeError('Expected \"'+a.name+'\" to be '+d)}return n}}r.tokensToFunction=tokensToFunction;function match(e,r){var n=[];var t=pathToRegexp(e,n,r);return regexpToFunction(t,n,r)}r.match=match;function regexpToFunction(e,r,n){if(n===void 0){n={}}var t=n.decode,i=t===void 0?function(e){return e}:t;return function(n){var t=e.exec(n);if(!t)return false;var a=t[0],o=t.index;var f=Object.create(null);var _loop_1=function(e){if(t[e]===undefined)return\"continue\";var n=r[e-1];if(n.modifier===\"*\"||n.modifier===\"+\"){f[n.name]=t[e].split(n.prefix+n.suffix).map((function(e){return i(e,n)}))}else{f[n.name]=i(t[e],n)}};for(var u=1;u<t.length;u++){_loop_1(u)}return{path:a,index:o,params:f}}}r.regexpToFunction=regexpToFunction;function escapeString(e){return e.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g,\"\\\\$1\")}function flags(e){return e&&e.sensitive?\"\":\"i\"}function regexpToRegexp(e,r){if(!r)return e;var n=e.source.match(/\\((?!\\?)/g);if(n){for(var t=0;t<n.length;t++){r.push({name:t,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"})}}return e}function arrayToRegexp(e,r,n){var t=e.map((function(e){return pathToRegexp(e,r,n).source}));return new RegExp(\"(?:\"+t.join(\"|\")+\")\",flags(n))}function stringToRegexp(e,r,n){return tokensToRegexp(parse(e,n),r,n)}function tokensToRegexp(e,r,n){if(n===void 0){n={}}var t=n.strict,i=t===void 0?false:t,a=n.start,o=a===void 0?true:a,f=n.end,u=f===void 0?true:f,p=n.encode,v=p===void 0?function(e){return e}:p;var c=\"[\"+escapeString(n.endsWith||\"\")+\"]|$\";var s=\"[\"+escapeString(n.delimiter||\"/#?\")+\"]\";var d=o?\"^\":\"\";for(var g=0,x=e;g<x.length;g++){var l=x[g];if(typeof l===\"string\"){d+=escapeString(v(l))}else{var h=escapeString(v(l.prefix));var m=escapeString(v(l.suffix));if(l.pattern){if(r)r.push(l);if(h||m){if(l.modifier===\"+\"||l.modifier===\"*\"){var E=l.modifier===\"*\"?\"?\":\"\";d+=\"(?:\"+h+\"((?:\"+l.pattern+\")(?:\"+m+h+\"(?:\"+l.pattern+\"))*)\"+m+\")\"+E}else{d+=\"(?:\"+h+\"(\"+l.pattern+\")\"+m+\")\"+l.modifier}}else{d+=\"(\"+l.pattern+\")\"+l.modifier}}else{d+=\"(?:\"+h+m+\")\"+l.modifier}}}if(u){if(!i)d+=s+\"?\";d+=!n.endsWith?\"$\":\"(?=\"+c+\")\"}else{var T=e[e.length-1];var y=typeof T===\"string\"?s.indexOf(T[T.length-1])>-1:T===undefined;if(!i){d+=\"(?:\"+s+\"(?=\"+c+\"))?\"}if(!y){d+=\"(?=\"+s+\"|\"+c+\")\"}}return new RegExp(d,flags(n))}r.tokensToRegexp=tokensToRegexp;function pathToRegexp(e,r,n){if(e instanceof RegExp)return regexpToRegexp(e,r);if(Array.isArray(e))return arrayToRegexp(e,r,n);return stringToRegexp(e,r,n)}r.pathToRegexp=pathToRegexp})();module.exports=e})();","import type { ServerRuntime } from '../types'\n\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_PREFETCH_SUFFIX = '.prefetch.rsc'\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\n\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport 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`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport 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`\n\nexport 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`\n\nexport 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`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record<string, ServerRuntime> = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n","import type { IncomingMessage } from 'http'\nimport type { BaseNextRequest } from '../base-http'\nimport type { CookieSerializeOptions } from 'next/dist/compiled/cookie'\nimport type { NextApiResponse } from '../../shared/lib/utils'\n\nimport { HeadersAdapter } from '../web/spec-extension/adapters/headers'\nimport {\n PRERENDER_REVALIDATE_HEADER,\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER,\n} from '../../lib/constants'\nimport { getTracer } from '../lib/trace/tracer'\nimport { NodeSpan } from '../lib/trace/constants'\n\nexport type NextApiRequestCookies = Partial<{ [key: string]: string }>\nexport type NextApiRequestQuery = Partial<{ [key: string]: string | string[] }>\n\nexport type __ApiPreviewProps = {\n previewModeId: string\n previewModeEncryptionKey: string\n previewModeSigningKey: string\n}\n\nexport function wrapApiHandler<T extends (...args: any[]) => any>(\n page: string,\n handler: T\n): T {\n return ((...args) => {\n getTracer().setRootSpanAttribute('next.route', page)\n // Call API route method\n return getTracer().trace(\n NodeSpan.runHandler,\n {\n spanName: `executing api route (pages) ${page}`,\n },\n () => handler(...args)\n )\n }) as T\n}\n\n/**\n *\n * @param res response object\n * @param statusCode `HTTP` status code of response\n */\nexport function sendStatusCode(\n res: NextApiResponse,\n statusCode: number\n): NextApiResponse<any> {\n res.statusCode = statusCode\n return res\n}\n\n/**\n *\n * @param res response object\n * @param [statusOrUrl] `HTTP` status code of redirect\n * @param url URL of redirect\n */\nexport function redirect(\n res: NextApiResponse,\n statusOrUrl: string | number,\n url?: string\n): NextApiResponse<any> {\n if (typeof statusOrUrl === 'string') {\n url = statusOrUrl\n statusOrUrl = 307\n }\n if (typeof statusOrUrl !== 'number' || typeof url !== 'string') {\n throw new Error(\n `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').`\n )\n }\n res.writeHead(statusOrUrl, { Location: url })\n res.write(url)\n res.end()\n return res\n}\n\nexport function checkIsOnDemandRevalidate(\n req: Request | IncomingMessage | BaseNextRequest,\n previewProps: __ApiPreviewProps\n): {\n isOnDemandRevalidate: boolean\n revalidateOnlyGenerated: boolean\n} {\n const headers = HeadersAdapter.from(req.headers)\n\n const previewModeId = headers.get(PRERENDER_REVALIDATE_HEADER)\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId\n\n const revalidateOnlyGenerated = headers.has(\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER\n )\n\n return { isOnDemandRevalidate, revalidateOnlyGenerated }\n}\n\nexport const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`\nexport const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`\n\nexport const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024\n\nexport const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA)\nexport const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS)\n\nexport function clearPreviewData<T>(\n res: NextApiResponse<T>,\n options: {\n path?: string\n } = {}\n): NextApiResponse<T> {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res\n }\n\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n ])\n\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false,\n })\n return res\n}\n\n/**\n * Custom error class\n */\nexport class ApiError extends Error {\n readonly statusCode: number\n\n constructor(statusCode: number, message: string) {\n super(message)\n this.statusCode = statusCode\n }\n}\n\n/**\n * Sends error in `response`\n * @param res response object\n * @param statusCode of response\n * @param message of response\n */\nexport function sendError(\n res: NextApiResponse,\n statusCode: number,\n message: string\n): void {\n res.statusCode = statusCode\n res.statusMessage = message\n res.end(message)\n}\n\ninterface LazyProps {\n req: IncomingMessage\n}\n\n/**\n * Execute getter function only if its needed\n * @param LazyProps `req` and `params` for lazyProp\n * @param prop name of property\n * @param getter function to get data\n */\nexport function setLazyProp<T>(\n { req }: LazyProps,\n prop: string,\n getter: () => T\n): void {\n const opts = { configurable: true, enumerable: true }\n const optsReset = { ...opts, writable: true }\n\n Object.defineProperty(req, prop, {\n ...opts,\n get: () => {\n const value = getter()\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, { ...optsReset, value })\n return value\n },\n set: (value) => {\n Object.defineProperty(req, prop, { ...optsReset, value })\n },\n })\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextApiResponse } from '../../../shared/lib/utils'\nimport { checkIsOnDemandRevalidate } from '../.'\nimport type { __ApiPreviewProps } from '../.'\nimport type { BaseNextRequest, BaseNextResponse } from '../../base-http'\nimport type { PreviewData } from '../../../types'\n\nimport {\n clearPreviewData,\n COOKIE_NAME_PRERENDER_BYPASS,\n COOKIE_NAME_PRERENDER_DATA,\n SYMBOL_PREVIEW_DATA,\n} from '../index'\nimport { RequestCookies } from '../../web/spec-extension/cookies'\nimport { HeadersAdapter } from '../../web/spec-extension/adapters/headers'\n\nexport function tryGetPreviewData(\n req: IncomingMessage | BaseNextRequest | Request,\n res: ServerResponse | BaseNextResponse,\n options: __ApiPreviewProps,\n multiZoneDraftMode: boolean\n): PreviewData {\n // if an On-Demand revalidation is being done preview mode\n // is disabled\n if (options && checkIsOnDemandRevalidate(req, options).isOnDemandRevalidate) {\n return false\n }\n\n // Read cached preview data if present\n // TODO: use request metadata instead of a symbol\n if (SYMBOL_PREVIEW_DATA in req) {\n return (req as any)[SYMBOL_PREVIEW_DATA] as any\n }\n\n const headers = HeadersAdapter.from(req.headers)\n const cookies = new RequestCookies(headers)\n\n const previewModeId = cookies.get(COOKIE_NAME_PRERENDER_BYPASS)?.value\n const tokenPreviewData = cookies.get(COOKIE_NAME_PRERENDER_DATA)?.value\n\n // Case: preview mode cookie set but data cookie is not set\n if (\n previewModeId &&\n !tokenPreviewData &&\n previewModeId === options.previewModeId\n ) {\n // This is \"Draft Mode\" which doesn't use\n // previewData, so we return an empty object\n // for backwards compat with \"Preview Mode\".\n const data = {}\n Object.defineProperty(req, SYMBOL_PREVIEW_DATA, {\n value: data,\n enumerable: false,\n })\n return data\n }\n\n // Case: neither cookie is set.\n if (!previewModeId && !tokenPreviewData) {\n return false\n }\n\n // Case: one cookie is set, but not the other.\n if (!previewModeId || !tokenPreviewData) {\n if (!multiZoneDraftMode) {\n clearPreviewData(res as NextApiResponse)\n }\n return false\n }\n\n // Case: preview session is for an old build.\n if (previewModeId !== options.previewModeId) {\n if (!multiZoneDraftMode) {\n clearPreviewData(res as NextApiResponse)\n }\n return false\n }\n\n let encryptedPreviewData: {\n data: string\n }\n try {\n const jsonwebtoken =\n require('next/dist/compiled/jsonwebtoken') as typeof import('next/dist/compiled/jsonwebtoken')\n encryptedPreviewData = jsonwebtoken.verify(\n tokenPreviewData,\n options.previewModeSigningKey\n ) as typeof encryptedPreviewData\n } catch {\n // TODO: warn\n clearPreviewData(res as NextApiResponse)\n return false\n }\n\n const { decryptWithSecret } =\n require('../../crypto-utils') as typeof import('../../crypto-utils')\n const decryptedPreviewData = decryptWithSecret(\n Buffer.from(options.previewModeEncryptionKey),\n encryptedPreviewData.data\n )\n\n try {\n // TODO: strict runtime type checking\n const data = JSON.parse(decryptedPreviewData)\n // Cache lookup\n Object.defineProperty(req, SYMBOL_PREVIEW_DATA, {\n value: data,\n enumerable: false,\n })\n return data\n } catch {\n return false\n }\n}\n","import crypto from 'crypto'\n\n// Background:\n// https://security.stackexchange.com/questions/184305/why-would-i-ever-use-aes-256-cbc-if-aes-256-gcm-is-more-secure\n\nconst CIPHER_ALGORITHM = `aes-256-gcm`,\n CIPHER_KEY_LENGTH = 32, // https://stackoverflow.com/a/28307668/4397028\n CIPHER_IV_LENGTH = 16, // https://stackoverflow.com/a/28307668/4397028\n CIPHER_TAG_LENGTH = 16,\n CIPHER_SALT_LENGTH = 64\n\nconst PBKDF2_ITERATIONS = 100_000 // https://support.1password.com/pbkdf2/\n\nexport function encryptWithSecret(secret: Buffer, data: string): string {\n const iv = crypto.randomBytes(CIPHER_IV_LENGTH)\n const salt = crypto.randomBytes(CIPHER_SALT_LENGTH)\n\n // https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest\n const key = crypto.pbkdf2Sync(\n secret,\n salt,\n PBKDF2_ITERATIONS,\n CIPHER_KEY_LENGTH,\n `sha512`\n )\n\n const cipher = crypto.createCipheriv(CIPHER_ALGORITHM, key, iv)\n const encrypted = Buffer.concat([cipher.update(data, `utf8`), cipher.final()])\n\n // https://nodejs.org/api/crypto.html#crypto_cipher_getauthtag\n const tag = cipher.getAuthTag()\n\n return Buffer.concat([\n // Data as required by:\n // Salt for Key: https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest\n // IV: https://nodejs.org/api/crypto.html#crypto_class_decipher\n // Tag: https://nodejs.org/api/crypto.html#crypto_decipher_setauthtag_buffer\n salt,\n iv,\n tag,\n encrypted,\n ]).toString(`hex`)\n}\n\nexport function decryptWithSecret(\n secret: Buffer,\n encryptedData: string\n): string {\n const buffer = Buffer.from(encryptedData, `hex`)\n\n const salt = buffer.slice(0, CIPHER_SALT_LENGTH)\n const iv = buffer.slice(\n CIPHER_SALT_LENGTH,\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH\n )\n const tag = buffer.slice(\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH,\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH + CIPHER_TAG_LENGTH\n )\n const encrypted = buffer.slice(\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH + CIPHER_TAG_LENGTH\n )\n\n // https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest\n const key = crypto.pbkdf2Sync(\n secret,\n salt,\n PBKDF2_ITERATIONS,\n CIPHER_KEY_LENGTH,\n `sha512`\n )\n\n const decipher = crypto.createDecipheriv(CIPHER_ALGORITHM, key, iv)\n decipher.setAuthTag(tag)\n\n return decipher.update(encrypted) + decipher.final(`utf8`)\n}\n","/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/\n\n// eslint typescript has a bug with TS enums\n/* eslint-disable no-shadow */\n\nenum BaseServerSpan {\n handleRequest = 'BaseServer.handleRequest',\n run = 'BaseServer.run',\n pipe = 'BaseServer.pipe',\n getStaticHTML = 'BaseServer.getStaticHTML',\n render = 'BaseServer.render',\n renderToResponseWithComponents = 'BaseServer.renderToResponseWithComponents',\n renderToResponse = 'BaseServer.renderToResponse',\n renderToHTML = 'BaseServer.renderToHTML',\n renderError = 'BaseServer.renderError',\n renderErrorToResponse = 'BaseServer.renderErrorToResponse',\n renderErrorToHTML = 'BaseServer.renderErrorToHTML',\n render404 = 'BaseServer.render404',\n}\n\nenum LoadComponentsSpan {\n loadDefaultErrorComponents = 'LoadComponents.loadDefaultErrorComponents',\n loadComponents = 'LoadComponents.loadComponents',\n}\n\nenum NextServerSpan {\n getRequestHandler = 'NextServer.getRequestHandler',\n getServer = 'NextServer.getServer',\n getServerRequestHandler = 'NextServer.getServerRequestHandler',\n createServer = 'createServer.createServer',\n}\n\nenum NextNodeServerSpan {\n compression = 'NextNodeServer.compression',\n getBuildId = 'NextNodeServer.getBuildId',\n createComponentTree = 'NextNodeServer.createComponentTree',\n clientComponentLoading = 'NextNodeServer.clientComponentLoading',\n getLayoutOrPageModule = 'NextNodeServer.getLayoutOrPageModule',\n generateStaticRoutes = 'NextNodeServer.generateStaticRoutes',\n generateFsStaticRoutes = 'NextNodeServer.generateFsStaticRoutes',\n generatePublicRoutes = 'NextNodeServer.generatePublicRoutes',\n generateImageRoutes = 'NextNodeServer.generateImageRoutes.route',\n sendRenderResult = 'NextNodeServer.sendRenderResult',\n proxyRequest = 'NextNodeServer.proxyRequest',\n runApi = 'NextNodeServer.runApi',\n render = 'NextNodeServer.render',\n renderHTML = 'NextNodeServer.renderHTML',\n imageOptimizer = 'NextNodeServer.imageOptimizer',\n getPagePath = 'NextNodeServer.getPagePath',\n getRoutesManifest = 'NextNodeServer.getRoutesManifest',\n findPageComponents = 'NextNodeServer.findPageComponents',\n getFontManifest = 'NextNodeServer.getFontManifest',\n getServerComponentManifest = 'NextNodeServer.getServerComponentManifest',\n getRequestHandler = 'NextNodeServer.getRequestHandler',\n renderToHTML = 'NextNodeServer.renderToHTML',\n renderError = 'NextNodeServer.renderError',\n renderErrorToHTML = 'NextNodeServer.renderErrorToHTML',\n render404 = 'NextNodeServer.render404',\n startResponse = 'NextNodeServer.startResponse',\n\n // nested inner span, does not require parent scope name\n route = 'route',\n onProxyReq = 'onProxyReq',\n apiResolver = 'apiResolver',\n internalFetch = 'internalFetch',\n}\n\nenum StartServerSpan {\n startServer = 'startServer.startServer',\n}\n\nenum RenderSpan {\n getServerSideProps = 'Render.getServerSideProps',\n getStaticProps = 'Render.getStaticProps',\n renderToString = 'Render.renderToString',\n renderDocument = 'Render.renderDocument',\n createBodyResult = 'Render.createBodyResult',\n}\n\nenum AppRenderSpan {\n renderToString = 'AppRender.renderToString',\n renderToReadableStream = 'AppRender.renderToReadableStream',\n getBodyResult = 'AppRender.getBodyResult',\n fetch = 'AppRender.fetch',\n}\n\nenum RouterSpan {\n executeRoute = 'Router.executeRoute',\n}\n\nenum NodeSpan {\n runHandler = 'Node.runHandler',\n}\n\nenum AppRouteRouteHandlersSpan {\n runHandler = 'AppRouteRouteHandlers.runHandler',\n}\n\nenum ResolveMetadataSpan {\n generateMetadata = 'ResolveMetadata.generateMetadata',\n generateViewport = 'ResolveMetadata.generateViewport',\n}\n\nenum MiddlewareSpan {\n execute = 'Middleware.execute',\n}\n\ntype SpanTypes =\n | `${BaseServerSpan}`\n | `${LoadComponentsSpan}`\n | `${NextServerSpan}`\n | `${StartServerSpan}`\n | `${NextNodeServerSpan}`\n | `${RenderSpan}`\n | `${RouterSpan}`\n | `${AppRenderSpan}`\n | `${NodeSpan}`\n | `${AppRouteRouteHandlersSpan}`\n | `${ResolveMetadataSpan}`\n | `${MiddlewareSpan}`\n\n// This list is used to filter out spans that are not relevant to the user\nexport const NextVanillaSpanAllowlist = [\n MiddlewareSpan.execute,\n BaseServerSpan.handleRequest,\n RenderSpan.getServerSideProps,\n RenderSpan.getStaticProps,\n AppRenderSpan.fetch,\n AppRenderSpan.getBodyResult,\n RenderSpan.renderDocument,\n NodeSpan.runHandler,\n AppRouteRouteHandlersSpan.runHandler,\n ResolveMetadataSpan.generateMetadata,\n ResolveMetadataSpan.generateViewport,\n NextNodeServerSpan.createComponentTree,\n NextNodeServerSpan.findPageComponents,\n NextNodeServerSpan.getLayoutOrPageModule,\n NextNodeServerSpan.startResponse,\n NextNodeServerSpan.clientComponentLoading,\n]\n\n// These Spans are allowed to be always logged\n// when the otel log prefix env is set\nexport const LogSpanAllowList = [\n NextNodeServerSpan.findPageComponents,\n NextNodeServerSpan.createComponentTree,\n NextNodeServerSpan.clientComponentLoading,\n]\n\nexport {\n BaseServerSpan,\n LoadComponentsSpan,\n NextServerSpan,\n NextNodeServerSpan,\n StartServerSpan,\n RenderSpan,\n RouterSpan,\n AppRenderSpan,\n NodeSpan,\n AppRouteRouteHandlersSpan,\n ResolveMetadataSpan,\n MiddlewareSpan,\n}\n\nexport type { SpanTypes }\n","export class ReflectAdapter {\n static get<T extends object>(\n target: T,\n prop: string | symbol,\n receiver: unknown\n ): any {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target)\n }\n\n return value\n }\n\n static set<T extends object>(\n target: T,\n prop: string | symbol,\n value: any,\n receiver: any\n ): boolean {\n return Reflect.set(target, prop, value, receiver)\n }\n\n static has<T extends object>(target: T, prop: string | symbol): boolean {\n return Reflect.has(target, prop)\n }\n\n static deleteProperty<T extends object>(\n target: T,\n prop: string | symbol\n ): boolean {\n return Reflect.deleteProperty(target, prop)\n }\n}\n","import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n","// Note: This file is JS because it's used by the taskfile-swc.js file, which is JS.\n// Keep file changes in sync with the corresponding `.d.ts` files.\n/**\n * These are the browser versions that support all of the following:\n * static import: https://caniuse.com/es6-module\n * dynamic import: https://caniuse.com/es6-module-dynamic-import\n * import.meta: https://caniuse.com/mdn-javascript_operators_import_meta\n */\nconst MODERN_BROWSERSLIST_TARGET = [\n 'chrome 64',\n 'edge 79',\n 'firefox 67',\n 'opera 51',\n 'safari 12',\n]\n\nmodule.exports = MODERN_BROWSERSLIST_TARGET\n","(()=>{var e={318:function(e,t){(function(e,n){true?n(t):0})(this,(function(e){\"use strict\";class StructError extends TypeError{constructor(e,t){let n;const{message:r,explanation:i,...c}=e;const{path:o}=e;const a=o.length===0?r:`At path: ${o.join(\".\")} -- ${r}`;super(i??a);if(i!=null)this.cause=a;Object.assign(this,c);this.name=this.constructor.name;this.failures=()=>n??(n=[e,...t()])}}function isIterable(e){return isObject(e)&&typeof e[Symbol.iterator]===\"function\"}function isObject(e){return typeof e===\"object\"&&e!=null}function isPlainObject(e){if(Object.prototype.toString.call(e)!==\"[object Object]\"){return false}const t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function print(e){if(typeof e===\"symbol\"){return e.toString()}return typeof e===\"string\"?JSON.stringify(e):`${e}`}function shiftIterator(e){const{done:t,value:n}=e.next();return t?undefined:n}function toFailure(e,t,n,r){if(e===true){return}else if(e===false){e={}}else if(typeof e===\"string\"){e={message:e}}const{path:i,branch:c}=t;const{type:o}=n;const{refinement:a,message:s=`Expected a value of type \\`${o}\\`${a?` with refinement \\`${a}\\``:\"\"}, but received: \\`${print(r)}\\``}=e;return{value:r,type:o,refinement:a,key:i[i.length-1],path:i,branch:c,...e,message:s}}function*toFailures(e,t,n,r){if(!isIterable(e)){e=[e]}for(const i of e){const e=toFailure(i,t,n,r);if(e){yield e}}}function*run(e,t,n={}){const{path:r=[],branch:i=[e],coerce:c=false,mask:o=false}=n;const a={path:r,branch:i};if(c){e=t.coercer(e,a);if(o&&t.type!==\"type\"&&isObject(t.schema)&&isObject(e)&&!Array.isArray(e)){for(const n in e){if(t.schema[n]===undefined){delete e[n]}}}}let s=\"valid\";for(const r of t.validator(e,a)){r.explanation=n.message;s=\"not_valid\";yield[r,undefined]}for(let[u,f,l]of t.entries(e,a)){const t=run(f,l,{path:u===undefined?r:[...r,u],branch:u===undefined?i:[...i,f],coerce:c,mask:o,message:n.message});for(const n of t){if(n[0]){s=n[0].refinement!=null?\"not_refined\":\"not_valid\";yield[n[0],undefined]}else if(c){f=n[1];if(u===undefined){e=f}else if(e instanceof Map){e.set(u,f)}else if(e instanceof Set){e.add(f)}else if(isObject(e)){if(f!==undefined||u in e)e[u]=f}}}}if(s!==\"not_valid\"){for(const r of t.refiner(e,a)){r.explanation=n.message;s=\"not_refined\";yield[r,undefined]}}if(s===\"valid\"){yield[undefined,e]}}class Struct{constructor(e){const{type:t,schema:n,validator:r,refiner:i,coercer:c=(e=>e),entries:o=function*(){}}=e;this.type=t;this.schema=n;this.entries=o;this.coercer=c;if(r){this.validator=(e,t)=>{const n=r(e,t);return toFailures(n,t,this,e)}}else{this.validator=()=>[]}if(i){this.refiner=(e,t)=>{const n=i(e,t);return toFailures(n,t,this,e)}}else{this.refiner=()=>[]}}assert(e,t){return assert(e,this,t)}create(e,t){return create(e,this,t)}is(e){return is(e,this)}mask(e,t){return mask(e,this,t)}validate(e,t={}){return validate(e,this,t)}}function assert(e,t,n){const r=validate(e,t,{message:n});if(r[0]){throw r[0]}}function create(e,t,n){const r=validate(e,t,{coerce:true,message:n});if(r[0]){throw r[0]}else{return r[1]}}function mask(e,t,n){const r=validate(e,t,{coerce:true,mask:true,message:n});if(r[0]){throw r[0]}else{return r[1]}}function is(e,t){const n=validate(e,t);return!n[0]}function validate(e,t,n={}){const r=run(e,t,n);const i=shiftIterator(r);if(i[0]){const e=new StructError(i[0],(function*(){for(const e of r){if(e[0]){yield e[0]}}}));return[e,undefined]}else{const e=i[1];return[undefined,e]}}function assign(...e){const t=e[0].type===\"type\";const n=e.map((e=>e.schema));const r=Object.assign({},...n);return t?type(r):object(r)}function define(e,t){return new Struct({type:e,schema:null,validator:t})}function deprecated(e,t){return new Struct({...e,refiner:(t,n)=>t===undefined||e.refiner(t,n),validator(n,r){if(n===undefined){return true}else{t(n,r);return e.validator(n,r)}}})}function dynamic(e){return new Struct({type:\"dynamic\",schema:null,*entries(t,n){const r=e(t,n);yield*r.entries(t,n)},validator(t,n){const r=e(t,n);return r.validator(t,n)},coercer(t,n){const r=e(t,n);return r.coercer(t,n)},refiner(t,n){const r=e(t,n);return r.refiner(t,n)}})}function lazy(e){let t;return new Struct({type:\"lazy\",schema:null,*entries(n,r){t??(t=e());yield*t.entries(n,r)},validator(n,r){t??(t=e());return t.validator(n,r)},coercer(n,r){t??(t=e());return t.coercer(n,r)},refiner(n,r){t??(t=e());return t.refiner(n,r)}})}function omit(e,t){const{schema:n}=e;const r={...n};for(const e of t){delete r[e]}switch(e.type){case\"type\":return type(r);default:return object(r)}}function partial(e){const t=e instanceof Struct?{...e.schema}:{...e};for(const e in t){t[e]=optional(t[e])}return object(t)}function pick(e,t){const{schema:n}=e;const r={};for(const e of t){r[e]=n[e]}return object(r)}function struct(e,t){console.warn(\"superstruct@0.11 - The `struct` helper has been renamed to `define`.\");return define(e,t)}function any(){return define(\"any\",(()=>true))}function array(e){return new Struct({type:\"array\",schema:e,*entries(t){if(e&&Array.isArray(t)){for(const[n,r]of t.entries()){yield[n,r,e]}}},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||`Expected an array value, but received: ${print(e)}`}})}function bigint(){return define(\"bigint\",(e=>typeof e===\"bigint\"))}function boolean(){return define(\"boolean\",(e=>typeof e===\"boolean\"))}function date(){return define(\"date\",(e=>e instanceof Date&&!isNaN(e.getTime())||`Expected a valid \\`Date\\` object, but received: ${print(e)}`))}function enums(e){const t={};const n=e.map((e=>print(e))).join();for(const n of e){t[n]=n}return new Struct({type:\"enums\",schema:t,validator(t){return e.includes(t)||`Expected one of \\`${n}\\`, but received: ${print(t)}`}})}function func(){return define(\"func\",(e=>typeof e===\"function\"||`Expected a function, but received: ${print(e)}`))}function instance(e){return define(\"instance\",(t=>t instanceof e||`Expected a \\`${e.name}\\` instance, but received: ${print(t)}`))}function integer(){return define(\"integer\",(e=>typeof e===\"number\"&&!isNaN(e)&&Number.isInteger(e)||`Expected an integer, but received: ${print(e)}`))}function intersection(e){return new Struct({type:\"intersection\",schema:null,*entries(t,n){for(const r of e){yield*r.entries(t,n)}},*validator(t,n){for(const r of e){yield*r.validator(t,n)}},*refiner(t,n){for(const r of e){yield*r.refiner(t,n)}}})}function literal(e){const t=print(e);const n=typeof e;return new Struct({type:\"literal\",schema:n===\"string\"||n===\"number\"||n===\"boolean\"?e:null,validator(n){return n===e||`Expected the literal \\`${t}\\`, but received: ${print(n)}`}})}function map(e,t){return new Struct({type:\"map\",schema:null,*entries(n){if(e&&t&&n instanceof Map){for(const[r,i]of n.entries()){yield[r,r,e];yield[r,i,t]}}},coercer(e){return e instanceof Map?new Map(e):e},validator(e){return e instanceof Map||`Expected a \\`Map\\` object, but received: ${print(e)}`}})}function never(){return define(\"never\",(()=>false))}function nullable(e){return new Struct({...e,validator:(t,n)=>t===null||e.validator(t,n),refiner:(t,n)=>t===null||e.refiner(t,n)})}function number(){return define(\"number\",(e=>typeof e===\"number\"&&!isNaN(e)||`Expected a number, but received: ${print(e)}`))}function object(e){const t=e?Object.keys(e):[];const n=never();return new Struct({type:\"object\",schema:e?e:null,*entries(r){if(e&&isObject(r)){const i=new Set(Object.keys(r));for(const n of t){i.delete(n);yield[n,r[n],e[n]]}for(const e of i){yield[e,r[e],n]}}},validator(e){return isObject(e)||`Expected an object, but received: ${print(e)}`},coercer(e){return isObject(e)?{...e}:e}})}function optional(e){return new Struct({...e,validator:(t,n)=>t===undefined||e.validator(t,n),refiner:(t,n)=>t===undefined||e.refiner(t,n)})}function record(e,t){return new Struct({type:\"record\",schema:null,*entries(n){if(isObject(n)){for(const r in n){const i=n[r];yield[r,r,e];yield[r,i,t]}}},validator(e){return isObject(e)||`Expected an object, but received: ${print(e)}`}})}function regexp(){return define(\"regexp\",(e=>e instanceof RegExp))}function set(e){return new Struct({type:\"set\",schema:null,*entries(t){if(e&&t instanceof Set){for(const n of t){yield[n,n,e]}}},coercer(e){return e instanceof Set?new Set(e):e},validator(e){return e instanceof Set||`Expected a \\`Set\\` object, but received: ${print(e)}`}})}function string(){return define(\"string\",(e=>typeof e===\"string\"||`Expected a string, but received: ${print(e)}`))}function tuple(e){const t=never();return new Struct({type:\"tuple\",schema:null,*entries(n){if(Array.isArray(n)){const r=Math.max(e.length,n.length);for(let i=0;i<r;i++){yield[i,n[i],e[i]||t]}}},validator(e){return Array.isArray(e)||`Expected an array, but received: ${print(e)}`}})}function type(e){const t=Object.keys(e);return new Struct({type:\"type\",schema:e,*entries(n){if(isObject(n)){for(const r of t){yield[r,n[r],e[r]]}}},validator(e){return isObject(e)||`Expected an object, but received: ${print(e)}`},coercer(e){return isObject(e)?{...e}:e}})}function union(e){const t=e.map((e=>e.type)).join(\" | \");return new Struct({type:\"union\",schema:null,coercer(t){for(const n of e){const[e,r]=n.validate(t,{coerce:true});if(!e){return r}}return t},validator(n,r){const i=[];for(const t of e){const[...e]=run(n,t,r);const[c]=e;if(!c[0]){return[]}else{for(const[t]of e){if(t){i.push(t)}}}}return[`Expected the value to satisfy a union of \\`${t}\\`, but received: ${print(n)}`,...i]}})}function unknown(){return define(\"unknown\",(()=>true))}function coerce(e,t,n){return new Struct({...e,coercer:(r,i)=>is(r,t)?e.coercer(n(r,i),i):e.coercer(r,i)})}function defaulted(e,t,n={}){return coerce(e,unknown(),(e=>{const r=typeof t===\"function\"?t():t;if(e===undefined){return r}if(!n.strict&&isPlainObject(e)&&isPlainObject(r)){const t={...e};let n=false;for(const e in r){if(t[e]===undefined){t[e]=r[e];n=true}}if(n){return t}}return e}))}function trimmed(e){return coerce(e,string(),(e=>e.trim()))}function empty(e){return refine(e,\"empty\",(t=>{const n=getSize(t);return n===0||`Expected an empty ${e.type} but received one with a size of \\`${n}\\``}))}function getSize(e){if(e instanceof Map||e instanceof Set){return e.size}else{return e.length}}function max(e,t,n={}){const{exclusive:r}=n;return refine(e,\"max\",(n=>r?n<t:n<=t||`Expected a ${e.type} less than ${r?\"\":\"or equal to \"}${t} but received \\`${n}\\``))}function min(e,t,n={}){const{exclusive:r}=n;return refine(e,\"min\",(n=>r?n>t:n>=t||`Expected a ${e.type} greater than ${r?\"\":\"or equal to \"}${t} but received \\`${n}\\``))}function nonempty(e){return refine(e,\"nonempty\",(t=>{const n=getSize(t);return n>0||`Expected a nonempty ${e.type} but received an empty one`}))}function pattern(e,t){return refine(e,\"pattern\",(n=>t.test(n)||`Expected a ${e.type} matching \\`/${t.source}/\\` but received \"${n}\"`))}function size(e,t,n=t){const r=`Expected a ${e.type}`;const i=t===n?`of \\`${t}\\``:`between \\`${t}\\` and \\`${n}\\``;return refine(e,\"size\",(e=>{if(typeof e===\"number\"||e instanceof Date){return t<=e&&e<=n||`${r} ${i} but received \\`${e}\\``}else if(e instanceof Map||e instanceof Set){const{size:c}=e;return t<=c&&c<=n||`${r} with a size ${i} but received one with a size of \\`${c}\\``}else{const{length:c}=e;return t<=c&&c<=n||`${r} with a length ${i} but received one with a length of \\`${c}\\``}}))}function refine(e,t,n){return new Struct({...e,*refiner(r,i){yield*e.refiner(r,i);const c=n(r,i);const o=toFailures(c,i,e,r);for(const e of o){yield{...e,refinement:t}}}})}e.Struct=Struct;e.StructError=StructError;e.any=any;e.array=array;e.assert=assert;e.assign=assign;e.bigint=bigint;e.boolean=boolean;e.coerce=coerce;e.create=create;e.date=date;e.defaulted=defaulted;e.define=define;e.deprecated=deprecated;e.dynamic=dynamic;e.empty=empty;e.enums=enums;e.func=func;e.instance=instance;e.integer=integer;e.intersection=intersection;e.is=is;e.lazy=lazy;e.literal=literal;e.map=map;e.mask=mask;e.max=max;e.min=min;e.never=never;e.nonempty=nonempty;e.nullable=nullable;e.number=number;e.object=object;e.omit=omit;e.optional=optional;e.partial=partial;e.pattern=pattern;e.pick=pick;e.record=record;e.refine=refine;e.regexp=regexp;e.set=set;e.size=size;e.string=string;e.struct=struct;e.trimmed=trimmed;e.tuple=tuple;e.type=type;e.union=union;e.unknown=unknown;e.validate=validate}))}};if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t={};e[318](0,t);module.exports=t})();","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import MODERN_BROWSERSLIST_TARGET from './modern-browserslist-target'\n\nexport { MODERN_BROWSERSLIST_TARGET }\n\nexport type ValueOf<T> = Required<T>[keyof T]\n\nexport const COMPILER_NAMES = {\n client: 'client',\n server: 'server',\n edgeServer: 'edge-server',\n} as const\n\nexport type CompilerNameValues = ValueOf<typeof COMPILER_NAMES>\n\nexport const COMPILER_INDEXES: {\n [compilerKey in CompilerNameValues]: number\n} = {\n [COMPILER_NAMES.client]: 0,\n [COMPILER_NAMES.server]: 1,\n [COMPILER_NAMES.edgeServer]: 2,\n} as const\n\nexport const UNDERSCORE_NOT_FOUND_ROUTE = '/_not-found'\nexport const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`\nexport const PHASE_EXPORT = 'phase-export'\nexport const PHASE_PRODUCTION_BUILD = 'phase-production-build'\nexport const PHASE_PRODUCTION_SERVER = 'phase-production-server'\nexport const PHASE_DEVELOPMENT_SERVER = 'phase-development-server'\nexport const PHASE_TEST = 'phase-test'\nexport const PHASE_INFO = 'phase-info'\nexport const PAGES_MANIFEST = 'pages-manifest.json'\nexport const WEBPACK_STATS = 'webpack-stats.json'\nexport const APP_PATHS_MANIFEST = 'app-paths-manifest.json'\nexport const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json'\nexport const BUILD_MANIFEST = 'build-manifest.json'\nexport const APP_BUILD_MANIFEST = 'app-build-manifest.json'\nexport const FUNCTIONS_CONFIG_MANIFEST = 'functions-config-manifest.json'\nexport const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest'\nexport const NEXT_FONT_MANIFEST = 'next-font-manifest'\nexport const EXPORT_MARKER = 'export-marker.json'\nexport const EXPORT_DETAIL = 'export-detail.json'\nexport const PRERENDER_MANIFEST = 'prerender-manifest.json'\nexport const ROUTES_MANIFEST = 'routes-manifest.json'\nexport const IMAGES_MANIFEST = 'images-manifest.json'\nexport const SERVER_FILES_MANIFEST = 'required-server-files.json'\nexport const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'\nexport const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'\nexport const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST =\n '_clientMiddlewareManifest.json'\nexport const DEV_CLIENT_MIDDLEWARE_MANIFEST = '_devMiddlewareManifest.json'\nexport const REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'\nexport const SERVER_DIRECTORY = 'server'\nexport const CONFIG_FILES = [\n 'next.config.js',\n 'next.config.mjs',\n 'next.config.ts',\n]\nexport const BUILD_ID_FILE = 'BUILD_ID'\nexport const BLOCKED_PAGES = ['/_document', '/_app', '/_error']\nexport const CLIENT_PUBLIC_FILES_PATH = 'public'\nexport const CLIENT_STATIC_FILES_PATH = 'static'\nexport const STRING_LITERAL_DROP_BUNDLE = '__NEXT_DROP_CLIENT_FILE__'\nexport const NEXT_BUILTIN_DOCUMENT = '__NEXT_BUILTIN_DOCUMENT__'\nexport const BARREL_OPTIMIZATION_PREFIX = '__barrel_optimize__'\n\n// server/[entry]/page_client-reference-manifest.js\nexport const CLIENT_REFERENCE_MANIFEST = 'client-reference-manifest'\n// server/server-reference-manifest\nexport const SERVER_REFERENCE_MANIFEST = 'server-reference-manifest'\n// server/middleware-build-manifest.js\nexport const MIDDLEWARE_BUILD_MANIFEST = 'middleware-build-manifest'\n// server/middleware-react-loadable-manifest.js\nexport const MIDDLEWARE_REACT_LOADABLE_MANIFEST =\n 'middleware-react-loadable-manifest'\n// server/interception-route-rewrite-manifest.js\nexport const INTERCEPTION_ROUTE_REWRITE_MANIFEST =\n 'interception-route-rewrite-manifest'\n// server/dynamic-css-manifest.js\nexport const DYNAMIC_CSS_MANIFEST = 'dynamic-css-manifest'\n\n// static/runtime/main.js\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`\n// next internal client components chunk for layouts\nexport const APP_CLIENT_INTERNALS = 'app-pages-internals'\n// static/runtime/react-refresh.js\nexport const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`\n// static/runtime/amp.js\nexport const CLIENT_STATIC_FILES_RUNTIME_AMP = `amp`\n// static/runtime/webpack.js\nexport const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`\n// static/runtime/polyfills.js\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = 'polyfills'\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(\n CLIENT_STATIC_FILES_RUNTIME_POLYFILLS\n)\nexport const DEFAULT_RUNTIME_WEBPACK = 'webpack-runtime'\nexport const EDGE_RUNTIME_WEBPACK = 'edge-runtime-webpack'\nexport const STATIC_PROPS_ID = '__N_SSG'\nexport const SERVER_PROPS_ID = '__N_SSP'\nexport const DEFAULT_SERIF_FONT = {\n name: 'Times New Roman',\n xAvgCharWidth: 821,\n azAvgWidth: 854.3953488372093,\n unitsPerEm: 2048,\n}\nexport const DEFAULT_SANS_SERIF_FONT = {\n name: 'Arial',\n xAvgCharWidth: 904,\n azAvgWidth: 934.5116279069767,\n unitsPerEm: 2048,\n}\nexport const STATIC_STATUS_PAGES = ['/500']\nexport const TRACE_OUTPUT_VERSION = 1\n// in `MB`\nexport const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000\n\nexport const RSC_MODULE_TYPES = {\n client: 'client',\n server: 'server',\n} as const\n\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nexport const EDGE_UNSUPPORTED_NODE_APIS = [\n 'clearImmediate',\n 'setImmediate',\n 'BroadcastChannel',\n 'ByteLengthQueuingStrategy',\n 'CompressionStream',\n 'CountQueuingStrategy',\n 'DecompressionStream',\n 'DomException',\n 'MessageChannel',\n 'MessageEvent',\n 'MessagePort',\n 'ReadableByteStreamController',\n 'ReadableStreamBYOBRequest',\n 'ReadableStreamDefaultController',\n 'TransformStreamDefaultController',\n 'WritableStreamDefaultController',\n]\n\nexport const SYSTEM_ENTRYPOINTS = new Set<string>([\n CLIENT_STATIC_FILES_RUNTIME_MAIN,\n CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n CLIENT_STATIC_FILES_RUNTIME_AMP,\n CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n])\n","import type { UrlWithParsedQuery } from 'url'\nimport { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\n\nconst DUMMY_ORIGIN = 'http://n'\n\nexport function isFullStringUrl(url: string) {\n return /https?:\\/\\//.test(url)\n}\n\nexport function parseUrl(url: string): URL | undefined {\n let parsed: URL | undefined = undefined\n try {\n parsed = new URL(url, DUMMY_ORIGIN)\n } catch {}\n return parsed\n}\n\nexport function parseReqUrl(url: string): UrlWithParsedQuery | undefined {\n const parsedUrl: URL | undefined = parseUrl(url)\n\n if (!parsedUrl) {\n return\n }\n\n const query: Record<string, string | string[]> = {}\n\n for (const key of parsedUrl.searchParams.keys()) {\n const values = parsedUrl.searchParams.getAll(key)\n query[key] = values.length > 1 ? values : values[0]\n }\n\n const legacyUrl: UrlWithParsedQuery = {\n query,\n hash: parsedUrl.hash,\n search: parsedUrl.search,\n path: parsedUrl.pathname,\n pathname: parsedUrl.pathname,\n href: `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`,\n host: '',\n hostname: '',\n auth: '',\n protocol: '',\n slashes: null,\n port: '',\n }\n return legacyUrl\n}\n\nexport function stripNextRscUnionQuery(relativeUrl: string): string {\n const urlInstance = new URL(relativeUrl, DUMMY_ORIGIN)\n urlInstance.searchParams.delete(NEXT_RSC_UNION_QUERY)\n\n return urlInstance.pathname + urlInstance.search\n}\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap<readonly string[], readonly string[]>()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n","import { normalizeAppPath } from './app-paths'\n\n// order matters here, the first match will be used\nexport const INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)',\n] as const\n\nexport function isInterceptionRouteAppPath(path: string): boolean {\n // TODO-APP: add more serious validation\n return (\n path\n .split('/')\n .find((segment) =>\n INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n ) !== undefined\n )\n}\n\nexport function extractInterceptionRouteInformation(path: string) {\n let interceptingRoute: string | undefined,\n marker: (typeof INTERCEPTION_ROUTE_MARKERS)[number] | undefined,\n interceptedRoute: string | undefined\n\n for (const segment of path.split('/')) {\n marker = INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n if (marker) {\n ;[interceptingRoute, interceptedRoute] = path.split(marker, 2)\n break\n }\n }\n\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(\n `Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`\n )\n }\n\n interceptingRoute = normalizeAppPath(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n\n switch (marker) {\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute\n }\n break\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`\n )\n }\n interceptedRoute = interceptingRoute\n .split('/')\n .slice(0, -1)\n .concat(interceptedRoute)\n .join('/')\n break\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute\n break\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n\n const splitInterceptingRoute = interceptingRoute.split('/')\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`\n )\n }\n\n interceptedRoute = splitInterceptingRoute\n .slice(0, -2)\n .concat(interceptedRoute)\n .join('/')\n break\n default:\n throw new Error('Invariant: unexpected marker')\n }\n\n return { interceptingRoute, interceptedRoute }\n}\n","import {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from './interception-routes'\n\n// Identify /.*[param].*/ in route string\nconst TEST_ROUTE = /\\/[^/]*\\[[^/]+\\][^/]*(?=\\/|$)/\n\n// Identify /[param]/ in route string\nconst TEST_STRICT_ROUTE = /\\/\\[[^/]+\\](?=\\/|$)/\n\n/**\n * Check if a route is dynamic.\n *\n * @param route - The route to check.\n * @param strict - Whether to use strict mode which prohibits segments with prefixes/suffixes (default: true).\n * @returns Whether the route is dynamic.\n */\nexport function isDynamicRoute(route: string, strict: boolean = true): boolean {\n if (isInterceptionRouteAppPath(route)) {\n route = extractInterceptionRouteInformation(route).interceptedRoute\n }\n\n if (strict) {\n return TEST_STRICT_ROUTE.test(route)\n }\n\n return TEST_ROUTE.test(route)\n}\n","import type { Segment } from '../../server/app-render/types'\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\n","import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n","/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g\n\nexport function escapeStringRegexp(str: string) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&')\n }\n return str\n}\n","/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n","import {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../../../lib/constants'\nimport { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { removeTrailingSlash } from './remove-trailing-slash'\n\nexport interface Group {\n pos: number\n repeat: boolean\n optional: boolean\n}\n\nexport interface RouteRegex {\n groups: { [groupName: string]: Group }\n re: RegExp\n}\n\ntype GetNamedRouteRegexOptions = {\n /**\n * Whether to prefix the route keys with the NEXT_INTERCEPTION_MARKER_PREFIX\n * or NEXT_QUERY_PARAM_PREFIX. This is only relevant when creating the\n * routes-manifest during the build.\n */\n prefixRouteKeys: boolean\n\n /**\n * Whether to include the suffix in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n\n /**\n * Whether to backtrack duplicate keys. This is only relevant when creating\n * the routes-manifest during the build.\n */\n backreferenceDuplicateKeys?: boolean\n}\n\ntype GetRouteRegexOptions = {\n /**\n * Whether to include extra parts in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n * of adding this option.\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n}\n\n/**\n * Regular expression pattern used to match route parameters.\n * Matches both single parameters and parameter groups.\n * Examples:\n * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true\n * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false\n * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true\n * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false\n */\nconst PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/\n\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[[...slug]]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[[foo]]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `[bar]` -> `{ key: 'bar', repeat: false, optional: false }`\n * - `fizz` -> `{ key: 'fizz', repeat: false, optional: false }`\n * @param param - The parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseParameter(param: string) {\n const match = param.match(PARAMETER_PATTERN)\n\n if (!match) {\n return parseMatchedParameter(param)\n }\n\n return parseMatchedParameter(match[2])\n}\n\n/**\n * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n * @param param - The matched parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nfunction parseMatchedParameter(param: string) {\n const optional = param.startsWith('[') && param.endsWith(']')\n if (optional) {\n param = param.slice(1, -1)\n }\n const repeat = param.startsWith('...')\n if (repeat) {\n param = param.slice(3)\n }\n return { key: param, repeat, optional }\n}\n\nfunction getParametrizedRoute(\n route: string,\n includeSuffix: boolean,\n includePrefix: boolean\n) {\n const groups: { [groupName: string]: Group } = {}\n let groupIndex = 1\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const markerMatch = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n segments.push(`/${escapeStringRegexp(markerMatch)}([^/]+?)`)\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n parameterizedRoute: segments.join(''),\n groups,\n }\n}\n\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */\nexport function getRouteRegex(\n normalizedRoute: string,\n {\n includeSuffix = false,\n includePrefix = false,\n excludeOptionalTrailingSlash = false,\n }: GetRouteRegexOptions = {}\n): RouteRegex {\n const { parameterizedRoute, groups } = getParametrizedRoute(\n normalizedRoute,\n includeSuffix,\n includePrefix\n )\n\n let re = parameterizedRoute\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?'\n }\n\n return {\n re: new RegExp(`^${re}$`),\n groups: groups,\n }\n}\n\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */\nfunction buildGetSafeRouteKey() {\n let i = 0\n\n return () => {\n let routeKey = ''\n let j = ++i\n while (j > 0) {\n routeKey += String.fromCharCode(97 + ((j - 1) % 26))\n j = Math.floor((j - 1) / 26)\n }\n return routeKey\n }\n}\n\nfunction getSafeKeyFromSegment({\n interceptionMarker,\n getSafeRouteKey,\n segment,\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n}: {\n interceptionMarker?: string\n getSafeRouteKey: () => string\n segment: string\n routeKeys: Record<string, string>\n keyPrefix?: string\n backreferenceDuplicateKeys: boolean\n}) {\n const { key, optional, repeat } = parseMatchedParameter(segment)\n\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '')\n\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`\n }\n let invalidKey = false\n\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true\n }\n\n if (invalidKey) {\n cleanedKey = getSafeRouteKey()\n }\n\n const duplicateKey = cleanedKey in routeKeys\n\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`\n } else {\n routeKeys[cleanedKey] = key\n }\n\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker\n ? escapeStringRegexp(interceptionMarker)\n : ''\n\n let pattern: string\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = `\\\\k<${cleanedKey}>`\n } else if (repeat) {\n pattern = `(?<${cleanedKey}>.+?)`\n } else {\n pattern = `(?<${cleanedKey}>[^/]+?)`\n }\n\n return optional\n ? `(?:/${interceptionPrefix}${pattern})?`\n : `/${interceptionPrefix}${pattern}`\n}\n\nfunction getNamedParametrizedRoute(\n route: string,\n prefixRouteKeys: boolean,\n includeSuffix: boolean,\n includePrefix: boolean,\n backreferenceDuplicateKeys: boolean\n) {\n const getSafeRouteKey = buildGetSafeRouteKey()\n const routeKeys: { [named: string]: string } = {}\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const hasInterceptionMarker = INTERCEPTION_ROUTE_MARKERS.some((m) =>\n segment.startsWith(m)\n )\n\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (hasInterceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n segments.push(\n getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker: paramMatches[1],\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys\n ? NEXT_INTERCEPTION_MARKER_PREFIX\n : undefined,\n backreferenceDuplicateKeys,\n })\n )\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined,\n backreferenceDuplicateKeys,\n })\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n }\n}\n\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */\nexport function getNamedRouteRegex(\n normalizedRoute: string,\n options: GetNamedRouteRegexOptions\n) {\n const result = getNamedParametrizedRoute(\n normalizedRoute,\n options.prefixRouteKeys,\n options.includeSuffix ?? false,\n options.includePrefix ?? false,\n options.backreferenceDuplicateKeys ?? false\n )\n\n let namedRegex = result.namedParameterizedRoute\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?'\n }\n\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n }\n}\n\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */\nexport function getNamedMiddlewareRegex(\n normalizedRoute: string,\n options: {\n catchAll?: boolean\n }\n) {\n const { parameterizedRoute } = getParametrizedRoute(\n normalizedRoute,\n false,\n false\n )\n const { catchAll = true } = options\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : ''\n return {\n namedRegex: `^/${catchAllRegex}$`,\n }\n }\n\n const { namedParameterizedRoute } = getNamedParametrizedRoute(\n normalizedRoute,\n false,\n false,\n false,\n false\n )\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`,\n }\n}\n","import type { HtmlProps } from './html-context.shared-runtime'\nimport type { ComponentType, JSX } from 'react'\nimport type { DomainLocale } from '../../server/config'\nimport type { Env } from '@next/env'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextRouter } from './router/router'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { PreviewData } from '../../types'\nimport type { COMPILER_NAMES } from './constants'\nimport type fs from 'fs'\n\nexport type NextComponentType<\n Context extends BaseContext = NextPageContext,\n InitialProps = {},\n Props = {},\n> = ComponentType<Props> & {\n /**\n * Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.\n * Make sure to return plain `Object` without using `Date`, `Map`, `Set`.\n * @param context Context of `page`\n */\n getInitialProps?(context: Context): InitialProps | Promise<InitialProps>\n}\n\nexport type DocumentType = NextComponentType<\n DocumentContext,\n DocumentInitialProps,\n DocumentProps\n>\n\nexport type AppType<P = {}> = NextComponentType<\n AppContextType,\n P,\n AppPropsType<any, P>\n>\n\nexport type AppTreeType = ComponentType<\n AppInitialProps & { [name: string]: any }\n>\n\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */\nexport const WEB_VITALS = ['CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB'] as const\nexport type NextWebVitalsMetric = {\n id: string\n startTime: number\n value: number\n attribution?: { [key: string]: unknown }\n} & (\n | {\n label: 'web-vital'\n name: (typeof WEB_VITALS)[number]\n }\n | {\n label: 'custom'\n name:\n | 'Next.js-hydration'\n | 'Next.js-route-change-to-render'\n | 'Next.js-render'\n }\n)\n\nexport type Enhancer<C> = (Component: C) => C\n\nexport type ComponentsEnhancer =\n | {\n enhanceApp?: Enhancer<AppType>\n enhanceComponent?: Enhancer<NextComponentType>\n }\n | Enhancer<NextComponentType>\n\nexport type RenderPageResult = {\n html: string\n head?: Array<JSX.Element | null>\n}\n\nexport type RenderPage = (\n options?: ComponentsEnhancer\n) => DocumentInitialProps | Promise<DocumentInitialProps>\n\nexport type BaseContext = {\n res?: ServerResponse\n [k: string]: any\n}\n\nexport type NEXT_DATA = {\n props: Record<string, any>\n page: string\n query: ParsedUrlQuery\n buildId: string\n assetPrefix?: string\n runtimeConfig?: { [key: string]: any }\n nextExport?: boolean\n autoExport?: boolean\n isFallback?: boolean\n isExperimentalCompile?: boolean\n dynamicIds?: (string | number)[]\n err?: Error & {\n statusCode?: number\n source?: typeof COMPILER_NAMES.server | typeof COMPILER_NAMES.edgeServer\n }\n gsp?: boolean\n gssp?: boolean\n customServer?: boolean\n gip?: boolean\n appGip?: boolean\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n domainLocales?: readonly DomainLocale[]\n scriptLoader?: any[]\n isPreview?: boolean\n notFoundSrcPage?: string\n}\n\n/**\n * `Next` context\n */\nexport interface NextPageContext {\n /**\n * Error object if encountered during rendering\n */\n err?: (Error & { statusCode?: number }) | null\n /**\n * `HTTP` request object.\n */\n req?: IncomingMessage\n /**\n * `HTTP` response object.\n */\n res?: ServerResponse\n /**\n * Path section of `URL`.\n */\n pathname: string\n /**\n * Query string section of `URL` parsed as an object.\n */\n query: ParsedUrlQuery\n /**\n * `String` of the actual path including query.\n */\n asPath?: string\n /**\n * The currently active locale\n */\n locale?: string\n /**\n * All configured locales\n */\n locales?: readonly string[]\n /**\n * The configured default locale\n */\n defaultLocale?: string\n /**\n * `Component` the tree of the App to use if needing to render separately\n */\n AppTree: AppTreeType\n}\n\nexport type AppContextType<Router extends NextRouter = NextRouter> = {\n Component: NextComponentType<NextPageContext>\n AppTree: AppTreeType\n ctx: NextPageContext\n router: Router\n}\n\nexport type AppInitialProps<PageProps = any> = {\n pageProps: PageProps\n}\n\nexport type AppPropsType<\n Router extends NextRouter = NextRouter,\n PageProps = {},\n> = AppInitialProps<PageProps> & {\n Component: NextComponentType<NextPageContext, any, any>\n router: Router\n __N_SSG?: boolean\n __N_SSP?: boolean\n}\n\nexport type DocumentContext = NextPageContext & {\n renderPage: RenderPage\n defaultGetInitialProps(\n ctx: DocumentContext,\n options?: { nonce?: string }\n ): Promise<DocumentInitialProps>\n}\n\nexport type DocumentInitialProps = RenderPageResult & {\n styles?: React.ReactElement[] | Iterable<React.ReactNode> | JSX.Element\n}\n\nexport type DocumentProps = DocumentInitialProps & HtmlProps\n\n/**\n * Next `API` route request\n */\nexport interface NextApiRequest extends IncomingMessage {\n /**\n * Object of `query` values from url\n */\n query: Partial<{\n [key: string]: string | string[]\n }>\n /**\n * Object of `cookies` from header\n */\n cookies: Partial<{\n [key: string]: string\n }>\n\n body: any\n\n env: Env\n\n draftMode?: boolean\n\n preview?: boolean\n /**\n * Preview data set on the request, if any\n * */\n previewData?: PreviewData\n}\n\n/**\n * Send body of response\n */\ntype Send<T> = (body: T) => void\n\n/**\n * Next `API` route response\n */\nexport type NextApiResponse<Data = any> = ServerResponse & {\n /**\n * Send data `any` data in response\n */\n send: Send<Data>\n /**\n * Send data `json` data in response\n */\n json: Send<Data>\n status: (statusCode: number) => NextApiResponse<Data>\n redirect(url: string): NextApiResponse<Data>\n redirect(status: number, url: string): NextApiResponse<Data>\n\n /**\n * Set draft mode\n */\n setDraftMode: (options: { enable: boolean }) => NextApiResponse<Data>\n\n /**\n * Set preview data for Next.js' prerender mode\n */\n setPreviewData: (\n data: object | string,\n options?: {\n /**\n * Specifies the number (in seconds) for the preview session to last for.\n * The given number will be converted to an integer by rounding down.\n * By default, no maximum age is set and the preview session finishes\n * when the client shuts down (browser is closed).\n */\n maxAge?: number\n /**\n * Specifies the path for the preview session to work under. By default,\n * the path is considered the \"default path\", i.e., any pages under \"/\".\n */\n path?: string\n }\n ) => NextApiResponse<Data>\n\n /**\n * Clear preview data for Next.js' prerender mode\n */\n clearPreviewData: (options?: { path?: string }) => NextApiResponse<Data>\n\n /**\n * Revalidate a specific page and regenerate it using On-Demand Incremental\n * Static Regeneration.\n * The path should be an actual path, not a rewritten path. E.g. for\n * \"/blog/[slug]\" this should be \"/blog/post-1\".\n * @link https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath\n */\n revalidate: (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => Promise<void>\n}\n\n/**\n * Next `API` route handler\n */\nexport type NextApiHandler<T = any> = (\n req: NextApiRequest,\n res: NextApiResponse<T>\n) => unknown | Promise<unknown>\n\n/**\n * Utils\n */\nexport function execOnce<T extends (...args: any[]) => ReturnType<T>>(\n fn: T\n): T {\n let used = false\n let result: ReturnType<T>\n\n return ((...args: any[]) => {\n if (!used) {\n used = true\n result = fn(...args)\n }\n return result\n }) as T\n}\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url)\n\nexport function getLocationOrigin() {\n const { protocol, hostname, port } = window.location\n return `${protocol}//${hostname}${port ? ':' + port : ''}`\n}\n\nexport function getURL() {\n const { href } = window.location\n const origin = getLocationOrigin()\n return href.substring(origin.length)\n}\n\nexport function getDisplayName<P>(Component: ComponentType<P>) {\n return typeof Component === 'string'\n ? Component\n : Component.displayName || Component.name || 'Unknown'\n}\n\nexport function isResSent(res: ServerResponse) {\n return res.finished || res.headersSent\n}\n\nexport function normalizeRepeatedSlashes(url: string) {\n const urlParts = url.split('?')\n const urlNoQuery = urlParts[0]\n\n return (\n urlNoQuery\n // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/')\n .replace(/\\/\\/+/g, '/') +\n (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '')\n )\n}\n\nexport async function loadGetInitialProps<\n C extends BaseContext,\n IP = {},\n P = {},\n>(App: NextComponentType<C, IP, P>, ctx: C): Promise<IP> {\n if (process.env.NODE_ENV !== 'production') {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`\n throw new Error(message)\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || (ctx.ctx && ctx.ctx.res)\n\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx),\n }\n }\n return {} as IP\n }\n\n const props = await App.getInitialProps(ctx)\n\n if (res && isResSent(res)) {\n return props\n }\n\n if (!props) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`\n throw new Error(message)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\n `${getDisplayName(\n App\n )} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`\n )\n }\n }\n\n return props\n}\n\nexport const SP = typeof performance !== 'undefined'\nexport const ST =\n SP &&\n (['mark', 'measure', 'getEntriesByName'] as const).every(\n (method) => typeof performance[method] === 'function'\n )\n\nexport class DecodeError extends Error {}\nexport class NormalizeError extends Error {}\nexport class PageNotFoundError extends Error {\n code: string\n\n constructor(page: string) {\n super()\n this.code = 'ENOENT'\n this.name = 'PageNotFoundError'\n this.message = `Cannot find module for page: ${page}`\n }\n}\n\nexport class MissingStaticPage extends Error {\n constructor(page: string, message: string) {\n super()\n this.message = `Failed to load static file for page: ${page} ${message}`\n }\n}\n\nexport class MiddlewareNotFoundError extends Error {\n code: string\n constructor() {\n super()\n this.code = 'ENOENT'\n this.message = `Cannot find the middleware module`\n }\n}\n\nexport interface CacheFs {\n existsSync: typeof fs.existsSync\n readFile: typeof fs.promises.readFile\n readFileSync: typeof fs.readFileSync\n writeFile(f: string, d: any): Promise<void>\n mkdir(dir: string): Promise<void | string>\n stat(f: string): Promise<{ mtime: Date }>\n}\n\nexport function stringifyError(error: Error) {\n return JSON.stringify({ message: error.message, stack: error.stack })\n}\n","import type { Group } from './route-regex'\nimport { DecodeError } from '../../utils'\nimport type { Params } from '../../../../server/request/params'\n\nexport interface RouteMatchFn {\n (pathname: string): false | Params\n}\n\ntype RouteMatcherOptions = {\n // We only use the exec method of the RegExp object. This helps us avoid using\n // type assertions that the passed in properties are of the correct type.\n re: Pick<RegExp, 'exec'>\n groups: Record<string, Group>\n}\n\nexport function getRouteMatcher({\n re,\n groups,\n}: RouteMatcherOptions): RouteMatchFn {\n return (pathname: string) => {\n const routeMatch = re.exec(pathname)\n if (!routeMatch) return false\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch {\n throw new DecodeError('failed to decode param')\n }\n }\n\n const params: Params = {}\n for (const [key, group] of Object.entries(groups)) {\n const match = routeMatch[group.pos]\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry) => decode(entry))\n } else {\n params[key] = decode(match)\n }\n }\n }\n\n return params\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nexport function searchParamsToUrlQuery(\n searchParams: URLSearchParams\n): ParsedUrlQuery {\n const query: ParsedUrlQuery = {}\n for (const [key, value] of searchParams.entries()) {\n const existing = query[key]\n if (typeof existing === 'undefined') {\n query[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n query[key] = [existing, value]\n }\n }\n return query\n}\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (typeof param === 'string') {\n return param\n }\n\n if (\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(query: ParsedUrlQuery): URLSearchParams {\n const searchParams = new URLSearchParams()\n for (const [key, value] of Object.entries(query)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n searchParams.append(key, stringifyUrlQueryParam(item))\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value))\n }\n }\n return searchParams\n}\n\nexport function assign(\n target: URLSearchParams,\n ...searchParamsList: URLSearchParams[]\n): URLSearchParams {\n for (const searchParams of searchParamsList) {\n for (const key of searchParams.keys()) {\n target.delete(key)\n }\n\n for (const [key, value] of searchParams.entries()) {\n target.append(key, value)\n }\n }\n\n return target\n}\n","import type { NextApiRequestCookies } from '.'\n\n/**\n * Parse cookies from the `headers` of request\n * @param req request object\n */\n\nexport function getCookieParser(headers: {\n [key: string]: string | string[] | null | undefined\n}): () => NextApiRequestCookies {\n return function parseCookie(): NextApiRequestCookies {\n const { cookie } = headers\n\n if (!cookie) {\n return {}\n }\n\n const { parse: parseCookieFn } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie)\n }\n}\n","import type { IncomingMessage } from 'http'\nimport type { Key } from 'next/dist/compiled/path-to-regexp'\nimport type { NextParsedUrlQuery } from '../../../../server/request-meta'\nimport type { RouteHas } from '../../../../lib/load-custom-routes'\nimport type { BaseNextRequest } from '../../../../server/base-http'\n\nimport { compile, pathToRegexp } from 'next/dist/compiled/path-to-regexp'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { parseUrl } from './parse-url'\nimport {\n INTERCEPTION_ROUTE_MARKERS,\n isInterceptionRouteAppPath,\n} from './interception-routes'\nimport { getCookieParser } from '../../../../server/api-utils/get-cookie-parser'\nimport type { Params } from '../../../../server/request/params'\n\n/**\n * Ensure only a-zA-Z are used for param names for proper interpolating\n * with path-to-regexp\n */\nfunction getSafeParamName(paramName: string) {\n let newParamName = ''\n\n for (let i = 0; i < paramName.length; i++) {\n const charCode = paramName.charCodeAt(i)\n\n if (\n (charCode > 64 && charCode < 91) || // A-Z\n (charCode > 96 && charCode < 123) // a-z\n ) {\n newParamName += paramName[i]\n }\n }\n return newParamName\n}\n\nfunction escapeSegment(str: string, segmentName: string) {\n return str.replace(\n new RegExp(`:${escapeStringRegexp(segmentName)}`, 'g'),\n `__ESC_COLON_${segmentName}`\n )\n}\n\nfunction unescapeSegments(str: string) {\n return str.replace(/__ESC_COLON_/gi, ':')\n}\n\nexport function matchHas(\n req: BaseNextRequest | IncomingMessage,\n query: Params,\n has: RouteHas[] = [],\n missing: RouteHas[] = []\n): false | Params {\n const params: Params = {}\n\n const hasMatch = (hasItem: RouteHas) => {\n let value\n let key = hasItem.key\n\n switch (hasItem.type) {\n case 'header': {\n key = key!.toLowerCase()\n value = req.headers[key] as string\n break\n }\n case 'cookie': {\n if ('cookies' in req) {\n value = req.cookies[hasItem.key]\n } else {\n const cookies = getCookieParser(req.headers)()\n value = cookies[hasItem.key]\n }\n\n break\n }\n case 'query': {\n value = query[key!]\n break\n }\n case 'host': {\n const { host } = req?.headers || {}\n // remove port from host if present\n const hostname = host?.split(':', 1)[0].toLowerCase()\n value = hostname\n break\n }\n default: {\n break\n }\n }\n\n if (!hasItem.value && value) {\n params[getSafeParamName(key!)] = value\n return true\n } else if (value) {\n const matcher = new RegExp(`^${hasItem.value}$`)\n const matches = Array.isArray(value)\n ? value.slice(-1)[0].match(matcher)\n : value.match(matcher)\n\n if (matches) {\n if (Array.isArray(matches)) {\n if (matches.groups) {\n Object.keys(matches.groups).forEach((groupKey) => {\n params[groupKey] = matches.groups![groupKey]\n })\n } else if (hasItem.type === 'host' && matches[0]) {\n params.host = matches[0]\n }\n }\n return true\n }\n }\n return false\n }\n\n const allMatch =\n has.every((item) => hasMatch(item)) &&\n !missing.some((item) => hasMatch(item))\n\n if (allMatch) {\n return params\n }\n return false\n}\n\nexport function compileNonPath(value: string, params: Params): string {\n if (!value.includes(':')) {\n return value\n }\n\n for (const key of Object.keys(params)) {\n if (value.includes(`:${key}`)) {\n value = value\n .replace(\n new RegExp(`:${key}\\\\*`, 'g'),\n `:${key}--ESCAPED_PARAM_ASTERISKS`\n )\n .replace(\n new RegExp(`:${key}\\\\?`, 'g'),\n `:${key}--ESCAPED_PARAM_QUESTION`\n )\n .replace(new RegExp(`:${key}\\\\+`, 'g'), `:${key}--ESCAPED_PARAM_PLUS`)\n .replace(\n new RegExp(`:${key}(?!\\\\w)`, 'g'),\n `--ESCAPED_PARAM_COLON${key}`\n )\n }\n }\n value = value\n .replace(/(:|\\*|\\?|\\+|\\(|\\)|\\{|\\})/g, '\\\\$1')\n .replace(/--ESCAPED_PARAM_PLUS/g, '+')\n .replace(/--ESCAPED_PARAM_COLON/g, ':')\n .replace(/--ESCAPED_PARAM_QUESTION/g, '?')\n .replace(/--ESCAPED_PARAM_ASTERISKS/g, '*')\n\n // the value needs to start with a forward-slash to be compiled\n // correctly\n return compile(`/${value}`, { validate: false })(params).slice(1)\n}\n\nexport function parseDestination(args: {\n destination: string\n params: Readonly<Params>\n query: Readonly<NextParsedUrlQuery>\n}) {\n let escaped = args.destination\n for (const param of Object.keys({ ...args.params, ...args.query })) {\n if (!param) continue\n\n escaped = escapeSegment(escaped, param)\n }\n\n const parsed = parseUrl(escaped)\n\n let pathname = parsed.pathname\n if (pathname) {\n pathname = unescapeSegments(pathname)\n }\n\n let href = parsed.href\n if (href) {\n href = unescapeSegments(href)\n }\n\n let hostname = parsed.hostname\n if (hostname) {\n hostname = unescapeSegments(hostname)\n }\n\n let hash = parsed.hash\n if (hash) {\n hash = unescapeSegments(hash)\n }\n\n return {\n ...parsed,\n pathname,\n hostname,\n href,\n hash,\n }\n}\n\nexport function prepareDestination(args: {\n appendParamsToQuery: boolean\n destination: string\n params: Params\n query: NextParsedUrlQuery\n}) {\n const parsedDestination = parseDestination(args)\n\n const { hostname: destHostname, query: destQuery } = parsedDestination\n\n // The following code assumes that the pathname here includes the hash if it's\n // present.\n let destPath = parsedDestination.pathname\n if (parsedDestination.hash) {\n destPath = `${destPath}${parsedDestination.hash}`\n }\n\n const destParams: (string | number)[] = []\n\n const destPathParamKeys: Key[] = []\n pathToRegexp(destPath, destPathParamKeys)\n for (const key of destPathParamKeys) {\n destParams.push(key.name)\n }\n\n if (destHostname) {\n const destHostnameParamKeys: Key[] = []\n pathToRegexp(destHostname, destHostnameParamKeys)\n for (const key of destHostnameParamKeys) {\n destParams.push(key.name)\n }\n }\n\n const destPathCompiler = compile(\n destPath,\n // we don't validate while compiling the destination since we should\n // have already validated before we got to this point and validating\n // breaks compiling destinations with named pattern params from the source\n // e.g. /something:hello(.*) -> /another/:hello is broken with validation\n // since compile validation is meant for reversing and not for inserting\n // params from a separate path-regex into another\n { validate: false }\n )\n\n let destHostnameCompiler\n if (destHostname) {\n destHostnameCompiler = compile(destHostname, { validate: false })\n }\n\n // update any params in query values\n for (const [key, strOrArray] of Object.entries(destQuery)) {\n // the value needs to start with a forward-slash to be compiled\n // correctly\n if (Array.isArray(strOrArray)) {\n destQuery[key] = strOrArray.map((value) =>\n compileNonPath(unescapeSegments(value), args.params)\n )\n } else if (typeof strOrArray === 'string') {\n destQuery[key] = compileNonPath(unescapeSegments(strOrArray), args.params)\n }\n }\n\n // add path params to query if it's not a redirect and not\n // already defined in destination query or path\n let paramKeys = Object.keys(args.params).filter(\n (name) => name !== 'nextInternalLocale'\n )\n\n if (\n args.appendParamsToQuery &&\n !paramKeys.some((key) => destParams.includes(key))\n ) {\n for (const key of paramKeys) {\n if (!(key in destQuery)) {\n destQuery[key] = args.params[key]\n }\n }\n }\n\n let newUrl\n\n // The compiler also that the interception route marker is an unnamed param, hence '0',\n // so we need to add it to the params object.\n if (isInterceptionRouteAppPath(destPath)) {\n for (const segment of destPath.split('/')) {\n const marker = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n if (marker) {\n if (marker === '(..)(..)') {\n args.params['0'] = '(..)'\n args.params['1'] = '(..)'\n } else {\n args.params['0'] = marker\n }\n break\n }\n }\n }\n\n try {\n newUrl = destPathCompiler(args.params)\n\n const [pathname, hash] = newUrl.split('#', 2)\n if (destHostnameCompiler) {\n parsedDestination.hostname = destHostnameCompiler(args.params)\n }\n parsedDestination.pathname = pathname\n parsedDestination.hash = `${hash ? '#' : ''}${hash || ''}`\n delete (parsedDestination as any).search\n } catch (err: any) {\n if (err.message.match(/Expected .*? to not repeat, but got an array/)) {\n throw new Error(\n `To use a multi-match in the destination you must add \\`*\\` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match`\n )\n }\n throw err\n }\n\n // Query merge order lowest priority to highest\n // 1. initial URL query values\n // 2. path segment values\n // 3. destination specified query values\n parsedDestination.query = {\n ...args.query,\n ...parsedDestination.query,\n }\n\n return {\n newUrl,\n destQuery,\n parsedDestination,\n }\n}\n","import type { OutgoingHttpHeaders } from 'http'\nimport {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../lib/constants'\n\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */\nexport function fromNodeOutgoingHttpHeaders(\n nodeHeaders: OutgoingHttpHeaders\n): Headers {\n const headers = new Headers()\n for (let [key, value] of Object.entries(nodeHeaders)) {\n const values = Array.isArray(value) ? value : [value]\n for (let v of values) {\n if (typeof v === 'undefined') continue\n if (typeof v === 'number') {\n v = v.toString()\n }\n\n headers.append(key, v)\n }\n }\n return headers\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(cookiesString: string) {\n var cookiesStrings = []\n var pos = 0\n var start\n var ch\n var lastComma\n var nextStart\n var cookiesSeparatorFound\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1\n }\n return pos < cookiesString.length\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos)\n\n return ch !== '=' && ch !== ';' && ch !== ','\n }\n\n while (pos < cookiesString.length) {\n start = pos\n cookiesSeparatorFound = false\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos)\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos\n pos += 1\n\n skipWhitespace()\n nextStart = pos\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart\n cookiesStrings.push(cookiesString.substring(start, lastComma))\n start = pos\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1\n }\n } else {\n pos += 1\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length))\n }\n }\n\n return cookiesStrings\n}\n\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */\nexport function toNodeOutgoingHttpHeaders(\n headers: Headers\n): OutgoingHttpHeaders {\n const nodeHeaders: OutgoingHttpHeaders = {}\n const cookies: string[] = []\n if (headers) {\n for (const [key, value] of headers.entries()) {\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value))\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies\n } else {\n nodeHeaders[key] = value\n }\n }\n }\n return nodeHeaders\n}\n\n/**\n * Validate the correctness of a user-provided URL.\n */\nexport function validateURL(url: string | URL): string {\n try {\n return String(new URL(String(url)))\n } catch (error: any) {\n throw new Error(\n `URL is malformed \"${String(\n url\n )}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,\n { cause: error }\n )\n }\n}\n\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */\nexport function normalizeNextQueryParam(key: string): null | string {\n const prefixes = [NEXT_QUERY_PARAM_PREFIX, NEXT_INTERCEPTION_MARKER_PREFIX]\n for (const prefix of prefixes) {\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length)\n }\n }\n return null\n}\n","/**\n * Decodes a query path parameter.\n *\n * @param value - The value to decode.\n * @returns The decoded value.\n */\nexport function decodeQueryPathParameter(value: string) {\n // When deployed to Vercel, the value may be encoded, so this attempts to\n // decode it and returns the original value if it fails.\n try {\n return decodeURIComponent(value)\n } catch {\n return value\n }\n}\n","// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport * as querystring from './querystring'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nexport function formatUrl(urlObj: UrlObject) {\n let { auth, hostname } = urlObj\n let protocol = urlObj.protocol || ''\n let pathname = urlObj.pathname || ''\n let hash = urlObj.hash || ''\n let query = urlObj.query || ''\n let host: string | false = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n if (urlObj.host) {\n host = auth + urlObj.host\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n if (urlObj.port) {\n host += ':' + urlObj.port\n }\n }\n\n if (query && typeof query === 'object') {\n query = String(querystring.urlQueryToSearchParams(query as ParsedUrlQuery))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) protocol += ':'\n\n if (\n urlObj.slashes ||\n ((!protocol || slashedProtocols.test(protocol)) && host !== false)\n ) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') hash = '#' + hash\n if (search && search[0] !== '?') search = '?' + search\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n\nexport const urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes',\n]\n\nexport function formatWithValidation(url: UrlObject): string {\n if (process.env.NODE_ENV === 'development') {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key) => {\n if (!urlObjectKeys.includes(key)) {\n console.warn(\n `Unknown key passed via urlObject into url.format: ${key}`\n )\n }\n })\n }\n }\n\n return formatUrl(url)\n}\n","import type { LoadComponentsReturnType } from '../load-components'\nimport type { ServerRuntime, SizeLimit } from '../../types'\nimport type {\n ExperimentalConfig,\n NextConfigComplete,\n} from '../../server/config-shared'\nimport type { ClientReferenceManifest } from '../../build/webpack/plugins/flight-manifest-plugin'\nimport type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { AppPageModule } from '../route-modules/app-page/module'\nimport type {\n HeadData,\n LoadingModuleData,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport type { __ApiPreviewProps } from '../api-utils'\n\nimport s from 'next/dist/compiled/superstruct'\nimport type { RequestLifecycleOpts } from '../base-server'\nimport type { InstrumentationOnRequestError } from '../instrumentation/types'\nimport type { NextRequestHint } from '../web/adapter'\nimport type { BaseNextRequest } from '../base-http'\nimport type { IncomingMessage } from 'http'\nimport type { RenderResumeDataCache } from '../resume-data-cache/resume-data-cache'\n\nexport type DynamicParamTypes =\n | 'catchall'\n | 'catchall-intercepted'\n | 'optional-catchall'\n | 'dynamic'\n | 'dynamic-intercepted'\n\nconst dynamicParamTypesSchema = s.enums(['c', 'ci', 'oc', 'd', 'di'])\n\nexport type DynamicParamTypesShort = s.Infer<typeof dynamicParamTypesSchema>\n\nconst segmentSchema = s.union([\n s.string(),\n s.tuple([s.string(), s.string(), dynamicParamTypesSchema]),\n])\n\nexport type Segment = s.Infer<typeof segmentSchema>\n\n// unfortunately the tuple is not understood well by Describe so we have to\n// use any here. This does not have any impact on the runtime type since the validation\n// does work correctly.\nexport const flightRouterStateSchema: s.Describe<any> = s.tuple([\n segmentSchema,\n s.record(\n s.string(),\n s.lazy(() => flightRouterStateSchema)\n ),\n s.optional(s.nullable(s.string())),\n s.optional(\n s.nullable(\n s.union([\n s.literal('refetch'),\n s.literal('refresh'),\n s.literal('inside-shared-layout'),\n ])\n )\n ),\n s.optional(s.boolean()),\n])\n\n/**\n * Router state\n */\nexport type FlightRouterState = [\n segment: Segment,\n parallelRoutes: { [parallelRouterKey: string]: FlightRouterState },\n url?: string | null,\n /**\n * \"refresh\" and \"refetch\", despite being similarly named, have different\n * semantics:\n * - \"refetch\" is used during a request to inform the server where rendering\n * should start from.\n *\n * - \"refresh\" is used by the client to mark that a segment should re-fetch the\n * data from the server for the current segment. It uses the \"url\" property\n * above to determine where to fetch from.\n *\n * - \"inside-shared-layout\" is used during a prefetch request to inform the\n * server that even if the segment matches, it should be treated as if it's\n * within the \"new\" part of a navigation — inside the shared layout. If\n * the segment doesn't match, then it has no effect, since it would be\n * treated as new regardless. If it does match, though, the server does not\n * need to render it, because the client already has it.\n *\n * A bit confusing, but that's because it has only one extremely narrow use\n * case — during a non-PPR prefetch, the server uses it to find the first\n * loading boundary beneath a shared layout.\n *\n * TODO: We should rethink the protocol for dynamic requests. It might not\n * make sense for the client to send a FlightRouterState, since this type is\n * overloaded with concerns.\n */\n refresh?: 'refetch' | 'refresh' | 'inside-shared-layout' | null,\n isRootLayout?: boolean,\n /**\n * Only present when responding to a tree prefetch request. Indicates whether\n * there is a loading boundary somewhere in the tree. The client cache uses\n * this to determine if it can skip the data prefetch request.\n */\n hasLoadingBoundary?: HasLoadingBoundary,\n]\n\nexport const enum HasLoadingBoundary {\n // There is a loading boundary in this particular segment\n SegmentHasLoadingBoundary = 1,\n // There is a loading boundary somewhere in the subtree (but not in\n // this segment)\n SubtreeHasLoadingBoundary = 2,\n // There is no loading boundary in this segment or any of its descendants\n SubtreeHasNoLoadingBoundary = 3,\n}\n\n/**\n * Individual Flight response path\n */\nexport type FlightSegmentPath =\n // Uses `any` as repeating pattern can't be typed.\n | any[]\n // Looks somewhat like this\n | [\n segment: Segment,\n parallelRouterKey: string,\n segment: Segment,\n parallelRouterKey: string,\n segment: Segment,\n parallelRouterKey: string,\n ]\n\n/**\n * Represents a tree of segments and the Flight data (i.e. React nodes) that\n * correspond to each one. The tree is isomorphic to the FlightRouterState;\n * however in the future we want to be able to fetch arbitrary partial segments\n * without having to fetch all its children. So this response format will\n * likely change.\n */\nexport type CacheNodeSeedData = [\n segment: Segment,\n node: React.ReactNode | null,\n parallelRoutes: {\n [parallelRouterKey: string]: CacheNodeSeedData | null\n },\n loading: LoadingModuleData | Promise<LoadingModuleData>,\n isPartial: boolean,\n]\n\nexport type FlightDataSegment = [\n /* segment of the rendered slice: */ Segment,\n /* treePatch */ FlightRouterState,\n /* cacheNodeSeedData */ CacheNodeSeedData | null, // Can be null during prefetch if there's no loading component\n /* head: viewport */ HeadData,\n /* isHeadPartial */ boolean,\n]\n\nexport type FlightDataPath =\n // Uses `any` as repeating pattern can't be typed.\n | any[]\n // Looks somewhat like this\n | [\n // Holds full path to the segment.\n ...FlightSegmentPath[],\n ...FlightDataSegment,\n ]\n\n/**\n * The Flight response data\n */\nexport type FlightData = Array<FlightDataPath> | string\n\nexport type ActionResult = Promise<any>\n\nexport type ServerOnInstrumentationRequestError = (\n error: unknown,\n // The request could be middleware, node server or web server request,\n // we normalized them into an aligned format to `onRequestError` API later.\n request: NextRequestHint | BaseNextRequest | IncomingMessage,\n errorContext: Parameters<InstrumentationOnRequestError>[2]\n) => void | Promise<void>\n\nexport interface RenderOptsPartial {\n dir?: string\n previewProps: __ApiPreviewProps | undefined\n err?: Error | null\n dev?: boolean\n basePath: string\n trailingSlash: boolean\n clientReferenceManifest?: DeepReadonly<ClientReferenceManifest>\n supportsDynamicResponse: boolean\n runtime?: ServerRuntime\n serverComponents?: boolean\n enableTainting?: boolean\n assetPrefix?: string\n crossOrigin?: '' | 'anonymous' | 'use-credentials' | undefined\n nextFontManifest?: DeepReadonly<NextFontManifest>\n botType?: 'dom' | 'html' | undefined\n serveStreamingMetadata?: boolean\n incrementalCache?: import('../lib/incremental-cache').IncrementalCache\n cacheLifeProfiles?: {\n [profile: string]: import('../use-cache/cache-life').CacheLife\n }\n setIsrStatus?: (key: string, value: boolean | null) => void\n isRevalidate?: boolean\n nextExport?: boolean\n nextConfigOutput?: 'standalone' | 'export'\n onInstrumentationRequestError?: ServerOnInstrumentationRequestError\n isDraftMode?: boolean\n deploymentId?: string\n onUpdateCookies?: (cookies: string[]) => void\n loadConfig?: (\n phase: string,\n dir: string,\n customConfig?: object | null,\n rawConfig?: boolean,\n silent?: boolean\n ) => Promise<NextConfigComplete>\n serverActions?: {\n bodySizeLimit?: SizeLimit\n allowedOrigins?: string[]\n }\n params?: ParsedUrlQuery\n isPrefetch?: boolean\n htmlLimitedBots: string | undefined\n experimental: {\n /**\n * When true, it indicates that the current page supports partial\n * prerendering.\n */\n isRoutePPREnabled?: boolean\n expireTime: number | undefined\n staleTimes: ExperimentalConfig['staleTimes'] | undefined\n clientTraceMetadata: string[] | undefined\n dynamicIO: boolean\n clientSegmentCache: boolean | 'client-only'\n dynamicOnHover: boolean\n inlineCss: boolean\n authInterrupts: boolean\n }\n postponed?: string\n\n /**\n * Should wait for react stream allReady to resolve all suspense boundaries,\n * in order to perform a full page render.\n */\n shouldWaitOnAllReady?: boolean\n\n /**\n * The resume data cache that was generated for this partially prerendered\n * page during dev warmup.\n */\n devRenderResumeDataCache?: RenderResumeDataCache\n\n /**\n * When true, the page will be rendered using the static rendering to detect\n * any dynamic API's that would have stopped the page from being fully\n * statically generated.\n */\n isDebugDynamicAccesses?: boolean\n\n /**\n * The maximum length of the headers that are emitted by React and added to\n * the response.\n */\n reactMaxHeadersLength: number | undefined\n\n isStaticGeneration?: boolean\n\n /**\n * When true, the page is prerendered as a fallback shell, while allowing any\n * dynamic accesses to result in an empty shell. This is the case when there\n * are also routes prerendered with a more complete set of params.\n * Prerendering those routes would catch any invalid dynamic accesses.\n */\n allowEmptyStaticShell?: boolean\n\n /**\n * next config experimental.devtoolSegmentExplorer\n */\n devtoolSegmentExplorer?: boolean\n}\n\nexport type RenderOpts = LoadComponentsReturnType<AppPageModule> &\n RenderOptsPartial &\n RequestLifecycleOpts\n\nexport type PreloadCallbacks = (() => void)[]\n\nexport type InitialRSCPayload = {\n /** buildId */\n b: string\n /** assetPrefix */\n p: string\n /** initialCanonicalUrlParts */\n c: string[]\n /** couldBeIntercepted */\n i: boolean\n /** initialFlightData */\n f: FlightDataPath[]\n /** missingSlots */\n m: Set<string> | undefined\n /** GlobalError */\n G: [React.ComponentType<any>, React.ReactNode | undefined]\n /** postponed */\n s: boolean\n /** prerendered */\n S: boolean\n}\n\n// Response from `createFromFetch` for normal rendering\nexport type NavigationFlightResponse = {\n /** buildId */\n b: string\n /** flightData */\n f: FlightData\n /** prerendered */\n S: boolean\n}\n\n// Response from `createFromFetch` for server actions. Action's flight data can be null\nexport type ActionFlightResponse = {\n /** actionResult */\n a: ActionResult\n /** buildId */\n b: string\n /** flightData */\n f: FlightData\n}\n\nexport type RSCPayload =\n | InitialRSCPayload\n | NavigationFlightResponse\n | ActionFlightResponse\n","import type {\n FlightRouterState,\n Segment,\n} from '../../../server/app-render/types'\nimport { INTERCEPTION_ROUTE_MARKERS } from '../../../shared/lib/router/utils/interception-routes'\nimport type { Params } from '../../../server/request/params'\nimport {\n isGroupSegment,\n DEFAULT_SEGMENT_KEY,\n PAGE_SEGMENT_KEY,\n} from '../../../shared/lib/segment'\nimport { matchSegment } from '../match-segments'\n\nconst removeLeadingSlash = (segment: string): string => {\n return segment[0] === '/' ? segment.slice(1) : segment\n}\n\nconst segmentToPathname = (segment: Segment): string => {\n if (typeof segment === 'string') {\n // 'children' is not a valid path -- it's technically a parallel route that corresponds with the current segment's page\n // if we don't skip it, then the computed pathname might be something like `/children` which doesn't make sense.\n if (segment === 'children') return ''\n\n return segment\n }\n\n return segment[1]\n}\n\nfunction normalizeSegments(segments: string[]): string {\n return (\n segments.reduce((acc, segment) => {\n segment = removeLeadingSlash(segment)\n if (segment === '' || isGroupSegment(segment)) {\n return acc\n }\n\n return `${acc}/${segment}`\n }, '') || '/'\n )\n}\n\nexport function extractPathFromFlightRouterState(\n flightRouterState: FlightRouterState\n): string | undefined {\n const segment = Array.isArray(flightRouterState[0])\n ? flightRouterState[0][1]\n : flightRouterState[0]\n\n if (\n segment === DEFAULT_SEGMENT_KEY ||\n INTERCEPTION_ROUTE_MARKERS.some((m) => segment.startsWith(m))\n )\n return undefined\n\n if (segment.startsWith(PAGE_SEGMENT_KEY)) return ''\n\n const segments = [segmentToPathname(segment)]\n const parallelRoutes = flightRouterState[1] ?? {}\n\n const childrenPath = parallelRoutes.children\n ? extractPathFromFlightRouterState(parallelRoutes.children)\n : undefined\n\n if (childrenPath !== undefined) {\n segments.push(childrenPath)\n } else {\n for (const [key, value] of Object.entries(parallelRoutes)) {\n if (key === 'children') continue\n\n const childPath = extractPathFromFlightRouterState(value)\n\n if (childPath !== undefined) {\n segments.push(childPath)\n }\n }\n }\n\n return normalizeSegments(segments)\n}\n\nfunction computeChangedPathImpl(\n treeA: FlightRouterState,\n treeB: FlightRouterState\n): string | null {\n const [segmentA, parallelRoutesA] = treeA\n const [segmentB, parallelRoutesB] = treeB\n\n const normalizedSegmentA = segmentToPathname(segmentA)\n const normalizedSegmentB = segmentToPathname(segmentB)\n\n if (\n INTERCEPTION_ROUTE_MARKERS.some(\n (m) =>\n normalizedSegmentA.startsWith(m) || normalizedSegmentB.startsWith(m)\n )\n ) {\n return ''\n }\n\n if (!matchSegment(segmentA, segmentB)) {\n // once we find where the tree changed, we compute the rest of the path by traversing the tree\n return extractPathFromFlightRouterState(treeB) ?? ''\n }\n\n for (const parallelRouterKey in parallelRoutesA) {\n if (parallelRoutesB[parallelRouterKey]) {\n const changedPath = computeChangedPathImpl(\n parallelRoutesA[parallelRouterKey],\n parallelRoutesB[parallelRouterKey]\n )\n if (changedPath !== null) {\n return `${segmentToPathname(segmentB)}/${changedPath}`\n }\n }\n }\n\n return null\n}\n\nexport function computeChangedPath(\n treeA: FlightRouterState,\n treeB: FlightRouterState\n): string | null {\n const changedPath = computeChangedPathImpl(treeA, treeB)\n\n if (changedPath == null || changedPath === '/') {\n return changedPath\n }\n\n // lightweight normalization to remove route groups\n return normalizeSegments(changedPath.split('/'))\n}\n\n/**\n * Recursively extracts dynamic parameters from FlightRouterState.\n */\nexport function getSelectedParams(\n currentTree: FlightRouterState,\n params: Params = {}\n): Params {\n const parallelRoutes = currentTree[1]\n\n for (const parallelRoute of Object.values(parallelRoutes)) {\n const segment = parallelRoute[0]\n const isDynamicParameter = Array.isArray(segment)\n const segmentValue = isDynamicParameter ? segment[1] : segment\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) continue\n\n // Ensure catchAll and optional catchall are turned into an array\n const isCatchAll =\n isDynamicParameter && (segment[2] === 'c' || segment[2] === 'oc')\n\n if (isCatchAll) {\n params[segment[0]] = segment[1].split('/')\n } else if (isDynamicParameter) {\n params[segment[0]] = segment[1]\n }\n\n params = getSelectedParams(parallelRoute, params)\n }\n\n return params\n}\n","import type { Rewrite } from '../lib/load-custom-routes'\nimport type { RouteMatchFn } from '../shared/lib/router/utils/route-matcher'\nimport type { NextConfig } from './config'\nimport type { BaseNextRequest } from './base-http'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { UrlWithParsedQuery } from 'url'\n\nimport { normalizeLocalePath } from '../shared/lib/i18n/normalize-locale-path'\nimport { getPathMatch } from '../shared/lib/router/utils/path-match'\nimport { getNamedRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\nimport {\n matchHas,\n prepareDestination,\n} from '../shared/lib/router/utils/prepare-destination'\nimport { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { normalizeRscURL } from '../shared/lib/router/utils/app-paths'\nimport {\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER,\n NEXT_CACHE_REVALIDATED_TAGS_HEADER,\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../lib/constants'\nimport { normalizeNextQueryParam } from './web/utils'\nimport type { IncomingHttpHeaders, IncomingMessage } from 'http'\nimport { decodeQueryPathParameter } from './lib/decode-query-path-parameter'\nimport type { DeepReadonly } from '../shared/lib/deep-readonly'\nimport { parseReqUrl } from '../lib/url'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport { parseAndValidateFlightRouterState } from './app-render/parse-and-validate-flight-router-state'\nimport { isInterceptionRouteRewrite } from '../lib/generate-interception-routes-rewrites'\nimport { NEXT_ROUTER_STATE_TREE_HEADER } from '../client/components/app-router-headers'\nimport { getSelectedParams } from '../client/components/router-reducer/compute-changed-path'\n\nfunction filterInternalQuery(\n query: Record<string, undefined | string | string[]>,\n paramKeys: string[],\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n // this is used to pass query information in rewrites\n // but should not be exposed in final query\n delete query['nextInternalLocale']\n\n for (const key in query) {\n const isNextQueryPrefix =\n key !== NEXT_QUERY_PARAM_PREFIX && key.startsWith(NEXT_QUERY_PARAM_PREFIX)\n\n const isNextInterceptionMarkerPrefix =\n key !== NEXT_INTERCEPTION_MARKER_PREFIX &&\n key.startsWith(NEXT_INTERCEPTION_MARKER_PREFIX)\n\n if (\n isNextQueryPrefix ||\n isNextInterceptionMarkerPrefix ||\n paramKeys.includes(key) ||\n (defaultRouteRegex && Object.keys(defaultRouteRegex.groups).includes(key))\n ) {\n delete query[key]\n }\n }\n}\n\nexport function normalizeCdnUrl(\n req: BaseNextRequest | IncomingMessage,\n paramKeys: string[],\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n // make sure to normalize req.url from CDNs to strip dynamic and rewrite\n // params from the query which are added during routing\n const _parsedUrl = parseReqUrl(req.url!)\n\n // we can't normalize if we can't parse\n if (!_parsedUrl) {\n return req.url\n }\n delete (_parsedUrl as any).search\n filterInternalQuery(_parsedUrl.query, paramKeys, defaultRouteRegex)\n\n req.url = formatUrl(_parsedUrl)\n}\n\nexport function interpolateDynamicPath(\n pathname: string,\n params: ParsedUrlQuery,\n defaultRouteRegex?: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n if (!defaultRouteRegex) return pathname\n\n for (const param of Object.keys(defaultRouteRegex.groups)) {\n const { optional, repeat } = defaultRouteRegex.groups[param]\n let builtParam = `[${repeat ? '...' : ''}${param}]`\n\n if (optional) {\n builtParam = `[${builtParam}]`\n }\n\n let paramValue: string\n const value = params[param]\n\n if (Array.isArray(value)) {\n paramValue = value.map((v) => v && encodeURIComponent(v)).join('/')\n } else if (value) {\n paramValue = encodeURIComponent(value)\n } else {\n paramValue = ''\n }\n\n if (paramValue || optional) {\n pathname = pathname.replaceAll(builtParam, paramValue)\n }\n }\n\n return pathname\n}\n\nexport function normalizeDynamicRouteParams(\n query: ParsedUrlQuery,\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex>,\n defaultRouteMatches: ParsedUrlQuery,\n ignoreMissingOptional: boolean\n) {\n let hasValidParams = true\n let params: ParsedUrlQuery = {}\n\n for (const key of Object.keys(defaultRouteRegex.groups)) {\n let value: string | string[] | undefined = query[key]\n\n if (typeof value === 'string') {\n value = normalizeRscURL(value)\n } else if (Array.isArray(value)) {\n value = value.map(normalizeRscURL)\n }\n\n // if the value matches the default value we can't rely\n // on the parsed params, this is used to signal if we need\n // to parse x-now-route-matches or not\n const defaultValue = defaultRouteMatches![key]\n const isOptional = defaultRouteRegex!.groups[key].optional\n\n const isDefaultValue = Array.isArray(defaultValue)\n ? defaultValue.some((defaultVal) => {\n return Array.isArray(value)\n ? value.some((val) => val.includes(defaultVal))\n : value?.includes(defaultVal)\n })\n : value?.includes(defaultValue as string)\n\n if (\n isDefaultValue ||\n (typeof value === 'undefined' && !(isOptional && ignoreMissingOptional))\n ) {\n return { params: {}, hasValidParams: false }\n }\n\n // non-provided optional values should be undefined so normalize\n // them to undefined\n if (\n isOptional &&\n (!value ||\n (Array.isArray(value) &&\n value.length === 1 &&\n // fallback optional catch-all SSG pages have\n // [[...paramName]] for the root path on Vercel\n (value[0] === 'index' || value[0] === `[[...${key}]]`)))\n ) {\n value = undefined\n delete query[key]\n }\n\n // query values from the proxy aren't already split into arrays\n // so make sure to normalize catch-all values\n if (\n value &&\n typeof value === 'string' &&\n defaultRouteRegex!.groups[key].repeat\n ) {\n value = value.split('/')\n }\n\n if (value) {\n params[key] = value\n }\n }\n\n return {\n params,\n hasValidParams,\n }\n}\n\nexport function getServerUtils({\n page,\n i18n,\n basePath,\n rewrites,\n pageIsDynamic,\n trailingSlash,\n caseSensitive,\n}: {\n page: string\n i18n?: NextConfig['i18n']\n basePath: string\n rewrites: DeepReadonly<{\n fallback?: ReadonlyArray<Rewrite>\n afterFiles?: ReadonlyArray<Rewrite>\n beforeFiles?: ReadonlyArray<Rewrite>\n }>\n pageIsDynamic: boolean\n trailingSlash?: boolean\n caseSensitive: boolean\n}) {\n let defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n let dynamicRouteMatcher: RouteMatchFn | undefined\n let defaultRouteMatches: ParsedUrlQuery | undefined\n\n if (pageIsDynamic) {\n defaultRouteRegex = getNamedRouteRegex(page, {\n prefixRouteKeys: false,\n })\n dynamicRouteMatcher = getRouteMatcher(defaultRouteRegex)\n defaultRouteMatches = dynamicRouteMatcher(page) as ParsedUrlQuery\n }\n\n function handleRewrites(\n req: BaseNextRequest | IncomingMessage,\n parsedUrl: UrlWithParsedQuery\n ) {\n const rewriteParams: Record<string, string> = {}\n let fsPathname = parsedUrl.pathname\n\n const matchesPage = () => {\n const fsPathnameNoSlash = removeTrailingSlash(fsPathname || '')\n return (\n fsPathnameNoSlash === removeTrailingSlash(page) ||\n dynamicRouteMatcher?.(fsPathnameNoSlash)\n )\n }\n\n const checkRewrite = (rewrite: DeepReadonly<Rewrite>): boolean => {\n const matcher = getPathMatch(\n rewrite.source + (trailingSlash ? '(/)?' : ''),\n {\n removeUnnamedParams: true,\n strict: true,\n sensitive: !!caseSensitive,\n }\n )\n\n if (!parsedUrl.pathname) return false\n\n let params = matcher(parsedUrl.pathname)\n\n if ((rewrite.has || rewrite.missing) && params) {\n const hasParams = matchHas(\n req,\n parsedUrl.query,\n rewrite.has as Rewrite['has'],\n rewrite.missing as Rewrite['missing']\n )\n\n if (hasParams) {\n Object.assign(params, hasParams)\n } else {\n params = false\n }\n }\n\n if (params) {\n try {\n // An interception rewrite might reference a dynamic param for a route the user\n // is currently on, which wouldn't be extractable from the matched route params.\n // This attempts to extract the dynamic params from the provided router state.\n if (isInterceptionRouteRewrite(rewrite as Rewrite)) {\n const stateHeader =\n req.headers[NEXT_ROUTER_STATE_TREE_HEADER.toLowerCase()]\n\n if (stateHeader) {\n params = {\n ...getSelectedParams(\n parseAndValidateFlightRouterState(stateHeader)\n ),\n ...params,\n }\n }\n }\n } catch (err) {\n // this is a no-op -- we couldn't extract dynamic params from the provided router state,\n // so we'll just use the params from the route matcher\n }\n\n const { parsedDestination, destQuery } = prepareDestination({\n appendParamsToQuery: true,\n destination: rewrite.destination,\n params: params,\n query: parsedUrl.query,\n })\n\n // if the rewrite destination is external break rewrite chain\n if (parsedDestination.protocol) {\n return true\n }\n\n Object.assign(rewriteParams, destQuery, params)\n Object.assign(parsedUrl.query, parsedDestination.query)\n delete (parsedDestination as any).query\n\n // for each property in parsedUrl.query, if the value is parametrized (eg :foo), look up the value\n // in rewriteParams and replace the parametrized value with the actual value\n // this is used when the rewrite destination does not contain the original source param\n // and so the value is still parametrized and needs to be replaced with the actual rewrite param\n Object.entries(parsedUrl.query).forEach(([key, value]) => {\n if (value && typeof value === 'string' && value.startsWith(':')) {\n const paramName = value.slice(1)\n const actualValue = rewriteParams[paramName]\n if (actualValue) {\n parsedUrl.query[key] = actualValue\n }\n }\n })\n\n Object.assign(parsedUrl, parsedDestination)\n\n fsPathname = parsedUrl.pathname\n if (!fsPathname) return false\n\n if (basePath) {\n fsPathname = fsPathname.replace(new RegExp(`^${basePath}`), '') || '/'\n }\n\n if (i18n) {\n const result = normalizeLocalePath(fsPathname, i18n.locales)\n fsPathname = result.pathname\n parsedUrl.query.nextInternalLocale =\n result.detectedLocale || params.nextInternalLocale\n }\n\n if (fsPathname === page) {\n return true\n }\n\n if (pageIsDynamic && dynamicRouteMatcher) {\n const dynamicParams = dynamicRouteMatcher(fsPathname)\n if (dynamicParams) {\n parsedUrl.query = {\n ...parsedUrl.query,\n ...dynamicParams,\n }\n return true\n }\n }\n }\n return false\n }\n\n for (const rewrite of rewrites.beforeFiles || []) {\n checkRewrite(rewrite)\n }\n\n if (fsPathname !== page) {\n let finished = false\n\n for (const rewrite of rewrites.afterFiles || []) {\n finished = checkRewrite(rewrite)\n if (finished) break\n }\n\n if (!finished && !matchesPage()) {\n for (const rewrite of rewrites.fallback || []) {\n finished = checkRewrite(rewrite)\n if (finished) break\n }\n }\n }\n return rewriteParams\n }\n\n function getParamsFromRouteMatches(routeMatchesHeader: string) {\n // If we don't have a default route regex, we can't get params from route\n // matches\n if (!defaultRouteRegex) return null\n\n const { groups, routeKeys } = defaultRouteRegex\n\n const matcher = getRouteMatcher({\n re: {\n // Simulate a RegExp match from the \\`req.url\\` input\n exec: (str: string) => {\n // Normalize all the prefixed query params.\n const obj: Record<string, string> = Object.fromEntries(\n new URLSearchParams(str)\n )\n for (const [key, value] of Object.entries(obj)) {\n const normalizedKey = normalizeNextQueryParam(key)\n if (!normalizedKey) continue\n\n obj[normalizedKey] = value\n delete obj[key]\n }\n\n // Use all the named route keys.\n const result = {} as RegExpExecArray\n for (const keyName of Object.keys(routeKeys)) {\n const paramName = routeKeys[keyName]\n\n // If this param name is not a valid parameter name, then skip it.\n if (!paramName) continue\n\n const group = groups[paramName]\n const value = obj[keyName]\n\n // When we're missing a required param, we can't match the route.\n if (!group.optional && !value) return null\n\n result[group.pos] = value\n }\n\n return result\n },\n },\n groups,\n })\n\n const routeMatches = matcher(routeMatchesHeader)\n if (!routeMatches) return null\n\n return routeMatches\n }\n\n function normalizeQueryParams(\n query: Record<string, string | string[] | undefined>,\n routeParamKeys: Set<string>\n ) {\n // this is used to pass query information in rewrites\n // but should not be exposed in final query\n delete query['nextInternalLocale']\n\n for (const [key, value] of Object.entries(query)) {\n const normalizedKey = normalizeNextQueryParam(key)\n if (!normalizedKey) continue\n\n // Remove the prefixed key from the query params because we want\n // to consume it for the dynamic route matcher.\n delete query[key]\n routeParamKeys.add(normalizedKey)\n\n if (typeof value === 'undefined') continue\n\n query[normalizedKey] = Array.isArray(value)\n ? value.map((v) => decodeQueryPathParameter(v))\n : decodeQueryPathParameter(value)\n }\n }\n\n return {\n handleRewrites,\n defaultRouteRegex,\n dynamicRouteMatcher,\n defaultRouteMatches,\n normalizeQueryParams,\n getParamsFromRouteMatches,\n /**\n * Normalize dynamic route params.\n *\n * @param query - The query params to normalize.\n * @param ignoreMissingOptional - Whether to ignore missing optional params.\n * @returns The normalized params and whether they are valid.\n */\n normalizeDynamicRouteParams: (\n query: ParsedUrlQuery,\n ignoreMissingOptional: boolean\n ) => {\n if (!defaultRouteRegex || !defaultRouteMatches) {\n return { params: {}, hasValidParams: false }\n }\n\n return normalizeDynamicRouteParams(\n query,\n defaultRouteRegex,\n defaultRouteMatches,\n ignoreMissingOptional\n )\n },\n\n normalizeCdnUrl: (\n req: BaseNextRequest | IncomingMessage,\n paramKeys: string[]\n ) => normalizeCdnUrl(req, paramKeys, defaultRouteRegex),\n\n interpolateDynamicPath: (\n pathname: string,\n params: Record<string, undefined | string | string[]>\n ) => interpolateDynamicPath(pathname, params, defaultRouteRegex),\n\n filterInternalQuery: (query: ParsedUrlQuery, paramKeys: string[]) =>\n filterInternalQuery(query, paramKeys, defaultRouteRegex),\n }\n}\n\nexport function getPreviouslyRevalidatedTags(\n headers: IncomingHttpHeaders,\n previewModeId: string | undefined\n): string[] {\n return typeof headers[NEXT_CACHE_REVALIDATED_TAGS_HEADER] === 'string' &&\n headers[NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER] === previewModeId\n ? headers[NEXT_CACHE_REVALIDATED_TAGS_HEADER].split(',')\n : []\n}\n","/**\n * strip _next/data/<build-id>/ prefix and .json suffix\n */\nexport function normalizeDataPath(pathname: string) {\n pathname = pathname\n .replace(/\\/_next\\/data\\/[^/]{1,}/, '')\n .replace(/\\.json$/, '')\n\n if (pathname === '/index') {\n return '/'\n }\n return pathname\n}\n","/* eslint-disable no-redeclare */\nimport type { IncomingMessage } from 'http'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { BaseNextRequest } from './base-http'\nimport type { CloneableBody } from './body-streams'\nimport type { RouteMatch } from './route-matches/route-match'\nimport type { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\nimport type { ServerComponentsHmrCache } from './response-cache'\nimport type { PagesDevOverlayBridgeType } from '../client/components/react-dev-overlay/pages/pages-dev-overlay-bridge'\n\n// FIXME: (wyattjoh) this is a temporary solution to allow us to pass data between bundled modules\nexport const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta')\n\nexport type NextIncomingMessage = (BaseNextRequest | IncomingMessage) & {\n [NEXT_REQUEST_META]?: RequestMeta\n}\n\nexport interface RequestMeta {\n /**\n * The query that was used to make the request.\n */\n initQuery?: ParsedUrlQuery\n\n /**\n * The URL that was used to make the request.\n */\n initURL?: string\n\n /**\n * The protocol that was used to make the request.\n */\n initProtocol?: string\n\n /**\n * The body that was read from the request. This is used to allow the body to\n * be read multiple times.\n */\n clonableBody?: CloneableBody\n\n /**\n * True when the request matched a locale domain that was configured in the\n * next.config.js file.\n */\n isLocaleDomain?: boolean\n\n /**\n * True when the request had locale information stripped from the pathname\n * part of the URL.\n */\n didStripLocale?: boolean\n\n /**\n * If the request had it's URL rewritten, this is the URL it was rewritten to.\n */\n rewroteURL?: string\n\n /**\n * The cookies that were added by middleware and were added to the response.\n */\n middlewareCookie?: string[]\n\n /**\n * The match on the request for a given route.\n */\n match?: RouteMatch\n\n /**\n * The incremental cache to use for the request.\n */\n incrementalCache?: any\n\n /**\n * The server components HMR cache, only for dev.\n */\n serverComponentsHmrCache?: ServerComponentsHmrCache\n\n /**\n * Equals the segment path that was used for the prefetch RSC request.\n */\n segmentPrefetchRSCRequest?: string\n\n /**\n * True when the request is for the prefetch flight data.\n */\n isPrefetchRSCRequest?: true\n\n /**\n * True when the request is for the flight data.\n */\n isRSCRequest?: true\n\n /**\n * A search param set by the Next.js client when performing RSC requests.\n * Because some CDNs do not vary their cache entries on our custom headers,\n * this search param represents a hash of the header values. For any cached\n * RSC request, we should verify that the hash matches before responding.\n * Otherwise this can lead to cache poisoning.\n * TODO: Consider not using custom request headers at all, and instead encode\n * everything into the search param.\n */\n cacheBustingSearchParam?: string\n\n /**\n * True when the request is for the `/_next/data` route using the pages\n * router.\n */\n isNextDataReq?: true\n\n /**\n * Postponed state to use for resumption. If present it's assumed that the\n * request is for a page that has postponed (there are no guarantees that the\n * page actually has postponed though as it would incur an additional cache\n * lookup).\n */\n postponed?: string\n\n /**\n * If provided, this will be called when a response cache entry was generated\n * or looked up in the cache.\n */\n onCacheEntry?: (\n cacheEntry: any,\n requestMeta: any\n ) => Promise<boolean | void> | boolean | void\n\n /**\n * The previous revalidate before rendering 404 page for notFound: true\n */\n notFoundRevalidate?: number | false\n\n /**\n * In development, the original source page that returned a 404.\n */\n developmentNotFoundSourcePage?: string\n\n /**\n * The path we routed to and should be invoked\n */\n invokePath?: string\n\n /**\n * The specific page output we should be matching\n */\n invokeOutput?: string\n\n /**\n * The status we are invoking the request with from routing\n */\n invokeStatus?: number\n\n /**\n * The routing error we are invoking with\n */\n invokeError?: Error\n\n /**\n * The query parsed for the invocation\n */\n invokeQuery?: Record<string, undefined | string | string[]>\n\n /**\n * Whether the request is a middleware invocation\n */\n middlewareInvoke?: boolean\n\n /**\n * Whether the request should render the fallback shell or not.\n */\n renderFallbackShell?: boolean\n\n /**\n * Whether the request is for the custom error page.\n */\n customErrorRender?: true\n\n /**\n * Whether to bubble up the NoFallbackError to the caller when a 404 is\n * returned.\n */\n bubbleNoFallback?: true\n\n /**\n * True when the request had locale information inferred from the default\n * locale.\n */\n localeInferredFromDefault?: true\n\n /**\n * The locale that was inferred or explicitly set for the request.\n */\n locale?: string\n\n /**\n * The default locale that was inferred or explicitly set for the request.\n */\n defaultLocale?: string\n\n /**\n * The project dir the server is running in\n */\n projectDir?: string\n\n /**\n * Whether we are generating the fallback version of the page in dev mode\n */\n isIsrFallback?: boolean\n\n /**\n * The query after resolving routes\n */\n query?: ParsedUrlQuery\n\n /**\n * The params after resolving routes\n */\n params?: ParsedUrlQuery\n\n /**\n * The AMP validator to use in development\n */\n ampValidator?: (html: string, pathname: string) => Promise<void>\n\n /**\n * ErrorOverlay component to use in development for pages router\n */\n PagesErrorDebug?: PagesDevOverlayBridgeType\n}\n\n/**\n * Gets the request metadata. If no key is provided, the entire metadata object\n * is returned.\n *\n * @param req the request to get the metadata from\n * @param key the key to get from the metadata (optional)\n * @returns the value for the key or the entire metadata object\n */\nexport function getRequestMeta(\n req: NextIncomingMessage,\n key?: undefined\n): RequestMeta\nexport function getRequestMeta<K extends keyof RequestMeta>(\n req: NextIncomingMessage,\n key: K\n): RequestMeta[K]\nexport function getRequestMeta<K extends keyof RequestMeta>(\n req: NextIncomingMessage,\n key?: K\n): RequestMeta | RequestMeta[K] {\n const meta = req[NEXT_REQUEST_META] || {}\n return typeof key === 'string' ? meta[key] : meta\n}\n\n/**\n * Sets the request metadata.\n *\n * @param req the request to set the metadata on\n * @param meta the metadata to set\n * @returns the mutated request metadata\n */\nexport function setRequestMeta(req: NextIncomingMessage, meta: RequestMeta) {\n req[NEXT_REQUEST_META] = meta\n return meta\n}\n\n/**\n * Adds a value to the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to set\n * @param value the value to set\n * @returns the mutated request metadata\n */\nexport function addRequestMeta<K extends keyof RequestMeta>(\n request: NextIncomingMessage,\n key: K,\n value: RequestMeta[K]\n) {\n const meta = getRequestMeta(request)\n meta[key] = value\n return setRequestMeta(request, meta)\n}\n\n/**\n * Removes a key from the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to remove\n * @returns the mutated request metadata\n */\nexport function removeRequestMeta<K extends keyof RequestMeta>(\n request: NextIncomingMessage,\n key: K\n) {\n const meta = getRequestMeta(request)\n delete meta[key]\n return setRequestMeta(request, meta)\n}\n\ntype NextQueryMetadata = {\n /**\n * The `_rsc` query parameter used for cache busting to ensure that the RSC\n * requests do not get cached by the browser explicitly.\n */\n [NEXT_RSC_UNION_QUERY]?: string\n}\n\nexport type NextParsedUrlQuery = ParsedUrlQuery &\n NextQueryMetadata & {\n amp?: '1'\n }\n\nexport interface NextUrlWithParsedQuery extends UrlWithParsedQuery {\n query: NextParsedUrlQuery\n}\n","import type { PageExtensions } from '../../build/page-extensions-type'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { isAppRouteRoute } from '../is-app-route-route'\n\nexport const STATIC_METADATA_IMAGES = {\n icon: {\n filename: 'icon',\n extensions: ['ico', 'jpg', 'jpeg', 'png', 'svg'],\n },\n apple: {\n filename: 'apple-icon',\n extensions: ['jpg', 'jpeg', 'png'],\n },\n favicon: {\n filename: 'favicon',\n extensions: ['ico'],\n },\n openGraph: {\n filename: 'opengraph-image',\n extensions: ['jpg', 'jpeg', 'png', 'gif'],\n },\n twitter: {\n filename: 'twitter-image',\n extensions: ['jpg', 'jpeg', 'png', 'gif'],\n },\n} as const\n\n// Match routes that are metadata routes, e.g. /sitemap.xml, /favicon.<ext>, /<icon>.<ext>, etc.\n// TODO-METADATA: support more metadata routes with more extensions\nexport const DEFAULT_METADATA_ROUTE_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx']\n\n// Match the file extension with the dynamic multi-routes extensions\n// e.g. ([xml, js], null) -> can match `/sitemap.xml/route`, `sitemap.js/route`\n// e.g. ([png], [ts]) -> can match `/opengrapg-image.png`, `/opengraph-image.ts`\nexport const getExtensionRegexString = (\n staticExtensions: readonly string[],\n dynamicExtensions: readonly string[] | null\n) => {\n // If there's no possible multi dynamic routes, will not match any <name>[].<ext> files\n if (!dynamicExtensions || dynamicExtensions.length === 0) {\n return `(\\\\.(?:${staticExtensions.join('|')}))`\n }\n return `(?:\\\\.(${staticExtensions.join('|')})|(\\\\.(${dynamicExtensions.join('|')})))`\n}\n\n/**\n * Determine if the file is a metadata route file entry\n * @param appDirRelativePath the relative file path to app/\n * @param pageExtensions the js extensions, such as ['js', 'jsx', 'ts', 'tsx']\n * @param strictlyMatchExtensions if it's true, match the file with page extension, otherwise match the file with default corresponding extension\n * @returns if the file is a metadata route file\n */\nexport function isMetadataRouteFile(\n appDirRelativePath: string,\n pageExtensions: PageExtensions,\n strictlyMatchExtensions: boolean\n) {\n // End with the extension or optional to have the extension\n // When strictlyMatchExtensions is true, it's used for match file path;\n // When strictlyMatchExtensions, the dynamic extension is skipped but\n // static extension is kept, which is usually used for matching route path.\n const trailingMatcher = (strictlyMatchExtensions ? '' : '?') + '$'\n // Match the optional variants like /opengraph-image2, /icon-a102f4.png, etc.\n const variantsMatcher = '\\\\d?'\n // The -\\w{6} is the suffix that normalized from group routes;\n const groupSuffix = strictlyMatchExtensions ? '' : '(-\\\\w{6})?'\n\n const suffixMatcher = `${variantsMatcher}${groupSuffix}`\n\n const metadataRouteFilesRegex = [\n new RegExp(\n `^[\\\\\\\\/]robots${getExtensionRegexString(\n pageExtensions.concat('txt'),\n null\n )}${trailingMatcher}`\n ),\n new RegExp(\n `^[\\\\\\\\/]manifest${getExtensionRegexString(\n pageExtensions.concat('webmanifest', 'json'),\n null\n )}${trailingMatcher}`\n ),\n new RegExp(`^[\\\\\\\\/]favicon\\\\.ico$`),\n new RegExp(\n `[\\\\\\\\/]sitemap${getExtensionRegexString(['xml'], pageExtensions)}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.icon.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.icon.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.apple.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.apple.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.openGraph.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.openGraph.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.twitter.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.twitter.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n ]\n\n const normalizedAppDirRelativePath = normalizePathSep(appDirRelativePath)\n const matched = metadataRouteFilesRegex.some((r) =>\n r.test(normalizedAppDirRelativePath)\n )\n\n return matched\n}\n\n// Check if the route is a static metadata route, with /route suffix\n// e.g. /favicon.ico/route, /icon.png/route, etc.\n// But skip the text routes like robots.txt since they might also be dynamic.\n// Checking route path is not enough to determine if text routes is dynamic.\nexport function isStaticMetadataRoute(route: string) {\n // extract ext with regex\n const pathname = route.replace(/\\/route$/, '')\n\n const matched =\n isAppRouteRoute(route) &&\n isMetadataRouteFile(pathname, [], true) &&\n // These routes can either be built by static or dynamic entrypoints,\n // so we assume they're dynamic\n pathname !== '/robots.txt' &&\n pathname !== '/manifest.webmanifest' &&\n !pathname.endsWith('/sitemap.xml')\n\n return matched\n}\n\n/**\n * Determine if a page or pathname is a metadata page.\n *\n * The input is a page or pathname, which can be with or without page suffix /foo/page or /foo.\n * But it will not contain the /route suffix.\n *\n * .e.g\n * /robots -> true\n * /sitemap -> true\n * /foo -> false\n */\nexport function isMetadataPage(page: string) {\n const matched = !isAppRouteRoute(page) && isMetadataRouteFile(page, [], false)\n\n return matched\n}\n\n/*\n * Determine if a Next.js route is a metadata route.\n * `route` will has a route suffix.\n *\n * e.g.\n * /app/robots/route -> true\n * /robots/route -> true\n * /sitemap/[__metadata_id__]/route -> true\n * /app/sitemap/page -> false\n * /icon-a102f4/route -> true\n */\nexport function isMetadataRoute(route: string): boolean {\n let page = normalizeAppPath(route)\n .replace(/^\\/?app\\//, '')\n // Remove the dynamic route id\n .replace('/[__metadata_id__]', '')\n // Remove the /route suffix\n .replace(/\\/route$/, '')\n\n if (page[0] !== '/') page = '/' + page\n\n const matched = isAppRouteRoute(route) && isMetadataRouteFile(page, [], false)\n\n return matched\n}\n","import type { IncomingMessage, ServerResponse } from 'node:http'\nimport type { InstrumentationOnRequestError } from '../instrumentation/types'\nimport type { ParsedUrlQuery } from 'node:querystring'\nimport type { UrlWithParsedQuery } from 'node:url'\nimport type {\n PrerenderManifest,\n RequiredServerFilesManifest,\n} from '../../build'\nimport type { DevRoutesManifest } from '../lib/router-utils/setup-dev-bundler'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\n\nimport {\n BUILD_ID_FILE,\n BUILD_MANIFEST,\n CLIENT_REFERENCE_MANIFEST,\n NEXT_FONT_MANIFEST,\n PRERENDER_MANIFEST,\n REACT_LOADABLE_MANIFEST,\n ROUTES_MANIFEST,\n SERVER_FILES_MANIFEST,\n SERVER_REFERENCE_MANIFEST,\n SUBRESOURCE_INTEGRITY_MANIFEST,\n} from '../../shared/lib/constants'\nimport { parseReqUrl } from '../../lib/url'\nimport {\n normalizeLocalePath,\n type PathLocale,\n} from '../../shared/lib/i18n/normalize-locale-path'\nimport { isDynamicRoute } from '../../shared/lib/router/utils'\nimport { removePathPrefix } from '../../shared/lib/router/utils/remove-path-prefix'\nimport { getServerUtils } from '../server-utils'\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { checkIsOnDemandRevalidate } from '../api-utils'\nimport type { PreviewData } from '../../types'\nimport type { BuildManifest } from '../get-page-files'\nimport type { ReactLoadableManifest } from '../load-components'\nimport type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin'\nimport { normalizeDataPath } from '../../shared/lib/page-path/normalize-data-path'\nimport { pathHasPrefix } from '../../shared/lib/router/utils/path-has-prefix'\nimport { addRequestMeta, getRequestMeta } from '../request-meta'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { isStaticMetadataRoute } from '../../lib/metadata/is-metadata-route'\n\n/**\n * RouteModuleOptions is the options that are passed to the route module, other\n * route modules should extend this class to add specific options for their\n * route.\n */\nexport interface RouteModuleOptions<\n D extends RouteDefinition = RouteDefinition,\n U = unknown,\n> {\n readonly definition: Readonly<D>\n readonly userland: Readonly<U>\n readonly distDir: string\n readonly projectDir: string\n}\n\n/**\n * RouteHandlerContext is the base context for a route handler.\n */\nexport interface RouteModuleHandleContext {\n /**\n * Any matched parameters for the request. This is only defined for dynamic\n * routes.\n */\n params: Record<string, string | string[] | undefined> | undefined\n}\n\n/**\n * RouteModule is the base class for all route modules. This class should be\n * extended by all route modules.\n */\nexport abstract class RouteModule<\n D extends RouteDefinition = RouteDefinition,\n U = unknown,\n> {\n /**\n * The userland module. This is the module that is exported from the user's\n * code. This is marked as readonly to ensure that the module is not mutated\n * because the module (when compiled) only provides getters.\n */\n public readonly userland: Readonly<U>\n\n /**\n * The definition of the route.\n */\n public readonly definition: Readonly<D>\n\n /**\n * The shared modules that are exposed and required for the route module.\n */\n public static readonly sharedModules: any\n\n public isDev: boolean\n public distDir: string\n public projectDir: string\n public isAppRouter?: boolean\n\n constructor({\n userland,\n definition,\n distDir,\n projectDir,\n }: RouteModuleOptions<D, U>) {\n this.userland = userland\n this.definition = definition\n this.isDev = process.env.NODE_ENV === 'development'\n this.distDir = distDir\n this.projectDir = projectDir\n }\n\n public async instrumentationOnRequestError(\n req: IncomingMessage,\n ...args: Parameters<InstrumentationOnRequestError>\n ) {\n // this is only handled here for node, for edge it\n // is handled in the adapter/loader instead\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { join } = require('node:path') as typeof import('node:path')\n const projectDir =\n getRequestMeta(req, 'projectDir') ||\n join(process.cwd(), this.projectDir)\n\n const { instrumentationOnRequestError } = await import(\n '../lib/router-utils/instrumentation-globals.external'\n )\n\n return instrumentationOnRequestError(projectDir, this.distDir, ...args)\n }\n }\n\n private async loadManifests(projectDir: string, srcPage: string) {\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { loadManifestFromRelativePath } = await import(\n '../load-manifest.external'\n )\n const normalizedPagePath = normalizePagePath(srcPage)\n\n const [\n routesManifest,\n prerenderManifest,\n buildManifest,\n reactLoadableManifest,\n nextFontManifest,\n clientReferenceManifest,\n serverActionsManifest,\n subresourceIntegrityManifest,\n serverFilesManifest,\n buildId,\n ] = await Promise.all([\n loadManifestFromRelativePath<DevRoutesManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: ROUTES_MANIFEST,\n }),\n loadManifestFromRelativePath<PrerenderManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: PRERENDER_MANIFEST,\n }),\n loadManifestFromRelativePath<BuildManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: BUILD_MANIFEST,\n }),\n loadManifestFromRelativePath<ReactLoadableManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: process.env.TURBOPACK\n ? `server/${this.isAppRouter ? 'app' : 'pages'}${normalizedPagePath}/${REACT_LOADABLE_MANIFEST}`\n : REACT_LOADABLE_MANIFEST,\n handleMissing: true,\n }),\n loadManifestFromRelativePath<NextFontManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: `server/${NEXT_FONT_MANIFEST}.json`,\n }),\n this.isAppRouter && !isStaticMetadataRoute(srcPage)\n ? loadManifestFromRelativePath({\n distDir: this.distDir,\n projectDir,\n useEval: true,\n handleMissing: true,\n manifest: `server/app${srcPage.replace(/%5F/g, '_') + '_' + CLIENT_REFERENCE_MANIFEST}.js`,\n shouldCache: !this.isDev,\n })\n : undefined,\n this.isAppRouter\n ? loadManifestFromRelativePath<any>({\n distDir: this.distDir,\n projectDir,\n manifest: `server/${SERVER_REFERENCE_MANIFEST}.json`,\n handleMissing: true,\n shouldCache: !this.isDev,\n })\n : {},\n loadManifestFromRelativePath<Record<string, string>>({\n projectDir,\n distDir: this.distDir,\n manifest: `server/${SUBRESOURCE_INTEGRITY_MANIFEST}.json`,\n handleMissing: true,\n shouldCache: !this.isDev,\n }),\n this.isDev\n ? ({} as any)\n : loadManifestFromRelativePath<RequiredServerFilesManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: SERVER_FILES_MANIFEST,\n }),\n this.isDev\n ? 'development'\n : loadManifestFromRelativePath<any>({\n projectDir,\n distDir: this.distDir,\n manifest: BUILD_ID_FILE,\n skipParse: true,\n }),\n ])\n\n return {\n buildId,\n buildManifest,\n routesManifest,\n nextFontManifest,\n prerenderManifest,\n serverFilesManifest,\n reactLoadableManifest,\n clientReferenceManifest: (clientReferenceManifest as any)\n ?.__RSC_MANIFEST?.[srcPage.replace(/%5F/g, '_')],\n serverActionsManifest,\n subresourceIntegrityManifest,\n }\n }\n throw new Error('Invariant: loadManifests called for edge runtime')\n }\n\n public async prepare(\n req: IncomingMessage,\n res: ServerResponse,\n {\n srcPage,\n multiZoneDraftMode,\n }: {\n srcPage: string\n multiZoneDraftMode?: boolean\n }\n ): Promise<\n | {\n buildId: string\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n query: ParsedUrlQuery\n originalQuery: ParsedUrlQuery\n originalPathname: string\n params?: ParsedUrlQuery\n parsedUrl: UrlWithParsedQuery\n previewData: PreviewData\n pageIsDynamic: boolean\n isDraftMode: boolean\n isNextDataRequest: boolean\n buildManifest: DeepReadonly<BuildManifest>\n nextFontManifest: DeepReadonly<NextFontManifest>\n serverFilesManifest: DeepReadonly<RequiredServerFilesManifest>\n reactLoadableManifest: DeepReadonly<ReactLoadableManifest>\n routesManifest: DeepReadonly<DevRoutesManifest>\n prerenderManifest: DeepReadonly<PrerenderManifest>\n // we can't pull in the client reference type or it causes issues with\n // our pre-compiled types\n clientReferenceManifest?: any\n serverActionsManifest?: any\n subresourceIntegrityManifest?: DeepReadonly<Record<string, string>>\n isOnDemandRevalidate: boolean\n revalidateOnlyGenerated: boolean\n }\n | undefined\n > {\n // \"prepare\" is only needed for node runtime currently\n // if we want to share the normalizing logic here\n // we will need to allow passing in the i18n and similar info\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { join } = require('node:path') as typeof import('node:path')\n const projectDir =\n getRequestMeta(req, 'projectDir') ||\n join(process.cwd(), this.projectDir)\n\n const { ensureInstrumentationRegistered } = await import(\n '../lib/router-utils/instrumentation-globals.external'\n )\n // ensure instrumentation is registered and pass\n // onRequestError below\n ensureInstrumentationRegistered(projectDir, this.distDir)\n\n const manifests = await this.loadManifests(projectDir, srcPage)\n const { routesManifest, prerenderManifest } = manifests\n const { basePath, i18n, rewrites } = routesManifest\n\n if (basePath) {\n req.url = removePathPrefix(req.url || '/', basePath)\n }\n\n const parsedUrl = parseReqUrl(req.url || '/')\n // if we couldn't parse the URL we can't continue\n if (!parsedUrl) {\n return\n }\n let isNextDataRequest = false\n\n if (pathHasPrefix(parsedUrl.pathname || '/', '/_next/data')) {\n isNextDataRequest = true\n parsedUrl.pathname = normalizeDataPath(parsedUrl.pathname || '/')\n }\n let originalPathname = parsedUrl.pathname || '/'\n const originalQuery = { ...parsedUrl.query }\n const pageIsDynamic = isDynamicRoute(srcPage)\n\n let localeResult: PathLocale | undefined\n let detectedLocale: string | undefined\n\n if (i18n) {\n localeResult = normalizeLocalePath(\n parsedUrl.pathname || '/',\n i18n.locales\n )\n\n if (localeResult.detectedLocale) {\n req.url = `${localeResult.pathname}${parsedUrl.search}`\n originalPathname = localeResult.pathname\n\n if (!detectedLocale) {\n detectedLocale = localeResult.detectedLocale\n }\n }\n }\n\n const serverUtils = getServerUtils({\n page: srcPage,\n i18n,\n basePath,\n rewrites,\n pageIsDynamic,\n trailingSlash: process.env.__NEXT_TRAILING_SLASH as any as boolean,\n caseSensitive: Boolean(routesManifest.caseSensitive),\n })\n\n const domainLocale = detectDomainLocale(\n i18n?.domains,\n getHostname(parsedUrl, req.headers),\n detectedLocale\n )\n addRequestMeta(req, 'isLocaleDomain', Boolean(domainLocale))\n\n const defaultLocale = domainLocale?.defaultLocale || i18n?.defaultLocale\n\n // Ensure parsedUrl.pathname includes locale before processing\n // rewrites or they won't match correctly.\n if (defaultLocale && !detectedLocale) {\n parsedUrl.pathname = `/${defaultLocale}${parsedUrl.pathname}`\n }\n const locale =\n getRequestMeta(req, 'locale') || detectedLocale || defaultLocale\n\n const rewriteParamKeys = Object.keys(\n serverUtils.handleRewrites(req, parsedUrl)\n )\n\n // after processing rewrites we want to remove locale\n // from parsedUrl pathname\n if (i18n) {\n parsedUrl.pathname = normalizeLocalePath(\n parsedUrl.pathname || '/',\n i18n.locales\n ).pathname\n }\n\n let params: Record<string, undefined | string | string[]> | undefined =\n getRequestMeta(req, 'params')\n\n // attempt parsing from pathname\n if (!params && serverUtils.dynamicRouteMatcher) {\n const paramsMatch = serverUtils.dynamicRouteMatcher(\n normalizeDataPath(localeResult?.pathname || parsedUrl.pathname || '/')\n )\n const paramsResult = serverUtils.normalizeDynamicRouteParams(\n paramsMatch || {},\n true\n )\n\n if (paramsResult.hasValidParams) {\n params = paramsResult.params\n }\n }\n\n // Local \"next start\" expects the routing parsed query values\n // to not be present in the URL although when deployed proxies\n // will add query values from resolving the routes to pass to function.\n\n // TODO: do we want to change expectations for \"next start\"\n // to include these query values in the URL which affects asPath\n // but would match deployed behavior, e.g. a rewrite from middleware\n // that adds a query param would be in asPath as query but locally\n // it won't be in the asPath but still available in the query object\n const query = getRequestMeta(req, 'query') || {\n ...parsedUrl.query,\n }\n\n const routeParamKeys = new Set<string>()\n const combinedParamKeys = [...routeParamKeys]\n\n for (const key of rewriteParamKeys) {\n // We only want to filter rewrite param keys from the URL\n // if they are matches from the URL e.g. the key/value matches\n // before and after applying the rewrites /:path for /hello and\n // { path: 'hello' } but not for { path: 'another' } and /hello\n // TODO: we should prefix rewrite param keys the same as we do\n // for dynamic routes so we can identify them properly\n const originalValue = Array.isArray(originalQuery[key])\n ? originalQuery[key].join('')\n : originalQuery[key]\n\n const queryValue = Array.isArray(query[key])\n ? query[key].join('')\n : query[key]\n\n if (!(key in originalQuery) || originalValue === queryValue) {\n combinedParamKeys.push(key)\n }\n }\n\n serverUtils.normalizeCdnUrl(req, combinedParamKeys)\n serverUtils.normalizeQueryParams(query, routeParamKeys)\n serverUtils.filterInternalQuery(originalQuery, combinedParamKeys)\n\n if (pageIsDynamic) {\n const queryResult = serverUtils.normalizeDynamicRouteParams(query, true)\n\n req.url = serverUtils.interpolateDynamicPath(\n req.url || '/',\n params || query\n )\n parsedUrl.pathname = serverUtils.interpolateDynamicPath(\n parsedUrl.pathname || '/',\n params || query\n )\n originalPathname = serverUtils.interpolateDynamicPath(\n originalPathname,\n params || query\n )\n\n // try pulling from query if valid\n if (!params) {\n if (queryResult.hasValidParams) {\n params = Object.assign({}, queryResult.params)\n\n // If we pulled from query remove it so it's\n // only in params\n for (const key in serverUtils.defaultRouteMatches) {\n delete query[key]\n }\n } else {\n // use final params from URL matching\n const paramsMatch = serverUtils.dynamicRouteMatcher?.(\n normalizeDataPath(\n localeResult?.pathname || parsedUrl.pathname || '/'\n )\n )\n // we don't normalize these as they are allowed to be\n // the literal slug matches here e.g. /blog/[slug]\n // actually being requested\n if (paramsMatch) {\n params = Object.assign({}, paramsMatch)\n }\n }\n }\n }\n\n // Remove any normalized params from the query if they\n // weren't present as non-prefixed query key e.g.\n // ?search=1&nxtPsearch=hello we don't delete search\n for (const key of routeParamKeys) {\n if (!(key in originalQuery)) {\n delete query[key]\n }\n }\n\n const { isOnDemandRevalidate, revalidateOnlyGenerated } =\n checkIsOnDemandRevalidate(req, prerenderManifest.preview)\n\n let isDraftMode = false\n let previewData: PreviewData\n\n const { tryGetPreviewData } =\n require('../api-utils/node/try-get-preview-data') as typeof import('../api-utils/node/try-get-preview-data')\n\n previewData = tryGetPreviewData(\n req,\n res,\n prerenderManifest.preview,\n Boolean(multiZoneDraftMode)\n )\n isDraftMode = previewData !== false\n\n return {\n query,\n originalQuery,\n originalPathname,\n params,\n parsedUrl,\n locale,\n isNextDataRequest,\n locales: i18n?.locales,\n defaultLocale,\n isDraftMode,\n previewData,\n pageIsDynamic,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n ...manifests,\n serverActionsManifest: manifests.serverActionsManifest,\n clientReferenceManifest: manifests.clientReferenceManifest,\n }\n }\n }\n}\n","import { ensureLeadingSlash } from './ensure-leading-slash'\nimport { isDynamicRoute } from '../router/utils'\nimport { NormalizeError } from '../utils'\n\n/**\n * Takes a page and transforms it into its file counterpart ensuring that the\n * output is normalized. Note this function is not idempotent because a page\n * `/index` can be referencing `/index/index.js` and `/index/index` could be\n * referencing `/index/index/index.js`. Examples:\n * - `/` -> `/index`\n * - `/index/foo` -> `/index/index/foo`\n * - `/index` -> `/index/index`\n */\nexport function normalizePagePath(page: string): string {\n const normalized =\n /^\\/index(\\/|$)/.test(page) && !isDynamicRoute(page)\n ? `/index${page}`\n : page === '/'\n ? '/index'\n : ensureLeadingSlash(page)\n\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { posix } = require('path') as typeof import('path')\n const resolvedPage = posix.normalize(normalized)\n if (resolvedPage !== normalized) {\n throw new NormalizeError(\n `Requested and resolved page mismatch: ${normalized} ${resolvedPage}`\n )\n }\n }\n\n return normalized\n}\n","export function isAppRouteRoute(route: string): boolean {\n return route.endsWith('/route')\n}\n","/**\n * For a given page path, this function ensures that there is no backslash\n * escaping slashes in the path. Example:\n * - `foo\\/bar\\/baz` -> `foo/bar/baz`\n */\nexport function normalizePathSep(path: string): string {\n return path.replace(/\\\\/g, '/')\n}\n","import { pathHasPrefix } from './path-has-prefix'\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */\nexport function removePathPrefix(path: string, prefix: string): string {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path\n }\n\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length)\n\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix\n }\n\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`\n}\n","import type { Key } from 'next/dist/compiled/path-to-regexp'\nimport { pathToRegexp } from 'next/dist/compiled/path-to-regexp'\nimport { regexpToFunction } from 'next/dist/compiled/path-to-regexp'\n\ninterface Options {\n /**\n * A transformer function that will be applied to the regexp generated\n * from the provided path and path-to-regexp.\n */\n regexModifier?: (regex: string) => string\n /**\n * When true the function will remove all unnamed parameters\n * from the matched parameters.\n */\n removeUnnamedParams?: boolean\n /**\n * When true the regexp won't allow an optional trailing delimiter\n * to match.\n */\n strict?: boolean\n\n /**\n * When true the matcher will be case-sensitive, defaults to false\n */\n sensitive?: boolean\n}\n\nexport type PatchMatcher = (\n pathname: string,\n params?: Record<string, any>\n) => Record<string, any> | false\n\n/**\n * Generates a path matcher function for a given path and options based on\n * path-to-regexp. By default the match will be case insensitive, non strict\n * and delimited by `/`.\n */\nexport function getPathMatch(path: string, options?: Options): PatchMatcher {\n const keys: Key[] = []\n const regexp = pathToRegexp(path, keys, {\n delimiter: '/',\n sensitive:\n typeof options?.sensitive === 'boolean' ? options.sensitive : false,\n strict: options?.strict,\n })\n\n const matcher = regexpToFunction<Record<string, any>>(\n options?.regexModifier\n ? new RegExp(options.regexModifier(regexp.source), regexp.flags)\n : regexp,\n keys\n )\n\n /**\n * A matcher function that will check if a given pathname matches the path\n * given in the builder function. When the path does not match it will return\n * `false` but if it does it will return an object with the matched params\n * merged with the params provided in the second argument.\n */\n return (pathname, params) => {\n // If no pathname is provided it's not a match.\n if (typeof pathname !== 'string') return false\n\n const match = matcher(pathname)\n\n // If the path did not match `false` will be returned.\n if (!match) return false\n\n /**\n * If unnamed params are not allowed they must be removed from\n * the matched parameters. path-to-regexp uses \"string\" for named and\n * \"number\" for unnamed parameters.\n */\n if (options?.removeUnnamedParams) {\n for (const key of keys) {\n if (typeof key.name === 'number') {\n delete match.params[key.name]\n }\n }\n }\n\n return { ...params, ...match.params }\n }\n}\n","import { pathToRegexp } from 'next/dist/compiled/path-to-regexp'\nimport { NEXT_URL } from '../client/components/app-router-headers'\nimport {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from '../shared/lib/router/utils/interception-routes'\nimport type { Rewrite } from './load-custom-routes'\n\n// a function that converts normalised paths (e.g. /foo/[bar]/[baz]) to the format expected by pathToRegexp (e.g. /foo/:bar/:baz)\nfunction toPathToRegexpPath(path: string): string {\n return path.replace(/\\[\\[?([^\\]]+)\\]\\]?/g, (_, capture) => {\n // path-to-regexp only supports word characters, so we replace any non-word characters with underscores\n const paramName = capture.replace(/\\W+/g, '_')\n\n // handle catch-all segments (e.g. /foo/bar/[...baz] or /foo/bar/[[...baz]])\n if (capture.startsWith('...')) {\n return `:${capture.slice(3)}*`\n }\n return ':' + paramName\n })\n}\n\nexport function generateInterceptionRoutesRewrites(\n appPaths: string[],\n basePath = ''\n): Rewrite[] {\n const rewrites: Rewrite[] = []\n\n for (const appPath of appPaths) {\n if (isInterceptionRouteAppPath(appPath)) {\n const { interceptingRoute, interceptedRoute } =\n extractInterceptionRouteInformation(appPath)\n\n const normalizedInterceptingRoute = `${\n interceptingRoute !== '/' ? toPathToRegexpPath(interceptingRoute) : ''\n }/(.*)?`\n\n const normalizedInterceptedRoute = toPathToRegexpPath(interceptedRoute)\n const normalizedAppPath = toPathToRegexpPath(appPath)\n\n // pathToRegexp returns a regex that matches the path, but we need to\n // convert it to a string that can be used in a header value\n // to the format that Next/the proxy expects\n let interceptingRouteRegex = pathToRegexp(normalizedInterceptingRoute)\n .toString()\n .slice(2, -3)\n\n rewrites.push({\n source: `${basePath}${normalizedInterceptedRoute}`,\n destination: `${basePath}${normalizedAppPath}`,\n has: [\n {\n type: 'header',\n key: NEXT_URL,\n value: interceptingRouteRegex,\n },\n ],\n })\n }\n }\n\n return rewrites\n}\n\nexport function isInterceptionRouteRewrite(route: Rewrite) {\n // When we generate interception rewrites in the above implementation, we always do so with only a single `has` condition.\n return route.has?.[0]?.key === NEXT_URL\n}\n","export const RSC_HEADER = 'RSC' as const\nexport const ACTION_HEADER = 'Next-Action' as const\n// TODO: Instead of sending the full router state, we only need to send the\n// segment path. Saves bytes. Then we could also use this field for segment\n// prefetches, which also need to specify a particular segment.\nexport const NEXT_ROUTER_STATE_TREE_HEADER = 'Next-Router-State-Tree' as const\nexport const NEXT_ROUTER_PREFETCH_HEADER = 'Next-Router-Prefetch' as const\n// This contains the path to the segment being prefetched.\n// TODO: If we change Next-Router-State-Tree to be a segment path, we can use\n// that instead. Then Next-Router-Prefetch and Next-Router-Segment-Prefetch can\n// be merged into a single enum.\nexport const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER =\n 'Next-Router-Segment-Prefetch' as const\nexport const NEXT_HMR_REFRESH_HEADER = 'Next-HMR-Refresh' as const\nexport const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__' as const\nexport const NEXT_URL = 'Next-Url' as const\nexport const RSC_CONTENT_TYPE_HEADER = 'text/x-component' as const\n\nexport const FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n] as const\n\nexport const NEXT_RSC_UNION_QUERY = '_rsc' as const\n\nexport const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time' as const\nexport const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed' as const\nexport const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path' as const\nexport const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query' as const\nexport const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender' as const\n","import type { FlightRouterState } from './types'\nimport { flightRouterStateSchema } from './types'\nimport { assert } from 'next/dist/compiled/superstruct'\n\nexport function parseAndValidateFlightRouterState(\n stateHeader: string | string[]\n): FlightRouterState\nexport function parseAndValidateFlightRouterState(\n stateHeader: undefined\n): undefined\nexport function parseAndValidateFlightRouterState(\n stateHeader: string | string[] | undefined\n): FlightRouterState | undefined\nexport function parseAndValidateFlightRouterState(\n stateHeader: string | string[] | undefined\n): FlightRouterState | undefined {\n if (typeof stateHeader === 'undefined') {\n return undefined\n }\n if (Array.isArray(stateHeader)) {\n throw new Error(\n 'Multiple router state headers were sent. This is not allowed.'\n )\n }\n\n // We limit the size of the router state header to ~40kb. This is to prevent\n // a malicious user from sending a very large header and slowing down the\n // resolving of the router state.\n // This is around 2,000 nested or parallel route segment states:\n // '{\"children\":[\"\",{}]}'.length === 20.\n if (stateHeader.length > 20 * 2000) {\n throw new Error('The router state header was too large.')\n }\n\n try {\n const state = JSON.parse(decodeURIComponent(stateHeader))\n assert(state, flightRouterStateSchema)\n return state\n } catch {\n throw new Error('The router state header was sent but could not be parsed.')\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nimport { searchParamsToUrlQuery } from './querystring'\nimport { parseRelativeUrl } from './parse-relative-url'\n\nexport interface ParsedUrl {\n hash: string\n hostname?: string | null\n href: string\n pathname: string\n port?: string | null\n protocol?: string | null\n query: ParsedUrlQuery\n search: string\n slashes: boolean | undefined\n}\n\nexport function parseUrl(url: string): ParsedUrl {\n if (url.startsWith('/')) {\n return parseRelativeUrl(url)\n }\n\n const parsedURL = new URL(url)\n return {\n hash: parsedURL.hash,\n hostname: parsedURL.hostname,\n href: parsedURL.href,\n pathname: parsedURL.pathname,\n port: parsedURL.port,\n protocol: parsedURL.protocol,\n query: searchParamsToUrlQuery(parsedURL.searchParams),\n search: parsedURL.search,\n slashes:\n parsedURL.href.slice(\n parsedURL.protocol.length,\n parsedURL.protocol.length + 2\n ) === '//',\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\nimport { getLocationOrigin } from '../../utils'\nimport { searchParamsToUrlQuery } from './querystring'\n\nexport interface ParsedRelativeUrl {\n hash: string\n href: string\n pathname: string\n query: ParsedUrlQuery\n search: string\n slashes: undefined\n}\n\n/**\n * Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative\n * (e.g. `./hello`) then at least base must be.\n * Absolute urls are rejected with one exception, in the browser, absolute urls that are on\n * the current origin will be parsed as relative\n */\nexport function parseRelativeUrl(\n url: string,\n base?: string,\n parseQuery?: true\n): ParsedRelativeUrl\nexport function parseRelativeUrl(\n url: string,\n base: string | undefined,\n parseQuery: false\n): Omit<ParsedRelativeUrl, 'query'>\nexport function parseRelativeUrl(\n url: string,\n base?: string,\n parseQuery = true\n): ParsedRelativeUrl | Omit<ParsedRelativeUrl, 'query'> {\n const globalBase = new URL(\n typeof window === 'undefined' ? 'http://n' : getLocationOrigin()\n )\n\n const resolvedBase = base\n ? new URL(base, globalBase)\n : url.startsWith('.')\n ? new URL(\n typeof window === 'undefined' ? 'http://n' : window.location.href\n )\n : globalBase\n\n const { pathname, searchParams, search, hash, href, origin } = new URL(\n url,\n resolvedBase\n )\n\n if (origin !== globalBase.origin) {\n throw new Error(`invariant: invalid relative URL, router received ${url}`)\n }\n\n return {\n pathname,\n query: parseQuery ? searchParamsToUrlQuery(searchParams) : undefined,\n search,\n hash,\n href: href.slice(origin.length),\n // We don't know for relative URLs at this point since we set a custom, internal\n // base that isn't surfaced to users.\n slashes: undefined,\n }\n}\n","import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n","import type { OutgoingHttpHeaders } from 'http'\n\n/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */\nexport function getHostname(\n parsed: { hostname?: string | null },\n headers?: OutgoingHttpHeaders\n): string | undefined {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname: string\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0]\n } else if (parsed.hostname) {\n hostname = parsed.hostname\n } else return\n\n return hostname.toLowerCase()\n}\n","/**\n * FNV-1a Hash implementation\n * @author Travis Webb (tjwebb) <me@traviswebb.com>\n *\n * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js\n *\n * Simplified, optimized and add modified for 52 bit, which provides a larger hash space\n * and still making use of Javascript's 53-bit integer space.\n */\nexport const fnv1a52 = (str: string) => {\n const len = str.length\n let i = 0,\n t0 = 0,\n v0 = 0x2325,\n t1 = 0,\n v1 = 0x8422,\n t2 = 0,\n v2 = 0x9ce4,\n t3 = 0,\n v3 = 0xcbf2\n\n while (i < len) {\n v0 ^= str.charCodeAt(i++)\n t0 = v0 * 435\n t1 = v1 * 435\n t2 = v2 * 435\n t3 = v3 * 435\n t2 += v0 << 8\n t3 += v1 << 8\n t1 += t0 >>> 16\n v0 = t0 & 65535\n t2 += t1 >>> 16\n v1 = t1 & 65535\n v3 = (t3 + (t2 >>> 16)) & 65535\n v2 = t2 & 65535\n }\n\n return (\n (v3 & 15) * 281474976710656 +\n v2 * 4294967296 +\n v1 * 65536 +\n (v0 ^ (v3 >> 4))\n )\n}\n\nexport const generateETag = (payload: string, weak = false) => {\n const prefix = weak ? 'W/\"' : '\"'\n return (\n prefix + fnv1a52(payload).toString(36) + payload.length.toString(36) + '\"'\n )\n}\n","import { isPlainObject } from '../shared/lib/is-plain-object'\n\n// We allow some additional attached properties for Next.js errors\nexport interface NextError extends Error {\n type?: string\n page?: string\n code?: string | number\n cancelled?: boolean\n digest?: number\n}\n\n/**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */\nexport default function isError(err: unknown): err is NextError {\n return (\n typeof err === 'object' && err !== null && 'name' in err && 'message' in err\n )\n}\n\nfunction safeStringify(obj: any) {\n const seen = new WeakSet()\n\n return JSON.stringify(obj, (_key, value) => {\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]'\n }\n seen.add(value)\n }\n return value\n })\n}\n\nexport function getProperError(err: unknown): Error {\n if (isError(err)) {\n return err\n }\n\n if (process.env.NODE_ENV === 'development') {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return new Error(\n 'An undefined error was thrown, ' +\n 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'\n )\n }\n\n if (err === null) {\n return new Error(\n 'A null error was thrown, ' +\n 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'\n )\n }\n }\n\n return new Error(isPlainObject(err) ? safeStringify(err) : err + '')\n}\n","import type { IncomingMessage } from 'http'\n\nimport { parse } from 'next/dist/compiled/content-type'\nimport isError from '../../../lib/is-error'\nimport type { SizeLimit } from '../../../types'\nimport { ApiError } from '../index'\n\n/**\n * Parse `JSON` and handles invalid `JSON` strings\n * @param str `JSON` string\n */\nfunction parseJson(str: string): object {\n if (str.length === 0) {\n // special-case empty json body, as it's a common client-side mistake\n return {}\n }\n\n try {\n return JSON.parse(str)\n } catch (e) {\n throw new ApiError(400, 'Invalid JSON')\n }\n}\n\n/**\n * Parse incoming message like `json` or `urlencoded`\n * @param req request object\n */\nexport async function parseBody(\n req: IncomingMessage,\n limit: SizeLimit\n): Promise<any> {\n let contentType\n try {\n contentType = parse(req.headers['content-type'] || 'text/plain')\n } catch {\n contentType = parse('text/plain')\n }\n const { type, parameters } = contentType\n const encoding = parameters.charset || 'utf-8'\n\n let buffer\n\n try {\n const getRawBody =\n require('next/dist/compiled/raw-body') as typeof import('next/dist/compiled/raw-body')\n buffer = await getRawBody(req, { encoding, limit })\n } catch (e) {\n if (isError(e) && e.type === 'entity.too.large') {\n throw new ApiError(413, `Body exceeded ${limit} limit`)\n } else {\n throw new ApiError(400, 'Invalid body')\n }\n }\n\n const body = buffer.toString()\n\n if (type === 'application/json' || type === 'application/ld+json') {\n return parseJson(body)\n } else if (type === 'application/x-www-form-urlencoded') {\n const qs = require('querystring') as typeof import('querystring')\n return qs.decode(body)\n } else {\n return body\n }\n}\n","import type { NextConfigComplete } from '../../config-shared'\n\nexport type RevalidateFn = (config: {\n urlPath: string\n revalidateHeaders: { [key: string]: string | string[] }\n opts: { unstable_onlyGenerated?: boolean }\n}) => Promise<void>\n\n// The RouterServerContext contains instance specific\n// information that isn't available/relevant when\n// deployed in serverless environments, the key is\n// the relative project dir this allows separate contexts\n// when running multiple next instances in same process\nexport type RouterServerContext = Record<\n string,\n {\n // hostname the server is started with\n hostname?: string\n // revalidate function to bypass going through network\n // to invoke revalidate request (uses mocked req/res)\n revalidate?: RevalidateFn\n // current loaded public runtime config\n publicRuntimeConfig?: NextConfigComplete['publicRuntimeConfig']\n // exposing nextConfig for dev mode specifically\n nextConfig?: NextConfigComplete\n // whether running in custom server mode\n isCustomServer?: boolean\n // whether test proxy is enabled\n experimentalTestProxy?: boolean\n // allow dev server to log with original stack\n logErrorWithOriginalStack?: (err: unknown, type: string) => void\n // allow setting ISR status in dev\n setIsrStatus?: (key: string, value: boolean | null) => void\n }\n>\n\nexport const RouterServerContextSymbol = Symbol.for(\n '@next/router-server-methods'\n)\n\nexport const routerServerGlobal = globalThis as typeof globalThis & {\n [RouterServerContextSymbol]?: RouterServerContext\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextApiRequest, NextApiResponse } from '../../../shared/lib/utils'\nimport type { PageConfig, ResponseLimit } from '../../../types'\nimport type { __ApiPreviewProps } from '../.'\nimport type { CookieSerializeOptions } from 'next/dist/compiled/cookie'\n\nimport bytes from 'next/dist/compiled/bytes'\nimport { generateETag } from '../../lib/etag'\nimport { sendEtagResponse } from '../../send-payload'\nimport { Stream } from 'stream'\nimport isError from '../../../lib/is-error'\nimport { isResSent } from '../../../shared/lib/utils'\nimport { interopDefault } from '../../../lib/interop-default'\nimport {\n setLazyProp,\n sendStatusCode,\n redirect,\n clearPreviewData,\n sendError,\n ApiError,\n COOKIE_NAME_PRERENDER_BYPASS,\n COOKIE_NAME_PRERENDER_DATA,\n RESPONSE_LIMIT_DEFAULT,\n} from './../index'\nimport { getCookieParser } from './../get-cookie-parser'\nimport {\n PRERENDER_REVALIDATE_HEADER,\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER,\n} from '../../../lib/constants'\nimport { tryGetPreviewData } from './try-get-preview-data'\nimport { parseBody } from './parse-body'\nimport {\n RouterServerContextSymbol,\n routerServerGlobal,\n} from '../../lib/router-utils/router-server-context'\nimport type { InstrumentationOnRequestError } from '../../instrumentation/types'\n\ntype ApiContext = __ApiPreviewProps & {\n trustHostHeader?: boolean\n allowedRevalidateHeaderKeys?: string[]\n hostname?: string\n multiZoneDraftMode?: boolean\n dev: boolean\n projectDir: string\n}\n\nfunction getMaxContentLength(responseLimit?: ResponseLimit) {\n if (responseLimit && typeof responseLimit !== 'boolean') {\n return bytes.parse(responseLimit)\n }\n return RESPONSE_LIMIT_DEFAULT\n}\n\n/**\n * Send `any` body to response\n * @param req request object\n * @param res response object\n * @param body of response\n */\nfunction sendData(req: NextApiRequest, res: NextApiResponse, body: any): void {\n if (body === null || body === undefined) {\n res.end()\n return\n }\n\n // strip irrelevant headers/body\n if (res.statusCode === 204 || res.statusCode === 304) {\n res.removeHeader('Content-Type')\n res.removeHeader('Content-Length')\n res.removeHeader('Transfer-Encoding')\n\n if (process.env.NODE_ENV === 'development' && body) {\n console.warn(\n `A body was attempted to be set with a 204 statusCode for ${req.url}, this is invalid and the body was ignored.\\n` +\n `See more info here https://nextjs.org/docs/messages/invalid-api-status-body`\n )\n }\n res.end()\n return\n }\n\n const contentType = res.getHeader('Content-Type')\n\n if (body instanceof Stream) {\n if (!contentType) {\n res.setHeader('Content-Type', 'application/octet-stream')\n }\n body.pipe(res)\n return\n }\n\n const isJSONLike = ['object', 'number', 'boolean'].includes(typeof body)\n const stringifiedBody = isJSONLike ? JSON.stringify(body) : body\n const etag = generateETag(stringifiedBody)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n\n if (Buffer.isBuffer(body)) {\n if (!contentType) {\n res.setHeader('Content-Type', 'application/octet-stream')\n }\n res.setHeader('Content-Length', body.length)\n res.end(body)\n return\n }\n\n if (isJSONLike) {\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n }\n\n res.setHeader('Content-Length', Buffer.byteLength(stringifiedBody))\n res.end(stringifiedBody)\n}\n\n/**\n * Send `JSON` object\n * @param res response object\n * @param jsonBody of data\n */\nfunction sendJson(res: NextApiResponse, jsonBody: any): void {\n // Set header to application/json\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n\n // Use send to handle request\n res.send(JSON.stringify(jsonBody))\n}\n\nfunction isValidData(str: any): str is string {\n return typeof str === 'string' && str.length >= 16\n}\n\nfunction setDraftMode<T>(\n res: NextApiResponse<T>,\n options: {\n enable: boolean\n previewModeId?: string\n }\n): NextApiResponse<T> {\n if (!isValidData(options.previewModeId)) {\n throw new Error('invariant: invalid previewModeId')\n }\n const expires = options.enable ? undefined : new Date(0)\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, options.previewModeId, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n expires,\n }),\n ])\n return res\n}\n\nfunction setPreviewData<T>(\n res: NextApiResponse<T>,\n data: object | string, // TODO: strict runtime type checking\n options: {\n maxAge?: number\n path?: string\n } & __ApiPreviewProps\n): NextApiResponse<T> {\n if (!isValidData(options.previewModeId)) {\n throw new Error('invariant: invalid previewModeId')\n }\n if (!isValidData(options.previewModeEncryptionKey)) {\n throw new Error('invariant: invalid previewModeEncryptionKey')\n }\n if (!isValidData(options.previewModeSigningKey)) {\n throw new Error('invariant: invalid previewModeSigningKey')\n }\n\n const jsonwebtoken =\n require('next/dist/compiled/jsonwebtoken') as typeof import('next/dist/compiled/jsonwebtoken')\n const { encryptWithSecret } =\n require('../../crypto-utils') as typeof import('../../crypto-utils')\n const payload = jsonwebtoken.sign(\n {\n data: encryptWithSecret(\n Buffer.from(options.previewModeEncryptionKey),\n JSON.stringify(data)\n ),\n },\n options.previewModeSigningKey,\n {\n algorithm: 'HS256',\n ...(options.maxAge !== undefined\n ? { expiresIn: options.maxAge }\n : undefined),\n }\n )\n\n // limit preview mode cookie to 2KB since we shouldn't store too much\n // data here and browsers drop cookies over 4KB\n if (payload.length > 2048) {\n throw new Error(\n `Preview data is limited to 2KB currently, reduce how much data you are storing as preview data to continue`\n )\n }\n\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, options.previewModeId, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.maxAge !== undefined\n ? ({ maxAge: options.maxAge } as CookieSerializeOptions)\n : undefined),\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, payload, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.maxAge !== undefined\n ? ({ maxAge: options.maxAge } as CookieSerializeOptions)\n : undefined),\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n ])\n return res\n}\n\nasync function revalidate(\n urlPath: string,\n opts: {\n unstable_onlyGenerated?: boolean\n },\n req: IncomingMessage,\n context: ApiContext\n) {\n if (typeof urlPath !== 'string' || !urlPath.startsWith('/')) {\n throw new Error(\n `Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received ${urlPath}`\n )\n }\n const revalidateHeaders: HeadersInit = {\n [PRERENDER_REVALIDATE_HEADER]: context.previewModeId,\n ...(opts.unstable_onlyGenerated\n ? {\n [PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER]: '1',\n }\n : {}),\n }\n const allowedRevalidateHeaderKeys = [\n ...(context.allowedRevalidateHeaderKeys || []),\n ]\n\n if (context.trustHostHeader || context.dev) {\n allowedRevalidateHeaderKeys.push('cookie')\n }\n\n if (context.trustHostHeader) {\n allowedRevalidateHeaderKeys.push('x-vercel-protection-bypass')\n }\n\n for (const key of Object.keys(req.headers)) {\n if (allowedRevalidateHeaderKeys.includes(key)) {\n revalidateHeaders[key] = req.headers[key] as string\n }\n }\n\n const internalRevalidate =\n routerServerGlobal[RouterServerContextSymbol]?.[context.projectDir]\n ?.revalidate\n\n try {\n // We use the revalidate in router-server if available.\n // If we are operating without router-server (serverless)\n // we must go through network layer with fetch request\n if (internalRevalidate) {\n return await internalRevalidate({\n urlPath,\n revalidateHeaders,\n opts,\n })\n }\n\n if (context.trustHostHeader) {\n const res = await fetch(`https://${req.headers.host}${urlPath}`, {\n method: 'HEAD',\n headers: revalidateHeaders,\n })\n // we use the cache header to determine successful revalidate as\n // a non-200 status code can be returned from a successful revalidate\n // e.g. notFound: true returns 404 status code but is successful\n const cacheHeader =\n res.headers.get('x-vercel-cache') || res.headers.get('x-nextjs-cache')\n\n if (\n cacheHeader?.toUpperCase() !== 'REVALIDATED' &&\n res.status !== 200 &&\n !(res.status === 404 && opts.unstable_onlyGenerated)\n ) {\n throw new Error(`Invalid response ${res.status}`)\n }\n } else {\n throw new Error(\n `Invariant: missing internal router-server-methods this is an internal bug`\n )\n }\n } catch (err: unknown) {\n throw new Error(\n `Failed to revalidate ${urlPath}: ${isError(err) ? err.message : err}`\n )\n }\n}\n\nexport async function apiResolver(\n req: IncomingMessage,\n res: ServerResponse,\n query: any,\n resolverModule: any,\n apiContext: ApiContext,\n propagateError: boolean,\n dev?: boolean,\n page?: string,\n onError?: InstrumentationOnRequestError\n): Promise<void> {\n const apiReq = req as NextApiRequest\n const apiRes = res as NextApiResponse\n\n try {\n if (!resolverModule) {\n res.statusCode = 404\n res.end('Not Found')\n return\n }\n const config: PageConfig = resolverModule.config || {}\n const bodyParser = config.api?.bodyParser !== false\n const responseLimit = config.api?.responseLimit ?? true\n const externalResolver = config.api?.externalResolver || false\n\n // Parsing of cookies\n setLazyProp({ req: apiReq }, 'cookies', getCookieParser(req.headers))\n // Parsing query string\n apiReq.query = query\n // Parsing preview data\n setLazyProp({ req: apiReq }, 'previewData', () =>\n tryGetPreviewData(req, res, apiContext, !!apiContext.multiZoneDraftMode)\n )\n // Checking if preview mode is enabled\n setLazyProp({ req: apiReq }, 'preview', () =>\n apiReq.previewData !== false ? true : undefined\n )\n // Set draftMode to the same value as preview\n setLazyProp({ req: apiReq }, 'draftMode', () => apiReq.preview)\n\n // Parsing of body\n if (bodyParser && !apiReq.body) {\n apiReq.body = await parseBody(\n apiReq,\n config.api && config.api.bodyParser && config.api.bodyParser.sizeLimit\n ? config.api.bodyParser.sizeLimit\n : '1mb'\n )\n }\n\n let contentLength = 0\n const maxContentLength = getMaxContentLength(responseLimit)\n const writeData = apiRes.write\n const endResponse = apiRes.end\n apiRes.write = (...args: any[2]) => {\n contentLength += Buffer.byteLength(args[0] || '')\n return writeData.apply(apiRes, args)\n }\n apiRes.end = (...args: any[2]) => {\n if (args.length && typeof args[0] !== 'function') {\n contentLength += Buffer.byteLength(args[0] || '')\n }\n\n if (responseLimit && contentLength >= maxContentLength) {\n console.warn(\n `API response for ${req.url} exceeds ${bytes.format(\n maxContentLength\n )}. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit`\n )\n }\n\n return endResponse.apply(apiRes, args)\n }\n apiRes.status = (statusCode) => sendStatusCode(apiRes, statusCode)\n apiRes.send = (data) => sendData(apiReq, apiRes, data)\n apiRes.json = (data) => sendJson(apiRes, data)\n apiRes.redirect = (statusOrUrl: number | string, url?: string) =>\n redirect(apiRes, statusOrUrl, url)\n apiRes.setDraftMode = (options = { enable: true }) =>\n setDraftMode(apiRes, Object.assign({}, apiContext, options))\n apiRes.setPreviewData = (data, options = {}) =>\n setPreviewData(apiRes, data, Object.assign({}, apiContext, options))\n apiRes.clearPreviewData = (options = {}) =>\n clearPreviewData(apiRes, options)\n apiRes.revalidate = (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => revalidate(urlPath, opts || {}, req, apiContext)\n\n const resolver = interopDefault(resolverModule)\n let wasPiped = false\n\n if (process.env.NODE_ENV !== 'production') {\n // listen for pipe event and don't show resolve warning\n res.once('pipe', () => (wasPiped = true))\n }\n\n const apiRouteResult = await resolver(req, res)\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof apiRouteResult !== 'undefined') {\n if (apiRouteResult instanceof Response) {\n throw new Error(\n 'API route returned a Response object in the Node.js runtime, this is not supported. Please use `runtime: \"edge\"` instead: https://nextjs.org/docs/api-routes/edge-api-routes'\n )\n }\n console.warn(\n `API handler should not return a value, received ${typeof apiRouteResult}.`\n )\n }\n\n if (!externalResolver && !isResSent(res) && !wasPiped) {\n console.warn(\n `API resolved without sending a response for ${req.url}, this may result in stalled requests.`\n )\n }\n }\n } catch (err) {\n await onError?.(\n err,\n {\n method: req.method || 'GET',\n headers: req.headers,\n path: req.url || '/',\n },\n {\n routerKind: 'Pages Router',\n routePath: page || '',\n routeType: 'route',\n revalidateReason: undefined,\n }\n )\n\n if (err instanceof ApiError) {\n sendError(apiRes, err.statusCode, err.message)\n } else {\n if (dev) {\n if (isError(err)) {\n err.page = page\n }\n throw err\n }\n\n console.error(err)\n if (propagateError) {\n throw err\n }\n sendError(apiRes, 500, 'Internal Server Error')\n }\n }\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type RenderResult from './render-result'\nimport type { CacheControl } from './lib/cache-control'\n\nimport { isResSent } from '../shared/lib/utils'\nimport { generateETag } from './lib/etag'\nimport fresh from 'next/dist/compiled/fresh'\nimport { getCacheControlHeader } from './lib/cache-control'\nimport { RSC_CONTENT_TYPE_HEADER } from '../client/components/app-router-headers'\n\nexport function sendEtagResponse(\n req: IncomingMessage,\n res: ServerResponse,\n etag: string | undefined\n): boolean {\n if (etag) {\n /**\n * The server generating a 304 response MUST generate any of the\n * following header fields that would have been sent in a 200 (OK)\n * response to the same request: Cache-Control, Content-Location, Date,\n * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1\n */\n res.setHeader('ETag', etag)\n }\n\n if (fresh(req.headers, { etag })) {\n res.statusCode = 304\n res.end()\n return true\n }\n\n return false\n}\n\nexport async function sendRenderResult({\n req,\n res,\n result,\n type,\n generateEtags,\n poweredByHeader,\n cacheControl,\n}: {\n req: IncomingMessage\n res: ServerResponse\n result: RenderResult\n type: 'html' | 'json' | 'rsc'\n generateEtags: boolean\n poweredByHeader: boolean\n cacheControl: CacheControl | undefined\n}): Promise<void> {\n if (isResSent(res)) {\n return\n }\n\n if (poweredByHeader && type === 'html') {\n res.setHeader('X-Powered-By', 'Next.js')\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', getCacheControlHeader(cacheControl))\n }\n\n const payload = result.isDynamic ? null : result.toUnchunkedString()\n\n if (generateEtags && payload !== null) {\n const etag = generateETag(payload)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n }\n\n if (!res.getHeader('Content-Type')) {\n res.setHeader(\n 'Content-Type',\n result.contentType\n ? result.contentType\n : type === 'rsc'\n ? RSC_CONTENT_TYPE_HEADER\n : type === 'json'\n ? 'application/json'\n : 'text/html; charset=utf-8'\n )\n }\n\n if (payload) {\n res.setHeader('Content-Length', Buffer.byteLength(payload))\n }\n\n if (req.method === 'HEAD') {\n res.end(null)\n return\n }\n\n if (payload !== null) {\n res.end(payload)\n return\n }\n\n // Pipe the render result to the response after we get a writer for it.\n await result.pipeToNodeResponse(res)\n}\n","export function interopDefault(mod: any) {\n return mod.default || mod\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type { PagesAPIRouteDefinition } from '../../route-definitions/pages-api-route-definition'\nimport type { PageConfig } from '../../../types'\nimport type { ParsedUrlQuery } from 'querystring'\nimport { wrapApiHandler, type __ApiPreviewProps } from '../../api-utils'\nimport type { RouteModuleOptions } from '../route-module'\n\nimport { RouteModule, type RouteModuleHandleContext } from '../route-module'\nimport { apiResolver } from '../../api-utils/node/api-resolver'\n\ntype PagesAPIHandleFn = (\n req: IncomingMessage,\n res: ServerResponse\n) => Promise<void>\n\n/**\n * The PagesAPIModule is the type of the module exported by the bundled Pages\n * API module.\n */\nexport type PagesAPIModule = typeof import('../../../build/templates/pages-api')\n\ntype PagesAPIUserlandModule = {\n /**\n * The exported handler method.\n */\n readonly default: PagesAPIHandleFn\n\n /**\n * The exported page config.\n */\n readonly config?: PageConfig\n}\n\ntype PagesAPIRouteHandlerContext = RouteModuleHandleContext & {\n /**\n * The incoming server request in non-edge runtime.\n */\n req?: IncomingMessage\n\n /**\n * The outgoing server response in non-edge runtime.\n */\n res?: ServerResponse\n\n /**\n * The hostname for the request.\n */\n hostname?: string\n\n /**\n * Keys allowed in the revalidate call.\n */\n allowedRevalidateHeaderKeys?: string[]\n\n /**\n * Whether to trust the host header.\n */\n trustHostHeader?: boolean\n\n /**\n * The query for the request.\n */\n query: ParsedUrlQuery\n\n /**\n * The preview props used by the `preview` API.\n */\n previewProps: __ApiPreviewProps\n\n /**\n * True if the server is in development mode.\n */\n dev: boolean\n\n /**\n * Whether errors should be left uncaught to handle\n * higher up\n */\n propagateError: boolean\n\n /**\n * The page that's being rendered.\n */\n page: string\n\n /**\n * The error handler for the request.\n */\n onError?: Parameters<typeof apiResolver>[8]\n\n /**\n * whether multi-zone flag is enabled for draft mode\n */\n multiZoneDraftMode?: boolean\n\n /**\n * The relative project directory\n */\n projectDir: string\n}\n\nexport type PagesAPIRouteModuleOptions = RouteModuleOptions<\n PagesAPIRouteDefinition,\n PagesAPIUserlandModule\n>\n\nexport class PagesAPIRouteModule extends RouteModule<\n PagesAPIRouteDefinition,\n PagesAPIUserlandModule\n> {\n private apiResolverWrapped: typeof apiResolver\n\n constructor(options: PagesAPIRouteModuleOptions) {\n super(options)\n\n if (typeof options.userland.default !== 'function') {\n throw new Error(\n `Page ${options.definition.page} does not export a default function.`\n )\n }\n\n this.apiResolverWrapped = wrapApiHandler(\n options.definition.page,\n apiResolver\n )\n }\n\n /**\n *\n * @param req the incoming server request\n * @param res the outgoing server response\n * @param context the context for the render\n */\n public async render(\n req: IncomingMessage,\n res: ServerResponse,\n context: PagesAPIRouteHandlerContext\n ): Promise<void> {\n const { apiResolverWrapped } = this\n await apiResolverWrapped(\n req,\n res,\n context.query,\n this.userland,\n {\n ...context.previewProps,\n trustHostHeader: context.trustHostHeader,\n allowedRevalidateHeaderKeys: context.allowedRevalidateHeaderKeys,\n hostname: context.hostname,\n multiZoneDraftMode: context.multiZoneDraftMode,\n dev: context.dev,\n projectDir: context.projectDir,\n },\n context.propagateError,\n context.dev,\n context.page,\n context.onError\n )\n }\n}\n\nexport default PagesAPIRouteModule\n"],"names":["Object","Date","Boolean","encodeURIComponent","Map","decodeURIComponent","Number","Symbol","Array","n","r","JSON","e","i","Math","o","s","u","isNaN","parseFloat","parseInt","__dirname","__nccwpck_require__","TypeError","String","a","isFinite","NaN","g","RegExp","NEXT_QUERY_PARAM_PREFIX","NEXT_INTERCEPTION_MARKER_PREFIX","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","wrapApiHandler","page","handler","args","getTracer","setRootSpanAttribute","trace","NodeSpan","spanName","sendStatusCode","res","statusCode","redirect","statusOrUrl","url","Error","writeHead","Location","write","end","checkIsOnDemandRevalidate","req","previewProps","headers","HeadersAdapter","isOnDemandRevalidate","previewModeId","get","revalidateOnlyGenerated","has","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","SYMBOL_CLEARED_COOKIES","clearPreviewData","options","serialize","require","previous","getHeader","setHeader","isArray","expires","httpOnly","sameSite","secure","process","path","undefined","defineProperty","value","enumerable","ApiError","constructor","message","sendError","statusMessage","setLazyProp","prop","getter","opts","configurable","optsReset","writable","set","tryGetPreviewData","multiZoneDraftMode","cookies","encryptedPreviewData","RequestCookies","tokenPreviewData","data","jsonwebtoken","verify","previewModeSigningKey","decryptWithSecret","decryptedPreviewData","Buffer","from","previewModeEncryptionKey","parse","CIPHER_ALGORITHM","encryptWithSecret","secret","iv","crypto","salt","key","cipher","encrypted","concat","update","final","tag","getAuthTag","toString","encryptedData","buffer","slice","CIPHER_SALT_LENGTH","decipher","setAuthTag","ReflectAdapter","target","receiver","Reflect","bind","deleteProperty","ReadonlyHeadersError","callable","Headers","Proxy","lowercased","toLowerCase","original","keys","find","seal","merge","join","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","values","iterator","module","t","f","Set","console","COMPILER_NAMES","client","server","edgeServer","parseReqUrl","parsedUrl","parseUrl","parsed","URL","query","searchParams","getAll","length","hash","search","pathname","href","host","hostname","auth","protocol","slashes","port","cache","WeakMap","normalizeLocalePath","locales","detectedLocale","lowercasedLocales","map","locale","segments","split","segment","index","indexOf","ensureLeadingSlash","startsWith","normalizeRscURL","replace","INTERCEPTION_ROUTE_MARKERS","isInterceptionRouteAppPath","m","TEST_ROUTE","TEST_STRICT_ROUTE","isDynamicRoute","route","strict","extractInterceptionRouteInformation","interceptingRoute","marker","interceptedRoute","reduce","endsWith","splitInterceptingRoute","test","pathHasPrefix","prefix","parsePath","hashIndex","queryIndex","hasQuery","substring","reHasRegExp","reReplaceRegExp","escapeStringRegexp","str","removeTrailingSlash","PARAMETER_PATTERN","parseMatchedParameter","param","optional","repeat","getSafeKeyFromSegment","pattern","interceptionMarker","getSafeRouteKey","routeKeys","keyPrefix","backreferenceDuplicateKeys","cleanedKey","invalidKey","duplicateKey","interceptionPrefix","SP","performance","every","method","DecodeError","NormalizeError","getRouteMatcher","re","groups","routeMatch","exec","decode","params","group","match","pos","entry","searchParamsToUrlQuery","stringifyUrlQueryParam","getCookieParser","cookie","parseCookieFn","unescapeSegments","compileNonPath","includes","compile","validate","normalizeNextQueryParam","decodeQueryPathParameter","slashedProtocols","dynamicParamTypesSchema","segmentSchema","flightRouterStateSchema","removeLeadingSlash","filterInternalQuery","paramKeys","defaultRouteRegex","isNextQueryPrefix","isNextInterceptionMarkerPrefix","normalizeDataPath","NEXT_REQUEST_META","for","getRequestMeta","meta","STATIC_METADATA_IMAGES","icon","filename","extensions","apple","openGraph","twitter","getExtensionRegexString","staticExtensions","dynamicExtensions","RouteModule","userland","definition","distDir","projectDir","isDev","instrumentationOnRequestError","cwd","loadManifests","srcPage","loadManifestFromRelativePath","normalized","posix","resolvedPage","normalize","routesManifest","prerenderManifest","buildManifest","reactLoadableManifest","nextFontManifest","clientReferenceManifest","serverActionsManifest","subresourceIntegrityManifest","serverFilesManifest","buildId","Promise","all","manifest","handleMissing","isAppRouter","isStaticMetadataRoute","isAppRouteRoute","isMetadataRouteFile","appDirRelativePath","pageExtensions","strictlyMatchExtensions","trailingMatcher","suffixMatcher","metadataRouteFilesRegex","normalizedAppDirRelativePath","some","useEval","shouldCache","skipParse","__RSC_MANIFEST","prepare","localeResult","previewData","ensureInstrumentationRegistered","manifests","basePath","i18n","rewrites","removePathPrefix","withoutPrefix","isNextDataRequest","originalPathname","originalQuery","pageIsDynamic","serverUtils","getServerUtils","trailingSlash","caseSensitive","dynamicRouteMatcher","defaultRouteMatches","getNamedRouteRegex","normalizedRoute","result","getNamedParametrizedRoute","prefixRouteKeys","includeSuffix","includePrefix","routeKey","j","fromCharCode","floor","hasInterceptionMarker","paramMatches","namedParameterizedRoute","namedRegex","excludeOptionalTrailingSlash","getRouteRegex","parameterizedRoute","getParametrizedRoute","groupIndex","markerMatch","handleRewrites","rewriteParams","fsPathname","checkRewrite","rewrite","matcher","getPathMatch","regexp","pathToRegexp","delimiter","sensitive","regexpToFunction","regexModifier","source","flags","removeUnnamedParams","missing","hasParams","matchHas","hasMatch","hasItem","type","getSafeParamName","paramName","newParamName","charCode","charCodeAt","matches","groupKey","item","assign","stateHeader","getSelectedParams","currentTree","parallelRoute","isDynamicParameter","segmentValue","parseAndValidateFlightRouterState","state","assert","err","parsedDestination","destQuery","prepareDestination","destHostnameCompiler","newUrl","parseDestination","escaped","destination","parseRelativeUrl","base","parseQuery","globalBase","resolvedBase","origin","parsedURL","destHostname","destPath","destParams","destPathParamKeys","destHostnameParamKeys","destPathCompiler","strOrArray","filter","appendParamsToQuery","actualValue","nextInternalLocale","dynamicParams","beforeFiles","finished","afterFiles","matchesPage","fsPathnameNoSlash","fallback","normalizeQueryParams","routeParamKeys","normalizedKey","add","v","getParamsFromRouteMatches","routeMatchesHeader","routeMatches","obj","fromEntries","URLSearchParams","keyName","normalizeDynamicRouteParams","ignoreMissingOptional","hasValidParams","defaultValue","isOptional","isDefaultValue","defaultVal","val","normalizeCdnUrl","_parsedUrl","formatUrl","urlObj","querystring","interpolateDynamicPath","paramValue","builtParam","replaceAll","env","__NEXT_TRAILING_SLASH","domainLocale","detectDomainLocale","domainItems","domain","defaultLocale","domains","getHostname","addRequestMeta","request","rewriteParamKeys","paramsMatch","paramsResult","combinedParamKeys","originalValue","queryValue","queryResult","preview","isDraftMode","fnv1a52","len","t0","v0","t1","v1","t2","v2","t3","v3","generateETag","payload","weak","isError","parseBody","limit","contentType","parameters","encoding","charset","getRawBody","body","parseJson","qs","RouterServerContextSymbol","routerServerGlobal","globalThis","isValidData","revalidate","urlPath","context","revalidateHeaders","unstable_onlyGenerated","allowedRevalidateHeaderKeys","trustHostHeader","dev","internalRevalidate","fetch","cacheHeader","toUpperCase","status","apiResolver","resolverModule","apiContext","propagateError","onError","config","bodyParser","api","responseLimit","externalResolver","apiReq","sizeLimit","contentLength","maxContentLength","bytes","writeData","apiRes","endResponse","byteLength","apply","warn","send","sendData","etag","removeHeader","Stream","pipe","isJSONLike","stringifiedBody","stringify","fresh","isBuffer","json","setDraftMode","enable","setPreviewData","sign","algorithm","maxAge","expiresIn","resolver","mod","default","routerKind","routePath","routeType","revalidateReason","error","PagesAPIRouteModule","apiResolverWrapped","render"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67]}
1
+ {"version":3,"file":"pages-api.runtime.prod.js","sources":["webpack://next/./dist/compiled/@edge-runtime/cookies/index.js","webpack://next/./dist/compiled/bytes/index.js","webpack://next/./dist/compiled/content-type/index.js","webpack://next/./dist/compiled/cookie/index.js","webpack://next/./dist/compiled/fresh/index.js","webpack://next/./dist/compiled/path-to-regexp/index.js","webpack://next/./dist/src/lib/constants.ts","webpack://next/./dist/src/server/api-utils/index.ts","webpack://next/./dist/src/server/api-utils/node/try-get-preview-data.ts","webpack://next/./dist/src/server/crypto-utils.ts","webpack://next/./dist/src/server/lib/trace/constants.ts","webpack://next/./dist/src/server/web/spec-extension/adapters/reflect.ts","webpack://next/./dist/src/server/web/spec-extension/adapters/headers.ts","webpack://next/./dist/src/shared/lib/modern-browserslist-target.js","webpack://next/./dist/compiled/superstruct/index.cjs","webpack://next/webpack/runtime/compat_get_default_export","webpack://next/webpack/runtime/create_fake_namespace_object","webpack://next/webpack/runtime/define_property_getters","webpack://next/webpack/runtime/has_own_property","webpack://next/webpack/runtime/make_namespace_object","webpack://next/./dist/src/shared/lib/constants.ts","webpack://next/./dist/src/lib/url.ts","webpack://next/./dist/src/shared/lib/i18n/normalize-locale-path.ts","webpack://next/./dist/src/shared/lib/page-path/ensure-leading-slash.ts","webpack://next/./dist/src/shared/lib/router/utils/app-paths.ts","webpack://next/./dist/src/shared/lib/router/utils/interception-routes.ts","webpack://next/./dist/src/shared/lib/router/utils/is-dynamic.ts","webpack://next/./dist/src/shared/lib/segment.ts","webpack://next/./dist/src/shared/lib/router/utils/path-has-prefix.ts","webpack://next/./dist/src/shared/lib/router/utils/parse-path.ts","webpack://next/./dist/src/shared/lib/escape-regexp.ts","webpack://next/./dist/src/shared/lib/router/utils/remove-trailing-slash.ts","webpack://next/./dist/src/shared/lib/router/utils/route-regex.ts","webpack://next/./dist/src/shared/lib/utils.ts","webpack://next/./dist/src/shared/lib/router/utils/route-matcher.ts","webpack://next/./dist/src/shared/lib/router/utils/querystring.ts","webpack://next/./dist/src/server/api-utils/get-cookie-parser.ts","webpack://next/./dist/src/shared/lib/router/utils/prepare-destination.ts","webpack://next/./dist/src/server/web/utils.ts","webpack://next/./dist/src/server/lib/decode-query-path-parameter.ts","webpack://next/./dist/src/shared/lib/router/utils/format-url.ts","webpack://next/./dist/src/server/app-render/types.ts","webpack://next/./dist/src/client/components/router-reducer/compute-changed-path.ts","webpack://next/./dist/src/server/server-utils.ts","webpack://next/./dist/src/shared/lib/page-path/normalize-data-path.ts","webpack://next/./dist/src/server/request-meta.ts","webpack://next/./dist/src/lib/metadata/is-metadata-route.ts","webpack://next/./dist/src/server/route-modules/route-module.ts","webpack://next/./dist/src/shared/lib/page-path/normalize-page-path.ts","webpack://next/./dist/src/lib/is-app-route-route.ts","webpack://next/./dist/src/shared/lib/page-path/normalize-path-sep.ts","webpack://next/./dist/src/shared/lib/router/utils/remove-path-prefix.ts","webpack://next/./dist/src/shared/lib/router/utils/path-match.ts","webpack://next/./dist/src/lib/generate-interception-routes-rewrites.ts","webpack://next/./dist/src/client/components/app-router-headers.ts","webpack://next/./dist/src/server/app-render/parse-and-validate-flight-router-state.tsx","webpack://next/./dist/src/shared/lib/router/utils/parse-url.ts","webpack://next/./dist/src/shared/lib/router/utils/parse-relative-url.ts","webpack://next/./dist/src/shared/lib/i18n/detect-domain-locale.ts","webpack://next/./dist/src/shared/lib/get-hostname.ts","webpack://next/./dist/src/server/lib/etag.ts","webpack://next/./dist/src/lib/is-error.ts","webpack://next/./dist/src/server/api-utils/node/parse-body.ts","webpack://next/./dist/src/server/lib/router-utils/router-server-context.ts","webpack://next/./dist/src/server/api-utils/node/api-resolver.ts","webpack://next/./dist/src/server/send-payload.ts","webpack://next/./dist/src/lib/interop-default.ts","webpack://next/./dist/src/server/route-modules/pages-api/module.ts"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestCookies,\n ResponseCookies,\n parseCookie,\n parseSetCookie,\n stringifyCookie\n});\n","(()=>{\"use strict\";var e={56:e=>{\n/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\ne.exports=bytes;e.exports.format=format;e.exports.parse=parse;var r=/\\B(?=(\\d{3})+(?!\\d))/g;var a=/(?:\\.0*|(\\.[^0]+)0+)$/;var t={b:1,kb:1<<10,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)};var i=/^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;function bytes(e,r){if(typeof e===\"string\"){return parse(e)}if(typeof e===\"number\"){return format(e,r)}return null}function format(e,i){if(!Number.isFinite(e)){return null}var n=Math.abs(e);var o=i&&i.thousandsSeparator||\"\";var s=i&&i.unitSeparator||\"\";var f=i&&i.decimalPlaces!==undefined?i.decimalPlaces:2;var u=Boolean(i&&i.fixedDecimals);var p=i&&i.unit||\"\";if(!p||!t[p.toLowerCase()]){if(n>=t.pb){p=\"PB\"}else if(n>=t.tb){p=\"TB\"}else if(n>=t.gb){p=\"GB\"}else if(n>=t.mb){p=\"MB\"}else if(n>=t.kb){p=\"KB\"}else{p=\"B\"}}var b=e/t[p.toLowerCase()];var l=b.toFixed(f);if(!u){l=l.replace(a,\"$1\")}if(o){l=l.split(\".\").map((function(e,a){return a===0?e.replace(r,o):e})).join(\".\")}return l+s+p}function parse(e){if(typeof e===\"number\"&&!isNaN(e)){return e}if(typeof e!==\"string\"){return null}var r=i.exec(e);var a;var n=\"b\";if(!r){a=parseInt(e,10);n=\"b\"}else{a=parseFloat(r[1]);n=r[4].toLowerCase()}return Math.floor(t[n]*a)}}};var r={};function __nccwpck_require__(a){var t=r[a];if(t!==undefined){return t.exports}var i=r[a]={exports:{}};var n=true;try{e[a](i,i.exports,__nccwpck_require__);n=false}finally{if(n)delete r[a]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var a=__nccwpck_require__(56);module.exports=a})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */var t=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g;var a=/^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/;var n=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;var i=/\\\\([\\u000b\\u0020-\\u00ff])/g;var o=/([\\\\\"])/g;var f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;r.format=format;r.parse=parse;function format(e){if(!e||typeof e!==\"object\"){throw new TypeError(\"argument obj is required\")}var r=e.parameters;var t=e.type;if(!t||!f.test(t)){throw new TypeError(\"invalid type\")}var a=t;if(r&&typeof r===\"object\"){var i;var o=Object.keys(r).sort();for(var u=0;u<o.length;u++){i=o[u];if(!n.test(i)){throw new TypeError(\"invalid parameter name\")}a+=\"; \"+i+\"=\"+qstring(r[i])}}return a}function parse(e){if(!e){throw new TypeError(\"argument string is required\")}var r=typeof e===\"object\"?getcontenttype(e):e;if(typeof r!==\"string\"){throw new TypeError(\"argument string is required to be a string\")}var a=r.indexOf(\";\");var n=a!==-1?r.substr(0,a).trim():r.trim();if(!f.test(n)){throw new TypeError(\"invalid media type\")}var o=new ContentType(n.toLowerCase());if(a!==-1){var u;var p;var s;t.lastIndex=a;while(p=t.exec(r)){if(p.index!==a){throw new TypeError(\"invalid parameter format\")}a+=p[0].length;u=p[1].toLowerCase();s=p[2];if(s[0]==='\"'){s=s.substr(1,s.length-2).replace(i,\"$1\")}o.parameters[u]=s}if(a!==r.length){throw new TypeError(\"invalid parameter format\")}}return o}function getcontenttype(e){var r;if(typeof e.getHeader===\"function\"){r=e.getHeader(\"content-type\")}else if(typeof e.headers===\"object\"){r=e.headers&&e.headers[\"content-type\"]}if(typeof r!==\"string\"){throw new TypeError(\"content-type header is missing from object\")}return r}function qstring(e){var r=String(e);if(n.test(r)){return r}if(r.length>0&&!a.test(r)){throw new TypeError(\"invalid parameter value\")}return'\"'+r.replace(o,\"\\\\$1\")+'\"'}function ContentType(e){this.parameters=Object.create(null);this.type=e}})();module.exports=e})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */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})();","(()=>{\"use strict\";var e={695:e=>{\n/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\nvar r=/(?:^|,)\\s*?no-cache\\s*?(?:,|$)/;e.exports=fresh;function fresh(e,a){var t=e[\"if-modified-since\"];var s=e[\"if-none-match\"];if(!t&&!s){return false}var i=e[\"cache-control\"];if(i&&r.test(i)){return false}if(s&&s!==\"*\"){var f=a[\"etag\"];if(!f){return false}var n=true;var u=parseTokenList(s);for(var _=0;_<u.length;_++){var o=u[_];if(o===f||o===\"W/\"+f||\"W/\"+o===f){n=false;break}}if(n){return false}}if(t){var p=a[\"last-modified\"];var v=!p||!(parseHttpDate(p)<=parseHttpDate(t));if(v){return false}}return true}function parseHttpDate(e){var r=e&&Date.parse(e);return typeof r===\"number\"?r:NaN}function parseTokenList(e){var r=0;var a=[];var t=0;for(var s=0,i=e.length;s<i;s++){switch(e.charCodeAt(s)){case 32:if(t===r){t=r=s+1}break;case 44:a.push(e.substring(t,r));t=r=s+1;break;default:r=s+1;break}}a.push(e.substring(t,r));return a}}};var r={};function __nccwpck_require__(a){var t=r[a];if(t!==undefined){return t.exports}var s=r[a]={exports:{}};var i=true;try{e[a](s,s.exports,__nccwpck_require__);i=false}finally{if(i)delete r[a]}return s.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var a=__nccwpck_require__(695);module.exports=a})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;Object.defineProperty(r,\"__esModule\",{value:true});function lexer(e){var r=[];var n=0;while(n<e.length){var t=e[n];if(t===\"*\"||t===\"+\"||t===\"?\"){r.push({type:\"MODIFIER\",index:n,value:e[n++]});continue}if(t===\"\\\\\"){r.push({type:\"ESCAPED_CHAR\",index:n++,value:e[n++]});continue}if(t===\"{\"){r.push({type:\"OPEN\",index:n,value:e[n++]});continue}if(t===\"}\"){r.push({type:\"CLOSE\",index:n,value:e[n++]});continue}if(t===\":\"){var i=\"\";var a=n+1;while(a<e.length){var o=e.charCodeAt(a);if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){i+=e[a++];continue}break}if(!i)throw new TypeError(\"Missing parameter name at \"+n);r.push({type:\"NAME\",index:n,value:i});n=a;continue}if(t===\"(\"){var f=1;var u=\"\";var a=n+1;if(e[a]===\"?\"){throw new TypeError('Pattern cannot start with \"?\" at '+a)}while(a<e.length){if(e[a]===\"\\\\\"){u+=e[a++]+e[a++];continue}if(e[a]===\")\"){f--;if(f===0){a++;break}}else if(e[a]===\"(\"){f++;if(e[a+1]!==\"?\"){throw new TypeError(\"Capturing groups are not allowed at \"+a)}}u+=e[a++]}if(f)throw new TypeError(\"Unbalanced pattern at \"+n);if(!u)throw new TypeError(\"Missing pattern at \"+n);r.push({type:\"PATTERN\",index:n,value:u});n=a;continue}r.push({type:\"CHAR\",index:n,value:e[n++]})}r.push({type:\"END\",index:n,value:\"\"});return r}function parse(e,r){if(r===void 0){r={}}var n=lexer(e);var t=r.prefixes,i=t===void 0?\"./\":t;var a=\"[^\"+escapeString(r.delimiter||\"/#?\")+\"]+?\";var o=[];var f=0;var u=0;var p=\"\";var tryConsume=function(e){if(u<n.length&&n[u].type===e)return n[u++].value};var mustConsume=function(e){var r=tryConsume(e);if(r!==undefined)return r;var t=n[u],i=t.type,a=t.index;throw new TypeError(\"Unexpected \"+i+\" at \"+a+\", expected \"+e)};var consumeText=function(){var e=\"\";var r;while(r=tryConsume(\"CHAR\")||tryConsume(\"ESCAPED_CHAR\")){e+=r}return e};while(u<n.length){var v=tryConsume(\"CHAR\");var c=tryConsume(\"NAME\");var s=tryConsume(\"PATTERN\");if(c||s){var d=v||\"\";if(i.indexOf(d)===-1){p+=d;d=\"\"}if(p){o.push(p);p=\"\"}o.push({name:c||f++,prefix:d,suffix:\"\",pattern:s||a,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}var g=v||tryConsume(\"ESCAPED_CHAR\");if(g){p+=g;continue}if(p){o.push(p);p=\"\"}var x=tryConsume(\"OPEN\");if(x){var d=consumeText();var l=tryConsume(\"NAME\")||\"\";var h=tryConsume(\"PATTERN\")||\"\";var m=consumeText();mustConsume(\"CLOSE\");o.push({name:l||(h?f++:\"\"),pattern:l&&!h?a:h,prefix:d,suffix:m,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}mustConsume(\"END\")}return o}r.parse=parse;function compile(e,r){return tokensToFunction(parse(e,r),r)}r.compile=compile;function tokensToFunction(e,r){if(r===void 0){r={}}var n=flags(r);var t=r.encode,i=t===void 0?function(e){return e}:t,a=r.validate,o=a===void 0?true:a;var f=e.map((function(e){if(typeof e===\"object\"){return new RegExp(\"^(?:\"+e.pattern+\")$\",n)}}));return function(r){var n=\"\";for(var t=0;t<e.length;t++){var a=e[t];if(typeof a===\"string\"){n+=a;continue}var u=r?r[a.name]:undefined;var p=a.modifier===\"?\"||a.modifier===\"*\";var v=a.modifier===\"*\"||a.modifier===\"+\";if(Array.isArray(u)){if(!v){throw new TypeError('Expected \"'+a.name+'\" to not repeat, but got an array')}if(u.length===0){if(p)continue;throw new TypeError('Expected \"'+a.name+'\" to not be empty')}for(var c=0;c<u.length;c++){var s=i(u[c],a);if(o&&!f[t].test(s)){throw new TypeError('Expected all \"'+a.name+'\" to match \"'+a.pattern+'\", but got \"'+s+'\"')}n+=a.prefix+s+a.suffix}continue}if(typeof u===\"string\"||typeof u===\"number\"){var s=i(String(u),a);if(o&&!f[t].test(s)){throw new TypeError('Expected \"'+a.name+'\" to match \"'+a.pattern+'\", but got \"'+s+'\"')}n+=a.prefix+s+a.suffix;continue}if(p)continue;var d=v?\"an array\":\"a string\";throw new TypeError('Expected \"'+a.name+'\" to be '+d)}return n}}r.tokensToFunction=tokensToFunction;function match(e,r){var n=[];var t=pathToRegexp(e,n,r);return regexpToFunction(t,n,r)}r.match=match;function regexpToFunction(e,r,n){if(n===void 0){n={}}var t=n.decode,i=t===void 0?function(e){return e}:t;return function(n){var t=e.exec(n);if(!t)return false;var a=t[0],o=t.index;var f=Object.create(null);var _loop_1=function(e){if(t[e]===undefined)return\"continue\";var n=r[e-1];if(n.modifier===\"*\"||n.modifier===\"+\"){f[n.name]=t[e].split(n.prefix+n.suffix).map((function(e){return i(e,n)}))}else{f[n.name]=i(t[e],n)}};for(var u=1;u<t.length;u++){_loop_1(u)}return{path:a,index:o,params:f}}}r.regexpToFunction=regexpToFunction;function escapeString(e){return e.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g,\"\\\\$1\")}function flags(e){return e&&e.sensitive?\"\":\"i\"}function regexpToRegexp(e,r){if(!r)return e;var n=e.source.match(/\\((?!\\?)/g);if(n){for(var t=0;t<n.length;t++){r.push({name:t,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"})}}return e}function arrayToRegexp(e,r,n){var t=e.map((function(e){return pathToRegexp(e,r,n).source}));return new RegExp(\"(?:\"+t.join(\"|\")+\")\",flags(n))}function stringToRegexp(e,r,n){return tokensToRegexp(parse(e,n),r,n)}function tokensToRegexp(e,r,n){if(n===void 0){n={}}var t=n.strict,i=t===void 0?false:t,a=n.start,o=a===void 0?true:a,f=n.end,u=f===void 0?true:f,p=n.encode,v=p===void 0?function(e){return e}:p;var c=\"[\"+escapeString(n.endsWith||\"\")+\"]|$\";var s=\"[\"+escapeString(n.delimiter||\"/#?\")+\"]\";var d=o?\"^\":\"\";for(var g=0,x=e;g<x.length;g++){var l=x[g];if(typeof l===\"string\"){d+=escapeString(v(l))}else{var h=escapeString(v(l.prefix));var m=escapeString(v(l.suffix));if(l.pattern){if(r)r.push(l);if(h||m){if(l.modifier===\"+\"||l.modifier===\"*\"){var E=l.modifier===\"*\"?\"?\":\"\";d+=\"(?:\"+h+\"((?:\"+l.pattern+\")(?:\"+m+h+\"(?:\"+l.pattern+\"))*)\"+m+\")\"+E}else{d+=\"(?:\"+h+\"(\"+l.pattern+\")\"+m+\")\"+l.modifier}}else{d+=\"(\"+l.pattern+\")\"+l.modifier}}else{d+=\"(?:\"+h+m+\")\"+l.modifier}}}if(u){if(!i)d+=s+\"?\";d+=!n.endsWith?\"$\":\"(?=\"+c+\")\"}else{var T=e[e.length-1];var y=typeof T===\"string\"?s.indexOf(T[T.length-1])>-1:T===undefined;if(!i){d+=\"(?:\"+s+\"(?=\"+c+\"))?\"}if(!y){d+=\"(?=\"+s+\"|\"+c+\")\"}}return new RegExp(d,flags(n))}r.tokensToRegexp=tokensToRegexp;function pathToRegexp(e,r,n){if(e instanceof RegExp)return regexpToRegexp(e,r);if(Array.isArray(e))return arrayToRegexp(e,r,n);return stringToRegexp(e,r,n)}r.pathToRegexp=pathToRegexp})();module.exports=e})();","import type { ServerRuntime } from '../types'\n\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_PREFETCH_SUFFIX = '.prefetch.rsc'\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\n\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport 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`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport 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`\n\nexport 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`\n\nexport 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`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record<string, ServerRuntime> = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n","import type { IncomingMessage } from 'http'\nimport type { BaseNextRequest } from '../base-http'\nimport type { CookieSerializeOptions } from 'next/dist/compiled/cookie'\nimport type { NextApiResponse } from '../../shared/lib/utils'\n\nimport { HeadersAdapter } from '../web/spec-extension/adapters/headers'\nimport {\n PRERENDER_REVALIDATE_HEADER,\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER,\n} from '../../lib/constants'\nimport { getTracer } from '../lib/trace/tracer'\nimport { NodeSpan } from '../lib/trace/constants'\n\nexport type NextApiRequestCookies = Partial<{ [key: string]: string }>\nexport type NextApiRequestQuery = Partial<{ [key: string]: string | string[] }>\n\nexport type __ApiPreviewProps = {\n previewModeId: string\n previewModeEncryptionKey: string\n previewModeSigningKey: string\n}\n\nexport function wrapApiHandler<T extends (...args: any[]) => any>(\n page: string,\n handler: T\n): T {\n return ((...args) => {\n getTracer().setRootSpanAttribute('next.route', page)\n // Call API route method\n return getTracer().trace(\n NodeSpan.runHandler,\n {\n spanName: `executing api route (pages) ${page}`,\n },\n () => handler(...args)\n )\n }) as T\n}\n\n/**\n *\n * @param res response object\n * @param statusCode `HTTP` status code of response\n */\nexport function sendStatusCode(\n res: NextApiResponse,\n statusCode: number\n): NextApiResponse<any> {\n res.statusCode = statusCode\n return res\n}\n\n/**\n *\n * @param res response object\n * @param [statusOrUrl] `HTTP` status code of redirect\n * @param url URL of redirect\n */\nexport function redirect(\n res: NextApiResponse,\n statusOrUrl: string | number,\n url?: string\n): NextApiResponse<any> {\n if (typeof statusOrUrl === 'string') {\n url = statusOrUrl\n statusOrUrl = 307\n }\n if (typeof statusOrUrl !== 'number' || typeof url !== 'string') {\n throw new Error(\n `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').`\n )\n }\n res.writeHead(statusOrUrl, { Location: url })\n res.write(url)\n res.end()\n return res\n}\n\nexport function checkIsOnDemandRevalidate(\n req: Request | IncomingMessage | BaseNextRequest,\n previewProps: __ApiPreviewProps\n): {\n isOnDemandRevalidate: boolean\n revalidateOnlyGenerated: boolean\n} {\n const headers = HeadersAdapter.from(req.headers)\n\n const previewModeId = headers.get(PRERENDER_REVALIDATE_HEADER)\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId\n\n const revalidateOnlyGenerated = headers.has(\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER\n )\n\n return { isOnDemandRevalidate, revalidateOnlyGenerated }\n}\n\nexport const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`\nexport const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`\n\nexport const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024\n\nexport const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA)\nexport const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS)\n\nexport function clearPreviewData<T>(\n res: NextApiResponse<T>,\n options: {\n path?: string\n } = {}\n): NextApiResponse<T> {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res\n }\n\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n ])\n\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false,\n })\n return res\n}\n\n/**\n * Custom error class\n */\nexport class ApiError extends Error {\n readonly statusCode: number\n\n constructor(statusCode: number, message: string) {\n super(message)\n this.statusCode = statusCode\n }\n}\n\n/**\n * Sends error in `response`\n * @param res response object\n * @param statusCode of response\n * @param message of response\n */\nexport function sendError(\n res: NextApiResponse,\n statusCode: number,\n message: string\n): void {\n res.statusCode = statusCode\n res.statusMessage = message\n res.end(message)\n}\n\ninterface LazyProps {\n req: IncomingMessage\n}\n\n/**\n * Execute getter function only if its needed\n * @param LazyProps `req` and `params` for lazyProp\n * @param prop name of property\n * @param getter function to get data\n */\nexport function setLazyProp<T>(\n { req }: LazyProps,\n prop: string,\n getter: () => T\n): void {\n const opts = { configurable: true, enumerable: true }\n const optsReset = { ...opts, writable: true }\n\n Object.defineProperty(req, prop, {\n ...opts,\n get: () => {\n const value = getter()\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, { ...optsReset, value })\n return value\n },\n set: (value) => {\n Object.defineProperty(req, prop, { ...optsReset, value })\n },\n })\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextApiResponse } from '../../../shared/lib/utils'\nimport { checkIsOnDemandRevalidate } from '../.'\nimport type { __ApiPreviewProps } from '../.'\nimport type { BaseNextRequest, BaseNextResponse } from '../../base-http'\nimport type { PreviewData } from '../../../types'\n\nimport {\n clearPreviewData,\n COOKIE_NAME_PRERENDER_BYPASS,\n COOKIE_NAME_PRERENDER_DATA,\n SYMBOL_PREVIEW_DATA,\n} from '../index'\nimport { RequestCookies } from '../../web/spec-extension/cookies'\nimport { HeadersAdapter } from '../../web/spec-extension/adapters/headers'\n\nexport function tryGetPreviewData(\n req: IncomingMessage | BaseNextRequest | Request,\n res: ServerResponse | BaseNextResponse,\n options: __ApiPreviewProps,\n multiZoneDraftMode: boolean\n): PreviewData {\n // if an On-Demand revalidation is being done preview mode\n // is disabled\n if (options && checkIsOnDemandRevalidate(req, options).isOnDemandRevalidate) {\n return false\n }\n\n // Read cached preview data if present\n // TODO: use request metadata instead of a symbol\n if (SYMBOL_PREVIEW_DATA in req) {\n return (req as any)[SYMBOL_PREVIEW_DATA] as any\n }\n\n const headers = HeadersAdapter.from(req.headers)\n const cookies = new RequestCookies(headers)\n\n const previewModeId = cookies.get(COOKIE_NAME_PRERENDER_BYPASS)?.value\n const tokenPreviewData = cookies.get(COOKIE_NAME_PRERENDER_DATA)?.value\n\n // Case: preview mode cookie set but data cookie is not set\n if (\n previewModeId &&\n !tokenPreviewData &&\n previewModeId === options.previewModeId\n ) {\n // This is \"Draft Mode\" which doesn't use\n // previewData, so we return an empty object\n // for backwards compat with \"Preview Mode\".\n const data = {}\n Object.defineProperty(req, SYMBOL_PREVIEW_DATA, {\n value: data,\n enumerable: false,\n })\n return data\n }\n\n // Case: neither cookie is set.\n if (!previewModeId && !tokenPreviewData) {\n return false\n }\n\n // Case: one cookie is set, but not the other.\n if (!previewModeId || !tokenPreviewData) {\n if (!multiZoneDraftMode) {\n clearPreviewData(res as NextApiResponse)\n }\n return false\n }\n\n // Case: preview session is for an old build.\n if (previewModeId !== options.previewModeId) {\n if (!multiZoneDraftMode) {\n clearPreviewData(res as NextApiResponse)\n }\n return false\n }\n\n let encryptedPreviewData: {\n data: string\n }\n try {\n const jsonwebtoken =\n require('next/dist/compiled/jsonwebtoken') as typeof import('next/dist/compiled/jsonwebtoken')\n encryptedPreviewData = jsonwebtoken.verify(\n tokenPreviewData,\n options.previewModeSigningKey\n ) as typeof encryptedPreviewData\n } catch {\n // TODO: warn\n clearPreviewData(res as NextApiResponse)\n return false\n }\n\n const { decryptWithSecret } =\n require('../../crypto-utils') as typeof import('../../crypto-utils')\n const decryptedPreviewData = decryptWithSecret(\n Buffer.from(options.previewModeEncryptionKey),\n encryptedPreviewData.data\n )\n\n try {\n // TODO: strict runtime type checking\n const data = JSON.parse(decryptedPreviewData)\n // Cache lookup\n Object.defineProperty(req, SYMBOL_PREVIEW_DATA, {\n value: data,\n enumerable: false,\n })\n return data\n } catch {\n return false\n }\n}\n","import crypto from 'crypto'\n\n// Background:\n// https://security.stackexchange.com/questions/184305/why-would-i-ever-use-aes-256-cbc-if-aes-256-gcm-is-more-secure\n\nconst CIPHER_ALGORITHM = `aes-256-gcm`,\n CIPHER_KEY_LENGTH = 32, // https://stackoverflow.com/a/28307668/4397028\n CIPHER_IV_LENGTH = 16, // https://stackoverflow.com/a/28307668/4397028\n CIPHER_TAG_LENGTH = 16,\n CIPHER_SALT_LENGTH = 64\n\nconst PBKDF2_ITERATIONS = 100_000 // https://support.1password.com/pbkdf2/\n\nexport function encryptWithSecret(secret: Buffer, data: string): string {\n const iv = crypto.randomBytes(CIPHER_IV_LENGTH)\n const salt = crypto.randomBytes(CIPHER_SALT_LENGTH)\n\n // https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest\n const key = crypto.pbkdf2Sync(\n secret,\n salt,\n PBKDF2_ITERATIONS,\n CIPHER_KEY_LENGTH,\n `sha512`\n )\n\n const cipher = crypto.createCipheriv(CIPHER_ALGORITHM, key, iv)\n const encrypted = Buffer.concat([cipher.update(data, `utf8`), cipher.final()])\n\n // https://nodejs.org/api/crypto.html#crypto_cipher_getauthtag\n const tag = cipher.getAuthTag()\n\n return Buffer.concat([\n // Data as required by:\n // Salt for Key: https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest\n // IV: https://nodejs.org/api/crypto.html#crypto_class_decipher\n // Tag: https://nodejs.org/api/crypto.html#crypto_decipher_setauthtag_buffer\n salt,\n iv,\n tag,\n encrypted,\n ]).toString(`hex`)\n}\n\nexport function decryptWithSecret(\n secret: Buffer,\n encryptedData: string\n): string {\n const buffer = Buffer.from(encryptedData, `hex`)\n\n const salt = buffer.slice(0, CIPHER_SALT_LENGTH)\n const iv = buffer.slice(\n CIPHER_SALT_LENGTH,\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH\n )\n const tag = buffer.slice(\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH,\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH + CIPHER_TAG_LENGTH\n )\n const encrypted = buffer.slice(\n CIPHER_SALT_LENGTH + CIPHER_IV_LENGTH + CIPHER_TAG_LENGTH\n )\n\n // https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest\n const key = crypto.pbkdf2Sync(\n secret,\n salt,\n PBKDF2_ITERATIONS,\n CIPHER_KEY_LENGTH,\n `sha512`\n )\n\n const decipher = crypto.createDecipheriv(CIPHER_ALGORITHM, key, iv)\n decipher.setAuthTag(tag)\n\n return decipher.update(encrypted) + decipher.final(`utf8`)\n}\n","/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/\n\n// eslint typescript has a bug with TS enums\n/* eslint-disable no-shadow */\n\nenum BaseServerSpan {\n handleRequest = 'BaseServer.handleRequest',\n run = 'BaseServer.run',\n pipe = 'BaseServer.pipe',\n getStaticHTML = 'BaseServer.getStaticHTML',\n render = 'BaseServer.render',\n renderToResponseWithComponents = 'BaseServer.renderToResponseWithComponents',\n renderToResponse = 'BaseServer.renderToResponse',\n renderToHTML = 'BaseServer.renderToHTML',\n renderError = 'BaseServer.renderError',\n renderErrorToResponse = 'BaseServer.renderErrorToResponse',\n renderErrorToHTML = 'BaseServer.renderErrorToHTML',\n render404 = 'BaseServer.render404',\n}\n\nenum LoadComponentsSpan {\n loadDefaultErrorComponents = 'LoadComponents.loadDefaultErrorComponents',\n loadComponents = 'LoadComponents.loadComponents',\n}\n\nenum NextServerSpan {\n getRequestHandler = 'NextServer.getRequestHandler',\n getServer = 'NextServer.getServer',\n getServerRequestHandler = 'NextServer.getServerRequestHandler',\n createServer = 'createServer.createServer',\n}\n\nenum NextNodeServerSpan {\n compression = 'NextNodeServer.compression',\n getBuildId = 'NextNodeServer.getBuildId',\n createComponentTree = 'NextNodeServer.createComponentTree',\n clientComponentLoading = 'NextNodeServer.clientComponentLoading',\n getLayoutOrPageModule = 'NextNodeServer.getLayoutOrPageModule',\n generateStaticRoutes = 'NextNodeServer.generateStaticRoutes',\n generateFsStaticRoutes = 'NextNodeServer.generateFsStaticRoutes',\n generatePublicRoutes = 'NextNodeServer.generatePublicRoutes',\n generateImageRoutes = 'NextNodeServer.generateImageRoutes.route',\n sendRenderResult = 'NextNodeServer.sendRenderResult',\n proxyRequest = 'NextNodeServer.proxyRequest',\n runApi = 'NextNodeServer.runApi',\n render = 'NextNodeServer.render',\n renderHTML = 'NextNodeServer.renderHTML',\n imageOptimizer = 'NextNodeServer.imageOptimizer',\n getPagePath = 'NextNodeServer.getPagePath',\n getRoutesManifest = 'NextNodeServer.getRoutesManifest',\n findPageComponents = 'NextNodeServer.findPageComponents',\n getFontManifest = 'NextNodeServer.getFontManifest',\n getServerComponentManifest = 'NextNodeServer.getServerComponentManifest',\n getRequestHandler = 'NextNodeServer.getRequestHandler',\n renderToHTML = 'NextNodeServer.renderToHTML',\n renderError = 'NextNodeServer.renderError',\n renderErrorToHTML = 'NextNodeServer.renderErrorToHTML',\n render404 = 'NextNodeServer.render404',\n startResponse = 'NextNodeServer.startResponse',\n\n // nested inner span, does not require parent scope name\n route = 'route',\n onProxyReq = 'onProxyReq',\n apiResolver = 'apiResolver',\n internalFetch = 'internalFetch',\n}\n\nenum StartServerSpan {\n startServer = 'startServer.startServer',\n}\n\nenum RenderSpan {\n getServerSideProps = 'Render.getServerSideProps',\n getStaticProps = 'Render.getStaticProps',\n renderToString = 'Render.renderToString',\n renderDocument = 'Render.renderDocument',\n createBodyResult = 'Render.createBodyResult',\n}\n\nenum AppRenderSpan {\n renderToString = 'AppRender.renderToString',\n renderToReadableStream = 'AppRender.renderToReadableStream',\n getBodyResult = 'AppRender.getBodyResult',\n fetch = 'AppRender.fetch',\n}\n\nenum RouterSpan {\n executeRoute = 'Router.executeRoute',\n}\n\nenum NodeSpan {\n runHandler = 'Node.runHandler',\n}\n\nenum AppRouteRouteHandlersSpan {\n runHandler = 'AppRouteRouteHandlers.runHandler',\n}\n\nenum ResolveMetadataSpan {\n generateMetadata = 'ResolveMetadata.generateMetadata',\n generateViewport = 'ResolveMetadata.generateViewport',\n}\n\nenum MiddlewareSpan {\n execute = 'Middleware.execute',\n}\n\ntype SpanTypes =\n | `${BaseServerSpan}`\n | `${LoadComponentsSpan}`\n | `${NextServerSpan}`\n | `${StartServerSpan}`\n | `${NextNodeServerSpan}`\n | `${RenderSpan}`\n | `${RouterSpan}`\n | `${AppRenderSpan}`\n | `${NodeSpan}`\n | `${AppRouteRouteHandlersSpan}`\n | `${ResolveMetadataSpan}`\n | `${MiddlewareSpan}`\n\n// This list is used to filter out spans that are not relevant to the user\nexport const NextVanillaSpanAllowlist = [\n MiddlewareSpan.execute,\n BaseServerSpan.handleRequest,\n RenderSpan.getServerSideProps,\n RenderSpan.getStaticProps,\n AppRenderSpan.fetch,\n AppRenderSpan.getBodyResult,\n RenderSpan.renderDocument,\n NodeSpan.runHandler,\n AppRouteRouteHandlersSpan.runHandler,\n ResolveMetadataSpan.generateMetadata,\n ResolveMetadataSpan.generateViewport,\n NextNodeServerSpan.createComponentTree,\n NextNodeServerSpan.findPageComponents,\n NextNodeServerSpan.getLayoutOrPageModule,\n NextNodeServerSpan.startResponse,\n NextNodeServerSpan.clientComponentLoading,\n]\n\n// These Spans are allowed to be always logged\n// when the otel log prefix env is set\nexport const LogSpanAllowList = [\n NextNodeServerSpan.findPageComponents,\n NextNodeServerSpan.createComponentTree,\n NextNodeServerSpan.clientComponentLoading,\n]\n\nexport {\n BaseServerSpan,\n LoadComponentsSpan,\n NextServerSpan,\n NextNodeServerSpan,\n StartServerSpan,\n RenderSpan,\n RouterSpan,\n AppRenderSpan,\n NodeSpan,\n AppRouteRouteHandlersSpan,\n ResolveMetadataSpan,\n MiddlewareSpan,\n}\n\nexport type { SpanTypes }\n","export class ReflectAdapter {\n static get<T extends object>(\n target: T,\n prop: string | symbol,\n receiver: unknown\n ): any {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target)\n }\n\n return value\n }\n\n static set<T extends object>(\n target: T,\n prop: string | symbol,\n value: any,\n receiver: any\n ): boolean {\n return Reflect.set(target, prop, value, receiver)\n }\n\n static has<T extends object>(target: T, prop: string | symbol): boolean {\n return Reflect.has(target, prop)\n }\n\n static deleteProperty<T extends object>(\n target: T,\n prop: string | symbol\n ): boolean {\n return Reflect.deleteProperty(target, prop)\n }\n}\n","import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n","// Note: This file is JS because it's used by the taskfile-swc.js file, which is JS.\n// Keep file changes in sync with the corresponding `.d.ts` files.\n/**\n * These are the browser versions that support all of the following:\n * static import: https://caniuse.com/es6-module\n * dynamic import: https://caniuse.com/es6-module-dynamic-import\n * import.meta: https://caniuse.com/mdn-javascript_operators_import_meta\n */\nconst MODERN_BROWSERSLIST_TARGET = [\n 'chrome 64',\n 'edge 79',\n 'firefox 67',\n 'opera 51',\n 'safari 12',\n]\n\nmodule.exports = MODERN_BROWSERSLIST_TARGET\n","(()=>{var e={318:function(e,t){(function(e,n){true?n(t):0})(this,(function(e){\"use strict\";class StructError extends TypeError{constructor(e,t){let n;const{message:r,explanation:i,...c}=e;const{path:o}=e;const a=o.length===0?r:`At path: ${o.join(\".\")} -- ${r}`;super(i??a);if(i!=null)this.cause=a;Object.assign(this,c);this.name=this.constructor.name;this.failures=()=>n??(n=[e,...t()])}}function isIterable(e){return isObject(e)&&typeof e[Symbol.iterator]===\"function\"}function isObject(e){return typeof e===\"object\"&&e!=null}function isPlainObject(e){if(Object.prototype.toString.call(e)!==\"[object Object]\"){return false}const t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function print(e){if(typeof e===\"symbol\"){return e.toString()}return typeof e===\"string\"?JSON.stringify(e):`${e}`}function shiftIterator(e){const{done:t,value:n}=e.next();return t?undefined:n}function toFailure(e,t,n,r){if(e===true){return}else if(e===false){e={}}else if(typeof e===\"string\"){e={message:e}}const{path:i,branch:c}=t;const{type:o}=n;const{refinement:a,message:s=`Expected a value of type \\`${o}\\`${a?` with refinement \\`${a}\\``:\"\"}, but received: \\`${print(r)}\\``}=e;return{value:r,type:o,refinement:a,key:i[i.length-1],path:i,branch:c,...e,message:s}}function*toFailures(e,t,n,r){if(!isIterable(e)){e=[e]}for(const i of e){const e=toFailure(i,t,n,r);if(e){yield e}}}function*run(e,t,n={}){const{path:r=[],branch:i=[e],coerce:c=false,mask:o=false}=n;const a={path:r,branch:i};if(c){e=t.coercer(e,a);if(o&&t.type!==\"type\"&&isObject(t.schema)&&isObject(e)&&!Array.isArray(e)){for(const n in e){if(t.schema[n]===undefined){delete e[n]}}}}let s=\"valid\";for(const r of t.validator(e,a)){r.explanation=n.message;s=\"not_valid\";yield[r,undefined]}for(let[u,f,l]of t.entries(e,a)){const t=run(f,l,{path:u===undefined?r:[...r,u],branch:u===undefined?i:[...i,f],coerce:c,mask:o,message:n.message});for(const n of t){if(n[0]){s=n[0].refinement!=null?\"not_refined\":\"not_valid\";yield[n[0],undefined]}else if(c){f=n[1];if(u===undefined){e=f}else if(e instanceof Map){e.set(u,f)}else if(e instanceof Set){e.add(f)}else if(isObject(e)){if(f!==undefined||u in e)e[u]=f}}}}if(s!==\"not_valid\"){for(const r of t.refiner(e,a)){r.explanation=n.message;s=\"not_refined\";yield[r,undefined]}}if(s===\"valid\"){yield[undefined,e]}}class Struct{constructor(e){const{type:t,schema:n,validator:r,refiner:i,coercer:c=(e=>e),entries:o=function*(){}}=e;this.type=t;this.schema=n;this.entries=o;this.coercer=c;if(r){this.validator=(e,t)=>{const n=r(e,t);return toFailures(n,t,this,e)}}else{this.validator=()=>[]}if(i){this.refiner=(e,t)=>{const n=i(e,t);return toFailures(n,t,this,e)}}else{this.refiner=()=>[]}}assert(e,t){return assert(e,this,t)}create(e,t){return create(e,this,t)}is(e){return is(e,this)}mask(e,t){return mask(e,this,t)}validate(e,t={}){return validate(e,this,t)}}function assert(e,t,n){const r=validate(e,t,{message:n});if(r[0]){throw r[0]}}function create(e,t,n){const r=validate(e,t,{coerce:true,message:n});if(r[0]){throw r[0]}else{return r[1]}}function mask(e,t,n){const r=validate(e,t,{coerce:true,mask:true,message:n});if(r[0]){throw r[0]}else{return r[1]}}function is(e,t){const n=validate(e,t);return!n[0]}function validate(e,t,n={}){const r=run(e,t,n);const i=shiftIterator(r);if(i[0]){const e=new StructError(i[0],(function*(){for(const e of r){if(e[0]){yield e[0]}}}));return[e,undefined]}else{const e=i[1];return[undefined,e]}}function assign(...e){const t=e[0].type===\"type\";const n=e.map((e=>e.schema));const r=Object.assign({},...n);return t?type(r):object(r)}function define(e,t){return new Struct({type:e,schema:null,validator:t})}function deprecated(e,t){return new Struct({...e,refiner:(t,n)=>t===undefined||e.refiner(t,n),validator(n,r){if(n===undefined){return true}else{t(n,r);return e.validator(n,r)}}})}function dynamic(e){return new Struct({type:\"dynamic\",schema:null,*entries(t,n){const r=e(t,n);yield*r.entries(t,n)},validator(t,n){const r=e(t,n);return r.validator(t,n)},coercer(t,n){const r=e(t,n);return r.coercer(t,n)},refiner(t,n){const r=e(t,n);return r.refiner(t,n)}})}function lazy(e){let t;return new Struct({type:\"lazy\",schema:null,*entries(n,r){t??(t=e());yield*t.entries(n,r)},validator(n,r){t??(t=e());return t.validator(n,r)},coercer(n,r){t??(t=e());return t.coercer(n,r)},refiner(n,r){t??(t=e());return t.refiner(n,r)}})}function omit(e,t){const{schema:n}=e;const r={...n};for(const e of t){delete r[e]}switch(e.type){case\"type\":return type(r);default:return object(r)}}function partial(e){const t=e instanceof Struct?{...e.schema}:{...e};for(const e in t){t[e]=optional(t[e])}return object(t)}function pick(e,t){const{schema:n}=e;const r={};for(const e of t){r[e]=n[e]}return object(r)}function struct(e,t){console.warn(\"superstruct@0.11 - The `struct` helper has been renamed to `define`.\");return define(e,t)}function any(){return define(\"any\",(()=>true))}function array(e){return new Struct({type:\"array\",schema:e,*entries(t){if(e&&Array.isArray(t)){for(const[n,r]of t.entries()){yield[n,r,e]}}},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||`Expected an array value, but received: ${print(e)}`}})}function bigint(){return define(\"bigint\",(e=>typeof e===\"bigint\"))}function boolean(){return define(\"boolean\",(e=>typeof e===\"boolean\"))}function date(){return define(\"date\",(e=>e instanceof Date&&!isNaN(e.getTime())||`Expected a valid \\`Date\\` object, but received: ${print(e)}`))}function enums(e){const t={};const n=e.map((e=>print(e))).join();for(const n of e){t[n]=n}return new Struct({type:\"enums\",schema:t,validator(t){return e.includes(t)||`Expected one of \\`${n}\\`, but received: ${print(t)}`}})}function func(){return define(\"func\",(e=>typeof e===\"function\"||`Expected a function, but received: ${print(e)}`))}function instance(e){return define(\"instance\",(t=>t instanceof e||`Expected a \\`${e.name}\\` instance, but received: ${print(t)}`))}function integer(){return define(\"integer\",(e=>typeof e===\"number\"&&!isNaN(e)&&Number.isInteger(e)||`Expected an integer, but received: ${print(e)}`))}function intersection(e){return new Struct({type:\"intersection\",schema:null,*entries(t,n){for(const r of e){yield*r.entries(t,n)}},*validator(t,n){for(const r of e){yield*r.validator(t,n)}},*refiner(t,n){for(const r of e){yield*r.refiner(t,n)}}})}function literal(e){const t=print(e);const n=typeof e;return new Struct({type:\"literal\",schema:n===\"string\"||n===\"number\"||n===\"boolean\"?e:null,validator(n){return n===e||`Expected the literal \\`${t}\\`, but received: ${print(n)}`}})}function map(e,t){return new Struct({type:\"map\",schema:null,*entries(n){if(e&&t&&n instanceof Map){for(const[r,i]of n.entries()){yield[r,r,e];yield[r,i,t]}}},coercer(e){return e instanceof Map?new Map(e):e},validator(e){return e instanceof Map||`Expected a \\`Map\\` object, but received: ${print(e)}`}})}function never(){return define(\"never\",(()=>false))}function nullable(e){return new Struct({...e,validator:(t,n)=>t===null||e.validator(t,n),refiner:(t,n)=>t===null||e.refiner(t,n)})}function number(){return define(\"number\",(e=>typeof e===\"number\"&&!isNaN(e)||`Expected a number, but received: ${print(e)}`))}function object(e){const t=e?Object.keys(e):[];const n=never();return new Struct({type:\"object\",schema:e?e:null,*entries(r){if(e&&isObject(r)){const i=new Set(Object.keys(r));for(const n of t){i.delete(n);yield[n,r[n],e[n]]}for(const e of i){yield[e,r[e],n]}}},validator(e){return isObject(e)||`Expected an object, but received: ${print(e)}`},coercer(e){return isObject(e)?{...e}:e}})}function optional(e){return new Struct({...e,validator:(t,n)=>t===undefined||e.validator(t,n),refiner:(t,n)=>t===undefined||e.refiner(t,n)})}function record(e,t){return new Struct({type:\"record\",schema:null,*entries(n){if(isObject(n)){for(const r in n){const i=n[r];yield[r,r,e];yield[r,i,t]}}},validator(e){return isObject(e)||`Expected an object, but received: ${print(e)}`}})}function regexp(){return define(\"regexp\",(e=>e instanceof RegExp))}function set(e){return new Struct({type:\"set\",schema:null,*entries(t){if(e&&t instanceof Set){for(const n of t){yield[n,n,e]}}},coercer(e){return e instanceof Set?new Set(e):e},validator(e){return e instanceof Set||`Expected a \\`Set\\` object, but received: ${print(e)}`}})}function string(){return define(\"string\",(e=>typeof e===\"string\"||`Expected a string, but received: ${print(e)}`))}function tuple(e){const t=never();return new Struct({type:\"tuple\",schema:null,*entries(n){if(Array.isArray(n)){const r=Math.max(e.length,n.length);for(let i=0;i<r;i++){yield[i,n[i],e[i]||t]}}},validator(e){return Array.isArray(e)||`Expected an array, but received: ${print(e)}`}})}function type(e){const t=Object.keys(e);return new Struct({type:\"type\",schema:e,*entries(n){if(isObject(n)){for(const r of t){yield[r,n[r],e[r]]}}},validator(e){return isObject(e)||`Expected an object, but received: ${print(e)}`},coercer(e){return isObject(e)?{...e}:e}})}function union(e){const t=e.map((e=>e.type)).join(\" | \");return new Struct({type:\"union\",schema:null,coercer(t){for(const n of e){const[e,r]=n.validate(t,{coerce:true});if(!e){return r}}return t},validator(n,r){const i=[];for(const t of e){const[...e]=run(n,t,r);const[c]=e;if(!c[0]){return[]}else{for(const[t]of e){if(t){i.push(t)}}}}return[`Expected the value to satisfy a union of \\`${t}\\`, but received: ${print(n)}`,...i]}})}function unknown(){return define(\"unknown\",(()=>true))}function coerce(e,t,n){return new Struct({...e,coercer:(r,i)=>is(r,t)?e.coercer(n(r,i),i):e.coercer(r,i)})}function defaulted(e,t,n={}){return coerce(e,unknown(),(e=>{const r=typeof t===\"function\"?t():t;if(e===undefined){return r}if(!n.strict&&isPlainObject(e)&&isPlainObject(r)){const t={...e};let n=false;for(const e in r){if(t[e]===undefined){t[e]=r[e];n=true}}if(n){return t}}return e}))}function trimmed(e){return coerce(e,string(),(e=>e.trim()))}function empty(e){return refine(e,\"empty\",(t=>{const n=getSize(t);return n===0||`Expected an empty ${e.type} but received one with a size of \\`${n}\\``}))}function getSize(e){if(e instanceof Map||e instanceof Set){return e.size}else{return e.length}}function max(e,t,n={}){const{exclusive:r}=n;return refine(e,\"max\",(n=>r?n<t:n<=t||`Expected a ${e.type} less than ${r?\"\":\"or equal to \"}${t} but received \\`${n}\\``))}function min(e,t,n={}){const{exclusive:r}=n;return refine(e,\"min\",(n=>r?n>t:n>=t||`Expected a ${e.type} greater than ${r?\"\":\"or equal to \"}${t} but received \\`${n}\\``))}function nonempty(e){return refine(e,\"nonempty\",(t=>{const n=getSize(t);return n>0||`Expected a nonempty ${e.type} but received an empty one`}))}function pattern(e,t){return refine(e,\"pattern\",(n=>t.test(n)||`Expected a ${e.type} matching \\`/${t.source}/\\` but received \"${n}\"`))}function size(e,t,n=t){const r=`Expected a ${e.type}`;const i=t===n?`of \\`${t}\\``:`between \\`${t}\\` and \\`${n}\\``;return refine(e,\"size\",(e=>{if(typeof e===\"number\"||e instanceof Date){return t<=e&&e<=n||`${r} ${i} but received \\`${e}\\``}else if(e instanceof Map||e instanceof Set){const{size:c}=e;return t<=c&&c<=n||`${r} with a size ${i} but received one with a size of \\`${c}\\``}else{const{length:c}=e;return t<=c&&c<=n||`${r} with a length ${i} but received one with a length of \\`${c}\\``}}))}function refine(e,t,n){return new Struct({...e,*refiner(r,i){yield*e.refiner(r,i);const c=n(r,i);const o=toFailures(c,i,e,r);for(const e of o){yield{...e,refinement:t}}}})}e.Struct=Struct;e.StructError=StructError;e.any=any;e.array=array;e.assert=assert;e.assign=assign;e.bigint=bigint;e.boolean=boolean;e.coerce=coerce;e.create=create;e.date=date;e.defaulted=defaulted;e.define=define;e.deprecated=deprecated;e.dynamic=dynamic;e.empty=empty;e.enums=enums;e.func=func;e.instance=instance;e.integer=integer;e.intersection=intersection;e.is=is;e.lazy=lazy;e.literal=literal;e.map=map;e.mask=mask;e.max=max;e.min=min;e.never=never;e.nonempty=nonempty;e.nullable=nullable;e.number=number;e.object=object;e.omit=omit;e.optional=optional;e.partial=partial;e.pattern=pattern;e.pick=pick;e.record=record;e.refine=refine;e.regexp=regexp;e.set=set;e.size=size;e.string=string;e.struct=struct;e.trimmed=trimmed;e.tuple=tuple;e.type=type;e.union=union;e.unknown=unknown;e.validate=validate}))}};if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t={};e[318](0,t);module.exports=t})();","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import MODERN_BROWSERSLIST_TARGET from './modern-browserslist-target'\n\nexport { MODERN_BROWSERSLIST_TARGET }\n\nexport type ValueOf<T> = Required<T>[keyof T]\n\nexport const COMPILER_NAMES = {\n client: 'client',\n server: 'server',\n edgeServer: 'edge-server',\n} as const\n\nexport type CompilerNameValues = ValueOf<typeof COMPILER_NAMES>\n\nexport const COMPILER_INDEXES: {\n [compilerKey in CompilerNameValues]: number\n} = {\n [COMPILER_NAMES.client]: 0,\n [COMPILER_NAMES.server]: 1,\n [COMPILER_NAMES.edgeServer]: 2,\n} as const\n\nexport const UNDERSCORE_NOT_FOUND_ROUTE = '/_not-found'\nexport const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`\nexport const PHASE_EXPORT = 'phase-export'\nexport const PHASE_PRODUCTION_BUILD = 'phase-production-build'\nexport const PHASE_PRODUCTION_SERVER = 'phase-production-server'\nexport const PHASE_DEVELOPMENT_SERVER = 'phase-development-server'\nexport const PHASE_TEST = 'phase-test'\nexport const PHASE_INFO = 'phase-info'\nexport const PAGES_MANIFEST = 'pages-manifest.json'\nexport const WEBPACK_STATS = 'webpack-stats.json'\nexport const APP_PATHS_MANIFEST = 'app-paths-manifest.json'\nexport const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json'\nexport const BUILD_MANIFEST = 'build-manifest.json'\nexport const APP_BUILD_MANIFEST = 'app-build-manifest.json'\nexport const FUNCTIONS_CONFIG_MANIFEST = 'functions-config-manifest.json'\nexport const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest'\nexport const NEXT_FONT_MANIFEST = 'next-font-manifest'\nexport const EXPORT_MARKER = 'export-marker.json'\nexport const EXPORT_DETAIL = 'export-detail.json'\nexport const PRERENDER_MANIFEST = 'prerender-manifest.json'\nexport const ROUTES_MANIFEST = 'routes-manifest.json'\nexport const IMAGES_MANIFEST = 'images-manifest.json'\nexport const SERVER_FILES_MANIFEST = 'required-server-files.json'\nexport const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'\nexport const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'\nexport const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST =\n '_clientMiddlewareManifest.json'\nexport const DEV_CLIENT_MIDDLEWARE_MANIFEST = '_devMiddlewareManifest.json'\nexport const REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'\nexport const SERVER_DIRECTORY = 'server'\nexport const CONFIG_FILES = [\n 'next.config.js',\n 'next.config.mjs',\n 'next.config.ts',\n]\nexport const BUILD_ID_FILE = 'BUILD_ID'\nexport const BLOCKED_PAGES = ['/_document', '/_app', '/_error']\nexport const CLIENT_PUBLIC_FILES_PATH = 'public'\nexport const CLIENT_STATIC_FILES_PATH = 'static'\nexport const STRING_LITERAL_DROP_BUNDLE = '__NEXT_DROP_CLIENT_FILE__'\nexport const NEXT_BUILTIN_DOCUMENT = '__NEXT_BUILTIN_DOCUMENT__'\nexport const BARREL_OPTIMIZATION_PREFIX = '__barrel_optimize__'\n\n// server/[entry]/page_client-reference-manifest.js\nexport const CLIENT_REFERENCE_MANIFEST = 'client-reference-manifest'\n// server/server-reference-manifest\nexport const SERVER_REFERENCE_MANIFEST = 'server-reference-manifest'\n// server/middleware-build-manifest.js\nexport const MIDDLEWARE_BUILD_MANIFEST = 'middleware-build-manifest'\n// server/middleware-react-loadable-manifest.js\nexport const MIDDLEWARE_REACT_LOADABLE_MANIFEST =\n 'middleware-react-loadable-manifest'\n// server/interception-route-rewrite-manifest.js\nexport const INTERCEPTION_ROUTE_REWRITE_MANIFEST =\n 'interception-route-rewrite-manifest'\n// server/dynamic-css-manifest.js\nexport const DYNAMIC_CSS_MANIFEST = 'dynamic-css-manifest'\n\n// static/runtime/main.js\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`\n// next internal client components chunk for layouts\nexport const APP_CLIENT_INTERNALS = 'app-pages-internals'\n// static/runtime/react-refresh.js\nexport const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`\n// static/runtime/amp.js\nexport const CLIENT_STATIC_FILES_RUNTIME_AMP = `amp`\n// static/runtime/webpack.js\nexport const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`\n// static/runtime/polyfills.js\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = 'polyfills'\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(\n CLIENT_STATIC_FILES_RUNTIME_POLYFILLS\n)\nexport const DEFAULT_RUNTIME_WEBPACK = 'webpack-runtime'\nexport const EDGE_RUNTIME_WEBPACK = 'edge-runtime-webpack'\nexport const STATIC_PROPS_ID = '__N_SSG'\nexport const SERVER_PROPS_ID = '__N_SSP'\nexport const DEFAULT_SERIF_FONT = {\n name: 'Times New Roman',\n xAvgCharWidth: 821,\n azAvgWidth: 854.3953488372093,\n unitsPerEm: 2048,\n}\nexport const DEFAULT_SANS_SERIF_FONT = {\n name: 'Arial',\n xAvgCharWidth: 904,\n azAvgWidth: 934.5116279069767,\n unitsPerEm: 2048,\n}\nexport const STATIC_STATUS_PAGES = ['/500']\nexport const TRACE_OUTPUT_VERSION = 1\n// in `MB`\nexport const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000\n\nexport const RSC_MODULE_TYPES = {\n client: 'client',\n server: 'server',\n} as const\n\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nexport const EDGE_UNSUPPORTED_NODE_APIS = [\n 'clearImmediate',\n 'setImmediate',\n 'BroadcastChannel',\n 'ByteLengthQueuingStrategy',\n 'CompressionStream',\n 'CountQueuingStrategy',\n 'DecompressionStream',\n 'DomException',\n 'MessageChannel',\n 'MessageEvent',\n 'MessagePort',\n 'ReadableByteStreamController',\n 'ReadableStreamBYOBRequest',\n 'ReadableStreamDefaultController',\n 'TransformStreamDefaultController',\n 'WritableStreamDefaultController',\n]\n\nexport const SYSTEM_ENTRYPOINTS = new Set<string>([\n CLIENT_STATIC_FILES_RUNTIME_MAIN,\n CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n CLIENT_STATIC_FILES_RUNTIME_AMP,\n CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n])\n","import type { UrlWithParsedQuery } from 'url'\nimport { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\n\nconst DUMMY_ORIGIN = 'http://n'\n\nexport function isFullStringUrl(url: string) {\n return /https?:\\/\\//.test(url)\n}\n\nexport function parseUrl(url: string): URL | undefined {\n let parsed: URL | undefined = undefined\n try {\n parsed = new URL(url, DUMMY_ORIGIN)\n } catch {}\n return parsed\n}\n\nexport function parseReqUrl(url: string): UrlWithParsedQuery | undefined {\n const parsedUrl: URL | undefined = parseUrl(url)\n\n if (!parsedUrl) {\n return\n }\n\n const query: Record<string, string | string[]> = {}\n\n for (const key of parsedUrl.searchParams.keys()) {\n const values = parsedUrl.searchParams.getAll(key)\n query[key] = values.length > 1 ? values : values[0]\n }\n\n const legacyUrl: UrlWithParsedQuery = {\n query,\n hash: parsedUrl.hash,\n search: parsedUrl.search,\n path: parsedUrl.pathname,\n pathname: parsedUrl.pathname,\n href: `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`,\n host: '',\n hostname: '',\n auth: '',\n protocol: '',\n slashes: null,\n port: '',\n }\n return legacyUrl\n}\n\nexport function stripNextRscUnionQuery(relativeUrl: string): string {\n const urlInstance = new URL(relativeUrl, DUMMY_ORIGIN)\n urlInstance.searchParams.delete(NEXT_RSC_UNION_QUERY)\n\n return urlInstance.pathname + urlInstance.search\n}\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap<readonly string[], readonly string[]>()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n","import { normalizeAppPath } from './app-paths'\n\n// order matters here, the first match will be used\nexport const INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)',\n] as const\n\nexport function isInterceptionRouteAppPath(path: string): boolean {\n // TODO-APP: add more serious validation\n return (\n path\n .split('/')\n .find((segment) =>\n INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n ) !== undefined\n )\n}\n\nexport function extractInterceptionRouteInformation(path: string) {\n let interceptingRoute: string | undefined,\n marker: (typeof INTERCEPTION_ROUTE_MARKERS)[number] | undefined,\n interceptedRoute: string | undefined\n\n for (const segment of path.split('/')) {\n marker = INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n if (marker) {\n ;[interceptingRoute, interceptedRoute] = path.split(marker, 2)\n break\n }\n }\n\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(\n `Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`\n )\n }\n\n interceptingRoute = normalizeAppPath(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n\n switch (marker) {\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute\n }\n break\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`\n )\n }\n interceptedRoute = interceptingRoute\n .split('/')\n .slice(0, -1)\n .concat(interceptedRoute)\n .join('/')\n break\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute\n break\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n\n const splitInterceptingRoute = interceptingRoute.split('/')\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`\n )\n }\n\n interceptedRoute = splitInterceptingRoute\n .slice(0, -2)\n .concat(interceptedRoute)\n .join('/')\n break\n default:\n throw new Error('Invariant: unexpected marker')\n }\n\n return { interceptingRoute, interceptedRoute }\n}\n","import {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from './interception-routes'\n\n// Identify /.*[param].*/ in route string\nconst TEST_ROUTE = /\\/[^/]*\\[[^/]+\\][^/]*(?=\\/|$)/\n\n// Identify /[param]/ in route string\nconst TEST_STRICT_ROUTE = /\\/\\[[^/]+\\](?=\\/|$)/\n\n/**\n * Check if a route is dynamic.\n *\n * @param route - The route to check.\n * @param strict - Whether to use strict mode which prohibits segments with prefixes/suffixes (default: true).\n * @returns Whether the route is dynamic.\n */\nexport function isDynamicRoute(route: string, strict: boolean = true): boolean {\n if (isInterceptionRouteAppPath(route)) {\n route = extractInterceptionRouteInformation(route).interceptedRoute\n }\n\n if (strict) {\n return TEST_STRICT_ROUTE.test(route)\n }\n\n return TEST_ROUTE.test(route)\n}\n","import type { Segment } from '../../server/app-render/types'\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\n","import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n","/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g\n\nexport function escapeStringRegexp(str: string) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&')\n }\n return str\n}\n","/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n","import {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../../../lib/constants'\nimport { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { removeTrailingSlash } from './remove-trailing-slash'\n\nexport interface Group {\n pos: number\n repeat: boolean\n optional: boolean\n}\n\nexport interface RouteRegex {\n groups: { [groupName: string]: Group }\n re: RegExp\n}\n\ntype GetNamedRouteRegexOptions = {\n /**\n * Whether to prefix the route keys with the NEXT_INTERCEPTION_MARKER_PREFIX\n * or NEXT_QUERY_PARAM_PREFIX. This is only relevant when creating the\n * routes-manifest during the build.\n */\n prefixRouteKeys: boolean\n\n /**\n * Whether to include the suffix in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n\n /**\n * Whether to backtrack duplicate keys. This is only relevant when creating\n * the routes-manifest during the build.\n */\n backreferenceDuplicateKeys?: boolean\n}\n\ntype GetRouteRegexOptions = {\n /**\n * Whether to include extra parts in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n * of adding this option.\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n}\n\n/**\n * Regular expression pattern used to match route parameters.\n * Matches both single parameters and parameter groups.\n * Examples:\n * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true\n * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false\n * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true\n * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false\n */\nconst PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/\n\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[[...slug]]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[[foo]]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `[bar]` -> `{ key: 'bar', repeat: false, optional: false }`\n * - `fizz` -> `{ key: 'fizz', repeat: false, optional: false }`\n * @param param - The parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseParameter(param: string) {\n const match = param.match(PARAMETER_PATTERN)\n\n if (!match) {\n return parseMatchedParameter(param)\n }\n\n return parseMatchedParameter(match[2])\n}\n\n/**\n * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n * @param param - The matched parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nfunction parseMatchedParameter(param: string) {\n const optional = param.startsWith('[') && param.endsWith(']')\n if (optional) {\n param = param.slice(1, -1)\n }\n const repeat = param.startsWith('...')\n if (repeat) {\n param = param.slice(3)\n }\n return { key: param, repeat, optional }\n}\n\nfunction getParametrizedRoute(\n route: string,\n includeSuffix: boolean,\n includePrefix: boolean\n) {\n const groups: { [groupName: string]: Group } = {}\n let groupIndex = 1\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const markerMatch = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n segments.push(`/${escapeStringRegexp(markerMatch)}([^/]+?)`)\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n parameterizedRoute: segments.join(''),\n groups,\n }\n}\n\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */\nexport function getRouteRegex(\n normalizedRoute: string,\n {\n includeSuffix = false,\n includePrefix = false,\n excludeOptionalTrailingSlash = false,\n }: GetRouteRegexOptions = {}\n): RouteRegex {\n const { parameterizedRoute, groups } = getParametrizedRoute(\n normalizedRoute,\n includeSuffix,\n includePrefix\n )\n\n let re = parameterizedRoute\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?'\n }\n\n return {\n re: new RegExp(`^${re}$`),\n groups: groups,\n }\n}\n\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */\nfunction buildGetSafeRouteKey() {\n let i = 0\n\n return () => {\n let routeKey = ''\n let j = ++i\n while (j > 0) {\n routeKey += String.fromCharCode(97 + ((j - 1) % 26))\n j = Math.floor((j - 1) / 26)\n }\n return routeKey\n }\n}\n\nfunction getSafeKeyFromSegment({\n interceptionMarker,\n getSafeRouteKey,\n segment,\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n}: {\n interceptionMarker?: string\n getSafeRouteKey: () => string\n segment: string\n routeKeys: Record<string, string>\n keyPrefix?: string\n backreferenceDuplicateKeys: boolean\n}) {\n const { key, optional, repeat } = parseMatchedParameter(segment)\n\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '')\n\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`\n }\n let invalidKey = false\n\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true\n }\n\n if (invalidKey) {\n cleanedKey = getSafeRouteKey()\n }\n\n const duplicateKey = cleanedKey in routeKeys\n\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`\n } else {\n routeKeys[cleanedKey] = key\n }\n\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker\n ? escapeStringRegexp(interceptionMarker)\n : ''\n\n let pattern: string\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = `\\\\k<${cleanedKey}>`\n } else if (repeat) {\n pattern = `(?<${cleanedKey}>.+?)`\n } else {\n pattern = `(?<${cleanedKey}>[^/]+?)`\n }\n\n return optional\n ? `(?:/${interceptionPrefix}${pattern})?`\n : `/${interceptionPrefix}${pattern}`\n}\n\nfunction getNamedParametrizedRoute(\n route: string,\n prefixRouteKeys: boolean,\n includeSuffix: boolean,\n includePrefix: boolean,\n backreferenceDuplicateKeys: boolean\n) {\n const getSafeRouteKey = buildGetSafeRouteKey()\n const routeKeys: { [named: string]: string } = {}\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const hasInterceptionMarker = INTERCEPTION_ROUTE_MARKERS.some((m) =>\n segment.startsWith(m)\n )\n\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (hasInterceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n segments.push(\n getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker: paramMatches[1],\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys\n ? NEXT_INTERCEPTION_MARKER_PREFIX\n : undefined,\n backreferenceDuplicateKeys,\n })\n )\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined,\n backreferenceDuplicateKeys,\n })\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n }\n}\n\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */\nexport function getNamedRouteRegex(\n normalizedRoute: string,\n options: GetNamedRouteRegexOptions\n) {\n const result = getNamedParametrizedRoute(\n normalizedRoute,\n options.prefixRouteKeys,\n options.includeSuffix ?? false,\n options.includePrefix ?? false,\n options.backreferenceDuplicateKeys ?? false\n )\n\n let namedRegex = result.namedParameterizedRoute\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?'\n }\n\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n }\n}\n\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */\nexport function getNamedMiddlewareRegex(\n normalizedRoute: string,\n options: {\n catchAll?: boolean\n }\n) {\n const { parameterizedRoute } = getParametrizedRoute(\n normalizedRoute,\n false,\n false\n )\n const { catchAll = true } = options\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : ''\n return {\n namedRegex: `^/${catchAllRegex}$`,\n }\n }\n\n const { namedParameterizedRoute } = getNamedParametrizedRoute(\n normalizedRoute,\n false,\n false,\n false,\n false\n )\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`,\n }\n}\n","import type { HtmlProps } from './html-context.shared-runtime'\nimport type { ComponentType, JSX } from 'react'\nimport type { DomainLocale } from '../../server/config'\nimport type { Env } from '@next/env'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextRouter } from './router/router'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { PreviewData } from '../../types'\nimport type { COMPILER_NAMES } from './constants'\nimport type fs from 'fs'\n\nexport type NextComponentType<\n Context extends BaseContext = NextPageContext,\n InitialProps = {},\n Props = {},\n> = ComponentType<Props> & {\n /**\n * Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.\n * Make sure to return plain `Object` without using `Date`, `Map`, `Set`.\n * @param context Context of `page`\n */\n getInitialProps?(context: Context): InitialProps | Promise<InitialProps>\n}\n\nexport type DocumentType = NextComponentType<\n DocumentContext,\n DocumentInitialProps,\n DocumentProps\n>\n\nexport type AppType<P = {}> = NextComponentType<\n AppContextType,\n P,\n AppPropsType<any, P>\n>\n\nexport type AppTreeType = ComponentType<\n AppInitialProps & { [name: string]: any }\n>\n\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */\nexport const WEB_VITALS = ['CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB'] as const\nexport type NextWebVitalsMetric = {\n id: string\n startTime: number\n value: number\n attribution?: { [key: string]: unknown }\n} & (\n | {\n label: 'web-vital'\n name: (typeof WEB_VITALS)[number]\n }\n | {\n label: 'custom'\n name:\n | 'Next.js-hydration'\n | 'Next.js-route-change-to-render'\n | 'Next.js-render'\n }\n)\n\nexport type Enhancer<C> = (Component: C) => C\n\nexport type ComponentsEnhancer =\n | {\n enhanceApp?: Enhancer<AppType>\n enhanceComponent?: Enhancer<NextComponentType>\n }\n | Enhancer<NextComponentType>\n\nexport type RenderPageResult = {\n html: string\n head?: Array<JSX.Element | null>\n}\n\nexport type RenderPage = (\n options?: ComponentsEnhancer\n) => DocumentInitialProps | Promise<DocumentInitialProps>\n\nexport type BaseContext = {\n res?: ServerResponse\n [k: string]: any\n}\n\nexport type NEXT_DATA = {\n props: Record<string, any>\n page: string\n query: ParsedUrlQuery\n buildId: string\n assetPrefix?: string\n runtimeConfig?: { [key: string]: any }\n nextExport?: boolean\n autoExport?: boolean\n isFallback?: boolean\n isExperimentalCompile?: boolean\n dynamicIds?: (string | number)[]\n err?: Error & {\n statusCode?: number\n source?: typeof COMPILER_NAMES.server | typeof COMPILER_NAMES.edgeServer\n }\n gsp?: boolean\n gssp?: boolean\n customServer?: boolean\n gip?: boolean\n appGip?: boolean\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n domainLocales?: readonly DomainLocale[]\n scriptLoader?: any[]\n isPreview?: boolean\n notFoundSrcPage?: string\n}\n\n/**\n * `Next` context\n */\nexport interface NextPageContext {\n /**\n * Error object if encountered during rendering\n */\n err?: (Error & { statusCode?: number }) | null\n /**\n * `HTTP` request object.\n */\n req?: IncomingMessage\n /**\n * `HTTP` response object.\n */\n res?: ServerResponse\n /**\n * Path section of `URL`.\n */\n pathname: string\n /**\n * Query string section of `URL` parsed as an object.\n */\n query: ParsedUrlQuery\n /**\n * `String` of the actual path including query.\n */\n asPath?: string\n /**\n * The currently active locale\n */\n locale?: string\n /**\n * All configured locales\n */\n locales?: readonly string[]\n /**\n * The configured default locale\n */\n defaultLocale?: string\n /**\n * `Component` the tree of the App to use if needing to render separately\n */\n AppTree: AppTreeType\n}\n\nexport type AppContextType<Router extends NextRouter = NextRouter> = {\n Component: NextComponentType<NextPageContext>\n AppTree: AppTreeType\n ctx: NextPageContext\n router: Router\n}\n\nexport type AppInitialProps<PageProps = any> = {\n pageProps: PageProps\n}\n\nexport type AppPropsType<\n Router extends NextRouter = NextRouter,\n PageProps = {},\n> = AppInitialProps<PageProps> & {\n Component: NextComponentType<NextPageContext, any, any>\n router: Router\n __N_SSG?: boolean\n __N_SSP?: boolean\n}\n\nexport type DocumentContext = NextPageContext & {\n renderPage: RenderPage\n defaultGetInitialProps(\n ctx: DocumentContext,\n options?: { nonce?: string }\n ): Promise<DocumentInitialProps>\n}\n\nexport type DocumentInitialProps = RenderPageResult & {\n styles?: React.ReactElement[] | Iterable<React.ReactNode> | JSX.Element\n}\n\nexport type DocumentProps = DocumentInitialProps & HtmlProps\n\n/**\n * Next `API` route request\n */\nexport interface NextApiRequest extends IncomingMessage {\n /**\n * Object of `query` values from url\n */\n query: Partial<{\n [key: string]: string | string[]\n }>\n /**\n * Object of `cookies` from header\n */\n cookies: Partial<{\n [key: string]: string\n }>\n\n body: any\n\n env: Env\n\n draftMode?: boolean\n\n preview?: boolean\n /**\n * Preview data set on the request, if any\n * */\n previewData?: PreviewData\n}\n\n/**\n * Send body of response\n */\ntype Send<T> = (body: T) => void\n\n/**\n * Next `API` route response\n */\nexport type NextApiResponse<Data = any> = ServerResponse & {\n /**\n * Send data `any` data in response\n */\n send: Send<Data>\n /**\n * Send data `json` data in response\n */\n json: Send<Data>\n status: (statusCode: number) => NextApiResponse<Data>\n redirect(url: string): NextApiResponse<Data>\n redirect(status: number, url: string): NextApiResponse<Data>\n\n /**\n * Set draft mode\n */\n setDraftMode: (options: { enable: boolean }) => NextApiResponse<Data>\n\n /**\n * Set preview data for Next.js' prerender mode\n */\n setPreviewData: (\n data: object | string,\n options?: {\n /**\n * Specifies the number (in seconds) for the preview session to last for.\n * The given number will be converted to an integer by rounding down.\n * By default, no maximum age is set and the preview session finishes\n * when the client shuts down (browser is closed).\n */\n maxAge?: number\n /**\n * Specifies the path for the preview session to work under. By default,\n * the path is considered the \"default path\", i.e., any pages under \"/\".\n */\n path?: string\n }\n ) => NextApiResponse<Data>\n\n /**\n * Clear preview data for Next.js' prerender mode\n */\n clearPreviewData: (options?: { path?: string }) => NextApiResponse<Data>\n\n /**\n * Revalidate a specific page and regenerate it using On-Demand Incremental\n * Static Regeneration.\n * The path should be an actual path, not a rewritten path. E.g. for\n * \"/blog/[slug]\" this should be \"/blog/post-1\".\n * @link https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath\n */\n revalidate: (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => Promise<void>\n}\n\n/**\n * Next `API` route handler\n */\nexport type NextApiHandler<T = any> = (\n req: NextApiRequest,\n res: NextApiResponse<T>\n) => unknown | Promise<unknown>\n\n/**\n * Utils\n */\nexport function execOnce<T extends (...args: any[]) => ReturnType<T>>(\n fn: T\n): T {\n let used = false\n let result: ReturnType<T>\n\n return ((...args: any[]) => {\n if (!used) {\n used = true\n result = fn(...args)\n }\n return result\n }) as T\n}\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url)\n\nexport function getLocationOrigin() {\n const { protocol, hostname, port } = window.location\n return `${protocol}//${hostname}${port ? ':' + port : ''}`\n}\n\nexport function getURL() {\n const { href } = window.location\n const origin = getLocationOrigin()\n return href.substring(origin.length)\n}\n\nexport function getDisplayName<P>(Component: ComponentType<P>) {\n return typeof Component === 'string'\n ? Component\n : Component.displayName || Component.name || 'Unknown'\n}\n\nexport function isResSent(res: ServerResponse) {\n return res.finished || res.headersSent\n}\n\nexport function normalizeRepeatedSlashes(url: string) {\n const urlParts = url.split('?')\n const urlNoQuery = urlParts[0]\n\n return (\n urlNoQuery\n // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/')\n .replace(/\\/\\/+/g, '/') +\n (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '')\n )\n}\n\nexport async function loadGetInitialProps<\n C extends BaseContext,\n IP = {},\n P = {},\n>(App: NextComponentType<C, IP, P>, ctx: C): Promise<IP> {\n if (process.env.NODE_ENV !== 'production') {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`\n throw new Error(message)\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || (ctx.ctx && ctx.ctx.res)\n\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx),\n }\n }\n return {} as IP\n }\n\n const props = await App.getInitialProps(ctx)\n\n if (res && isResSent(res)) {\n return props\n }\n\n if (!props) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`\n throw new Error(message)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\n `${getDisplayName(\n App\n )} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`\n )\n }\n }\n\n return props\n}\n\nexport const SP = typeof performance !== 'undefined'\nexport const ST =\n SP &&\n (['mark', 'measure', 'getEntriesByName'] as const).every(\n (method) => typeof performance[method] === 'function'\n )\n\nexport class DecodeError extends Error {}\nexport class NormalizeError extends Error {}\nexport class PageNotFoundError extends Error {\n code: string\n\n constructor(page: string) {\n super()\n this.code = 'ENOENT'\n this.name = 'PageNotFoundError'\n this.message = `Cannot find module for page: ${page}`\n }\n}\n\nexport class MissingStaticPage extends Error {\n constructor(page: string, message: string) {\n super()\n this.message = `Failed to load static file for page: ${page} ${message}`\n }\n}\n\nexport class MiddlewareNotFoundError extends Error {\n code: string\n constructor() {\n super()\n this.code = 'ENOENT'\n this.message = `Cannot find the middleware module`\n }\n}\n\nexport interface CacheFs {\n existsSync: typeof fs.existsSync\n readFile: typeof fs.promises.readFile\n readFileSync: typeof fs.readFileSync\n writeFile(f: string, d: any): Promise<void>\n mkdir(dir: string): Promise<void | string>\n stat(f: string): Promise<{ mtime: Date }>\n}\n\nexport function stringifyError(error: Error) {\n return JSON.stringify({ message: error.message, stack: error.stack })\n}\n","import type { Group } from './route-regex'\nimport { DecodeError } from '../../utils'\nimport type { Params } from '../../../../server/request/params'\n\nexport interface RouteMatchFn {\n (pathname: string): false | Params\n}\n\ntype RouteMatcherOptions = {\n // We only use the exec method of the RegExp object. This helps us avoid using\n // type assertions that the passed in properties are of the correct type.\n re: Pick<RegExp, 'exec'>\n groups: Record<string, Group>\n}\n\nexport function getRouteMatcher({\n re,\n groups,\n}: RouteMatcherOptions): RouteMatchFn {\n return (pathname: string) => {\n const routeMatch = re.exec(pathname)\n if (!routeMatch) return false\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch {\n throw new DecodeError('failed to decode param')\n }\n }\n\n const params: Params = {}\n for (const [key, group] of Object.entries(groups)) {\n const match = routeMatch[group.pos]\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry) => decode(entry))\n } else {\n params[key] = decode(match)\n }\n }\n }\n\n return params\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nexport function searchParamsToUrlQuery(\n searchParams: URLSearchParams\n): ParsedUrlQuery {\n const query: ParsedUrlQuery = {}\n for (const [key, value] of searchParams.entries()) {\n const existing = query[key]\n if (typeof existing === 'undefined') {\n query[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n query[key] = [existing, value]\n }\n }\n return query\n}\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (typeof param === 'string') {\n return param\n }\n\n if (\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(query: ParsedUrlQuery): URLSearchParams {\n const searchParams = new URLSearchParams()\n for (const [key, value] of Object.entries(query)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n searchParams.append(key, stringifyUrlQueryParam(item))\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value))\n }\n }\n return searchParams\n}\n\nexport function assign(\n target: URLSearchParams,\n ...searchParamsList: URLSearchParams[]\n): URLSearchParams {\n for (const searchParams of searchParamsList) {\n for (const key of searchParams.keys()) {\n target.delete(key)\n }\n\n for (const [key, value] of searchParams.entries()) {\n target.append(key, value)\n }\n }\n\n return target\n}\n","import type { NextApiRequestCookies } from '.'\n\n/**\n * Parse cookies from the `headers` of request\n * @param req request object\n */\n\nexport function getCookieParser(headers: {\n [key: string]: string | string[] | null | undefined\n}): () => NextApiRequestCookies {\n return function parseCookie(): NextApiRequestCookies {\n const { cookie } = headers\n\n if (!cookie) {\n return {}\n }\n\n const { parse: parseCookieFn } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie)\n }\n}\n","import type { IncomingMessage } from 'http'\nimport type { Key } from 'next/dist/compiled/path-to-regexp'\nimport type { NextParsedUrlQuery } from '../../../../server/request-meta'\nimport type { RouteHas } from '../../../../lib/load-custom-routes'\nimport type { BaseNextRequest } from '../../../../server/base-http'\n\nimport { compile, pathToRegexp } from 'next/dist/compiled/path-to-regexp'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { parseUrl } from './parse-url'\nimport {\n INTERCEPTION_ROUTE_MARKERS,\n isInterceptionRouteAppPath,\n} from './interception-routes'\nimport { getCookieParser } from '../../../../server/api-utils/get-cookie-parser'\nimport type { Params } from '../../../../server/request/params'\n\n/**\n * Ensure only a-zA-Z are used for param names for proper interpolating\n * with path-to-regexp\n */\nfunction getSafeParamName(paramName: string) {\n let newParamName = ''\n\n for (let i = 0; i < paramName.length; i++) {\n const charCode = paramName.charCodeAt(i)\n\n if (\n (charCode > 64 && charCode < 91) || // A-Z\n (charCode > 96 && charCode < 123) // a-z\n ) {\n newParamName += paramName[i]\n }\n }\n return newParamName\n}\n\nfunction escapeSegment(str: string, segmentName: string) {\n return str.replace(\n new RegExp(`:${escapeStringRegexp(segmentName)}`, 'g'),\n `__ESC_COLON_${segmentName}`\n )\n}\n\nfunction unescapeSegments(str: string) {\n return str.replace(/__ESC_COLON_/gi, ':')\n}\n\nexport function matchHas(\n req: BaseNextRequest | IncomingMessage,\n query: Params,\n has: RouteHas[] = [],\n missing: RouteHas[] = []\n): false | Params {\n const params: Params = {}\n\n const hasMatch = (hasItem: RouteHas) => {\n let value\n let key = hasItem.key\n\n switch (hasItem.type) {\n case 'header': {\n key = key!.toLowerCase()\n value = req.headers[key] as string\n break\n }\n case 'cookie': {\n if ('cookies' in req) {\n value = req.cookies[hasItem.key]\n } else {\n const cookies = getCookieParser(req.headers)()\n value = cookies[hasItem.key]\n }\n\n break\n }\n case 'query': {\n value = query[key!]\n break\n }\n case 'host': {\n const { host } = req?.headers || {}\n // remove port from host if present\n const hostname = host?.split(':', 1)[0].toLowerCase()\n value = hostname\n break\n }\n default: {\n break\n }\n }\n\n if (!hasItem.value && value) {\n params[getSafeParamName(key!)] = value\n return true\n } else if (value) {\n const matcher = new RegExp(`^${hasItem.value}$`)\n const matches = Array.isArray(value)\n ? value.slice(-1)[0].match(matcher)\n : value.match(matcher)\n\n if (matches) {\n if (Array.isArray(matches)) {\n if (matches.groups) {\n Object.keys(matches.groups).forEach((groupKey) => {\n params[groupKey] = matches.groups![groupKey]\n })\n } else if (hasItem.type === 'host' && matches[0]) {\n params.host = matches[0]\n }\n }\n return true\n }\n }\n return false\n }\n\n const allMatch =\n has.every((item) => hasMatch(item)) &&\n !missing.some((item) => hasMatch(item))\n\n if (allMatch) {\n return params\n }\n return false\n}\n\nexport function compileNonPath(value: string, params: Params): string {\n if (!value.includes(':')) {\n return value\n }\n\n for (const key of Object.keys(params)) {\n if (value.includes(`:${key}`)) {\n value = value\n .replace(\n new RegExp(`:${key}\\\\*`, 'g'),\n `:${key}--ESCAPED_PARAM_ASTERISKS`\n )\n .replace(\n new RegExp(`:${key}\\\\?`, 'g'),\n `:${key}--ESCAPED_PARAM_QUESTION`\n )\n .replace(new RegExp(`:${key}\\\\+`, 'g'), `:${key}--ESCAPED_PARAM_PLUS`)\n .replace(\n new RegExp(`:${key}(?!\\\\w)`, 'g'),\n `--ESCAPED_PARAM_COLON${key}`\n )\n }\n }\n value = value\n .replace(/(:|\\*|\\?|\\+|\\(|\\)|\\{|\\})/g, '\\\\$1')\n .replace(/--ESCAPED_PARAM_PLUS/g, '+')\n .replace(/--ESCAPED_PARAM_COLON/g, ':')\n .replace(/--ESCAPED_PARAM_QUESTION/g, '?')\n .replace(/--ESCAPED_PARAM_ASTERISKS/g, '*')\n\n // the value needs to start with a forward-slash to be compiled\n // correctly\n return compile(`/${value}`, { validate: false })(params).slice(1)\n}\n\nexport function parseDestination(args: {\n destination: string\n params: Readonly<Params>\n query: Readonly<NextParsedUrlQuery>\n}) {\n let escaped = args.destination\n for (const param of Object.keys({ ...args.params, ...args.query })) {\n if (!param) continue\n\n escaped = escapeSegment(escaped, param)\n }\n\n const parsed = parseUrl(escaped)\n\n let pathname = parsed.pathname\n if (pathname) {\n pathname = unescapeSegments(pathname)\n }\n\n let href = parsed.href\n if (href) {\n href = unescapeSegments(href)\n }\n\n let hostname = parsed.hostname\n if (hostname) {\n hostname = unescapeSegments(hostname)\n }\n\n let hash = parsed.hash\n if (hash) {\n hash = unescapeSegments(hash)\n }\n\n return {\n ...parsed,\n pathname,\n hostname,\n href,\n hash,\n }\n}\n\nexport function prepareDestination(args: {\n appendParamsToQuery: boolean\n destination: string\n params: Params\n query: NextParsedUrlQuery\n}) {\n const parsedDestination = parseDestination(args)\n\n const { hostname: destHostname, query: destQuery } = parsedDestination\n\n // The following code assumes that the pathname here includes the hash if it's\n // present.\n let destPath = parsedDestination.pathname\n if (parsedDestination.hash) {\n destPath = `${destPath}${parsedDestination.hash}`\n }\n\n const destParams: (string | number)[] = []\n\n const destPathParamKeys: Key[] = []\n pathToRegexp(destPath, destPathParamKeys)\n for (const key of destPathParamKeys) {\n destParams.push(key.name)\n }\n\n if (destHostname) {\n const destHostnameParamKeys: Key[] = []\n pathToRegexp(destHostname, destHostnameParamKeys)\n for (const key of destHostnameParamKeys) {\n destParams.push(key.name)\n }\n }\n\n const destPathCompiler = compile(\n destPath,\n // we don't validate while compiling the destination since we should\n // have already validated before we got to this point and validating\n // breaks compiling destinations with named pattern params from the source\n // e.g. /something:hello(.*) -> /another/:hello is broken with validation\n // since compile validation is meant for reversing and not for inserting\n // params from a separate path-regex into another\n { validate: false }\n )\n\n let destHostnameCompiler\n if (destHostname) {\n destHostnameCompiler = compile(destHostname, { validate: false })\n }\n\n // update any params in query values\n for (const [key, strOrArray] of Object.entries(destQuery)) {\n // the value needs to start with a forward-slash to be compiled\n // correctly\n if (Array.isArray(strOrArray)) {\n destQuery[key] = strOrArray.map((value) =>\n compileNonPath(unescapeSegments(value), args.params)\n )\n } else if (typeof strOrArray === 'string') {\n destQuery[key] = compileNonPath(unescapeSegments(strOrArray), args.params)\n }\n }\n\n // add path params to query if it's not a redirect and not\n // already defined in destination query or path\n let paramKeys = Object.keys(args.params).filter(\n (name) => name !== 'nextInternalLocale'\n )\n\n if (\n args.appendParamsToQuery &&\n !paramKeys.some((key) => destParams.includes(key))\n ) {\n for (const key of paramKeys) {\n if (!(key in destQuery)) {\n destQuery[key] = args.params[key]\n }\n }\n }\n\n let newUrl\n\n // The compiler also that the interception route marker is an unnamed param, hence '0',\n // so we need to add it to the params object.\n if (isInterceptionRouteAppPath(destPath)) {\n for (const segment of destPath.split('/')) {\n const marker = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n if (marker) {\n if (marker === '(..)(..)') {\n args.params['0'] = '(..)'\n args.params['1'] = '(..)'\n } else {\n args.params['0'] = marker\n }\n break\n }\n }\n }\n\n try {\n newUrl = destPathCompiler(args.params)\n\n const [pathname, hash] = newUrl.split('#', 2)\n if (destHostnameCompiler) {\n parsedDestination.hostname = destHostnameCompiler(args.params)\n }\n parsedDestination.pathname = pathname\n parsedDestination.hash = `${hash ? '#' : ''}${hash || ''}`\n delete (parsedDestination as any).search\n } catch (err: any) {\n if (err.message.match(/Expected .*? to not repeat, but got an array/)) {\n throw new Error(\n `To use a multi-match in the destination you must add \\`*\\` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match`\n )\n }\n throw err\n }\n\n // Query merge order lowest priority to highest\n // 1. initial URL query values\n // 2. path segment values\n // 3. destination specified query values\n parsedDestination.query = {\n ...args.query,\n ...parsedDestination.query,\n }\n\n return {\n newUrl,\n destQuery,\n parsedDestination,\n }\n}\n","import type { OutgoingHttpHeaders } from 'http'\nimport {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../lib/constants'\n\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */\nexport function fromNodeOutgoingHttpHeaders(\n nodeHeaders: OutgoingHttpHeaders\n): Headers {\n const headers = new Headers()\n for (let [key, value] of Object.entries(nodeHeaders)) {\n const values = Array.isArray(value) ? value : [value]\n for (let v of values) {\n if (typeof v === 'undefined') continue\n if (typeof v === 'number') {\n v = v.toString()\n }\n\n headers.append(key, v)\n }\n }\n return headers\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(cookiesString: string) {\n var cookiesStrings = []\n var pos = 0\n var start\n var ch\n var lastComma\n var nextStart\n var cookiesSeparatorFound\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1\n }\n return pos < cookiesString.length\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos)\n\n return ch !== '=' && ch !== ';' && ch !== ','\n }\n\n while (pos < cookiesString.length) {\n start = pos\n cookiesSeparatorFound = false\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos)\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos\n pos += 1\n\n skipWhitespace()\n nextStart = pos\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart\n cookiesStrings.push(cookiesString.substring(start, lastComma))\n start = pos\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1\n }\n } else {\n pos += 1\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length))\n }\n }\n\n return cookiesStrings\n}\n\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */\nexport function toNodeOutgoingHttpHeaders(\n headers: Headers\n): OutgoingHttpHeaders {\n const nodeHeaders: OutgoingHttpHeaders = {}\n const cookies: string[] = []\n if (headers) {\n for (const [key, value] of headers.entries()) {\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value))\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies\n } else {\n nodeHeaders[key] = value\n }\n }\n }\n return nodeHeaders\n}\n\n/**\n * Validate the correctness of a user-provided URL.\n */\nexport function validateURL(url: string | URL): string {\n try {\n return String(new URL(String(url)))\n } catch (error: any) {\n throw new Error(\n `URL is malformed \"${String(\n url\n )}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,\n { cause: error }\n )\n }\n}\n\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */\nexport function normalizeNextQueryParam(key: string): null | string {\n const prefixes = [NEXT_QUERY_PARAM_PREFIX, NEXT_INTERCEPTION_MARKER_PREFIX]\n for (const prefix of prefixes) {\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length)\n }\n }\n return null\n}\n","/**\n * Decodes a query path parameter.\n *\n * @param value - The value to decode.\n * @returns The decoded value.\n */\nexport function decodeQueryPathParameter(value: string) {\n // When deployed to Vercel, the value may be encoded, so this attempts to\n // decode it and returns the original value if it fails.\n try {\n return decodeURIComponent(value)\n } catch {\n return value\n }\n}\n","// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport * as querystring from './querystring'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nexport function formatUrl(urlObj: UrlObject) {\n let { auth, hostname } = urlObj\n let protocol = urlObj.protocol || ''\n let pathname = urlObj.pathname || ''\n let hash = urlObj.hash || ''\n let query = urlObj.query || ''\n let host: string | false = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n if (urlObj.host) {\n host = auth + urlObj.host\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n if (urlObj.port) {\n host += ':' + urlObj.port\n }\n }\n\n if (query && typeof query === 'object') {\n query = String(querystring.urlQueryToSearchParams(query as ParsedUrlQuery))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) protocol += ':'\n\n if (\n urlObj.slashes ||\n ((!protocol || slashedProtocols.test(protocol)) && host !== false)\n ) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') hash = '#' + hash\n if (search && search[0] !== '?') search = '?' + search\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n\nexport const urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes',\n]\n\nexport function formatWithValidation(url: UrlObject): string {\n if (process.env.NODE_ENV === 'development') {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key) => {\n if (!urlObjectKeys.includes(key)) {\n console.warn(\n `Unknown key passed via urlObject into url.format: ${key}`\n )\n }\n })\n }\n }\n\n return formatUrl(url)\n}\n","import type { LoadComponentsReturnType } from '../load-components'\nimport type { ServerRuntime, SizeLimit } from '../../types'\nimport type {\n ExperimentalConfig,\n NextConfigComplete,\n} from '../../server/config-shared'\nimport type { ClientReferenceManifest } from '../../build/webpack/plugins/flight-manifest-plugin'\nimport type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { AppPageModule } from '../route-modules/app-page/module'\nimport type {\n HeadData,\n LoadingModuleData,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport type { __ApiPreviewProps } from '../api-utils'\n\nimport s from 'next/dist/compiled/superstruct'\nimport type { RequestLifecycleOpts } from '../base-server'\nimport type { InstrumentationOnRequestError } from '../instrumentation/types'\nimport type { NextRequestHint } from '../web/adapter'\nimport type { BaseNextRequest } from '../base-http'\nimport type { IncomingMessage } from 'http'\nimport type { RenderResumeDataCache } from '../resume-data-cache/resume-data-cache'\n\nexport type DynamicParamTypes =\n | 'catchall'\n | 'catchall-intercepted'\n | 'optional-catchall'\n | 'dynamic'\n | 'dynamic-intercepted'\n\nconst dynamicParamTypesSchema = s.enums(['c', 'ci', 'oc', 'd', 'di'])\n\nexport type DynamicParamTypesShort = s.Infer<typeof dynamicParamTypesSchema>\n\nconst segmentSchema = s.union([\n s.string(),\n s.tuple([s.string(), s.string(), dynamicParamTypesSchema]),\n])\n\nexport type Segment = s.Infer<typeof segmentSchema>\n\n// unfortunately the tuple is not understood well by Describe so we have to\n// use any here. This does not have any impact on the runtime type since the validation\n// does work correctly.\nexport const flightRouterStateSchema: s.Describe<any> = s.tuple([\n segmentSchema,\n s.record(\n s.string(),\n s.lazy(() => flightRouterStateSchema)\n ),\n s.optional(s.nullable(s.string())),\n s.optional(\n s.nullable(\n s.union([\n s.literal('refetch'),\n s.literal('refresh'),\n s.literal('inside-shared-layout'),\n ])\n )\n ),\n s.optional(s.boolean()),\n])\n\n/**\n * Router state\n */\nexport type FlightRouterState = [\n segment: Segment,\n parallelRoutes: { [parallelRouterKey: string]: FlightRouterState },\n url?: string | null,\n /**\n * \"refresh\" and \"refetch\", despite being similarly named, have different\n * semantics:\n * - \"refetch\" is used during a request to inform the server where rendering\n * should start from.\n *\n * - \"refresh\" is used by the client to mark that a segment should re-fetch the\n * data from the server for the current segment. It uses the \"url\" property\n * above to determine where to fetch from.\n *\n * - \"inside-shared-layout\" is used during a prefetch request to inform the\n * server that even if the segment matches, it should be treated as if it's\n * within the \"new\" part of a navigation — inside the shared layout. If\n * the segment doesn't match, then it has no effect, since it would be\n * treated as new regardless. If it does match, though, the server does not\n * need to render it, because the client already has it.\n *\n * A bit confusing, but that's because it has only one extremely narrow use\n * case — during a non-PPR prefetch, the server uses it to find the first\n * loading boundary beneath a shared layout.\n *\n * TODO: We should rethink the protocol for dynamic requests. It might not\n * make sense for the client to send a FlightRouterState, since this type is\n * overloaded with concerns.\n */\n refresh?: 'refetch' | 'refresh' | 'inside-shared-layout' | null,\n isRootLayout?: boolean,\n /**\n * Only present when responding to a tree prefetch request. Indicates whether\n * there is a loading boundary somewhere in the tree. The client cache uses\n * this to determine if it can skip the data prefetch request.\n */\n hasLoadingBoundary?: HasLoadingBoundary,\n]\n\nexport const enum HasLoadingBoundary {\n // There is a loading boundary in this particular segment\n SegmentHasLoadingBoundary = 1,\n // There is a loading boundary somewhere in the subtree (but not in\n // this segment)\n SubtreeHasLoadingBoundary = 2,\n // There is no loading boundary in this segment or any of its descendants\n SubtreeHasNoLoadingBoundary = 3,\n}\n\n/**\n * Individual Flight response path\n */\nexport type FlightSegmentPath =\n // Uses `any` as repeating pattern can't be typed.\n | any[]\n // Looks somewhat like this\n | [\n segment: Segment,\n parallelRouterKey: string,\n segment: Segment,\n parallelRouterKey: string,\n segment: Segment,\n parallelRouterKey: string,\n ]\n\n/**\n * Represents a tree of segments and the Flight data (i.e. React nodes) that\n * correspond to each one. The tree is isomorphic to the FlightRouterState;\n * however in the future we want to be able to fetch arbitrary partial segments\n * without having to fetch all its children. So this response format will\n * likely change.\n */\nexport type CacheNodeSeedData = [\n segment: Segment,\n node: React.ReactNode | null,\n parallelRoutes: {\n [parallelRouterKey: string]: CacheNodeSeedData | null\n },\n loading: LoadingModuleData | Promise<LoadingModuleData>,\n isPartial: boolean,\n]\n\nexport type FlightDataSegment = [\n /* segment of the rendered slice: */ Segment,\n /* treePatch */ FlightRouterState,\n /* cacheNodeSeedData */ CacheNodeSeedData | null, // Can be null during prefetch if there's no loading component\n /* head: viewport */ HeadData,\n /* isHeadPartial */ boolean,\n]\n\nexport type FlightDataPath =\n // Uses `any` as repeating pattern can't be typed.\n | any[]\n // Looks somewhat like this\n | [\n // Holds full path to the segment.\n ...FlightSegmentPath[],\n ...FlightDataSegment,\n ]\n\n/**\n * The Flight response data\n */\nexport type FlightData = Array<FlightDataPath> | string\n\nexport type ActionResult = Promise<any>\n\nexport type ServerOnInstrumentationRequestError = (\n error: unknown,\n // The request could be middleware, node server or web server request,\n // we normalized them into an aligned format to `onRequestError` API later.\n request: NextRequestHint | BaseNextRequest | IncomingMessage,\n errorContext: Parameters<InstrumentationOnRequestError>[2]\n) => void | Promise<void>\n\nexport interface RenderOptsPartial {\n dir?: string\n previewProps: __ApiPreviewProps | undefined\n err?: Error | null\n dev?: boolean\n basePath: string\n trailingSlash: boolean\n clientReferenceManifest?: DeepReadonly<ClientReferenceManifest>\n supportsDynamicResponse: boolean\n runtime?: ServerRuntime\n serverComponents?: boolean\n enableTainting?: boolean\n assetPrefix?: string\n crossOrigin?: '' | 'anonymous' | 'use-credentials' | undefined\n nextFontManifest?: DeepReadonly<NextFontManifest>\n botType?: 'dom' | 'html' | undefined\n serveStreamingMetadata?: boolean\n incrementalCache?: import('../lib/incremental-cache').IncrementalCache\n cacheLifeProfiles?: {\n [profile: string]: import('../use-cache/cache-life').CacheLife\n }\n setIsrStatus?: (key: string, value: boolean | null) => void\n isRevalidate?: boolean\n nextExport?: boolean\n nextConfigOutput?: 'standalone' | 'export'\n onInstrumentationRequestError?: ServerOnInstrumentationRequestError\n isDraftMode?: boolean\n deploymentId?: string\n onUpdateCookies?: (cookies: string[]) => void\n loadConfig?: (\n phase: string,\n dir: string,\n customConfig?: object | null,\n rawConfig?: boolean,\n silent?: boolean\n ) => Promise<NextConfigComplete>\n serverActions?: {\n bodySizeLimit?: SizeLimit\n allowedOrigins?: string[]\n }\n params?: ParsedUrlQuery\n isPrefetch?: boolean\n htmlLimitedBots: string | undefined\n experimental: {\n /**\n * When true, it indicates that the current page supports partial\n * prerendering.\n */\n isRoutePPREnabled?: boolean\n expireTime: number | undefined\n staleTimes: ExperimentalConfig['staleTimes'] | undefined\n clientTraceMetadata: string[] | undefined\n dynamicIO: boolean\n clientSegmentCache: boolean | 'client-only'\n dynamicOnHover: boolean\n inlineCss: boolean\n authInterrupts: boolean\n }\n postponed?: string\n\n /**\n * Should wait for react stream allReady to resolve all suspense boundaries,\n * in order to perform a full page render.\n */\n shouldWaitOnAllReady?: boolean\n\n /**\n * The resume data cache that was generated for this partially prerendered\n * page during dev warmup.\n */\n devRenderResumeDataCache?: RenderResumeDataCache\n\n /**\n * When true, the page will be rendered using the static rendering to detect\n * any dynamic API's that would have stopped the page from being fully\n * statically generated.\n */\n isDebugDynamicAccesses?: boolean\n\n /**\n * The maximum length of the headers that are emitted by React and added to\n * the response.\n */\n reactMaxHeadersLength: number | undefined\n\n isStaticGeneration?: boolean\n\n /**\n * When true, the page is prerendered as a fallback shell, while allowing any\n * dynamic accesses to result in an empty shell. This is the case when there\n * are also routes prerendered with a more complete set of params.\n * Prerendering those routes would catch any invalid dynamic accesses.\n */\n allowEmptyStaticShell?: boolean\n\n /**\n * next config experimental.devtoolSegmentExplorer\n */\n devtoolSegmentExplorer?: boolean\n}\n\nexport type RenderOpts = LoadComponentsReturnType<AppPageModule> &\n RenderOptsPartial &\n RequestLifecycleOpts\n\nexport type PreloadCallbacks = (() => void)[]\n\nexport type InitialRSCPayload = {\n /** buildId */\n b: string\n /** assetPrefix */\n p: string\n /** initialCanonicalUrlParts */\n c: string[]\n /** couldBeIntercepted */\n i: boolean\n /** initialFlightData */\n f: FlightDataPath[]\n /** missingSlots */\n m: Set<string> | undefined\n /** GlobalError */\n G: [React.ComponentType<any>, React.ReactNode | undefined]\n /** postponed */\n s: boolean\n /** prerendered */\n S: boolean\n}\n\n// Response from `createFromFetch` for normal rendering\nexport type NavigationFlightResponse = {\n /** buildId */\n b: string\n /** flightData */\n f: FlightData\n /** prerendered */\n S: boolean\n}\n\n// Response from `createFromFetch` for server actions. Action's flight data can be null\nexport type ActionFlightResponse = {\n /** actionResult */\n a: ActionResult\n /** buildId */\n b: string\n /** flightData */\n f: FlightData\n}\n\nexport type RSCPayload =\n | InitialRSCPayload\n | NavigationFlightResponse\n | ActionFlightResponse\n","import type {\n FlightRouterState,\n Segment,\n} from '../../../server/app-render/types'\nimport { INTERCEPTION_ROUTE_MARKERS } from '../../../shared/lib/router/utils/interception-routes'\nimport type { Params } from '../../../server/request/params'\nimport {\n isGroupSegment,\n DEFAULT_SEGMENT_KEY,\n PAGE_SEGMENT_KEY,\n} from '../../../shared/lib/segment'\nimport { matchSegment } from '../match-segments'\n\nconst removeLeadingSlash = (segment: string): string => {\n return segment[0] === '/' ? segment.slice(1) : segment\n}\n\nconst segmentToPathname = (segment: Segment): string => {\n if (typeof segment === 'string') {\n // 'children' is not a valid path -- it's technically a parallel route that corresponds with the current segment's page\n // if we don't skip it, then the computed pathname might be something like `/children` which doesn't make sense.\n if (segment === 'children') return ''\n\n return segment\n }\n\n return segment[1]\n}\n\nfunction normalizeSegments(segments: string[]): string {\n return (\n segments.reduce((acc, segment) => {\n segment = removeLeadingSlash(segment)\n if (segment === '' || isGroupSegment(segment)) {\n return acc\n }\n\n return `${acc}/${segment}`\n }, '') || '/'\n )\n}\n\nexport function extractPathFromFlightRouterState(\n flightRouterState: FlightRouterState\n): string | undefined {\n const segment = Array.isArray(flightRouterState[0])\n ? flightRouterState[0][1]\n : flightRouterState[0]\n\n if (\n segment === DEFAULT_SEGMENT_KEY ||\n INTERCEPTION_ROUTE_MARKERS.some((m) => segment.startsWith(m))\n )\n return undefined\n\n if (segment.startsWith(PAGE_SEGMENT_KEY)) return ''\n\n const segments = [segmentToPathname(segment)]\n const parallelRoutes = flightRouterState[1] ?? {}\n\n const childrenPath = parallelRoutes.children\n ? extractPathFromFlightRouterState(parallelRoutes.children)\n : undefined\n\n if (childrenPath !== undefined) {\n segments.push(childrenPath)\n } else {\n for (const [key, value] of Object.entries(parallelRoutes)) {\n if (key === 'children') continue\n\n const childPath = extractPathFromFlightRouterState(value)\n\n if (childPath !== undefined) {\n segments.push(childPath)\n }\n }\n }\n\n return normalizeSegments(segments)\n}\n\nfunction computeChangedPathImpl(\n treeA: FlightRouterState,\n treeB: FlightRouterState\n): string | null {\n const [segmentA, parallelRoutesA] = treeA\n const [segmentB, parallelRoutesB] = treeB\n\n const normalizedSegmentA = segmentToPathname(segmentA)\n const normalizedSegmentB = segmentToPathname(segmentB)\n\n if (\n INTERCEPTION_ROUTE_MARKERS.some(\n (m) =>\n normalizedSegmentA.startsWith(m) || normalizedSegmentB.startsWith(m)\n )\n ) {\n return ''\n }\n\n if (!matchSegment(segmentA, segmentB)) {\n // once we find where the tree changed, we compute the rest of the path by traversing the tree\n return extractPathFromFlightRouterState(treeB) ?? ''\n }\n\n for (const parallelRouterKey in parallelRoutesA) {\n if (parallelRoutesB[parallelRouterKey]) {\n const changedPath = computeChangedPathImpl(\n parallelRoutesA[parallelRouterKey],\n parallelRoutesB[parallelRouterKey]\n )\n if (changedPath !== null) {\n return `${segmentToPathname(segmentB)}/${changedPath}`\n }\n }\n }\n\n return null\n}\n\nexport function computeChangedPath(\n treeA: FlightRouterState,\n treeB: FlightRouterState\n): string | null {\n const changedPath = computeChangedPathImpl(treeA, treeB)\n\n if (changedPath == null || changedPath === '/') {\n return changedPath\n }\n\n // lightweight normalization to remove route groups\n return normalizeSegments(changedPath.split('/'))\n}\n\n/**\n * Recursively extracts dynamic parameters from FlightRouterState.\n */\nexport function getSelectedParams(\n currentTree: FlightRouterState,\n params: Params = {}\n): Params {\n const parallelRoutes = currentTree[1]\n\n for (const parallelRoute of Object.values(parallelRoutes)) {\n const segment = parallelRoute[0]\n const isDynamicParameter = Array.isArray(segment)\n const segmentValue = isDynamicParameter ? segment[1] : segment\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) continue\n\n // Ensure catchAll and optional catchall are turned into an array\n const isCatchAll =\n isDynamicParameter && (segment[2] === 'c' || segment[2] === 'oc')\n\n if (isCatchAll) {\n params[segment[0]] = segment[1].split('/')\n } else if (isDynamicParameter) {\n params[segment[0]] = segment[1]\n }\n\n params = getSelectedParams(parallelRoute, params)\n }\n\n return params\n}\n","import type { Rewrite } from '../lib/load-custom-routes'\nimport type { RouteMatchFn } from '../shared/lib/router/utils/route-matcher'\nimport type { NextConfig } from './config'\nimport type { BaseNextRequest } from './base-http'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { UrlWithParsedQuery } from 'url'\n\nimport { normalizeLocalePath } from '../shared/lib/i18n/normalize-locale-path'\nimport { getPathMatch } from '../shared/lib/router/utils/path-match'\nimport { getNamedRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\nimport {\n matchHas,\n prepareDestination,\n} from '../shared/lib/router/utils/prepare-destination'\nimport { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { normalizeRscURL } from '../shared/lib/router/utils/app-paths'\nimport {\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER,\n NEXT_CACHE_REVALIDATED_TAGS_HEADER,\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../lib/constants'\nimport { normalizeNextQueryParam } from './web/utils'\nimport type { IncomingHttpHeaders, IncomingMessage } from 'http'\nimport { decodeQueryPathParameter } from './lib/decode-query-path-parameter'\nimport type { DeepReadonly } from '../shared/lib/deep-readonly'\nimport { parseReqUrl } from '../lib/url'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport { parseAndValidateFlightRouterState } from './app-render/parse-and-validate-flight-router-state'\nimport { isInterceptionRouteRewrite } from '../lib/generate-interception-routes-rewrites'\nimport { NEXT_ROUTER_STATE_TREE_HEADER } from '../client/components/app-router-headers'\nimport { getSelectedParams } from '../client/components/router-reducer/compute-changed-path'\n\nfunction filterInternalQuery(\n query: Record<string, undefined | string | string[]>,\n paramKeys: string[],\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n // this is used to pass query information in rewrites\n // but should not be exposed in final query\n delete query['nextInternalLocale']\n\n for (const key in query) {\n const isNextQueryPrefix =\n key !== NEXT_QUERY_PARAM_PREFIX && key.startsWith(NEXT_QUERY_PARAM_PREFIX)\n\n const isNextInterceptionMarkerPrefix =\n key !== NEXT_INTERCEPTION_MARKER_PREFIX &&\n key.startsWith(NEXT_INTERCEPTION_MARKER_PREFIX)\n\n if (\n isNextQueryPrefix ||\n isNextInterceptionMarkerPrefix ||\n paramKeys.includes(key) ||\n (defaultRouteRegex && Object.keys(defaultRouteRegex.groups).includes(key))\n ) {\n delete query[key]\n }\n }\n}\n\nexport function normalizeCdnUrl(\n req: BaseNextRequest | IncomingMessage,\n paramKeys: string[],\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n // make sure to normalize req.url from CDNs to strip dynamic and rewrite\n // params from the query which are added during routing\n const _parsedUrl = parseReqUrl(req.url!)\n\n // we can't normalize if we can't parse\n if (!_parsedUrl) {\n return req.url\n }\n delete (_parsedUrl as any).search\n filterInternalQuery(_parsedUrl.query, paramKeys, defaultRouteRegex)\n\n req.url = formatUrl(_parsedUrl)\n}\n\nexport function interpolateDynamicPath(\n pathname: string,\n params: ParsedUrlQuery,\n defaultRouteRegex?: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n if (!defaultRouteRegex) return pathname\n\n for (const param of Object.keys(defaultRouteRegex.groups)) {\n const { optional, repeat } = defaultRouteRegex.groups[param]\n let builtParam = `[${repeat ? '...' : ''}${param}]`\n\n if (optional) {\n builtParam = `[${builtParam}]`\n }\n\n let paramValue: string\n const value = params[param]\n\n if (Array.isArray(value)) {\n paramValue = value.map((v) => v && encodeURIComponent(v)).join('/')\n } else if (value) {\n paramValue = encodeURIComponent(value)\n } else {\n paramValue = ''\n }\n\n if (paramValue || optional) {\n pathname = pathname.replaceAll(builtParam, paramValue)\n }\n }\n\n return pathname\n}\n\nexport function normalizeDynamicRouteParams(\n query: ParsedUrlQuery,\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex>,\n defaultRouteMatches: ParsedUrlQuery,\n ignoreMissingOptional: boolean\n) {\n let hasValidParams = true\n let params: ParsedUrlQuery = {}\n\n for (const key of Object.keys(defaultRouteRegex.groups)) {\n let value: string | string[] | undefined = query[key]\n\n if (typeof value === 'string') {\n value = normalizeRscURL(value)\n } else if (Array.isArray(value)) {\n value = value.map(normalizeRscURL)\n }\n\n // if the value matches the default value we can't rely\n // on the parsed params, this is used to signal if we need\n // to parse x-now-route-matches or not\n const defaultValue = defaultRouteMatches![key]\n const isOptional = defaultRouteRegex!.groups[key].optional\n\n const isDefaultValue = Array.isArray(defaultValue)\n ? defaultValue.some((defaultVal) => {\n return Array.isArray(value)\n ? value.some((val) => val.includes(defaultVal))\n : value?.includes(defaultVal)\n })\n : value?.includes(defaultValue as string)\n\n if (\n isDefaultValue ||\n (typeof value === 'undefined' && !(isOptional && ignoreMissingOptional))\n ) {\n return { params: {}, hasValidParams: false }\n }\n\n // non-provided optional values should be undefined so normalize\n // them to undefined\n if (\n isOptional &&\n (!value ||\n (Array.isArray(value) &&\n value.length === 1 &&\n // fallback optional catch-all SSG pages have\n // [[...paramName]] for the root path on Vercel\n (value[0] === 'index' || value[0] === `[[...${key}]]`)))\n ) {\n value = undefined\n delete query[key]\n }\n\n // query values from the proxy aren't already split into arrays\n // so make sure to normalize catch-all values\n if (\n value &&\n typeof value === 'string' &&\n defaultRouteRegex!.groups[key].repeat\n ) {\n value = value.split('/')\n }\n\n if (value) {\n params[key] = value\n }\n }\n\n return {\n params,\n hasValidParams,\n }\n}\n\nexport function getServerUtils({\n page,\n i18n,\n basePath,\n rewrites,\n pageIsDynamic,\n trailingSlash,\n caseSensitive,\n}: {\n page: string\n i18n?: NextConfig['i18n']\n basePath: string\n rewrites: DeepReadonly<{\n fallback?: ReadonlyArray<Rewrite>\n afterFiles?: ReadonlyArray<Rewrite>\n beforeFiles?: ReadonlyArray<Rewrite>\n }>\n pageIsDynamic: boolean\n trailingSlash?: boolean\n caseSensitive: boolean\n}) {\n let defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n let dynamicRouteMatcher: RouteMatchFn | undefined\n let defaultRouteMatches: ParsedUrlQuery | undefined\n\n if (pageIsDynamic) {\n defaultRouteRegex = getNamedRouteRegex(page, {\n prefixRouteKeys: false,\n })\n dynamicRouteMatcher = getRouteMatcher(defaultRouteRegex)\n defaultRouteMatches = dynamicRouteMatcher(page) as ParsedUrlQuery\n }\n\n function handleRewrites(\n req: BaseNextRequest | IncomingMessage,\n parsedUrl: UrlWithParsedQuery\n ) {\n const rewriteParams: Record<string, string> = {}\n let fsPathname = parsedUrl.pathname\n\n const matchesPage = () => {\n const fsPathnameNoSlash = removeTrailingSlash(fsPathname || '')\n return (\n fsPathnameNoSlash === removeTrailingSlash(page) ||\n dynamicRouteMatcher?.(fsPathnameNoSlash)\n )\n }\n\n const checkRewrite = (rewrite: DeepReadonly<Rewrite>): boolean => {\n const matcher = getPathMatch(\n rewrite.source + (trailingSlash ? '(/)?' : ''),\n {\n removeUnnamedParams: true,\n strict: true,\n sensitive: !!caseSensitive,\n }\n )\n\n if (!parsedUrl.pathname) return false\n\n let params = matcher(parsedUrl.pathname)\n\n if ((rewrite.has || rewrite.missing) && params) {\n const hasParams = matchHas(\n req,\n parsedUrl.query,\n rewrite.has as Rewrite['has'],\n rewrite.missing as Rewrite['missing']\n )\n\n if (hasParams) {\n Object.assign(params, hasParams)\n } else {\n params = false\n }\n }\n\n if (params) {\n try {\n // An interception rewrite might reference a dynamic param for a route the user\n // is currently on, which wouldn't be extractable from the matched route params.\n // This attempts to extract the dynamic params from the provided router state.\n if (isInterceptionRouteRewrite(rewrite as Rewrite)) {\n const stateHeader =\n req.headers[NEXT_ROUTER_STATE_TREE_HEADER.toLowerCase()]\n\n if (stateHeader) {\n params = {\n ...getSelectedParams(\n parseAndValidateFlightRouterState(stateHeader)\n ),\n ...params,\n }\n }\n }\n } catch (err) {\n // this is a no-op -- we couldn't extract dynamic params from the provided router state,\n // so we'll just use the params from the route matcher\n }\n\n const { parsedDestination, destQuery } = prepareDestination({\n appendParamsToQuery: true,\n destination: rewrite.destination,\n params: params,\n query: parsedUrl.query,\n })\n\n // if the rewrite destination is external break rewrite chain\n if (parsedDestination.protocol) {\n return true\n }\n\n Object.assign(rewriteParams, destQuery, params)\n Object.assign(parsedUrl.query, parsedDestination.query)\n delete (parsedDestination as any).query\n\n // for each property in parsedUrl.query, if the value is parametrized (eg :foo), look up the value\n // in rewriteParams and replace the parametrized value with the actual value\n // this is used when the rewrite destination does not contain the original source param\n // and so the value is still parametrized and needs to be replaced with the actual rewrite param\n Object.entries(parsedUrl.query).forEach(([key, value]) => {\n if (value && typeof value === 'string' && value.startsWith(':')) {\n const paramName = value.slice(1)\n const actualValue = rewriteParams[paramName]\n if (actualValue) {\n parsedUrl.query[key] = actualValue\n }\n }\n })\n\n Object.assign(parsedUrl, parsedDestination)\n\n fsPathname = parsedUrl.pathname\n if (!fsPathname) return false\n\n if (basePath) {\n fsPathname = fsPathname.replace(new RegExp(`^${basePath}`), '') || '/'\n }\n\n if (i18n) {\n const result = normalizeLocalePath(fsPathname, i18n.locales)\n fsPathname = result.pathname\n parsedUrl.query.nextInternalLocale =\n result.detectedLocale || params.nextInternalLocale\n }\n\n if (fsPathname === page) {\n return true\n }\n\n if (pageIsDynamic && dynamicRouteMatcher) {\n const dynamicParams = dynamicRouteMatcher(fsPathname)\n if (dynamicParams) {\n parsedUrl.query = {\n ...parsedUrl.query,\n ...dynamicParams,\n }\n return true\n }\n }\n }\n return false\n }\n\n for (const rewrite of rewrites.beforeFiles || []) {\n checkRewrite(rewrite)\n }\n\n if (fsPathname !== page) {\n let finished = false\n\n for (const rewrite of rewrites.afterFiles || []) {\n finished = checkRewrite(rewrite)\n if (finished) break\n }\n\n if (!finished && !matchesPage()) {\n for (const rewrite of rewrites.fallback || []) {\n finished = checkRewrite(rewrite)\n if (finished) break\n }\n }\n }\n return rewriteParams\n }\n\n function getParamsFromRouteMatches(routeMatchesHeader: string) {\n // If we don't have a default route regex, we can't get params from route\n // matches\n if (!defaultRouteRegex) return null\n\n const { groups, routeKeys } = defaultRouteRegex\n\n const matcher = getRouteMatcher({\n re: {\n // Simulate a RegExp match from the \\`req.url\\` input\n exec: (str: string) => {\n // Normalize all the prefixed query params.\n const obj: Record<string, string> = Object.fromEntries(\n new URLSearchParams(str)\n )\n for (const [key, value] of Object.entries(obj)) {\n const normalizedKey = normalizeNextQueryParam(key)\n if (!normalizedKey) continue\n\n obj[normalizedKey] = value\n delete obj[key]\n }\n\n // Use all the named route keys.\n const result = {} as RegExpExecArray\n for (const keyName of Object.keys(routeKeys)) {\n const paramName = routeKeys[keyName]\n\n // If this param name is not a valid parameter name, then skip it.\n if (!paramName) continue\n\n const group = groups[paramName]\n const value = obj[keyName]\n\n // When we're missing a required param, we can't match the route.\n if (!group.optional && !value) return null\n\n result[group.pos] = value\n }\n\n return result\n },\n },\n groups,\n })\n\n const routeMatches = matcher(routeMatchesHeader)\n if (!routeMatches) return null\n\n return routeMatches\n }\n\n function normalizeQueryParams(\n query: Record<string, string | string[] | undefined>,\n routeParamKeys: Set<string>\n ) {\n // this is used to pass query information in rewrites\n // but should not be exposed in final query\n delete query['nextInternalLocale']\n\n for (const [key, value] of Object.entries(query)) {\n const normalizedKey = normalizeNextQueryParam(key)\n if (!normalizedKey) continue\n\n // Remove the prefixed key from the query params because we want\n // to consume it for the dynamic route matcher.\n delete query[key]\n routeParamKeys.add(normalizedKey)\n\n if (typeof value === 'undefined') continue\n\n query[normalizedKey] = Array.isArray(value)\n ? value.map((v) => decodeQueryPathParameter(v))\n : decodeQueryPathParameter(value)\n }\n }\n\n return {\n handleRewrites,\n defaultRouteRegex,\n dynamicRouteMatcher,\n defaultRouteMatches,\n normalizeQueryParams,\n getParamsFromRouteMatches,\n /**\n * Normalize dynamic route params.\n *\n * @param query - The query params to normalize.\n * @param ignoreMissingOptional - Whether to ignore missing optional params.\n * @returns The normalized params and whether they are valid.\n */\n normalizeDynamicRouteParams: (\n query: ParsedUrlQuery,\n ignoreMissingOptional: boolean\n ) => {\n if (!defaultRouteRegex || !defaultRouteMatches) {\n return { params: {}, hasValidParams: false }\n }\n\n return normalizeDynamicRouteParams(\n query,\n defaultRouteRegex,\n defaultRouteMatches,\n ignoreMissingOptional\n )\n },\n\n normalizeCdnUrl: (\n req: BaseNextRequest | IncomingMessage,\n paramKeys: string[]\n ) => normalizeCdnUrl(req, paramKeys, defaultRouteRegex),\n\n interpolateDynamicPath: (\n pathname: string,\n params: Record<string, undefined | string | string[]>\n ) => interpolateDynamicPath(pathname, params, defaultRouteRegex),\n\n filterInternalQuery: (query: ParsedUrlQuery, paramKeys: string[]) =>\n filterInternalQuery(query, paramKeys, defaultRouteRegex),\n }\n}\n\nexport function getPreviouslyRevalidatedTags(\n headers: IncomingHttpHeaders,\n previewModeId: string | undefined\n): string[] {\n return typeof headers[NEXT_CACHE_REVALIDATED_TAGS_HEADER] === 'string' &&\n headers[NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER] === previewModeId\n ? headers[NEXT_CACHE_REVALIDATED_TAGS_HEADER].split(',')\n : []\n}\n","/**\n * strip _next/data/<build-id>/ prefix and .json suffix\n */\nexport function normalizeDataPath(pathname: string) {\n pathname = pathname\n .replace(/\\/_next\\/data\\/[^/]{1,}/, '')\n .replace(/\\.json$/, '')\n\n if (pathname === '/index') {\n return '/'\n }\n return pathname\n}\n","/* eslint-disable no-redeclare */\nimport type { IncomingMessage } from 'http'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { BaseNextRequest } from './base-http'\nimport type { CloneableBody } from './body-streams'\nimport type { RouteMatch } from './route-matches/route-match'\nimport type { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\nimport type { ServerComponentsHmrCache } from './response-cache'\nimport type { PagesDevOverlayBridgeType } from '../client/components/react-dev-overlay/pages/pages-dev-overlay-bridge'\n\n// FIXME: (wyattjoh) this is a temporary solution to allow us to pass data between bundled modules\nexport const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta')\n\nexport type NextIncomingMessage = (BaseNextRequest | IncomingMessage) & {\n [NEXT_REQUEST_META]?: RequestMeta\n}\n\nexport interface RequestMeta {\n /**\n * The query that was used to make the request.\n */\n initQuery?: ParsedUrlQuery\n\n /**\n * The URL that was used to make the request.\n */\n initURL?: string\n\n /**\n * The protocol that was used to make the request.\n */\n initProtocol?: string\n\n /**\n * The body that was read from the request. This is used to allow the body to\n * be read multiple times.\n */\n clonableBody?: CloneableBody\n\n /**\n * True when the request matched a locale domain that was configured in the\n * next.config.js file.\n */\n isLocaleDomain?: boolean\n\n /**\n * True when the request had locale information stripped from the pathname\n * part of the URL.\n */\n didStripLocale?: boolean\n\n /**\n * If the request had it's URL rewritten, this is the URL it was rewritten to.\n */\n rewroteURL?: string\n\n /**\n * The cookies that were added by middleware and were added to the response.\n */\n middlewareCookie?: string[]\n\n /**\n * The match on the request for a given route.\n */\n match?: RouteMatch\n\n /**\n * The incremental cache to use for the request.\n */\n incrementalCache?: any\n\n /**\n * The server components HMR cache, only for dev.\n */\n serverComponentsHmrCache?: ServerComponentsHmrCache\n\n /**\n * Equals the segment path that was used for the prefetch RSC request.\n */\n segmentPrefetchRSCRequest?: string\n\n /**\n * True when the request is for the prefetch flight data.\n */\n isPrefetchRSCRequest?: true\n\n /**\n * True when the request is for the flight data.\n */\n isRSCRequest?: true\n\n /**\n * A search param set by the Next.js client when performing RSC requests.\n * Because some CDNs do not vary their cache entries on our custom headers,\n * this search param represents a hash of the header values. For any cached\n * RSC request, we should verify that the hash matches before responding.\n * Otherwise this can lead to cache poisoning.\n * TODO: Consider not using custom request headers at all, and instead encode\n * everything into the search param.\n */\n cacheBustingSearchParam?: string\n\n /**\n * True when the request is for the `/_next/data` route using the pages\n * router.\n */\n isNextDataReq?: true\n\n /**\n * Postponed state to use for resumption. If present it's assumed that the\n * request is for a page that has postponed (there are no guarantees that the\n * page actually has postponed though as it would incur an additional cache\n * lookup).\n */\n postponed?: string\n\n /**\n * If provided, this will be called when a response cache entry was generated\n * or looked up in the cache.\n */\n onCacheEntry?: (\n cacheEntry: any,\n requestMeta: any\n ) => Promise<boolean | void> | boolean | void\n\n /**\n * The previous revalidate before rendering 404 page for notFound: true\n */\n notFoundRevalidate?: number | false\n\n /**\n * In development, the original source page that returned a 404.\n */\n developmentNotFoundSourcePage?: string\n\n /**\n * The path we routed to and should be invoked\n */\n invokePath?: string\n\n /**\n * The specific page output we should be matching\n */\n invokeOutput?: string\n\n /**\n * The status we are invoking the request with from routing\n */\n invokeStatus?: number\n\n /**\n * The routing error we are invoking with\n */\n invokeError?: Error\n\n /**\n * The query parsed for the invocation\n */\n invokeQuery?: Record<string, undefined | string | string[]>\n\n /**\n * Whether the request is a middleware invocation\n */\n middlewareInvoke?: boolean\n\n /**\n * Whether the request should render the fallback shell or not.\n */\n renderFallbackShell?: boolean\n\n /**\n * Whether the request is for the custom error page.\n */\n customErrorRender?: true\n\n /**\n * Whether to bubble up the NoFallbackError to the caller when a 404 is\n * returned.\n */\n bubbleNoFallback?: true\n\n /**\n * True when the request had locale information inferred from the default\n * locale.\n */\n localeInferredFromDefault?: true\n\n /**\n * The locale that was inferred or explicitly set for the request.\n */\n locale?: string\n\n /**\n * The default locale that was inferred or explicitly set for the request.\n */\n defaultLocale?: string\n\n /**\n * The project dir the server is running in\n */\n projectDir?: string\n\n /**\n * Whether we are generating the fallback version of the page in dev mode\n */\n isIsrFallback?: boolean\n\n /**\n * The query after resolving routes\n */\n query?: ParsedUrlQuery\n\n /**\n * The params after resolving routes\n */\n params?: ParsedUrlQuery\n\n /**\n * The AMP validator to use in development\n */\n ampValidator?: (html: string, pathname: string) => Promise<void>\n\n /**\n * ErrorOverlay component to use in development for pages router\n */\n PagesErrorDebug?: PagesDevOverlayBridgeType\n}\n\n/**\n * Gets the request metadata. If no key is provided, the entire metadata object\n * is returned.\n *\n * @param req the request to get the metadata from\n * @param key the key to get from the metadata (optional)\n * @returns the value for the key or the entire metadata object\n */\nexport function getRequestMeta(\n req: NextIncomingMessage,\n key?: undefined\n): RequestMeta\nexport function getRequestMeta<K extends keyof RequestMeta>(\n req: NextIncomingMessage,\n key: K\n): RequestMeta[K]\nexport function getRequestMeta<K extends keyof RequestMeta>(\n req: NextIncomingMessage,\n key?: K\n): RequestMeta | RequestMeta[K] {\n const meta = req[NEXT_REQUEST_META] || {}\n return typeof key === 'string' ? meta[key] : meta\n}\n\n/**\n * Sets the request metadata.\n *\n * @param req the request to set the metadata on\n * @param meta the metadata to set\n * @returns the mutated request metadata\n */\nexport function setRequestMeta(req: NextIncomingMessage, meta: RequestMeta) {\n req[NEXT_REQUEST_META] = meta\n return meta\n}\n\n/**\n * Adds a value to the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to set\n * @param value the value to set\n * @returns the mutated request metadata\n */\nexport function addRequestMeta<K extends keyof RequestMeta>(\n request: NextIncomingMessage,\n key: K,\n value: RequestMeta[K]\n) {\n const meta = getRequestMeta(request)\n meta[key] = value\n return setRequestMeta(request, meta)\n}\n\n/**\n * Removes a key from the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to remove\n * @returns the mutated request metadata\n */\nexport function removeRequestMeta<K extends keyof RequestMeta>(\n request: NextIncomingMessage,\n key: K\n) {\n const meta = getRequestMeta(request)\n delete meta[key]\n return setRequestMeta(request, meta)\n}\n\ntype NextQueryMetadata = {\n /**\n * The `_rsc` query parameter used for cache busting to ensure that the RSC\n * requests do not get cached by the browser explicitly.\n */\n [NEXT_RSC_UNION_QUERY]?: string\n}\n\nexport type NextParsedUrlQuery = ParsedUrlQuery &\n NextQueryMetadata & {\n amp?: '1'\n }\n\nexport interface NextUrlWithParsedQuery extends UrlWithParsedQuery {\n query: NextParsedUrlQuery\n}\n","import type { PageExtensions } from '../../build/page-extensions-type'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { isAppRouteRoute } from '../is-app-route-route'\n\nexport const STATIC_METADATA_IMAGES = {\n icon: {\n filename: 'icon',\n extensions: ['ico', 'jpg', 'jpeg', 'png', 'svg'],\n },\n apple: {\n filename: 'apple-icon',\n extensions: ['jpg', 'jpeg', 'png'],\n },\n favicon: {\n filename: 'favicon',\n extensions: ['ico'],\n },\n openGraph: {\n filename: 'opengraph-image',\n extensions: ['jpg', 'jpeg', 'png', 'gif'],\n },\n twitter: {\n filename: 'twitter-image',\n extensions: ['jpg', 'jpeg', 'png', 'gif'],\n },\n} as const\n\n// Match routes that are metadata routes, e.g. /sitemap.xml, /favicon.<ext>, /<icon>.<ext>, etc.\n// TODO-METADATA: support more metadata routes with more extensions\nexport const DEFAULT_METADATA_ROUTE_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx']\n\n// Match the file extension with the dynamic multi-routes extensions\n// e.g. ([xml, js], null) -> can match `/sitemap.xml/route`, `sitemap.js/route`\n// e.g. ([png], [ts]) -> can match `/opengrapg-image.png`, `/opengraph-image.ts`\nexport const getExtensionRegexString = (\n staticExtensions: readonly string[],\n dynamicExtensions: readonly string[] | null\n) => {\n // If there's no possible multi dynamic routes, will not match any <name>[].<ext> files\n if (!dynamicExtensions || dynamicExtensions.length === 0) {\n return `(\\\\.(?:${staticExtensions.join('|')}))`\n }\n return `(?:\\\\.(${staticExtensions.join('|')})|(\\\\.(${dynamicExtensions.join('|')})))`\n}\n\n/**\n * Determine if the file is a metadata route file entry\n * @param appDirRelativePath the relative file path to app/\n * @param pageExtensions the js extensions, such as ['js', 'jsx', 'ts', 'tsx']\n * @param strictlyMatchExtensions if it's true, match the file with page extension, otherwise match the file with default corresponding extension\n * @returns if the file is a metadata route file\n */\nexport function isMetadataRouteFile(\n appDirRelativePath: string,\n pageExtensions: PageExtensions,\n strictlyMatchExtensions: boolean\n) {\n // End with the extension or optional to have the extension\n // When strictlyMatchExtensions is true, it's used for match file path;\n // When strictlyMatchExtensions, the dynamic extension is skipped but\n // static extension is kept, which is usually used for matching route path.\n const trailingMatcher = (strictlyMatchExtensions ? '' : '?') + '$'\n // Match the optional variants like /opengraph-image2, /icon-a102f4.png, etc.\n const variantsMatcher = '\\\\d?'\n // The -\\w{6} is the suffix that normalized from group routes;\n const groupSuffix = strictlyMatchExtensions ? '' : '(-\\\\w{6})?'\n\n const suffixMatcher = `${variantsMatcher}${groupSuffix}`\n\n const metadataRouteFilesRegex = [\n new RegExp(\n `^[\\\\\\\\/]robots${getExtensionRegexString(\n pageExtensions.concat('txt'),\n null\n )}${trailingMatcher}`\n ),\n new RegExp(\n `^[\\\\\\\\/]manifest${getExtensionRegexString(\n pageExtensions.concat('webmanifest', 'json'),\n null\n )}${trailingMatcher}`\n ),\n new RegExp(`^[\\\\\\\\/]favicon\\\\.ico$`),\n new RegExp(\n `[\\\\\\\\/]sitemap${getExtensionRegexString(['xml'], pageExtensions)}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.icon.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.icon.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.apple.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.apple.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.openGraph.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.openGraph.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]${STATIC_METADATA_IMAGES.twitter.filename}${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.twitter.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n ]\n\n const normalizedAppDirRelativePath = normalizePathSep(appDirRelativePath)\n const matched = metadataRouteFilesRegex.some((r) =>\n r.test(normalizedAppDirRelativePath)\n )\n\n return matched\n}\n\n// Check if the route is a static metadata route, with /route suffix\n// e.g. /favicon.ico/route, /icon.png/route, etc.\n// But skip the text routes like robots.txt since they might also be dynamic.\n// Checking route path is not enough to determine if text routes is dynamic.\nexport function isStaticMetadataRoute(route: string) {\n // extract ext with regex\n const pathname = route.replace(/\\/route$/, '')\n\n const matched =\n isAppRouteRoute(route) &&\n isMetadataRouteFile(pathname, [], true) &&\n // These routes can either be built by static or dynamic entrypoints,\n // so we assume they're dynamic\n pathname !== '/robots.txt' &&\n pathname !== '/manifest.webmanifest' &&\n !pathname.endsWith('/sitemap.xml')\n\n return matched\n}\n\n/**\n * Determine if a page or pathname is a metadata page.\n *\n * The input is a page or pathname, which can be with or without page suffix /foo/page or /foo.\n * But it will not contain the /route suffix.\n *\n * .e.g\n * /robots -> true\n * /sitemap -> true\n * /foo -> false\n */\nexport function isMetadataPage(page: string) {\n const matched = !isAppRouteRoute(page) && isMetadataRouteFile(page, [], false)\n\n return matched\n}\n\n/*\n * Determine if a Next.js route is a metadata route.\n * `route` will has a route suffix.\n *\n * e.g.\n * /app/robots/route -> true\n * /robots/route -> true\n * /sitemap/[__metadata_id__]/route -> true\n * /app/sitemap/page -> false\n * /icon-a102f4/route -> true\n */\nexport function isMetadataRoute(route: string): boolean {\n let page = normalizeAppPath(route)\n .replace(/^\\/?app\\//, '')\n // Remove the dynamic route id\n .replace('/[__metadata_id__]', '')\n // Remove the /route suffix\n .replace(/\\/route$/, '')\n\n if (page[0] !== '/') page = '/' + page\n\n const matched = isAppRouteRoute(route) && isMetadataRouteFile(page, [], false)\n\n return matched\n}\n","import type { IncomingMessage, ServerResponse } from 'node:http'\nimport type { InstrumentationOnRequestError } from '../instrumentation/types'\nimport type { ParsedUrlQuery } from 'node:querystring'\nimport type { UrlWithParsedQuery } from 'node:url'\nimport type {\n PrerenderManifest,\n RequiredServerFilesManifest,\n} from '../../build'\nimport type { DevRoutesManifest } from '../lib/router-utils/setup-dev-bundler'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\n\nimport {\n BUILD_ID_FILE,\n BUILD_MANIFEST,\n CLIENT_REFERENCE_MANIFEST,\n NEXT_FONT_MANIFEST,\n PRERENDER_MANIFEST,\n REACT_LOADABLE_MANIFEST,\n ROUTES_MANIFEST,\n SERVER_FILES_MANIFEST,\n SERVER_REFERENCE_MANIFEST,\n SUBRESOURCE_INTEGRITY_MANIFEST,\n} from '../../shared/lib/constants'\nimport { parseReqUrl } from '../../lib/url'\nimport {\n normalizeLocalePath,\n type PathLocale,\n} from '../../shared/lib/i18n/normalize-locale-path'\nimport { isDynamicRoute } from '../../shared/lib/router/utils'\nimport { removePathPrefix } from '../../shared/lib/router/utils/remove-path-prefix'\nimport { getServerUtils } from '../server-utils'\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { checkIsOnDemandRevalidate } from '../api-utils'\nimport type { PreviewData } from '../../types'\nimport type { BuildManifest } from '../get-page-files'\nimport type { ReactLoadableManifest } from '../load-components'\nimport type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin'\nimport { normalizeDataPath } from '../../shared/lib/page-path/normalize-data-path'\nimport { pathHasPrefix } from '../../shared/lib/router/utils/path-has-prefix'\nimport { addRequestMeta, getRequestMeta } from '../request-meta'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { isStaticMetadataRoute } from '../../lib/metadata/is-metadata-route'\n\n/**\n * RouteModuleOptions is the options that are passed to the route module, other\n * route modules should extend this class to add specific options for their\n * route.\n */\nexport interface RouteModuleOptions<\n D extends RouteDefinition = RouteDefinition,\n U = unknown,\n> {\n readonly definition: Readonly<D>\n readonly userland: Readonly<U>\n readonly distDir: string\n readonly projectDir: string\n}\n\n/**\n * RouteHandlerContext is the base context for a route handler.\n */\nexport interface RouteModuleHandleContext {\n /**\n * Any matched parameters for the request. This is only defined for dynamic\n * routes.\n */\n params: Record<string, string | string[] | undefined> | undefined\n}\n\n/**\n * RouteModule is the base class for all route modules. This class should be\n * extended by all route modules.\n */\nexport abstract class RouteModule<\n D extends RouteDefinition = RouteDefinition,\n U = unknown,\n> {\n /**\n * The userland module. This is the module that is exported from the user's\n * code. This is marked as readonly to ensure that the module is not mutated\n * because the module (when compiled) only provides getters.\n */\n public readonly userland: Readonly<U>\n\n /**\n * The definition of the route.\n */\n public readonly definition: Readonly<D>\n\n /**\n * The shared modules that are exposed and required for the route module.\n */\n public static readonly sharedModules: any\n\n public isDev: boolean\n public distDir: string\n public projectDir: string\n public isAppRouter?: boolean\n\n constructor({\n userland,\n definition,\n distDir,\n projectDir,\n }: RouteModuleOptions<D, U>) {\n this.userland = userland\n this.definition = definition\n this.isDev = process.env.NODE_ENV === 'development'\n this.distDir = distDir\n this.projectDir = projectDir\n }\n\n public async instrumentationOnRequestError(\n req: IncomingMessage,\n ...args: Parameters<InstrumentationOnRequestError>\n ) {\n // this is only handled here for node, for edge it\n // is handled in the adapter/loader instead\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { join } = require('node:path') as typeof import('node:path')\n const projectDir =\n getRequestMeta(req, 'projectDir') ||\n join(process.cwd(), this.projectDir)\n\n const { instrumentationOnRequestError } = await import(\n '../lib/router-utils/instrumentation-globals.external'\n )\n\n return instrumentationOnRequestError(projectDir, this.distDir, ...args)\n }\n }\n\n private async loadManifests(projectDir: string, srcPage: string) {\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { loadManifestFromRelativePath } = await import(\n '../load-manifest.external'\n )\n const normalizedPagePath = normalizePagePath(srcPage)\n\n const [\n routesManifest,\n prerenderManifest,\n buildManifest,\n reactLoadableManifest,\n nextFontManifest,\n clientReferenceManifest,\n serverActionsManifest,\n subresourceIntegrityManifest,\n serverFilesManifest,\n buildId,\n ] = await Promise.all([\n loadManifestFromRelativePath<DevRoutesManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: ROUTES_MANIFEST,\n }),\n loadManifestFromRelativePath<PrerenderManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: PRERENDER_MANIFEST,\n }),\n loadManifestFromRelativePath<BuildManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: BUILD_MANIFEST,\n }),\n loadManifestFromRelativePath<ReactLoadableManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: process.env.TURBOPACK\n ? `server/${this.isAppRouter ? 'app' : 'pages'}${normalizedPagePath}/${REACT_LOADABLE_MANIFEST}`\n : REACT_LOADABLE_MANIFEST,\n handleMissing: true,\n }),\n loadManifestFromRelativePath<NextFontManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: `server/${NEXT_FONT_MANIFEST}.json`,\n }),\n this.isAppRouter && !isStaticMetadataRoute(srcPage)\n ? loadManifestFromRelativePath({\n distDir: this.distDir,\n projectDir,\n useEval: true,\n handleMissing: true,\n manifest: `server/app${srcPage.replace(/%5F/g, '_') + '_' + CLIENT_REFERENCE_MANIFEST}.js`,\n shouldCache: !this.isDev,\n })\n : undefined,\n this.isAppRouter\n ? loadManifestFromRelativePath<any>({\n distDir: this.distDir,\n projectDir,\n manifest: `server/${SERVER_REFERENCE_MANIFEST}.json`,\n handleMissing: true,\n shouldCache: !this.isDev,\n })\n : {},\n loadManifestFromRelativePath<Record<string, string>>({\n projectDir,\n distDir: this.distDir,\n manifest: `server/${SUBRESOURCE_INTEGRITY_MANIFEST}.json`,\n handleMissing: true,\n shouldCache: !this.isDev,\n }),\n this.isDev\n ? ({} as any)\n : loadManifestFromRelativePath<RequiredServerFilesManifest>({\n projectDir,\n distDir: this.distDir,\n manifest: SERVER_FILES_MANIFEST,\n }),\n this.isDev\n ? 'development'\n : loadManifestFromRelativePath<any>({\n projectDir,\n distDir: this.distDir,\n manifest: BUILD_ID_FILE,\n skipParse: true,\n }),\n ])\n\n return {\n buildId,\n buildManifest,\n routesManifest,\n nextFontManifest,\n prerenderManifest,\n serverFilesManifest,\n reactLoadableManifest,\n clientReferenceManifest: (clientReferenceManifest as any)\n ?.__RSC_MANIFEST?.[srcPage.replace(/%5F/g, '_')],\n serverActionsManifest,\n subresourceIntegrityManifest,\n }\n }\n throw new Error('Invariant: loadManifests called for edge runtime')\n }\n\n public async prepare(\n req: IncomingMessage,\n res: ServerResponse,\n {\n srcPage,\n multiZoneDraftMode,\n }: {\n srcPage: string\n multiZoneDraftMode?: boolean\n }\n ): Promise<\n | {\n buildId: string\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n query: ParsedUrlQuery\n originalQuery: ParsedUrlQuery\n originalPathname: string\n params?: ParsedUrlQuery\n parsedUrl: UrlWithParsedQuery\n previewData: PreviewData\n pageIsDynamic: boolean\n isDraftMode: boolean\n isNextDataRequest: boolean\n buildManifest: DeepReadonly<BuildManifest>\n nextFontManifest: DeepReadonly<NextFontManifest>\n serverFilesManifest: DeepReadonly<RequiredServerFilesManifest>\n reactLoadableManifest: DeepReadonly<ReactLoadableManifest>\n routesManifest: DeepReadonly<DevRoutesManifest>\n prerenderManifest: DeepReadonly<PrerenderManifest>\n // we can't pull in the client reference type or it causes issues with\n // our pre-compiled types\n clientReferenceManifest?: any\n serverActionsManifest?: any\n subresourceIntegrityManifest?: DeepReadonly<Record<string, string>>\n isOnDemandRevalidate: boolean\n revalidateOnlyGenerated: boolean\n }\n | undefined\n > {\n // \"prepare\" is only needed for node runtime currently\n // if we want to share the normalizing logic here\n // we will need to allow passing in the i18n and similar info\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { join } = require('node:path') as typeof import('node:path')\n const projectDir =\n getRequestMeta(req, 'projectDir') ||\n join(process.cwd(), this.projectDir)\n\n const { ensureInstrumentationRegistered } = await import(\n '../lib/router-utils/instrumentation-globals.external'\n )\n // ensure instrumentation is registered and pass\n // onRequestError below\n ensureInstrumentationRegistered(projectDir, this.distDir)\n\n const manifests = await this.loadManifests(projectDir, srcPage)\n const { routesManifest, prerenderManifest } = manifests\n const { basePath, i18n, rewrites } = routesManifest\n\n if (basePath) {\n req.url = removePathPrefix(req.url || '/', basePath)\n }\n\n const parsedUrl = parseReqUrl(req.url || '/')\n // if we couldn't parse the URL we can't continue\n if (!parsedUrl) {\n return\n }\n let isNextDataRequest = false\n\n if (pathHasPrefix(parsedUrl.pathname || '/', '/_next/data')) {\n isNextDataRequest = true\n parsedUrl.pathname = normalizeDataPath(parsedUrl.pathname || '/')\n }\n let originalPathname = parsedUrl.pathname || '/'\n const originalQuery = { ...parsedUrl.query }\n const pageIsDynamic = isDynamicRoute(srcPage)\n\n let localeResult: PathLocale | undefined\n let detectedLocale: string | undefined\n\n if (i18n) {\n localeResult = normalizeLocalePath(\n parsedUrl.pathname || '/',\n i18n.locales\n )\n\n if (localeResult.detectedLocale) {\n req.url = `${localeResult.pathname}${parsedUrl.search}`\n originalPathname = localeResult.pathname\n\n if (!detectedLocale) {\n detectedLocale = localeResult.detectedLocale\n }\n }\n }\n\n const serverUtils = getServerUtils({\n page: srcPage,\n i18n,\n basePath,\n rewrites,\n pageIsDynamic,\n trailingSlash: process.env.__NEXT_TRAILING_SLASH as any as boolean,\n caseSensitive: Boolean(routesManifest.caseSensitive),\n })\n\n const domainLocale = detectDomainLocale(\n i18n?.domains,\n getHostname(parsedUrl, req.headers),\n detectedLocale\n )\n addRequestMeta(req, 'isLocaleDomain', Boolean(domainLocale))\n\n const defaultLocale = domainLocale?.defaultLocale || i18n?.defaultLocale\n\n // Ensure parsedUrl.pathname includes locale before processing\n // rewrites or they won't match correctly.\n if (defaultLocale && !detectedLocale) {\n parsedUrl.pathname = `/${defaultLocale}${parsedUrl.pathname}`\n }\n const locale =\n getRequestMeta(req, 'locale') || detectedLocale || defaultLocale\n\n const rewriteParamKeys = Object.keys(\n serverUtils.handleRewrites(req, parsedUrl)\n )\n\n // after processing rewrites we want to remove locale\n // from parsedUrl pathname\n if (i18n) {\n parsedUrl.pathname = normalizeLocalePath(\n parsedUrl.pathname || '/',\n i18n.locales\n ).pathname\n }\n\n let params: Record<string, undefined | string | string[]> | undefined =\n getRequestMeta(req, 'params')\n\n // attempt parsing from pathname\n if (!params && serverUtils.dynamicRouteMatcher) {\n const paramsMatch = serverUtils.dynamicRouteMatcher(\n normalizeDataPath(localeResult?.pathname || parsedUrl.pathname || '/')\n )\n const paramsResult = serverUtils.normalizeDynamicRouteParams(\n paramsMatch || {},\n true\n )\n\n if (paramsResult.hasValidParams) {\n params = paramsResult.params\n }\n }\n\n // Local \"next start\" expects the routing parsed query values\n // to not be present in the URL although when deployed proxies\n // will add query values from resolving the routes to pass to function.\n\n // TODO: do we want to change expectations for \"next start\"\n // to include these query values in the URL which affects asPath\n // but would match deployed behavior, e.g. a rewrite from middleware\n // that adds a query param would be in asPath as query but locally\n // it won't be in the asPath but still available in the query object\n const query = getRequestMeta(req, 'query') || {\n ...parsedUrl.query,\n }\n\n const routeParamKeys = new Set<string>()\n const combinedParamKeys = [...routeParamKeys]\n\n for (const key of rewriteParamKeys) {\n // We only want to filter rewrite param keys from the URL\n // if they are matches from the URL e.g. the key/value matches\n // before and after applying the rewrites /:path for /hello and\n // { path: 'hello' } but not for { path: 'another' } and /hello\n // TODO: we should prefix rewrite param keys the same as we do\n // for dynamic routes so we can identify them properly\n const originalValue = Array.isArray(originalQuery[key])\n ? originalQuery[key].join('')\n : originalQuery[key]\n\n const queryValue = Array.isArray(query[key])\n ? query[key].join('')\n : query[key]\n\n if (!(key in originalQuery) || originalValue === queryValue) {\n combinedParamKeys.push(key)\n }\n }\n\n serverUtils.normalizeCdnUrl(req, combinedParamKeys)\n serverUtils.normalizeQueryParams(query, routeParamKeys)\n serverUtils.filterInternalQuery(originalQuery, combinedParamKeys)\n\n if (pageIsDynamic) {\n const queryResult = serverUtils.normalizeDynamicRouteParams(query, true)\n\n req.url = serverUtils.interpolateDynamicPath(\n req.url || '/',\n params || query\n )\n parsedUrl.pathname = serverUtils.interpolateDynamicPath(\n parsedUrl.pathname || '/',\n params || query\n )\n originalPathname = serverUtils.interpolateDynamicPath(\n originalPathname,\n params || query\n )\n\n // try pulling from query if valid\n if (!params) {\n if (queryResult.hasValidParams) {\n params = Object.assign({}, queryResult.params)\n\n // If we pulled from query remove it so it's\n // only in params\n for (const key in serverUtils.defaultRouteMatches) {\n delete query[key]\n }\n } else {\n // use final params from URL matching\n const paramsMatch = serverUtils.dynamicRouteMatcher?.(\n normalizeDataPath(\n localeResult?.pathname || parsedUrl.pathname || '/'\n )\n )\n // we don't normalize these as they are allowed to be\n // the literal slug matches here e.g. /blog/[slug]\n // actually being requested\n if (paramsMatch) {\n params = Object.assign({}, paramsMatch)\n }\n }\n }\n }\n\n // Remove any normalized params from the query if they\n // weren't present as non-prefixed query key e.g.\n // ?search=1&nxtPsearch=hello we don't delete search\n for (const key of routeParamKeys) {\n if (!(key in originalQuery)) {\n delete query[key]\n }\n }\n\n const { isOnDemandRevalidate, revalidateOnlyGenerated } =\n checkIsOnDemandRevalidate(req, prerenderManifest.preview)\n\n let isDraftMode = false\n let previewData: PreviewData\n\n const { tryGetPreviewData } =\n require('../api-utils/node/try-get-preview-data') as typeof import('../api-utils/node/try-get-preview-data')\n\n previewData = tryGetPreviewData(\n req,\n res,\n prerenderManifest.preview,\n Boolean(multiZoneDraftMode)\n )\n isDraftMode = previewData !== false\n\n return {\n query,\n originalQuery,\n originalPathname,\n params,\n parsedUrl,\n locale,\n isNextDataRequest,\n locales: i18n?.locales,\n defaultLocale,\n isDraftMode,\n previewData,\n pageIsDynamic,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n ...manifests,\n serverActionsManifest: manifests.serverActionsManifest,\n clientReferenceManifest: manifests.clientReferenceManifest,\n }\n }\n }\n}\n","import { ensureLeadingSlash } from './ensure-leading-slash'\nimport { isDynamicRoute } from '../router/utils'\nimport { NormalizeError } from '../utils'\n\n/**\n * Takes a page and transforms it into its file counterpart ensuring that the\n * output is normalized. Note this function is not idempotent because a page\n * `/index` can be referencing `/index/index.js` and `/index/index` could be\n * referencing `/index/index/index.js`. Examples:\n * - `/` -> `/index`\n * - `/index/foo` -> `/index/index/foo`\n * - `/index` -> `/index/index`\n */\nexport function normalizePagePath(page: string): string {\n const normalized =\n /^\\/index(\\/|$)/.test(page) && !isDynamicRoute(page)\n ? `/index${page}`\n : page === '/'\n ? '/index'\n : ensureLeadingSlash(page)\n\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { posix } = require('path') as typeof import('path')\n const resolvedPage = posix.normalize(normalized)\n if (resolvedPage !== normalized) {\n throw new NormalizeError(\n `Requested and resolved page mismatch: ${normalized} ${resolvedPage}`\n )\n }\n }\n\n return normalized\n}\n","export function isAppRouteRoute(route: string): boolean {\n return route.endsWith('/route')\n}\n","/**\n * For a given page path, this function ensures that there is no backslash\n * escaping slashes in the path. Example:\n * - `foo\\/bar\\/baz` -> `foo/bar/baz`\n */\nexport function normalizePathSep(path: string): string {\n return path.replace(/\\\\/g, '/')\n}\n","import { pathHasPrefix } from './path-has-prefix'\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */\nexport function removePathPrefix(path: string, prefix: string): string {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path\n }\n\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length)\n\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix\n }\n\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`\n}\n","import type { Key } from 'next/dist/compiled/path-to-regexp'\nimport { pathToRegexp } from 'next/dist/compiled/path-to-regexp'\nimport { regexpToFunction } from 'next/dist/compiled/path-to-regexp'\n\ninterface Options {\n /**\n * A transformer function that will be applied to the regexp generated\n * from the provided path and path-to-regexp.\n */\n regexModifier?: (regex: string) => string\n /**\n * When true the function will remove all unnamed parameters\n * from the matched parameters.\n */\n removeUnnamedParams?: boolean\n /**\n * When true the regexp won't allow an optional trailing delimiter\n * to match.\n */\n strict?: boolean\n\n /**\n * When true the matcher will be case-sensitive, defaults to false\n */\n sensitive?: boolean\n}\n\nexport type PatchMatcher = (\n pathname: string,\n params?: Record<string, any>\n) => Record<string, any> | false\n\n/**\n * Generates a path matcher function for a given path and options based on\n * path-to-regexp. By default the match will be case insensitive, non strict\n * and delimited by `/`.\n */\nexport function getPathMatch(path: string, options?: Options): PatchMatcher {\n const keys: Key[] = []\n const regexp = pathToRegexp(path, keys, {\n delimiter: '/',\n sensitive:\n typeof options?.sensitive === 'boolean' ? options.sensitive : false,\n strict: options?.strict,\n })\n\n const matcher = regexpToFunction<Record<string, any>>(\n options?.regexModifier\n ? new RegExp(options.regexModifier(regexp.source), regexp.flags)\n : regexp,\n keys\n )\n\n /**\n * A matcher function that will check if a given pathname matches the path\n * given in the builder function. When the path does not match it will return\n * `false` but if it does it will return an object with the matched params\n * merged with the params provided in the second argument.\n */\n return (pathname, params) => {\n // If no pathname is provided it's not a match.\n if (typeof pathname !== 'string') return false\n\n const match = matcher(pathname)\n\n // If the path did not match `false` will be returned.\n if (!match) return false\n\n /**\n * If unnamed params are not allowed they must be removed from\n * the matched parameters. path-to-regexp uses \"string\" for named and\n * \"number\" for unnamed parameters.\n */\n if (options?.removeUnnamedParams) {\n for (const key of keys) {\n if (typeof key.name === 'number') {\n delete match.params[key.name]\n }\n }\n }\n\n return { ...params, ...match.params }\n }\n}\n","import { pathToRegexp } from 'next/dist/compiled/path-to-regexp'\nimport { NEXT_URL } from '../client/components/app-router-headers'\nimport {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from '../shared/lib/router/utils/interception-routes'\nimport type { Rewrite } from './load-custom-routes'\n\n// a function that converts normalised paths (e.g. /foo/[bar]/[baz]) to the format expected by pathToRegexp (e.g. /foo/:bar/:baz)\nfunction toPathToRegexpPath(path: string): string {\n return path.replace(/\\[\\[?([^\\]]+)\\]\\]?/g, (_, capture) => {\n // path-to-regexp only supports word characters, so we replace any non-word characters with underscores\n const paramName = capture.replace(/\\W+/g, '_')\n\n // handle catch-all segments (e.g. /foo/bar/[...baz] or /foo/bar/[[...baz]])\n if (capture.startsWith('...')) {\n return `:${capture.slice(3)}*`\n }\n return ':' + paramName\n })\n}\n\nexport function generateInterceptionRoutesRewrites(\n appPaths: string[],\n basePath = ''\n): Rewrite[] {\n const rewrites: Rewrite[] = []\n\n for (const appPath of appPaths) {\n if (isInterceptionRouteAppPath(appPath)) {\n const { interceptingRoute, interceptedRoute } =\n extractInterceptionRouteInformation(appPath)\n\n const normalizedInterceptingRoute = `${\n interceptingRoute !== '/' ? toPathToRegexpPath(interceptingRoute) : ''\n }/(.*)?`\n\n const normalizedInterceptedRoute = toPathToRegexpPath(interceptedRoute)\n const normalizedAppPath = toPathToRegexpPath(appPath)\n\n // pathToRegexp returns a regex that matches the path, but we need to\n // convert it to a string that can be used in a header value\n // to the format that Next/the proxy expects\n let interceptingRouteRegex = pathToRegexp(normalizedInterceptingRoute)\n .toString()\n .slice(2, -3)\n\n rewrites.push({\n source: `${basePath}${normalizedInterceptedRoute}`,\n destination: `${basePath}${normalizedAppPath}`,\n has: [\n {\n type: 'header',\n key: NEXT_URL,\n value: interceptingRouteRegex,\n },\n ],\n })\n }\n }\n\n return rewrites\n}\n\nexport function isInterceptionRouteRewrite(route: Rewrite) {\n // When we generate interception rewrites in the above implementation, we always do so with only a single `has` condition.\n return route.has?.[0]?.key === NEXT_URL\n}\n","export const RSC_HEADER = 'RSC' as const\nexport const ACTION_HEADER = 'Next-Action' as const\n// TODO: Instead of sending the full router state, we only need to send the\n// segment path. Saves bytes. Then we could also use this field for segment\n// prefetches, which also need to specify a particular segment.\nexport const NEXT_ROUTER_STATE_TREE_HEADER = 'Next-Router-State-Tree' as const\nexport const NEXT_ROUTER_PREFETCH_HEADER = 'Next-Router-Prefetch' as const\n// This contains the path to the segment being prefetched.\n// TODO: If we change Next-Router-State-Tree to be a segment path, we can use\n// that instead. Then Next-Router-Prefetch and Next-Router-Segment-Prefetch can\n// be merged into a single enum.\nexport const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER =\n 'Next-Router-Segment-Prefetch' as const\nexport const NEXT_HMR_REFRESH_HEADER = 'Next-HMR-Refresh' as const\nexport const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__' as const\nexport const NEXT_URL = 'Next-Url' as const\nexport const RSC_CONTENT_TYPE_HEADER = 'text/x-component' as const\n\nexport const FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n] as const\n\nexport const NEXT_RSC_UNION_QUERY = '_rsc' as const\n\nexport const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time' as const\nexport const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed' as const\nexport const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path' as const\nexport const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query' as const\nexport const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender' as const\n","import type { FlightRouterState } from './types'\nimport { flightRouterStateSchema } from './types'\nimport { assert } from 'next/dist/compiled/superstruct'\n\nexport function parseAndValidateFlightRouterState(\n stateHeader: string | string[]\n): FlightRouterState\nexport function parseAndValidateFlightRouterState(\n stateHeader: undefined\n): undefined\nexport function parseAndValidateFlightRouterState(\n stateHeader: string | string[] | undefined\n): FlightRouterState | undefined\nexport function parseAndValidateFlightRouterState(\n stateHeader: string | string[] | undefined\n): FlightRouterState | undefined {\n if (typeof stateHeader === 'undefined') {\n return undefined\n }\n if (Array.isArray(stateHeader)) {\n throw new Error(\n 'Multiple router state headers were sent. This is not allowed.'\n )\n }\n\n // We limit the size of the router state header to ~40kb. This is to prevent\n // a malicious user from sending a very large header and slowing down the\n // resolving of the router state.\n // This is around 2,000 nested or parallel route segment states:\n // '{\"children\":[\"\",{}]}'.length === 20.\n if (stateHeader.length > 20 * 2000) {\n throw new Error('The router state header was too large.')\n }\n\n try {\n const state = JSON.parse(decodeURIComponent(stateHeader))\n assert(state, flightRouterStateSchema)\n return state\n } catch {\n throw new Error('The router state header was sent but could not be parsed.')\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nimport { searchParamsToUrlQuery } from './querystring'\nimport { parseRelativeUrl } from './parse-relative-url'\n\nexport interface ParsedUrl {\n hash: string\n hostname?: string | null\n href: string\n pathname: string\n port?: string | null\n protocol?: string | null\n query: ParsedUrlQuery\n search: string\n slashes: boolean | undefined\n}\n\nexport function parseUrl(url: string): ParsedUrl {\n if (url.startsWith('/')) {\n return parseRelativeUrl(url)\n }\n\n const parsedURL = new URL(url)\n return {\n hash: parsedURL.hash,\n hostname: parsedURL.hostname,\n href: parsedURL.href,\n pathname: parsedURL.pathname,\n port: parsedURL.port,\n protocol: parsedURL.protocol,\n query: searchParamsToUrlQuery(parsedURL.searchParams),\n search: parsedURL.search,\n slashes:\n parsedURL.href.slice(\n parsedURL.protocol.length,\n parsedURL.protocol.length + 2\n ) === '//',\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\nimport { getLocationOrigin } from '../../utils'\nimport { searchParamsToUrlQuery } from './querystring'\n\nexport interface ParsedRelativeUrl {\n hash: string\n href: string\n pathname: string\n query: ParsedUrlQuery\n search: string\n slashes: undefined\n}\n\n/**\n * Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative\n * (e.g. `./hello`) then at least base must be.\n * Absolute urls are rejected with one exception, in the browser, absolute urls that are on\n * the current origin will be parsed as relative\n */\nexport function parseRelativeUrl(\n url: string,\n base?: string,\n parseQuery?: true\n): ParsedRelativeUrl\nexport function parseRelativeUrl(\n url: string,\n base: string | undefined,\n parseQuery: false\n): Omit<ParsedRelativeUrl, 'query'>\nexport function parseRelativeUrl(\n url: string,\n base?: string,\n parseQuery = true\n): ParsedRelativeUrl | Omit<ParsedRelativeUrl, 'query'> {\n const globalBase = new URL(\n typeof window === 'undefined' ? 'http://n' : getLocationOrigin()\n )\n\n const resolvedBase = base\n ? new URL(base, globalBase)\n : url.startsWith('.')\n ? new URL(\n typeof window === 'undefined' ? 'http://n' : window.location.href\n )\n : globalBase\n\n const { pathname, searchParams, search, hash, href, origin } = new URL(\n url,\n resolvedBase\n )\n\n if (origin !== globalBase.origin) {\n throw new Error(`invariant: invalid relative URL, router received ${url}`)\n }\n\n return {\n pathname,\n query: parseQuery ? searchParamsToUrlQuery(searchParams) : undefined,\n search,\n hash,\n href: href.slice(origin.length),\n // We don't know for relative URLs at this point since we set a custom, internal\n // base that isn't surfaced to users.\n slashes: undefined,\n }\n}\n","import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n","import type { OutgoingHttpHeaders } from 'http'\n\n/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */\nexport function getHostname(\n parsed: { hostname?: string | null },\n headers?: OutgoingHttpHeaders\n): string | undefined {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname: string\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0]\n } else if (parsed.hostname) {\n hostname = parsed.hostname\n } else return\n\n return hostname.toLowerCase()\n}\n","/**\n * FNV-1a Hash implementation\n * @author Travis Webb (tjwebb) <me@traviswebb.com>\n *\n * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js\n *\n * Simplified, optimized and add modified for 52 bit, which provides a larger hash space\n * and still making use of Javascript's 53-bit integer space.\n */\nexport const fnv1a52 = (str: string) => {\n const len = str.length\n let i = 0,\n t0 = 0,\n v0 = 0x2325,\n t1 = 0,\n v1 = 0x8422,\n t2 = 0,\n v2 = 0x9ce4,\n t3 = 0,\n v3 = 0xcbf2\n\n while (i < len) {\n v0 ^= str.charCodeAt(i++)\n t0 = v0 * 435\n t1 = v1 * 435\n t2 = v2 * 435\n t3 = v3 * 435\n t2 += v0 << 8\n t3 += v1 << 8\n t1 += t0 >>> 16\n v0 = t0 & 65535\n t2 += t1 >>> 16\n v1 = t1 & 65535\n v3 = (t3 + (t2 >>> 16)) & 65535\n v2 = t2 & 65535\n }\n\n return (\n (v3 & 15) * 281474976710656 +\n v2 * 4294967296 +\n v1 * 65536 +\n (v0 ^ (v3 >> 4))\n )\n}\n\nexport const generateETag = (payload: string, weak = false) => {\n const prefix = weak ? 'W/\"' : '\"'\n return (\n prefix + fnv1a52(payload).toString(36) + payload.length.toString(36) + '\"'\n )\n}\n","import { isPlainObject } from '../shared/lib/is-plain-object'\n\n// We allow some additional attached properties for Next.js errors\nexport interface NextError extends Error {\n type?: string\n page?: string\n code?: string | number\n cancelled?: boolean\n digest?: number\n}\n\n/**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */\nexport default function isError(err: unknown): err is NextError {\n return (\n typeof err === 'object' && err !== null && 'name' in err && 'message' in err\n )\n}\n\nfunction safeStringify(obj: any) {\n const seen = new WeakSet()\n\n return JSON.stringify(obj, (_key, value) => {\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]'\n }\n seen.add(value)\n }\n return value\n })\n}\n\nexport function getProperError(err: unknown): Error {\n if (isError(err)) {\n return err\n }\n\n if (process.env.NODE_ENV === 'development') {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return new Error(\n 'An undefined error was thrown, ' +\n 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'\n )\n }\n\n if (err === null) {\n return new Error(\n 'A null error was thrown, ' +\n 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'\n )\n }\n }\n\n return new Error(isPlainObject(err) ? safeStringify(err) : err + '')\n}\n","import type { IncomingMessage } from 'http'\n\nimport { parse } from 'next/dist/compiled/content-type'\nimport isError from '../../../lib/is-error'\nimport type { SizeLimit } from '../../../types'\nimport { ApiError } from '../index'\n\n/**\n * Parse `JSON` and handles invalid `JSON` strings\n * @param str `JSON` string\n */\nfunction parseJson(str: string): object {\n if (str.length === 0) {\n // special-case empty json body, as it's a common client-side mistake\n return {}\n }\n\n try {\n return JSON.parse(str)\n } catch (e) {\n throw new ApiError(400, 'Invalid JSON')\n }\n}\n\n/**\n * Parse incoming message like `json` or `urlencoded`\n * @param req request object\n */\nexport async function parseBody(\n req: IncomingMessage,\n limit: SizeLimit\n): Promise<any> {\n let contentType\n try {\n contentType = parse(req.headers['content-type'] || 'text/plain')\n } catch {\n contentType = parse('text/plain')\n }\n const { type, parameters } = contentType\n const encoding = parameters.charset || 'utf-8'\n\n let buffer\n\n try {\n const getRawBody =\n require('next/dist/compiled/raw-body') as typeof import('next/dist/compiled/raw-body')\n buffer = await getRawBody(req, { encoding, limit })\n } catch (e) {\n if (isError(e) && e.type === 'entity.too.large') {\n throw new ApiError(413, `Body exceeded ${limit} limit`)\n } else {\n throw new ApiError(400, 'Invalid body')\n }\n }\n\n const body = buffer.toString()\n\n if (type === 'application/json' || type === 'application/ld+json') {\n return parseJson(body)\n } else if (type === 'application/x-www-form-urlencoded') {\n const qs = require('querystring') as typeof import('querystring')\n return qs.decode(body)\n } else {\n return body\n }\n}\n","import type { NextConfigComplete } from '../../config-shared'\n\nexport type RevalidateFn = (config: {\n urlPath: string\n revalidateHeaders: { [key: string]: string | string[] }\n opts: { unstable_onlyGenerated?: boolean }\n}) => Promise<void>\n\n// The RouterServerContext contains instance specific\n// information that isn't available/relevant when\n// deployed in serverless environments, the key is\n// the relative project dir this allows separate contexts\n// when running multiple next instances in same process\nexport type RouterServerContext = Record<\n string,\n {\n // hostname the server is started with\n hostname?: string\n // revalidate function to bypass going through network\n // to invoke revalidate request (uses mocked req/res)\n revalidate?: RevalidateFn\n // current loaded public runtime config\n publicRuntimeConfig?: NextConfigComplete['publicRuntimeConfig']\n // exposing nextConfig for dev mode specifically\n nextConfig?: NextConfigComplete\n // whether running in custom server mode\n isCustomServer?: boolean\n // whether test proxy is enabled\n experimentalTestProxy?: boolean\n // allow dev server to log with original stack\n logErrorWithOriginalStack?: (err: unknown, type: string) => void\n // allow setting ISR status in dev\n setIsrStatus?: (key: string, value: boolean | null) => void\n }\n>\n\nexport const RouterServerContextSymbol = Symbol.for(\n '@next/router-server-methods'\n)\n\nexport const routerServerGlobal = globalThis as typeof globalThis & {\n [RouterServerContextSymbol]?: RouterServerContext\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextApiRequest, NextApiResponse } from '../../../shared/lib/utils'\nimport type { PageConfig, ResponseLimit } from '../../../types'\nimport type { __ApiPreviewProps } from '../.'\nimport type { CookieSerializeOptions } from 'next/dist/compiled/cookie'\n\nimport bytes from 'next/dist/compiled/bytes'\nimport { generateETag } from '../../lib/etag'\nimport { sendEtagResponse } from '../../send-payload'\nimport { Stream } from 'stream'\nimport isError from '../../../lib/is-error'\nimport { isResSent } from '../../../shared/lib/utils'\nimport { interopDefault } from '../../../lib/interop-default'\nimport {\n setLazyProp,\n sendStatusCode,\n redirect,\n clearPreviewData,\n sendError,\n ApiError,\n COOKIE_NAME_PRERENDER_BYPASS,\n COOKIE_NAME_PRERENDER_DATA,\n RESPONSE_LIMIT_DEFAULT,\n} from './../index'\nimport { getCookieParser } from './../get-cookie-parser'\nimport {\n PRERENDER_REVALIDATE_HEADER,\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER,\n} from '../../../lib/constants'\nimport { tryGetPreviewData } from './try-get-preview-data'\nimport { parseBody } from './parse-body'\nimport {\n RouterServerContextSymbol,\n routerServerGlobal,\n} from '../../lib/router-utils/router-server-context'\nimport type { InstrumentationOnRequestError } from '../../instrumentation/types'\n\ntype ApiContext = __ApiPreviewProps & {\n trustHostHeader?: boolean\n allowedRevalidateHeaderKeys?: string[]\n hostname?: string\n multiZoneDraftMode?: boolean\n dev: boolean\n projectDir: string\n}\n\nfunction getMaxContentLength(responseLimit?: ResponseLimit) {\n if (responseLimit && typeof responseLimit !== 'boolean') {\n return bytes.parse(responseLimit)\n }\n return RESPONSE_LIMIT_DEFAULT\n}\n\n/**\n * Send `any` body to response\n * @param req request object\n * @param res response object\n * @param body of response\n */\nfunction sendData(req: NextApiRequest, res: NextApiResponse, body: any): void {\n if (body === null || body === undefined) {\n res.end()\n return\n }\n\n // strip irrelevant headers/body\n if (res.statusCode === 204 || res.statusCode === 304) {\n res.removeHeader('Content-Type')\n res.removeHeader('Content-Length')\n res.removeHeader('Transfer-Encoding')\n\n if (process.env.NODE_ENV === 'development' && body) {\n console.warn(\n `A body was attempted to be set with a 204 statusCode for ${req.url}, this is invalid and the body was ignored.\\n` +\n `See more info here https://nextjs.org/docs/messages/invalid-api-status-body`\n )\n }\n res.end()\n return\n }\n\n const contentType = res.getHeader('Content-Type')\n\n if (body instanceof Stream) {\n if (!contentType) {\n res.setHeader('Content-Type', 'application/octet-stream')\n }\n body.pipe(res)\n return\n }\n\n const isJSONLike = ['object', 'number', 'boolean'].includes(typeof body)\n const stringifiedBody = isJSONLike ? JSON.stringify(body) : body\n const etag = generateETag(stringifiedBody)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n\n if (Buffer.isBuffer(body)) {\n if (!contentType) {\n res.setHeader('Content-Type', 'application/octet-stream')\n }\n res.setHeader('Content-Length', body.length)\n res.end(body)\n return\n }\n\n if (isJSONLike) {\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n }\n\n res.setHeader('Content-Length', Buffer.byteLength(stringifiedBody))\n res.end(stringifiedBody)\n}\n\n/**\n * Send `JSON` object\n * @param res response object\n * @param jsonBody of data\n */\nfunction sendJson(res: NextApiResponse, jsonBody: any): void {\n // Set header to application/json\n res.setHeader('Content-Type', 'application/json; charset=utf-8')\n\n // Use send to handle request\n res.send(JSON.stringify(jsonBody))\n}\n\nfunction isValidData(str: any): str is string {\n return typeof str === 'string' && str.length >= 16\n}\n\nfunction setDraftMode<T>(\n res: NextApiResponse<T>,\n options: {\n enable: boolean\n previewModeId?: string\n }\n): NextApiResponse<T> {\n if (!isValidData(options.previewModeId)) {\n throw new Error('invariant: invalid previewModeId')\n }\n const expires = options.enable ? undefined : new Date(0)\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, options.previewModeId, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n expires,\n }),\n ])\n return res\n}\n\nfunction setPreviewData<T>(\n res: NextApiResponse<T>,\n data: object | string, // TODO: strict runtime type checking\n options: {\n maxAge?: number\n path?: string\n } & __ApiPreviewProps\n): NextApiResponse<T> {\n if (!isValidData(options.previewModeId)) {\n throw new Error('invariant: invalid previewModeId')\n }\n if (!isValidData(options.previewModeEncryptionKey)) {\n throw new Error('invariant: invalid previewModeEncryptionKey')\n }\n if (!isValidData(options.previewModeSigningKey)) {\n throw new Error('invariant: invalid previewModeSigningKey')\n }\n\n const jsonwebtoken =\n require('next/dist/compiled/jsonwebtoken') as typeof import('next/dist/compiled/jsonwebtoken')\n const { encryptWithSecret } =\n require('../../crypto-utils') as typeof import('../../crypto-utils')\n const payload = jsonwebtoken.sign(\n {\n data: encryptWithSecret(\n Buffer.from(options.previewModeEncryptionKey),\n JSON.stringify(data)\n ),\n },\n options.previewModeSigningKey,\n {\n algorithm: 'HS256',\n ...(options.maxAge !== undefined\n ? { expiresIn: options.maxAge }\n : undefined),\n }\n )\n\n // limit preview mode cookie to 2KB since we shouldn't store too much\n // data here and browsers drop cookies over 4KB\n if (payload.length > 2048) {\n throw new Error(\n `Preview data is limited to 2KB currently, reduce how much data you are storing as preview data to continue`\n )\n }\n\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, options.previewModeId, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.maxAge !== undefined\n ? ({ maxAge: options.maxAge } as CookieSerializeOptions)\n : undefined),\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, payload, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.maxAge !== undefined\n ? ({ maxAge: options.maxAge } as CookieSerializeOptions)\n : undefined),\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n ])\n return res\n}\n\nasync function revalidate(\n urlPath: string,\n opts: {\n unstable_onlyGenerated?: boolean\n },\n req: IncomingMessage,\n context: ApiContext\n) {\n if (typeof urlPath !== 'string' || !urlPath.startsWith('/')) {\n throw new Error(\n `Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received ${urlPath}`\n )\n }\n const revalidateHeaders: HeadersInit = {\n [PRERENDER_REVALIDATE_HEADER]: context.previewModeId,\n ...(opts.unstable_onlyGenerated\n ? {\n [PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER]: '1',\n }\n : {}),\n }\n const allowedRevalidateHeaderKeys = [\n ...(context.allowedRevalidateHeaderKeys || []),\n ]\n\n if (context.trustHostHeader || context.dev) {\n allowedRevalidateHeaderKeys.push('cookie')\n }\n\n if (context.trustHostHeader) {\n allowedRevalidateHeaderKeys.push('x-vercel-protection-bypass')\n }\n\n for (const key of Object.keys(req.headers)) {\n if (allowedRevalidateHeaderKeys.includes(key)) {\n revalidateHeaders[key] = req.headers[key] as string\n }\n }\n\n const internalRevalidate =\n routerServerGlobal[RouterServerContextSymbol]?.[context.projectDir]\n ?.revalidate\n\n try {\n // We use the revalidate in router-server if available.\n // If we are operating without router-server (serverless)\n // we must go through network layer with fetch request\n if (internalRevalidate) {\n return await internalRevalidate({\n urlPath,\n revalidateHeaders,\n opts,\n })\n }\n\n if (context.trustHostHeader) {\n const res = await fetch(`https://${req.headers.host}${urlPath}`, {\n method: 'HEAD',\n headers: revalidateHeaders,\n })\n // we use the cache header to determine successful revalidate as\n // a non-200 status code can be returned from a successful revalidate\n // e.g. notFound: true returns 404 status code but is successful\n const cacheHeader =\n res.headers.get('x-vercel-cache') || res.headers.get('x-nextjs-cache')\n\n if (\n cacheHeader?.toUpperCase() !== 'REVALIDATED' &&\n res.status !== 200 &&\n !(res.status === 404 && opts.unstable_onlyGenerated)\n ) {\n throw new Error(`Invalid response ${res.status}`)\n }\n } else {\n throw new Error(\n `Invariant: missing internal router-server-methods this is an internal bug`\n )\n }\n } catch (err: unknown) {\n throw new Error(\n `Failed to revalidate ${urlPath}: ${isError(err) ? err.message : err}`\n )\n }\n}\n\nexport async function apiResolver(\n req: IncomingMessage,\n res: ServerResponse,\n query: any,\n resolverModule: any,\n apiContext: ApiContext,\n propagateError: boolean,\n dev?: boolean,\n page?: string,\n onError?: InstrumentationOnRequestError\n): Promise<void> {\n const apiReq = req as NextApiRequest\n const apiRes = res as NextApiResponse\n\n try {\n if (!resolverModule) {\n res.statusCode = 404\n res.end('Not Found')\n return\n }\n const config: PageConfig = resolverModule.config || {}\n const bodyParser = config.api?.bodyParser !== false\n const responseLimit = config.api?.responseLimit ?? true\n const externalResolver = config.api?.externalResolver || false\n\n // Parsing of cookies\n setLazyProp({ req: apiReq }, 'cookies', getCookieParser(req.headers))\n // Parsing query string\n apiReq.query = query\n // Parsing preview data\n setLazyProp({ req: apiReq }, 'previewData', () =>\n tryGetPreviewData(req, res, apiContext, !!apiContext.multiZoneDraftMode)\n )\n // Checking if preview mode is enabled\n setLazyProp({ req: apiReq }, 'preview', () =>\n apiReq.previewData !== false ? true : undefined\n )\n // Set draftMode to the same value as preview\n setLazyProp({ req: apiReq }, 'draftMode', () => apiReq.preview)\n\n // Parsing of body\n if (bodyParser && !apiReq.body) {\n apiReq.body = await parseBody(\n apiReq,\n config.api && config.api.bodyParser && config.api.bodyParser.sizeLimit\n ? config.api.bodyParser.sizeLimit\n : '1mb'\n )\n }\n\n let contentLength = 0\n const maxContentLength = getMaxContentLength(responseLimit)\n const writeData = apiRes.write\n const endResponse = apiRes.end\n apiRes.write = (...args: any[2]) => {\n contentLength += Buffer.byteLength(args[0] || '')\n return writeData.apply(apiRes, args)\n }\n apiRes.end = (...args: any[2]) => {\n if (args.length && typeof args[0] !== 'function') {\n contentLength += Buffer.byteLength(args[0] || '')\n }\n\n if (responseLimit && contentLength >= maxContentLength) {\n console.warn(\n `API response for ${req.url} exceeds ${bytes.format(\n maxContentLength\n )}. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit`\n )\n }\n\n return endResponse.apply(apiRes, args)\n }\n apiRes.status = (statusCode) => sendStatusCode(apiRes, statusCode)\n apiRes.send = (data) => sendData(apiReq, apiRes, data)\n apiRes.json = (data) => sendJson(apiRes, data)\n apiRes.redirect = (statusOrUrl: number | string, url?: string) =>\n redirect(apiRes, statusOrUrl, url)\n apiRes.setDraftMode = (options = { enable: true }) =>\n setDraftMode(apiRes, Object.assign({}, apiContext, options))\n apiRes.setPreviewData = (data, options = {}) =>\n setPreviewData(apiRes, data, Object.assign({}, apiContext, options))\n apiRes.clearPreviewData = (options = {}) =>\n clearPreviewData(apiRes, options)\n apiRes.revalidate = (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => revalidate(urlPath, opts || {}, req, apiContext)\n\n const resolver = interopDefault(resolverModule)\n let wasPiped = false\n\n if (process.env.NODE_ENV !== 'production') {\n // listen for pipe event and don't show resolve warning\n res.once('pipe', () => (wasPiped = true))\n }\n\n const apiRouteResult = await resolver(req, res)\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof apiRouteResult !== 'undefined') {\n if (apiRouteResult instanceof Response) {\n throw new Error(\n 'API route returned a Response object in the Node.js runtime, this is not supported. Please use `runtime: \"edge\"` instead: https://nextjs.org/docs/api-routes/edge-api-routes'\n )\n }\n console.warn(\n `API handler should not return a value, received ${typeof apiRouteResult}.`\n )\n }\n\n if (!externalResolver && !isResSent(res) && !wasPiped) {\n console.warn(\n `API resolved without sending a response for ${req.url}, this may result in stalled requests.`\n )\n }\n }\n } catch (err) {\n await onError?.(\n err,\n {\n method: req.method || 'GET',\n headers: req.headers,\n path: req.url || '/',\n },\n {\n routerKind: 'Pages Router',\n routePath: page || '',\n routeType: 'route',\n revalidateReason: undefined,\n }\n )\n\n if (err instanceof ApiError) {\n sendError(apiRes, err.statusCode, err.message)\n } else {\n if (dev) {\n if (isError(err)) {\n err.page = page\n }\n throw err\n }\n\n console.error(err)\n if (propagateError) {\n throw err\n }\n sendError(apiRes, 500, 'Internal Server Error')\n }\n }\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type RenderResult from './render-result'\nimport type { CacheControl } from './lib/cache-control'\n\nimport { isResSent } from '../shared/lib/utils'\nimport { generateETag } from './lib/etag'\nimport fresh from 'next/dist/compiled/fresh'\nimport { getCacheControlHeader } from './lib/cache-control'\nimport { RSC_CONTENT_TYPE_HEADER } from '../client/components/app-router-headers'\n\nexport function sendEtagResponse(\n req: IncomingMessage,\n res: ServerResponse,\n etag: string | undefined\n): boolean {\n if (etag) {\n /**\n * The server generating a 304 response MUST generate any of the\n * following header fields that would have been sent in a 200 (OK)\n * response to the same request: Cache-Control, Content-Location, Date,\n * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1\n */\n res.setHeader('ETag', etag)\n }\n\n if (fresh(req.headers, { etag })) {\n res.statusCode = 304\n res.end()\n return true\n }\n\n return false\n}\n\nexport async function sendRenderResult({\n req,\n res,\n result,\n type,\n generateEtags,\n poweredByHeader,\n cacheControl,\n}: {\n req: IncomingMessage\n res: ServerResponse\n result: RenderResult\n type: 'html' | 'json' | 'rsc'\n generateEtags: boolean\n poweredByHeader: boolean\n cacheControl: CacheControl | undefined\n}): Promise<void> {\n if (isResSent(res)) {\n return\n }\n\n if (poweredByHeader && type === 'html') {\n res.setHeader('X-Powered-By', 'Next.js')\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', getCacheControlHeader(cacheControl))\n }\n\n const payload = result.isDynamic ? null : result.toUnchunkedString()\n\n if (generateEtags && payload !== null) {\n const etag = generateETag(payload)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n }\n\n if (!res.getHeader('Content-Type')) {\n res.setHeader(\n 'Content-Type',\n result.contentType\n ? result.contentType\n : type === 'rsc'\n ? RSC_CONTENT_TYPE_HEADER\n : type === 'json'\n ? 'application/json'\n : 'text/html; charset=utf-8'\n )\n }\n\n if (payload) {\n res.setHeader('Content-Length', Buffer.byteLength(payload))\n }\n\n if (req.method === 'HEAD') {\n res.end(null)\n return\n }\n\n if (payload !== null) {\n res.end(payload)\n return\n }\n\n // Pipe the render result to the response after we get a writer for it.\n await result.pipeToNodeResponse(res)\n}\n","export function interopDefault(mod: any) {\n return mod.default || mod\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport type { PagesAPIRouteDefinition } from '../../route-definitions/pages-api-route-definition'\nimport type { PageConfig } from '../../../types'\nimport type { ParsedUrlQuery } from 'querystring'\nimport { wrapApiHandler, type __ApiPreviewProps } from '../../api-utils'\nimport type { RouteModuleOptions } from '../route-module'\n\nimport { RouteModule, type RouteModuleHandleContext } from '../route-module'\nimport { apiResolver } from '../../api-utils/node/api-resolver'\n\ntype PagesAPIHandleFn = (\n req: IncomingMessage,\n res: ServerResponse\n) => Promise<void>\n\n/**\n * The PagesAPIModule is the type of the module exported by the bundled Pages\n * API module.\n */\nexport type PagesAPIModule = typeof import('../../../build/templates/pages-api')\n\ntype PagesAPIUserlandModule = {\n /**\n * The exported handler method.\n */\n readonly default: PagesAPIHandleFn\n\n /**\n * The exported page config.\n */\n readonly config?: PageConfig\n}\n\ntype PagesAPIRouteHandlerContext = RouteModuleHandleContext & {\n /**\n * The incoming server request in non-edge runtime.\n */\n req?: IncomingMessage\n\n /**\n * The outgoing server response in non-edge runtime.\n */\n res?: ServerResponse\n\n /**\n * The hostname for the request.\n */\n hostname?: string\n\n /**\n * Keys allowed in the revalidate call.\n */\n allowedRevalidateHeaderKeys?: string[]\n\n /**\n * Whether to trust the host header.\n */\n trustHostHeader?: boolean\n\n /**\n * The query for the request.\n */\n query: ParsedUrlQuery\n\n /**\n * The preview props used by the `preview` API.\n */\n previewProps: __ApiPreviewProps\n\n /**\n * True if the server is in development mode.\n */\n dev: boolean\n\n /**\n * Whether errors should be left uncaught to handle\n * higher up\n */\n propagateError: boolean\n\n /**\n * The page that's being rendered.\n */\n page: string\n\n /**\n * The error handler for the request.\n */\n onError?: Parameters<typeof apiResolver>[8]\n\n /**\n * whether multi-zone flag is enabled for draft mode\n */\n multiZoneDraftMode?: boolean\n\n /**\n * The relative project directory\n */\n projectDir: string\n}\n\nexport type PagesAPIRouteModuleOptions = RouteModuleOptions<\n PagesAPIRouteDefinition,\n PagesAPIUserlandModule\n>\n\nexport class PagesAPIRouteModule extends RouteModule<\n PagesAPIRouteDefinition,\n PagesAPIUserlandModule\n> {\n private apiResolverWrapped: typeof apiResolver\n\n constructor(options: PagesAPIRouteModuleOptions) {\n super(options)\n\n if (typeof options.userland.default !== 'function') {\n throw new Error(\n `Page ${options.definition.page} does not export a default function.`\n )\n }\n\n this.apiResolverWrapped = wrapApiHandler(\n options.definition.page,\n apiResolver\n )\n }\n\n /**\n *\n * @param req the incoming server request\n * @param res the outgoing server response\n * @param context the context for the render\n */\n public async render(\n req: IncomingMessage,\n res: ServerResponse,\n context: PagesAPIRouteHandlerContext\n ): Promise<void> {\n const { apiResolverWrapped } = this\n await apiResolverWrapped(\n req,\n res,\n context.query,\n this.userland,\n {\n ...context.previewProps,\n trustHostHeader: context.trustHostHeader,\n allowedRevalidateHeaderKeys: context.allowedRevalidateHeaderKeys,\n hostname: context.hostname,\n multiZoneDraftMode: context.multiZoneDraftMode,\n dev: context.dev,\n projectDir: context.projectDir,\n },\n context.propagateError,\n context.dev,\n context.page,\n context.onError\n )\n }\n}\n\nexport default PagesAPIRouteModule\n"],"names":["Object","Date","Boolean","encodeURIComponent","Map","decodeURIComponent","Number","Symbol","Array","n","r","JSON","e","i","Math","o","s","u","isNaN","parseFloat","parseInt","__dirname","__nccwpck_require__","TypeError","String","a","isFinite","NaN","g","RegExp","NEXT_QUERY_PARAM_PREFIX","NEXT_INTERCEPTION_MARKER_PREFIX","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","wrapApiHandler","page","handler","args","getTracer","setRootSpanAttribute","trace","NodeSpan","spanName","sendStatusCode","res","statusCode","redirect","statusOrUrl","url","Error","writeHead","Location","write","end","checkIsOnDemandRevalidate","req","previewProps","headers","HeadersAdapter","isOnDemandRevalidate","previewModeId","get","revalidateOnlyGenerated","has","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","SYMBOL_CLEARED_COOKIES","clearPreviewData","options","serialize","require","previous","getHeader","setHeader","isArray","expires","httpOnly","sameSite","secure","process","path","undefined","defineProperty","value","enumerable","ApiError","constructor","message","sendError","statusMessage","setLazyProp","prop","getter","opts","configurable","optsReset","writable","set","tryGetPreviewData","multiZoneDraftMode","cookies","encryptedPreviewData","RequestCookies","tokenPreviewData","data","jsonwebtoken","verify","previewModeSigningKey","decryptWithSecret","decryptedPreviewData","Buffer","from","previewModeEncryptionKey","parse","CIPHER_ALGORITHM","encryptWithSecret","secret","iv","crypto","salt","key","cipher","encrypted","concat","update","final","tag","getAuthTag","toString","encryptedData","buffer","slice","CIPHER_SALT_LENGTH","decipher","setAuthTag","ReflectAdapter","target","receiver","Reflect","bind","deleteProperty","ReadonlyHeadersError","callable","Headers","Proxy","lowercased","toLowerCase","original","keys","find","seal","merge","join","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","values","iterator","module","t","f","Set","console","COMPILER_NAMES","client","server","edgeServer","parseReqUrl","parsedUrl","parseUrl","parsed","URL","query","searchParams","getAll","length","hash","search","pathname","href","host","hostname","auth","protocol","slashes","port","cache","WeakMap","normalizeLocalePath","locales","detectedLocale","lowercasedLocales","map","locale","segments","split","segment","index","indexOf","ensureLeadingSlash","startsWith","normalizeRscURL","replace","INTERCEPTION_ROUTE_MARKERS","isInterceptionRouteAppPath","m","TEST_ROUTE","TEST_STRICT_ROUTE","isDynamicRoute","route","strict","extractInterceptionRouteInformation","interceptingRoute","marker","interceptedRoute","reduce","endsWith","splitInterceptingRoute","test","pathHasPrefix","prefix","parsePath","hashIndex","queryIndex","hasQuery","substring","reHasRegExp","reReplaceRegExp","escapeStringRegexp","str","removeTrailingSlash","PARAMETER_PATTERN","parseMatchedParameter","param","optional","repeat","getSafeKeyFromSegment","pattern","interceptionMarker","getSafeRouteKey","routeKeys","keyPrefix","backreferenceDuplicateKeys","cleanedKey","invalidKey","duplicateKey","interceptionPrefix","SP","performance","every","method","DecodeError","NormalizeError","getRouteMatcher","re","groups","routeMatch","exec","decode","params","group","match","pos","entry","searchParamsToUrlQuery","stringifyUrlQueryParam","getCookieParser","cookie","parseCookieFn","unescapeSegments","compileNonPath","includes","compile","validate","normalizeNextQueryParam","decodeQueryPathParameter","slashedProtocols","dynamicParamTypesSchema","segmentSchema","flightRouterStateSchema","removeLeadingSlash","filterInternalQuery","paramKeys","defaultRouteRegex","isNextQueryPrefix","isNextInterceptionMarkerPrefix","normalizeDataPath","NEXT_REQUEST_META","for","getRequestMeta","meta","STATIC_METADATA_IMAGES","icon","filename","extensions","apple","openGraph","twitter","getExtensionRegexString","staticExtensions","dynamicExtensions","RouteModule","userland","definition","distDir","projectDir","isDev","instrumentationOnRequestError","cwd","loadManifests","srcPage","loadManifestFromRelativePath","normalized","posix","resolvedPage","normalize","routesManifest","prerenderManifest","buildManifest","reactLoadableManifest","nextFontManifest","clientReferenceManifest","serverActionsManifest","subresourceIntegrityManifest","serverFilesManifest","buildId","Promise","all","manifest","handleMissing","isAppRouter","isStaticMetadataRoute","isAppRouteRoute","isMetadataRouteFile","appDirRelativePath","pageExtensions","strictlyMatchExtensions","trailingMatcher","suffixMatcher","metadataRouteFilesRegex","normalizedAppDirRelativePath","some","useEval","shouldCache","skipParse","__RSC_MANIFEST","prepare","localeResult","previewData","ensureInstrumentationRegistered","manifests","basePath","i18n","rewrites","removePathPrefix","withoutPrefix","isNextDataRequest","originalPathname","originalQuery","pageIsDynamic","serverUtils","getServerUtils","trailingSlash","caseSensitive","dynamicRouteMatcher","defaultRouteMatches","getNamedRouteRegex","normalizedRoute","result","getNamedParametrizedRoute","prefixRouteKeys","includeSuffix","includePrefix","routeKey","j","fromCharCode","floor","hasInterceptionMarker","paramMatches","namedParameterizedRoute","namedRegex","excludeOptionalTrailingSlash","getRouteRegex","parameterizedRoute","getParametrizedRoute","groupIndex","markerMatch","handleRewrites","rewriteParams","fsPathname","checkRewrite","rewrite","matcher","getPathMatch","regexp","pathToRegexp","delimiter","sensitive","regexpToFunction","regexModifier","source","flags","removeUnnamedParams","missing","hasParams","matchHas","hasMatch","hasItem","type","getSafeParamName","paramName","newParamName","charCode","charCodeAt","matches","groupKey","item","assign","stateHeader","getSelectedParams","currentTree","parallelRoute","isDynamicParameter","segmentValue","parseAndValidateFlightRouterState","state","assert","err","parsedDestination","destQuery","prepareDestination","destHostnameCompiler","newUrl","parseDestination","escaped","destination","parseRelativeUrl","base","parseQuery","globalBase","resolvedBase","origin","parsedURL","destHostname","destPath","destParams","destPathParamKeys","destHostnameParamKeys","destPathCompiler","strOrArray","filter","appendParamsToQuery","actualValue","nextInternalLocale","dynamicParams","beforeFiles","finished","afterFiles","matchesPage","fsPathnameNoSlash","fallback","normalizeQueryParams","routeParamKeys","normalizedKey","add","v","getParamsFromRouteMatches","routeMatchesHeader","routeMatches","obj","fromEntries","URLSearchParams","keyName","normalizeDynamicRouteParams","ignoreMissingOptional","hasValidParams","defaultValue","isOptional","isDefaultValue","defaultVal","val","normalizeCdnUrl","_parsedUrl","formatUrl","urlObj","querystring","interpolateDynamicPath","paramValue","builtParam","replaceAll","env","__NEXT_TRAILING_SLASH","domainLocale","detectDomainLocale","domainItems","domain","defaultLocale","domains","getHostname","addRequestMeta","request","rewriteParamKeys","paramsMatch","paramsResult","combinedParamKeys","originalValue","queryValue","queryResult","preview","isDraftMode","fnv1a52","len","t0","v0","t1","v1","t2","v2","t3","v3","generateETag","payload","weak","isError","parseBody","limit","contentType","parameters","encoding","charset","getRawBody","body","parseJson","qs","RouterServerContextSymbol","routerServerGlobal","globalThis","isValidData","revalidate","urlPath","context","revalidateHeaders","unstable_onlyGenerated","allowedRevalidateHeaderKeys","trustHostHeader","dev","internalRevalidate","fetch","cacheHeader","toUpperCase","status","apiResolver","resolverModule","apiContext","propagateError","onError","config","bodyParser","api","responseLimit","externalResolver","apiReq","sizeLimit","contentLength","maxContentLength","bytes","writeData","apiRes","endResponse","byteLength","apply","warn","send","sendData","etag","removeHeader","Stream","pipe","isJSONLike","stringifiedBody","stringify","fresh","isBuffer","json","setDraftMode","enable","setPreviewData","sign","algorithm","maxAge","expiresIn","resolver","mod","default","routerKind","routePath","routeType","revalidateReason","error","PagesAPIRouteModule","apiResolverWrapped","render"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67]}