????
Current Path : C:/inetpub/vhost/binhdinhf1.gdtsolutions.vn/www/.next/server/ |
Current File : C:/inetpub/vhost/binhdinhf1.gdtsolutions.vn/www/.next/server/middleware.js |
// runtime can't be in strict mode because a global variable is assign and maybe created. (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[826],{ /***/ 764: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "default": () => (/* binding */ next_middleware_loaderabsolutePagePath_private_next_root_dir_2Fmiddleware_ts_page_2Fmiddleware_rootDir_2Fhome_2Fjenkins_2Fagent_2Fworkspace_2Fbinhdinhf1h2o_2Fwebsite_matchers_W3sicmVnZXhwIjoiXig_2FOlxcLyhfbmV4dFxcL2RhdGFcXC9bXi9dezEsfSkpPyg_2FOlxcLygoPyFhcGl8X25leHRcXC9zdGF0aWN8LipcXC4uKnxfbmV4dFxcL2ltYWdlfGZhdmljb24uaWNvKS4qKSkoLmpzb24pP1tcXC8jXFw_2FXT8kIiwib3JpZ2luYWxTb3VyY2UiOiIvKCg_2FIWFwaXxfbmV4dC9zdGF0aWN8LipcXC4uKnxfbmV4dC9pbWFnZXxmYXZpY29uLmljbykuKikifV0_3D_preferredRegion_middlewareConfig_eyJtYXRjaGVycyI6W3sicmVnZXhwIjoiXig_2FOlxcLyhfbmV4dFxcL2RhdGFcXC9bXi9dezEsfSkpPyg_2FOlxcLygoPyFhcGl8X25leHRcXC9zdGF0aWN8LipcXC4uKnxfbmV4dFxcL2ltYWdlfGZhdmljb24uaWNvKS4qKSkoLmpzb24pP1tcXC8jXFw_2FXT8kIiwib3JpZ2luYWxTb3VyY2UiOiIvKCg_2FIWFwaXxfbmV4dC9zdGF0aWN8LipcXC4uKnxfbmV4dC9pbWFnZXxmYXZpY29uLmljbykuKikifV19_) }); // NAMESPACE OBJECT: ./middleware.ts var middleware_namespaceObject = {}; __webpack_require__.r(middleware_namespaceObject); __webpack_require__.d(middleware_namespaceObject, { config: () => (config), middleware: () => (middleware) }); ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/globals.js async function registerInstrumentation() { if ("_ENTRIES" in globalThis && _ENTRIES.middleware_instrumentation && _ENTRIES.middleware_instrumentation.register) { try { await _ENTRIES.middleware_instrumentation.register(); } catch (err) { err.message = `An error occurred while loading instrumentation hook: ${err.message}`; throw err; } } } let registerInstrumentationPromise = null; function ensureInstrumentationRegistered() { if (!registerInstrumentationPromise) { registerInstrumentationPromise = registerInstrumentation(); } return registerInstrumentationPromise; } function getUnsupportedModuleErrorMessage(module) { // warning: if you change these messages, you must adjust how react-dev-overlay's middleware detects modules not found return `The edge runtime does not support Node.js '${module}' module. Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`; } function __import_unsupported(moduleName) { const proxy = new Proxy(function() {}, { get (_obj, prop) { if (prop === "then") { return {}; } throw new Error(getUnsupportedModuleErrorMessage(moduleName)); }, construct () { throw new Error(getUnsupportedModuleErrorMessage(moduleName)); }, apply (_target, _this, args) { if (typeof args[0] === "function") { return args[0](proxy); } throw new Error(getUnsupportedModuleErrorMessage(moduleName)); } }); return new Proxy({}, { get: ()=>proxy }); } function enhanceGlobals() { // The condition is true when the "process" module is provided if (process !== __webpack_require__.g.process) { // prefer local process but global.process has correct "env" process.env = __webpack_require__.g.process.env; __webpack_require__.g.process = process; } // to allow building code that import but does not use node.js modules, // webpack will expect this function to exist in global scope Object.defineProperty(globalThis, "__import_unsupported", { value: __import_unsupported, enumerable: false, configurable: false }); // Eagerly fire instrumentation hook to make the startup faster. void ensureInstrumentationRegistered(); } enhanceGlobals(); //# sourceMappingURL=globals.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/error.js class PageSignatureError extends Error { constructor({ page }){ super(`The middleware "${page}" accepts an async API directly with the form: export function middleware(request, event) { return NextResponse.redirect('/new-location') } Read more: https://nextjs.org/docs/messages/middleware-new-signature `); } } class RemovedPageError extends Error { constructor(){ super(`The request.page has been deprecated in favour of \`URLPattern\`. Read more: https://nextjs.org/docs/messages/middleware-request-page `); } } class RemovedUAError extends Error { constructor(){ super(`The request.ua has been removed in favour of \`userAgent\` function. Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent `); } } //# sourceMappingURL=error.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/utils.js /** * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any * headers with multiple values will be joined with a comma and space. Any * headers that have an undefined value will be ignored and others will be * coerced to strings. * * @param nodeHeaders the headers object to convert * @returns the converted headers object */ function fromNodeOutgoingHttpHeaders(nodeHeaders) { const headers = new Headers(); for (let [key, value] of Object.entries(nodeHeaders)){ const values = Array.isArray(value) ? value : [ value ]; for (let v of values){ if (typeof v === "undefined") continue; if (typeof v === "number") { v = v.toString(); } headers.append(key, v); } } return headers; } /* Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas that are within a single set-cookie field-value, such as in the Expires portion. This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2 Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128 React Native's fetch does this for *every* header, including set-cookie. Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25 Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation */ function splitCookiesString(cookiesString) { var cookiesStrings = []; var pos = 0; var start; var ch; var lastComma; var nextStart; var cookiesSeparatorFound; function skipWhitespace() { while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ pos += 1; } return pos < cookiesString.length; } function notSpecialChar() { ch = cookiesString.charAt(pos); return ch !== "=" && ch !== ";" && ch !== ","; } while(pos < cookiesString.length){ start = pos; cookiesSeparatorFound = false; while(skipWhitespace()){ ch = cookiesString.charAt(pos); if (ch === ",") { // ',' is a cookie separator if we have later first '=', not ';' or ',' lastComma = pos; pos += 1; skipWhitespace(); nextStart = pos; while(pos < cookiesString.length && notSpecialChar()){ pos += 1; } // currently special character if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { // we found cookies separator cookiesSeparatorFound = true; // pos is inside the next cookie, so back up and return it. pos = nextStart; cookiesStrings.push(cookiesString.substring(start, lastComma)); start = pos; } else { // in param ',' or param separator ';', // we continue from that comma pos = lastComma + 1; } } else { pos += 1; } } if (!cookiesSeparatorFound || pos >= cookiesString.length) { cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); } } return cookiesStrings; } /** * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is * required to support the set-cookie header, which may have multiple values. * * @param headers the headers object to convert * @returns the converted headers object */ function toNodeOutgoingHttpHeaders(headers) { const nodeHeaders = {}; const cookies = []; if (headers) { for (const [key, value] of headers.entries()){ if (key.toLowerCase() === "set-cookie") { // We may have gotten a comma joined string of cookies, or multiple // set-cookie headers. We need to merge them into one header array // to represent all the cookies. cookies.push(...splitCookiesString(value)); nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies; } else { nodeHeaders[key] = value; } } } return nodeHeaders; } /** * Validate the correctness of a user-provided URL. */ function validateURL(url) { try { return String(new URL(String(url))); } catch (error) { throw new Error(`URL is malformed "${String(url)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, { cause: error }); } } //# sourceMappingURL=utils.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js const responseSymbol = Symbol("response"); const passThroughSymbol = Symbol("passThrough"); const waitUntilSymbol = Symbol("waitUntil"); class FetchEvent { // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor(_request){ this[waitUntilSymbol] = []; this[passThroughSymbol] = false; } respondWith(response) { if (!this[responseSymbol]) { this[responseSymbol] = Promise.resolve(response); } } passThroughOnException() { this[passThroughSymbol] = true; } waitUntil(promise) { this[waitUntilSymbol].push(promise); } } class NextFetchEvent extends FetchEvent { constructor(params){ super(params.request); this.sourcePage = params.page; } /** * @deprecated The `request` is now the first parameter and the API is now async. * * Read more: https://nextjs.org/docs/messages/middleware-new-signature */ get request() { throw new PageSignatureError({ page: this.sourcePage }); } /** * @deprecated Using `respondWith` is no longer needed. * * Read more: https://nextjs.org/docs/messages/middleware-new-signature */ respondWith() { throw new PageSignatureError({ page: this.sourcePage }); } } //# sourceMappingURL=fetch-event.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js function detectDomainLocale(domainItems, hostname, detectedLocale) { if (!domainItems) return; if (detectedLocale) { detectedLocale = detectedLocale.toLowerCase(); } for (const item of domainItems){ var _item_domain, _item_locales; // remove port if present const domainHostname = (_item_domain = item.domain) == null ? void 0 : _item_domain.split(":")[0].toLowerCase(); if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || ((_item_locales = item.locales) == null ? void 0 : _item_locales.some((locale)=>locale.toLowerCase() === detectedLocale))) { return item; } } } //# sourceMappingURL=detect-domain-locale.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js /** * Removes the trailing slash for a given route or page path. Preserves the * root page. Examples: * - `/foo/bar/` -> `/foo/bar` * - `/foo/bar` -> `/foo/bar` * - `/` -> `/` */ function removeTrailingSlash(route) { return route.replace(/\/$/, "") || "/"; } //# sourceMappingURL=remove-trailing-slash.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js /** * Given a path this function will find the pathname, query and hash and return * them. This is useful to parse full paths on the client side. * @param path A path to parse e.g. /foo/bar?id=1#hash */ function parsePath(path) { const hashIndex = path.indexOf("#"); const queryIndex = path.indexOf("?"); const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex); if (hasQuery || hashIndex > -1) { return { pathname: path.substring(0, hasQuery ? queryIndex : hashIndex), query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : "", hash: hashIndex > -1 ? path.slice(hashIndex) : "" }; } return { pathname: path, query: "", hash: "" }; } //# sourceMappingURL=parse-path.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js /** * Adds the provided prefix to the given path. It first ensures that the path * is indeed starting with a slash. */ function addPathPrefix(path, prefix) { if (!path.startsWith("/") || !prefix) { return path; } const { pathname, query, hash } = parsePath(path); return "" + prefix + pathname + query + hash; } //# sourceMappingURL=add-path-prefix.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js /** * Similarly to `addPathPrefix`, this function adds a suffix at the end on the * provided path. It also works only for paths ensuring the argument starts * with a slash. */ function addPathSuffix(path, suffix) { if (!path.startsWith("/") || !suffix) { return path; } const { pathname, query, hash } = parsePath(path); return "" + pathname + suffix + query + hash; } //# sourceMappingURL=add-path-suffix.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js /** * Checks if a given path starts with a given prefix. It ensures it matches * exactly without containing extra chars. e.g. prefix /docs should replace * for /docs, /docs/, /docs/a but not /docsss * @param path The path to check. * @param prefix The prefix to check against. */ function pathHasPrefix(path, prefix) { if (typeof path !== "string") { return false; } const { pathname } = parsePath(path); return pathname === prefix || pathname.startsWith(prefix + "/"); } //# sourceMappingURL=path-has-prefix.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js /** * For a given path and a locale, if the locale is given, it will prefix the * locale. The path shouldn't be an API path. If a default locale is given the * prefix will be omitted if the locale is already the default locale. */ function addLocale(path, locale, defaultLocale, ignorePrefix) { // If no locale was given or the locale is the default locale, we don't need // to prefix the path. if (!locale || locale === defaultLocale) return path; const lower = path.toLowerCase(); // If the path is an API path or the path already has the locale prefix, we // don't need to prefix the path. if (!ignorePrefix) { if (pathHasPrefix(lower, "/api")) return path; if (pathHasPrefix(lower, "/" + locale.toLowerCase())) return path; } // Add the locale prefix to the path. return addPathPrefix(path, "/" + locale); } //# sourceMappingURL=add-locale.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js function formatNextPathnameInfo(info) { let pathname = addLocale(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix); if (info.buildId || !info.trailingSlash) { pathname = removeTrailingSlash(pathname); } if (info.buildId) { pathname = addPathSuffix(addPathPrefix(pathname, "/_next/data/" + info.buildId), info.pathname === "/" ? "index.json" : ".json"); } pathname = addPathPrefix(pathname, info.basePath); return !info.buildId && info.trailingSlash ? !pathname.endsWith("/") ? addPathSuffix(pathname, "/") : pathname : removeTrailingSlash(pathname); } //# sourceMappingURL=format-next-pathname-info.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/get-hostname.js /** * Takes an object with a hostname property (like a parsed URL) and some * headers that may contain Host and returns the preferred hostname. * @param parsed An object containing a hostname property. * @param headers A dictionary with headers containing a `host`. */ function getHostname(parsed, headers) { // Get the hostname from the headers if it exists, otherwise use the parsed // hostname. let hostname; if ((headers == null ? void 0 : headers.host) && !Array.isArray(headers.host)) { hostname = headers.host.toString().split(":")[0]; } else if (parsed.hostname) { hostname = parsed.hostname; } else return; return hostname.toLowerCase(); } //# sourceMappingURL=get-hostname.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js /** * For a pathname that may include a locale from a list of locales, it * removes the locale from the pathname returning it alongside with the * detected locale. * * @param pathname A pathname that may include a locale. * @param locales A list of locales. * @returns The detected locale and pathname without locale */ function normalizeLocalePath(pathname, locales) { let detectedLocale; // first item will be empty string from splitting at first char const pathnameParts = pathname.split("/"); (locales || []).some((locale)=>{ if (pathnameParts[1] && pathnameParts[1].toLowerCase() === locale.toLowerCase()) { detectedLocale = locale; pathnameParts.splice(1, 1); pathname = pathnameParts.join("/") || "/"; return true; } return false; }); return { pathname, detectedLocale }; } //# sourceMappingURL=normalize-locale-path.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js /** * Given a path and a prefix it will remove the prefix when it exists in the * given path. It ensures it matches exactly without containing extra chars * and if the prefix is not there it will be noop. * * @param path The path to remove the prefix from. * @param prefix The prefix to be removed. */ function removePathPrefix(path, prefix) { // If the path doesn't start with the prefix we can return it as is. This // protects us from situations where the prefix is a substring of the path // prefix such as: // // For prefix: /blog // // /blog -> true // /blog/ -> true // /blog/1 -> true // /blogging -> false // /blogging/ -> false // /blogging/1 -> false if (!pathHasPrefix(path, prefix)) { return path; } // Remove the prefix from the path via slicing. const withoutPrefix = path.slice(prefix.length); // If the path without the prefix starts with a `/` we can return it as is. if (withoutPrefix.startsWith("/")) { return withoutPrefix; } // If the path without the prefix doesn't start with a `/` we need to add it // back to the path to make sure it's a valid path. return "/" + withoutPrefix; } //# sourceMappingURL=remove-path-prefix.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js function getNextPathnameInfo(pathname, options) { var _options_nextConfig; const { basePath, i18n, trailingSlash } = (_options_nextConfig = options.nextConfig) != null ? _options_nextConfig : {}; const info = { pathname: pathname, trailingSlash: pathname !== "/" ? pathname.endsWith("/") : trailingSlash }; if (basePath && pathHasPrefix(info.pathname, basePath)) { info.pathname = removePathPrefix(info.pathname, basePath); info.basePath = basePath; } if (options.parseData === true && info.pathname.startsWith("/_next/data/") && info.pathname.endsWith(".json")) { const paths = info.pathname.replace(/^\/_next\/data\//, "").replace(/\.json$/, "").split("/"); const buildId = paths[0]; info.pathname = paths[1] !== "index" ? "/" + paths.slice(1).join("/") : "/"; info.buildId = buildId; } // If provided, use the locale route normalizer to detect the locale instead // of the function below. if (options.i18nProvider) { const result = options.i18nProvider.analyze(info.pathname); info.locale = result.detectedLocale; var _result_pathname; info.pathname = (_result_pathname = result.pathname) != null ? _result_pathname : info.pathname; } else if (i18n) { const pathLocale = normalizeLocalePath(info.pathname, i18n.locales); info.locale = pathLocale.detectedLocale; var _pathLocale_pathname; info.pathname = (_pathLocale_pathname = pathLocale.pathname) != null ? _pathLocale_pathname : info.pathname; } return info; } //# sourceMappingURL=get-next-pathname-info.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/next-url.js const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/; function parseURL(url, base) { return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, "localhost"), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, "localhost")); } const Internal = Symbol("NextURLInternal"); class NextURL { constructor(input, baseOrOpts, opts){ let base; let options; if (typeof baseOrOpts === "object" && "pathname" in baseOrOpts || typeof baseOrOpts === "string") { base = baseOrOpts; options = opts || {}; } else { options = opts || baseOrOpts || {}; } this[Internal] = { url: parseURL(input, base ?? options.base), options: options, basePath: "" }; this.analyze(); } analyze() { var _this_Internal_options_nextConfig, _this_Internal_options_nextConfig_i18n, _this_Internal_domainLocale, _this_Internal_options_nextConfig1, _this_Internal_options_nextConfig_i18n1; const info = getNextPathnameInfo(this[Internal].url.pathname, { nextConfig: this[Internal].options.nextConfig, parseData: !undefined, i18nProvider: this[Internal].options.i18nProvider }); const hostname = getHostname(this[Internal].url, this[Internal].options.headers); this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : detectDomainLocale((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname); const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale); this[Internal].url.pathname = info.pathname; this[Internal].defaultLocale = defaultLocale; this[Internal].basePath = info.basePath ?? ""; this[Internal].buildId = info.buildId; this[Internal].locale = info.locale ?? defaultLocale; this[Internal].trailingSlash = info.trailingSlash; } formatPathname() { return formatNextPathnameInfo({ basePath: this[Internal].basePath, buildId: this[Internal].buildId, defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined, locale: this[Internal].locale, pathname: this[Internal].url.pathname, trailingSlash: this[Internal].trailingSlash }); } formatSearch() { return this[Internal].url.search; } get buildId() { return this[Internal].buildId; } set buildId(buildId) { this[Internal].buildId = buildId; } get locale() { return this[Internal].locale ?? ""; } set locale(locale) { var _this_Internal_options_nextConfig, _this_Internal_options_nextConfig_i18n; if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) { throw new TypeError(`The NextURL configuration includes no locale "${locale}"`); } this[Internal].locale = locale; } get defaultLocale() { return this[Internal].defaultLocale; } get domainLocale() { return this[Internal].domainLocale; } get searchParams() { return this[Internal].url.searchParams; } get host() { return this[Internal].url.host; } set host(value) { this[Internal].url.host = value; } get hostname() { return this[Internal].url.hostname; } set hostname(value) { this[Internal].url.hostname = value; } get port() { return this[Internal].url.port; } set port(value) { this[Internal].url.port = value; } get protocol() { return this[Internal].url.protocol; } set protocol(value) { this[Internal].url.protocol = value; } get href() { const pathname = this.formatPathname(); const search = this.formatSearch(); return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`; } set href(url) { this[Internal].url = parseURL(url); this.analyze(); } get origin() { return this[Internal].url.origin; } get pathname() { return this[Internal].url.pathname; } set pathname(value) { this[Internal].url.pathname = value; } get hash() { return this[Internal].url.hash; } set hash(value) { this[Internal].url.hash = value; } get search() { return this[Internal].url.search; } set search(value) { this[Internal].url.search = value; } get password() { return this[Internal].url.password; } set password(value) { this[Internal].url.password = value; } get username() { return this[Internal].url.username; } set username(value) { this[Internal].url.username = value; } get basePath() { return this[Internal].basePath; } set basePath(value) { this[Internal].basePath = value.startsWith("/") ? value : `/${value}`; } toString() { return this.href; } toJSON() { return this.href; } [Symbol.for("edge-runtime.inspect.custom")]() { return { href: this.href, origin: this.origin, protocol: this.protocol, username: this.username, password: this.password, host: this.host, hostname: this.hostname, port: this.port, pathname: this.pathname, search: this.search, searchParams: this.searchParams, hash: this.hash }; } clone() { return new NextURL(String(this), this[Internal].options); } } //# sourceMappingURL=next-url.js.map // EXTERNAL MODULE: ./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js var _edge_runtime_cookies = __webpack_require__(865); ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/cookies.js //# sourceMappingURL=cookies.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/request.js const INTERNALS = Symbol("internal request"); class NextRequest extends Request { constructor(input, init = {}){ const url = typeof input !== "string" && "url" in input ? input.url : String(input); validateURL(url); if (input instanceof Request) super(input, init); else super(url, init); const nextUrl = new NextURL(url, { headers: toNodeOutgoingHttpHeaders(this.headers), nextConfig: init.nextConfig }); this[INTERNALS] = { cookies: new _edge_runtime_cookies.RequestCookies(this.headers), geo: init.geo || {}, ip: init.ip, nextUrl, url: false ? 0 : nextUrl.toString() }; } [Symbol.for("edge-runtime.inspect.custom")]() { return { cookies: this.cookies, geo: this.geo, ip: this.ip, nextUrl: this.nextUrl, url: this.url, // rest of props come from Request bodyUsed: this.bodyUsed, cache: this.cache, credentials: this.credentials, destination: this.destination, headers: Object.fromEntries(this.headers), integrity: this.integrity, keepalive: this.keepalive, method: this.method, mode: this.mode, redirect: this.redirect, referrer: this.referrer, referrerPolicy: this.referrerPolicy, signal: this.signal }; } get cookies() { return this[INTERNALS].cookies; } get geo() { return this[INTERNALS].geo; } get ip() { return this[INTERNALS].ip; } get nextUrl() { return this[INTERNALS].nextUrl; } /** * @deprecated * `page` has been deprecated in favour of `URLPattern`. * Read more: https://nextjs.org/docs/messages/middleware-request-page */ get page() { throw new RemovedPageError(); } /** * @deprecated * `ua` has been removed in favour of \`userAgent\` function. * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent */ get ua() { throw new RemovedUAError(); } get url() { return this[INTERNALS].url; } } //# sourceMappingURL=request.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/response.js const response_INTERNALS = Symbol("internal response"); const REDIRECTS = new Set([ 301, 302, 303, 307, 308 ]); function handleMiddlewareField(init, headers) { var _init_request; if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) { if (!(init.request.headers instanceof Headers)) { throw new Error("request.headers must be an instance of Headers"); } const keys = []; for (const [key, value] of init.request.headers){ headers.set("x-middleware-request-" + key, value); keys.push(key); } headers.set("x-middleware-override-headers", keys.join(",")); } } class NextResponse extends Response { constructor(body, init = {}){ super(body, init); this[response_INTERNALS] = { cookies: new _edge_runtime_cookies.ResponseCookies(this.headers), url: init.url ? new NextURL(init.url, { headers: toNodeOutgoingHttpHeaders(this.headers), nextConfig: init.nextConfig }) : undefined }; } [Symbol.for("edge-runtime.inspect.custom")]() { return { cookies: this.cookies, url: this.url, // rest of props come from Response body: this.body, bodyUsed: this.bodyUsed, headers: Object.fromEntries(this.headers), ok: this.ok, redirected: this.redirected, status: this.status, statusText: this.statusText, type: this.type }; } get cookies() { return this[response_INTERNALS].cookies; } static json(body, init) { // @ts-expect-error This is not in lib/dom right now, and we can't augment it. const response = Response.json(body, init); return new NextResponse(response.body, response); } static redirect(url, init) { const status = typeof init === "number" ? init : (init == null ? void 0 : init.status) ?? 307; if (!REDIRECTS.has(status)) { throw new RangeError('Failed to execute "redirect" on "response": Invalid status code'); } const initObj = typeof init === "object" ? init : {}; const headers = new Headers(initObj == null ? void 0 : initObj.headers); headers.set("Location", validateURL(url)); return new NextResponse(null, { ...initObj, headers, status }); } static rewrite(destination, init) { const headers = new Headers(init == null ? void 0 : init.headers); headers.set("x-middleware-rewrite", validateURL(destination)); handleMiddlewareField(init, headers); return new NextResponse(null, { ...init, headers }); } static next(init) { const headers = new Headers(init == null ? void 0 : init.headers); headers.set("x-middleware-next", "1"); handleMiddlewareField(init, headers); return new NextResponse(null, { ...init, headers }); } } //# sourceMappingURL=response.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js /** * Given a URL as a string and a base URL it will make the URL relative * if the parsed protocol and host is the same as the one in the base * URL. Otherwise it returns the same URL string. */ function relativizeURL(url, base) { const baseURL = typeof base === "string" ? new URL(base) : base; const relative = new URL(url, base); const origin = baseURL.protocol + "//" + baseURL.host; return relative.protocol + "//" + relative.host === origin ? relative.toString().replace(origin, "") : relative.toString(); } //# sourceMappingURL=relativize-url.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/client/components/app-router-headers.js const RSC = "RSC"; const ACTION = "Next-Action"; const NEXT_ROUTER_STATE_TREE = "Next-Router-State-Tree"; const NEXT_ROUTER_PREFETCH = "Next-Router-Prefetch"; const NEXT_URL = "Next-Url"; const FETCH_CACHE_HEADER = "x-vercel-sc-headers"; const RSC_CONTENT_TYPE_HEADER = "text/x-component"; const RSC_VARY_HEADER = RSC + ", " + NEXT_ROUTER_STATE_TREE + ", " + NEXT_ROUTER_PREFETCH + ", " + NEXT_URL; const FLIGHT_PARAMETERS = [ [ RSC ], [ NEXT_ROUTER_STATE_TREE ], [ NEXT_ROUTER_PREFETCH ] ]; const NEXT_RSC_UNION_QUERY = "_rsc"; //# sourceMappingURL=app-router-headers.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/internal-utils.js const INTERNAL_QUERY_NAMES = [ "__nextFallback", "__nextLocale", "__nextInferredLocaleFromDefault", "__nextDefaultLocale", "__nextIsNotFound", NEXT_RSC_UNION_QUERY ]; const EDGE_EXTENDED_INTERNAL_QUERY_NAMES = [ "__nextDataReq" ]; function stripInternalQueries(query) { for (const name of INTERNAL_QUERY_NAMES){ delete query[name]; } } function stripInternalSearchParams(url, isEdge) { const isStringUrl = typeof url === "string"; const instance = isStringUrl ? new URL(url) : url; for (const name of INTERNAL_QUERY_NAMES){ instance.searchParams.delete(name); } if (isEdge) { for (const name of EDGE_EXTENDED_INTERNAL_QUERY_NAMES){ instance.searchParams.delete(name); } } return isStringUrl ? instance.toString() : instance; } //# sourceMappingURL=internal-utils.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js /** * Normalizes an app route so it represents the actual request path. Essentially * performing the following transformations: * * - `/(dashboard)/user/[id]/page` to `/user/[id]` * - `/(dashboard)/account/page` to `/account` * - `/user/[id]/page` to `/user/[id]` * - `/account/page` to `/account` * - `/page` to `/` * - `/(dashboard)/user/[id]/route` to `/user/[id]` * - `/(dashboard)/account/route` to `/account` * - `/user/[id]/route` to `/user/[id]` * - `/account/route` to `/account` * - `/route` to `/` * - `/` to `/` * * @param route the app route to normalize * @returns the normalized pathname */ function normalizeAppPath(route) { return ensureLeadingSlash(route.split("/").reduce((pathname, segment, index, segments)=>{ // Empty segments are ignored. if (!segment) { return pathname; } // Groups are ignored. if (segment[0] === "(" && segment.endsWith(")")) { return pathname; } // Parallel segments are ignored. if (segment[0] === "@") { return pathname; } // The last segment (if it's a leaf) should be ignored. if ((segment === "page" || segment === "route") && index === segments.length - 1) { return pathname; } return pathname + "/" + segment; }, "")); } /** * Strips the `.rsc` extension if it's in the pathname. * Since this function is used on full urls it checks `?` for searchParams handling. */ function normalizeRscPath(pathname, enabled) { return enabled ? pathname.replace(/\.rsc($|\?)/, "$1") : pathname; } //# sourceMappingURL=app-paths.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/lib/constants.js const NEXT_QUERY_PARAM_PREFIX = "nxtP"; const PRERENDER_REVALIDATE_HEADER = "x-prerender-revalidate"; const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = "x-prerender-revalidate-if-generated"; // in seconds const CACHE_ONE_YEAR = 31536000; // Patterns to detect middleware files const MIDDLEWARE_FILENAME = "middleware"; const MIDDLEWARE_LOCATION_REGEXP = (/* unused pure expression or super */ null && (`(?:src/)?${MIDDLEWARE_FILENAME}`)); // Pattern to detect instrumentation hooks file const INSTRUMENTATION_HOOK_FILENAME = "instrumentation"; // Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path, // we have to use a private alias const PAGES_DIR_ALIAS = "private-next-pages"; const DOT_NEXT_ALIAS = "private-dot-next"; const ROOT_DIR_ALIAS = "private-next-root-dir"; const APP_DIR_ALIAS = "private-next-app-dir"; const RSC_MOD_REF_PROXY_ALIAS = "private-next-rsc-mod-ref-proxy"; const RSC_ACTION_VALIDATE_ALIAS = "private-next-rsc-action-validate"; const RSC_ACTION_PROXY_ALIAS = "private-next-rsc-action-proxy"; const RSC_ACTION_CLIENT_WRAPPER_ALIAS = "private-next-rsc-action-client-wrapper"; const PUBLIC_DIR_MIDDLEWARE_CONFLICT = (/* unused pure expression or super */ null && (`You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`)); const SSG_GET_INITIAL_PROPS_CONFLICT = (/* unused pure expression or super */ null && (`You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`)); const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = (/* unused pure expression or super */ null && (`You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`)); const SERVER_PROPS_SSG_CONFLICT = (/* unused pure expression or super */ null && (`You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`)); const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = (/* unused pure expression or super */ null && (`can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`)); const SERVER_PROPS_EXPORT_ERROR = (/* unused pure expression or super */ null && (`pages with \`getServerSideProps\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`)); const GSP_NO_RETURNED_VALUE = "Your `getStaticProps` function did not return an object. Did you forget to add a `return`?"; const GSSP_NO_RETURNED_VALUE = "Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?"; const UNSTABLE_REVALIDATE_RENAME_ERROR = (/* unused pure expression or super */ null && ("The `unstable_revalidate` property is available for general use.\n" + "Please use `revalidate` instead.")); const GSSP_COMPONENT_MEMBER_ERROR = (/* unused pure expression or super */ null && (`can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`)); const NON_STANDARD_NODE_ENV = (/* unused pure expression or super */ null && (`You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`)); const SSG_FALLBACK_EXPORT_ERROR = (/* unused pure expression or super */ null && (`Pages with \`fallback\` enabled in \`getStaticPaths\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`)); // Consolidate this consts when the `appDir` will be stable. const ESLINT_DEFAULT_DIRS = [ "pages", "components", "lib", "src" ]; const ESLINT_DEFAULT_DIRS_WITH_APP = [ "app", ...ESLINT_DEFAULT_DIRS ]; const ESLINT_PROMPT_VALUES = [ { title: "Strict", recommended: true, config: { extends: "next/core-web-vitals" } }, { title: "Base", config: { extends: "next" } }, { title: "Cancel", config: null } ]; const SERVER_RUNTIME = { edge: "edge", experimentalEdge: "experimental-edge", nodejs: "nodejs" }; /** * The names of the webpack layers. These layers are the primitives for the * webpack chunks. */ const WEBPACK_LAYERS_NAMES = { /** * The layer for the shared code between the client and server bundles. */ shared: "shared", /** * React Server Components layer (rsc). */ reactServerComponents: "rsc", /** * Server Side Rendering layer (ssr). */ serverSideRendering: "ssr", /** * The browser client bundle layer for actions. */ actionBrowser: "actionBrowser", /** * The layer for the API routes. */ api: "api", /** * The layer for the middleware code. */ middleware: "middleware", /** * The layer for assets on the edge. */ edgeAsset: "edge-asset", /** * The browser client bundle layer for App directory. */ appPagesBrowser: "app-pages-browser", /** * The server bundle layer for metadata routes. */ appMetadataRoute: "app-metadata-route" }; const WEBPACK_LAYERS = { ...WEBPACK_LAYERS_NAMES, GROUP: { server: [ WEBPACK_LAYERS_NAMES.reactServerComponents, WEBPACK_LAYERS_NAMES.actionBrowser, WEBPACK_LAYERS_NAMES.appMetadataRoute ] } }; const WEBPACK_RESOURCE_QUERIES = { edgeSSREntry: "__next_edge_ssr_entry__", metadata: "__next_metadata__", metadataRoute: "__next_metadata_route__", metadataImageMeta: "__next_metadata_image_meta__" }; //# sourceMappingURL=constants.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js class ReflectAdapter { static get(target, prop, receiver) { const value = Reflect.get(target, prop, receiver); if (typeof value === "function") { return value.bind(target); } return value; } static set(target, prop, value, receiver) { return Reflect.set(target, prop, value, receiver); } static has(target, prop) { return Reflect.has(target, prop); } static deleteProperty(target, prop) { return Reflect.deleteProperty(target, prop); } } //# sourceMappingURL=reflect.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js /** * @internal */ class ReadonlyHeadersError extends Error { constructor(){ super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers"); } static callable() { throw new ReadonlyHeadersError(); } } class HeadersAdapter extends Headers { constructor(headers){ // We've already overridden the methods that would be called, so we're just // calling the super constructor to ensure that the instanceof check works. super(); this.headers = new Proxy(headers, { get (target, prop, receiver) { // Because this is just an object, we expect that all "get" operations // are for properties. If it's a "get" for a symbol, we'll just return // the symbol. if (typeof prop === "symbol") { return ReflectAdapter.get(target, prop, receiver); } const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, return undefined. if (typeof original === "undefined") return; // If the original casing exists, return the value. return ReflectAdapter.get(target, original, receiver); }, set (target, prop, value, receiver) { if (typeof prop === "symbol") { return ReflectAdapter.set(target, prop, value, receiver); } const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, use the prop as the key. return ReflectAdapter.set(target, original ?? prop, value, receiver); }, has (target, prop) { if (typeof prop === "symbol") return ReflectAdapter.has(target, prop); const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, return false. if (typeof original === "undefined") return false; // If the original casing exists, return true. return ReflectAdapter.has(target, original); }, deleteProperty (target, prop) { if (typeof prop === "symbol") return ReflectAdapter.deleteProperty(target, prop); const lowercased = prop.toLowerCase(); // Let's find the original casing of the key. This assumes that there is // no mixed case keys (e.g. "Content-Type" and "content-type") in the // headers object. const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); // If the original casing doesn't exist, return true. if (typeof original === "undefined") return true; // If the original casing exists, delete the property. return ReflectAdapter.deleteProperty(target, original); } }); } /** * Seals a Headers instance to prevent modification by throwing an error when * any mutating method is called. */ static seal(headers) { return new Proxy(headers, { get (target, prop, receiver) { switch(prop){ case "append": case "delete": case "set": return ReadonlyHeadersError.callable; default: return ReflectAdapter.get(target, prop, receiver); } } }); } /** * Merges a header value into a string. This stores multiple values as an * array, so we need to merge them into a string. * * @param value a header value * @returns a merged header value (a string) */ merge(value) { if (Array.isArray(value)) return value.join(", "); return value; } /** * Creates a Headers instance from a plain object or a Headers instance. * * @param headers a plain object or a Headers instance * @returns a headers instance */ static from(headers) { if (headers instanceof Headers) return headers; return new HeadersAdapter(headers); } append(name, value) { const existing = this.headers[name]; if (typeof existing === "string") { this.headers[name] = [ existing, value ]; } else if (Array.isArray(existing)) { existing.push(value); } else { this.headers[name] = value; } } delete(name) { delete this.headers[name]; } get(name) { const value = this.headers[name]; if (typeof value !== "undefined") return this.merge(value); return null; } has(name) { return typeof this.headers[name] !== "undefined"; } set(name, value) { this.headers[name] = value; } forEach(callbackfn, thisArg) { for (const [name, value] of this.entries()){ callbackfn.call(thisArg, value, name, this); } } *entries() { for (const key of Object.keys(this.headers)){ const name = key.toLowerCase(); // We assert here that this is a string because we got it from the // Object.keys() call above. const value = this.get(name); yield [ name, value ]; } } *keys() { for (const key of Object.keys(this.headers)){ const name = key.toLowerCase(); yield name; } } *values() { for (const key of Object.keys(this.headers)){ // We assert here that this is a string because we got it from the // Object.keys() call above. const value = this.get(key); yield value; } } [Symbol.iterator]() { return this.entries(); } } //# sourceMappingURL=headers.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js /** * @internal */ class ReadonlyRequestCookiesError extends Error { constructor(){ super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options"); } static callable() { throw new ReadonlyRequestCookiesError(); } } class RequestCookiesAdapter { static seal(cookies) { return new Proxy(cookies, { get (target, prop, receiver) { switch(prop){ case "clear": case "delete": case "set": return ReadonlyRequestCookiesError.callable; default: return ReflectAdapter.get(target, prop, receiver); } } }); } } const SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for("next.mutated.cookies"); function getModifiedCookieValues(cookies) { const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES]; if (!modified || !Array.isArray(modified) || modified.length === 0) { return []; } return modified; } function appendMutableCookies(headers, mutableCookies) { const modifiedCookieValues = getModifiedCookieValues(mutableCookies); if (modifiedCookieValues.length === 0) { return false; } // Return a new response that extends the response with // the modified cookies as fallbacks. `res`' cookies // will still take precedence. const resCookies = new ResponseCookies(headers); const returnedCookies = resCookies.getAll(); // Set the modified cookies as fallbacks. for (const cookie of modifiedCookieValues){ resCookies.set(cookie); } // Set the original cookies as the final values. for (const cookie of returnedCookies){ resCookies.set(cookie); } return true; } class MutableRequestCookiesAdapter { static wrap(cookies, onUpdateCookies) { const responseCookes = new _edge_runtime_cookies.ResponseCookies(new Headers()); for (const cookie of cookies.getAll()){ responseCookes.set(cookie); } let modifiedValues = []; const modifiedCookies = new Set(); const updateResponseCookies = ()=>{ var _fetch___nextGetStaticStore; // TODO-APP: change method of getting staticGenerationAsyncStore const staticGenerationAsyncStore = fetch.__nextGetStaticStore == null ? void 0 : (_fetch___nextGetStaticStore = fetch.__nextGetStaticStore()) == null ? void 0 : _fetch___nextGetStaticStore.getStore(); if (staticGenerationAsyncStore) { staticGenerationAsyncStore.pathWasRevalidated = true; } const allCookies = responseCookes.getAll(); modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name)); if (onUpdateCookies) { const serializedCookies = []; for (const cookie of modifiedValues){ const tempCookies = new _edge_runtime_cookies.ResponseCookies(new Headers()); tempCookies.set(cookie); serializedCookies.push(tempCookies.toString()); } onUpdateCookies(serializedCookies); } }; return new Proxy(responseCookes, { get (target, prop, receiver) { switch(prop){ // A special symbol to get the modified cookie values case SYMBOL_MODIFY_COOKIE_VALUES: return modifiedValues; // TODO: Throw error if trying to set a cookie after the response // headers have been set. case "delete": return function(...args) { modifiedCookies.add(typeof args[0] === "string" ? args[0] : args[0].name); try { target.delete(...args); } finally{ updateResponseCookies(); } }; case "set": return function(...args) { modifiedCookies.add(typeof args[0] === "string" ? args[0] : args[0].name); try { return target.set(...args); } finally{ updateResponseCookies(); } }; default: return ReflectAdapter.get(target, prop, receiver); } } }); } } //# sourceMappingURL=request-cookies.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/api-utils/index.js /** * Parse cookies from the `headers` of request * @param req request object */ function getCookieParser(headers) { return function parseCookie() { const { cookie } = headers; if (!cookie) { return {}; } const { parse: parseCookieFn } = __webpack_require__(487); return parseCookieFn(Array.isArray(cookie) ? cookie.join("; ") : cookie); }; } /** * * @param res response object * @param statusCode `HTTP` status code of response */ function sendStatusCode(res, statusCode) { res.statusCode = statusCode; return res; } /** * * @param res response object * @param [statusOrUrl] `HTTP` status code of redirect * @param url URL of redirect */ function redirect(res, statusOrUrl, url) { if (typeof statusOrUrl === "string") { url = statusOrUrl; statusOrUrl = 307; } if (typeof statusOrUrl !== "number" || typeof url !== "string") { throw new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`); } res.writeHead(statusOrUrl, { Location: url }); res.write(url); res.end(); return res; } function checkIsOnDemandRevalidate(req, previewProps) { const headers = HeadersAdapter.from(req.headers); const previewModeId = headers.get(PRERENDER_REVALIDATE_HEADER); const isOnDemandRevalidate = previewModeId === previewProps.previewModeId; const revalidateOnlyGenerated = headers.has(PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER); return { isOnDemandRevalidate, revalidateOnlyGenerated }; } const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`; const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`; const RESPONSE_LIMIT_DEFAULT = (/* unused pure expression or super */ null && (4 * 1024 * 1024)); const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA); const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS); function clearPreviewData(res, options = {}) { if (SYMBOL_CLEARED_COOKIES in res) { return res; } const { serialize } = __webpack_require__(487); const previous = res.getHeader("Set-Cookie"); res.setHeader(`Set-Cookie`, [ ...typeof previous === "string" ? [ previous ] : Array.isArray(previous) ? previous : [], serialize(COOKIE_NAME_PRERENDER_BYPASS, "", { // To delete a cookie, set `expires` to a date in the past: // https://tools.ietf.org/html/rfc6265#section-4.1.1 // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. expires: new Date(0), httpOnly: true, sameSite: true ? "none" : 0, secure: "production" !== "development", path: "/", ...options.path !== undefined ? { path: options.path } : undefined }), serialize(COOKIE_NAME_PRERENDER_DATA, "", { // To delete a cookie, set `expires` to a date in the past: // https://tools.ietf.org/html/rfc6265#section-4.1.1 // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. expires: new Date(0), httpOnly: true, sameSite: true ? "none" : 0, secure: "production" !== "development", path: "/", ...options.path !== undefined ? { path: options.path } : undefined }) ]); Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, { value: true, enumerable: false }); return res; } /** * Custom error class */ class ApiError extends (/* unused pure expression or super */ null && (Error)) { constructor(statusCode, message){ super(message); this.statusCode = statusCode; } } /** * Sends error in `response` * @param res response object * @param statusCode of response * @param message of response */ function sendError(res, statusCode, message) { res.statusCode = statusCode; res.statusMessage = message; res.end(message); } /** * Execute getter function only if its needed * @param LazyProps `req` and `params` for lazyProp * @param prop name of property * @param getter function to get data */ function setLazyProp({ req }, prop, getter) { const opts = { configurable: true, enumerable: true }; const optsReset = { ...opts, writable: true }; Object.defineProperty(req, prop, { ...opts, get: ()=>{ const value = getter(); // we set the property on the object to avoid recalculating it Object.defineProperty(req, prop, { ...optsReset, value }); return value; }, set: (value)=>{ Object.defineProperty(req, prop, { ...optsReset, value }); } }); } //# sourceMappingURL=index.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js class DraftModeProvider { constructor(previewProps, req, cookies, mutableCookies){ var _cookies_get; // The logic for draftMode() is very similar to tryGetPreviewData() // but Draft Mode does not have any data associated with it. const isOnDemandRevalidate = previewProps && checkIsOnDemandRevalidate(req, previewProps).isOnDemandRevalidate; const cookieValue = (_cookies_get = cookies.get(COOKIE_NAME_PRERENDER_BYPASS)) == null ? void 0 : _cookies_get.value; this.isEnabled = Boolean(!isOnDemandRevalidate && cookieValue && previewProps && cookieValue === previewProps.previewModeId); this._previewModeId = previewProps == null ? void 0 : previewProps.previewModeId; this._mutableCookies = mutableCookies; } enable() { if (!this._previewModeId) { throw new Error("Invariant: previewProps missing previewModeId this should never happen"); } this._mutableCookies.set({ name: COOKIE_NAME_PRERENDER_BYPASS, value: this._previewModeId, httpOnly: true, sameSite: true ? "none" : 0, secure: "production" !== "development", path: "/" }); } disable() { // To delete a cookie, set `expires` to a date in the past: // https://tools.ietf.org/html/rfc6265#section-4.1.1 // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. this._mutableCookies.set({ name: COOKIE_NAME_PRERENDER_BYPASS, value: "", httpOnly: true, sameSite: true ? "none" : 0, secure: "production" !== "development", path: "/", expires: new Date(0) }); } } //# sourceMappingURL=draft-mode-provider.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js function getHeaders(headers) { const cleaned = HeadersAdapter.from(headers); for (const param of FLIGHT_PARAMETERS){ cleaned.delete(param.toString().toLowerCase()); } return HeadersAdapter.seal(cleaned); } function getCookies(headers) { const cookies = new _edge_runtime_cookies.RequestCookies(HeadersAdapter.from(headers)); return RequestCookiesAdapter.seal(cookies); } function getMutableCookies(headers, onUpdateCookies) { const cookies = new _edge_runtime_cookies.RequestCookies(HeadersAdapter.from(headers)); return MutableRequestCookiesAdapter.wrap(cookies, onUpdateCookies); } const RequestAsyncStorageWrapper = { /** * Wrap the callback with the given store so it can access the underlying * store using hooks. * * @param storage underlying storage object returned by the module * @param context context to seed the store * @param callback function to call within the scope of the context * @returns the result returned by the callback */ wrap (storage, { req, res, renderOpts }, callback) { let previewProps = undefined; if (renderOpts && "previewProps" in renderOpts) { // TODO: investigate why previewProps isn't on RenderOpts previewProps = renderOpts.previewProps; } function defaultOnUpdateCookies(cookies) { if (res) { res.setHeader("Set-Cookie", cookies); } } const cache = {}; const store = { get headers () { if (!cache.headers) { // Seal the headers object that'll freeze out any methods that could // mutate the underlying data. cache.headers = getHeaders(req.headers); } return cache.headers; }, get cookies () { if (!cache.cookies) { // Seal the cookies object that'll freeze out any methods that could // mutate the underlying data. cache.cookies = getCookies(req.headers); } return cache.cookies; }, get mutableCookies () { if (!cache.mutableCookies) { cache.mutableCookies = getMutableCookies(req.headers, (renderOpts == null ? void 0 : renderOpts.onUpdateCookies) || (res ? defaultOnUpdateCookies : undefined)); } return cache.mutableCookies; }, get draftMode () { if (!cache.draftMode) { cache.draftMode = new DraftModeProvider(previewProps, req, this.cookies, this.mutableCookies); } return cache.draftMode; } }; return storage.run(store, callback, store); } }; //# sourceMappingURL=request-async-storage-wrapper.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/client/components/async-local-storage.js const sharedAsyncLocalStorageNotAvailableError = new Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"); class FakeAsyncLocalStorage { disable() { throw sharedAsyncLocalStorageNotAvailableError; } getStore() { // This fake implementation of AsyncLocalStorage always returns `undefined`. return undefined; } run() { throw sharedAsyncLocalStorageNotAvailableError; } exit() { throw sharedAsyncLocalStorageNotAvailableError; } enterWith() { throw sharedAsyncLocalStorageNotAvailableError; } } const maybeGlobalAsyncLocalStorage = globalThis.AsyncLocalStorage; function createAsyncLocalStorage() { if (maybeGlobalAsyncLocalStorage) { return new maybeGlobalAsyncLocalStorage(); } return new FakeAsyncLocalStorage(); } //# sourceMappingURL=async-local-storage.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/client/components/request-async-storage.js const requestAsyncStorage = createAsyncLocalStorage(); //# sourceMappingURL=request-async-storage.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/adapter.js class NextRequestHint extends NextRequest { constructor(params){ super(params.input, params.init); this.sourcePage = params.page; } get request() { throw new PageSignatureError({ page: this.sourcePage }); } respondWith() { throw new PageSignatureError({ page: this.sourcePage }); } waitUntil() { throw new PageSignatureError({ page: this.sourcePage }); } } const adapter_FLIGHT_PARAMETERS = [ [ RSC ], [ NEXT_ROUTER_STATE_TREE ], [ NEXT_ROUTER_PREFETCH ], [ FETCH_CACHE_HEADER ] ]; async function adapter(params) { await ensureInstrumentationRegistered(); // TODO-APP: use explicit marker for this const isEdgeRendering = typeof self.__BUILD_MANIFEST !== "undefined"; const prerenderManifest = typeof self.__PRERENDER_MANIFEST === "string" ? JSON.parse(self.__PRERENDER_MANIFEST) : undefined; params.request.url = normalizeRscPath(params.request.url, true); const requestUrl = new NextURL(params.request.url, { headers: params.request.headers, nextConfig: params.request.nextConfig }); // Iterator uses an index to keep track of the current iteration. Because of deleting and appending below we can't just use the iterator. // Instead we use the keys before iteration. const keys = [ ...requestUrl.searchParams.keys() ]; for (const key of keys){ const value = requestUrl.searchParams.getAll(key); if (key !== NEXT_QUERY_PARAM_PREFIX && key.startsWith(NEXT_QUERY_PARAM_PREFIX)) { const normalizedKey = key.substring(NEXT_QUERY_PARAM_PREFIX.length); requestUrl.searchParams.delete(normalizedKey); for (const val of value){ requestUrl.searchParams.append(normalizedKey, val); } requestUrl.searchParams.delete(key); } } // Ensure users only see page requests, never data requests. const buildId = requestUrl.buildId; requestUrl.buildId = ""; const isDataReq = params.request.headers["x-nextjs-data"]; if (isDataReq && requestUrl.pathname === "/index") { requestUrl.pathname = "/"; } const requestHeaders = fromNodeOutgoingHttpHeaders(params.request.headers); const flightHeaders = new Map(); // Parameters should only be stripped for middleware if (!isEdgeRendering) { for (const param of adapter_FLIGHT_PARAMETERS){ const key = param.toString().toLowerCase(); const value = requestHeaders.get(key); if (value) { flightHeaders.set(key, requestHeaders.get(key)); requestHeaders.delete(key); } } } const normalizeUrl = false ? 0 : requestUrl; const request = new NextRequestHint({ page: params.page, // Strip internal query parameters off the request. input: stripInternalSearchParams(normalizeUrl, true).toString(), init: { body: params.request.body, geo: params.request.geo, headers: requestHeaders, ip: params.request.ip, method: params.request.method, nextConfig: params.request.nextConfig, signal: params.request.signal } }); /** * This allows to identify the request as a data request. The user doesn't * need to know about this property neither use it. We add it for testing * purposes. */ if (isDataReq) { Object.defineProperty(request, "__isData", { enumerable: false, value: true }); } if (!globalThis.__incrementalCache && params.IncrementalCache) { globalThis.__incrementalCache = new params.IncrementalCache({ appDir: true, fetchCache: true, minimalMode: "production" !== "development", fetchCacheKeyPrefix: undefined, dev: "production" === "development", requestHeaders: params.request.headers, requestProtocol: "https", getPrerenderManifest: ()=>{ return { version: -1, routes: {}, dynamicRoutes: {}, notFoundRoutes: [], preview: { previewModeId: "development-id" } }; } }); } const event = new NextFetchEvent({ request, page: params.page }); let response; let cookiesFromResponse; // we only care to make async storage available for middleware if (params.page === "/middleware") { response = await RequestAsyncStorageWrapper.wrap(requestAsyncStorage, { req: request, renderOpts: { onUpdateCookies: (cookies)=>{ cookiesFromResponse = cookies; }, // @ts-expect-error: TODO: investigate why previewProps isn't on RenderOpts previewProps: (prerenderManifest == null ? void 0 : prerenderManifest.preview) || { previewModeId: "development-id", previewModeEncryptionKey: "", previewModeSigningKey: "" } } }, ()=>params.handler(request, event)); } else { response = await params.handler(request, event); } // check if response is a Response object if (response && !(response instanceof Response)) { throw new TypeError("Expected an instance of Response to be returned"); } if (response && cookiesFromResponse) { response.headers.set("set-cookie", cookiesFromResponse); } /** * For rewrites we must always include the locale in the final pathname * so we re-create the NextURL forcing it to include it when the it is * an internal rewrite. Also we make sure the outgoing rewrite URL is * a data URL if the request was a data request. */ const rewrite = response == null ? void 0 : response.headers.get("x-middleware-rewrite"); if (response && rewrite) { const rewriteUrl = new NextURL(rewrite, { forceLocale: true, headers: params.request.headers, nextConfig: params.request.nextConfig }); if (true) { if (rewriteUrl.host === request.nextUrl.host) { rewriteUrl.buildId = buildId || rewriteUrl.buildId; response.headers.set("x-middleware-rewrite", String(rewriteUrl)); } } /** * When the request is a data request we must show if there was a rewrite * with an internal header so the client knows which component to load * from the data request. */ const relativizedRewrite = relativizeURL(String(rewriteUrl), String(requestUrl)); if (isDataReq && // if the rewrite is external and external rewrite // resolving config is enabled don't add this header // so the upstream app can set it instead !(undefined && 0)) { response.headers.set("x-nextjs-rewrite", relativizedRewrite); } } /** * For redirects we will not include the locale in case when it is the * default and we must also make sure the outgoing URL is a data one if * the incoming request was a data request. */ const redirect = response == null ? void 0 : response.headers.get("Location"); if (response && redirect && !isEdgeRendering) { const redirectURL = new NextURL(redirect, { forceLocale: false, headers: params.request.headers, nextConfig: params.request.nextConfig }); /** * Responses created from redirects have immutable headers so we have * to clone the response to be able to modify it. */ response = new Response(response.body, response); if (true) { if (redirectURL.host === request.nextUrl.host) { redirectURL.buildId = buildId || redirectURL.buildId; response.headers.set("Location", String(redirectURL)); } } /** * When the request is a data request we can't use the location header as * it may end up with CORS error. Instead we map to an internal header so * the client knows the destination. */ if (isDataReq) { response.headers.delete("Location"); response.headers.set("x-nextjs-redirect", relativizeURL(String(redirectURL), String(requestUrl))); } } const finalResponse = response ? response : NextResponse.next(); // Flight headers are not overridable / removable so they are applied at the end. const middlewareOverrideHeaders = finalResponse.headers.get("x-middleware-override-headers"); const overwrittenHeaders = []; if (middlewareOverrideHeaders) { for (const [key, value] of flightHeaders){ finalResponse.headers.set(`x-middleware-request-${key}`, value); overwrittenHeaders.push(key); } if (overwrittenHeaders.length > 0) { finalResponse.headers.set("x-middleware-override-headers", middlewareOverrideHeaders + "," + overwrittenHeaders.join(",")); } } return { response: finalResponse, waitUntil: Promise.all(event[waitUntilSymbol]) }; } //# sourceMappingURL=adapter.js.map ;// CONCATENATED MODULE: ./node_modules/next/dist/esm/server/web/exports/next-response.js // This file is for modularized imports for next/server to get fully-treeshaking. //# sourceMappingURL=next-response.js.map ;// CONCATENATED MODULE: ./i18n.config.ts const i18n_config_i18n = { defaultLocale: "vi", locales: [ "en", "vi" ] }; // EXTERNAL MODULE: ./node_modules/negotiator/index.js var negotiator = __webpack_require__(190); ;// CONCATENATED MODULE: ./middleware.ts function getLocale(request) { const negotiatorHeaders = {}; request.headers.forEach((value, key)=>negotiatorHeaders[key] = value); // @ts-ignore locales are readonly const locales = i18n.locales; const languages = new Negotiator({ headers: negotiatorHeaders }).languages(); const locale = matchLocale(languages, locales, i18n.defaultLocale); return locale; } function middleware(request) { const pathname = request.nextUrl.pathname; const pathnameIsMissingLocale = i18n_config_i18n.locales.every((locale)=>!pathname.startsWith(`/${locale}/`) && pathname !== `/${locale}`); // Redirect if there is no locale if (pathnameIsMissingLocale) { const locale = "vi"; return NextResponse.redirect(new URL(`/${locale}${pathname.startsWith("/") ? "" : "/"}${pathname}`, request.url)); } } const config = { // Matcher ignoring `/_next/` and `/api/`. The special `.*\\..*` is public folder??? matcher: [ "/((?!api|_next/static|.*\\..*|_next/image|favicon.ico).*)" ] }; ;// CONCATENATED MODULE: ./node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js?absolutePagePath=private-next-root-dir%2Fmiddleware.ts&page=%2Fmiddleware&rootDir=%2Fhome%2Fjenkins%2Fagent%2Fworkspace%2Fbinhdinhf1h2o%2Fwebsite&matchers=W3sicmVnZXhwIjoiXig%2FOlxcLyhfbmV4dFxcL2RhdGFcXC9bXi9dezEsfSkpPyg%2FOlxcLygoPyFhcGl8X25leHRcXC9zdGF0aWN8LipcXC4uKnxfbmV4dFxcL2ltYWdlfGZhdmljb24uaWNvKS4qKSkoLmpzb24pP1tcXC8jXFw%2FXT8kIiwib3JpZ2luYWxTb3VyY2UiOiIvKCg%2FIWFwaXxfbmV4dC9zdGF0aWN8LipcXC4uKnxfbmV4dC9pbWFnZXxmYXZpY29uLmljbykuKikifV0%3D&preferredRegion=&middlewareConfig=eyJtYXRjaGVycyI6W3sicmVnZXhwIjoiXig%2FOlxcLyhfbmV4dFxcL2RhdGFcXC9bXi9dezEsfSkpPyg%2FOlxcLygoPyFhcGl8X25leHRcXC9zdGF0aWN8LipcXC4uKnxfbmV4dFxcL2ltYWdlfGZhdmljb24uaWNvKS4qKSkoLmpzb24pP1tcXC8jXFw%2FXT8kIiwib3JpZ2luYWxTb3VyY2UiOiIvKCg%2FIWFwaXxfbmV4dC9zdGF0aWN8LipcXC4uKnxfbmV4dC9pbWFnZXxmYXZpY29uLmljbykuKikifV19! const mod = { ...middleware_namespaceObject } const handler = mod.middleware || mod.default if (typeof handler !== 'function') { throw new Error('The Middleware "pages/middleware" must export a `middleware` or a `default` function'); } /* harmony default export */ function next_middleware_loaderabsolutePagePath_private_next_root_dir_2Fmiddleware_ts_page_2Fmiddleware_rootDir_2Fhome_2Fjenkins_2Fagent_2Fworkspace_2Fbinhdinhf1h2o_2Fwebsite_matchers_W3sicmVnZXhwIjoiXig_2FOlxcLyhfbmV4dFxcL2RhdGFcXC9bXi9dezEsfSkpPyg_2FOlxcLygoPyFhcGl8X25leHRcXC9zdGF0aWN8LipcXC4uKnxfbmV4dFxcL2ltYWdlfGZhdmljb24uaWNvKS4qKSkoLmpzb24pP1tcXC8jXFw_2FXT8kIiwib3JpZ2luYWxTb3VyY2UiOiIvKCg_2FIWFwaXxfbmV4dC9zdGF0aWN8LipcXC4uKnxfbmV4dC9pbWFnZXxmYXZpY29uLmljbykuKikifV0_3D_preferredRegion_middlewareConfig_eyJtYXRjaGVycyI6W3sicmVnZXhwIjoiXig_2FOlxcLyhfbmV4dFxcL2RhdGFcXC9bXi9dezEsfSkpPyg_2FOlxcLygoPyFhcGl8X25leHRcXC9zdGF0aWN8LipcXC4uKnxfbmV4dFxcL2ltYWdlfGZhdmljb24uaWNvKS4qKSkoLmpzb24pP1tcXC8jXFw_2FXT8kIiwib3JpZ2luYWxTb3VyY2UiOiIvKCg_2FIWFwaXxfbmV4dC9zdGF0aWN8LipcXC4uKnxfbmV4dC9pbWFnZXxmYXZpY29uLmljbykuKikifV19_(opts) { return adapter({ ...opts, page: "/middleware", handler, }) } /***/ }), /***/ 190: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /*! * negotiator * Copyright(c) 2012 Federico Romero * Copyright(c) 2012-2014 Isaac Z. Schlueter * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ var preferredCharsets = __webpack_require__(885); var preferredEncodings = __webpack_require__(748); var preferredLanguages = __webpack_require__(556); var preferredMediaTypes = __webpack_require__(317); /** * Module exports. * @public */ module.exports = Negotiator; module.exports.Negotiator = Negotiator; /** * Create a Negotiator instance from a request. * @param {object} request * @public */ function Negotiator(request) { if (!(this instanceof Negotiator)) { return new Negotiator(request); } this.request = request; } Negotiator.prototype.charset = function charset(available) { var set = this.charsets(available); return set && set[0]; }; Negotiator.prototype.charsets = function charsets(available) { return preferredCharsets(this.request.headers["accept-charset"], available); }; Negotiator.prototype.encoding = function encoding(available) { var set = this.encodings(available); return set && set[0]; }; Negotiator.prototype.encodings = function encodings(available) { return preferredEncodings(this.request.headers["accept-encoding"], available); }; Negotiator.prototype.language = function language(available) { var set = this.languages(available); return set && set[0]; }; Negotiator.prototype.languages = function languages(available) { return preferredLanguages(this.request.headers["accept-language"], available); }; Negotiator.prototype.mediaType = function mediaType(available) { var set = this.mediaTypes(available); return set && set[0]; }; Negotiator.prototype.mediaTypes = function mediaTypes(available) { return preferredMediaTypes(this.request.headers.accept, available); }; // Backwards compatibility Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; /***/ }), /***/ 885: /***/ ((module) => { "use strict"; /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter * Copyright(c) 2014 Federico Romero * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed */ /** * Module exports. * @public */ module.exports = preferredCharsets; module.exports.preferredCharsets = preferredCharsets; /** * Module variables. * @private */ var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; /** * Parse the Accept-Charset header. * @private */ function parseAcceptCharset(accept) { var accepts = accept.split(","); for(var i = 0, j = 0; i < accepts.length; i++){ var charset = parseCharset(accepts[i].trim(), i); if (charset) { accepts[j++] = charset; } } // trim accepts accepts.length = j; return accepts; } /** * Parse a charset from the Accept-Charset header. * @private */ function parseCharset(str, i) { var match = simpleCharsetRegExp.exec(str); if (!match) return null; var charset = match[1]; var q = 1; if (match[2]) { var params = match[2].split(";"); for(var j = 0; j < params.length; j++){ var p = params[j].trim().split("="); if (p[0] === "q") { q = parseFloat(p[1]); break; } } } return { charset: charset, q: q, i: i }; } /** * Get the priority of a charset. * @private */ function getCharsetPriority(charset, accepted, index) { var priority = { o: -1, q: 0, s: 0 }; for(var i = 0; i < accepted.length; i++){ var spec = specify(charset, accepted[i], index); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } /** * Get the specificity of the charset. * @private */ function specify(charset, spec, index) { var s = 0; if (spec.charset.toLowerCase() === charset.toLowerCase()) { s |= 1; } else if (spec.charset !== "*") { return null; } return { i: index, o: spec.i, q: spec.q, s: s }; } /** * Get the preferred charsets from an Accept-Charset header. * @public */ function preferredCharsets(accept, provided) { // RFC 2616 sec 14.2: no header = * var accepts = parseAcceptCharset(accept === undefined ? "*" : accept || ""); if (!provided) { // sorted list of all charsets return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset); } var priorities = provided.map(function getPriority(type, index) { return getCharsetPriority(type, accepts, index); }); // sorted list of accepted charsets return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { return provided[priorities.indexOf(priority)]; }); } /** * Compare two specs. * @private */ function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } /** * Get full charset string. * @private */ function getFullCharset(spec) { return spec.charset; } /** * Check if a spec has any quality. * @private */ function isQuality(spec) { return spec.q > 0; } /***/ }), /***/ 748: /***/ ((module) => { "use strict"; /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter * Copyright(c) 2014 Federico Romero * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed */ /** * Module exports. * @public */ module.exports = preferredEncodings; module.exports.preferredEncodings = preferredEncodings; /** * Module variables. * @private */ var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; /** * Parse the Accept-Encoding header. * @private */ function parseAcceptEncoding(accept) { var accepts = accept.split(","); var hasIdentity = false; var minQuality = 1; for(var i = 0, j = 0; i < accepts.length; i++){ var encoding = parseEncoding(accepts[i].trim(), i); if (encoding) { accepts[j++] = encoding; hasIdentity = hasIdentity || specify("identity", encoding); minQuality = Math.min(minQuality, encoding.q || 1); } } if (!hasIdentity) { /* * If identity doesn't explicitly appear in the accept-encoding header, * it's added to the list of acceptable encoding with the lowest q */ accepts[j++] = { encoding: "identity", q: minQuality, i: i }; } // trim accepts accepts.length = j; return accepts; } /** * Parse an encoding from the Accept-Encoding header. * @private */ function parseEncoding(str, i) { var match = simpleEncodingRegExp.exec(str); if (!match) return null; var encoding = match[1]; var q = 1; if (match[2]) { var params = match[2].split(";"); for(var j = 0; j < params.length; j++){ var p = params[j].trim().split("="); if (p[0] === "q") { q = parseFloat(p[1]); break; } } } return { encoding: encoding, q: q, i: i }; } /** * Get the priority of an encoding. * @private */ function getEncodingPriority(encoding, accepted, index) { var priority = { o: -1, q: 0, s: 0 }; for(var i = 0; i < accepted.length; i++){ var spec = specify(encoding, accepted[i], index); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } /** * Get the specificity of the encoding. * @private */ function specify(encoding, spec, index) { var s = 0; if (spec.encoding.toLowerCase() === encoding.toLowerCase()) { s |= 1; } else if (spec.encoding !== "*") { return null; } return { i: index, o: spec.i, q: spec.q, s: s }; } ; /** * Get the preferred encodings from an Accept-Encoding header. * @public */ function preferredEncodings(accept, provided) { var accepts = parseAcceptEncoding(accept || ""); if (!provided) { // sorted list of all encodings return accepts.filter(isQuality).sort(compareSpecs).map(getFullEncoding); } var priorities = provided.map(function getPriority(type, index) { return getEncodingPriority(type, accepts, index); }); // sorted list of accepted encodings return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { return provided[priorities.indexOf(priority)]; }); } /** * Compare two specs. * @private */ function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } /** * Get full encoding string. * @private */ function getFullEncoding(spec) { return spec.encoding; } /** * Check if a spec has any quality. * @private */ function isQuality(spec) { return spec.q > 0; } /***/ }), /***/ 556: /***/ ((module) => { "use strict"; /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter * Copyright(c) 2014 Federico Romero * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed */ /** * Module exports. * @public */ module.exports = preferredLanguages; module.exports.preferredLanguages = preferredLanguages; /** * Module variables. * @private */ var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; /** * Parse the Accept-Language header. * @private */ function parseAcceptLanguage(accept) { var accepts = accept.split(","); for(var i = 0, j = 0; i < accepts.length; i++){ var language = parseLanguage(accepts[i].trim(), i); if (language) { accepts[j++] = language; } } // trim accepts accepts.length = j; return accepts; } /** * Parse a language from the Accept-Language header. * @private */ function parseLanguage(str, i) { var match = simpleLanguageRegExp.exec(str); if (!match) return null; var prefix = match[1]; var suffix = match[2]; var full = prefix; if (suffix) full += "-" + suffix; var q = 1; if (match[3]) { var params = match[3].split(";"); for(var j = 0; j < params.length; j++){ var p = params[j].split("="); if (p[0] === "q") q = parseFloat(p[1]); } } return { prefix: prefix, suffix: suffix, q: q, i: i, full: full }; } /** * Get the priority of a language. * @private */ function getLanguagePriority(language, accepted, index) { var priority = { o: -1, q: 0, s: 0 }; for(var i = 0; i < accepted.length; i++){ var spec = specify(language, accepted[i], index); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } /** * Get the specificity of the language. * @private */ function specify(language, spec, index) { var p = parseLanguage(language); if (!p) return null; var s = 0; if (spec.full.toLowerCase() === p.full.toLowerCase()) { s |= 4; } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { s |= 2; } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { s |= 1; } else if (spec.full !== "*") { return null; } return { i: index, o: spec.i, q: spec.q, s: s }; } ; /** * Get the preferred languages from an Accept-Language header. * @public */ function preferredLanguages(accept, provided) { // RFC 2616 sec 14.4: no header = * var accepts = parseAcceptLanguage(accept === undefined ? "*" : accept || ""); if (!provided) { // sorted list of all languages return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage); } var priorities = provided.map(function getPriority(type, index) { return getLanguagePriority(type, accepts, index); }); // sorted list of accepted languages return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { return provided[priorities.indexOf(priority)]; }); } /** * Compare two specs. * @private */ function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } /** * Get full language string. * @private */ function getFullLanguage(spec) { return spec.full; } /** * Check if a spec has any quality. * @private */ function isQuality(spec) { return spec.q > 0; } /***/ }), /***/ 317: /***/ ((module) => { "use strict"; /** * negotiator * Copyright(c) 2012 Isaac Z. Schlueter * Copyright(c) 2014 Federico Romero * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed */ /** * Module exports. * @public */ module.exports = preferredMediaTypes; module.exports.preferredMediaTypes = preferredMediaTypes; /** * Module variables. * @private */ var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; /** * Parse the Accept header. * @private */ function parseAccept(accept) { var accepts = splitMediaTypes(accept); for(var i = 0, j = 0; i < accepts.length; i++){ var mediaType = parseMediaType(accepts[i].trim(), i); if (mediaType) { accepts[j++] = mediaType; } } // trim accepts accepts.length = j; return accepts; } /** * Parse a media type from the Accept header. * @private */ function parseMediaType(str, i) { var match = simpleMediaTypeRegExp.exec(str); if (!match) return null; var params = Object.create(null); var q = 1; var subtype = match[2]; var type = match[1]; if (match[3]) { var kvps = splitParameters(match[3]).map(splitKeyValuePair); for(var j = 0; j < kvps.length; j++){ var pair = kvps[j]; var key = pair[0].toLowerCase(); var val = pair[1]; // get the value, unwrapping quotes var value = val && val[0] === '"' && val[val.length - 1] === '"' ? val.substr(1, val.length - 2) : val; if (key === "q") { q = parseFloat(value); break; } // store parameter params[key] = value; } } return { type: type, subtype: subtype, params: params, q: q, i: i }; } /** * Get the priority of a media type. * @private */ function getMediaTypePriority(type, accepted, index) { var priority = { o: -1, q: 0, s: 0 }; for(var i = 0; i < accepted.length; i++){ var spec = specify(type, accepted[i], index); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } /** * Get the specificity of the media type. * @private */ function specify(type, spec, index) { var p = parseMediaType(type); var s = 0; if (!p) { return null; } if (spec.type.toLowerCase() == p.type.toLowerCase()) { s |= 4; } else if (spec.type != "*") { return null; } if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { s |= 2; } else if (spec.subtype != "*") { return null; } var keys = Object.keys(spec.params); if (keys.length > 0) { if (keys.every(function(k) { return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p.params[k] || "").toLowerCase(); })) { s |= 1; } else { return null; } } return { i: index, o: spec.i, q: spec.q, s: s }; } /** * Get the preferred media types from an Accept header. * @public */ function preferredMediaTypes(accept, provided) { // RFC 2616 sec 14.2: no header = */* var accepts = parseAccept(accept === undefined ? "*/*" : accept || ""); if (!provided) { // sorted list of all types return accepts.filter(isQuality).sort(compareSpecs).map(getFullType); } var priorities = provided.map(function getPriority(type, index) { return getMediaTypePriority(type, accepts, index); }); // sorted list of accepted types return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { return provided[priorities.indexOf(priority)]; }); } /** * Compare two specs. * @private */ function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } /** * Get full type string. * @private */ function getFullType(spec) { return spec.type + "/" + spec.subtype; } /** * Check if a spec has any quality. * @private */ function isQuality(spec) { return spec.q > 0; } /** * Count the number of quotes in a string. * @private */ function quoteCount(string) { var count = 0; var index = 0; while((index = string.indexOf('"', index)) !== -1){ count++; index++; } return count; } /** * Split a key value pair. * @private */ function splitKeyValuePair(str) { var index = str.indexOf("="); var key; var val; if (index === -1) { key = str; } else { key = str.substr(0, index); val = str.substr(index + 1); } return [ key, val ]; } /** * Split an Accept header into media types. * @private */ function splitMediaTypes(accept) { var accepts = accept.split(","); for(var i = 1, j = 0; i < accepts.length; i++){ if (quoteCount(accepts[j]) % 2 == 0) { accepts[++j] = accepts[i]; } else { accepts[j] += "," + accepts[i]; } } // trim accepts accepts.length = j + 1; return accepts; } /** * Split a string of parameters. * @private */ function splitParameters(str) { var parameters = str.split(";"); for(var i = 1, j = 0; i < parameters.length; i++){ if (quoteCount(parameters[j]) % 2 == 0) { parameters[++j] = parameters[i]; } else { parameters[j] += ";" + parameters[i]; } } // trim parameters parameters.length = j + 1; for(var i = 0; i < parameters.length; i++){ parameters[i] = parameters[i].trim(); } return parameters; } /***/ }), /***/ 865: /***/ ((module) => { "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all)=>{ for(var name in all)__defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc)=>{ if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: ()=>from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod)=>__copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { RequestCookies: ()=>RequestCookies, ResponseCookies: ()=>ResponseCookies, parseCookie: ()=>parseCookie, parseSetCookie: ()=>parseSetCookie, splitCookiesString: ()=>splitCookiesString, stringifyCookie: ()=>stringifyCookie }); module.exports = __toCommonJS(src_exports); // src/serialize.ts function stringifyCookie(c) { var _a; const attrs = [ "path" in c && c.path && `Path=${c.path}`, "expires" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === "number" ? new Date(c.expires) : c.expires).toUTCString()}`, "maxAge" in c && typeof c.maxAge === "number" && `Max-Age=${c.maxAge}`, "domain" in c && c.domain && `Domain=${c.domain}`, "secure" in c && c.secure && "Secure", "httpOnly" in c && c.httpOnly && "HttpOnly", "sameSite" in c && c.sameSite && `SameSite=${c.sameSite}` ].filter(Boolean); return `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : "")}; ${attrs.join("; ")}`; } function parseCookie(cookie) { const map = /* @__PURE__ */ new Map(); for (const pair of cookie.split(/; */)){ if (!pair) continue; const splitAt = pair.indexOf("="); if (splitAt === -1) { map.set(pair, "true"); continue; } const [key, value] = [ pair.slice(0, splitAt), pair.slice(splitAt + 1) ]; try { map.set(key, decodeURIComponent(value != null ? value : "true")); } catch {} } return map; } function parseSetCookie(setCookie) { if (!setCookie) { return void 0; } const [[name, value], ...attributes] = parseCookie(setCookie); const { domain, expires, httponly, maxage, path, samesite, secure } = Object.fromEntries(attributes.map(([key, value2])=>[ key.toLowerCase(), value2 ])); const cookie = { name, value: decodeURIComponent(value), domain, ...expires && { expires: new Date(expires) }, ...httponly && { httpOnly: true }, ...typeof maxage === "string" && { maxAge: Number(maxage) }, path, ...samesite && { sameSite: parseSameSite(samesite) }, ...secure && { secure: true } }; return compact(cookie); } function compact(t) { const newT = {}; for(const key in t){ if (t[key]) { newT[key] = t[key]; } } return newT; } var SAME_SITE = [ "strict", "lax", "none" ]; function parseSameSite(string) { string = string.toLowerCase(); return SAME_SITE.includes(string) ? string : void 0; } function splitCookiesString(cookiesString) { if (!cookiesString) return []; var cookiesStrings = []; var pos = 0; var start; var ch; var lastComma; var nextStart; var cookiesSeparatorFound; function skipWhitespace() { while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ pos += 1; } return pos < cookiesString.length; } function notSpecialChar() { ch = cookiesString.charAt(pos); return ch !== "=" && ch !== ";" && ch !== ","; } while(pos < cookiesString.length){ start = pos; cookiesSeparatorFound = false; while(skipWhitespace()){ ch = cookiesString.charAt(pos); if (ch === ",") { lastComma = pos; pos += 1; skipWhitespace(); nextStart = pos; while(pos < cookiesString.length && notSpecialChar()){ pos += 1; } if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { cookiesSeparatorFound = true; pos = nextStart; cookiesStrings.push(cookiesString.substring(start, lastComma)); start = pos; } else { pos = lastComma + 1; } } else { pos += 1; } } if (!cookiesSeparatorFound || pos >= cookiesString.length) { cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); } } return cookiesStrings; } // src/request-cookies.ts var RequestCookies = class { constructor(requestHeaders){ /** @internal */ this._parsed = /* @__PURE__ */ new Map(); this._headers = requestHeaders; const header = requestHeaders.get("cookie"); if (header) { const parsed = parseCookie(header); for (const [name, value] of parsed){ this._parsed.set(name, { name, value }); } } } [Symbol.iterator]() { return this._parsed[Symbol.iterator](); } /** * The amount of cookies received from the client */ get size() { return this._parsed.size; } get(...args) { const name = typeof args[0] === "string" ? args[0] : args[0].name; return this._parsed.get(name); } getAll(...args) { var _a; const all = Array.from(this._parsed); if (!args.length) { return all.map(([_, value])=>value); } const name = typeof args[0] === "string" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name; return all.filter(([n])=>n === name).map(([_, value])=>value); } has(name) { return this._parsed.has(name); } set(...args) { const [name, value] = args.length === 1 ? [ args[0].name, args[0].value ] : args; const map = this._parsed; map.set(name, { name, value }); this._headers.set("cookie", Array.from(map).map(([_, value2])=>stringifyCookie(value2)).join("; ")); return this; } /** * Delete the cookies matching the passed name or names in the request. */ delete(names) { const map = this._parsed; const result = !Array.isArray(names) ? map.delete(names) : names.map((name)=>map.delete(name)); this._headers.set("cookie", Array.from(map).map(([_, value])=>stringifyCookie(value)).join("; ")); return result; } /** * Delete all the cookies in the cookies in the request. */ clear() { this.delete(Array.from(this._parsed.keys())); return this; } /** * Format the cookies in the request as a string for logging */ [Symbol.for("edge-runtime.inspect.custom")]() { return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`; } toString() { return [ ...this._parsed.values() ].map((v)=>`${v.name}=${encodeURIComponent(v.value)}`).join("; "); } }; // src/response-cookies.ts var ResponseCookies = class { constructor(responseHeaders){ /** @internal */ this._parsed = /* @__PURE__ */ new Map(); var _a, _b, _c; this._headers = responseHeaders; const setCookie = // @ts-expect-error See https://github.com/whatwg/fetch/issues/973 (_c = (_b = (_a = responseHeaders.getAll) == null ? void 0 : _a.call(responseHeaders, "set-cookie")) != null ? _b : responseHeaders.get("set-cookie")) != null ? _c : []; const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie); for (const cookieString of cookieStrings){ const parsed = parseSetCookie(cookieString); if (parsed) this._parsed.set(parsed.name, parsed); } } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise. */ get(...args) { const key = typeof args[0] === "string" ? args[0] : args[0].name; return this._parsed.get(key); } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise. */ getAll(...args) { var _a; const all = Array.from(this._parsed.values()); if (!args.length) { return all; } const key = typeof args[0] === "string" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name; return all.filter((c)=>c.name === key); } has(name) { return this._parsed.has(name); } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise. */ set(...args) { const [name, value, cookie] = args.length === 1 ? [ args[0].name, args[0].value, args[0] ] : args; const map = this._parsed; map.set(name, normalizeCookie({ name, value, ...cookie })); replace(map, this._headers); return this; } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise. */ delete(...args) { const [name, path, domain] = typeof args[0] === "string" ? [ args[0] ] : [ args[0].name, args[0].path, args[0].domain ]; return this.set({ name, path, domain, value: "", expires: /* @__PURE__ */ new Date(0) }); } [Symbol.for("edge-runtime.inspect.custom")]() { return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`; } toString() { return [ ...this._parsed.values() ].map(stringifyCookie).join("; "); } }; function replace(bag, headers) { headers.delete("set-cookie"); for (const [, value] of bag){ const serialized = stringifyCookie(value); headers.append("set-cookie", serialized); } } function normalizeCookie(cookie = { name: "", value: "" }) { if (typeof cookie.expires === "number") { cookie.expires = new Date(cookie.expires); } if (cookie.maxAge) { cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3); } if (cookie.path === null || cookie.path === void 0) { cookie.path = "/"; } return cookie; } // Annotate the CommonJS export names for ESM import in node: 0 && (0); /***/ }), /***/ 487: /***/ ((module) => { "use strict"; var __dirname = "/"; (()=>{ "use strict"; if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = __dirname + "/"; var e = {}; (()=>{ var r = e; /*! * cookie * Copyright(c) 2012-2014 Roman Shtylman * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ r.parse = parse; r.serialize = serialize; var i = decodeURIComponent; var t = encodeURIComponent; var a = /; */; var n = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; function parse(e, r) { if (typeof e !== "string") { throw new TypeError("argument str must be a string"); } var t = {}; var n = r || {}; var o = e.split(a); var s = n.decode || i; for(var p = 0; p < o.length; p++){ var f = o[p]; var u = f.indexOf("="); if (u < 0) { continue; } var v = f.substr(0, u).trim(); var c = f.substr(++u, f.length).trim(); if ('"' == c[0]) { c = c.slice(1, -1); } if (undefined == t[v]) { t[v] = tryDecode(c, s); } } return t; } function serialize(e, r, i) { var a = i || {}; var o = a.encode || t; if (typeof o !== "function") { throw new TypeError("option encode is invalid"); } if (!n.test(e)) { throw new TypeError("argument name is invalid"); } var s = o(r); if (s && !n.test(s)) { throw new TypeError("argument val is invalid"); } var p = e + "=" + s; if (null != a.maxAge) { var f = a.maxAge - 0; if (isNaN(f) || !isFinite(f)) { throw new TypeError("option maxAge is invalid"); } p += "; Max-Age=" + Math.floor(f); } if (a.domain) { if (!n.test(a.domain)) { throw new TypeError("option domain is invalid"); } p += "; Domain=" + a.domain; } if (a.path) { if (!n.test(a.path)) { throw new TypeError("option path is invalid"); } p += "; Path=" + a.path; } if (a.expires) { if (typeof a.expires.toUTCString !== "function") { throw new TypeError("option expires is invalid"); } p += "; Expires=" + a.expires.toUTCString(); } if (a.httpOnly) { p += "; HttpOnly"; } if (a.secure) { p += "; Secure"; } if (a.sameSite) { var u = typeof a.sameSite === "string" ? a.sameSite.toLowerCase() : a.sameSite; switch(u){ case true: p += "; SameSite=Strict"; break; case "lax": p += "; SameSite=Lax"; break; case "strict": p += "; SameSite=Strict"; break; case "none": p += "; SameSite=None"; break; default: throw new TypeError("option sameSite is invalid"); } } return p; } function tryDecode(e, r) { try { return r(e); } catch (r) { return e; } } })(); module.exports = e; })(); /***/ }) }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) /******/ var __webpack_exports__ = (__webpack_exec__(764)); /******/ (_ENTRIES = typeof _ENTRIES === "undefined" ? {} : _ENTRIES).middleware_middleware = __webpack_exports__; /******/ } ]); //# sourceMappingURL=middleware.js.map