{"version":3,"file":"static/chunks/3733-b9c9d49e637eda6f.js","mappings":"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","sources":["webpack://_N_E/./node_modules/cookie/index.js","webpack://_N_E/./node_modules/next/dist/api/navigation.js","webpack://_N_E/../../../src/client/components/draft-mode.ts","webpack://_N_E/../../../src/client/components/headers.ts","webpack://_N_E/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js","webpack://_N_E/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js","webpack://_N_E/./node_modules/next/dist/server/web/error.js","webpack://_N_E/./node_modules/next/dist/server/web/exports/index.js","webpack://_N_E/./node_modules/next/dist/server/web/next-url.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/cookies.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/image-response.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/request.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/response.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/url-pattern.js","webpack://_N_E/./node_modules/next/dist/server/web/spec-extension/user-agent.js","webpack://_N_E/./node_modules/next/dist/server/web/utils.js","webpack://_N_E/../../../src/shared/lib/get-hostname.ts","webpack://_N_E/../../../../src/shared/lib/i18n/detect-domain-locale.ts","webpack://_N_E/./node_modules/redux-persist/es/constants.js","webpack://_N_E/./node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","webpack://_N_E/./node_modules/redux-persist/es/createPersistoid.js","webpack://_N_E/./node_modules/redux-persist/es/getStoredState.js","webpack://_N_E/./node_modules/redux-persist/es/purgeStoredState.js","webpack://_N_E/./node_modules/redux-persist/es/persistReducer.js","webpack://_N_E/./node_modules/redux-persist/es/persistStore.js","webpack://_N_E/./node_modules/redux-persist/es/index.js","webpack://_N_E/./node_modules/redux-persist/lib/storage/createWebStorage.js","webpack://_N_E/./node_modules/redux-persist/lib/storage/getStorage.js","webpack://_N_E/./node_modules/redux-persist/lib/storage/index.js","webpack://_N_E/./node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","webpack://_N_E/./node_modules/use-sync-external-store/with-selector.js","webpack://_N_E/./node_modules/@auth/prisma-adapter/index.js","webpack://_N_E/./node_modules/immer/dist/immer.mjs","webpack://_N_E/./node_modules/reselect/dist/reselect.mjs","webpack://_N_E/./node_modules/redux-thunk/dist/redux-thunk.mjs","webpack://_N_E/./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/cookie.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/assert.js","webpack://_N_E/./node_modules/@panva/hkdf/dist/web/runtime/hkdf.js","webpack://_N_E/./node_modules/@panva/hkdf/dist/web/index.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/webcrypto.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/digest.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/buffer_utils.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/base64url.js","webpack://_N_E/./node_modules/jose/dist/browser/util/errors.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/is_object.js","webpack://_N_E/./node_modules/jose/dist/browser/jwk/thumbprint.js","webpack://_N_E/./node_modules/jose/dist/browser/util/base64url.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/random.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/iv.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/check_iv_length.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/check_cek_length.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/crypto_key.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/invalid_key_input.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/is_key_like.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/encrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/bogus.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/aeskw.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/ecdhes.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/check_p2s.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/pbes2kw.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/subtle_rsaes.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/check_key_length.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/rsaes.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/jwk_to_key.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/normalize_key.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/cek.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/key_to_jwk.js","webpack://_N_E/./node_modules/jose/dist/browser/key/export.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/check_key_type.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/timing_safe_equal.js","webpack://_N_E/./node_modules/jose/dist/browser/runtime/decrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/aesgcmkw.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/encrypt_key_management.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/is_disjoint.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/validate_crit.js","webpack://_N_E/./node_modules/jose/dist/browser/jwe/flattened/encrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/jwe/compact/encrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/epoch.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/secs.js","webpack://_N_E/./node_modules/jose/dist/browser/jwt/produce.js","webpack://_N_E/./node_modules/jose/dist/browser/jwt/encrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/key/import.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/decrypt_key_management.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/validate_algorithms.js","webpack://_N_E/./node_modules/jose/dist/browser/jwe/flattened/decrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/jwe/compact/decrypt.js","webpack://_N_E/./node_modules/jose/dist/browser/lib/jwt_claims_set.js","webpack://_N_E/./node_modules/jose/dist/browser/jwt/decrypt.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/jwt.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/callback-url.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/logger.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/actions.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/web.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/callback/oauth/csrf-token.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/merge.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/providers.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/init.js","webpack://_N_E/./node_modules/preact/dist/preact.module.js","webpack://_N_E/./node_modules/preact-render-to-string/dist/index.mjs","webpack://_N_E/./node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/pages/error.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/webauthn-client.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/pages/signin.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/pages/signout.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/pages/styles.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/pages/verify-request.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/pages/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/date.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/callback/handle-login.js","webpack://_N_E/./node_modules/oauth4webapi/build/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/callback/oauth/checks.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/callback/oauth/callback.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/webauthn-utils.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/callback/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/session.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/signin/authorization-url.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/signin/send-token.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/signin/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/signout.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/session.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/webauthn-options.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/actions/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/lib/utils/env.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/index.js","webpack://_N_E/./node_modules/next/dist/api/server.js","webpack://_N_E/./node_modules/next-auth/lib/env.js","webpack://_N_E/./node_modules/next/dist/api/headers.js","webpack://_N_E/./node_modules/next-auth/lib/index.js","webpack://_N_E/./node_modules/next-auth/lib/actions.js","webpack://_N_E/./node_modules/next-auth/index.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/providers/credentials.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/providers/facebook.js","webpack://_N_E/./node_modules/next-auth/node_modules/@auth/core/providers/google.js","webpack://_N_E/./node_modules/react-redux/dist/react-redux.mjs","webpack://_N_E/./node_modules/redux/dist/redux.mjs"],"sourcesContent":["/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var dec = opt.decode || decode;\n\n var index = 0\n while (index < str.length) {\n var eqIdx = str.indexOf('=', index)\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break\n }\n\n var endIdx = str.indexOf(';', index)\n\n if (endIdx === -1) {\n endIdx = str.length\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1\n continue\n }\n\n var key = str.slice(index, eqIdx).trim()\n\n // only assign once\n if (undefined === obj[key]) {\n var val = str.slice(eqIdx + 1, endIdx).trim()\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n\n index = endIdx + 1\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n var expires = opt.expires\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString()\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.partitioned) {\n str += '; Partitioned'\n }\n\n if (opt.priority) {\n var priority = typeof opt.priority === 'string'\n ? opt.priority.toLowerCase()\n : opt.priority\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low'\n break\n case 'medium':\n str += '; Priority=Medium'\n break\n case 'high':\n str += '; Priority=High'\n break\n default:\n throw new TypeError('option priority is invalid')\n }\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n return str.indexOf('%') !== -1\n ? decodeURIComponent(str)\n : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} val\n * @returns {string}\n */\n\nfunction encode (val) {\n return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n return __toString.call(val) === '[object Date]' ||\n val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","export * from \"../client/components/navigation\";\n\n//# sourceMappingURL=navigation.js.map",null,null,"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [key.toLowerCase(), value2])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, path, domain] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0].path, args[0].domain];\n return this.set({ name, path, domain, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestCookies,\n ResponseCookies,\n parseCookie,\n parseSetCookie,\n stringifyCookie\n});\n","(()=>{var i={226:function(i,e){(function(o,a){\"use strict\";var r=\"1.0.35\",t=\"\",n=\"?\",s=\"function\",b=\"undefined\",w=\"object\",l=\"string\",d=\"major\",c=\"model\",u=\"name\",p=\"type\",m=\"vendor\",f=\"version\",h=\"architecture\",v=\"console\",g=\"mobile\",k=\"tablet\",x=\"smarttv\",_=\"wearable\",y=\"embedded\",q=350;var T=\"Amazon\",S=\"Apple\",z=\"ASUS\",N=\"BlackBerry\",A=\"Browser\",C=\"Chrome\",E=\"Edge\",O=\"Firefox\",U=\"Google\",j=\"Huawei\",P=\"LG\",R=\"Microsoft\",M=\"Motorola\",B=\"Opera\",V=\"Samsung\",D=\"Sharp\",I=\"Sony\",W=\"Viera\",F=\"Xiaomi\",G=\"Zebra\",H=\"Facebook\",L=\"Chromium OS\",Z=\"Mac OS\";var extend=function(i,e){var o={};for(var a in i){if(e[a]&&e[a].length%2===0){o[a]=e[a].concat(i[a])}else{o[a]=i[a]}}return o},enumerize=function(i){var e={};for(var o=0;o0){if(b.length===2){if(typeof b[1]==s){this[b[0]]=b[1].call(this,d)}else{this[b[0]]=b[1]}}else if(b.length===3){if(typeof b[1]===s&&!(b[1].exec&&b[1].test)){this[b[0]]=d?b[1].call(this,d,b[2]):a}else{this[b[0]]=d?d.replace(b[1],b[2]):a}}else if(b.length===4){this[b[0]]=d?b[3].call(this,d.replace(b[1],b[2])):a}}else{this[b]=d?d:a}}}}o+=2}},strMapper=function(i,e){for(var o in e){if(typeof e[o]===w&&e[o].length>0){for(var r=0;r2){i[c]=\"iPad\";i[p]=k}return i};this.getEngine=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.engine);return i};this.getOS=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.os);if(_&&!i[u]&&v&&v.platform!=\"Unknown\"){i[u]=v.platform.replace(/chrome os/i,L).replace(/macos/i,Z)}return i};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return n};this.setUA=function(i){n=typeof i===l&&i.length>q?trim(i,q):i;return this};this.setUA(n);return this};UAParser.VERSION=r;UAParser.BROWSER=enumerize([u,f,d]);UAParser.CPU=enumerize([h]);UAParser.DEVICE=enumerize([c,m,p,v,g,x,k,_,y]);UAParser.ENGINE=UAParser.OS=enumerize([u,f]);if(typeof e!==b){if(\"object\"!==b&&i.exports){e=i.exports=UAParser}e.UAParser=UAParser}else{if(typeof define===s&&define.amd){define((function(){return UAParser}))}else if(typeof o!==b){o.UAParser=UAParser}}var Q=typeof o!==b&&(o.jQuery||o.Zepto);if(Q&&!Q.ua){var Y=new UAParser;Q.ua=Y.getResult();Q.ua.get=function(){return Y.getUA()};Q.ua.set=function(i){Y.setUA(i);var e=Y.getResult();for(var o in e){Q.ua[o]=e[o]}}}})(typeof window===\"object\"?window:this)}};var e={};function __nccwpck_require__(o){var a=e[o];if(a!==undefined){return a.exports}var r=e[o]={exports:{}};var t=true;try{i[o].call(r.exports,r,r.exports,__nccwpck_require__);t=false}finally{if(t)delete e[o]}return r.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var o=__nccwpck_require__(226);module.exports=o})();","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n PageSignatureError: null,\n RemovedPageError: null,\n RemovedUAError: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PageSignatureError: function() {\n return PageSignatureError;\n },\n RemovedPageError: function() {\n return RemovedPageError;\n },\n RemovedUAError: function() {\n return RemovedUAError;\n }\n});\nclass PageSignatureError extends Error {\n constructor({ page }){\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `);\n }\n}\nclass RemovedPageError extends Error {\n constructor(){\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `);\n }\n}\nclass RemovedUAError extends Error {\n constructor(){\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `);\n }\n}\n\n//# sourceMappingURL=error.js.map","// Alias index file of next/server for edge runtime for tree-shaking purpose\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n ImageResponse: null,\n NextRequest: null,\n NextResponse: null,\n URLPattern: null,\n userAgent: null,\n userAgentFromString: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ImageResponse: function() {\n return _imageresponse.ImageResponse;\n },\n NextRequest: function() {\n return _request.NextRequest;\n },\n NextResponse: function() {\n return _response.NextResponse;\n },\n URLPattern: function() {\n return _urlpattern.URLPattern;\n },\n userAgent: function() {\n return _useragent.userAgent;\n },\n userAgentFromString: function() {\n return _useragent.userAgentFromString;\n }\n});\nconst _imageresponse = require(\"../spec-extension/image-response\");\nconst _request = require(\"../spec-extension/request\");\nconst _response = require(\"../spec-extension/response\");\nconst _useragent = require(\"../spec-extension/user-agent\");\nconst _urlpattern = require(\"../spec-extension/url-pattern\");\n\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NextURL\", {\n enumerable: true,\n get: function() {\n return NextURL;\n }\n});\nconst _detectdomainlocale = require(\"../../shared/lib/i18n/detect-domain-locale\");\nconst _formatnextpathnameinfo = require(\"../../shared/lib/router/utils/format-next-pathname-info\");\nconst _gethostname = require(\"../../shared/lib/get-hostname\");\nconst _getnextpathnameinfo = require(\"../../shared/lib/router/utils/get-next-pathname-info\");\nconst REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\\/\\/)(127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)/;\nfunction parseURL(url, base) {\n return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, \"localhost\"), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, \"localhost\"));\n}\nconst Internal = Symbol(\"NextURLInternal\");\nclass NextURL {\n constructor(input, baseOrOpts, opts){\n let base;\n let options;\n if (typeof baseOrOpts === \"object\" && \"pathname\" in baseOrOpts || typeof baseOrOpts === \"string\") {\n base = baseOrOpts;\n options = opts || {};\n } else {\n options = opts || baseOrOpts || {};\n }\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: \"\"\n };\n this.analyze();\n }\n analyze() {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1;\n const info = (0, _getnextpathnameinfo.getNextPathnameInfo)(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE,\n i18nProvider: this[Internal].options.i18nProvider\n });\n const hostname = (0, _gethostname.getHostname)(this[Internal].url, this[Internal].options.headers);\n this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, _detectdomainlocale.detectDomainLocale)((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname);\n 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);\n this[Internal].url.pathname = info.pathname;\n this[Internal].defaultLocale = defaultLocale;\n this[Internal].basePath = info.basePath ?? \"\";\n this[Internal].buildId = info.buildId;\n this[Internal].locale = info.locale ?? defaultLocale;\n this[Internal].trailingSlash = info.trailingSlash;\n }\n formatPathname() {\n return (0, _formatnextpathnameinfo.formatNextPathnameInfo)({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash\n });\n }\n formatSearch() {\n return this[Internal].url.search;\n }\n get buildId() {\n return this[Internal].buildId;\n }\n set buildId(buildId) {\n this[Internal].buildId = buildId;\n }\n get locale() {\n return this[Internal].locale ?? \"\";\n }\n set locale(locale) {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig;\n 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))) {\n throw new TypeError(`The NextURL configuration includes no locale \"${locale}\"`);\n }\n this[Internal].locale = locale;\n }\n get defaultLocale() {\n return this[Internal].defaultLocale;\n }\n get domainLocale() {\n return this[Internal].domainLocale;\n }\n get searchParams() {\n return this[Internal].url.searchParams;\n }\n get host() {\n return this[Internal].url.host;\n }\n set host(value) {\n this[Internal].url.host = value;\n }\n get hostname() {\n return this[Internal].url.hostname;\n }\n set hostname(value) {\n this[Internal].url.hostname = value;\n }\n get port() {\n return this[Internal].url.port;\n }\n set port(value) {\n this[Internal].url.port = value;\n }\n get protocol() {\n return this[Internal].url.protocol;\n }\n set protocol(value) {\n this[Internal].url.protocol = value;\n }\n get href() {\n const pathname = this.formatPathname();\n const search = this.formatSearch();\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`;\n }\n set href(url) {\n this[Internal].url = parseURL(url);\n this.analyze();\n }\n get origin() {\n return this[Internal].url.origin;\n }\n get pathname() {\n return this[Internal].url.pathname;\n }\n set pathname(value) {\n this[Internal].url.pathname = value;\n }\n get hash() {\n return this[Internal].url.hash;\n }\n set hash(value) {\n this[Internal].url.hash = value;\n }\n get search() {\n return this[Internal].url.search;\n }\n set search(value) {\n this[Internal].url.search = value;\n }\n get password() {\n return this[Internal].url.password;\n }\n set password(value) {\n this[Internal].url.password = value;\n }\n get username() {\n return this[Internal].url.username;\n }\n set username(value) {\n this[Internal].url.username = value;\n }\n get basePath() {\n return this[Internal].basePath;\n }\n set basePath(value) {\n this[Internal].basePath = value.startsWith(\"/\") ? value : `/${value}`;\n }\n toString() {\n return this.href;\n }\n toJSON() {\n return this.href;\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash\n };\n }\n clone() {\n return new NextURL(String(this), this[Internal].options);\n }\n}\n\n//# sourceMappingURL=next-url.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n HeadersAdapter: null,\n ReadonlyHeadersError: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HeadersAdapter: function() {\n return HeadersAdapter;\n },\n ReadonlyHeadersError: function() {\n return ReadonlyHeadersError;\n }\n});\nconst _reflect = require(\"./reflect\");\nclass ReadonlyHeadersError extends Error {\n constructor(){\n super(\"Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers\");\n }\n static callable() {\n throw new ReadonlyHeadersError();\n }\n}\nclass HeadersAdapter extends Headers {\n constructor(headers){\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super();\n this.headers = new Proxy(headers, {\n get (target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === \"symbol\") {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return undefined.\n if (typeof original === \"undefined\") return;\n // If the original casing exists, return the value.\n return _reflect.ReflectAdapter.get(target, original, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === \"symbol\") {\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, use the prop as the key.\n return _reflect.ReflectAdapter.set(target, original ?? prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === \"symbol\") return _reflect.ReflectAdapter.has(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return false.\n if (typeof original === \"undefined\") return false;\n // If the original casing exists, return true.\n return _reflect.ReflectAdapter.has(target, original);\n },\n deleteProperty (target, prop) {\n if (typeof prop === \"symbol\") return _reflect.ReflectAdapter.deleteProperty(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return true.\n if (typeof original === \"undefined\") return true;\n // If the original casing exists, delete the property.\n return _reflect.ReflectAdapter.deleteProperty(target, original);\n }\n });\n }\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */ static seal(headers) {\n return new Proxy(headers, {\n get (target, prop, receiver) {\n switch(prop){\n case \"append\":\n case \"delete\":\n case \"set\":\n return ReadonlyHeadersError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */ merge(value) {\n if (Array.isArray(value)) return value.join(\", \");\n return value;\n }\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */ static from(headers) {\n if (headers instanceof Headers) return headers;\n return new HeadersAdapter(headers);\n }\n append(name, value) {\n const existing = this.headers[name];\n if (typeof existing === \"string\") {\n this.headers[name] = [\n existing,\n value\n ];\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n this.headers[name] = value;\n }\n }\n delete(name) {\n delete this.headers[name];\n }\n get(name) {\n const value = this.headers[name];\n if (typeof value !== \"undefined\") return this.merge(value);\n return null;\n }\n has(name) {\n return typeof this.headers[name] !== \"undefined\";\n }\n set(name, value) {\n this.headers[name] = value;\n }\n forEach(callbackfn, thisArg) {\n for (const [name, value] of this.entries()){\n callbackfn.call(thisArg, value, name, this);\n }\n }\n *entries() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name);\n yield [\n name,\n value\n ];\n }\n }\n *keys() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n yield name;\n }\n }\n *values() {\n for (const key of Object.keys(this.headers)){\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key);\n yield value;\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\n\n//# sourceMappingURL=headers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n MutableRequestCookiesAdapter: null,\n ReadonlyRequestCookiesError: null,\n RequestCookiesAdapter: null,\n appendMutableCookies: null,\n getModifiedCookieValues: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n MutableRequestCookiesAdapter: function() {\n return MutableRequestCookiesAdapter;\n },\n ReadonlyRequestCookiesError: function() {\n return ReadonlyRequestCookiesError;\n },\n RequestCookiesAdapter: function() {\n return RequestCookiesAdapter;\n },\n appendMutableCookies: function() {\n return appendMutableCookies;\n },\n getModifiedCookieValues: function() {\n return getModifiedCookieValues;\n }\n});\nconst _cookies = require(\"../cookies\");\nconst _reflect = require(\"./reflect\");\nconst _staticgenerationasyncstorageexternal = require(\"../../../../client/components/static-generation-async-storage.external\");\nclass ReadonlyRequestCookiesError extends Error {\n constructor(){\n 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\");\n }\n static callable() {\n throw new ReadonlyRequestCookiesError();\n }\n}\nclass RequestCookiesAdapter {\n static seal(cookies) {\n return new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case \"clear\":\n case \"delete\":\n case \"set\":\n return ReadonlyRequestCookiesError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for(\"next.mutated.cookies\");\nfunction getModifiedCookieValues(cookies) {\n const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES];\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return [];\n }\n return modified;\n}\nfunction appendMutableCookies(headers, mutableCookies) {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies);\n if (modifiedCookieValues.length === 0) {\n return false;\n }\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new _cookies.ResponseCookies(headers);\n const returnedCookies = resCookies.getAll();\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues){\n resCookies.set(cookie);\n }\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies){\n resCookies.set(cookie);\n }\n return true;\n}\nclass MutableRequestCookiesAdapter {\n static wrap(cookies, onUpdateCookies) {\n const responseCookies = new _cookies.ResponseCookies(new Headers());\n for (const cookie of cookies.getAll()){\n responseCookies.set(cookie);\n }\n let modifiedValues = [];\n const modifiedCookies = new Set();\n const updateResponseCookies = ()=>{\n // TODO-APP: change method of getting staticGenerationAsyncStore\n const staticGenerationAsyncStore = _staticgenerationasyncstorageexternal.staticGenerationAsyncStorage.getStore();\n if (staticGenerationAsyncStore) {\n staticGenerationAsyncStore.pathWasRevalidated = true;\n }\n const allCookies = responseCookies.getAll();\n modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name));\n if (onUpdateCookies) {\n const serializedCookies = [];\n for (const cookie of modifiedValues){\n const tempCookies = new _cookies.ResponseCookies(new Headers());\n tempCookies.set(cookie);\n serializedCookies.push(tempCookies.toString());\n }\n onUpdateCookies(serializedCookies);\n }\n };\n return new Proxy(responseCookies, {\n get (target, prop, receiver) {\n switch(prop){\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues;\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case \"delete\":\n return function(...args) {\n modifiedCookies.add(typeof args[0] === \"string\" ? args[0] : args[0].name);\n try {\n target.delete(...args);\n } finally{\n updateResponseCookies();\n }\n };\n case \"set\":\n return function(...args) {\n modifiedCookies.add(typeof args[0] === \"string\" ? args[0] : args[0].name);\n try {\n return target.set(...args);\n } finally{\n updateResponseCookies();\n }\n };\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\n\n//# sourceMappingURL=request-cookies.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n RequestCookies: null,\n ResponseCookies: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RequestCookies: function() {\n return _cookies.RequestCookies;\n },\n ResponseCookies: function() {\n return _cookies.ResponseCookies;\n }\n});\nconst _cookies = require(\"next/dist/compiled/@edge-runtime/cookies\");\n\n//# sourceMappingURL=cookies.js.map","/**\n * @deprecated ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead.\n * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ImageResponse\", {\n enumerable: true,\n get: function() {\n return ImageResponse;\n }\n});\nfunction ImageResponse() {\n throw new Error('ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead');\n}\n\n//# sourceMappingURL=image-response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n INTERNALS: null,\n NextRequest: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERNALS: function() {\n return INTERNALS;\n },\n NextRequest: function() {\n return NextRequest;\n }\n});\nconst _nexturl = require(\"../next-url\");\nconst _utils = require(\"../utils\");\nconst _error = require(\"../error\");\nconst _cookies = require(\"./cookies\");\nconst INTERNALS = Symbol(\"internal request\");\nclass NextRequest extends Request {\n constructor(input, init = {}){\n const url = typeof input !== \"string\" && \"url\" in input ? input.url : String(input);\n (0, _utils.validateURL)(url);\n if (input instanceof Request) super(input, init);\n else super(url, init);\n const nextUrl = new _nexturl.NextURL(url, {\n headers: (0, _utils.toNodeOutgoingHttpHeaders)(this.headers),\n nextConfig: init.nextConfig\n });\n this[INTERNALS] = {\n cookies: new _cookies.RequestCookies(this.headers),\n geo: init.geo || {},\n ip: init.ip,\n nextUrl,\n url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE ? url : nextUrl.toString()\n };\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n cookies: this.cookies,\n geo: this.geo,\n ip: this.ip,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n get geo() {\n return this[INTERNALS].geo;\n }\n get ip() {\n return this[INTERNALS].ip;\n }\n get nextUrl() {\n return this[INTERNALS].nextUrl;\n }\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */ get page() {\n throw new _error.RemovedPageError();\n }\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */ get ua() {\n throw new _error.RemovedUAError();\n }\n get url() {\n return this[INTERNALS].url;\n }\n}\n\n//# sourceMappingURL=request.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NextResponse\", {\n enumerable: true,\n get: function() {\n return NextResponse;\n }\n});\nconst _nexturl = require(\"../next-url\");\nconst _utils = require(\"../utils\");\nconst _cookies = require(\"./cookies\");\nconst INTERNALS = Symbol(\"internal response\");\nconst REDIRECTS = new Set([\n 301,\n 302,\n 303,\n 307,\n 308\n]);\nfunction handleMiddlewareField(init, headers) {\n var _init_request;\n if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) {\n if (!(init.request.headers instanceof Headers)) {\n throw new Error(\"request.headers must be an instance of Headers\");\n }\n const keys = [];\n for (const [key, value] of init.request.headers){\n headers.set(\"x-middleware-request-\" + key, value);\n keys.push(key);\n }\n headers.set(\"x-middleware-override-headers\", keys.join(\",\"));\n }\n}\nclass NextResponse extends Response {\n constructor(body, init = {}){\n super(body, init);\n this[INTERNALS] = {\n cookies: new _cookies.ResponseCookies(this.headers),\n url: init.url ? new _nexturl.NextURL(init.url, {\n headers: (0, _utils.toNodeOutgoingHttpHeaders)(this.headers),\n nextConfig: init.nextConfig\n }) : undefined\n };\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n cookies: this.cookies,\n url: this.url,\n // rest of props come from Response\n body: this.body,\n bodyUsed: this.bodyUsed,\n headers: Object.fromEntries(this.headers),\n ok: this.ok,\n redirected: this.redirected,\n status: this.status,\n statusText: this.statusText,\n type: this.type\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n static json(body, init) {\n const response = Response.json(body, init);\n return new NextResponse(response.body, response);\n }\n static redirect(url, init) {\n const status = typeof init === \"number\" ? init : (init == null ? void 0 : init.status) ?? 307;\n if (!REDIRECTS.has(status)) {\n throw new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n }\n const initObj = typeof init === \"object\" ? init : {};\n const headers = new Headers(initObj == null ? void 0 : initObj.headers);\n headers.set(\"Location\", (0, _utils.validateURL)(url));\n return new NextResponse(null, {\n ...initObj,\n headers,\n status\n });\n }\n static rewrite(destination, init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set(\"x-middleware-rewrite\", (0, _utils.validateURL)(destination));\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n static next(init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set(\"x-middleware-next\", \"1\");\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n}\n\n//# sourceMappingURL=response.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"URLPattern\", {\n enumerable: true,\n get: function() {\n return GlobalURLPattern;\n }\n});\nconst GlobalURLPattern = // @ts-expect-error: URLPattern is not available in Node.js\ntypeof URLPattern === \"undefined\" ? undefined : URLPattern;\n\n//# sourceMappingURL=url-pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n isBot: null,\n userAgent: null,\n userAgentFromString: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isBot: function() {\n return isBot;\n },\n userAgent: function() {\n return userAgent;\n },\n userAgentFromString: function() {\n return userAgentFromString;\n }\n});\nconst _uaparserjs = /*#__PURE__*/ _interop_require_default(require(\"next/dist/compiled/ua-parser-js\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isBot(input) {\n return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input);\n}\nfunction userAgentFromString(input) {\n return {\n ...(0, _uaparserjs.default)(input),\n isBot: input === undefined ? false : isBot(input)\n };\n}\nfunction userAgent({ headers }) {\n return userAgentFromString(headers.get(\"user-agent\") || undefined);\n}\n\n//# sourceMappingURL=user-agent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n fromNodeOutgoingHttpHeaders: null,\n splitCookiesString: null,\n toNodeOutgoingHttpHeaders: null,\n validateURL: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fromNodeOutgoingHttpHeaders: function() {\n return fromNodeOutgoingHttpHeaders;\n },\n splitCookiesString: function() {\n return splitCookiesString;\n },\n toNodeOutgoingHttpHeaders: function() {\n return toNodeOutgoingHttpHeaders;\n },\n validateURL: function() {\n return validateURL;\n }\n});\nfunction fromNodeOutgoingHttpHeaders(nodeHeaders) {\n const headers = new Headers();\n for (let [key, value] of Object.entries(nodeHeaders)){\n const values = Array.isArray(value) ? value : [\n value\n ];\n for (let v of values){\n if (typeof v === \"undefined\") continue;\n if (typeof v === \"number\") {\n v = v.toString();\n }\n headers.append(key, v);\n }\n }\n return headers;\n}\nfunction splitCookiesString(cookiesString) {\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while(pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))){\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while(pos < cookiesString.length){\n start = pos;\n cookiesSeparatorFound = false;\n while(skipWhitespace()){\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while(pos < cookiesString.length && notSpecialChar()){\n pos += 1;\n }\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\nfunction toNodeOutgoingHttpHeaders(headers) {\n const nodeHeaders = {};\n const cookies = [];\n if (headers) {\n for (const [key, value] of headers.entries()){\n if (key.toLowerCase() === \"set-cookie\") {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value));\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies;\n } else {\n nodeHeaders[key] = value;\n }\n }\n }\n return nodeHeaders;\n}\nfunction validateURL(url) {\n try {\n return String(new URL(String(url)));\n } catch (error) {\n throw new Error(`URL is malformed \"${String(url)}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {\n cause: error\n });\n }\n}\n\n//# sourceMappingURL=utils.js.map",null,null,"export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n autoMergeLevel1: \n - merges 1 level of substate\n - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n } // otherwise hard set the new value\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n // defaults\n var blacklist = config.blacklist || null;\n var whitelist = config.whitelist || null;\n var transforms = config.transforms || [];\n var throttle = config.throttle || 0;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var serialize;\n\n if (config.serialize === false) {\n serialize = function serialize(x) {\n return x;\n };\n } else if (typeof config.serialize === 'function') {\n serialize = config.serialize;\n } else {\n serialize = defaultSerialize;\n }\n\n var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n var lastState = {};\n var stagedState = {};\n var keysToProcess = [];\n var timeIterator = null;\n var writePromise = null;\n\n var update = function update(state) {\n // add any changed keys to the queue\n Object.keys(state).forEach(function (key) {\n if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n if (lastState[key] === state[key]) return; // value unchanged? noop\n\n if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n keysToProcess.push(key); // add key to queue\n }); //if any key is missing in the new state which was present in the lastState,\n //add it for processing too\n\n Object.keys(lastState).forEach(function (key) {\n if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n keysToProcess.push(key);\n }\n }); // start the time iterator if not running (read: throttle)\n\n if (timeIterator === null) {\n timeIterator = setInterval(processNextKey, throttle);\n }\n\n lastState = state;\n };\n\n function processNextKey() {\n if (keysToProcess.length === 0) {\n if (timeIterator) clearInterval(timeIterator);\n timeIterator = null;\n return;\n }\n\n var key = keysToProcess.shift();\n var endState = transforms.reduce(function (subState, transformer) {\n return transformer.in(subState, key, lastState);\n }, lastState[key]);\n\n if (endState !== undefined) {\n try {\n stagedState[key] = serialize(endState);\n } catch (err) {\n console.error('redux-persist/createPersistoid: error serializing state', err);\n }\n } else {\n //if the endState is undefined, no need to persist the existing serialized content\n delete stagedState[key];\n }\n\n if (keysToProcess.length === 0) {\n writeStagedState();\n }\n }\n\n function writeStagedState() {\n // cleanup any removed keys just before write.\n Object.keys(stagedState).forEach(function (key) {\n if (lastState[key] === undefined) {\n delete stagedState[key];\n }\n });\n writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n }\n\n function passWhitelistBlacklist(key) {\n if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n if (blacklist && blacklist.indexOf(key) !== -1) return false;\n return true;\n }\n\n function onWriteFail(err) {\n // @TODO add fail handlers (typically storage full)\n if (writeFailHandler) writeFailHandler(err);\n\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('Error storing data', err);\n }\n }\n\n var flush = function flush() {\n while (keysToProcess.length !== 0) {\n processNextKey();\n }\n\n return writePromise || Promise.resolve();\n }; // return `persistoid`\n\n\n return {\n update: update,\n flush: flush\n };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n var transforms = config.transforms || [];\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var debug = config.debug;\n var deserialize;\n\n if (config.deserialize === false) {\n deserialize = function deserialize(x) {\n return x;\n };\n } else if (typeof config.deserialize === 'function') {\n deserialize = config.deserialize;\n } else {\n deserialize = defaultDeserialize;\n }\n\n return storage.getItem(storageKey).then(function (serialized) {\n if (!serialized) return undefined;else {\n try {\n var state = {};\n var rawState = deserialize(serialized);\n Object.keys(rawState).forEach(function (key) {\n state[key] = transforms.reduceRight(function (subState, transformer) {\n return transformer.out(subState, key, rawState);\n }, deserialize(rawState[key]));\n });\n return state;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n throw err;\n }\n }\n });\n}\n\nfunction defaultDeserialize(serial) {\n return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n var storage = config.storage;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n @TODO add validation / handling for:\n - persisting a reducer which has nested _persist\n - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (!config) throw new Error('config is required for persistReducer');\n if (!config.key) throw new Error('key is required in persistor config');\n if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n }\n\n var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n var debug = config.debug || false;\n var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n var getStoredState = config.getStoredState || defaultGetStoredState;\n var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n var _persistoid = null;\n var _purge = false;\n var _paused = true;\n\n var conditionalUpdate = function conditionalUpdate(state) {\n // update the persistoid only if we are rehydrated and not paused\n state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n return state;\n };\n\n return function (state, action) {\n var _ref = state || {},\n _persist = _ref._persist,\n rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n var restState = rest;\n\n if (action.type === PERSIST) {\n var _sealed = false;\n\n var _rehydrate = function _rehydrate(payload, err) {\n // dev warning if we are already sealed\n if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n if (!_sealed) {\n action.rehydrate(config.key, payload, err);\n _sealed = true;\n }\n };\n\n timeout && setTimeout(function () {\n !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n }, timeout); // @NOTE PERSIST resumes if paused.\n\n _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n if (_persist) {\n // We still need to call the base reducer because there might be nested\n // uses of persistReducer which need to be aware of the PERSIST action\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n }\n\n if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n action.register(config.key);\n getStoredState(config).then(function (restoredState) {\n var migrate = config.migrate || function (s, v) {\n return Promise.resolve(s);\n };\n\n migrate(restoredState, version).then(function (migratedState) {\n _rehydrate(migratedState);\n }, function (migrateErr) {\n if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n _rehydrate(undefined, migrateErr);\n });\n }, function (err) {\n _rehydrate(undefined, err);\n });\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: {\n version: version,\n rehydrated: false\n }\n });\n } else if (action.type === PURGE) {\n _purge = true;\n action.result(purgeStoredState(config));\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === FLUSH) {\n action.result(_persistoid && _persistoid.flush());\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === PAUSE) {\n _paused = true;\n } else if (action.type === REHYDRATE) {\n // noop on restState if purging\n if (_purge) return _objectSpread({}, restState, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n }) // @NOTE if key does not match, will continue to default else below\n\n });\n\n if (action.key === config.key) {\n var reducedState = baseReducer(restState, action);\n var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n var _newState = _objectSpread({}, reconciledRest, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n })\n });\n\n return conditionalUpdate(_newState);\n }\n } // if we have not already handled PERSIST, straight passthrough\n\n\n if (!_persist) return baseReducer(state, action); // run base reducer:\n // is state modified ? return original : return updated\n\n var newState = baseReducer(restState, action);\n if (newState === restState) return state;\n return conditionalUpdate(_objectSpread({}, newState, {\n _persist: _persist\n }));\n };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n registry: [],\n bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case REGISTER:\n return _objectSpread({}, state, {\n registry: [].concat(_toConsumableArray(state.registry), [action.key])\n });\n\n case REHYDRATE:\n var firstIndex = state.registry.indexOf(action.key);\n\n var registry = _toConsumableArray(state.registry);\n\n registry.splice(firstIndex, 1);\n return _objectSpread({}, state, {\n registry: registry,\n bootstrapped: registry.length === 0\n });\n\n default:\n return state;\n }\n};\n\nexport default function persistStore(store, options, cb) {\n // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n if (process.env.NODE_ENV !== 'production') {\n var optionsToTest = options || {};\n var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n bannedKeys.forEach(function (k) {\n if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n });\n }\n\n var boostrappedCb = cb || false;\n\n var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n var register = function register(key) {\n _pStore.dispatch({\n type: REGISTER,\n key: key\n });\n };\n\n var rehydrate = function rehydrate(key, payload, err) {\n var rehydrateAction = {\n type: REHYDRATE,\n payload: payload,\n err: err,\n key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n };\n store.dispatch(rehydrateAction);\n\n _pStore.dispatch(rehydrateAction);\n\n if (boostrappedCb && persistor.getState().bootstrapped) {\n boostrappedCb();\n boostrappedCb = false;\n }\n };\n\n var persistor = _objectSpread({}, _pStore, {\n purge: function purge() {\n var results = [];\n store.dispatch({\n type: PURGE,\n result: function result(purgeResult) {\n results.push(purgeResult);\n }\n });\n return Promise.all(results);\n },\n flush: function flush() {\n var results = [];\n store.dispatch({\n type: FLUSH,\n result: function result(flushResult) {\n results.push(flushResult);\n }\n });\n return Promise.all(results);\n },\n pause: function pause() {\n store.dispatch({\n type: PAUSE\n });\n },\n persist: function persist() {\n store.dispatch({\n type: PERSIST,\n register: register,\n rehydrate: rehydrate\n });\n }\n });\n\n if (!(options && options.manualPersist)) {\n persistor.persist();\n }\n\n return persistor;\n}","export { default as persistReducer } from './persistReducer';\nexport { default as persistCombineReducers } from './persistCombineReducers';\nexport { default as persistStore } from './persistStore';\nexport { default as createMigrate } from './createMigrate';\nexport { default as createTransform } from './createTransform';\nexport { default as getStoredState } from './getStoredState';\nexport { default as createPersistoid } from './createPersistoid';\nexport { default as purgeStoredState } from './purgeStoredState';\nexport * from './constants';","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n var storage = (0, _getStorage.default)(type);\n return {\n getItem: function getItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.getItem(key));\n });\n },\n setItem: function setItem(key, item) {\n return new Promise(function (resolve, reject) {\n resolve(storage.setItem(key, item));\n });\n },\n removeItem: function removeItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.removeItem(key));\n });\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n getItem: noop,\n setItem: noop,\n removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n return false;\n }\n\n try {\n var storage = self[storageType];\n var testKey = \"redux-persist \".concat(storageType, \" test\");\n storage.setItem(testKey, 'test');\n storage.getItem(testKey);\n storage.removeItem(testKey);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n return false;\n }\n\n return true;\n}\n\nfunction getStorage(type) {\n var storageType = \"\".concat(type, \"Storage\");\n if (hasStorage(storageType)) return self[storageType];else {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n }\n\n return noopStorage;\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","/**\n * @license React\n * use-sync-external-store-with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var g=require(\"react\");function n(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var p=\"function\"===typeof Object.is?Object.is:n,q=g.useSyncExternalStore,r=g.useRef,t=g.useEffect,u=g.useMemo,v=g.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,h){var c=r(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=u(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==h&&f.hasValue){var b=f.value;if(h(b,a))return k=b}return k=a}b=k;if(p(d,a))return b;var e=l(a);if(void 0!==h&&h(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,h]);var d=q(a,c[0],c[1]);\nt(function(){f.hasValue=!0;f.value=d},[d]);v(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.min.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","/**\n * ## Setup\n *\n * Add this adapter to your `auth.ts` Auth.js configuration object:\n *\n * ```js title=\"auth.ts\"\n * import NextAuth from \"next-auth\"\n * import Google from \"next-auth/providers/google\"\n * import { PrismaAdapter } from \"@auth/prisma-adapter\"\n * import { PrismaClient } from \"@prisma/client\"\n *\n * const prisma = new PrismaClient()\n *\n * export const { handlers, auth, signIn, signOut } = NextAuth({\n * adapter: PrismaAdapter(prisma),\n * providers: [\n * Google,\n * ],\n * })\n * ```\n *\n * ### Create the Prisma schema from scratch\n *\n * You need to use at least Prisma 2.26.0. Create a schema file in `prisma/schema.prisma` similar to this one:\n *\n * > This schema is adapted for use in Prisma and based upon our main [schema](https://authjs.dev/reference/core/adapters#models)\n *\n * ```json title=\"schema.prisma\"\n * datasource db {\n * provider = \"postgresql\"\n * url = env(\"DATABASE_URL\")\n * shadowDatabaseUrl = env(\"SHADOW_DATABASE_URL\") // Only needed when using a cloud provider that doesn't support the creation of new databases, like Heroku. Learn more: https://pris.ly/d/migrate-shadow\n * }\n *\n * generator client {\n * provider = \"prisma-client-js\"\n * previewFeatures = [\"referentialActions\"] // You won't need this in Prisma 3.X or higher.\n * }\n *\n * model Account {\n * id String @id @default(cuid())\n * userId String\n * type String\n * provider String\n * providerAccountId String\n * refresh_token String? @db.Text\n * access_token String? @db.Text\n * expires_at Int?\n * token_type String?\n * scope String?\n * id_token String? @db.Text\n * session_state String?\n *\n * user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n *\n * @@unique([provider, providerAccountId])\n * }\n *\n * model Session {\n * id String @id @default(cuid())\n * sessionToken String @unique\n * userId String\n * expires DateTime\n * user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n * }\n *\n * model User {\n * id String @id @default(cuid())\n * name String?\n * email String? @unique\n * emailVerified DateTime?\n * image String?\n * accounts Account[]\n * sessions Session[]\n * }\n *\n * model VerificationToken {\n * identifier String\n * token String @unique\n * expires DateTime\n *\n * @@unique([identifier, token])\n * }\n * ```\n *\n * :::note\n * When using the MySQL connector for Prisma, the [Prisma `String` type](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string) gets mapped to `varchar(191)` which may not be long enough to store fields such as `id_token` in the `Account` model. This can be avoided by explicitly using the `Text` type with `@db.Text`.\n * :::\n *\n *\n * ### Create the Prisma schema with `prisma migrate`\n *\n * This will create an SQL migration file and execute it:\n *\n * ```\n * npx prisma migrate dev\n * ```\n *\n * Note that you will need to specify your database connection string in the environment variable `DATABASE_URL`. You can do this by setting it in a `.env` file at the root of your project.\n *\n * To learn more about [Prisma Migrate](https://www.prisma.io/migrate), check out the [Migrate docs](https://www.prisma.io/docs/concepts/components/prisma-migrate).\n *\n * ### Generating the Prisma Client\n *\n * Once you have saved your schema, use the Prisma CLI to generate the Prisma Client:\n *\n * ```\n * npx prisma generate\n * ```\n *\n * To configure your database to use the new schema (i.e. create tables and columns) use the `prisma migrate` command:\n *\n * ```\n * npx prisma migrate dev\n * ```\n *\n * ### MongoDB support\n *\n * Prisma supports MongoDB, and so does Auth.js. Following the instructions of the [Prisma documentation](https://www.prisma.io/docs/concepts/database-connectors/mongodb) on the MongoDB connector, things you have to change are:\n *\n * 1. Make sure that the id fields are mapped correctly\n *\n * ```prisma\n * id String @id @default(auto()) @map(\"_id\") @db.ObjectId\n * ```\n *\n * 2. The Native database type attribute to `@db.String` from `@db.Text` and userId to `@db.ObjectId`.\n *\n * ```prisma\n * user_id String @db.ObjectId\n * refresh_token String? @db.String\n * access_token String? @db.String\n * id_token String? @db.String\n * ```\n *\n * Everything else should be the same.\n *\n * ### Naming Conventions\n *\n * If mixed snake_case and camelCase column names is an issue for you and/or your underlying database system, we recommend using Prisma's `@map()`([see the documentation here](https://www.prisma.io/docs/concepts/components/prisma-schema/names-in-underlying-database)) feature to change the field names. This won't affect Auth.js, but will allow you to customize the column names to whichever naming convention you wish.\n *\n * For example, moving to `snake_case` and plural table names.\n *\n * ```json title=\"schema.prisma\"\n * model Account {\n * id String @id @default(cuid())\n * userId String @map(\"user_id\")\n * type String\n * provider String\n * providerAccountId String @map(\"provider_account_id\")\n * refresh_token String? @db.Text\n * access_token String? @db.Text\n * expires_at Int?\n * token_type String?\n * scope String?\n * id_token String? @db.Text\n * session_state String?\n *\n * user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n *\n * @@unique([provider, providerAccountId])\n * @@map(\"accounts\")\n * }\n *\n * model Session {\n * id String @id @default(cuid())\n * sessionToken String @unique @map(\"session_token\")\n * userId String @map(\"user_id\")\n * expires DateTime\n * user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n *\n * @@map(\"sessions\")\n * }\n *\n * model User {\n * id String @id @default(cuid())\n * name String?\n * email String? @unique\n * emailVerified DateTime? @map(\"email_verified\")\n * image String?\n * accounts Account[]\n * sessions Session[]\n * authenticators Authenticator[]\n *\n * @@map(\"users\")\n * }\n *\n * model VerificationToken {\n * identifier String\n * token String @unique\n * expires DateTime\n *\n * @@unique([identifier, token])\n * @@map(\"verificationtokens\")\n * }\n *\n * model Authenticator {\n * id String @id @default(cuid())\n * credentialID String @unique\n * userId String\n * providerAccountId String\n * credentialPublicKey String\n * counter Int\n * credentialDeviceType String\n * credentialBackedUp Boolean\n * transports String?\n *\n * user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n * }\n * ```\n *\n **/\nexport function PrismaAdapter(prisma) {\n const p = prisma;\n return {\n // We need to let Prisma generate the ID because our default UUID is incompatible with MongoDB\n createUser: ({ id: _id, ...data }) => {\n return p.user.create({ data });\n },\n getUser: (id) => p.user.findUnique({ where: { id } }),\n getUserByEmail: (email) => p.user.findUnique({ where: { email } }),\n async getUserByAccount(provider_providerAccountId) {\n const account = await p.account.findUnique({\n where: { provider_providerAccountId },\n select: { user: true },\n });\n return account?.user ?? null;\n },\n updateUser: ({ id, ...data }) => p.user.update({ where: { id }, data }),\n deleteUser: (id) => p.user.delete({ where: { id } }),\n linkAccount: (data) => p.account.create({ data }),\n unlinkAccount: (provider_providerAccountId) => p.account.delete({\n where: { provider_providerAccountId },\n }),\n async getSessionAndUser(sessionToken) {\n const userAndSession = await p.session.findUnique({\n where: { sessionToken },\n include: { user: true },\n });\n if (!userAndSession)\n return null;\n const { user, ...session } = userAndSession;\n return { user, session };\n },\n createSession: (data) => p.session.create({ data }),\n updateSession: (data) => p.session.update({ where: { sessionToken: data.sessionToken }, data }),\n deleteSession: (sessionToken) => p.session.delete({ where: { sessionToken } }),\n async createVerificationToken(data) {\n const verificationToken = await p.verificationToken.create({ data });\n // @ts-expect-errors // MongoDB needs an ID, but we don't\n if (verificationToken.id)\n delete verificationToken.id;\n return verificationToken;\n },\n async useVerificationToken(identifier_token) {\n try {\n const verificationToken = await p.verificationToken.delete({\n where: { identifier_token },\n });\n // @ts-expect-errors // MongoDB needs an ID, but we don't\n if (verificationToken.id)\n delete verificationToken.id;\n return verificationToken;\n }\n catch (error) {\n // If token already used/deleted, just return null\n // https://www.prisma.io/docs/reference/api-reference/error-reference#p2025\n if (error.code === \"P2025\")\n return null;\n throw error;\n }\n },\n async getAccount(providerAccountId, provider) {\n return p.account.findFirst({\n where: { providerAccountId, provider },\n });\n },\n async createAuthenticator(authenticator) {\n return p.authenticator\n .create({\n data: authenticator,\n })\n .then(fromDBAuthenticator);\n },\n async getAuthenticator(credentialID) {\n const authenticator = await p.authenticator.findUnique({\n where: { credentialID },\n });\n return authenticator ? fromDBAuthenticator(authenticator) : null;\n },\n async listAuthenticatorsByUserId(userId) {\n const authenticators = await p.authenticator.findMany({\n where: { userId },\n });\n return authenticators.map(fromDBAuthenticator);\n },\n async updateAuthenticatorCounter(credentialID, counter) {\n return p.authenticator\n .update({\n where: { credentialID: credentialID },\n data: { counter },\n })\n .then(fromDBAuthenticator);\n },\n };\n}\nfunction fromDBAuthenticator(authenticator) {\n const { transports, id, user, ...other } = authenticator;\n return {\n ...other,\n transports: transports || undefined,\n };\n}\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (process.env.NODE_ENV !== \"production\") {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\nexport {\n createSelector,\n createSelectorCreator,\n createStructuredSelector,\n lruMemoize,\n referenceEqualityCheck,\n setGlobalDevModeChecks,\n autotrackMemoize as unstable_autotrackMemoize,\n weakMapMemoize\n};\n//# sourceMappingURL=reselect.mjs.map","// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n const middleware = ({ dispatch, getState }) => (next) => (action) => {\n if (typeof action === \"function\") {\n return action(dispatch, getState, extraArgument);\n }\n return next(action);\n };\n return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\nexport {\n thunk,\n withExtraArgument\n};\n","// src/index.ts\nexport * from \"redux\";\nimport { produce, current as current3, freeze, original as original2, isDraft as isDraft5 } from \"immer\";\nimport { createSelector, createSelectorCreator as createSelectorCreator2, lruMemoize, weakMapMemoize as weakMapMemoize2 } from \"reselect\";\n\n// src/createDraftSafeSelector.ts\nimport { current, isDraft } from \"immer\";\nimport { createSelectorCreator, weakMapMemoize } from \"reselect\";\nvar createDraftSafeSelectorCreator = (...args) => {\n const createSelector2 = createSelectorCreator(...args);\n const createDraftSafeSelector2 = Object.assign((...args2) => {\n const selector = createSelector2(...args2);\n const wrappedSelector = (value, ...rest) => selector(isDraft(value) ? current(value) : value, ...rest);\n Object.assign(wrappedSelector, selector);\n return wrappedSelector;\n }, {\n withTypes: () => createDraftSafeSelector2\n });\n return createDraftSafeSelector2;\n};\nvar createDraftSafeSelector = createDraftSafeSelectorCreator(weakMapMemoize);\n\n// src/configureStore.ts\nimport { applyMiddleware, createStore, compose as compose2, combineReducers, isPlainObject as isPlainObject2 } from \"redux\";\n\n// src/devtoolsExtension.ts\nimport { compose } from \"redux\";\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function() {\n if (arguments.length === 0)\n return void 0;\n if (typeof arguments[0] === \"object\")\n return compose;\n return compose.apply(null, arguments);\n};\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function() {\n return function(noop3) {\n return noop3;\n };\n};\n\n// src/getDefaultMiddleware.ts\nimport { thunk as thunkMiddleware, withExtraArgument } from \"redux-thunk\";\n\n// src/createAction.ts\nimport { isAction } from \"redux\";\n\n// src/tsHelpers.ts\nvar hasMatchFunction = (v) => {\n return v && typeof v.match === \"function\";\n};\n\n// src/createAction.ts\nfunction createAction(type, prepareAction) {\n function actionCreator(...args) {\n if (prepareAction) {\n let prepared = prepareAction(...args);\n if (!prepared) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"prepareAction did not return an object\");\n }\n return {\n type,\n payload: prepared.payload,\n ...\"meta\" in prepared && {\n meta: prepared.meta\n },\n ...\"error\" in prepared && {\n error: prepared.error\n }\n };\n }\n return {\n type,\n payload: args[0]\n };\n }\n actionCreator.toString = () => `${type}`;\n actionCreator.type = type;\n actionCreator.match = (action) => isAction(action) && action.type === type;\n return actionCreator;\n}\nfunction isActionCreator(action) {\n return typeof action === \"function\" && \"type\" in action && // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n hasMatchFunction(action);\n}\nfunction isFSA(action) {\n return isAction(action) && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key) {\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\n}\n\n// src/actionCreatorInvariantMiddleware.ts\nfunction getMessage(type) {\n const splitType = type ? `${type}`.split(\"/\") : [];\n const actionName = splitType[splitType.length - 1] || \"actionCreator\";\n return `Detected an action creator with type \"${type || \"unknown\"}\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \\`dispatch(${actionName}())\\` instead of \\`dispatch(${actionName})\\`. This is necessary even if the action has no payload.`;\n}\nfunction createActionCreatorInvariantMiddleware(options = {}) {\n if (process.env.NODE_ENV === \"production\") {\n return () => (next) => (action) => next(action);\n }\n const {\n isActionCreator: isActionCreator2 = isActionCreator\n } = options;\n return () => (next) => (action) => {\n if (isActionCreator2(action)) {\n console.warn(getMessage(action.type));\n }\n return next(action);\n };\n}\n\n// src/utils.ts\nimport { produce as createNextState, isDraftable } from \"immer\";\nfunction getTimeMeasureUtils(maxDelay, fnName) {\n let elapsed = 0;\n return {\n measureTime(fn) {\n const started = Date.now();\n try {\n return fn();\n } finally {\n const finished = Date.now();\n elapsed += finished - started;\n }\n },\n warnIfExceeded() {\n if (elapsed > maxDelay) {\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`);\n }\n }\n };\n}\nfunction find(iterable, comparator) {\n for (const entry of iterable) {\n if (comparator(entry)) {\n return entry;\n }\n }\n return void 0;\n}\nvar Tuple = class _Tuple extends Array {\n constructor(...items) {\n super(...items);\n Object.setPrototypeOf(this, _Tuple.prototype);\n }\n static get [Symbol.species]() {\n return _Tuple;\n }\n concat(...arr) {\n return super.concat.apply(this, arr);\n }\n prepend(...arr) {\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new _Tuple(...arr[0].concat(this));\n }\n return new _Tuple(...arr.concat(this));\n }\n};\nfunction freezeDraftable(val) {\n return isDraftable(val) ? createNextState(val, () => {\n }) : val;\n}\nfunction emplace(map, key, handler) {\n if (map.has(key)) {\n let value = map.get(key);\n if (handler.update) {\n value = handler.update(value, key, map);\n map.set(key, value);\n }\n return value;\n }\n if (!handler.insert)\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"No insert provided for key not already in map\");\n const inserted = handler.insert(key, map);\n map.set(key, inserted);\n return inserted;\n}\n\n// src/immutableStateInvariantMiddleware.ts\nfunction isImmutableDefault(value) {\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\n}\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\n const trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\n return {\n detectMutations() {\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\n }\n };\n}\nfunction trackProperties(isImmutable, ignorePaths = [], obj, path = \"\", checkedObjects = /* @__PURE__ */ new Set()) {\n const tracked = {\n value: obj\n };\n if (!isImmutable(obj) && !checkedObjects.has(obj)) {\n checkedObjects.add(obj);\n tracked.children = {};\n for (const key in obj) {\n const childPath = path ? path + \".\" + key : key;\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\n continue;\n }\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\n }\n }\n return tracked;\n}\nfunction detectMutations(isImmutable, ignoredPaths = [], trackedProperty, obj, sameParentRef = false, path = \"\") {\n const prevObj = trackedProperty ? trackedProperty.value : void 0;\n const sameRef = prevObj === obj;\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\n return {\n wasMutated: true,\n path\n };\n }\n if (isImmutable(prevObj) || isImmutable(obj)) {\n return {\n wasMutated: false\n };\n }\n const keysToDetect = {};\n for (let key in trackedProperty.children) {\n keysToDetect[key] = true;\n }\n for (let key in obj) {\n keysToDetect[key] = true;\n }\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (let key in keysToDetect) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n const result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\n if (result.wasMutated) {\n return result;\n }\n }\n return {\n wasMutated: false\n };\n}\nfunction createImmutableStateInvariantMiddleware(options = {}) {\n if (process.env.NODE_ENV === \"production\") {\n return () => (next) => (action) => next(action);\n } else {\n let stringify2 = function(obj, serializer, indent, decycler) {\n return JSON.stringify(obj, getSerialize2(serializer, decycler), indent);\n }, getSerialize2 = function(serializer, decycler) {\n let stack = [], keys = [];\n if (!decycler)\n decycler = function(_, value) {\n if (stack[0] === value)\n return \"[Circular ~]\";\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n };\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value))\n value = decycler.call(this, key, value);\n } else\n stack.push(value);\n return serializer == null ? value : serializer.call(this, key, value);\n };\n };\n var stringify = stringify2, getSerialize = getSerialize2;\n let {\n isImmutable = isImmutableDefault,\n ignoredPaths,\n warnAfter = 32\n } = options;\n const track = trackForMutations.bind(null, isImmutable, ignoredPaths);\n return ({\n getState\n }) => {\n let state = getState();\n let tracker = track(state);\n let result;\n return (next) => (action) => {\n const measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\n measureUtils.measureTime(() => {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n if (result.wasMutated) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(19) : `A state mutation was detected between dispatches, in the path '${result.path || \"\"}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n }\n });\n const dispatchedAction = next(action);\n measureUtils.measureTime(() => {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n if (result.wasMutated) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(20) : `A state mutation was detected inside a dispatch, in the path: ${result.path || \"\"}. Take a look at the reducer(s) handling the action ${stringify2(action)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n }\n });\n measureUtils.warnIfExceeded();\n return dispatchedAction;\n };\n };\n }\n}\n\n// src/serializableStateInvariantMiddleware.ts\nimport { isAction as isAction2, isPlainObject } from \"redux\";\nfunction isPlain(val) {\n const type = typeof val;\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\n}\nfunction findNonSerializableValue(value, path = \"\", isSerializable = isPlain, getEntries, ignoredPaths = [], cache) {\n let foundNestedSerializable;\n if (!isSerializable(value)) {\n return {\n keyPath: path || \"\",\n value\n };\n }\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (cache?.has(value))\n return false;\n const entries = getEntries != null ? getEntries(value) : Object.entries(value);\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (const [key, nestedValue] of entries) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n if (!isSerializable(nestedValue)) {\n return {\n keyPath: nestedPath,\n value: nestedValue\n };\n }\n if (typeof nestedValue === \"object\") {\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\n if (foundNestedSerializable) {\n return foundNestedSerializable;\n }\n }\n }\n if (cache && isNestedFrozen(value))\n cache.add(value);\n return false;\n}\nfunction isNestedFrozen(value) {\n if (!Object.isFrozen(value))\n return false;\n for (const nestedValue of Object.values(value)) {\n if (typeof nestedValue !== \"object\" || nestedValue === null)\n continue;\n if (!isNestedFrozen(nestedValue))\n return false;\n }\n return true;\n}\nfunction createSerializableStateInvariantMiddleware(options = {}) {\n if (process.env.NODE_ENV === \"production\") {\n return () => (next) => (action) => next(action);\n } else {\n const {\n isSerializable = isPlain,\n getEntries,\n ignoredActions = [],\n ignoredActionPaths = [\"meta.arg\", \"meta.baseQueryMeta\"],\n ignoredPaths = [],\n warnAfter = 32,\n ignoreState = false,\n ignoreActions = false,\n disableCache = false\n } = options;\n const cache = !disableCache && WeakSet ? /* @__PURE__ */ new WeakSet() : void 0;\n return (storeAPI) => (next) => (action) => {\n if (!isAction2(action)) {\n return next(action);\n }\n const result = next(action);\n const measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\n measureUtils.measureTime(() => {\n const foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\n if (foundActionNonSerializableValue) {\n const {\n keyPath,\n value\n } = foundActionNonSerializableValue;\n console.error(`A non-serializable value was detected in an action, in the path: \\`${keyPath}\\`. Value:`, value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\n }\n });\n }\n if (!ignoreState) {\n measureUtils.measureTime(() => {\n const state = storeAPI.getState();\n const foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\n if (foundStateNonSerializableValue) {\n const {\n keyPath,\n value\n } = foundStateNonSerializableValue;\n console.error(`A non-serializable value was detected in the state, in the path: \\`${keyPath}\\`. Value:`, value, `\nTake a look at the reducer(s) handling this action type: ${action.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`);\n }\n });\n measureUtils.warnIfExceeded();\n }\n return result;\n };\n }\n}\n\n// src/getDefaultMiddleware.ts\nfunction isBoolean(x) {\n return typeof x === \"boolean\";\n}\nvar buildGetDefaultMiddleware = () => function getDefaultMiddleware(options) {\n const {\n thunk = true,\n immutableCheck = true,\n serializableCheck = true,\n actionCreatorCheck = true\n } = options ?? {};\n let middlewareArray = new Tuple();\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(thunkMiddleware);\n } else {\n middlewareArray.push(withExtraArgument(thunk.extraArgument));\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (immutableCheck) {\n let immutableOptions = {};\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n }\n if (serializableCheck) {\n let serializableOptions = {};\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n if (actionCreatorCheck) {\n let actionCreatorOptions = {};\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n return middlewareArray;\n};\n\n// src/autoBatchEnhancer.ts\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\nvar prepareAutoBatched = () => (payload) => ({\n payload,\n meta: {\n [SHOULD_AUTOBATCH]: true\n }\n});\nvar createQueueWithTimer = (timeout) => {\n return (notify) => {\n setTimeout(notify, timeout);\n };\n};\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\nvar autoBatchEnhancer = (options = {\n type: \"raf\"\n}) => (next) => (...args) => {\n const store = next(...args);\n let notifying = true;\n let shouldNotifyAtEndOfTick = false;\n let notificationQueued = false;\n const listeners = /* @__PURE__ */ new Set();\n const queueCallback = options.type === \"tick\" ? queueMicrotask : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\n const notifyListeners = () => {\n notificationQueued = false;\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach((l) => l());\n }\n };\n return Object.assign({}, store, {\n // Override the base `store.subscribe` method to keep original listeners\n // from running if we're delaying notifications\n subscribe(listener2) {\n const wrappedListener = () => notifying && listener2();\n const unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener2);\n return () => {\n unsubscribe();\n listeners.delete(listener2);\n };\n },\n // Override the base `store.dispatch` method so that we can check actions\n // for the `shouldAutoBatch` flag and determine if batching is active\n dispatch(action) {\n try {\n notifying = !action?.meta?.[SHOULD_AUTOBATCH];\n shouldNotifyAtEndOfTick = !notifying;\n if (shouldNotifyAtEndOfTick) {\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n }\n return store.dispatch(action);\n } finally {\n notifying = true;\n }\n }\n });\n};\n\n// src/getDefaultEnhancers.ts\nvar buildGetDefaultEnhancers = (middlewareEnhancer) => function getDefaultEnhancers(options) {\n const {\n autoBatch = true\n } = options ?? {};\n let enhancerArray = new Tuple(middlewareEnhancer);\n if (autoBatch) {\n enhancerArray.push(autoBatchEnhancer(typeof autoBatch === \"object\" ? autoBatch : void 0));\n }\n return enhancerArray;\n};\n\n// src/configureStore.ts\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\nfunction configureStore(options) {\n const getDefaultMiddleware = buildGetDefaultMiddleware();\n const {\n reducer = void 0,\n middleware,\n devTools = true,\n preloadedState = void 0,\n enhancers = void 0\n } = options || {};\n let rootReducer;\n if (typeof reducer === \"function\") {\n rootReducer = reducer;\n } else if (isPlainObject2(reducer)) {\n rootReducer = combineReducers(reducer);\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers\");\n }\n if (!IS_PRODUCTION && middleware && typeof middleware !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"`middleware` field must be a callback\");\n }\n let finalMiddleware;\n if (typeof middleware === \"function\") {\n finalMiddleware = middleware(getDefaultMiddleware);\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"when using a middleware builder function, an array of middleware must be returned\");\n }\n } else {\n finalMiddleware = getDefaultMiddleware();\n }\n if (!IS_PRODUCTION && finalMiddleware.some((item) => typeof item !== \"function\")) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"each middleware provided to configureStore must be a function\");\n }\n let finalCompose = compose2;\n if (devTools) {\n finalCompose = composeWithDevTools({\n // Enable capture of stack traces for dispatched Redux actions\n trace: !IS_PRODUCTION,\n ...typeof devTools === \"object\" && devTools\n });\n }\n const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n const getDefaultEnhancers = buildGetDefaultEnhancers(middlewareEnhancer);\n if (!IS_PRODUCTION && enhancers && typeof enhancers !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"`enhancers` field must be a callback\");\n }\n let storeEnhancers = typeof enhancers === \"function\" ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n if (!IS_PRODUCTION && !Array.isArray(storeEnhancers)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"`enhancers` callback must return an array\");\n }\n if (!IS_PRODUCTION && storeEnhancers.some((item) => typeof item !== \"function\")) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"each enhancer provided to configureStore must be a function\");\n }\n if (!IS_PRODUCTION && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n console.error(\"middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`\");\n }\n const composedEnhancer = finalCompose(...storeEnhancers);\n return createStore(rootReducer, preloadedState, composedEnhancer);\n}\n\n// src/createReducer.ts\nimport { produce as createNextState2, isDraft as isDraft2, isDraftable as isDraftable2 } from \"immer\";\n\n// src/mapBuilders.ts\nfunction executeReducerBuilderCallback(builderCallback) {\n const actionsMap = {};\n const actionMatchers = [];\n let defaultCaseReducer;\n const builder = {\n addCase(typeOrActionCreator, reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (actionMatchers.length > 0) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(26) : \"`builder.addCase` should only be called before calling `builder.addMatcher`\");\n }\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(27) : \"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n const type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(28) : \"`builder.addCase` cannot be called with an empty action type\");\n }\n if (type in actionsMap) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(29) : `\\`builder.addCase\\` cannot be called with two reducers for the same action type '${type}'`);\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addMatcher(matcher, reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(30) : \"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n actionMatchers.push({\n matcher,\n reducer\n });\n return builder;\n },\n addDefaultCase(reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(31) : \"`builder.addDefaultCase` can only be called once\");\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n }\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}\n\n// src/createReducer.ts\nfunction isStateFunction(x) {\n return typeof x === \"function\";\n}\nfunction createReducer(initialState, mapOrBuilderCallback) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof mapOrBuilderCallback === \"object\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n }\n }\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n let getInitialState;\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n } else {\n const frozenInitialState = freezeDraftable(initialState);\n getInitialState = () => frozenInitialState;\n }\n function reducer(state = getInitialState(), action) {\n let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n matcher\n }) => matcher(action)).map(({\n reducer: reducer2\n }) => reducer2)];\n if (caseReducers.filter((cr) => !!cr).length === 0) {\n caseReducers = [finalDefaultCaseReducer];\n }\n return caseReducers.reduce((previousState, caseReducer) => {\n if (caseReducer) {\n if (isDraft2(previousState)) {\n const draft = previousState;\n const result = caseReducer(draft, action);\n if (result === void 0) {\n return previousState;\n }\n return result;\n } else if (!isDraftable2(previousState)) {\n const result = caseReducer(previousState, action);\n if (result === void 0) {\n if (previousState === null) {\n return previousState;\n }\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"A case reducer on a non-draftable value must not return undefined\");\n }\n return result;\n } else {\n return createNextState2(previousState, (draft) => {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state);\n }\n reducer.getInitialState = getInitialState;\n return reducer;\n}\n\n// src/nanoid.ts\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\nvar nanoid = (size = 21) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\n\n// src/matchers.ts\nvar matches = (matcher, action) => {\n if (hasMatchFunction(matcher)) {\n return matcher.match(action);\n } else {\n return matcher(action);\n }\n};\nfunction isAnyOf(...matchers) {\n return (action) => {\n return matchers.some((matcher) => matches(matcher, action));\n };\n}\nfunction isAllOf(...matchers) {\n return (action) => {\n return matchers.every((matcher) => matches(matcher, action));\n };\n}\nfunction hasExpectedRequestMetadata(action, validStatus) {\n if (!action || !action.meta)\n return false;\n const hasValidRequestId = typeof action.meta.requestId === \"string\";\n const hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a) {\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\n}\nfunction isPending(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"pending\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isPending()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.pending));\n}\nfunction isRejected(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"rejected\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejected()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.rejected));\n}\nfunction isRejectedWithValue(...asyncThunks) {\n const hasFlag = (action) => {\n return action && action.meta && action.meta.rejectedWithValue;\n };\n if (asyncThunks.length === 0) {\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejectedWithValue()(asyncThunks[0]);\n }\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n}\nfunction isFulfilled(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"fulfilled\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isFulfilled()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.fulfilled));\n}\nfunction isAsyncThunkAction(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isAsyncThunkAction()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.flatMap((asyncThunk) => [asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled]));\n}\n\n// src/createAsyncThunk.ts\nvar commonProperties = [\"name\", \"message\", \"stack\", \"code\"];\nvar RejectWithValue = class {\n constructor(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n _type;\n};\nvar FulfillWithMeta = class {\n constructor(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n _type;\n};\nvar miniSerializeError = (value) => {\n if (typeof value === \"object\" && value !== null) {\n const simpleError = {};\n for (const property of commonProperties) {\n if (typeof value[property] === \"string\") {\n simpleError[property] = value[property];\n }\n }\n return simpleError;\n }\n return {\n message: String(value)\n };\n};\nvar createAsyncThunk = /* @__PURE__ */ (() => {\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\n const fulfilled = createAction(typePrefix + \"/fulfilled\", (payload, requestId, arg, meta) => ({\n payload,\n meta: {\n ...meta || {},\n arg,\n requestId,\n requestStatus: \"fulfilled\"\n }\n }));\n const pending = createAction(typePrefix + \"/pending\", (requestId, arg, meta) => ({\n payload: void 0,\n meta: {\n ...meta || {},\n arg,\n requestId,\n requestStatus: \"pending\"\n }\n }));\n const rejected = createAction(typePrefix + \"/rejected\", (error, requestId, arg, payload, meta) => ({\n payload,\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\n meta: {\n ...meta || {},\n arg,\n requestId,\n rejectedWithValue: !!payload,\n requestStatus: \"rejected\",\n aborted: error?.name === \"AbortError\",\n condition: error?.name === \"ConditionError\"\n }\n }));\n function actionCreator(arg) {\n return (dispatch, getState, extra) => {\n const requestId = options?.idGenerator ? options.idGenerator(arg) : nanoid();\n const abortController = new AbortController();\n let abortHandler;\n let abortReason;\n function abort(reason) {\n abortReason = reason;\n abortController.abort();\n }\n const promise = async function() {\n let finalAction;\n try {\n let conditionResult = options?.condition?.(arg, {\n getState,\n extra\n });\n if (isThenable(conditionResult)) {\n conditionResult = await conditionResult;\n }\n if (conditionResult === false || abortController.signal.aborted) {\n throw {\n name: \"ConditionError\",\n message: \"Aborted due to condition callback returning false.\"\n };\n }\n const abortedPromise = new Promise((_, reject) => {\n abortHandler = () => {\n reject({\n name: \"AbortError\",\n message: abortReason || \"Aborted\"\n });\n };\n abortController.signal.addEventListener(\"abort\", abortHandler);\n });\n dispatch(pending(requestId, arg, options?.getPendingMeta?.({\n requestId,\n arg\n }, {\n getState,\n extra\n })));\n finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n dispatch,\n getState,\n extra,\n requestId,\n signal: abortController.signal,\n abort,\n rejectWithValue: (value, meta) => {\n return new RejectWithValue(value, meta);\n },\n fulfillWithValue: (value, meta) => {\n return new FulfillWithMeta(value, meta);\n }\n })).then((result) => {\n if (result instanceof RejectWithValue) {\n throw result;\n }\n if (result instanceof FulfillWithMeta) {\n return fulfilled(result.payload, requestId, arg, result.meta);\n }\n return fulfilled(result, requestId, arg);\n })]);\n } catch (err) {\n finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg, err.payload, err.meta) : rejected(err, requestId, arg);\n } finally {\n if (abortHandler) {\n abortController.signal.removeEventListener(\"abort\", abortHandler);\n }\n }\n const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\n if (!skipDispatch) {\n dispatch(finalAction);\n }\n return finalAction;\n }();\n return Object.assign(promise, {\n abort,\n requestId,\n arg,\n unwrap() {\n return promise.then(unwrapResult);\n }\n });\n };\n }\n return Object.assign(actionCreator, {\n pending,\n rejected,\n fulfilled,\n settled: isAnyOf(rejected, fulfilled),\n typePrefix\n });\n }\n createAsyncThunk2.withTypes = () => createAsyncThunk2;\n return createAsyncThunk2;\n})();\nfunction unwrapResult(action) {\n if (action.meta && action.meta.rejectedWithValue) {\n throw action.payload;\n }\n if (action.error) {\n throw action.error;\n }\n return action.payload;\n}\nfunction isThenable(value) {\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\n}\n\n// src/createSlice.ts\nvar asyncThunkSymbol = /* @__PURE__ */ Symbol.for(\"rtk-slice-createasyncthunk\");\nvar asyncThunkCreator = {\n [asyncThunkSymbol]: createAsyncThunk\n};\nvar ReducerType = /* @__PURE__ */ ((ReducerType2) => {\n ReducerType2[\"reducer\"] = \"reducer\";\n ReducerType2[\"reducerWithPrepare\"] = \"reducerWithPrepare\";\n ReducerType2[\"asyncThunk\"] = \"asyncThunk\";\n return ReducerType2;\n})(ReducerType || {});\nfunction getType(slice, actionKey) {\n return `${slice}/${actionKey}`;\n}\nfunction buildCreateSlice({\n creators\n} = {}) {\n const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n return function createSlice2(options) {\n const {\n name,\n reducerPath = name\n } = options;\n if (!name) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"`name` is a required option for createSlice\");\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n if (options.initialState === void 0) {\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\n }\n }\n const reducers = (typeof options.reducers === \"function\" ? options.reducers(buildReducerCreators()) : options.reducers) || {};\n const reducerNames = Object.keys(reducers);\n const context = {\n sliceCaseReducersByName: {},\n sliceCaseReducersByType: {},\n actionCreators: {},\n sliceMatchers: []\n };\n const contextMethods = {\n addCase(typeOrActionCreator, reducer2) {\n const type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"`context.addCase` cannot be called with an empty action type\");\n }\n if (type in context.sliceCaseReducersByType) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"`context.addCase` cannot be called with two reducers for the same action type: \" + type);\n }\n context.sliceCaseReducersByType[type] = reducer2;\n return contextMethods;\n },\n addMatcher(matcher, reducer2) {\n context.sliceMatchers.push({\n matcher,\n reducer: reducer2\n });\n return contextMethods;\n },\n exposeAction(name2, actionCreator) {\n context.actionCreators[name2] = actionCreator;\n return contextMethods;\n },\n exposeCaseReducer(name2, reducer2) {\n context.sliceCaseReducersByName[name2] = reducer2;\n return contextMethods;\n }\n };\n reducerNames.forEach((reducerName) => {\n const reducerDefinition = reducers[reducerName];\n const reducerDetails = {\n reducerName,\n type: getType(name, reducerName),\n createNotation: typeof options.reducers === \"function\"\n };\n if (isAsyncThunkSliceReducerDefinition(reducerDefinition)) {\n handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n } else {\n handleNormalReducerDefinition(reducerDetails, reducerDefinition, contextMethods);\n }\n });\n function buildReducer() {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options.extraReducers === \"object\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = void 0] = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n const finalCaseReducers = {\n ...extraReducers,\n ...context.sliceCaseReducersByType\n };\n return createReducer(options.initialState, (builder) => {\n for (let key in finalCaseReducers) {\n builder.addCase(key, finalCaseReducers[key]);\n }\n for (let sM of context.sliceMatchers) {\n builder.addMatcher(sM.matcher, sM.reducer);\n }\n for (let m of actionMatchers) {\n builder.addMatcher(m.matcher, m.reducer);\n }\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n const selectSelf = (state) => state;\n const injectedSelectorCache = /* @__PURE__ */ new Map();\n let _reducer;\n function reducer(state, action) {\n if (!_reducer)\n _reducer = buildReducer();\n return _reducer(state, action);\n }\n function getInitialState() {\n if (!_reducer)\n _reducer = buildReducer();\n return _reducer.getInitialState();\n }\n function makeSelectorProps(reducerPath2, injected = false) {\n function selectSlice(state) {\n let sliceState = state[reducerPath2];\n if (typeof sliceState === \"undefined\") {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== \"production\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"selectSlice returned undefined for an uninjected slice reducer\");\n }\n }\n return sliceState;\n }\n function getSelectors(selectState = selectSelf) {\n const selectorCache = emplace(injectedSelectorCache, injected, {\n insert: () => /* @__PURE__ */ new WeakMap()\n });\n return emplace(selectorCache, selectState, {\n insert: () => {\n const map = {};\n for (const [name2, selector] of Object.entries(options.selectors ?? {})) {\n map[name2] = wrapSelector(selector, selectState, getInitialState, injected);\n }\n return map;\n }\n });\n }\n return {\n reducerPath: reducerPath2,\n getSelectors,\n get selectors() {\n return getSelectors(selectSlice);\n },\n selectSlice\n };\n }\n const slice = {\n name,\n reducer,\n actions: context.actionCreators,\n caseReducers: context.sliceCaseReducersByName,\n getInitialState,\n ...makeSelectorProps(reducerPath),\n injectInto(injectable, {\n reducerPath: pathOpt,\n ...config\n } = {}) {\n const newReducerPath = pathOpt ?? reducerPath;\n injectable.inject({\n reducerPath: newReducerPath,\n reducer\n }, config);\n return {\n ...slice,\n ...makeSelectorProps(newReducerPath, true)\n };\n }\n };\n return slice;\n };\n}\nfunction wrapSelector(selector, selectState, getInitialState, injected) {\n function wrapper(rootState, ...args) {\n let sliceState = selectState(rootState);\n if (typeof sliceState === \"undefined\") {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== \"production\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"selectState returned undefined for an uninjected slice reducer\");\n }\n }\n return selector(sliceState, ...args);\n }\n wrapper.unwrapped = selector;\n return wrapper;\n}\nvar createSlice = /* @__PURE__ */ buildCreateSlice();\nfunction buildReducerCreators() {\n function asyncThunk(payloadCreator, config) {\n return {\n _reducerDefinitionType: \"asyncThunk\" /* asyncThunk */,\n payloadCreator,\n ...config\n };\n }\n asyncThunk.withTypes = () => asyncThunk;\n return {\n reducer(caseReducer) {\n return Object.assign({\n // hack so the wrapping function has the same name as the original\n // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n [caseReducer.name](...args) {\n return caseReducer(...args);\n }\n }[caseReducer.name], {\n _reducerDefinitionType: \"reducer\" /* reducer */\n });\n },\n preparedReducer(prepare, reducer) {\n return {\n _reducerDefinitionType: \"reducerWithPrepare\" /* reducerWithPrepare */,\n prepare,\n reducer\n };\n },\n asyncThunk\n };\n}\nfunction handleNormalReducerDefinition({\n type,\n reducerName,\n createNotation\n}, maybeReducerWithPrepare, context) {\n let caseReducer;\n let prepareCallback;\n if (\"reducer\" in maybeReducerWithPrepare) {\n if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : \"Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.\");\n }\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\nfunction isAsyncThunkSliceReducerDefinition(reducerDefinition) {\n return reducerDefinition._reducerDefinitionType === \"asyncThunk\" /* asyncThunk */;\n}\nfunction isCaseReducerWithPrepareDefinition(reducerDefinition) {\n return reducerDefinition._reducerDefinitionType === \"reducerWithPrepare\" /* reducerWithPrepare */;\n}\nfunction handleThunkCaseReducerDefinition({\n type,\n reducerName\n}, reducerDefinition, context, cAT) {\n if (!cAT) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(18) : \"Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.\");\n }\n const {\n payloadCreator,\n fulfilled,\n pending,\n rejected,\n settled,\n options\n } = reducerDefinition;\n const thunk = cAT(type, payloadCreator, options);\n context.exposeAction(reducerName, thunk);\n if (fulfilled) {\n context.addCase(thunk.fulfilled, fulfilled);\n }\n if (pending) {\n context.addCase(thunk.pending, pending);\n }\n if (rejected) {\n context.addCase(thunk.rejected, rejected);\n }\n if (settled) {\n context.addMatcher(thunk.settled, settled);\n }\n context.exposeCaseReducer(reducerName, {\n fulfilled: fulfilled || noop,\n pending: pending || noop,\n rejected: rejected || noop,\n settled: settled || noop\n });\n}\nfunction noop() {\n}\n\n// src/entities/entity_state.ts\nfunction getInitialEntityState() {\n return {\n ids: [],\n entities: {}\n };\n}\nfunction createInitialStateFactory(stateAdapter) {\n function getInitialState(additionalState = {}, entities) {\n const state = Object.assign(getInitialEntityState(), additionalState);\n return entities ? stateAdapter.setAll(state, entities) : state;\n }\n return {\n getInitialState\n };\n}\n\n// src/entities/state_selectors.ts\nfunction createSelectorsFactory() {\n function getSelectors(selectState, options = {}) {\n const {\n createSelector: createSelector2 = createDraftSafeSelector\n } = options;\n const selectIds = (state) => state.ids;\n const selectEntities = (state) => state.entities;\n const selectAll = createSelector2(selectIds, selectEntities, (ids, entities) => ids.map((id) => entities[id]));\n const selectId = (_, id) => id;\n const selectById = (entities, id) => entities[id];\n const selectTotal = createSelector2(selectIds, (ids) => ids.length);\n if (!selectState) {\n return {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n selectById: createSelector2(selectEntities, selectId, selectById)\n };\n }\n const selectGlobalizedEntities = createSelector2(selectState, selectEntities);\n return {\n selectIds: createSelector2(selectState, selectIds),\n selectEntities: selectGlobalizedEntities,\n selectAll: createSelector2(selectState, selectAll),\n selectTotal: createSelector2(selectState, selectTotal),\n selectById: createSelector2(selectGlobalizedEntities, selectId, selectById)\n };\n }\n return {\n getSelectors\n };\n}\n\n// src/entities/state_adapter.ts\nimport { produce as createNextState3, isDraft as isDraft3 } from \"immer\";\nvar isDraftTyped = isDraft3;\nfunction createSingleArgumentStateOperator(mutator) {\n const operator = createStateOperator((_, state) => mutator(state));\n return function operation(state) {\n return operator(state, void 0);\n };\n}\nfunction createStateOperator(mutator) {\n return function operation(state, arg) {\n function isPayloadActionArgument(arg2) {\n return isFSA(arg2);\n }\n const runMutator = (draft) => {\n if (isPayloadActionArgument(arg)) {\n mutator(arg.payload, draft);\n } else {\n mutator(arg, draft);\n }\n };\n if (isDraftTyped(state)) {\n runMutator(state);\n return state;\n }\n return createNextState3(state, runMutator);\n };\n}\n\n// src/entities/utils.ts\nimport { current as current2, isDraft as isDraft4 } from \"immer\";\nfunction selectIdValue(entity, selectId) {\n const key = selectId(entity);\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\n }\n return key;\n}\nfunction ensureEntitiesArray(entities) {\n if (!Array.isArray(entities)) {\n entities = Object.values(entities);\n }\n return entities;\n}\nfunction getCurrent(value) {\n return isDraft4(value) ? current2(value) : value;\n}\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\n newEntities = ensureEntitiesArray(newEntities);\n const existingIdsArray = getCurrent(state.ids);\n const existingIds = new Set(existingIdsArray);\n const added = [];\n const updated = [];\n for (const entity of newEntities) {\n const id = selectIdValue(entity, selectId);\n if (existingIds.has(id)) {\n updated.push({\n id,\n changes: entity\n });\n } else {\n added.push(entity);\n }\n }\n return [added, updated, existingIdsArray];\n}\n\n// src/entities/unsorted_state_adapter.ts\nfunction createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n }\n function addManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (const entity of newEntities) {\n addOneMutably(entity, state);\n }\n }\n function setOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (!(key in state.entities)) {\n state.ids.push(key);\n }\n ;\n state.entities[key] = entity;\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (const entity of newEntities) {\n setOneMutably(entity, state);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.ids = [];\n state.entities = {};\n addManyMutably(newEntities, state);\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keys, state) {\n let didMutate = false;\n keys.forEach((key) => {\n if (key in state.entities) {\n delete state.entities[key];\n didMutate = true;\n }\n });\n if (didMutate) {\n state.ids = state.ids.filter((id) => id in state.entities);\n }\n }\n function removeAllMutably(state) {\n Object.assign(state, {\n ids: [],\n entities: {}\n });\n }\n function takeNewKey(keys, update, state) {\n const original3 = state.entities[update.id];\n if (original3 === void 0) {\n return false;\n }\n const updated = Object.assign({}, original3, update.changes);\n const newKey = selectIdValue(updated, selectId);\n const hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n ;\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n const newKeys = {};\n const updatesPerEntity = {};\n updates.forEach((update) => {\n if (update.id in state.entities) {\n updatesPerEntity[update.id] = {\n id: update.id,\n // Spreads ignore falsy values, so this works even if there isn't\n // an existing update already at this key\n changes: {\n ...updatesPerEntity[update.id]?.changes,\n ...update.changes\n }\n };\n }\n });\n updates = Object.values(updatesPerEntity);\n const didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n const didMutateIds = updates.filter((update) => takeNewKey(newKeys, update, state)).length > 0;\n if (didMutateIds) {\n state.ids = Object.values(state.entities).map((e) => selectIdValue(e, selectId));\n }\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n const [added, updated] = splitAddedUpdatedEntities(newEntities, selectId, state);\n updateManyMutably(updated, state);\n addManyMutably(added, state);\n }\n return {\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably)\n };\n}\n\n// src/entities/sorted_state_adapter.ts\nfunction findInsertIndex(sortedItems, item, comparisonFunction) {\n let lowIndex = 0;\n let highIndex = sortedItems.length;\n while (lowIndex < highIndex) {\n let middleIndex = lowIndex + highIndex >>> 1;\n const currentItem = sortedItems[middleIndex];\n const res = comparisonFunction(item, currentItem);\n if (res >= 0) {\n lowIndex = middleIndex + 1;\n } else {\n highIndex = middleIndex;\n }\n }\n return lowIndex;\n}\nfunction insert(sortedItems, item, comparisonFunction) {\n const insertAtIndex = findInsertIndex(sortedItems, item, comparisonFunction);\n sortedItems.splice(insertAtIndex, 0, item);\n return sortedItems;\n}\nfunction createSortedStateAdapter(selectId, comparer) {\n const {\n removeOne,\n removeMany,\n removeAll\n } = createUnsortedStateAdapter(selectId);\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newEntities, state, existingIds) {\n newEntities = ensureEntitiesArray(newEntities);\n const existingKeys = new Set(existingIds ?? getCurrent(state.ids));\n const models = newEntities.filter((model) => !existingKeys.has(selectIdValue(model, selectId)));\n if (models.length !== 0) {\n mergeFunction(state, models);\n }\n }\n function setOneMutably(entity, state) {\n return setManyMutably([entity], state);\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n if (newEntities.length !== 0) {\n for (const item of newEntities) {\n delete state.entities[selectId(item)];\n }\n mergeFunction(state, newEntities);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.entities = {};\n state.ids = [];\n addManyMutably(newEntities, state, []);\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n let appliedUpdates = false;\n let replacedIds = false;\n for (let update of updates) {\n const entity = state.entities[update.id];\n if (!entity) {\n continue;\n }\n appliedUpdates = true;\n Object.assign(entity, update.changes);\n const newId = selectId(entity);\n if (update.id !== newId) {\n replacedIds = true;\n delete state.entities[update.id];\n const oldIndex = state.ids.indexOf(update.id);\n state.ids[oldIndex] = newId;\n state.entities[newId] = entity;\n }\n }\n if (appliedUpdates) {\n mergeFunction(state, [], appliedUpdates, replacedIds);\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n const [added, updated, existingIdsArray] = splitAddedUpdatedEntities(newEntities, selectId, state);\n if (updated.length) {\n updateManyMutably(updated, state);\n }\n if (added.length) {\n addManyMutably(added, state, existingIdsArray);\n }\n }\n function areArraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return false;\n }\n return true;\n }\n const mergeFunction = (state, addedItems, appliedUpdates, replacedIds) => {\n const currentEntities = getCurrent(state.entities);\n const currentIds = getCurrent(state.ids);\n const stateEntities = state.entities;\n let ids = currentIds;\n if (replacedIds) {\n ids = new Set(currentIds);\n }\n let sortedEntities = [];\n for (const id of ids) {\n const entity = currentEntities[id];\n if (entity) {\n sortedEntities.push(entity);\n }\n }\n const wasPreviouslyEmpty = sortedEntities.length === 0;\n for (const item of addedItems) {\n stateEntities[selectId(item)] = item;\n if (!wasPreviouslyEmpty) {\n insert(sortedEntities, item, comparer);\n }\n }\n if (wasPreviouslyEmpty) {\n sortedEntities = addedItems.slice().sort(comparer);\n } else if (appliedUpdates) {\n sortedEntities.sort(comparer);\n }\n const newSortedIds = sortedEntities.map(selectId);\n if (!areArraysEqual(currentIds, newSortedIds)) {\n state.ids = newSortedIds;\n }\n };\n return {\n removeOne,\n removeMany,\n removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably)\n };\n}\n\n// src/entities/create_adapter.ts\nfunction createEntityAdapter(options = {}) {\n const {\n selectId,\n sortComparer\n } = {\n sortComparer: false,\n selectId: (instance) => instance.id,\n ...options\n };\n const stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\n const stateFactory = createInitialStateFactory(stateAdapter);\n const selectorsFactory = createSelectorsFactory();\n return {\n selectId,\n sortComparer,\n ...stateFactory,\n ...selectorsFactory,\n ...stateAdapter\n };\n}\n\n// src/listenerMiddleware/index.ts\nimport { isAction as isAction3 } from \"redux\";\n\n// src/listenerMiddleware/exceptions.ts\nvar task = \"task\";\nvar listener = \"listener\";\nvar completed = \"completed\";\nvar cancelled = \"cancelled\";\nvar taskCancelled = `task-${cancelled}`;\nvar taskCompleted = `task-${completed}`;\nvar listenerCancelled = `${listener}-${cancelled}`;\nvar listenerCompleted = `${listener}-${completed}`;\nvar TaskAbortError = class {\n constructor(code) {\n this.code = code;\n this.message = `${task} ${cancelled} (reason: ${code})`;\n }\n name = \"TaskAbortError\";\n message;\n};\n\n// src/listenerMiddleware/utils.ts\nvar assertFunction = (func, expected) => {\n if (typeof func !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(32) : `${expected} is not a function`);\n }\n};\nvar noop2 = () => {\n};\nvar catchRejection = (promise, onError = noop2) => {\n promise.catch(onError);\n return promise;\n};\nvar addAbortSignalListener = (abortSignal, callback) => {\n abortSignal.addEventListener(\"abort\", callback, {\n once: true\n });\n return () => abortSignal.removeEventListener(\"abort\", callback);\n};\nvar abortControllerWithReason = (abortController, reason) => {\n const signal = abortController.signal;\n if (signal.aborted) {\n return;\n }\n if (!(\"reason\" in signal)) {\n Object.defineProperty(signal, \"reason\", {\n enumerable: true,\n value: reason,\n configurable: true,\n writable: true\n });\n }\n ;\n abortController.abort(reason);\n};\n\n// src/listenerMiddleware/task.ts\nvar validateActive = (signal) => {\n if (signal.aborted) {\n const {\n reason\n } = signal;\n throw new TaskAbortError(reason);\n }\n};\nfunction raceWithSignal(signal, promise) {\n let cleanup = noop2;\n return new Promise((resolve, reject) => {\n const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise.finally(() => cleanup()).then(resolve, reject);\n }).finally(() => {\n cleanup = noop2;\n });\n}\nvar runTask = async (task2, cleanUp) => {\n try {\n await Promise.resolve();\n const value = await task2();\n return {\n status: \"ok\",\n value\n };\n } catch (error) {\n return {\n status: error instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\n error\n };\n } finally {\n cleanUp?.();\n }\n};\nvar createPause = (signal) => {\n return (promise) => {\n return catchRejection(raceWithSignal(signal, promise).then((output) => {\n validateActive(signal);\n return output;\n }));\n };\n};\nvar createDelay = (signal) => {\n const pause = createPause(signal);\n return (timeoutMs) => {\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)));\n };\n};\n\n// src/listenerMiddleware/index.ts\nvar {\n assign\n} = Object;\nvar INTERNAL_NIL_TOKEN = {};\nvar alm = \"listenerMiddleware\";\nvar createFork = (parentAbortSignal, parentBlockingPromises) => {\n const linkControllers = (controller) => addAbortSignalListener(parentAbortSignal, () => abortControllerWithReason(controller, parentAbortSignal.reason));\n return (taskExecutor, opts) => {\n assertFunction(taskExecutor, \"taskExecutor\");\n const childAbortController = new AbortController();\n linkControllers(childAbortController);\n const result = runTask(async () => {\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n const result2 = await taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n });\n validateActive(childAbortController.signal);\n return result2;\n }, () => abortControllerWithReason(childAbortController, taskCompleted));\n if (opts?.autoJoin) {\n parentBlockingPromises.push(result.catch(noop2));\n }\n return {\n result: createPause(parentAbortSignal)(result),\n cancel() {\n abortControllerWithReason(childAbortController, taskCancelled);\n }\n };\n };\n};\nvar createTakePattern = (startListening, signal) => {\n const take = async (predicate, timeout) => {\n validateActive(signal);\n let unsubscribe = () => {\n };\n const tuplePromise = new Promise((resolve, reject) => {\n let stopListening = startListening({\n predicate,\n effect: (action, listenerApi) => {\n listenerApi.unsubscribe();\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n unsubscribe = () => {\n stopListening();\n reject();\n };\n });\n const promises = [tuplePromise];\n if (timeout != null) {\n promises.push(new Promise((resolve) => setTimeout(resolve, timeout, null)));\n }\n try {\n const output = await raceWithSignal(signal, Promise.race(promises));\n validateActive(signal);\n return output;\n } finally {\n unsubscribe();\n }\n };\n return (predicate, timeout) => catchRejection(take(predicate, timeout));\n};\nvar getListenerEntryPropsFrom = (options) => {\n let {\n type,\n actionCreator,\n matcher,\n predicate,\n effect\n } = options;\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(21) : \"Creating or removing a listener requires one of the known fields for matching an action\");\n }\n assertFunction(effect, \"options.listener\");\n return {\n predicate,\n type,\n effect\n };\n};\nvar createListenerEntry = Object.assign((options) => {\n const {\n type,\n predicate,\n effect\n } = getListenerEntryPropsFrom(options);\n const id = nanoid();\n const entry = {\n id,\n effect,\n type,\n predicate,\n pending: /* @__PURE__ */ new Set(),\n unsubscribe: () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(22) : \"Unsubscribe not initialized\");\n }\n };\n return entry;\n}, {\n withTypes: () => createListenerEntry\n});\nvar cancelActiveListeners = (entry) => {\n entry.pending.forEach((controller) => {\n abortControllerWithReason(controller, listenerCancelled);\n });\n};\nvar createClearListenerMiddleware = (listenerMap) => {\n return () => {\n listenerMap.forEach(cancelActiveListeners);\n listenerMap.clear();\n };\n};\nvar safelyNotifyError = (errorHandler, errorToNotify, errorInfo) => {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n setTimeout(() => {\n throw errorHandlerError;\n }, 0);\n }\n};\nvar addListener = Object.assign(createAction(`${alm}/add`), {\n withTypes: () => addListener\n});\nvar clearAllListeners = createAction(`${alm}/removeAll`);\nvar removeListener = Object.assign(createAction(`${alm}/remove`), {\n withTypes: () => removeListener\n});\nvar defaultErrorHandler = (...args) => {\n console.error(`${alm}/error`, ...args);\n};\nvar createListenerMiddleware = (middlewareOptions = {}) => {\n const listenerMap = /* @__PURE__ */ new Map();\n const {\n extra,\n onError = defaultErrorHandler\n } = middlewareOptions;\n assertFunction(onError, \"onError\");\n const insertEntry = (entry) => {\n entry.unsubscribe = () => listenerMap.delete(entry.id);\n listenerMap.set(entry.id, entry);\n return (cancelOptions) => {\n entry.unsubscribe();\n if (cancelOptions?.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n const startListening = (options) => {\n let entry = find(Array.from(listenerMap.values()), (existingEntry) => existingEntry.effect === options.effect);\n if (!entry) {\n entry = createListenerEntry(options);\n }\n return insertEntry(entry);\n };\n Object.assign(startListening, {\n withTypes: () => startListening\n });\n const stopListening = (options) => {\n const {\n type,\n effect,\n predicate\n } = getListenerEntryPropsFrom(options);\n const entry = find(Array.from(listenerMap.values()), (entry2) => {\n const matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\n return matchPredicateOrType && entry2.effect === effect;\n });\n if (entry) {\n entry.unsubscribe();\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n return !!entry;\n };\n Object.assign(stopListening, {\n withTypes: () => stopListening\n });\n const notifyListener = async (entry, action, api, getOriginalState) => {\n const internalTaskController = new AbortController();\n const take = createTakePattern(startListening, internalTaskController.signal);\n const autoJoinPromises = [];\n try {\n entry.pending.add(internalTaskController);\n await Promise.resolve(entry.effect(\n action,\n // Use assign() rather than ... to avoid extra helper functions added to bundle\n assign({}, api, {\n getOriginalState,\n condition: (predicate, timeout) => take(predicate, timeout).then(Boolean),\n take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause(internalTaskController.signal),\n extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: () => {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: () => {\n entry.pending.forEach((controller, _, set) => {\n if (controller !== internalTaskController) {\n abortControllerWithReason(controller, listenerCancelled);\n set.delete(controller);\n }\n });\n },\n cancel: () => {\n abortControllerWithReason(internalTaskController, listenerCancelled);\n entry.pending.delete(internalTaskController);\n },\n throwIfCancelled: () => {\n validateActive(internalTaskController.signal);\n }\n })\n ));\n } catch (listenerError) {\n if (!(listenerError instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError, {\n raisedBy: \"effect\"\n });\n }\n } finally {\n await Promise.all(autoJoinPromises);\n abortControllerWithReason(internalTaskController, listenerCompleted);\n entry.pending.delete(internalTaskController);\n }\n };\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n const middleware = (api) => (next) => (action) => {\n if (!isAction3(action)) {\n return next(action);\n }\n if (addListener.match(action)) {\n return startListening(action.payload);\n }\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n }\n let originalState = api.getState();\n const getOriginalState = () => {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(23) : `${alm}: getOriginalState can only be called synchronously`);\n }\n return originalState;\n };\n let result;\n try {\n result = next(action);\n if (listenerMap.size > 0) {\n const currentState = api.getState();\n const listenerEntries = Array.from(listenerMap.values());\n for (const entry of listenerEntries) {\n let runListener = false;\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: \"predicate\"\n });\n }\n if (!runListener) {\n continue;\n }\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n originalState = INTERNAL_NIL_TOKEN;\n }\n return result;\n };\n return {\n middleware,\n startListening,\n stopListening,\n clearListeners: clearListenerMiddleware\n };\n};\n\n// src/dynamicMiddleware/index.ts\nimport { compose as compose3 } from \"redux\";\nvar createMiddlewareEntry = (middleware) => ({\n id: nanoid(),\n middleware,\n applied: /* @__PURE__ */ new Map()\n});\nvar matchInstance = (instanceId) => (action) => action?.meta?.instanceId === instanceId;\nvar createDynamicMiddleware = () => {\n const instanceId = nanoid();\n const middlewareMap = /* @__PURE__ */ new Map();\n const withMiddleware = Object.assign(createAction(\"dynamicMiddleware/add\", (...middlewares) => ({\n payload: middlewares,\n meta: {\n instanceId\n }\n })), {\n withTypes: () => withMiddleware\n });\n const addMiddleware = Object.assign(function addMiddleware2(...middlewares) {\n middlewares.forEach((middleware2) => {\n let entry = find(Array.from(middlewareMap.values()), (entry2) => entry2.middleware === middleware2);\n if (!entry) {\n entry = createMiddlewareEntry(middleware2);\n }\n middlewareMap.set(entry.id, entry);\n });\n }, {\n withTypes: () => addMiddleware\n });\n const getFinalMiddleware = (api) => {\n const appliedMiddleware = Array.from(middlewareMap.values()).map((entry) => emplace(entry.applied, api, {\n insert: () => entry.middleware(api)\n }));\n return compose3(...appliedMiddleware);\n };\n const isWithMiddleware = isAllOf(withMiddleware, matchInstance(instanceId));\n const middleware = (api) => (next) => (action) => {\n if (isWithMiddleware(action)) {\n addMiddleware(...action.payload);\n return api.dispatch;\n }\n return getFinalMiddleware(api)(next)(action);\n };\n return {\n middleware,\n addMiddleware,\n withMiddleware,\n instanceId\n };\n};\n\n// src/combineSlices.ts\nimport { combineReducers as combineReducers2 } from \"redux\";\nvar isSliceLike = (maybeSliceLike) => \"reducerPath\" in maybeSliceLike && typeof maybeSliceLike.reducerPath === \"string\";\nvar getReducers = (slices) => slices.flatMap((sliceOrMap) => isSliceLike(sliceOrMap) ? [[sliceOrMap.reducerPath, sliceOrMap.reducer]] : Object.entries(sliceOrMap));\nvar ORIGINAL_STATE = Symbol.for(\"rtk-state-proxy-original\");\nvar isStateProxy = (value) => !!value && !!value[ORIGINAL_STATE];\nvar stateProxyMap = /* @__PURE__ */ new WeakMap();\nvar createStateProxy = (state, reducerMap) => emplace(stateProxyMap, state, {\n insert: () => new Proxy(state, {\n get: (target, prop, receiver) => {\n if (prop === ORIGINAL_STATE)\n return target;\n const result = Reflect.get(target, prop, receiver);\n if (typeof result === \"undefined\") {\n const reducer = reducerMap[prop.toString()];\n if (reducer) {\n const reducerResult = reducer(void 0, {\n type: nanoid()\n });\n if (typeof reducerResult === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n return reducerResult;\n }\n }\n return result;\n }\n })\n});\nvar original = (state) => {\n if (!isStateProxy(state)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(25) : \"original must be used on state Proxy\");\n }\n return state[ORIGINAL_STATE];\n};\nvar noopReducer = (state = {}) => state;\nfunction combineSlices(...slices) {\n const reducerMap = Object.fromEntries(getReducers(slices));\n const getReducer = () => Object.keys(reducerMap).length ? combineReducers2(reducerMap) : noopReducer;\n let reducer = getReducer();\n function combinedReducer(state, action) {\n return reducer(state, action);\n }\n combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n const inject = (slice, config = {}) => {\n const {\n reducerPath,\n reducer: reducerToInject\n } = slice;\n const currentReducer = reducerMap[reducerPath];\n if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n }\n return combinedReducer;\n }\n reducerMap[reducerPath] = reducerToInject;\n reducer = getReducer();\n return combinedReducer;\n };\n const selector = Object.assign(function makeSelector(selectorFn, selectState) {\n return function selector2(state, ...args) {\n return selectorFn(createStateProxy(selectState ? selectState(state, ...args) : state, reducerMap), ...args);\n };\n }, {\n original\n });\n return Object.assign(combinedReducer, {\n inject,\n selector\n });\n}\n\n// src/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\nexport {\n ReducerType,\n SHOULD_AUTOBATCH,\n TaskAbortError,\n Tuple,\n addListener,\n asyncThunkCreator,\n autoBatchEnhancer,\n buildCreateSlice,\n clearAllListeners,\n combineSlices,\n configureStore,\n createAction,\n createActionCreatorInvariantMiddleware,\n createAsyncThunk,\n createDraftSafeSelector,\n createDraftSafeSelectorCreator,\n createDynamicMiddleware,\n createEntityAdapter,\n createImmutableStateInvariantMiddleware,\n createListenerMiddleware,\n produce as createNextState,\n createReducer,\n createSelector,\n createSelectorCreator2 as createSelectorCreator,\n createSerializableStateInvariantMiddleware,\n createSlice,\n current3 as current,\n findNonSerializableValue,\n formatProdErrorMessage,\n freeze,\n isActionCreator,\n isAllOf,\n isAnyOf,\n isAsyncThunkAction,\n isDraft5 as isDraft,\n isFSA as isFluxStandardAction,\n isFulfilled,\n isImmutableDefault,\n isPending,\n isPlain,\n isRejected,\n isRejectedWithValue,\n lruMemoize,\n miniSerializeError,\n nanoid,\n original2 as original,\n prepareAutoBatched,\n removeListener,\n unwrapResult,\n weakMapMemoize2 as weakMapMemoize\n};\n//# sourceMappingURL=redux-toolkit.modern.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SessionStore_instances, _SessionStore_chunks, _SessionStore_option, _SessionStore_logger, _SessionStore_chunk, _SessionStore_clean;\n// Uncomment to recalculate the estimated size\n// of an empty session cookie\n// import { serialize } from \"cookie\"\n// console.log(\n// \"Cookie estimated to be \",\n// serialize(`__Secure.authjs.session-token.0`, \"\", {\n// expires: new Date(),\n// httpOnly: true,\n// maxAge: Number.MAX_SAFE_INTEGER,\n// path: \"/\",\n// sameSite: \"strict\",\n// secure: true,\n// domain: \"example.com\",\n// }).length,\n// \" bytes\"\n// )\nconst ALLOWED_COOKIE_SIZE = 4096;\n// Based on commented out section above\nconst ESTIMATED_EMPTY_COOKIE_SIZE = 160;\nconst CHUNK_SIZE = ALLOWED_COOKIE_SIZE - ESTIMATED_EMPTY_COOKIE_SIZE;\n/**\n * Use secure cookies if the site uses HTTPS\n * This being conditional allows cookies to work non-HTTPS development URLs\n * Honour secure cookie option, which sets 'secure' and also adds '__Secure-'\n * prefix, but enable them by default if the site URL is HTTPS; but not for\n * non-HTTPS URLs like http://localhost which are used in development).\n * For more on prefixes see https://googlechrome.github.io/samples/cookie-prefixes/\n *\n * @TODO Review cookie settings (names, options)\n */\nexport function defaultCookies(useSecureCookies) {\n const cookiePrefix = useSecureCookies ? \"__Secure-\" : \"\";\n return {\n // default cookie options\n sessionToken: {\n name: `${cookiePrefix}authjs.session-token`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n },\n },\n callbackUrl: {\n name: `${cookiePrefix}authjs.callback-url`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n },\n },\n csrfToken: {\n // Default to __Host- for CSRF token for additional protection if using useSecureCookies\n // NB: The `__Host-` prefix is stricter than the `__Secure-` prefix.\n name: `${useSecureCookies ? \"__Host-\" : \"\"}authjs.csrf-token`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n },\n },\n pkceCodeVerifier: {\n name: `${cookiePrefix}authjs.pkce.code_verifier`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n maxAge: 60 * 15, // 15 minutes in seconds\n },\n },\n state: {\n name: `${cookiePrefix}authjs.state`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n maxAge: 60 * 15, // 15 minutes in seconds\n },\n },\n nonce: {\n name: `${cookiePrefix}authjs.nonce`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n },\n },\n webauthnChallenge: {\n name: `${cookiePrefix}authjs.challenge`,\n options: {\n httpOnly: true,\n sameSite: \"lax\",\n path: \"/\",\n secure: useSecureCookies,\n maxAge: 60 * 15, // 15 minutes in seconds\n },\n },\n };\n}\nexport class SessionStore {\n constructor(option, cookies, logger) {\n _SessionStore_instances.add(this);\n _SessionStore_chunks.set(this, {});\n _SessionStore_option.set(this, void 0);\n _SessionStore_logger.set(this, void 0);\n __classPrivateFieldSet(this, _SessionStore_logger, logger, \"f\");\n __classPrivateFieldSet(this, _SessionStore_option, option, \"f\");\n if (!cookies)\n return;\n const { name: sessionCookiePrefix } = option;\n for (const [name, value] of Object.entries(cookies)) {\n if (!name.startsWith(sessionCookiePrefix) || !value)\n continue;\n __classPrivateFieldGet(this, _SessionStore_chunks, \"f\")[name] = value;\n }\n }\n /**\n * The JWT Session or database Session ID\n * constructed from the cookie chunks.\n */\n get value() {\n // Sort the chunks by their keys before joining\n const sortedKeys = Object.keys(__classPrivateFieldGet(this, _SessionStore_chunks, \"f\")).sort((a, b) => {\n const aSuffix = parseInt(a.split(\".\").pop() || \"0\");\n const bSuffix = parseInt(b.split(\".\").pop() || \"0\");\n return aSuffix - bSuffix;\n });\n // Use the sorted keys to join the chunks in the correct order\n return sortedKeys.map((key) => __classPrivateFieldGet(this, _SessionStore_chunks, \"f\")[key]).join(\"\");\n }\n /**\n * Given a cookie value, return new cookies, chunked, to fit the allowed cookie size.\n * If the cookie has changed from chunked to unchunked or vice versa,\n * it deletes the old cookies as well.\n */\n chunk(value, options) {\n // Assume all cookies should be cleaned by default\n const cookies = __classPrivateFieldGet(this, _SessionStore_instances, \"m\", _SessionStore_clean).call(this);\n // Calculate new chunks\n const chunked = __classPrivateFieldGet(this, _SessionStore_instances, \"m\", _SessionStore_chunk).call(this, {\n name: __classPrivateFieldGet(this, _SessionStore_option, \"f\").name,\n value,\n options: { ...__classPrivateFieldGet(this, _SessionStore_option, \"f\").options, ...options },\n });\n // Update stored chunks / cookies\n for (const chunk of chunked) {\n cookies[chunk.name] = chunk;\n }\n return Object.values(cookies);\n }\n /** Returns a list of cookies that should be cleaned. */\n clean() {\n return Object.values(__classPrivateFieldGet(this, _SessionStore_instances, \"m\", _SessionStore_clean).call(this));\n }\n}\n_SessionStore_chunks = new WeakMap(), _SessionStore_option = new WeakMap(), _SessionStore_logger = new WeakMap(), _SessionStore_instances = new WeakSet(), _SessionStore_chunk = function _SessionStore_chunk(cookie) {\n const chunkCount = Math.ceil(cookie.value.length / CHUNK_SIZE);\n if (chunkCount === 1) {\n __classPrivateFieldGet(this, _SessionStore_chunks, \"f\")[cookie.name] = cookie.value;\n return [cookie];\n }\n const cookies = [];\n for (let i = 0; i < chunkCount; i++) {\n const name = `${cookie.name}.${i}`;\n const value = cookie.value.substr(i * CHUNK_SIZE, CHUNK_SIZE);\n cookies.push({ ...cookie, name, value });\n __classPrivateFieldGet(this, _SessionStore_chunks, \"f\")[name] = value;\n }\n __classPrivateFieldGet(this, _SessionStore_logger, \"f\").debug(\"CHUNKING_SESSION_COOKIE\", {\n message: `Session cookie exceeds allowed ${ALLOWED_COOKIE_SIZE} bytes.`,\n emptyCookieSize: ESTIMATED_EMPTY_COOKIE_SIZE,\n valueSize: cookie.value.length,\n chunks: cookies.map((c) => c.value.length + ESTIMATED_EMPTY_COOKIE_SIZE),\n });\n return cookies;\n}, _SessionStore_clean = function _SessionStore_clean() {\n const cleanedChunks = {};\n for (const name in __classPrivateFieldGet(this, _SessionStore_chunks, \"f\")) {\n delete __classPrivateFieldGet(this, _SessionStore_chunks, \"f\")?.[name];\n cleanedChunks[name] = {\n name,\n value: \"\",\n options: { ...__classPrivateFieldGet(this, _SessionStore_option, \"f\").options, maxAge: 0 },\n };\n }\n return cleanedChunks;\n};\n","import { defaultCookies } from \"./cookie.js\";\nimport { AuthError, DuplicateConditionalUI, ExperimentalFeatureNotEnabled, InvalidCallbackUrl, InvalidEndpoints, MissingAdapter, MissingAdapterMethods, MissingAuthorize, MissingSecret, MissingWebAuthnAutocomplete, UnsupportedStrategy, UntrustedHost, } from \"../../errors.js\";\nlet warned = false;\nfunction isValidHttpUrl(url, baseUrl) {\n try {\n return /^https?:/.test(new URL(url, url.startsWith(\"/\") ? baseUrl : undefined).protocol);\n }\n catch {\n return false;\n }\n}\nfunction isSemverString(version) {\n return /^v\\d+(?:\\.\\d+){0,2}$/.test(version);\n}\nlet hasCredentials = false;\nlet hasEmail = false;\nlet hasWebAuthn = false;\nconst emailMethods = [\n \"createVerificationToken\",\n \"useVerificationToken\",\n \"getUserByEmail\",\n];\nconst sessionMethods = [\n \"createUser\",\n \"getUser\",\n \"getUserByEmail\",\n \"getUserByAccount\",\n \"updateUser\",\n \"linkAccount\",\n \"createSession\",\n \"getSessionAndUser\",\n \"updateSession\",\n \"deleteSession\",\n];\nconst webauthnMethods = [\n \"createUser\",\n \"getUser\",\n \"linkAccount\",\n \"getAccount\",\n \"getAuthenticator\",\n \"createAuthenticator\",\n \"listAuthenticatorsByUserId\",\n \"updateAuthenticatorCounter\",\n];\n/**\n * Verify that the user configured Auth.js correctly.\n * Good place to mention deprecations as well.\n *\n * This is invoked before the init method, so default values are not available yet.\n */\nexport function assertConfig(request, options) {\n const { url } = request;\n const warnings = [];\n if (!warned && options.debug)\n warnings.push(\"debug-enabled\");\n if (!options.trustHost) {\n return new UntrustedHost(`Host must be trusted. URL was: ${request.url}`);\n }\n if (!options.secret?.length) {\n return new MissingSecret(\"Please define a `secret`.\");\n }\n const callbackUrlParam = request.query?.callbackUrl;\n if (callbackUrlParam && !isValidHttpUrl(callbackUrlParam, url.origin)) {\n return new InvalidCallbackUrl(`Invalid callback URL. Received: ${callbackUrlParam}`);\n }\n const { callbackUrl: defaultCallbackUrl } = defaultCookies(options.useSecureCookies ?? url.protocol === \"https:\");\n const callbackUrlCookie = request.cookies?.[options.cookies?.callbackUrl?.name ?? defaultCallbackUrl.name];\n if (callbackUrlCookie && !isValidHttpUrl(callbackUrlCookie, url.origin)) {\n return new InvalidCallbackUrl(`Invalid callback URL. Received: ${callbackUrlCookie}`);\n }\n // Keep track of webauthn providers that use conditional UI\n let hasConditionalUIProvider = false;\n for (const p of options.providers) {\n const provider = typeof p === \"function\" ? p() : p;\n if ((provider.type === \"oauth\" || provider.type === \"oidc\") &&\n !(provider.issuer ?? provider.options?.issuer)) {\n const { authorization: a, token: t, userinfo: u } = provider;\n let key;\n if (typeof a !== \"string\" && !a?.url)\n key = \"authorization\";\n else if (typeof t !== \"string\" && !t?.url)\n key = \"token\";\n else if (typeof u !== \"string\" && !u?.url)\n key = \"userinfo\";\n if (key) {\n return new InvalidEndpoints(`Provider \"${provider.id}\" is missing both \\`issuer\\` and \\`${key}\\` endpoint config. At least one of them is required.`);\n }\n }\n if (provider.type === \"credentials\")\n hasCredentials = true;\n else if (provider.type === \"email\")\n hasEmail = true;\n else if (provider.type === \"webauthn\") {\n hasWebAuthn = true;\n // Validate simpleWebAuthnBrowserVersion\n if (provider.simpleWebAuthnBrowserVersion &&\n !isSemverString(provider.simpleWebAuthnBrowserVersion)) {\n return new AuthError(`Invalid provider config for \"${provider.id}\": simpleWebAuthnBrowserVersion \"${provider.simpleWebAuthnBrowserVersion}\" must be a valid semver string.`);\n }\n if (provider.enableConditionalUI) {\n // Make sure only one webauthn provider has \"enableConditionalUI\" set to true\n if (hasConditionalUIProvider) {\n return new DuplicateConditionalUI(`Multiple webauthn providers have 'enableConditionalUI' set to True. Only one provider can have this option enabled at a time.`);\n }\n hasConditionalUIProvider = true;\n // Make sure at least one formField has \"webauthn\" in its autocomplete param\n const hasWebauthnFormField = Object.values(provider.formFields).some((f) => f.autocomplete && f.autocomplete.toString().indexOf(\"webauthn\") > -1);\n if (!hasWebauthnFormField) {\n return new MissingWebAuthnAutocomplete(`Provider \"${provider.id}\" has 'enableConditionalUI' set to True, but none of its formFields have 'webauthn' in their autocomplete param.`);\n }\n }\n }\n }\n if (hasCredentials) {\n const dbStrategy = options.session?.strategy === \"database\";\n const onlyCredentials = !options.providers.some((p) => (typeof p === \"function\" ? p() : p).type !== \"credentials\");\n if (dbStrategy && onlyCredentials) {\n return new UnsupportedStrategy(\"Signing in with credentials only supported if JWT strategy is enabled\");\n }\n const credentialsNoAuthorize = options.providers.some((p) => {\n const provider = typeof p === \"function\" ? p() : p;\n return provider.type === \"credentials\" && !provider.authorize;\n });\n if (credentialsNoAuthorize) {\n return new MissingAuthorize(\"Must define an authorize() handler to use credentials authentication provider\");\n }\n }\n const { adapter, session } = options;\n let requiredMethods = [];\n if (hasEmail ||\n session?.strategy === \"database\" ||\n (!session?.strategy && adapter)) {\n if (hasEmail) {\n if (!adapter)\n return new MissingAdapter(\"Email login requires an adapter.\");\n requiredMethods.push(...emailMethods);\n }\n else {\n if (!adapter)\n return new MissingAdapter(\"Database session requires an adapter.\");\n requiredMethods.push(...sessionMethods);\n }\n }\n if (hasWebAuthn) {\n // Log experimental warning\n if (options.experimental?.enableWebAuthn) {\n warnings.push(\"experimental-webauthn\");\n }\n else {\n return new ExperimentalFeatureNotEnabled(\"WebAuthn is an experimental feature. To enable it, set `experimental.enableWebAuthn` to `true` in your config.\");\n }\n if (!adapter)\n return new MissingAdapter(\"WebAuthn requires an adapter.\");\n requiredMethods.push(...webauthnMethods);\n }\n if (adapter) {\n const missing = requiredMethods.filter((m) => !(m in adapter));\n if (missing.length) {\n return new MissingAdapterMethods(`Required adapter methods were missing: ${missing.join(\", \")}`);\n }\n }\n if (!warned)\n warned = true;\n return warnings;\n}\n","const getGlobal = () => {\n if (typeof globalThis !== 'undefined')\n return globalThis;\n if (typeof self !== 'undefined')\n return self;\n if (typeof window !== 'undefined')\n return window;\n throw new Error('unable to locate global object');\n};\nexport default async (digest, ikm, salt, info, keylen) => {\n const { crypto: { subtle }, } = getGlobal();\n return new Uint8Array(await subtle.deriveBits({\n name: 'HKDF',\n hash: `SHA-${digest.substr(3)}`,\n salt,\n info,\n }, await subtle.importKey('raw', ikm, 'HKDF', false, ['deriveBits']), keylen << 3));\n};\n","import derive from './runtime/hkdf.js';\nfunction normalizeDigest(digest) {\n switch (digest) {\n case 'sha256':\n case 'sha384':\n case 'sha512':\n case 'sha1':\n return digest;\n default:\n throw new TypeError('unsupported \"digest\" value');\n }\n}\nfunction normalizeUint8Array(input, label) {\n if (typeof input === 'string')\n return new TextEncoder().encode(input);\n if (!(input instanceof Uint8Array))\n throw new TypeError(`\"${label}\"\" must be an instance of Uint8Array or a string`);\n return input;\n}\nfunction normalizeIkm(input) {\n const ikm = normalizeUint8Array(input, 'ikm');\n if (!ikm.byteLength)\n throw new TypeError(`\"ikm\" must be at least one byte in length`);\n return ikm;\n}\nfunction normalizeInfo(input) {\n const info = normalizeUint8Array(input, 'info');\n if (info.byteLength > 1024) {\n throw TypeError('\"info\" must not contain more than 1024 bytes');\n }\n return info;\n}\nfunction normalizeKeylen(input, digest) {\n if (typeof input !== 'number' || !Number.isInteger(input) || input < 1) {\n throw new TypeError('\"keylen\" must be a positive integer');\n }\n const hashlen = parseInt(digest.substr(3), 10) >> 3 || 20;\n if (input > 255 * hashlen) {\n throw new TypeError('\"keylen\" too large');\n }\n return input;\n}\nasync function hkdf(digest, ikm, salt, info, keylen) {\n return derive(normalizeDigest(digest), normalizeIkm(ikm), normalizeUint8Array(salt, 'salt'), normalizeInfo(info), normalizeKeylen(keylen, digest));\n}\nexport { hkdf, hkdf as default };\n","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","import crypto from './webcrypto.js';\nconst digest = async (algorithm, data) => {\n const subtleDigest = `SHA-${algorithm.slice(-3)}`;\n return new Uint8Array(await crypto.subtle.digest(subtleDigest, data));\n};\nexport default digest;\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\nexport function p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n const res = new Uint8Array(iterations * 32);\n for (let iter = 0; iter < iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter + 1));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n res.set(await digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nexport const decode = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n","export class JOSEError extends Error {\n static get code() {\n return 'ERR_JOSE_GENERIC';\n }\n constructor(message) {\n super(message);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n static get code() {\n return 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n }\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JWTExpired extends JOSEError {\n static get code() {\n return 'ERR_JWT_EXPIRED';\n }\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n static get code() {\n return 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n static get code() {\n return 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nexport class JWEDecryptionFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n this.message = 'decryption operation failed';\n }\n static get code() {\n return 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n static get code() {\n return 'ERR_JWE_INVALID';\n }\n}\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n static get code() {\n return 'ERR_JWS_INVALID';\n }\n}\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n static get code() {\n return 'ERR_JWT_INVALID';\n }\n}\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n static get code() {\n return 'ERR_JWK_INVALID';\n }\n}\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n static get code() {\n return 'ERR_JWKS_INVALID';\n }\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n this.message = 'no applicable key found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n this.message = 'multiple matching keys found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nSymbol.asyncIterator;\nexport class JWKSTimeout extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_TIMEOUT';\n this.message = 'request timed out';\n }\n static get code() {\n return 'ERR_JWKS_TIMEOUT';\n }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n this.message = 'signature verification failed';\n }\n static get code() {\n return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n","import digest from '../runtime/digest.js';\nimport { encode as base64url } from '../runtime/base64url.js';\nimport { JOSENotSupported, JWKInvalid } from '../util/errors.js';\nimport { encoder } from '../lib/buffer_utils.js';\nimport isObject from '../lib/is_object.js';\nconst check = (value, description) => {\n if (typeof value !== 'string' || !value) {\n throw new JWKInvalid(`${description} missing or invalid`);\n }\n};\nexport async function calculateJwkThumbprint(jwk, digestAlgorithm) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n digestAlgorithm ?? (digestAlgorithm = 'sha256');\n if (digestAlgorithm !== 'sha256' &&\n digestAlgorithm !== 'sha384' &&\n digestAlgorithm !== 'sha512') {\n throw new TypeError('digestAlgorithm must one of \"sha256\", \"sha384\", or \"sha512\"');\n }\n let components;\n switch (jwk.kty) {\n case 'EC':\n check(jwk.crv, '\"crv\" (Curve) Parameter');\n check(jwk.x, '\"x\" (X Coordinate) Parameter');\n check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n break;\n case 'OKP':\n check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n check(jwk.x, '\"x\" (Public Key) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n break;\n case 'RSA':\n check(jwk.e, '\"e\" (Exponent) Parameter');\n check(jwk.n, '\"n\" (Modulus) Parameter');\n components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n break;\n case 'oct':\n check(jwk.k, '\"k\" (Key Value) Parameter');\n components = { k: jwk.k, kty: jwk.kty };\n break;\n default:\n throw new JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n }\n const data = encoder.encode(JSON.stringify(components));\n return base64url(await digest(digestAlgorithm, data));\n}\nexport async function calculateJwkThumbprintUri(jwk, digestAlgorithm) {\n digestAlgorithm ?? (digestAlgorithm = 'sha256');\n const thumbprint = await calculateJwkThumbprint(jwk, digestAlgorithm);\n return `urn:ietf:params:oauth:jwk-thumbprint:sha-${digestAlgorithm.slice(-3)}:${thumbprint}`;\n}\n","import * as base64url from '../runtime/base64url.js';\nexport const encode = base64url.encode;\nexport const decode = base64url.decode;\n","import crypto from './webcrypto.js';\nexport default crypto.getRandomValues.bind(crypto);\n","import { JOSENotSupported } from '../util/errors.js';\nimport random from '../runtime/random.js';\nexport function bitLength(alg) {\n switch (alg) {\n case 'A128GCM':\n case 'A128GCMKW':\n case 'A192GCM':\n case 'A192GCMKW':\n case 'A256GCM':\n case 'A256GCMKW':\n return 96;\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n return 128;\n default:\n throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n }\n}\nexport default (alg) => random(new Uint8Array(bitLength(alg) >> 3));\n","import { JWEInvalid } from '../util/errors.js';\nimport { bitLength } from './iv.js';\nconst checkIvLength = (enc, iv) => {\n if (iv.length << 3 !== bitLength(enc)) {\n throw new JWEInvalid('Invalid Initialization Vector length');\n }\n};\nexport default checkIvLength;\n","import { JWEInvalid } from '../util/errors.js';\nconst checkCekLength = (cek, expected) => {\n const actual = cek.byteLength << 3;\n if (actual !== expected) {\n throw new JWEInvalid(`Invalid Content Encryption Key length. Expected ${expected} bits, got ${actual} bits`);\n }\n};\nexport default checkCekLength;\n","function unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nexport function checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\nexport function checkEncCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n case 'X448':\n break;\n default:\n throw unusable('ECDH, X25519, or X448');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n","function message(msg, actual, ...types) {\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { isCryptoKey } from './webcrypto.js';\nexport default (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nexport const types = ['CryptoKey'];\n","import { concat, uint64be } from '../lib/buffer_utils.js';\nimport checkIvLength from '../lib/check_iv_length.js';\nimport checkCekLength from './check_cek_length.js';\nimport crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport generateIv from '../lib/iv.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { types } from './is_key_like.js';\nasync function cbcEncrypt(enc, plaintext, cek, iv, aad) {\n if (!(cek instanceof Uint8Array)) {\n throw new TypeError(invalidKeyInput(cek, 'Uint8Array'));\n }\n const keySize = parseInt(enc.slice(1, 4), 10);\n const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, ['encrypt']);\n const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n hash: `SHA-${keySize << 1}`,\n name: 'HMAC',\n }, false, ['sign']);\n const ciphertext = new Uint8Array(await crypto.subtle.encrypt({\n iv,\n name: 'AES-CBC',\n }, encKey, plaintext));\n const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n const tag = new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n return { ciphertext, tag, iv };\n}\nasync function gcmEncrypt(enc, plaintext, cek, iv, aad) {\n let encKey;\n if (cek instanceof Uint8Array) {\n encKey = await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['encrypt']);\n }\n else {\n checkEncCryptoKey(cek, enc, 'encrypt');\n encKey = cek;\n }\n const encrypted = new Uint8Array(await crypto.subtle.encrypt({\n additionalData: aad,\n iv,\n name: 'AES-GCM',\n tagLength: 128,\n }, encKey, plaintext));\n const tag = encrypted.slice(-16);\n const ciphertext = encrypted.slice(0, -16);\n return { ciphertext, tag, iv };\n}\nconst encrypt = async (enc, plaintext, cek, iv, aad) => {\n if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n throw new TypeError(invalidKeyInput(cek, ...types, 'Uint8Array'));\n }\n if (iv) {\n checkIvLength(enc, iv);\n }\n else {\n iv = generateIv(enc);\n }\n switch (enc) {\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n if (cek instanceof Uint8Array) {\n checkCekLength(cek, parseInt(enc.slice(-3), 10));\n }\n return cbcEncrypt(enc, plaintext, cek, iv, aad);\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n if (cek instanceof Uint8Array) {\n checkCekLength(cek, parseInt(enc.slice(1, 4), 10));\n }\n return gcmEncrypt(enc, plaintext, cek, iv, aad);\n default:\n throw new JOSENotSupported('Unsupported JWE Content Encryption Algorithm');\n }\n};\nexport default encrypt;\n","const bogusWebCrypto = [\n { hash: 'SHA-256', name: 'HMAC' },\n true,\n ['sign'],\n];\nexport default bogusWebCrypto;\n","import bogusWebCrypto from './bogus.js';\nimport crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nfunction checkKeySize(key, alg) {\n if (key.algorithm.length !== parseInt(alg.slice(1, 4), 10)) {\n throw new TypeError(`Invalid key size for alg: ${alg}`);\n }\n}\nfunction getCryptoKey(key, alg, usage) {\n if (isCryptoKey(key)) {\n checkEncCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n return crypto.subtle.importKey('raw', key, 'AES-KW', true, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n}\nexport const wrap = async (alg, key, cek) => {\n const cryptoKey = await getCryptoKey(key, alg, 'wrapKey');\n checkKeySize(cryptoKey, alg);\n const cryptoKeyCek = await crypto.subtle.importKey('raw', cek, ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.wrapKey('raw', cryptoKeyCek, cryptoKey, 'AES-KW'));\n};\nexport const unwrap = async (alg, key, encryptedKey) => {\n const cryptoKey = await getCryptoKey(key, alg, 'unwrapKey');\n checkKeySize(cryptoKey, alg);\n const cryptoKeyCek = await crypto.subtle.unwrapKey('raw', encryptedKey, cryptoKey, 'AES-KW', ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.exportKey('raw', cryptoKeyCek));\n};\n","import { encoder, concat, uint32be, lengthAndInput, concatKdf } from '../lib/buffer_utils.js';\nimport crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nexport async function deriveKey(publicKey, privateKey, algorithm, keyLength, apu = new Uint8Array(0), apv = new Uint8Array(0)) {\n if (!isCryptoKey(publicKey)) {\n throw new TypeError(invalidKeyInput(publicKey, ...types));\n }\n checkEncCryptoKey(publicKey, 'ECDH');\n if (!isCryptoKey(privateKey)) {\n throw new TypeError(invalidKeyInput(privateKey, ...types));\n }\n checkEncCryptoKey(privateKey, 'ECDH', 'deriveBits');\n const value = concat(lengthAndInput(encoder.encode(algorithm)), lengthAndInput(apu), lengthAndInput(apv), uint32be(keyLength));\n let length;\n if (publicKey.algorithm.name === 'X25519') {\n length = 256;\n }\n else if (publicKey.algorithm.name === 'X448') {\n length = 448;\n }\n else {\n length =\n Math.ceil(parseInt(publicKey.algorithm.namedCurve.substr(-3), 10) / 8) << 3;\n }\n const sharedSecret = new Uint8Array(await crypto.subtle.deriveBits({\n name: publicKey.algorithm.name,\n public: publicKey,\n }, privateKey, length));\n return concatKdf(sharedSecret, keyLength, value);\n}\nexport async function generateEpk(key) {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto.subtle.generateKey(key.algorithm, true, ['deriveBits']);\n}\nexport function ecdhAllowed(key) {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return (['P-256', 'P-384', 'P-521'].includes(key.algorithm.namedCurve) ||\n key.algorithm.name === 'X25519' ||\n key.algorithm.name === 'X448');\n}\n","import { JWEInvalid } from '../util/errors.js';\nexport default function checkP2s(p2s) {\n if (!(p2s instanceof Uint8Array) || p2s.length < 8) {\n throw new JWEInvalid('PBES2 Salt Input must be 8 or more octets');\n }\n}\n","import random from './random.js';\nimport { p2s as concatSalt } from '../lib/buffer_utils.js';\nimport { encode as base64url } from './base64url.js';\nimport { wrap, unwrap } from './aeskw.js';\nimport checkP2s from '../lib/check_p2s.js';\nimport crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nfunction getCryptoKey(key, alg) {\n if (key instanceof Uint8Array) {\n return crypto.subtle.importKey('raw', key, 'PBKDF2', false, ['deriveBits']);\n }\n if (isCryptoKey(key)) {\n checkEncCryptoKey(key, alg, 'deriveBits', 'deriveKey');\n return key;\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n}\nasync function deriveKey(p2s, alg, p2c, key) {\n checkP2s(p2s);\n const salt = concatSalt(alg, p2s);\n const keylen = parseInt(alg.slice(13, 16), 10);\n const subtleAlg = {\n hash: `SHA-${alg.slice(8, 11)}`,\n iterations: p2c,\n name: 'PBKDF2',\n salt,\n };\n const wrapAlg = {\n length: keylen,\n name: 'AES-KW',\n };\n const cryptoKey = await getCryptoKey(key, alg);\n if (cryptoKey.usages.includes('deriveBits')) {\n return new Uint8Array(await crypto.subtle.deriveBits(subtleAlg, cryptoKey, keylen));\n }\n if (cryptoKey.usages.includes('deriveKey')) {\n return crypto.subtle.deriveKey(subtleAlg, cryptoKey, wrapAlg, false, ['wrapKey', 'unwrapKey']);\n }\n throw new TypeError('PBKDF2 key \"usages\" must include \"deriveBits\" or \"deriveKey\"');\n}\nexport const encrypt = async (alg, key, cek, p2c = 2048, p2s = random(new Uint8Array(16))) => {\n const derived = await deriveKey(p2s, alg, p2c, key);\n const encryptedKey = await wrap(alg.slice(-6), derived, cek);\n return { encryptedKey, p2c, p2s: base64url(p2s) };\n};\nexport const decrypt = async (alg, key, encryptedKey, p2c, p2s) => {\n const derived = await deriveKey(p2s, alg, p2c, key);\n return unwrap(alg.slice(-6), derived, encryptedKey);\n};\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function subtleRsaEs(alg) {\n switch (alg) {\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n return 'RSA-OAEP';\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import subtleAlgorithm from './subtle_rsaes.js';\nimport bogusWebCrypto from './bogus.js';\nimport crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport checkKeyLength from './check_key_length.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nexport const encrypt = async (alg, key, cek) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n checkEncCryptoKey(key, alg, 'encrypt', 'wrapKey');\n checkKeyLength(alg, key);\n if (key.usages.includes('encrypt')) {\n return new Uint8Array(await crypto.subtle.encrypt(subtleAlgorithm(alg), key, cek));\n }\n if (key.usages.includes('wrapKey')) {\n const cryptoKeyCek = await crypto.subtle.importKey('raw', cek, ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.wrapKey('raw', cryptoKeyCek, key, subtleAlgorithm(alg)));\n }\n throw new TypeError('RSA-OAEP key \"usages\" must include \"encrypt\" or \"wrapKey\" for this operation');\n};\nexport const decrypt = async (alg, key, encryptedKey) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n checkEncCryptoKey(key, alg, 'decrypt', 'unwrapKey');\n checkKeyLength(alg, key);\n if (key.usages.includes('decrypt')) {\n return new Uint8Array(await crypto.subtle.decrypt(subtleAlgorithm(alg), key, encryptedKey));\n }\n if (key.usages.includes('unwrapKey')) {\n const cryptoKeyCek = await crypto.subtle.unwrapKey('raw', encryptedKey, key, subtleAlgorithm(alg), ...bogusWebCrypto);\n return new Uint8Array(await crypto.subtle.exportKey('raw', cryptoKeyCek));\n }\n throw new TypeError('RSA-OAEP key \"usages\" must include \"decrypt\" or \"unwrapKey\" for this operation');\n};\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, ...rest);\n};\nexport default parse;\n","import { decode } from './base64url.js';\nimport importJWK from './jwk_to_key.js';\nconst normalizeSecretKey = (k) => decode(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return normalizeSecretKey(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return normalizeSecretKey(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n return key;\n};\nexport default { normalizePublicKey, normalizePrivateKey };\n","import { JOSENotSupported } from '../util/errors.js';\nimport random from '../runtime/random.js';\nexport function bitLength(alg) {\n switch (alg) {\n case 'A128GCM':\n return 128;\n case 'A192GCM':\n return 192;\n case 'A256GCM':\n case 'A128CBC-HS256':\n return 256;\n case 'A192CBC-HS384':\n return 384;\n case 'A256CBC-HS512':\n return 512;\n default:\n throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n }\n}\nexport default (alg) => random(new Uint8Array(bitLength(alg) >> 3));\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { encode as base64url } from './base64url.js';\nimport { types } from './is_key_like.js';\nconst keyToJWK = async (key) => {\n if (key instanceof Uint8Array) {\n return {\n kty: 'oct',\n k: base64url(key),\n };\n }\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n }\n if (!key.extractable) {\n throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n }\n const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);\n return jwk;\n};\nexport default keyToJWK;\n","import { toSPKI as exportPublic } from '../runtime/asn1.js';\nimport { toPKCS8 as exportPrivate } from '../runtime/asn1.js';\nimport keyToJWK from '../runtime/key_to_jwk.js';\nexport async function exportSPKI(key) {\n return exportPublic(key);\n}\nexport async function exportPKCS8(key) {\n return exportPrivate(key);\n}\nexport async function exportJWK(key) {\n return keyToJWK(key);\n}\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst symmetricTypeCheck = (alg, key) => {\n if (key instanceof Uint8Array)\n return;\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, 'Uint8Array'));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nconst checkKeyType = (alg, key, usage) => {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key);\n }\n else {\n asymmetricTypeCheck(alg, key, usage);\n }\n};\nexport default checkKeyType;\n","const timingSafeEqual = (a, b) => {\n if (!(a instanceof Uint8Array)) {\n throw new TypeError('First argument must be a buffer');\n }\n if (!(b instanceof Uint8Array)) {\n throw new TypeError('Second argument must be a buffer');\n }\n if (a.length !== b.length) {\n throw new TypeError('Input buffers must have the same length');\n }\n const len = a.length;\n let out = 0;\n let i = -1;\n while (++i < len) {\n out |= a[i] ^ b[i];\n }\n return out === 0;\n};\nexport default timingSafeEqual;\n","import { concat, uint64be } from '../lib/buffer_utils.js';\nimport checkIvLength from '../lib/check_iv_length.js';\nimport checkCekLength from './check_cek_length.js';\nimport timingSafeEqual from './timing_safe_equal.js';\nimport { JOSENotSupported, JWEDecryptionFailed, JWEInvalid } from '../util/errors.js';\nimport crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nasync function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n if (!(cek instanceof Uint8Array)) {\n throw new TypeError(invalidKeyInput(cek, 'Uint8Array'));\n }\n const keySize = parseInt(enc.slice(1, 4), 10);\n const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, ['decrypt']);\n const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n hash: `SHA-${keySize << 1}`,\n name: 'HMAC',\n }, false, ['sign']);\n const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n const expectedTag = new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n let macCheckPassed;\n try {\n macCheckPassed = timingSafeEqual(tag, expectedTag);\n }\n catch {\n }\n if (!macCheckPassed) {\n throw new JWEDecryptionFailed();\n }\n let plaintext;\n try {\n plaintext = new Uint8Array(await crypto.subtle.decrypt({ iv, name: 'AES-CBC' }, encKey, ciphertext));\n }\n catch {\n }\n if (!plaintext) {\n throw new JWEDecryptionFailed();\n }\n return plaintext;\n}\nasync function gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n let encKey;\n if (cek instanceof Uint8Array) {\n encKey = await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['decrypt']);\n }\n else {\n checkEncCryptoKey(cek, enc, 'decrypt');\n encKey = cek;\n }\n try {\n return new Uint8Array(await crypto.subtle.decrypt({\n additionalData: aad,\n iv,\n name: 'AES-GCM',\n tagLength: 128,\n }, encKey, concat(ciphertext, tag)));\n }\n catch {\n throw new JWEDecryptionFailed();\n }\n}\nconst decrypt = async (enc, cek, ciphertext, iv, tag, aad) => {\n if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n throw new TypeError(invalidKeyInput(cek, ...types, 'Uint8Array'));\n }\n if (!iv) {\n throw new JWEInvalid('JWE Initialization Vector missing');\n }\n if (!tag) {\n throw new JWEInvalid('JWE Authentication Tag missing');\n }\n checkIvLength(enc, iv);\n switch (enc) {\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n if (cek instanceof Uint8Array)\n checkCekLength(cek, parseInt(enc.slice(-3), 10));\n return cbcDecrypt(enc, cek, ciphertext, iv, tag, aad);\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n if (cek instanceof Uint8Array)\n checkCekLength(cek, parseInt(enc.slice(1, 4), 10));\n return gcmDecrypt(enc, cek, ciphertext, iv, tag, aad);\n default:\n throw new JOSENotSupported('Unsupported JWE Content Encryption Algorithm');\n }\n};\nexport default decrypt;\n","import encrypt from '../runtime/encrypt.js';\nimport decrypt from '../runtime/decrypt.js';\nimport { encode as base64url } from '../runtime/base64url.js';\nexport async function wrap(alg, key, cek, iv) {\n const jweAlgorithm = alg.slice(0, 7);\n const wrapped = await encrypt(jweAlgorithm, cek, key, iv, new Uint8Array(0));\n return {\n encryptedKey: wrapped.ciphertext,\n iv: base64url(wrapped.iv),\n tag: base64url(wrapped.tag),\n };\n}\nexport async function unwrap(alg, key, encryptedKey, iv, tag) {\n const jweAlgorithm = alg.slice(0, 7);\n return decrypt(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));\n}\n","import { wrap as aesKw } from '../runtime/aeskw.js';\nimport * as ECDH from '../runtime/ecdhes.js';\nimport { encrypt as pbes2Kw } from '../runtime/pbes2kw.js';\nimport { encrypt as rsaEs } from '../runtime/rsaes.js';\nimport { encode as base64url } from '../runtime/base64url.js';\nimport normalize from '../runtime/normalize_key.js';\nimport generateCek, { bitLength as cekLength } from '../lib/cek.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { exportJWK } from '../key/export.js';\nimport checkKeyType from './check_key_type.js';\nimport { wrap as aesGcmKw } from './aesgcmkw.js';\nasync function encryptKeyManagement(alg, enc, key, providedCek, providedParameters = {}) {\n let encryptedKey;\n let parameters;\n let cek;\n checkKeyType(alg, key, 'encrypt');\n key = (await normalize.normalizePublicKey?.(key, alg)) || key;\n switch (alg) {\n case 'dir': {\n cek = key;\n break;\n }\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n if (!ECDH.ecdhAllowed(key)) {\n throw new JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n }\n const { apu, apv } = providedParameters;\n let { epk: ephemeralKey } = providedParameters;\n ephemeralKey || (ephemeralKey = (await ECDH.generateEpk(key)).privateKey);\n const { x, y, crv, kty } = await exportJWK(ephemeralKey);\n const sharedSecret = await ECDH.deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, alg === 'ECDH-ES' ? cekLength(enc) : parseInt(alg.slice(-5, -2), 10), apu, apv);\n parameters = { epk: { x, crv, kty } };\n if (kty === 'EC')\n parameters.epk.y = y;\n if (apu)\n parameters.apu = base64url(apu);\n if (apv)\n parameters.apv = base64url(apv);\n if (alg === 'ECDH-ES') {\n cek = sharedSecret;\n break;\n }\n cek = providedCek || generateCek(enc);\n const kwAlg = alg.slice(-6);\n encryptedKey = await aesKw(kwAlg, sharedSecret, cek);\n break;\n }\n case 'RSA1_5':\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n cek = providedCek || generateCek(enc);\n encryptedKey = await rsaEs(alg, key, cek);\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW': {\n cek = providedCek || generateCek(enc);\n const { p2c, p2s } = providedParameters;\n ({ encryptedKey, ...parameters } = await pbes2Kw(alg, key, cek, p2c, p2s));\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n cek = providedCek || generateCek(enc);\n encryptedKey = await aesKw(alg, key, cek);\n break;\n }\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW': {\n cek = providedCek || generateCek(enc);\n const { iv } = providedParameters;\n ({ encryptedKey, ...parameters } = await aesGcmKw(alg, key, cek, iv));\n break;\n }\n default: {\n throw new JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n }\n }\n return { cek, encryptedKey, parameters };\n}\nexport default encryptKeyManagement;\n","const isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nexport default isDisjoint;\n","import { JOSENotSupported } from '../util/errors.js';\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\nexport default validateCrit;\n","import { encode as base64url } from '../../runtime/base64url.js';\nimport encrypt from '../../runtime/encrypt.js';\nimport encryptKeyManagement from '../../lib/encrypt_key_management.js';\nimport { JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport validateCrit from '../../lib/validate_crit.js';\nexport const unprotected = Symbol();\nexport class FlattenedEncrypt {\n constructor(plaintext) {\n if (!(plaintext instanceof Uint8Array)) {\n throw new TypeError('plaintext must be an instance of Uint8Array');\n }\n this._plaintext = plaintext;\n }\n setKeyManagementParameters(parameters) {\n if (this._keyManagementParameters) {\n throw new TypeError('setKeyManagementParameters can only be called once');\n }\n this._keyManagementParameters = parameters;\n return this;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n if (this._sharedUnprotectedHeader) {\n throw new TypeError('setSharedUnprotectedHeader can only be called once');\n }\n this._sharedUnprotectedHeader = sharedUnprotectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n setAdditionalAuthenticatedData(aad) {\n this._aad = aad;\n return this;\n }\n setContentEncryptionKey(cek) {\n if (this._cek) {\n throw new TypeError('setContentEncryptionKey can only be called once');\n }\n this._cek = cek;\n return this;\n }\n setInitializationVector(iv) {\n if (this._iv) {\n throw new TypeError('setInitializationVector can only be called once');\n }\n this._iv = iv;\n return this;\n }\n async encrypt(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader && !this._sharedUnprotectedHeader) {\n throw new JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n }\n if (!isDisjoint(this._protectedHeader, this._unprotectedHeader, this._sharedUnprotectedHeader)) {\n throw new JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n ...this._sharedUnprotectedHeader,\n };\n validateCrit(JWEInvalid, new Map(), options?.crit, this._protectedHeader, joseHeader);\n if (joseHeader.zip !== undefined) {\n throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n }\n const { alg, enc } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n if (typeof enc !== 'string' || !enc) {\n throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n }\n let encryptedKey;\n if (this._cek && (alg === 'dir' || alg === 'ECDH-ES')) {\n throw new TypeError(`setContentEncryptionKey cannot be called with JWE \"alg\" (Algorithm) Header ${alg}`);\n }\n let cek;\n {\n let parameters;\n ({ cek, encryptedKey, parameters } = await encryptKeyManagement(alg, enc, key, this._cek, this._keyManagementParameters));\n if (parameters) {\n if (options && unprotected in options) {\n if (!this._unprotectedHeader) {\n this.setUnprotectedHeader(parameters);\n }\n else {\n this._unprotectedHeader = { ...this._unprotectedHeader, ...parameters };\n }\n }\n else if (!this._protectedHeader) {\n this.setProtectedHeader(parameters);\n }\n else {\n this._protectedHeader = { ...this._protectedHeader, ...parameters };\n }\n }\n }\n let additionalData;\n let protectedHeader;\n let aadMember;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(base64url(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n if (this._aad) {\n aadMember = base64url(this._aad);\n additionalData = concat(protectedHeader, encoder.encode('.'), encoder.encode(aadMember));\n }\n else {\n additionalData = protectedHeader;\n }\n const { ciphertext, tag, iv } = await encrypt(enc, this._plaintext, cek, this._iv, additionalData);\n const jwe = {\n ciphertext: base64url(ciphertext),\n };\n if (iv) {\n jwe.iv = base64url(iv);\n }\n if (tag) {\n jwe.tag = base64url(tag);\n }\n if (encryptedKey) {\n jwe.encrypted_key = base64url(encryptedKey);\n }\n if (aadMember) {\n jwe.aad = aadMember;\n }\n if (this._protectedHeader) {\n jwe.protected = decoder.decode(protectedHeader);\n }\n if (this._sharedUnprotectedHeader) {\n jwe.unprotected = this._sharedUnprotectedHeader;\n }\n if (this._unprotectedHeader) {\n jwe.header = this._unprotectedHeader;\n }\n return jwe;\n }\n}\n","import { FlattenedEncrypt } from '../flattened/encrypt.js';\nexport class CompactEncrypt {\n constructor(plaintext) {\n this._flattened = new FlattenedEncrypt(plaintext);\n }\n setContentEncryptionKey(cek) {\n this._flattened.setContentEncryptionKey(cek);\n return this;\n }\n setInitializationVector(iv) {\n this._flattened.setInitializationVector(iv);\n return this;\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n setKeyManagementParameters(parameters) {\n this._flattened.setKeyManagementParameters(parameters);\n return this;\n }\n async encrypt(key, options) {\n const jwe = await this._flattened.encrypt(key, options);\n return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');\n }\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n","import epoch from '../lib/epoch.js';\nimport isObject from '../lib/is_object.js';\nimport secs from '../lib/secs.js';\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nexport class ProduceJWT {\n constructor(payload = {}) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this._payload = payload;\n }\n setIssuer(issuer) {\n this._payload = { ...this._payload, iss: issuer };\n return this;\n }\n setSubject(subject) {\n this._payload = { ...this._payload, sub: subject };\n return this;\n }\n setAudience(audience) {\n this._payload = { ...this._payload, aud: audience };\n return this;\n }\n setJti(jwtId) {\n this._payload = { ...this._payload, jti: jwtId };\n return this;\n }\n setNotBefore(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setExpirationTime(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', epoch(input)) };\n }\n else if (typeof input === 'string') {\n this._payload = {\n ...this._payload,\n iat: validateInput('setIssuedAt', epoch(new Date()) + secs(input)),\n };\n }\n else {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n }\n return this;\n }\n}\n","import { CompactEncrypt } from '../jwe/compact/encrypt.js';\nimport { encoder } from '../lib/buffer_utils.js';\nimport { ProduceJWT } from './produce.js';\nexport class EncryptJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setKeyManagementParameters(parameters) {\n if (this._keyManagementParameters) {\n throw new TypeError('setKeyManagementParameters can only be called once');\n }\n this._keyManagementParameters = parameters;\n return this;\n }\n setContentEncryptionKey(cek) {\n if (this._cek) {\n throw new TypeError('setContentEncryptionKey can only be called once');\n }\n this._cek = cek;\n return this;\n }\n setInitializationVector(iv) {\n if (this._iv) {\n throw new TypeError('setInitializationVector can only be called once');\n }\n this._iv = iv;\n return this;\n }\n replicateIssuerAsHeader() {\n this._replicateIssuerAsHeader = true;\n return this;\n }\n replicateSubjectAsHeader() {\n this._replicateSubjectAsHeader = true;\n return this;\n }\n replicateAudienceAsHeader() {\n this._replicateAudienceAsHeader = true;\n return this;\n }\n async encrypt(key, options) {\n const enc = new CompactEncrypt(encoder.encode(JSON.stringify(this._payload)));\n if (this._replicateIssuerAsHeader) {\n this._protectedHeader = { ...this._protectedHeader, iss: this._payload.iss };\n }\n if (this._replicateSubjectAsHeader) {\n this._protectedHeader = { ...this._protectedHeader, sub: this._payload.sub };\n }\n if (this._replicateAudienceAsHeader) {\n this._protectedHeader = { ...this._protectedHeader, aud: this._payload.aud };\n }\n enc.setProtectedHeader(this._protectedHeader);\n if (this._iv) {\n enc.setInitializationVector(this._iv);\n }\n if (this._cek) {\n enc.setContentEncryptionKey(this._cek);\n }\n if (this._keyManagementParameters) {\n enc.setKeyManagementParameters(this._keyManagementParameters);\n }\n return enc.encrypt(key, options);\n }\n}\n","import { decode as decodeBase64URL } from '../runtime/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../runtime/asn1.js';\nimport asKeyObject from '../runtime/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n throw new TypeError('\"spki\" must be SPKI formatted string');\n }\n return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n throw new TypeError('\"x509\" must be X.509 formatted string');\n }\n return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n }\n return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decodeBase64URL(jwk.k);\n case 'RSA':\n if (jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","import { unwrap as aesKw } from '../runtime/aeskw.js';\nimport * as ECDH from '../runtime/ecdhes.js';\nimport { decrypt as pbes2Kw } from '../runtime/pbes2kw.js';\nimport { decrypt as rsaEs } from '../runtime/rsaes.js';\nimport { decode as base64url } from '../runtime/base64url.js';\nimport normalize from '../runtime/normalize_key.js';\nimport { JOSENotSupported, JWEInvalid } from '../util/errors.js';\nimport { bitLength as cekLength } from '../lib/cek.js';\nimport { importJWK } from '../key/import.js';\nimport checkKeyType from './check_key_type.js';\nimport isObject from './is_object.js';\nimport { unwrap as aesGcmKw } from './aesgcmkw.js';\nasync function decryptKeyManagement(alg, key, encryptedKey, joseHeader, options) {\n checkKeyType(alg, key, 'decrypt');\n key = (await normalize.normalizePrivateKey?.(key, alg)) || key;\n switch (alg) {\n case 'dir': {\n if (encryptedKey !== undefined)\n throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n return key;\n }\n case 'ECDH-ES':\n if (encryptedKey !== undefined)\n throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n if (!isObject(joseHeader.epk))\n throw new JWEInvalid(`JOSE Header \"epk\" (Ephemeral Public Key) missing or invalid`);\n if (!ECDH.ecdhAllowed(key))\n throw new JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n const epk = await importJWK(joseHeader.epk, alg);\n let partyUInfo;\n let partyVInfo;\n if (joseHeader.apu !== undefined) {\n if (typeof joseHeader.apu !== 'string')\n throw new JWEInvalid(`JOSE Header \"apu\" (Agreement PartyUInfo) invalid`);\n try {\n partyUInfo = base64url(joseHeader.apu);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the apu');\n }\n }\n if (joseHeader.apv !== undefined) {\n if (typeof joseHeader.apv !== 'string')\n throw new JWEInvalid(`JOSE Header \"apv\" (Agreement PartyVInfo) invalid`);\n try {\n partyVInfo = base64url(joseHeader.apv);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the apv');\n }\n }\n const sharedSecret = await ECDH.deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, alg === 'ECDH-ES' ? cekLength(joseHeader.enc) : parseInt(alg.slice(-5, -2), 10), partyUInfo, partyVInfo);\n if (alg === 'ECDH-ES')\n return sharedSecret;\n if (encryptedKey === undefined)\n throw new JWEInvalid('JWE Encrypted Key missing');\n return aesKw(alg.slice(-6), sharedSecret, encryptedKey);\n }\n case 'RSA1_5':\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (encryptedKey === undefined)\n throw new JWEInvalid('JWE Encrypted Key missing');\n return rsaEs(alg, key, encryptedKey);\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW': {\n if (encryptedKey === undefined)\n throw new JWEInvalid('JWE Encrypted Key missing');\n if (typeof joseHeader.p2c !== 'number')\n throw new JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) missing or invalid`);\n const p2cLimit = options?.maxPBES2Count || 10000;\n if (joseHeader.p2c > p2cLimit)\n throw new JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) out is of acceptable bounds`);\n if (typeof joseHeader.p2s !== 'string')\n throw new JWEInvalid(`JOSE Header \"p2s\" (PBES2 Salt) missing or invalid`);\n let p2s;\n try {\n p2s = base64url(joseHeader.p2s);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the p2s');\n }\n return pbes2Kw(alg, key, encryptedKey, joseHeader.p2c, p2s);\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (encryptedKey === undefined)\n throw new JWEInvalid('JWE Encrypted Key missing');\n return aesKw(alg, key, encryptedKey);\n }\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW': {\n if (encryptedKey === undefined)\n throw new JWEInvalid('JWE Encrypted Key missing');\n if (typeof joseHeader.iv !== 'string')\n throw new JWEInvalid(`JOSE Header \"iv\" (Initialization Vector) missing or invalid`);\n if (typeof joseHeader.tag !== 'string')\n throw new JWEInvalid(`JOSE Header \"tag\" (Authentication Tag) missing or invalid`);\n let iv;\n try {\n iv = base64url(joseHeader.iv);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the iv');\n }\n let tag;\n try {\n tag = base64url(joseHeader.tag);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the tag');\n }\n return aesGcmKw(alg, key, encryptedKey, iv, tag);\n }\n default: {\n throw new JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n }\n }\n}\nexport default decryptKeyManagement;\n","const validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\nexport default validateAlgorithms;\n","import { decode as base64url } from '../../runtime/base64url.js';\nimport decrypt from '../../runtime/decrypt.js';\nimport { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport decryptKeyManagement from '../../lib/decrypt_key_management.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport generateCek from '../../lib/cek.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nexport async function flattenedDecrypt(jwe, key, options) {\n if (!isObject(jwe)) {\n throw new JWEInvalid('Flattened JWE must be an object');\n }\n if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {\n throw new JWEInvalid('JOSE Header missing');\n }\n if (jwe.iv !== undefined && typeof jwe.iv !== 'string') {\n throw new JWEInvalid('JWE Initialization Vector incorrect type');\n }\n if (typeof jwe.ciphertext !== 'string') {\n throw new JWEInvalid('JWE Ciphertext missing or incorrect type');\n }\n if (jwe.tag !== undefined && typeof jwe.tag !== 'string') {\n throw new JWEInvalid('JWE Authentication Tag incorrect type');\n }\n if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {\n throw new JWEInvalid('JWE Protected Header incorrect type');\n }\n if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {\n throw new JWEInvalid('JWE Encrypted Key incorrect type');\n }\n if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {\n throw new JWEInvalid('JWE AAD incorrect type');\n }\n if (jwe.header !== undefined && !isObject(jwe.header)) {\n throw new JWEInvalid('JWE Shared Unprotected Header incorrect type');\n }\n if (jwe.unprotected !== undefined && !isObject(jwe.unprotected)) {\n throw new JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');\n }\n let parsedProt;\n if (jwe.protected) {\n try {\n const protectedHeader = base64url(jwe.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWEInvalid('JWE Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jwe.header, jwe.unprotected)) {\n throw new JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jwe.header,\n ...jwe.unprotected,\n };\n validateCrit(JWEInvalid, new Map(), options?.crit, parsedProt, joseHeader);\n if (joseHeader.zip !== undefined) {\n throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n }\n const { alg, enc } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWEInvalid('missing JWE Algorithm (alg) in JWE Header');\n }\n if (typeof enc !== 'string' || !enc) {\n throw new JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');\n }\n const keyManagementAlgorithms = options && validateAlgorithms('keyManagementAlgorithms', options.keyManagementAlgorithms);\n const contentEncryptionAlgorithms = options &&\n validateAlgorithms('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms);\n if ((keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) ||\n (!keyManagementAlgorithms && alg.startsWith('PBES2'))) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n throw new JOSEAlgNotAllowed('\"enc\" (Encryption Algorithm) Header Parameter value not allowed');\n }\n let encryptedKey;\n if (jwe.encrypted_key !== undefined) {\n try {\n encryptedKey = base64url(jwe.encrypted_key);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the encrypted_key');\n }\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jwe);\n resolvedKey = true;\n }\n let cek;\n try {\n cek = await decryptKeyManagement(alg, key, encryptedKey, joseHeader, options);\n }\n catch (err) {\n if (err instanceof TypeError || err instanceof JWEInvalid || err instanceof JOSENotSupported) {\n throw err;\n }\n cek = generateCek(enc);\n }\n let iv;\n let tag;\n if (jwe.iv !== undefined) {\n try {\n iv = base64url(jwe.iv);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the iv');\n }\n }\n if (jwe.tag !== undefined) {\n try {\n tag = base64url(jwe.tag);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the tag');\n }\n }\n const protectedHeader = encoder.encode(jwe.protected ?? '');\n let additionalData;\n if (jwe.aad !== undefined) {\n additionalData = concat(protectedHeader, encoder.encode('.'), encoder.encode(jwe.aad));\n }\n else {\n additionalData = protectedHeader;\n }\n let ciphertext;\n try {\n ciphertext = base64url(jwe.ciphertext);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the ciphertext');\n }\n const plaintext = await decrypt(enc, cek, ciphertext, iv, tag, additionalData);\n const result = { plaintext };\n if (jwe.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jwe.aad !== undefined) {\n try {\n result.additionalAuthenticatedData = base64url(jwe.aad);\n }\n catch {\n throw new JWEInvalid('Failed to base64url decode the aad');\n }\n }\n if (jwe.unprotected !== undefined) {\n result.sharedUnprotectedHeader = jwe.unprotected;\n }\n if (jwe.header !== undefined) {\n result.unprotectedHeader = jwe.header;\n }\n if (resolvedKey) {\n return { ...result, key };\n }\n return result;\n}\n","import { flattenedDecrypt } from '../flattened/decrypt.js';\nimport { JWEInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactDecrypt(jwe, key, options) {\n if (jwe instanceof Uint8Array) {\n jwe = decoder.decode(jwe);\n }\n if (typeof jwe !== 'string') {\n throw new JWEInvalid('Compact JWE must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');\n if (length !== 5) {\n throw new JWEInvalid('Invalid Compact JWE');\n }\n const decrypted = await flattenedDecrypt({\n ciphertext,\n iv: iv || undefined,\n protected: protectedHeader,\n tag: tag || undefined,\n encrypted_key: encryptedKey || undefined,\n }, key, options);\n const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: decrypted.key };\n }\n return result;\n}\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nexport default (protectedHeader, encodedPayload, options = {}) => {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n};\n","import { compactDecrypt } from '../jwe/compact/decrypt.js';\nimport jwtPayload from '../lib/jwt_claims_set.js';\nimport { JWTClaimValidationFailed } from '../util/errors.js';\nexport async function jwtDecrypt(jwt, key, options) {\n const decrypted = await compactDecrypt(jwt, key, options);\n const payload = jwtPayload(decrypted.protectedHeader, decrypted.plaintext, options);\n const { protectedHeader } = decrypted;\n if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {\n throw new JWTClaimValidationFailed('replicated \"iss\" claim header parameter mismatch', payload, 'iss', 'mismatch');\n }\n if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {\n throw new JWTClaimValidationFailed('replicated \"sub\" claim header parameter mismatch', payload, 'sub', 'mismatch');\n }\n if (protectedHeader.aud !== undefined &&\n JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {\n throw new JWTClaimValidationFailed('replicated \"aud\" claim header parameter mismatch', payload, 'aud', 'mismatch');\n }\n const result = { payload, protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: decrypted.key };\n }\n return result;\n}\n","/**\n *\n *\n * This module contains functions and types\n * to encode and decode {@link https://authjs.dev/concepts/session-strategies#jwt-session JWT}s\n * issued and used by Auth.js.\n *\n * The JWT issued by Auth.js is _encrypted by default_, using the _A256CBC-HS512_ algorithm ({@link https://www.rfc-editor.org/rfc/rfc7518.html#section-5.2.5 JWE}).\n * It uses the `AUTH_SECRET` environment variable or the passed `secret` propery to derive a suitable encryption key.\n *\n * :::info Note\n * Auth.js JWTs are meant to be used by the same app that issued them.\n * If you need JWT authentication for your third-party API, you should rely on your Identity Provider instead.\n * :::\n *\n * ## Installation\n *\n * ```bash npm2yarn\n * npm install @auth/core\n * ```\n *\n * You can then import this submodule from `@auth/core/jwt`.\n *\n * ## Usage\n *\n * :::warning Warning\n * This module *will* be refactored/changed. We do not recommend relying on it right now.\n * :::\n *\n *\n * ## Resources\n *\n * - [What is a JWT session strategy](https://authjs.dev/concepts/session-strategies#jwt-session)\n * - [RFC7519 - JSON Web Token (JWT)](https://www.rfc-editor.org/rfc/rfc7519)\n *\n * @module jwt\n */\nimport { hkdf } from \"@panva/hkdf\";\nimport { EncryptJWT, base64url, calculateJwkThumbprint, jwtDecrypt } from \"jose\";\nimport { SessionStore } from \"./lib/utils/cookie.js\";\nimport { MissingSecret } from \"./errors.js\";\nimport { parse } from \"cookie\";\nconst DEFAULT_MAX_AGE = 30 * 24 * 60 * 60; // 30 days\nconst now = () => (Date.now() / 1000) | 0;\nconst alg = \"dir\";\nconst enc = \"A256CBC-HS512\";\n/** Issues a JWT. By default, the JWT is encrypted using \"A256CBC-HS512\". */\nexport async function encode(params) {\n const { token = {}, secret, maxAge = DEFAULT_MAX_AGE, salt } = params;\n const secrets = Array.isArray(secret) ? secret : [secret];\n const encryptionSecret = await getDerivedEncryptionKey(enc, secrets[0], salt);\n const thumbprint = await calculateJwkThumbprint({ kty: \"oct\", k: base64url.encode(encryptionSecret) }, `sha${encryptionSecret.byteLength << 3}`);\n // @ts-expect-error `jose` allows any object as payload.\n return await new EncryptJWT(token)\n .setProtectedHeader({ alg, enc, kid: thumbprint })\n .setIssuedAt()\n .setExpirationTime(now() + maxAge)\n .setJti(crypto.randomUUID())\n .encrypt(encryptionSecret);\n}\n/** Decodes a Auth.js issued JWT. */\nexport async function decode(params) {\n const { token, secret, salt } = params;\n const secrets = Array.isArray(secret) ? secret : [secret];\n if (!token)\n return null;\n const { payload } = await jwtDecrypt(token, async ({ kid, enc }) => {\n for (const secret of secrets) {\n const encryptionSecret = await getDerivedEncryptionKey(enc, secret, salt);\n if (kid === undefined)\n return encryptionSecret;\n const thumbprint = await calculateJwkThumbprint({ kty: \"oct\", k: base64url.encode(encryptionSecret) }, `sha${encryptionSecret.byteLength << 3}`);\n if (kid === thumbprint)\n return encryptionSecret;\n }\n throw new Error(\"no matching decryption secret\");\n }, {\n clockTolerance: 15,\n keyManagementAlgorithms: [alg],\n contentEncryptionAlgorithms: [enc, \"A256GCM\"],\n });\n return payload;\n}\nexport async function getToken(params) {\n const { secureCookie, cookieName = secureCookie\n ? \"__Secure-authjs.session-token\"\n : \"authjs.session-token\", decode: _decode = decode, salt = cookieName, secret, logger = console, raw, req, } = params;\n if (!req)\n throw new Error(\"Must pass `req` to JWT getToken()\");\n if (!secret)\n throw new MissingSecret(\"Must pass `secret` if not set to JWT getToken()\");\n const headers = req.headers instanceof Headers ? req.headers : new Headers(req.headers);\n const sessionStore = new SessionStore({ name: cookieName, options: { secure: secureCookie } }, parse(headers.get(\"cookie\") ?? \"\"), logger);\n let token = sessionStore.value;\n const authorizationHeader = headers.get(\"authorization\");\n if (!token && authorizationHeader?.split(\" \")[0] === \"Bearer\") {\n const urlEncodedToken = authorizationHeader.split(\" \")[1];\n token = decodeURIComponent(urlEncodedToken);\n }\n if (!token)\n return null;\n if (raw)\n return token;\n try {\n return await _decode({ token, secret, salt });\n }\n catch {\n return null;\n }\n}\nasync function getDerivedEncryptionKey(enc, keyMaterial, salt) {\n let length;\n switch (enc) {\n case \"A256CBC-HS512\":\n length = 64;\n break;\n case \"A256GCM\":\n length = 32;\n break;\n default:\n throw new Error(\"Unsupported JWT Content Encryption Algorithm\");\n }\n return await hkdf(\"sha256\", keyMaterial, salt, `Auth.js Generated Encryption Key (${salt})`, length);\n}\n","/**\n * Get callback URL based on query param / cookie + validation,\n * and add it to `req.options.callbackUrl`.\n */\nexport async function createCallbackUrl({ options, paramValue, cookieValue, }) {\n const { url, callbacks } = options;\n let callbackUrl = url.origin;\n if (paramValue) {\n // If callbackUrl form field or query parameter is passed try to use it if allowed\n callbackUrl = await callbacks.redirect({\n url: paramValue,\n baseUrl: url.origin,\n });\n }\n else if (cookieValue) {\n // If no callbackUrl specified, try using the value from the cookie if allowed\n callbackUrl = await callbacks.redirect({\n url: cookieValue,\n baseUrl: url.origin,\n });\n }\n return {\n callbackUrl,\n // Save callback URL in a cookie so that it can be used for subsequent requests in signin/signout/callback flow\n callbackUrlCookie: callbackUrl !== cookieValue ? callbackUrl : undefined,\n };\n}\n","import { AuthError } from \"../../errors.js\";\nconst red = \"\\x1b[31m\";\nconst yellow = \"\\x1b[33m\";\nconst grey = \"\\x1b[90m\";\nconst reset = \"\\x1b[0m\";\nexport const logger = {\n error(error) {\n const name = error instanceof AuthError ? error.type : error.name;\n console.error(`${red}[auth][error]${reset} ${name}: ${error.message}`);\n if (error.cause &&\n typeof error.cause === \"object\" &&\n \"err\" in error.cause &&\n error.cause.err instanceof Error) {\n const { err, ...data } = error.cause;\n console.error(`${red}[auth][cause]${reset}:`, err.stack);\n if (data)\n console.error(`${red}[auth][details]${reset}:`, JSON.stringify(data, null, 2));\n }\n else if (error.stack) {\n console.error(error.stack.replace(/.*/, \"\").substring(1));\n }\n },\n warn(code) {\n const url = `https://warnings.authjs.dev#${code}`;\n console.warn(`${yellow}[auth][warn][${code}]${reset}`, `Read more: ${url}`);\n },\n debug(message, metadata) {\n console.log(`${grey}[auth][debug]:${reset} ${message}`, JSON.stringify(metadata, null, 2));\n },\n};\n/**\n * Override the built-in logger with user's implementation.\n * Any `undefined` level will use the default logger.\n */\nexport function setLogger(newLogger = {}, debug) {\n // Turn off debug logging if `debug` isn't set to `true`\n if (!debug)\n logger.debug = () => { };\n if (newLogger.error)\n logger.error = newLogger.error;\n if (newLogger.warn)\n logger.warn = newLogger.warn;\n if (newLogger.debug)\n logger.debug = newLogger.debug;\n}\n","const actions = [\n \"providers\",\n \"session\",\n \"csrf\",\n \"signin\",\n \"signout\",\n \"callback\",\n \"verify-request\",\n \"error\",\n \"webauthn-options\",\n];\nexport function isAuthAction(action) {\n return actions.includes(action);\n}\n","import { parse as parseCookie, serialize } from \"cookie\";\nimport { UnknownAction } from \"../../errors.js\";\nimport { logger } from \"./logger.js\";\nimport { isAuthAction } from \"./actions.js\";\nasync function getBody(req) {\n if (!(\"body\" in req) || !req.body || req.method !== \"POST\")\n return;\n const contentType = req.headers.get(\"content-type\");\n if (contentType?.includes(\"application/json\")) {\n return await req.json();\n }\n else if (contentType?.includes(\"application/x-www-form-urlencoded\")) {\n const params = new URLSearchParams(await req.text());\n return Object.fromEntries(params);\n }\n}\nexport async function toInternalRequest(req, config) {\n try {\n if (req.method !== \"GET\" && req.method !== \"POST\")\n throw new UnknownAction(\"Only GET and POST requests are supported.\");\n // Defaults are usually set in the `init` function, but this is needed below\n config.basePath ?? (config.basePath = \"/auth\");\n const url = new URL(req.url);\n const { action, providerId } = parseActionAndProviderId(url.pathname, config.basePath);\n return {\n url,\n action,\n providerId,\n method: req.method,\n headers: Object.fromEntries(req.headers),\n body: req.body ? await getBody(req) : undefined,\n cookies: parseCookie(req.headers.get(\"cookie\") ?? \"\") ?? {},\n error: url.searchParams.get(\"error\") ?? undefined,\n query: Object.fromEntries(url.searchParams),\n };\n }\n catch (e) {\n logger.error(e);\n logger.debug(\"request\", req);\n }\n}\nexport function toRequest(request) {\n return new Request(request.url, {\n headers: request.headers,\n method: request.method,\n body: request.method === \"POST\"\n ? JSON.stringify(request.body ?? {})\n : undefined,\n });\n}\nexport function toResponse(res) {\n const headers = new Headers(res.headers);\n res.cookies?.forEach((cookie) => {\n const { name, value, options } = cookie;\n const cookieHeader = serialize(name, value, options);\n if (headers.has(\"Set-Cookie\"))\n headers.append(\"Set-Cookie\", cookieHeader);\n else\n headers.set(\"Set-Cookie\", cookieHeader);\n });\n let body = res.body;\n if (headers.get(\"content-type\") === \"application/json\")\n body = JSON.stringify(res.body);\n else if (headers.get(\"content-type\") === \"application/x-www-form-urlencoded\")\n body = new URLSearchParams(res.body).toString();\n const status = res.redirect ? 302 : res.status ?? 200;\n const response = new Response(body, { headers, status });\n if (res.redirect)\n response.headers.set(\"Location\", res.redirect);\n return response;\n}\n/** Web compatible method to create a hash, using SHA256 */\nexport async function createHash(message) {\n const data = new TextEncoder().encode(message);\n const hash = await crypto.subtle.digest(\"SHA-256\", data);\n return Array.from(new Uint8Array(hash))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\")\n .toString();\n}\n/** Web compatible method to create a random string of a given length */\nexport function randomString(size) {\n const i2hex = (i) => (\"0\" + i.toString(16)).slice(-2);\n const r = (a, i) => a + i2hex(i);\n const bytes = crypto.getRandomValues(new Uint8Array(size));\n return Array.from(bytes).reduce(r, \"\");\n}\n/** @internal Parse the action and provider id from a URL pathname. */\nexport function parseActionAndProviderId(pathname, base) {\n const a = pathname.match(new RegExp(`^${base}(.+)`));\n if (a === null)\n throw new UnknownAction(`Cannot parse action at ${pathname}`);\n const actionAndProviderId = a.at(-1);\n const b = actionAndProviderId.replace(/^\\//, \"\").split(\"/\").filter(Boolean);\n if (b.length !== 1 && b.length !== 2)\n throw new UnknownAction(`Cannot parse action at ${pathname}`);\n const [action, providerId] = b;\n if (!isAuthAction(action))\n throw new UnknownAction(`Cannot parse action at ${pathname}`);\n if (providerId &&\n ![\"signin\", \"callback\", \"webauthn-options\"].includes(action))\n throw new UnknownAction(`Cannot parse action at ${pathname}`);\n return { action, providerId };\n}\n","import { createHash, randomString } from \"../../../utils/web.js\";\nimport { MissingCSRF } from \"../../../../errors.js\";\n/**\n * Ensure CSRF Token cookie is set for any subsequent requests.\n * Used as part of the strategy for mitigation for CSRF tokens.\n *\n * Creates a cookie like 'next-auth.csrf-token' with the value 'token|hash',\n * where 'token' is the CSRF token and 'hash' is a hash made of the token and\n * the secret, and the two values are joined by a pipe '|'. By storing the\n * value and the hash of the value (with the secret used as a salt) we can\n * verify the cookie was set by the server and not by a malicious attacker.\n *\n * For more details, see the following OWASP links:\n * https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie\n * https://owasp.org/www-chapter-london/assets/slides/David_Johansson-Double_Defeat_of_Double-Submit_Cookie.pdf\n */\nexport async function createCSRFToken({ options, cookieValue, isPost, bodyValue, }) {\n if (cookieValue) {\n const [csrfToken, csrfTokenHash] = cookieValue.split(\"|\");\n const expectedCsrfTokenHash = await createHash(`${csrfToken}${options.secret}`);\n if (csrfTokenHash === expectedCsrfTokenHash) {\n // If hash matches then we trust the CSRF token value\n // If this is a POST request and the CSRF Token in the POST request matches\n // the cookie we have already verified is the one we have set, then the token is verified!\n const csrfTokenVerified = isPost && csrfToken === bodyValue;\n return { csrfTokenVerified, csrfToken };\n }\n }\n // New CSRF token\n const csrfToken = randomString(32);\n const csrfTokenHash = await createHash(`${csrfToken}${options.secret}`);\n const cookie = `${csrfToken}|${csrfTokenHash}`;\n return { cookie, csrfToken };\n}\nexport function validateCSRF(action, verified) {\n if (verified)\n return;\n throw new MissingCSRF(`CSRF token was missing during an action ${action}`);\n}\n","// Source: https://stackoverflow.com/a/34749873/5364135\n/** Simple object check */\nfunction isObject(item) {\n return item && typeof item === \"object\" && !Array.isArray(item);\n}\n/** Deep merge two objects */\nexport function merge(target, ...sources) {\n if (!sources.length)\n return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key])\n Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n}\n","import { merge } from \"./merge.js\";\n/**\n * Adds `signinUrl` and `callbackUrl` to each provider\n * and deep merge user-defined options.\n */\nexport default function parseProviders(params) {\n const { providerId, options } = params;\n const url = new URL(options.basePath ?? \"/auth\", params.url.origin);\n const providers = params.providers.map((p) => {\n const provider = typeof p === \"function\" ? p() : p;\n const { options: userOptions, ...defaults } = provider;\n const id = (userOptions?.id ?? defaults.id);\n // TODO: Support if properties have different types, e.g. authorization: string or object\n const merged = merge(defaults, userOptions, {\n signinUrl: `${url}/signin/${id}`,\n callbackUrl: `${url}/callback/${id}`,\n });\n if (provider.type === \"oauth\" || provider.type === \"oidc\") {\n merged.redirectProxyUrl ?? (merged.redirectProxyUrl = options.redirectProxyUrl);\n return normalizeOAuth(merged);\n }\n return merged;\n });\n return {\n providers,\n provider: providers.find(({ id }) => id === providerId),\n };\n}\n// TODO: Also add discovery here, if some endpoints/config are missing.\n// We should return both a client and authorization server config.\nfunction normalizeOAuth(c) {\n if (c.issuer)\n c.wellKnown ?? (c.wellKnown = `${c.issuer}/.well-known/openid-configuration`);\n const authorization = normalizeEndpoint(c.authorization, c.issuer);\n if (authorization && !authorization.url?.searchParams.has(\"scope\")) {\n authorization.url.searchParams.set(\"scope\", \"openid profile email\");\n }\n const token = normalizeEndpoint(c.token, c.issuer);\n const userinfo = normalizeEndpoint(c.userinfo, c.issuer);\n const checks = c.checks ?? [\"pkce\"];\n if (c.redirectProxyUrl) {\n if (!checks.includes(\"state\"))\n checks.push(\"state\");\n c.redirectProxyUrl = `${c.redirectProxyUrl}/callback/${c.id}`;\n }\n return {\n ...c,\n authorization,\n token,\n checks,\n userinfo,\n profile: c.profile ?? defaultProfile,\n account: c.account ?? defaultAccount,\n };\n}\n/**\n * Returns basic user profile from the userinfo response/`id_token` claims.\n * The returned `id` will become the `account.providerAccountId`. `user.id`\n * and `account.id` are auto-generated UUID's.\n *\n * The result if this function is used to create the `User` in the database.\n * @see https://authjs.dev/reference/core/adapters#user\n * @see https://openid.net/specs/openid-connect-core-1_0.html#IDToken\n * @see https://openid.net/specs/openid-connect-core-1_0.html#\n */\nconst defaultProfile = (profile) => {\n return stripUndefined({\n id: profile.sub ?? profile.id ?? crypto.randomUUID(),\n name: profile.name ?? profile.nickname ?? profile.preferred_username,\n email: profile.email,\n image: profile.picture,\n });\n};\n/**\n * Returns basic OAuth/OIDC values from the token response.\n * @see https://www.ietf.org/rfc/rfc6749.html#section-5.1\n * @see https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse\n * @see https://authjs.dev/reference/core/adapters#account\n */\nconst defaultAccount = (account) => {\n return stripUndefined({\n access_token: account.access_token,\n id_token: account.id_token,\n refresh_token: account.refresh_token,\n expires_at: account.expires_at,\n scope: account.scope,\n token_type: account.token_type,\n session_state: account.session_state,\n });\n};\nfunction stripUndefined(o) {\n const result = {};\n for (let [k, v] of Object.entries(o))\n v !== undefined && (result[k] = v);\n return result;\n}\nfunction normalizeEndpoint(e, issuer) {\n if (!e && issuer)\n return;\n if (typeof e === \"string\") {\n return { url: new URL(e) };\n }\n // If e.url is undefined, it's because the provider config\n // assumes that we will use the issuer endpoint.\n // The existence of either e.url or provider.issuer is checked in\n // assert.ts. We fallback to \"https://authjs.dev\" to be able to pass around\n // a valid URL even if the user only provided params.\n // NOTE: This need to be checked when constructing the URL\n // for the authorization, token and userinfo endpoints.\n const url = new URL(e?.url ?? \"https://authjs.dev\");\n if (e?.params != null) {\n for (let [key, value] of Object.entries(e.params)) {\n if (key === \"claims\")\n value = JSON.stringify(value);\n url.searchParams.set(key, String(value));\n }\n }\n return { url, request: e?.request, conform: e?.conform };\n}\n","import * as jwt from \"../jwt.js\";\nimport { createCallbackUrl } from \"./utils/callback-url.js\";\nimport * as cookie from \"./utils/cookie.js\";\nimport { createCSRFToken } from \"./actions/callback/oauth/csrf-token.js\";\nimport { AdapterError, EventError } from \"../errors.js\";\nimport parseProviders from \"./utils/providers.js\";\nimport { logger } from \"./utils/logger.js\";\nimport { merge } from \"./utils/merge.js\";\nexport const defaultCallbacks = {\n signIn() {\n return true;\n },\n redirect({ url, baseUrl }) {\n if (url.startsWith(\"/\"))\n return `${baseUrl}${url}`;\n else if (new URL(url).origin === baseUrl)\n return url;\n return baseUrl;\n },\n session({ session }) {\n return {\n user: {\n name: session.user?.name,\n email: session.user?.email,\n image: session.user?.image,\n },\n expires: session.expires?.toISOString?.() ?? session.expires,\n };\n },\n jwt({ token }) {\n return token;\n },\n};\n/** Initialize all internal options and cookies. */\nexport async function init({ authOptions, providerId, action, url, cookies: reqCookies, callbackUrl: reqCallbackUrl, csrfToken: reqCsrfToken, csrfDisabled, isPost, }) {\n const { providers, provider } = parseProviders({\n providers: authOptions.providers,\n url,\n providerId,\n options: authOptions,\n });\n const maxAge = 30 * 24 * 60 * 60; // Sessions expire after 30 days of being idle by default\n let isOnRedirectProxy = false;\n if ((provider?.type === \"oauth\" || provider?.type === \"oidc\") &&\n provider.redirectProxyUrl) {\n try {\n isOnRedirectProxy =\n new URL(provider.redirectProxyUrl).origin === url.origin;\n }\n catch {\n throw new TypeError(`redirectProxyUrl must be a valid URL. Received: ${provider.redirectProxyUrl}`);\n }\n }\n // User provided options are overridden by other options,\n // except for the options with special handling above\n const options = {\n debug: false,\n pages: {},\n theme: {\n colorScheme: \"auto\",\n logo: \"\",\n brandColor: \"\",\n buttonText: \"\",\n },\n // Custom options override defaults\n ...authOptions,\n // These computed settings can have values in userOptions but we override them\n // and are request-specific.\n url,\n action,\n // @ts-expect-errors\n provider,\n cookies: merge(cookie.defaultCookies(authOptions.useSecureCookies ?? url.protocol === \"https:\"), authOptions.cookies),\n providers,\n // Session options\n session: {\n // If no adapter specified, force use of JSON Web Tokens (stateless)\n strategy: authOptions.adapter ? \"database\" : \"jwt\",\n maxAge,\n updateAge: 24 * 60 * 60,\n generateSessionToken: () => crypto.randomUUID(),\n ...authOptions.session,\n },\n // JWT options\n jwt: {\n secret: authOptions.secret, // Asserted in assert.ts\n maxAge: authOptions.session?.maxAge ?? maxAge, // default to same as `session.maxAge`\n encode: jwt.encode,\n decode: jwt.decode,\n ...authOptions.jwt,\n },\n // Event messages\n events: eventsErrorHandler(authOptions.events ?? {}, logger),\n adapter: adapterErrorHandler(authOptions.adapter, logger),\n // Callback functions\n callbacks: { ...defaultCallbacks, ...authOptions.callbacks },\n logger,\n callbackUrl: url.origin,\n isOnRedirectProxy,\n experimental: {\n ...authOptions.experimental,\n },\n };\n // Init cookies\n const cookies = [];\n if (csrfDisabled) {\n options.csrfTokenVerified = true;\n }\n else {\n const { csrfToken, cookie: csrfCookie, csrfTokenVerified, } = await createCSRFToken({\n options,\n cookieValue: reqCookies?.[options.cookies.csrfToken.name],\n isPost,\n bodyValue: reqCsrfToken,\n });\n options.csrfToken = csrfToken;\n options.csrfTokenVerified = csrfTokenVerified;\n if (csrfCookie) {\n cookies.push({\n name: options.cookies.csrfToken.name,\n value: csrfCookie,\n options: options.cookies.csrfToken.options,\n });\n }\n }\n const { callbackUrl, callbackUrlCookie } = await createCallbackUrl({\n options,\n cookieValue: reqCookies?.[options.cookies.callbackUrl.name],\n paramValue: reqCallbackUrl,\n });\n options.callbackUrl = callbackUrl;\n if (callbackUrlCookie) {\n cookies.push({\n name: options.cookies.callbackUrl.name,\n value: callbackUrlCookie,\n options: options.cookies.callbackUrl.options,\n });\n }\n return { options, cookies };\n}\n/** Wraps an object of methods and adds error handling. */\nfunction eventsErrorHandler(methods, logger) {\n return Object.keys(methods).reduce((acc, name) => {\n acc[name] = async (...args) => {\n try {\n const method = methods[name];\n return await method(...args);\n }\n catch (e) {\n logger.error(new EventError(e));\n }\n };\n return acc;\n }, {});\n}\n/** Handles adapter induced errors. */\nfunction adapterErrorHandler(adapter, logger) {\n if (!adapter)\n return;\n return Object.keys(adapter).reduce((acc, name) => {\n acc[name] = async (...args) => {\n try {\n logger.debug(`adapter_${name}`, { args });\n const method = adapter[name];\n return await method(...args);\n }\n catch (e) {\n const error = new AdapterError(e);\n logger.error(error);\n throw error;\n }\n };\n return acc;\n }, {});\n}\n","var n,l,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return v(l,f,t,o,null)}function v(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function y(){return{current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l0?v(k.type,k.props,k.key,k.ref?k.ref:null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(d=x[h])||d&&k.key==d.key&&k.type===d.type)x[h]=void 0;else for(y=0;y2&&(f.children=arguments.length>3?n.call(arguments,2):i),v(l.type,f,t||l.key,o||l.ref,null)}function B(n,l){var u={__c:l=\"__cC\"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(b)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=e.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),b(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),b(this))},d.prototype.render=p,t=[],g.__r=0,r=0;export{d as Component,p as Fragment,q as cloneElement,B as createContext,h as createElement,y as createRef,h,S as hydrate,i as isValidElement,l as options,P as render,x as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{Fragment as e,options as t}from\"preact\";var r=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,n=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,o=/[\\s\\n\\\\/='\"\\0<>]/,i=/^xlink:?./,a=/[\"&<]/;function l(e){if(!1===a.test(e+=\"\"))return e;for(var t=0,r=0,n=\"\",o=\"\";r(t||40)||!r&&-1!==String(e).indexOf(\"\\n\")||-1!==String(e).indexOf(\"<\")},c={},u=/([A-Z])/g;function p(e){var t=\"\";for(var n in e){var o=e[n];null!=o&&\"\"!==o&&(t&&(t+=\" \"),t+=\"-\"==n[0]?n:c[n]||(c[n]=n.replace(u,\"-$1\").toLowerCase()),t=\"number\"==typeof o&&!1===r.test(n)?t+\": \"+o+\"px;\":t+\": \"+o+\";\")}return t||void 0}function _(e,t){return Array.isArray(t)?t.reduce(_,e):null!=t&&!1!==t&&e.push(t),e}function d(){this.__d=!0}function v(e,t){return{__v:e,context:t,props:e.props,setState:d,forceUpdate:d,__d:!0,__h:[]}}function h(e,t){var r=e.contextType,n=r&&t[r.__c];return null!=r?n?n.props.value:r.__:t}var g=[];function y(r,a,c,u,d,m){if(null==r||\"boolean\"==typeof r)return\"\";if(\"object\"!=typeof r)return l(r);var b=c.pretty,x=b&&\"string\"==typeof b?b:\"\\t\";if(Array.isArray(r)){for(var k=\"\",S=0;S0&&(k+=\"\\n\"),k+=y(r[S],a,c,u,d,m);return k}var w,C=r.type,O=r.props,j=!1;if(\"function\"==typeof C){if(j=!0,!c.shallow||!u&&!1!==c.renderRootComponent){if(C===e){var A=[];return _(A,r.props.children),y(A,a,c,!1!==c.shallowHighOrder,d,m)}var F,H=r.__c=v(r,a);t.__b&&t.__b(r);var M=t.__r;if(C.prototype&&\"function\"==typeof C.prototype.render){var L=h(C,a);(H=r.__c=new C(O,L)).__v=r,H._dirty=H.__d=!0,H.props=O,null==H.state&&(H.state={}),null==H._nextState&&null==H.__s&&(H._nextState=H.__s=H.state),H.context=L,C.getDerivedStateFromProps?H.state=Object.assign({},H.state,C.getDerivedStateFromProps(H.props,H.state)):H.componentWillMount&&(H.componentWillMount(),H.state=H._nextState!==H.state?H._nextState:H.__s!==H.state?H.__s:H.state),M&&M(r),F=H.render(H.props,H.state,H.context)}else for(var T=h(C,a),E=0;H.__d&&E++<25;)H.__d=!1,M&&M(r),F=C.call(r.__c,O,T);return H.getChildContext&&(a=Object.assign({},a,H.getChildContext())),t.diffed&&t.diffed(r),y(F,a,c,!1!==c.shallowHighOrder,d,m)}C=(w=C).displayName||w!==Function&&w.name||function(e){var t=(Function.prototype.toString.call(e).match(/^\\s*function\\s+([^( ]+)/)||\"\")[1];if(!t){for(var r=-1,n=g.length;n--;)if(g[n]===e){r=n;break}r<0&&(r=g.push(e)-1),t=\"UnnamedComponent\"+r}return t}(w)}var $,D,N=\"<\"+C;if(O){var P=Object.keys(O);c&&!0===c.sortAttributes&&P.sort();for(var W=0;W\",o.test(C))throw new Error(C+\" is not a valid HTML tag name in \"+N);var q,z=n.test(C)||c.voidElements&&c.voidElements.test(C),Z=[];if(D)b&&f(D)&&(D=\"\\n\"+x+s(D,x)),N+=D;else if(null!=$&&_(q=[],$).length){for(var B=b&&~N.indexOf(\"\\n\"),G=!1,J=0;J0&&\"<\"!=Q[0];G&&X?Z[Z.length-1]+=Q:Z.push(Q),G=X}else Z.push(Q)}}if(b&&B)for(var Y=Z.length;Y--;)Z[Y]=\"\\n\"+x+s(Z[Y],x)}if(Z.length||D)N+=Z.join(\"\");else if(c&&c.xml)return N.substring(0,N.length-1)+\" />\";return!z||q||D?(b&&~N.indexOf(\"\\n\")&&(N+=\"\\n\"),N=N+\"\"):N=N.replace(/>$/,\" />\"),N}var m={shallow:!0};k.render=k;var b=function(e,t){return k(e,t,m)},x=[];function k(e,r,n){r=r||{};var o,i=t.__s;return t.__s=!0,o=n&&(n.pretty||n.voidElements||n.sortAttributes||n.shallow||n.allAttributes||n.xml||n.attributeHook)?y(e,r,n):j(e,r,!1,void 0),t.__c&&t.__c(e,x),t.__s=i,x.length=0,o}function S(e,t){return\"className\"===e?\"class\":\"htmlFor\"===e?\"for\":\"defaultValue\"===e?\"value\":\"defaultChecked\"===e?\"checked\":\"defaultSelected\"===e?\"selected\":t&&i.test(e)?e.toLowerCase().replace(/^xlink:?/,\"xlink:\"):e}function w(e,t){return\"style\"===e&&null!=t&&\"object\"==typeof t?p(t):\"a\"===e[0]&&\"r\"===e[1]&&\"boolean\"==typeof t?String(t):t}var C=Array.isArray,O=Object.assign;function j(r,i,a,s){if(null==r||!0===r||!1===r||\"\"===r)return\"\";if(\"object\"!=typeof r)return l(r);if(C(r)){for(var f=\"\",c=0;c\",o.test(u))throw new Error(u+\" is not a valid HTML tag name in \"+b);var F=\"\",H=!1;if(m)F+=m,H=!0;else if(\"string\"==typeof y)F+=l(y),H=!0;else if(C(y))for(var M=0;M\";return b+\"\"}k.shallowRender=b;export default k;export{k as render,k as renderToStaticMarkup,k as renderToString,b as shallowRender};\n//# sourceMappingURL=index.module.js.map\n","import{options as r}from\"preact\";export{Fragment}from\"preact\";var _=0;function o(o,e,n,t,f){var l,s,u={};for(s in e)\"ref\"==s?l=e[s]:u[s]=e[s];var a={type:o,props:u,key:n,ref:l,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--_,__source:f,__self:t};if(\"function\"==typeof o&&(l=o.defaultProps))for(s in l)void 0===u[s]&&(u[s]=l[s]);return r.vnode&&r.vnode(a),a}export{o as jsx,o as jsxDEV,o as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\n/** Renders an error page. */\nexport default function ErrorPage(props) {\n const { url, error = \"default\", theme } = props;\n const signinPageUrl = `${url}/signin`;\n const errors = {\n default: {\n status: 200,\n heading: \"Error\",\n message: (_jsx(\"p\", { children: _jsx(\"a\", { className: \"site\", href: url?.origin, children: url?.host }) })),\n },\n Configuration: {\n status: 500,\n heading: \"Server error\",\n message: (_jsxs(\"div\", { children: [_jsx(\"p\", { children: \"There is a problem with the server configuration.\" }), _jsx(\"p\", { children: \"Check the server logs for more information.\" })] })),\n },\n AccessDenied: {\n status: 403,\n heading: \"Access Denied\",\n message: (_jsxs(\"div\", { children: [_jsx(\"p\", { children: \"You do not have permission to sign in.\" }), _jsx(\"p\", { children: _jsx(\"a\", { className: \"button\", href: signinPageUrl, children: \"Sign in\" }) })] })),\n },\n Verification: {\n status: 403,\n heading: \"Unable to sign in\",\n message: (_jsxs(\"div\", { children: [_jsx(\"p\", { children: \"The sign in link is no longer valid.\" }), _jsx(\"p\", { children: \"It may have been used already or it may have expired.\" })] })),\n signin: (_jsx(\"a\", { className: \"button\", href: signinPageUrl, children: \"Sign in\" })),\n },\n };\n const { status, heading, message, signin } = errors[error] ?? errors.default;\n return {\n status,\n html: (_jsxs(\"div\", { className: \"error\", children: [theme?.brandColor && (_jsx(\"style\", { dangerouslySetInnerHTML: {\n __html: `\n :root {\n --brand-color: ${theme?.brandColor}\n }\n `,\n } })), _jsxs(\"div\", { className: \"card\", children: [theme?.logo && _jsx(\"img\", { src: theme?.logo, alt: \"Logo\", className: \"logo\" }), _jsx(\"h1\", { children: heading }), _jsx(\"div\", { className: \"message\", children: message }), signin] })] })),\n };\n}\n","//@ts-check\n// Declare a SimpleWebAuthnBrowser variable as part of \"window\"\n/** @typedef {\"authenticate\"} WebAuthnAuthenticate */\n/** @typedef {\"register\"} WebAuthnRegister */\n/** @typedef {WebAuthnRegister | WebAuthnAuthenticate} WebAuthnOptionsAction */\n/**\n * @template {WebAuthnOptionsAction} T\n * @typedef {T extends WebAuthnAuthenticate ?\n * { options: import(\"@simplewebauthn/types\").PublicKeyCredentialRequestOptionsJSON; action: \"authenticate\" } :\n * T extends WebAuthnRegister ?\n * { options: import(\"@simplewebauthn/types\").PublicKeyCredentialCreationOptionsJSON; action: \"register\" } :\n * never\n * } WebAuthnOptionsReturn\n */\n/**\n * webauthnScript is the client-side script that handles the webauthn form\n *\n * @param {string} authURL is the URL of the auth API\n * @param {string} providerID is the ID of the webauthn provider\n */\nexport async function webauthnScript(authURL, providerID) {\n /** @type {typeof import(\"@simplewebauthn/browser\")} */\n // @ts-ignore\n const WebAuthnBrowser = window.SimpleWebAuthnBrowser;\n /**\n * Fetch webauthn options from the server\n *\n * @template {WebAuthnOptionsAction} T\n * @param {T | undefined} action action to fetch options for\n * @returns {Promise | undefined>}\n */\n async function fetchOptions(action) {\n // Create the options URL with the action and query parameters\n const url = new URL(`${authURL}/webauthn-options/${providerID}`);\n if (action)\n url.searchParams.append(\"action\", action);\n const formFields = getFormFields();\n formFields.forEach((field) => {\n url.searchParams.append(field.name, field.value);\n });\n const res = await fetch(url);\n if (!res.ok) {\n console.error(\"Failed to fetch options\", res);\n return;\n }\n return res.json();\n }\n /**\n * Get the webauthn form from the page\n *\n * @returns {HTMLFormElement}\n */\n function getForm() {\n const formID = `#${providerID}-form`;\n /** @type {HTMLFormElement | null} */\n const form = document.querySelector(formID);\n if (!form)\n throw new Error(`Form '${formID}' not found`);\n return form;\n }\n /**\n * Get formFields from the form\n *\n * @returns {HTMLInputElement[]}\n */\n function getFormFields() {\n const form = getForm();\n /** @type {HTMLInputElement[]} */\n const formFields = Array.from(form.querySelectorAll(\"input[data-form-field]\"));\n return formFields;\n }\n /**\n * Passkey form submission handler.\n * Takes the input from the form and a few other parameters and submits it to the server.\n *\n * @param {WebAuthnOptionsAction} action action to submit\n * @param {unknown | undefined} data optional data to submit\n * @returns {Promise}\n */\n async function submitForm(action, data) {\n const form = getForm();\n // If a POST request, create hidden fields in the form\n // and submit it so the browser redirects on login\n if (action) {\n const actionInput = document.createElement(\"input\");\n actionInput.type = \"hidden\";\n actionInput.name = \"action\";\n actionInput.value = action;\n form.appendChild(actionInput);\n }\n if (data) {\n const dataInput = document.createElement(\"input\");\n dataInput.type = \"hidden\";\n dataInput.name = \"data\";\n dataInput.value = JSON.stringify(data);\n form.appendChild(dataInput);\n }\n return form.submit();\n }\n /**\n * Executes the authentication flow by fetching options from the server,\n * starting the authentication, and submitting the response to the server.\n *\n * @param {WebAuthnOptionsReturn['options']} options\n * @param {boolean} autofill Whether or not to use the browser's autofill\n * @returns {Promise}\n */\n async function authenticationFlow(options, autofill) {\n // Start authentication\n const authResp = await WebAuthnBrowser.startAuthentication(options, autofill);\n // Submit authentication response to server\n return await submitForm(\"authenticate\", authResp);\n }\n /**\n * @param {WebAuthnOptionsReturn['options']} options\n */\n async function registrationFlow(options) {\n // Check if all required formFields are set\n const formFields = getFormFields();\n formFields.forEach((field) => {\n if (field.required && !field.value) {\n throw new Error(`Missing required field: ${field.name}`);\n }\n });\n // Start registration\n const regResp = await WebAuthnBrowser.startRegistration(options);\n // Submit registration response to server\n return await submitForm(\"register\", regResp);\n }\n /**\n * Attempts to authenticate the user when the page loads\n * using the browser's autofill popup.\n *\n * @returns {Promise}\n */\n async function autofillAuthentication() {\n // if the browser can't handle autofill, don't try\n if (!WebAuthnBrowser.browserSupportsWebAuthnAutofill())\n return;\n const res = await fetchOptions(\"authenticate\");\n if (!res) {\n console.error(\"Failed to fetch option for autofill authentication\");\n return;\n }\n try {\n await authenticationFlow(res.options, true);\n }\n catch (e) {\n console.error(e);\n }\n }\n /**\n * Sets up the passkey form by overriding the form submission handler\n * so that it attempts to authenticate the user when the form is submitted.\n * If the user is not registered, it will attempt to register them instead.\n */\n async function setupForm() {\n const form = getForm();\n // If the browser can't do WebAuthn, hide the form\n if (!WebAuthnBrowser.browserSupportsWebAuthn()) {\n form.style.display = \"none\";\n return;\n }\n if (form) {\n form.addEventListener(\"submit\", async (e) => {\n e.preventDefault();\n // Fetch options from the server without assuming that\n // the user is registered\n const res = await fetchOptions(undefined);\n if (!res) {\n console.error(\"Failed to fetch options for form submission\");\n return;\n }\n // Then execute the appropriate flow\n if (res.action === \"authenticate\") {\n try {\n await authenticationFlow(res.options, false);\n }\n catch (e) {\n console.error(e);\n }\n }\n else if (res.action === \"register\") {\n try {\n await registrationFlow(res.options);\n }\n catch (e) {\n console.error(e);\n }\n }\n });\n }\n }\n // On page load, setup the form and attempt to authenticate the user.\n setupForm();\n autofillAuthentication();\n}\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { webauthnScript } from \"../utils/webauthn-client.js\";\nconst signinErrors = {\n default: \"Unable to sign in.\",\n Signin: \"Try signing in with a different account.\",\n OAuthSignin: \"Try signing in with a different account.\",\n OAuthCallbackError: \"Try signing in with a different account.\",\n OAuthCreateAccount: \"Try signing in with a different account.\",\n EmailCreateAccount: \"Try signing in with a different account.\",\n Callback: \"Try signing in with a different account.\",\n OAuthAccountNotLinked: \"To confirm your identity, sign in with the same account you used originally.\",\n EmailSignin: \"The e-mail could not be sent.\",\n CredentialsSignin: \"Sign in failed. Check the details you provided are correct.\",\n SessionRequired: \"Please sign in to access this page.\",\n};\nfunction ConditionalUIScript(providerID) {\n const startConditionalUIScript = `\nconst currentURL = window.location.href;\nconst authURL = currentURL.substring(0, currentURL.lastIndexOf('/'));\n(${webauthnScript})(authURL, \"${providerID}\");\n`;\n return (_jsx(_Fragment, { children: _jsx(\"script\", { dangerouslySetInnerHTML: { __html: startConditionalUIScript } }) }));\n}\nexport default function SigninPage(props) {\n const { csrfToken, providers = [], callbackUrl, theme, email, error: errorType, } = props;\n if (typeof document !== \"undefined\" && theme?.brandColor) {\n document.documentElement.style.setProperty(\"--brand-color\", theme.brandColor);\n }\n if (typeof document !== \"undefined\" && theme?.buttonText) {\n document.documentElement.style.setProperty(\"--button-text-color\", theme.buttonText);\n }\n const error = errorType && (signinErrors[errorType] ?? signinErrors.default);\n const providerLogoPath = \"https://authjs.dev/img/providers\";\n const conditionalUIProviderID = providers.find((provider) => provider.type === \"webauthn\" && provider.enableConditionalUI)?.id;\n return (_jsxs(\"div\", { className: \"signin\", children: [theme?.brandColor && (_jsx(\"style\", { dangerouslySetInnerHTML: {\n __html: `:root {--brand-color: ${theme.brandColor}}`,\n } })), theme?.buttonText && (_jsx(\"style\", { dangerouslySetInnerHTML: {\n __html: `\n :root {\n --button-text-color: ${theme.buttonText}\n }\n `,\n } })), _jsxs(\"div\", { className: \"card\", children: [error && (_jsx(\"div\", { className: \"error\", children: _jsx(\"p\", { children: error }) })), theme?.logo && _jsx(\"img\", { src: theme.logo, alt: \"Logo\", className: \"logo\" }), providers.map((provider, i) => {\n let bg, brandColor, logo;\n if (provider.type === \"oauth\" || provider.type === \"oidc\") {\n ;\n ({\n bg = \"#fff\",\n brandColor,\n logo = `${providerLogoPath}/${provider.id}.svg`,\n } = provider.style ?? {});\n }\n const color = brandColor ?? bg ?? \"#fff\";\n return (_jsxs(\"div\", { className: \"provider\", children: [provider.type === \"oauth\" || provider.type === \"oidc\" ? (_jsxs(\"form\", { action: provider.signinUrl, method: \"POST\", children: [_jsx(\"input\", { type: \"hidden\", name: \"csrfToken\", value: csrfToken }), callbackUrl && (_jsx(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: callbackUrl })), _jsxs(\"button\", { type: \"submit\", className: \"button\", style: {\n \"--provider-bg\": \"#fff\",\n \"--provider-bg-hover\": `color-mix(in srgb, ${color} 30%, #fff)`,\n \"--provider-dark-bg\": \"#161b22\",\n \"--provider-dark-bg-hover\": `color-mix(in srgb, ${color} 30%, #000)`,\n }, tabIndex: 0, children: [logo && (_jsx(\"img\", { loading: \"lazy\", height: 24, width: 24, id: \"provider-logo\", src: logo })), _jsxs(\"span\", { style: {\n filter: \"invert(1) grayscale(1) brightness(1.3) contrast(9000)\",\n \"mix-blend-mode\": \"luminosity\",\n opacity: 0.95,\n }, children: [\"Sign in with \", provider.name] })] })] })) : null, (provider.type === \"email\" ||\n provider.type === \"credentials\" ||\n provider.type === \"webauthn\") &&\n i > 0 &&\n providers[i - 1].type !== \"email\" &&\n providers[i - 1].type !== \"credentials\" &&\n providers[i - 1].type !== \"webauthn\" && _jsx(\"hr\", {}), provider.type === \"email\" && (_jsxs(\"form\", { action: provider.signinUrl, method: \"POST\", children: [_jsx(\"input\", { type: \"hidden\", name: \"csrfToken\", value: csrfToken }), _jsx(\"label\", { className: \"section-header\", htmlFor: `input-email-for-${provider.id}-provider`, children: \"Email\" }), _jsx(\"input\", { id: `input-email-for-${provider.id}-provider`, autoFocus: true, type: \"email\", name: \"email\", value: email, placeholder: \"email@example.com\", required: true }), _jsxs(\"button\", { id: \"submitButton\", type: \"submit\", tabIndex: 0, children: [\"Sign in with \", provider.name] })] })), provider.type === \"credentials\" && (_jsxs(\"form\", { action: provider.callbackUrl, method: \"POST\", children: [_jsx(\"input\", { type: \"hidden\", name: \"csrfToken\", value: csrfToken }), Object.keys(provider.credentials).map((credential) => {\n return (_jsxs(\"div\", { children: [_jsx(\"label\", { className: \"section-header\", htmlFor: `input-${credential}-for-${provider.id}-provider`, children: provider.credentials[credential].label ?? credential }), _jsx(\"input\", { name: credential, id: `input-${credential}-for-${provider.id}-provider`, type: provider.credentials[credential].type ?? \"text\", placeholder: provider.credentials[credential].placeholder ?? \"\", ...provider.credentials[credential] })] }, `input-group-${provider.id}`));\n }), _jsxs(\"button\", { id: \"submitButton\", type: \"submit\", tabIndex: 0, children: [\"Sign in with \", provider.name] })] })), provider.type === \"webauthn\" && (_jsxs(\"form\", { action: provider.callbackUrl, method: \"POST\", id: `${provider.id}-form`, children: [_jsx(\"input\", { type: \"hidden\", name: \"csrfToken\", value: csrfToken }), Object.keys(provider.formFields).map((field) => {\n return (_jsxs(\"div\", { children: [_jsx(\"label\", { className: \"section-header\", htmlFor: `input-${field}-for-${provider.id}-provider`, children: provider.formFields[field].label ?? field }), _jsx(\"input\", { name: field, \"data-form-field\": true, id: `input-${field}-for-${provider.id}-provider`, type: provider.formFields[field].type ?? \"text\", placeholder: provider.formFields[field].placeholder ?? \"\", ...provider.formFields[field] })] }, `input-group-${provider.id}`));\n }), _jsxs(\"button\", { id: `submitButton-${provider.id}`, type: \"submit\", tabIndex: 0, children: [\"Sign in with \", provider.name] })] })), (provider.type === \"email\" ||\n provider.type === \"credentials\" ||\n provider.type === \"webauthn\") &&\n i + 1 < providers.length && _jsx(\"hr\", {})] }, provider.id));\n })] }), conditionalUIProviderID && ConditionalUIScript(conditionalUIProviderID)] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nexport default function SignoutPage(props) {\n const { url, csrfToken, theme } = props;\n return (_jsxs(\"div\", { className: \"signout\", children: [theme?.brandColor && (_jsx(\"style\", { dangerouslySetInnerHTML: {\n __html: `\n :root {\n --brand-color: ${theme.brandColor}\n }\n `,\n } })), theme?.buttonText && (_jsx(\"style\", { dangerouslySetInnerHTML: {\n __html: `\n :root {\n --button-text-color: ${theme.buttonText}\n }\n `,\n } })), _jsxs(\"div\", { className: \"card\", children: [theme?.logo && _jsx(\"img\", { src: theme.logo, alt: \"Logo\", className: \"logo\" }), _jsx(\"h1\", { children: \"Signout\" }), _jsx(\"p\", { children: \"Are you sure you want to sign out?\" }), _jsxs(\"form\", { action: url?.toString(), method: \"POST\", children: [_jsx(\"input\", { type: \"hidden\", name: \"csrfToken\", value: csrfToken }), _jsx(\"button\", { id: \"submitButton\", type: \"submit\", children: \"Sign out\" })] })] })] }));\n}\n","// Generated by `pnpm css`\nexport default `:root {\n --border-width: 1px;\n --border-radius: 0.5rem;\n --color-error: #c94b4b;\n --color-info: #157efb;\n --color-info-hover: #0f6ddb;\n --color-info-text: #fff;\n}\n\n.__next-auth-theme-auto,\n.__next-auth-theme-light {\n --color-background: #ececec;\n --color-background-hover: rgba(236, 236, 236, 0.8);\n --color-background-card: #fff;\n --color-text: #000;\n --color-primary: #444;\n --color-control-border: #bbb;\n --color-button-active-background: #f9f9f9;\n --color-button-active-border: #aaa;\n --color-separator: #ccc;\n}\n\n.__next-auth-theme-dark {\n --color-background: #161b22;\n --color-background-hover: rgba(22, 27, 34, 0.8);\n --color-background-card: #0d1117;\n --color-text: #fff;\n --color-primary: #ccc;\n --color-control-border: #555;\n --color-button-active-background: #060606;\n --color-button-active-border: #666;\n --color-separator: #444;\n}\n\n@media (prefers-color-scheme: dark) {\n .__next-auth-theme-auto {\n --color-background: #161b22;\n --color-background-hover: rgba(22, 27, 34, 0.8);\n --color-background-card: #0d1117;\n --color-text: #fff;\n --color-primary: #ccc;\n --color-control-border: #555;\n --color-button-active-background: #060606;\n --color-button-active-border: #666;\n --color-separator: #444;\n }\n\n button,\n a.button {\n color: var(--provider-dark-color, var(--color-primary)) !important;\n background-color: var(\n --provider-dark-bg,\n var(--color-background)\n ) !important;\n }\n\n :is(button,a.button):hover {\n background-color: var(\n --provider-dark-bg-hover,\n var(--color-background-hover)\n ) !important;\n }\n\n :is(button,a.button) span {\n color: var(--provider-dark-bg) !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*:before,\n*:after {\n box-sizing: inherit;\n margin: 0;\n padding: 0;\n}\n\nbody {\n background-color: var(--color-background);\n margin: 0;\n padding: 0;\n font-family:\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n Roboto,\n \"Helvetica Neue\",\n Arial,\n \"Noto Sans\",\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n \"Noto Color Emoji\";\n}\n\nh1 {\n margin-bottom: 1.5rem;\n padding: 0 1rem;\n font-weight: 400;\n color: var(--color-text);\n}\n\np {\n margin-bottom: 1.5rem;\n padding: 0 1rem;\n color: var(--color-text);\n}\n\nform {\n margin: 0;\n padding: 0;\n}\n\nlabel {\n font-weight: 500;\n text-align: left;\n margin-bottom: 0.25rem;\n display: block;\n color: var(--color-text);\n}\n\ninput[type] {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0.5rem 1rem;\n border: var(--border-width) solid var(--color-control-border);\n background: var(--color-background-card);\n font-size: 1rem;\n border-radius: var(--border-radius);\n color: var(--color-text);\n}\n\np {\n font-size: 1.1rem;\n line-height: 2rem;\n}\n\na.button {\n text-decoration: none;\n line-height: 1rem;\n}\n\na.button:link,\n a.button:visited {\n background-color: var(--color-background);\n color: var(--color-primary);\n }\n\nbutton span {\n flex-grow: 1;\n}\n\nbutton,\na.button {\n padding: 0.75rem 1rem;\n color: var(--provider-color, var(--color-primary));\n background-color: var(--provider-bg, var(--color-background));\n border: 1px solid #00000031;\n font-size: 0.9rem;\n height: 50px;\n border-radius: var(--border-radius);\n transition: background-color 250ms ease-in-out;\n font-weight: 300;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n:is(button,a.button):hover {\n background-color: var(--provider-bg-hover, var(--color-background-hover));\n cursor: pointer;\n }\n\n:is(button,a.button):active {\n cursor: pointer;\n }\n\n:is(button,a.button) span {\n color: #fff;\n }\n\n:is(button,a.button) #provider-logo {\n width: 25px;\n display: block;\n }\n\n#submitButton {\n color: var(--button-text-color, var(--color-info-text));\n background-color: var(--brand-color, var(--color-info));\n width: 100%;\n}\n\n#submitButton:hover {\n background-color: var(\n --button-hover-bg,\n var(--color-info-hover)\n ) !important;\n }\n\na.site {\n color: var(--color-primary);\n text-decoration: none;\n font-size: 1rem;\n line-height: 2rem;\n}\n\na.site:hover {\n text-decoration: underline;\n }\n\n.page {\n position: absolute;\n width: 100%;\n height: 100%;\n display: grid;\n place-items: center;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\n.page > div {\n text-align: center;\n }\n\n.error a.button {\n padding-left: 2rem;\n padding-right: 2rem;\n margin-top: 0.5rem;\n }\n\n.error .message {\n margin-bottom: 1.5rem;\n }\n\n.signin input[type=\"text\"] {\n margin-left: auto;\n margin-right: auto;\n display: block;\n }\n\n.signin hr {\n display: block;\n border: 0;\n border-top: 1px solid var(--color-separator);\n margin: 2rem auto 1rem auto;\n overflow: visible;\n }\n\n.signin hr::before {\n content: \"or\";\n background: var(--color-background-card);\n color: #888;\n padding: 0 0.4rem;\n position: relative;\n top: -0.7rem;\n }\n\n.signin .error {\n background: #f5f5f5;\n font-weight: 500;\n border-radius: 0.3rem;\n background: var(--color-error);\n }\n\n.signin .error p {\n text-align: left;\n padding: 0.5rem 1rem;\n font-size: 0.9rem;\n line-height: 1.2rem;\n color: var(--color-info-text);\n }\n\n.signin > div,\n .signin form {\n display: block;\n }\n\n.signin > div input[type], .signin form input[type] {\n margin-bottom: 0.5rem;\n }\n\n.signin > div button, .signin form button {\n width: 100%;\n }\n\n.signin .provider + .provider {\n margin-top: 1rem;\n }\n\n.logo {\n display: inline-block;\n max-width: 150px;\n margin: 1.25rem 0;\n max-height: 70px;\n}\n\n.card {\n background-color: var(--color-background-card);\n border-radius: 1rem;\n padding: 1.25rem 2rem;\n}\n\n.card .header {\n color: var(--color-primary);\n }\n\n.card input[type]::-moz-placeholder {\n color: color-mix(\n in srgb,\n var(--color-text) 20%,\n var(--color-button-active-background)\n );\n }\n\n.card input[type]::placeholder {\n color: color-mix(\n in srgb,\n var(--color-text) 20%,\n var(--color-button-active-background)\n );\n }\n\n.card input[type] {\n background: color-mix(in srgb, var(--color-background-card) 95%, black);\n }\n\n.section-header {\n color: var(--color-text);\n}\n\n@media screen and (min-width: 450px) {\n .card {\n margin: 2rem 0;\n width: 368px;\n }\n}\n\n@media screen and (max-width: 450px) {\n .card {\n margin: 1rem 0;\n width: 343px;\n }\n}\n`;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nexport default function VerifyRequestPage(props) {\n const { url, theme } = props;\n return (_jsxs(\"div\", { className: \"verify-request\", children: [theme.brandColor && (_jsx(\"style\", { dangerouslySetInnerHTML: {\n __html: `\n :root {\n --brand-color: ${theme.brandColor}\n }\n `,\n } })), _jsxs(\"div\", { className: \"card\", children: [theme.logo && _jsx(\"img\", { src: theme.logo, alt: \"Logo\", className: \"logo\" }), _jsx(\"h1\", { children: \"Check your email\" }), _jsx(\"p\", { children: \"A sign in link has been sent to your email address.\" }), _jsx(\"p\", { children: _jsx(\"a\", { className: \"site\", href: url.origin, children: url.host }) })] })] }));\n}\n","import { renderToString } from \"preact-render-to-string\";\nimport ErrorPage from \"./error.js\";\nimport SigninPage from \"./signin.js\";\nimport SignoutPage from \"./signout.js\";\nimport css from \"./styles.js\";\nimport VerifyRequestPage from \"./verify-request.js\";\nimport { UnknownAction } from \"../../errors.js\";\nfunction send({ html, title, status, cookies, theme, headTags, }) {\n return {\n cookies,\n status,\n headers: { \"Content-Type\": \"text/html\" },\n body: `${title}${headTags ?? \"\"}
${renderToString(html)}
`,\n };\n}\n/**\n * Unless the user defines their [own pages](https://authjs.dev/reference/core#pages),\n * we render a set of default ones, using Preact SSR.\n */\nexport default function renderPage(params) {\n const { url, theme, query, cookies, pages, providers } = params;\n return {\n csrf(skip, options, cookies) {\n if (!skip) {\n return {\n headers: { \"Content-Type\": \"application/json\" },\n body: { csrfToken: options.csrfToken },\n cookies,\n };\n }\n options.logger.warn(\"csrf-disabled\");\n cookies.push({\n name: options.cookies.csrfToken.name,\n value: \"\",\n options: { ...options.cookies.csrfToken.options, maxAge: 0 },\n });\n return { status: 404, cookies };\n },\n providers(providers) {\n return {\n headers: { \"Content-Type\": \"application/json\" },\n body: providers.reduce((acc, { id, name, type, signinUrl, callbackUrl }) => {\n acc[id] = { id, name, type, signinUrl, callbackUrl };\n return acc;\n }, {}),\n };\n },\n signin(providerId, error) {\n if (providerId)\n throw new UnknownAction(\"Unsupported action\");\n if (pages?.signIn) {\n let signinUrl = `${pages.signIn}${pages.signIn.includes(\"?\") ? \"&\" : \"?\"}${new URLSearchParams({ callbackUrl: params.callbackUrl ?? \"/\" })}`;\n if (error)\n signinUrl = `${signinUrl}&${new URLSearchParams({ error })}`;\n return { redirect: signinUrl, cookies };\n }\n // If we have a webauthn provider with conditional UI and\n // a simpleWebAuthnBrowserScript is defined, we need to\n // render the script in the page.\n const webauthnProvider = providers?.find((p) => p.type === \"webauthn\" &&\n p.enableConditionalUI &&\n !!p.simpleWebAuthnBrowserVersion);\n let simpleWebAuthnBrowserScript = \"\";\n if (webauthnProvider) {\n const { simpleWebAuthnBrowserVersion } = webauthnProvider;\n simpleWebAuthnBrowserScript = ``;\n }\n return send({\n cookies,\n theme,\n html: SigninPage({\n csrfToken: params.csrfToken,\n // We only want to render providers\n providers: params.providers?.filter((provider) => \n // Always render oauth and email type providers\n [\"email\", \"oauth\", \"oidc\"].includes(provider.type) ||\n // Only render credentials type provider if credentials are defined\n (provider.type === \"credentials\" && provider.credentials) ||\n // Only render webauthn type provider if formFields are defined\n (provider.type === \"webauthn\" && provider.formFields) ||\n // Don't render other provider types\n false),\n callbackUrl: params.callbackUrl,\n theme: params.theme,\n error,\n ...query,\n }),\n title: \"Sign In\",\n headTags: simpleWebAuthnBrowserScript,\n });\n },\n signout() {\n if (pages?.signOut)\n return { redirect: pages.signOut, cookies };\n return send({\n cookies,\n theme,\n html: SignoutPage({ csrfToken: params.csrfToken, url, theme }),\n title: \"Sign Out\",\n });\n },\n verifyRequest(props) {\n if (pages?.verifyRequest)\n return { redirect: pages.verifyRequest, cookies };\n return send({\n cookies,\n theme,\n html: VerifyRequestPage({ url, theme, ...props }),\n title: \"Verify Request\",\n });\n },\n error(error) {\n if (pages?.error) {\n return {\n redirect: `${pages.error}${pages.error.includes(\"?\") ? \"&\" : \"?\"}error=${error}`,\n cookies,\n };\n }\n return send({\n cookies,\n theme,\n // @ts-expect-error fix error type\n ...ErrorPage({ url, theme, error }),\n title: \"Error\",\n });\n },\n };\n}\n","/**\n * Takes a number in seconds and returns the date in the future.\n * Optionally takes a second date parameter. In that case\n * the date in the future will be calculated from that date instead of now.\n */\nexport function fromDate(time, date = Date.now()) {\n return new Date(date + time * 1000);\n}\n","import { AccountNotLinked, OAuthAccountNotLinked } from \"../../../errors.js\";\nimport { fromDate } from \"../../utils/date.js\";\n/**\n * This function handles the complex flow of signing users in, and either creating,\n * linking (or not linking) accounts depending on if the user is currently logged\n * in, if they have account already and the authentication mechanism they are using.\n *\n * It prevents insecure behaviour, such as linking OAuth accounts unless a user is\n * signed in and authenticated with an existing valid account.\n *\n * All verification (e.g. OAuth flows or email address verification flows) are\n * done prior to this handler being called to avoid additional complexity in this\n * handler.\n */\nexport async function handleLoginOrRegister(sessionToken, _profile, _account, options) {\n // Input validation\n if (!_account?.providerAccountId || !_account.type)\n throw new Error(\"Missing or invalid provider account\");\n if (![\"email\", \"oauth\", \"oidc\", \"webauthn\"].includes(_account.type))\n throw new Error(\"Provider not supported\");\n const { adapter, jwt, events, session: { strategy: sessionStrategy, generateSessionToken }, } = options;\n // If no adapter is configured then we don't have a database and cannot\n // persist data; in this mode we just return a dummy session object.\n if (!adapter) {\n return { user: _profile, account: _account };\n }\n const profile = _profile;\n let account = _account;\n const { createUser, updateUser, getUser, getUserByAccount, getUserByEmail, linkAccount, createSession, getSessionAndUser, deleteSession, } = adapter;\n let session = null;\n let user = null;\n let isNewUser = false;\n const useJwtSession = sessionStrategy === \"jwt\";\n if (sessionToken) {\n if (useJwtSession) {\n try {\n const salt = options.cookies.sessionToken.name;\n session = await jwt.decode({ ...jwt, token: sessionToken, salt });\n if (session && \"sub\" in session && session.sub) {\n user = await getUser(session.sub);\n }\n }\n catch {\n // If session can't be verified, treat as no session\n }\n }\n else {\n const userAndSession = await getSessionAndUser(sessionToken);\n if (userAndSession) {\n session = userAndSession.session;\n user = userAndSession.user;\n }\n }\n }\n if (account.type === \"email\") {\n // If signing in with an email, check if an account with the same email address exists already\n const userByEmail = await getUserByEmail(profile.email);\n if (userByEmail) {\n // If they are not already signed in as the same user, this flow will\n // sign them out of the current session and sign them in as the new user\n if (user?.id !== userByEmail.id && !useJwtSession && sessionToken) {\n // Delete existing session if they are currently signed in as another user.\n // This will switch user accounts for the session in cases where the user was\n // already logged in with a different account.\n await deleteSession(sessionToken);\n }\n // Update emailVerified property on the user object\n user = await updateUser({\n id: userByEmail.id,\n emailVerified: new Date(),\n });\n await events.updateUser?.({ user });\n }\n else {\n // Create user account if there isn't one for the email address already\n user = await createUser({ ...profile, emailVerified: new Date() });\n await events.createUser?.({ user });\n isNewUser = true;\n }\n // Create new session\n session = useJwtSession\n ? {}\n : await createSession({\n sessionToken: generateSessionToken(),\n userId: user.id,\n expires: fromDate(options.session.maxAge),\n });\n return { session, user, isNewUser };\n }\n else if (account.type === \"webauthn\") {\n // Check if the account exists\n const userByAccount = await getUserByAccount({\n providerAccountId: account.providerAccountId,\n provider: account.provider,\n });\n if (userByAccount) {\n if (user) {\n // If the user is already signed in with this account, we don't need to do anything\n if (userByAccount.id === user.id) {\n const currentAccount = { ...account, userId: user.id };\n return { session, user, isNewUser, account: currentAccount };\n }\n // If the user is currently signed in, but the new account they are signing in\n // with is already associated with another user, then we cannot link them\n // and need to return an error.\n throw new AccountNotLinked(\"The account is already associated with another user\", { provider: account.provider });\n }\n // If there is no active session, but the account being signed in with is already\n // associated with a valid user then create session to sign the user in.\n session = useJwtSession\n ? {}\n : await createSession({\n sessionToken: generateSessionToken(),\n userId: userByAccount.id,\n expires: fromDate(options.session.maxAge),\n });\n const currentAccount = {\n ...account,\n userId: userByAccount.id,\n };\n return {\n session,\n user: userByAccount,\n isNewUser,\n account: currentAccount,\n };\n }\n else {\n // If the account doesn't exist, we'll create it\n if (user) {\n // If the user is already signed in and the account isn't already associated\n // with another user account then we can go ahead and link the accounts safely.\n await linkAccount({ ...account, userId: user.id });\n await events.linkAccount?.({ user, account, profile });\n // As they are already signed in, we don't need to do anything after linking them\n const currentAccount = { ...account, userId: user.id };\n return { session, user, isNewUser, account: currentAccount };\n }\n // If the user is not signed in and it looks like a new account then we\n // check there also isn't an user account already associated with the same\n // email address as the one in the request.\n const userByEmail = profile.email\n ? await getUserByEmail(profile.email)\n : null;\n if (userByEmail) {\n // We don't trust user-provided email addresses, so we don't want to link accounts\n // if the email address associated with the new account is already associated with\n // an existing account.\n throw new AccountNotLinked(\"Another account already exists with the same e-mail address\", { provider: account.provider });\n }\n else {\n // If the current user is not logged in and the profile isn't linked to any user\n // accounts (by email or provider account id)...\n //\n // If no account matching the same [provider].id or .email exists, we can\n // create a new account for the user, link it to the OAuth account and\n // create a new session for them so they are signed in with it.\n user = await createUser({ ...profile });\n }\n await events.createUser?.({ user });\n await linkAccount({ ...account, userId: user.id });\n await events.linkAccount?.({ user, account, profile });\n session = useJwtSession\n ? {}\n : await createSession({\n sessionToken: generateSessionToken(),\n userId: user.id,\n expires: fromDate(options.session.maxAge),\n });\n const currentAccount = { ...account, userId: user.id };\n return { session, user, isNewUser: true, account: currentAccount };\n }\n }\n // If signing in with OAuth account, check to see if the account exists already\n const userByAccount = await getUserByAccount({\n providerAccountId: account.providerAccountId,\n provider: account.provider,\n });\n if (userByAccount) {\n if (user) {\n // If the user is already signed in with this account, we don't need to do anything\n if (userByAccount.id === user.id) {\n return { session, user, isNewUser };\n }\n // If the user is currently signed in, but the new account they are signing in\n // with is already associated with another user, then we cannot link them\n // and need to return an error.\n throw new OAuthAccountNotLinked(\"The account is already associated with another user\", { provider: account.provider });\n }\n // If there is no active session, but the account being signed in with is already\n // associated with a valid user then create session to sign the user in.\n session = useJwtSession\n ? {}\n : await createSession({\n sessionToken: generateSessionToken(),\n userId: userByAccount.id,\n expires: fromDate(options.session.maxAge),\n });\n return { session, user: userByAccount, isNewUser };\n }\n else {\n const { provider: p } = options;\n const { type, provider, providerAccountId, userId, ...tokenSet } = account;\n const defaults = { providerAccountId, provider, type, userId };\n account = Object.assign(p.account(tokenSet) ?? {}, defaults);\n if (user) {\n // If the user is already signed in and the OAuth account isn't already associated\n // with another user account then we can go ahead and link the accounts safely.\n await linkAccount({ ...account, userId: user.id });\n await events.linkAccount?.({ user, account, profile });\n // As they are already signed in, we don't need to do anything after linking them\n return { session, user, isNewUser };\n }\n // If the user is not signed in and it looks like a new OAuth account then we\n // check there also isn't an user account already associated with the same\n // email address as the one in the OAuth profile.\n //\n // This step is often overlooked in OAuth implementations, but covers the following cases:\n //\n // 1. It makes it harder for someone to accidentally create two accounts.\n // e.g. by signin in with email, then again with an oauth account connected to the same email.\n // 2. It makes it harder to hijack a user account using a 3rd party OAuth account.\n // e.g. by creating an oauth account then changing the email address associated with it.\n //\n // It's quite common for services to automatically link accounts in this case, but it's\n // better practice to require the user to sign in *then* link accounts to be sure\n // someone is not exploiting a problem with a third party OAuth service.\n //\n // OAuth providers should require email address verification to prevent this, but in\n // practice that is not always the case; this helps protect against that.\n const userByEmail = profile.email\n ? await getUserByEmail(profile.email)\n : null;\n if (userByEmail) {\n const provider = options.provider;\n if (provider?.allowDangerousEmailAccountLinking) {\n // If you trust the oauth provider to correctly verify email addresses, you can opt-in to\n // account linking even when the user is not signed-in.\n user = userByEmail;\n }\n else {\n // We end up here when we don't have an account with the same [provider].id *BUT*\n // we do already have an account with the same email address as the one in the\n // OAuth profile the user has just tried to sign in with.\n //\n // We don't want to have two accounts with the same email address, and we don't\n // want to link them in case it's not safe to do so, so instead we prompt the user\n // to sign in via email to verify their identity and then link the accounts.\n throw new OAuthAccountNotLinked(\"Another account already exists with the same e-mail address\", { provider: account.provider });\n }\n }\n else {\n // If the current user is not logged in and the profile isn't linked to any user\n // accounts (by email or provider account id)...\n //\n // If no account matching the same [provider].id or .email exists, we can\n // create a new account for the user, link it to the OAuth account and\n // create a new session for them so they are signed in with it.\n user = await createUser({ ...profile, emailVerified: null });\n }\n await events.createUser?.({ user });\n await linkAccount({ ...account, userId: user.id });\n await events.linkAccount?.({ user, account, profile });\n session = useJwtSession\n ? {}\n : await createSession({\n sessionToken: generateSessionToken(),\n userId: user.id,\n expires: fromDate(options.session.maxAge),\n });\n return { session, user, isNewUser: true };\n }\n}\n","let USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n const NAME = 'oauth4webapi';\n const VERSION = 'v2.11.1';\n USER_AGENT = `${NAME}/${VERSION}`;\n}\nfunction looseInstanceOf(input, expected) {\n if (input == null) {\n return false;\n }\n try {\n return (input instanceof expected ||\n Object.getPrototypeOf(input)[Symbol.toStringTag] === expected.prototype[Symbol.toStringTag]);\n }\n catch {\n return false;\n }\n}\nexport const clockSkew = Symbol();\nexport const clockTolerance = Symbol();\nexport const customFetch = Symbol();\nexport const experimental_jwksCache = Symbol();\nexport const useMtlsAlias = Symbol();\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction buf(input) {\n if (typeof input === 'string') {\n return encoder.encode(input);\n }\n return decoder.decode(input);\n}\nconst CHUNK_SIZE = 0x8000;\nfunction encodeBase64Url(input) {\n if (input instanceof ArrayBuffer) {\n input = new Uint8Array(input);\n }\n const arr = [];\n for (let i = 0; i < input.byteLength; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join('')).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction decodeBase64Url(input) {\n try {\n const binary = atob(input.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, ''));\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n catch (cause) {\n throw new OPE('The input to be decoded is not correctly encoded.', { cause });\n }\n}\nfunction b64u(input) {\n if (typeof input === 'string') {\n return decodeBase64Url(input);\n }\n return encodeBase64Url(input);\n}\nclass LRU {\n constructor(maxSize) {\n this.cache = new Map();\n this._cache = new Map();\n this.maxSize = maxSize;\n }\n get(key) {\n let v = this.cache.get(key);\n if (v) {\n return v;\n }\n if ((v = this._cache.get(key))) {\n this.update(key, v);\n return v;\n }\n return undefined;\n }\n has(key) {\n return this.cache.has(key) || this._cache.has(key);\n }\n set(key, value) {\n if (this.cache.has(key)) {\n this.cache.set(key, value);\n }\n else {\n this.update(key, value);\n }\n return this;\n }\n delete(key) {\n if (this.cache.has(key)) {\n return this.cache.delete(key);\n }\n if (this._cache.has(key)) {\n return this._cache.delete(key);\n }\n return false;\n }\n update(key, value) {\n this.cache.set(key, value);\n if (this.cache.size >= this.maxSize) {\n this._cache = this.cache;\n this.cache = new Map();\n }\n }\n}\nexport class UnsupportedOperationError extends Error {\n constructor(message) {\n super(message ?? 'operation not supported');\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nexport class OperationProcessingError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nconst OPE = OperationProcessingError;\nconst dpopNonces = new LRU(100);\nfunction isCryptoKey(key) {\n return key instanceof CryptoKey;\n}\nfunction isPrivateKey(key) {\n return isCryptoKey(key) && key.type === 'private';\n}\nfunction isPublicKey(key) {\n return isCryptoKey(key) && key.type === 'public';\n}\nconst SUPPORTED_JWS_ALGS = [\n 'PS256',\n 'ES256',\n 'RS256',\n 'PS384',\n 'ES384',\n 'RS384',\n 'PS512',\n 'ES512',\n 'RS512',\n 'EdDSA',\n];\nfunction processDpopNonce(response) {\n try {\n const nonce = response.headers.get('dpop-nonce');\n if (nonce) {\n dpopNonces.set(new URL(response.url).origin, nonce);\n }\n }\n catch { }\n return response;\n}\nfunction normalizeTyp(value) {\n return value.toLowerCase().replace(/^application\\//, '');\n}\nfunction isJsonObject(input) {\n if (input === null || typeof input !== 'object' || Array.isArray(input)) {\n return false;\n }\n return true;\n}\nfunction prepareHeaders(input) {\n if (looseInstanceOf(input, Headers)) {\n input = Object.fromEntries(input.entries());\n }\n const headers = new Headers(input);\n if (USER_AGENT && !headers.has('user-agent')) {\n headers.set('user-agent', USER_AGENT);\n }\n if (headers.has('authorization')) {\n throw new TypeError('\"options.headers\" must not include the \"authorization\" header name');\n }\n if (headers.has('dpop')) {\n throw new TypeError('\"options.headers\" must not include the \"dpop\" header name');\n }\n return headers;\n}\nfunction signal(value) {\n if (typeof value === 'function') {\n value = value();\n }\n if (!(value instanceof AbortSignal)) {\n throw new TypeError('\"options.signal\" must return or be an instance of AbortSignal');\n }\n return value;\n}\nexport async function discoveryRequest(issuerIdentifier, options) {\n if (!(issuerIdentifier instanceof URL)) {\n throw new TypeError('\"issuerIdentifier\" must be an instance of URL');\n }\n if (issuerIdentifier.protocol !== 'https:' && issuerIdentifier.protocol !== 'http:') {\n throw new TypeError('\"issuer.protocol\" must be \"https:\" or \"http:\"');\n }\n const url = new URL(issuerIdentifier.href);\n switch (options?.algorithm) {\n case undefined:\n case 'oidc':\n url.pathname = `${url.pathname}/.well-known/openid-configuration`.replace('//', '/');\n break;\n case 'oauth2':\n if (url.pathname === '/') {\n url.pathname = '.well-known/oauth-authorization-server';\n }\n else {\n url.pathname = `.well-known/oauth-authorization-server/${url.pathname}`.replace('//', '/');\n }\n break;\n default:\n throw new TypeError('\"options.algorithm\" must be \"oidc\" (default), or \"oauth2\"');\n }\n const headers = prepareHeaders(options?.headers);\n headers.set('accept', 'application/json');\n return (options?.[customFetch] || fetch)(url.href, {\n headers: Object.fromEntries(headers.entries()),\n method: 'GET',\n redirect: 'manual',\n signal: options?.signal ? signal(options.signal) : null,\n }).then(processDpopNonce);\n}\nfunction validateString(input) {\n return typeof input === 'string' && input.length !== 0;\n}\nexport async function processDiscoveryResponse(expectedIssuerIdentifier, response) {\n if (!(expectedIssuerIdentifier instanceof URL)) {\n throw new TypeError('\"expectedIssuer\" must be an instance of URL');\n }\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n throw new OPE('\"response\" is not a conform Authorization Server Metadata response');\n }\n assertReadableResponse(response);\n let json;\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n if (!validateString(json.issuer)) {\n throw new OPE('\"response\" body \"issuer\" property must be a non-empty string');\n }\n if (new URL(json.issuer).href !== expectedIssuerIdentifier.href) {\n throw new OPE('\"response\" body \"issuer\" does not match \"expectedIssuer\"');\n }\n return json;\n}\nfunction randomBytes() {\n return b64u(crypto.getRandomValues(new Uint8Array(32)));\n}\nexport function generateRandomCodeVerifier() {\n return randomBytes();\n}\nexport function generateRandomState() {\n return randomBytes();\n}\nexport function generateRandomNonce() {\n return randomBytes();\n}\nexport async function calculatePKCECodeChallenge(codeVerifier) {\n if (!validateString(codeVerifier)) {\n throw new TypeError('\"codeVerifier\" must be a non-empty string');\n }\n return b64u(await crypto.subtle.digest('SHA-256', buf(codeVerifier)));\n}\nfunction getKeyAndKid(input) {\n if (input instanceof CryptoKey) {\n return { key: input };\n }\n if (!(input?.key instanceof CryptoKey)) {\n return {};\n }\n if (input.kid !== undefined && !validateString(input.kid)) {\n throw new TypeError('\"kid\" must be a non-empty string');\n }\n return { key: input.key, kid: input.kid };\n}\nfunction formUrlEncode(token) {\n return encodeURIComponent(token).replace(/%20/g, '+');\n}\nfunction clientSecretBasic(clientId, clientSecret) {\n const username = formUrlEncode(clientId);\n const password = formUrlEncode(clientSecret);\n const credentials = btoa(`${username}:${password}`);\n return `Basic ${credentials}`;\n}\nfunction psAlg(key) {\n switch (key.algorithm.hash.name) {\n case 'SHA-256':\n return 'PS256';\n case 'SHA-384':\n return 'PS384';\n case 'SHA-512':\n return 'PS512';\n default:\n throw new UnsupportedOperationError('unsupported RsaHashedKeyAlgorithm hash name');\n }\n}\nfunction rsAlg(key) {\n switch (key.algorithm.hash.name) {\n case 'SHA-256':\n return 'RS256';\n case 'SHA-384':\n return 'RS384';\n case 'SHA-512':\n return 'RS512';\n default:\n throw new UnsupportedOperationError('unsupported RsaHashedKeyAlgorithm hash name');\n }\n}\nfunction esAlg(key) {\n switch (key.algorithm.namedCurve) {\n case 'P-256':\n return 'ES256';\n case 'P-384':\n return 'ES384';\n case 'P-521':\n return 'ES512';\n default:\n throw new UnsupportedOperationError('unsupported EcKeyAlgorithm namedCurve');\n }\n}\nfunction keyToJws(key) {\n switch (key.algorithm.name) {\n case 'RSA-PSS':\n return psAlg(key);\n case 'RSASSA-PKCS1-v1_5':\n return rsAlg(key);\n case 'ECDSA':\n return esAlg(key);\n case 'Ed25519':\n case 'Ed448':\n return 'EdDSA';\n default:\n throw new UnsupportedOperationError('unsupported CryptoKey algorithm name');\n }\n}\nfunction getClockSkew(client) {\n const skew = client?.[clockSkew];\n return typeof skew === 'number' && Number.isFinite(skew) ? skew : 0;\n}\nfunction getClockTolerance(client) {\n const tolerance = client?.[clockTolerance];\n return typeof tolerance === 'number' && Number.isFinite(tolerance) && Math.sign(tolerance) !== -1\n ? tolerance\n : 30;\n}\nfunction epochTime() {\n return Math.floor(Date.now() / 1000);\n}\nfunction clientAssertion(as, client) {\n const now = epochTime() + getClockSkew(client);\n return {\n jti: randomBytes(),\n aud: [as.issuer, as.token_endpoint],\n exp: now + 60,\n iat: now,\n nbf: now,\n iss: client.client_id,\n sub: client.client_id,\n };\n}\nasync function privateKeyJwt(as, client, key, kid) {\n return jwt({\n alg: keyToJws(key),\n kid,\n }, clientAssertion(as, client), key);\n}\nfunction assertAs(as) {\n if (typeof as !== 'object' || as === null) {\n throw new TypeError('\"as\" must be an object');\n }\n if (!validateString(as.issuer)) {\n throw new TypeError('\"as.issuer\" property must be a non-empty string');\n }\n return true;\n}\nfunction assertClient(client) {\n if (typeof client !== 'object' || client === null) {\n throw new TypeError('\"client\" must be an object');\n }\n if (!validateString(client.client_id)) {\n throw new TypeError('\"client.client_id\" property must be a non-empty string');\n }\n return true;\n}\nfunction assertClientSecret(clientSecret) {\n if (!validateString(clientSecret)) {\n throw new TypeError('\"client.client_secret\" property must be a non-empty string');\n }\n return clientSecret;\n}\nfunction assertNoClientPrivateKey(clientAuthMethod, clientPrivateKey) {\n if (clientPrivateKey !== undefined) {\n throw new TypeError(`\"options.clientPrivateKey\" property must not be provided when ${clientAuthMethod} client authentication method is used.`);\n }\n}\nfunction assertNoClientSecret(clientAuthMethod, clientSecret) {\n if (clientSecret !== undefined) {\n throw new TypeError(`\"client.client_secret\" property must not be provided when ${clientAuthMethod} client authentication method is used.`);\n }\n}\nasync function clientAuthentication(as, client, body, headers, clientPrivateKey) {\n body.delete('client_secret');\n body.delete('client_assertion_type');\n body.delete('client_assertion');\n switch (client.token_endpoint_auth_method) {\n case undefined:\n case 'client_secret_basic': {\n assertNoClientPrivateKey('client_secret_basic', clientPrivateKey);\n headers.set('authorization', clientSecretBasic(client.client_id, assertClientSecret(client.client_secret)));\n break;\n }\n case 'client_secret_post': {\n assertNoClientPrivateKey('client_secret_post', clientPrivateKey);\n body.set('client_id', client.client_id);\n body.set('client_secret', assertClientSecret(client.client_secret));\n break;\n }\n case 'private_key_jwt': {\n assertNoClientSecret('private_key_jwt', client.client_secret);\n if (clientPrivateKey === undefined) {\n throw new TypeError('\"options.clientPrivateKey\" must be provided when \"client.token_endpoint_auth_method\" is \"private_key_jwt\"');\n }\n const { key, kid } = getKeyAndKid(clientPrivateKey);\n if (!isPrivateKey(key)) {\n throw new TypeError('\"options.clientPrivateKey.key\" must be a private CryptoKey');\n }\n body.set('client_id', client.client_id);\n body.set('client_assertion_type', 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer');\n body.set('client_assertion', await privateKeyJwt(as, client, key, kid));\n break;\n }\n case 'tls_client_auth':\n case 'self_signed_tls_client_auth':\n case 'none': {\n assertNoClientSecret(client.token_endpoint_auth_method, client.client_secret);\n assertNoClientPrivateKey(client.token_endpoint_auth_method, clientPrivateKey);\n body.set('client_id', client.client_id);\n break;\n }\n default:\n throw new UnsupportedOperationError('unsupported client token_endpoint_auth_method');\n }\n}\nasync function jwt(header, claimsSet, key) {\n if (!key.usages.includes('sign')) {\n throw new TypeError('CryptoKey instances used for signing assertions must include \"sign\" in their \"usages\"');\n }\n const input = `${b64u(buf(JSON.stringify(header)))}.${b64u(buf(JSON.stringify(claimsSet)))}`;\n const signature = b64u(await crypto.subtle.sign(keyToSubtle(key), key, buf(input)));\n return `${input}.${signature}`;\n}\nexport async function issueRequestObject(as, client, parameters, privateKey) {\n assertAs(as);\n assertClient(client);\n parameters = new URLSearchParams(parameters);\n const { key, kid } = getKeyAndKid(privateKey);\n if (!isPrivateKey(key)) {\n throw new TypeError('\"privateKey.key\" must be a private CryptoKey');\n }\n parameters.set('client_id', client.client_id);\n const now = epochTime() + getClockSkew(client);\n const claims = {\n ...Object.fromEntries(parameters.entries()),\n jti: randomBytes(),\n aud: as.issuer,\n exp: now + 60,\n iat: now,\n nbf: now,\n iss: client.client_id,\n };\n let resource;\n if (parameters.has('resource') &&\n (resource = parameters.getAll('resource')) &&\n resource.length > 1) {\n claims.resource = resource;\n }\n {\n let value = parameters.get('max_age');\n if (value !== null) {\n claims.max_age = parseInt(value, 10);\n if (!Number.isFinite(claims.max_age)) {\n throw new OPE('\"max_age\" parameter must be a number');\n }\n }\n }\n {\n let value = parameters.get('claims');\n if (value !== null) {\n try {\n claims.claims = JSON.parse(value);\n }\n catch (cause) {\n throw new OPE('failed to parse the \"claims\" parameter as JSON', { cause });\n }\n if (!isJsonObject(claims.claims)) {\n throw new OPE('\"claims\" parameter must be a JSON with a top level object');\n }\n }\n }\n {\n let value = parameters.get('authorization_details');\n if (value !== null) {\n try {\n claims.authorization_details = JSON.parse(value);\n }\n catch (cause) {\n throw new OPE('failed to parse the \"authorization_details\" parameter as JSON', { cause });\n }\n if (!Array.isArray(claims.authorization_details)) {\n throw new OPE('\"authorization_details\" parameter must be a JSON with a top level array');\n }\n }\n }\n return jwt({\n alg: keyToJws(key),\n typ: 'oauth-authz-req+jwt',\n kid,\n }, claims, key);\n}\nasync function dpopProofJwt(headers, options, url, htm, clockSkew, accessToken) {\n const { privateKey, publicKey, nonce = dpopNonces.get(url.origin) } = options;\n if (!isPrivateKey(privateKey)) {\n throw new TypeError('\"DPoP.privateKey\" must be a private CryptoKey');\n }\n if (!isPublicKey(publicKey)) {\n throw new TypeError('\"DPoP.publicKey\" must be a public CryptoKey');\n }\n if (nonce !== undefined && !validateString(nonce)) {\n throw new TypeError('\"DPoP.nonce\" must be a non-empty string or undefined');\n }\n if (!publicKey.extractable) {\n throw new TypeError('\"DPoP.publicKey.extractable\" must be true');\n }\n const now = epochTime() + clockSkew;\n const proof = await jwt({\n alg: keyToJws(privateKey),\n typ: 'dpop+jwt',\n jwk: await publicJwk(publicKey),\n }, {\n iat: now,\n jti: randomBytes(),\n htm,\n nonce,\n htu: `${url.origin}${url.pathname}`,\n ath: accessToken ? b64u(await crypto.subtle.digest('SHA-256', buf(accessToken))) : undefined,\n }, privateKey);\n headers.set('dpop', proof);\n}\nlet jwkCache;\nasync function getSetPublicJwkCache(key) {\n const { kty, e, n, x, y, crv } = await crypto.subtle.exportKey('jwk', key);\n const jwk = { kty, e, n, x, y, crv };\n jwkCache.set(key, jwk);\n return jwk;\n}\nasync function publicJwk(key) {\n jwkCache || (jwkCache = new WeakMap());\n return jwkCache.get(key) || getSetPublicJwkCache(key);\n}\nfunction validateEndpoint(value, endpoint, options) {\n if (typeof value !== 'string') {\n if (options?.[useMtlsAlias]) {\n throw new TypeError(`\"as.mtls_endpoint_aliases.${endpoint}\" must be a string`);\n }\n throw new TypeError(`\"as.${endpoint}\" must be a string`);\n }\n return new URL(value);\n}\nfunction resolveEndpoint(as, endpoint, options) {\n if (options?.[useMtlsAlias] && as.mtls_endpoint_aliases && endpoint in as.mtls_endpoint_aliases) {\n return validateEndpoint(as.mtls_endpoint_aliases[endpoint], endpoint, options);\n }\n return validateEndpoint(as[endpoint], endpoint);\n}\nexport async function pushedAuthorizationRequest(as, client, parameters, options) {\n assertAs(as);\n assertClient(client);\n const url = resolveEndpoint(as, 'pushed_authorization_request_endpoint', options);\n const body = new URLSearchParams(parameters);\n body.set('client_id', client.client_id);\n const headers = prepareHeaders(options?.headers);\n headers.set('accept', 'application/json');\n if (options?.DPoP !== undefined) {\n await dpopProofJwt(headers, options.DPoP, url, 'POST', getClockSkew(client));\n }\n return authenticatedRequest(as, client, 'POST', url, body, headers, options);\n}\nexport function isOAuth2Error(input) {\n const value = input;\n if (typeof value !== 'object' || Array.isArray(value) || value === null) {\n return false;\n }\n return value.error !== undefined;\n}\nfunction unquote(value) {\n if (value.length >= 2 && value[0] === '\"' && value[value.length - 1] === '\"') {\n return value.slice(1, -1);\n }\n return value;\n}\nconst SPLIT_REGEXP = /((?:,|, )?[0-9a-zA-Z!#$%&'*+-.^_`|~]+=)/;\nconst SCHEMES_REGEXP = /(?:^|, ?)([0-9a-zA-Z!#$%&'*+\\-.^_`|~]+)(?=$|[ ,])/g;\nfunction wwwAuth(scheme, params) {\n const arr = params.split(SPLIT_REGEXP).slice(1);\n if (!arr.length) {\n return { scheme: scheme.toLowerCase(), parameters: {} };\n }\n arr[arr.length - 1] = arr[arr.length - 1].replace(/,$/, '');\n const parameters = {};\n for (let i = 1; i < arr.length; i += 2) {\n const idx = i;\n if (arr[idx][0] === '\"') {\n while (arr[idx].slice(-1) !== '\"' && ++i < arr.length) {\n arr[idx] += arr[i];\n }\n }\n const key = arr[idx - 1].replace(/^(?:, ?)|=$/g, '').toLowerCase();\n parameters[key] = unquote(arr[idx]);\n }\n return {\n scheme: scheme.toLowerCase(),\n parameters,\n };\n}\nexport function parseWwwAuthenticateChallenges(response) {\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n const header = response.headers.get('www-authenticate');\n if (header === null) {\n return undefined;\n }\n const result = [];\n for (const { 1: scheme, index } of header.matchAll(SCHEMES_REGEXP)) {\n result.push([scheme, index]);\n }\n if (!result.length) {\n return undefined;\n }\n const challenges = result.map(([scheme, indexOf], i, others) => {\n const next = others[i + 1];\n let parameters;\n if (next) {\n parameters = header.slice(indexOf, next[1]);\n }\n else {\n parameters = header.slice(indexOf);\n }\n return wwwAuth(scheme, parameters);\n });\n return challenges;\n}\nexport async function processPushedAuthorizationResponse(as, client, response) {\n assertAs(as);\n assertClient(client);\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 201) {\n let err;\n if ((err = await handleOAuthBodyError(response))) {\n return err;\n }\n throw new OPE('\"response\" is not a conform Pushed Authorization Request Endpoint response');\n }\n assertReadableResponse(response);\n let json;\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n if (!validateString(json.request_uri)) {\n throw new OPE('\"response\" body \"request_uri\" property must be a non-empty string');\n }\n if (typeof json.expires_in !== 'number' || json.expires_in <= 0) {\n throw new OPE('\"response\" body \"expires_in\" property must be a positive number');\n }\n return json;\n}\nexport async function protectedResourceRequest(accessToken, method, url, headers, body, options) {\n if (!validateString(accessToken)) {\n throw new TypeError('\"accessToken\" must be a non-empty string');\n }\n if (!(url instanceof URL)) {\n throw new TypeError('\"url\" must be an instance of URL');\n }\n headers = prepareHeaders(headers);\n if (options?.DPoP === undefined) {\n headers.set('authorization', `Bearer ${accessToken}`);\n }\n else {\n await dpopProofJwt(headers, options.DPoP, url, 'GET', getClockSkew({ [clockSkew]: options?.[clockSkew] }), accessToken);\n headers.set('authorization', `DPoP ${accessToken}`);\n }\n return (options?.[customFetch] || fetch)(url.href, {\n body,\n headers: Object.fromEntries(headers.entries()),\n method,\n redirect: 'manual',\n signal: options?.signal ? signal(options.signal) : null,\n }).then(processDpopNonce);\n}\nexport async function userInfoRequest(as, client, accessToken, options) {\n assertAs(as);\n assertClient(client);\n const url = resolveEndpoint(as, 'userinfo_endpoint', options);\n const headers = prepareHeaders(options?.headers);\n if (client.userinfo_signed_response_alg) {\n headers.set('accept', 'application/jwt');\n }\n else {\n headers.set('accept', 'application/json');\n headers.append('accept', 'application/jwt');\n }\n return protectedResourceRequest(accessToken, 'GET', url, headers, null, {\n ...options,\n [clockSkew]: getClockSkew(client),\n });\n}\nlet jwksMap;\nfunction setJwksCache(as, jwks, uat, cache) {\n jwksMap || (jwksMap = new WeakMap());\n jwksMap.set(as, {\n jwks,\n uat,\n get age() {\n return epochTime() - this.uat;\n },\n });\n if (cache) {\n Object.assign(cache, { jwks: structuredClone(jwks), uat });\n }\n}\nfunction isFreshJwksCache(input) {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n if (!('uat' in input) || typeof input.uat !== 'number' || epochTime() - input.uat >= 300) {\n return false;\n }\n if (!('jwks' in input) ||\n !isJsonObject(input.jwks) ||\n !Array.isArray(input.jwks.keys) ||\n !Array.prototype.every.call(input.jwks.keys, isJsonObject)) {\n return false;\n }\n return true;\n}\nfunction clearJwksCache(as, cache) {\n jwksMap?.delete(as);\n delete cache?.jwks;\n delete cache?.uat;\n}\nasync function getPublicSigKeyFromIssuerJwksUri(as, options, header) {\n const { alg, kid } = header;\n checkSupportedJwsAlg(alg);\n if (!jwksMap?.has(as) && isFreshJwksCache(options?.[experimental_jwksCache])) {\n setJwksCache(as, options?.[experimental_jwksCache].jwks, options?.[experimental_jwksCache].uat);\n }\n let jwks;\n let age;\n if (jwksMap?.has(as)) {\n ;\n ({ jwks, age } = jwksMap.get(as));\n if (age >= 300) {\n clearJwksCache(as, options?.[experimental_jwksCache]);\n return getPublicSigKeyFromIssuerJwksUri(as, options, header);\n }\n }\n else {\n jwks = await jwksRequest(as, options).then(processJwksResponse);\n age = 0;\n setJwksCache(as, jwks, epochTime(), options?.[experimental_jwksCache]);\n }\n let kty;\n switch (alg.slice(0, 2)) {\n case 'RS':\n case 'PS':\n kty = 'RSA';\n break;\n case 'ES':\n kty = 'EC';\n break;\n case 'Ed':\n kty = 'OKP';\n break;\n default:\n throw new UnsupportedOperationError();\n }\n const candidates = jwks.keys.filter((jwk) => {\n if (jwk.kty !== kty) {\n return false;\n }\n if (kid !== undefined && kid !== jwk.kid) {\n return false;\n }\n if (jwk.alg !== undefined && alg !== jwk.alg) {\n return false;\n }\n if (jwk.use !== undefined && jwk.use !== 'sig') {\n return false;\n }\n if (jwk.key_ops?.includes('verify') === false) {\n return false;\n }\n switch (true) {\n case alg === 'ES256' && jwk.crv !== 'P-256':\n case alg === 'ES384' && jwk.crv !== 'P-384':\n case alg === 'ES512' && jwk.crv !== 'P-521':\n case alg === 'EdDSA' && !(jwk.crv === 'Ed25519' || jwk.crv === 'Ed448'):\n return false;\n }\n return true;\n });\n const { 0: jwk, length } = candidates;\n if (!length) {\n if (age >= 60) {\n clearJwksCache(as, options?.[experimental_jwksCache]);\n return getPublicSigKeyFromIssuerJwksUri(as, options, header);\n }\n throw new OPE('error when selecting a JWT verification key, no applicable keys found');\n }\n if (length !== 1) {\n throw new OPE('error when selecting a JWT verification key, multiple applicable keys found, a \"kid\" JWT Header Parameter is required');\n }\n const key = await importJwk(alg, jwk);\n if (key.type !== 'public') {\n throw new OPE('jwks_uri must only contain public keys');\n }\n return key;\n}\nexport const skipSubjectCheck = Symbol();\nfunction getContentType(response) {\n return response.headers.get('content-type')?.split(';')[0];\n}\nexport async function processUserInfoResponse(as, client, expectedSubject, response) {\n assertAs(as);\n assertClient(client);\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n throw new OPE('\"response\" is not a conform UserInfo Endpoint response');\n }\n let json;\n if (getContentType(response) === 'application/jwt') {\n assertReadableResponse(response);\n const { claims } = await validateJwt(await response.text(), checkSigningAlgorithm.bind(undefined, client.userinfo_signed_response_alg, as.userinfo_signing_alg_values_supported), noSignatureCheck, getClockSkew(client), getClockTolerance(client))\n .then(validateOptionalAudience.bind(undefined, client.client_id))\n .then(validateOptionalIssuer.bind(undefined, as.issuer));\n json = claims;\n }\n else {\n if (client.userinfo_signed_response_alg) {\n throw new OPE('JWT UserInfo Response expected');\n }\n assertReadableResponse(response);\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n if (!validateString(json.sub)) {\n throw new OPE('\"response\" body \"sub\" property must be a non-empty string');\n }\n switch (expectedSubject) {\n case skipSubjectCheck:\n break;\n default:\n if (!validateString(expectedSubject)) {\n throw new OPE('\"expectedSubject\" must be a non-empty string');\n }\n if (json.sub !== expectedSubject) {\n throw new OPE('unexpected \"response\" body \"sub\" value');\n }\n }\n return json;\n}\nasync function authenticatedRequest(as, client, method, url, body, headers, options) {\n await clientAuthentication(as, client, body, headers, options?.clientPrivateKey);\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n return (options?.[customFetch] || fetch)(url.href, {\n body,\n headers: Object.fromEntries(headers.entries()),\n method,\n redirect: 'manual',\n signal: options?.signal ? signal(options.signal) : null,\n }).then(processDpopNonce);\n}\nasync function tokenEndpointRequest(as, client, grantType, parameters, options) {\n const url = resolveEndpoint(as, 'token_endpoint', options);\n parameters.set('grant_type', grantType);\n const headers = prepareHeaders(options?.headers);\n headers.set('accept', 'application/json');\n if (options?.DPoP !== undefined) {\n await dpopProofJwt(headers, options.DPoP, url, 'POST', getClockSkew(client));\n }\n return authenticatedRequest(as, client, 'POST', url, parameters, headers, options);\n}\nexport async function refreshTokenGrantRequest(as, client, refreshToken, options) {\n assertAs(as);\n assertClient(client);\n if (!validateString(refreshToken)) {\n throw new TypeError('\"refreshToken\" must be a non-empty string');\n }\n const parameters = new URLSearchParams(options?.additionalParameters);\n parameters.set('refresh_token', refreshToken);\n return tokenEndpointRequest(as, client, 'refresh_token', parameters, options);\n}\nconst idTokenClaims = new WeakMap();\nexport function getValidatedIdTokenClaims(ref) {\n if (!ref.id_token) {\n return undefined;\n }\n const claims = idTokenClaims.get(ref);\n if (!claims) {\n throw new TypeError('\"ref\" was already garbage collected or did not resolve from the proper sources');\n }\n return claims;\n}\nasync function processGenericAccessTokenResponse(as, client, response, ignoreIdToken = false, ignoreRefreshToken = false) {\n assertAs(as);\n assertClient(client);\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n let err;\n if ((err = await handleOAuthBodyError(response))) {\n return err;\n }\n throw new OPE('\"response\" is not a conform Token Endpoint response');\n }\n assertReadableResponse(response);\n let json;\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n if (!validateString(json.access_token)) {\n throw new OPE('\"response\" body \"access_token\" property must be a non-empty string');\n }\n if (!validateString(json.token_type)) {\n throw new OPE('\"response\" body \"token_type\" property must be a non-empty string');\n }\n json.token_type = json.token_type.toLowerCase();\n if (json.token_type !== 'dpop' && json.token_type !== 'bearer') {\n throw new UnsupportedOperationError('unsupported `token_type` value');\n }\n if (json.expires_in !== undefined &&\n (typeof json.expires_in !== 'number' || json.expires_in <= 0)) {\n throw new OPE('\"response\" body \"expires_in\" property must be a positive number');\n }\n if (!ignoreRefreshToken &&\n json.refresh_token !== undefined &&\n !validateString(json.refresh_token)) {\n throw new OPE('\"response\" body \"refresh_token\" property must be a non-empty string');\n }\n if (json.scope !== undefined && typeof json.scope !== 'string') {\n throw new OPE('\"response\" body \"scope\" property must be a string');\n }\n if (!ignoreIdToken) {\n if (json.id_token !== undefined && !validateString(json.id_token)) {\n throw new OPE('\"response\" body \"id_token\" property must be a non-empty string');\n }\n if (json.id_token) {\n const { claims } = await validateJwt(json.id_token, checkSigningAlgorithm.bind(undefined, client.id_token_signed_response_alg, as.id_token_signing_alg_values_supported), noSignatureCheck, getClockSkew(client), getClockTolerance(client))\n .then(validatePresence.bind(undefined, ['aud', 'exp', 'iat', 'iss', 'sub']))\n .then(validateIssuer.bind(undefined, as.issuer))\n .then(validateAudience.bind(undefined, client.client_id));\n if (Array.isArray(claims.aud) && claims.aud.length !== 1 && claims.azp !== client.client_id) {\n throw new OPE('unexpected ID Token \"azp\" (authorized party) claim value');\n }\n if (claims.auth_time !== undefined &&\n (!Number.isFinite(claims.auth_time) || Math.sign(claims.auth_time) !== 1)) {\n throw new OPE('ID Token \"auth_time\" (authentication time) must be a positive number');\n }\n idTokenClaims.set(json, claims);\n }\n }\n return json;\n}\nexport async function processRefreshTokenResponse(as, client, response) {\n return processGenericAccessTokenResponse(as, client, response);\n}\nfunction validateOptionalAudience(expected, result) {\n if (result.claims.aud !== undefined) {\n return validateAudience(expected, result);\n }\n return result;\n}\nfunction validateAudience(expected, result) {\n if (Array.isArray(result.claims.aud)) {\n if (!result.claims.aud.includes(expected)) {\n throw new OPE('unexpected JWT \"aud\" (audience) claim value');\n }\n }\n else if (result.claims.aud !== expected) {\n throw new OPE('unexpected JWT \"aud\" (audience) claim value');\n }\n return result;\n}\nfunction validateOptionalIssuer(expected, result) {\n if (result.claims.iss !== undefined) {\n return validateIssuer(expected, result);\n }\n return result;\n}\nfunction validateIssuer(expected, result) {\n if (result.claims.iss !== expected) {\n throw new OPE('unexpected JWT \"iss\" (issuer) claim value');\n }\n return result;\n}\nconst branded = new WeakSet();\nfunction brand(searchParams) {\n branded.add(searchParams);\n return searchParams;\n}\nexport async function authorizationCodeGrantRequest(as, client, callbackParameters, redirectUri, codeVerifier, options) {\n assertAs(as);\n assertClient(client);\n if (!branded.has(callbackParameters)) {\n throw new TypeError('\"callbackParameters\" must be an instance of URLSearchParams obtained from \"validateAuthResponse()\", or \"validateJwtAuthResponse()');\n }\n if (!validateString(redirectUri)) {\n throw new TypeError('\"redirectUri\" must be a non-empty string');\n }\n if (!validateString(codeVerifier)) {\n throw new TypeError('\"codeVerifier\" must be a non-empty string');\n }\n const code = getURLSearchParameter(callbackParameters, 'code');\n if (!code) {\n throw new OPE('no authorization code in \"callbackParameters\"');\n }\n const parameters = new URLSearchParams(options?.additionalParameters);\n parameters.set('redirect_uri', redirectUri);\n parameters.set('code_verifier', codeVerifier);\n parameters.set('code', code);\n return tokenEndpointRequest(as, client, 'authorization_code', parameters, options);\n}\nconst jwtClaimNames = {\n aud: 'audience',\n c_hash: 'code hash',\n client_id: 'client id',\n exp: 'expiration time',\n iat: 'issued at',\n iss: 'issuer',\n jti: 'jwt id',\n nonce: 'nonce',\n s_hash: 'state hash',\n sub: 'subject',\n ath: 'access token hash',\n htm: 'http method',\n htu: 'http uri',\n cnf: 'confirmation',\n};\nfunction validatePresence(required, result) {\n for (const claim of required) {\n if (result.claims[claim] === undefined) {\n throw new OPE(`JWT \"${claim}\" (${jwtClaimNames[claim]}) claim missing`);\n }\n }\n return result;\n}\nexport const expectNoNonce = Symbol();\nexport const skipAuthTimeCheck = Symbol();\nexport async function processAuthorizationCodeOpenIDResponse(as, client, response, expectedNonce, maxAge) {\n const result = await processGenericAccessTokenResponse(as, client, response);\n if (isOAuth2Error(result)) {\n return result;\n }\n if (!validateString(result.id_token)) {\n throw new OPE('\"response\" body \"id_token\" property must be a non-empty string');\n }\n maxAge ?? (maxAge = client.default_max_age ?? skipAuthTimeCheck);\n const claims = getValidatedIdTokenClaims(result);\n if ((client.require_auth_time || maxAge !== skipAuthTimeCheck) &&\n claims.auth_time === undefined) {\n throw new OPE('ID Token \"auth_time\" (authentication time) claim missing');\n }\n if (maxAge !== skipAuthTimeCheck) {\n if (typeof maxAge !== 'number' || maxAge < 0) {\n throw new TypeError('\"maxAge\" must be a non-negative number');\n }\n const now = epochTime() + getClockSkew(client);\n const tolerance = getClockTolerance(client);\n if (claims.auth_time + maxAge < now - tolerance) {\n throw new OPE('too much time has elapsed since the last End-User authentication');\n }\n }\n switch (expectedNonce) {\n case undefined:\n case expectNoNonce:\n if (claims.nonce !== undefined) {\n throw new OPE('unexpected ID Token \"nonce\" claim value');\n }\n break;\n default:\n if (!validateString(expectedNonce)) {\n throw new TypeError('\"expectedNonce\" must be a non-empty string');\n }\n if (claims.nonce === undefined) {\n throw new OPE('ID Token \"nonce\" claim missing');\n }\n if (claims.nonce !== expectedNonce) {\n throw new OPE('unexpected ID Token \"nonce\" claim value');\n }\n }\n return result;\n}\nexport async function processAuthorizationCodeOAuth2Response(as, client, response) {\n const result = await processGenericAccessTokenResponse(as, client, response, true);\n if (isOAuth2Error(result)) {\n return result;\n }\n if (result.id_token !== undefined) {\n if (typeof result.id_token === 'string' && result.id_token.length) {\n throw new OPE('Unexpected ID Token returned, use processAuthorizationCodeOpenIDResponse() for OpenID Connect callback processing');\n }\n delete result.id_token;\n }\n return result;\n}\nfunction checkJwtType(expected, result) {\n if (typeof result.header.typ !== 'string' || normalizeTyp(result.header.typ) !== expected) {\n throw new OPE('unexpected JWT \"typ\" header parameter value');\n }\n return result;\n}\nexport async function clientCredentialsGrantRequest(as, client, parameters, options) {\n assertAs(as);\n assertClient(client);\n return tokenEndpointRequest(as, client, 'client_credentials', new URLSearchParams(parameters), options);\n}\nexport async function processClientCredentialsResponse(as, client, response) {\n const result = await processGenericAccessTokenResponse(as, client, response, true, true);\n if (isOAuth2Error(result)) {\n return result;\n }\n return result;\n}\nexport async function revocationRequest(as, client, token, options) {\n assertAs(as);\n assertClient(client);\n if (!validateString(token)) {\n throw new TypeError('\"token\" must be a non-empty string');\n }\n const url = resolveEndpoint(as, 'revocation_endpoint', options);\n const body = new URLSearchParams(options?.additionalParameters);\n body.set('token', token);\n const headers = prepareHeaders(options?.headers);\n headers.delete('accept');\n return authenticatedRequest(as, client, 'POST', url, body, headers, options);\n}\nexport async function processRevocationResponse(response) {\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n let err;\n if ((err = await handleOAuthBodyError(response))) {\n return err;\n }\n throw new OPE('\"response\" is not a conform Revocation Endpoint response');\n }\n return undefined;\n}\nfunction assertReadableResponse(response) {\n if (response.bodyUsed) {\n throw new TypeError('\"response\" body has been used already');\n }\n}\nexport async function introspectionRequest(as, client, token, options) {\n assertAs(as);\n assertClient(client);\n if (!validateString(token)) {\n throw new TypeError('\"token\" must be a non-empty string');\n }\n const url = resolveEndpoint(as, 'introspection_endpoint', options);\n const body = new URLSearchParams(options?.additionalParameters);\n body.set('token', token);\n const headers = prepareHeaders(options?.headers);\n if (options?.requestJwtResponse ?? client.introspection_signed_response_alg) {\n headers.set('accept', 'application/token-introspection+jwt');\n }\n else {\n headers.set('accept', 'application/json');\n }\n return authenticatedRequest(as, client, 'POST', url, body, headers, options);\n}\nexport async function processIntrospectionResponse(as, client, response) {\n assertAs(as);\n assertClient(client);\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n let err;\n if ((err = await handleOAuthBodyError(response))) {\n return err;\n }\n throw new OPE('\"response\" is not a conform Introspection Endpoint response');\n }\n let json;\n if (getContentType(response) === 'application/token-introspection+jwt') {\n assertReadableResponse(response);\n const { claims } = await validateJwt(await response.text(), checkSigningAlgorithm.bind(undefined, client.introspection_signed_response_alg, as.introspection_signing_alg_values_supported), noSignatureCheck, getClockSkew(client), getClockTolerance(client))\n .then(checkJwtType.bind(undefined, 'token-introspection+jwt'))\n .then(validatePresence.bind(undefined, ['aud', 'iat', 'iss']))\n .then(validateIssuer.bind(undefined, as.issuer))\n .then(validateAudience.bind(undefined, client.client_id));\n json = claims.token_introspection;\n if (!isJsonObject(json)) {\n throw new OPE('JWT \"token_introspection\" claim must be a JSON object');\n }\n }\n else {\n assertReadableResponse(response);\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n }\n if (typeof json.active !== 'boolean') {\n throw new OPE('\"response\" body \"active\" property must be a boolean');\n }\n return json;\n}\nasync function jwksRequest(as, options) {\n assertAs(as);\n const url = resolveEndpoint(as, 'jwks_uri');\n const headers = prepareHeaders(options?.headers);\n headers.set('accept', 'application/json');\n headers.append('accept', 'application/jwk-set+json');\n return (options?.[customFetch] || fetch)(url.href, {\n headers: Object.fromEntries(headers.entries()),\n method: 'GET',\n redirect: 'manual',\n signal: options?.signal ? signal(options.signal) : null,\n }).then(processDpopNonce);\n}\nasync function processJwksResponse(response) {\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n throw new OPE('\"response\" is not a conform JSON Web Key Set response');\n }\n assertReadableResponse(response);\n let json;\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n if (!Array.isArray(json.keys)) {\n throw new OPE('\"response\" body \"keys\" property must be an array');\n }\n if (!Array.prototype.every.call(json.keys, isJsonObject)) {\n throw new OPE('\"response\" body \"keys\" property members must be JWK formatted objects');\n }\n return json;\n}\nasync function handleOAuthBodyError(response) {\n if (response.status > 399 && response.status < 500) {\n assertReadableResponse(response);\n try {\n const json = await response.json();\n if (isJsonObject(json) && typeof json.error === 'string' && json.error.length) {\n if (json.error_description !== undefined && typeof json.error_description !== 'string') {\n delete json.error_description;\n }\n if (json.error_uri !== undefined && typeof json.error_uri !== 'string') {\n delete json.error_uri;\n }\n if (json.algs !== undefined && typeof json.algs !== 'string') {\n delete json.algs;\n }\n if (json.scope !== undefined && typeof json.scope !== 'string') {\n delete json.scope;\n }\n return json;\n }\n }\n catch { }\n }\n return undefined;\n}\nfunction checkSupportedJwsAlg(alg) {\n if (!SUPPORTED_JWS_ALGS.includes(alg)) {\n throw new UnsupportedOperationError('unsupported JWS \"alg\" identifier');\n }\n return alg;\n}\nfunction checkRsaKeyAlgorithm(algorithm) {\n if (typeof algorithm.modulusLength !== 'number' || algorithm.modulusLength < 2048) {\n throw new OPE(`${algorithm.name} modulusLength must be at least 2048 bits`);\n }\n}\nfunction ecdsaHashName(namedCurve) {\n switch (namedCurve) {\n case 'P-256':\n return 'SHA-256';\n case 'P-384':\n return 'SHA-384';\n case 'P-521':\n return 'SHA-512';\n default:\n throw new UnsupportedOperationError();\n }\n}\nfunction keyToSubtle(key) {\n switch (key.algorithm.name) {\n case 'ECDSA':\n return {\n name: key.algorithm.name,\n hash: ecdsaHashName(key.algorithm.namedCurve),\n };\n case 'RSA-PSS': {\n checkRsaKeyAlgorithm(key.algorithm);\n switch (key.algorithm.hash.name) {\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n return {\n name: key.algorithm.name,\n saltLength: parseInt(key.algorithm.hash.name.slice(-3), 10) >> 3,\n };\n default:\n throw new UnsupportedOperationError();\n }\n }\n case 'RSASSA-PKCS1-v1_5':\n checkRsaKeyAlgorithm(key.algorithm);\n return key.algorithm.name;\n case 'Ed448':\n case 'Ed25519':\n return key.algorithm.name;\n }\n throw new UnsupportedOperationError();\n}\nconst noSignatureCheck = Symbol();\nasync function validateJwt(jws, checkAlg, getKey, clockSkew, clockTolerance) {\n const { 0: protectedHeader, 1: payload, 2: encodedSignature, length } = jws.split('.');\n if (length === 5) {\n throw new UnsupportedOperationError('JWE structure JWTs are not supported');\n }\n if (length !== 3) {\n throw new OPE('Invalid JWT');\n }\n let header;\n try {\n header = JSON.parse(buf(b64u(protectedHeader)));\n }\n catch (cause) {\n throw new OPE('failed to parse JWT Header body as base64url encoded JSON', { cause });\n }\n if (!isJsonObject(header)) {\n throw new OPE('JWT Header must be a top level object');\n }\n checkAlg(header);\n if (header.crit !== undefined) {\n throw new OPE('unexpected JWT \"crit\" header parameter');\n }\n const signature = b64u(encodedSignature);\n let key;\n if (getKey !== noSignatureCheck) {\n key = await getKey(header);\n const input = `${protectedHeader}.${payload}`;\n const verified = await crypto.subtle.verify(keyToSubtle(key), key, signature, buf(input));\n if (!verified) {\n throw new OPE('JWT signature verification failed');\n }\n }\n let claims;\n try {\n claims = JSON.parse(buf(b64u(payload)));\n }\n catch (cause) {\n throw new OPE('failed to parse JWT Payload body as base64url encoded JSON', { cause });\n }\n if (!isJsonObject(claims)) {\n throw new OPE('JWT Payload must be a top level object');\n }\n const now = epochTime() + clockSkew;\n if (claims.exp !== undefined) {\n if (typeof claims.exp !== 'number') {\n throw new OPE('unexpected JWT \"exp\" (expiration time) claim type');\n }\n if (claims.exp <= now - clockTolerance) {\n throw new OPE('unexpected JWT \"exp\" (expiration time) claim value, timestamp is <= now()');\n }\n }\n if (claims.iat !== undefined) {\n if (typeof claims.iat !== 'number') {\n throw new OPE('unexpected JWT \"iat\" (issued at) claim type');\n }\n }\n if (claims.iss !== undefined) {\n if (typeof claims.iss !== 'string') {\n throw new OPE('unexpected JWT \"iss\" (issuer) claim type');\n }\n }\n if (claims.nbf !== undefined) {\n if (typeof claims.nbf !== 'number') {\n throw new OPE('unexpected JWT \"nbf\" (not before) claim type');\n }\n if (claims.nbf > now + clockTolerance) {\n throw new OPE('unexpected JWT \"nbf\" (not before) claim value, timestamp is > now()');\n }\n }\n if (claims.aud !== undefined) {\n if (typeof claims.aud !== 'string' && !Array.isArray(claims.aud)) {\n throw new OPE('unexpected JWT \"aud\" (audience) claim type');\n }\n }\n return { header, claims, signature, key };\n}\nexport async function validateJwtAuthResponse(as, client, parameters, expectedState, options) {\n assertAs(as);\n assertClient(client);\n if (parameters instanceof URL) {\n parameters = parameters.searchParams;\n }\n if (!(parameters instanceof URLSearchParams)) {\n throw new TypeError('\"parameters\" must be an instance of URLSearchParams, or URL');\n }\n const response = getURLSearchParameter(parameters, 'response');\n if (!response) {\n throw new OPE('\"parameters\" does not contain a JARM response');\n }\n if (typeof as.jwks_uri !== 'string') {\n throw new TypeError('\"as.jwks_uri\" must be a string');\n }\n const { claims } = await validateJwt(response, checkSigningAlgorithm.bind(undefined, client.authorization_signed_response_alg, as.authorization_signing_alg_values_supported), getPublicSigKeyFromIssuerJwksUri.bind(undefined, as, options), getClockSkew(client), getClockTolerance(client))\n .then(validatePresence.bind(undefined, ['aud', 'exp', 'iss']))\n .then(validateIssuer.bind(undefined, as.issuer))\n .then(validateAudience.bind(undefined, client.client_id));\n const result = new URLSearchParams();\n for (const [key, value] of Object.entries(claims)) {\n if (typeof value === 'string' && key !== 'aud') {\n result.set(key, value);\n }\n }\n return validateAuthResponse(as, client, result, expectedState);\n}\nasync function idTokenHash(alg, data, key) {\n let algorithm;\n switch (alg) {\n case 'RS256':\n case 'PS256':\n case 'ES256':\n algorithm = 'SHA-256';\n break;\n case 'RS384':\n case 'PS384':\n case 'ES384':\n algorithm = 'SHA-384';\n break;\n case 'RS512':\n case 'PS512':\n case 'ES512':\n algorithm = 'SHA-512';\n break;\n case 'EdDSA':\n if (key.algorithm.name === 'Ed25519') {\n algorithm = 'SHA-512';\n break;\n }\n throw new UnsupportedOperationError();\n default:\n throw new UnsupportedOperationError();\n }\n const digest = await crypto.subtle.digest(algorithm, buf(data));\n return b64u(digest.slice(0, digest.byteLength / 2));\n}\nasync function idTokenHashMatches(data, actual, alg, key) {\n const expected = await idTokenHash(alg, data, key);\n return actual === expected;\n}\nexport async function validateDetachedSignatureResponse(as, client, parameters, expectedNonce, expectedState, maxAge, options) {\n assertAs(as);\n assertClient(client);\n if (parameters instanceof URL) {\n if (!parameters.hash.length) {\n throw new TypeError('\"parameters\" as an instance of URL must contain a hash (fragment) with the Authorization Response parameters');\n }\n parameters = new URLSearchParams(parameters.hash.slice(1));\n }\n if (!(parameters instanceof URLSearchParams)) {\n throw new TypeError('\"parameters\" must be an instance of URLSearchParams');\n }\n parameters = new URLSearchParams(parameters);\n const id_token = getURLSearchParameter(parameters, 'id_token');\n parameters.delete('id_token');\n switch (expectedState) {\n case undefined:\n case expectNoState:\n break;\n default:\n if (!validateString(expectedState)) {\n throw new TypeError('\"expectedState\" must be a non-empty string');\n }\n }\n const result = validateAuthResponse({\n ...as,\n authorization_response_iss_parameter_supported: false,\n }, client, parameters, expectedState);\n if (isOAuth2Error(result)) {\n return result;\n }\n if (!id_token) {\n throw new OPE('\"parameters\" does not contain an ID Token');\n }\n const code = getURLSearchParameter(parameters, 'code');\n if (!code) {\n throw new OPE('\"parameters\" does not contain an Authorization Code');\n }\n if (typeof as.jwks_uri !== 'string') {\n throw new TypeError('\"as.jwks_uri\" must be a string');\n }\n const requiredClaims = [\n 'aud',\n 'exp',\n 'iat',\n 'iss',\n 'sub',\n 'nonce',\n 'c_hash',\n ];\n if (typeof expectedState === 'string') {\n requiredClaims.push('s_hash');\n }\n const { claims, header, key } = await validateJwt(id_token, checkSigningAlgorithm.bind(undefined, client.id_token_signed_response_alg, as.id_token_signing_alg_values_supported), getPublicSigKeyFromIssuerJwksUri.bind(undefined, as, options), getClockSkew(client), getClockTolerance(client))\n .then(validatePresence.bind(undefined, requiredClaims))\n .then(validateIssuer.bind(undefined, as.issuer))\n .then(validateAudience.bind(undefined, client.client_id));\n const clockSkew = getClockSkew(client);\n const now = epochTime() + clockSkew;\n if (claims.iat < now - 3600) {\n throw new OPE('unexpected JWT \"iat\" (issued at) claim value, it is too far in the past');\n }\n if (typeof claims.c_hash !== 'string' ||\n (await idTokenHashMatches(code, claims.c_hash, header.alg, key)) !== true) {\n throw new OPE('invalid ID Token \"c_hash\" (code hash) claim value');\n }\n if (claims.s_hash !== undefined && typeof expectedState !== 'string') {\n throw new OPE('could not verify ID Token \"s_hash\" (state hash) claim value');\n }\n if (typeof expectedState === 'string' &&\n (typeof claims.s_hash !== 'string' ||\n (await idTokenHashMatches(expectedState, claims.s_hash, header.alg, key)) !== true)) {\n throw new OPE('invalid ID Token \"s_hash\" (state hash) claim value');\n }\n if (claims.auth_time !== undefined &&\n (!Number.isFinite(claims.auth_time) || Math.sign(claims.auth_time) !== 1)) {\n throw new OPE('ID Token \"auth_time\" (authentication time) must be a positive number');\n }\n maxAge ?? (maxAge = client.default_max_age ?? skipAuthTimeCheck);\n if ((client.require_auth_time || maxAge !== skipAuthTimeCheck) &&\n claims.auth_time === undefined) {\n throw new OPE('ID Token \"auth_time\" (authentication time) claim missing');\n }\n if (maxAge !== skipAuthTimeCheck) {\n if (typeof maxAge !== 'number' || maxAge < 0) {\n throw new TypeError('\"maxAge\" must be a non-negative number');\n }\n const now = epochTime() + getClockSkew(client);\n const tolerance = getClockTolerance(client);\n if (claims.auth_time + maxAge < now - tolerance) {\n throw new OPE('too much time has elapsed since the last End-User authentication');\n }\n }\n if (!validateString(expectedNonce)) {\n throw new TypeError('\"expectedNonce\" must be a non-empty string');\n }\n if (claims.nonce !== expectedNonce) {\n throw new OPE('unexpected ID Token \"nonce\" claim value');\n }\n if (Array.isArray(claims.aud) && claims.aud.length !== 1 && claims.azp !== client.client_id) {\n throw new OPE('unexpected ID Token \"azp\" (authorized party) claim value');\n }\n return result;\n}\nfunction checkSigningAlgorithm(client, issuer, header) {\n if (client !== undefined) {\n if (header.alg !== client) {\n throw new OPE('unexpected JWT \"alg\" header parameter');\n }\n return;\n }\n if (Array.isArray(issuer)) {\n if (!issuer.includes(header.alg)) {\n throw new OPE('unexpected JWT \"alg\" header parameter');\n }\n return;\n }\n if (header.alg !== 'RS256') {\n throw new OPE('unexpected JWT \"alg\" header parameter');\n }\n}\nfunction getURLSearchParameter(parameters, name) {\n const { 0: value, length } = parameters.getAll(name);\n if (length > 1) {\n throw new OPE(`\"${name}\" parameter must be provided only once`);\n }\n return value;\n}\nexport const skipStateCheck = Symbol();\nexport const expectNoState = Symbol();\nexport function validateAuthResponse(as, client, parameters, expectedState) {\n assertAs(as);\n assertClient(client);\n if (parameters instanceof URL) {\n parameters = parameters.searchParams;\n }\n if (!(parameters instanceof URLSearchParams)) {\n throw new TypeError('\"parameters\" must be an instance of URLSearchParams, or URL');\n }\n if (getURLSearchParameter(parameters, 'response')) {\n throw new OPE('\"parameters\" contains a JARM response, use validateJwtAuthResponse() instead of validateAuthResponse()');\n }\n const iss = getURLSearchParameter(parameters, 'iss');\n const state = getURLSearchParameter(parameters, 'state');\n if (!iss && as.authorization_response_iss_parameter_supported) {\n throw new OPE('response parameter \"iss\" (issuer) missing');\n }\n if (iss && iss !== as.issuer) {\n throw new OPE('unexpected \"iss\" (issuer) response parameter value');\n }\n switch (expectedState) {\n case undefined:\n case expectNoState:\n if (state !== undefined) {\n throw new OPE('unexpected \"state\" response parameter encountered');\n }\n break;\n case skipStateCheck:\n break;\n default:\n if (!validateString(expectedState)) {\n throw new OPE('\"expectedState\" must be a non-empty string');\n }\n if (state === undefined) {\n throw new OPE('response parameter \"state\" missing');\n }\n if (state !== expectedState) {\n throw new OPE('unexpected \"state\" response parameter value');\n }\n }\n const error = getURLSearchParameter(parameters, 'error');\n if (error) {\n return {\n error,\n error_description: getURLSearchParameter(parameters, 'error_description'),\n error_uri: getURLSearchParameter(parameters, 'error_uri'),\n };\n }\n const id_token = getURLSearchParameter(parameters, 'id_token');\n const token = getURLSearchParameter(parameters, 'token');\n if (id_token !== undefined || token !== undefined) {\n throw new UnsupportedOperationError('implicit and hybrid flows are not supported');\n }\n return brand(new URLSearchParams(parameters));\n}\nfunction algToSubtle(alg, crv) {\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { name: 'RSA-PSS', hash: `SHA-${alg.slice(-3)}` };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${alg.slice(-3)}` };\n case 'ES256':\n case 'ES384':\n return { name: 'ECDSA', namedCurve: `P-${alg.slice(-3)}` };\n case 'ES512':\n return { name: 'ECDSA', namedCurve: 'P-521' };\n case 'EdDSA': {\n switch (crv) {\n case 'Ed25519':\n case 'Ed448':\n return crv;\n default:\n throw new UnsupportedOperationError();\n }\n }\n default:\n throw new UnsupportedOperationError();\n }\n}\nasync function importJwk(alg, jwk) {\n const { ext, key_ops, use, ...key } = jwk;\n return crypto.subtle.importKey('jwk', key, algToSubtle(alg, jwk.crv), true, ['verify']);\n}\nexport async function deviceAuthorizationRequest(as, client, parameters, options) {\n assertAs(as);\n assertClient(client);\n const url = resolveEndpoint(as, 'device_authorization_endpoint', options);\n const body = new URLSearchParams(parameters);\n body.set('client_id', client.client_id);\n const headers = prepareHeaders(options?.headers);\n headers.set('accept', 'application/json');\n return authenticatedRequest(as, client, 'POST', url, body, headers, options);\n}\nexport async function processDeviceAuthorizationResponse(as, client, response) {\n assertAs(as);\n assertClient(client);\n if (!looseInstanceOf(response, Response)) {\n throw new TypeError('\"response\" must be an instance of Response');\n }\n if (response.status !== 200) {\n let err;\n if ((err = await handleOAuthBodyError(response))) {\n return err;\n }\n throw new OPE('\"response\" is not a conform Device Authorization Endpoint response');\n }\n assertReadableResponse(response);\n let json;\n try {\n json = await response.json();\n }\n catch (cause) {\n throw new OPE('failed to parse \"response\" body as JSON', { cause });\n }\n if (!isJsonObject(json)) {\n throw new OPE('\"response\" body must be a top level object');\n }\n if (!validateString(json.device_code)) {\n throw new OPE('\"response\" body \"device_code\" property must be a non-empty string');\n }\n if (!validateString(json.user_code)) {\n throw new OPE('\"response\" body \"user_code\" property must be a non-empty string');\n }\n if (!validateString(json.verification_uri)) {\n throw new OPE('\"response\" body \"verification_uri\" property must be a non-empty string');\n }\n if (typeof json.expires_in !== 'number' || json.expires_in <= 0) {\n throw new OPE('\"response\" body \"expires_in\" property must be a positive number');\n }\n if (json.verification_uri_complete !== undefined &&\n !validateString(json.verification_uri_complete)) {\n throw new OPE('\"response\" body \"verification_uri_complete\" property must be a non-empty string');\n }\n if (json.interval !== undefined && (typeof json.interval !== 'number' || json.interval <= 0)) {\n throw new OPE('\"response\" body \"interval\" property must be a positive number');\n }\n return json;\n}\nexport async function deviceCodeGrantRequest(as, client, deviceCode, options) {\n assertAs(as);\n assertClient(client);\n if (!validateString(deviceCode)) {\n throw new TypeError('\"deviceCode\" must be a non-empty string');\n }\n const parameters = new URLSearchParams(options?.additionalParameters);\n parameters.set('device_code', deviceCode);\n return tokenEndpointRequest(as, client, 'urn:ietf:params:oauth:grant-type:device_code', parameters, options);\n}\nexport async function processDeviceCodeResponse(as, client, response) {\n return processGenericAccessTokenResponse(as, client, response);\n}\nexport async function generateKeyPair(alg, options) {\n if (!validateString(alg)) {\n throw new TypeError('\"alg\" must be a non-empty string');\n }\n const algorithm = algToSubtle(alg, alg === 'EdDSA' ? options?.crv ?? 'Ed25519' : undefined);\n if (alg.startsWith('PS') || alg.startsWith('RS')) {\n Object.assign(algorithm, {\n modulusLength: options?.modulusLength ?? 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n });\n }\n return (crypto.subtle.generateKey(algorithm, options?.extractable ?? false, ['sign', 'verify']));\n}\nfunction normalizeHtu(htu) {\n const url = new URL(htu);\n url.search = '';\n url.hash = '';\n return url.href;\n}\nasync function validateDPoP(as, request, accessToken, accessTokenClaims, options) {\n const header = request.headers.get('dpop');\n if (header === null) {\n throw new OPE('operation indicated DPoP use but the request has no DPoP HTTP Header');\n }\n if (request.headers.get('authorization')?.toLowerCase().startsWith('dpop ') === false) {\n throw new OPE(`operation indicated DPoP use but the request's Authorization HTTP Header scheme is not DPoP`);\n }\n if (typeof accessTokenClaims.cnf?.jkt !== 'string') {\n throw new OPE('operation indicated DPoP use but the JWT Access Token has no jkt confirmation claim');\n }\n const clockSkew = getClockSkew(options);\n const proof = await validateJwt(header, checkSigningAlgorithm.bind(undefined, undefined, as?.dpop_signing_alg_values_supported || SUPPORTED_JWS_ALGS), async ({ jwk, alg }) => {\n if (!jwk) {\n throw new OPE('DPoP Proof is missing the jwk header parameter');\n }\n const key = await importJwk(alg, jwk);\n if (key.type !== 'public') {\n throw new OPE('DPoP Proof jwk header parameter must contain a public key');\n }\n return key;\n }, clockSkew, getClockTolerance(options))\n .then(checkJwtType.bind(undefined, 'dpop+jwt'))\n .then(validatePresence.bind(undefined, ['iat', 'jti', 'ath', 'htm', 'htu']));\n const now = epochTime() + clockSkew;\n const diff = Math.abs(now - proof.claims.iat);\n if (diff > 300) {\n throw new OPE('DPoP Proof iat is not recent enough');\n }\n if (proof.claims.htm !== request.method) {\n throw new OPE('DPoP Proof htm mismatch');\n }\n if (typeof proof.claims.htu !== 'string' ||\n normalizeHtu(proof.claims.htu) !== normalizeHtu(request.url)) {\n throw new OPE('DPoP Proof htu mismatch');\n }\n {\n const expected = b64u(await crypto.subtle.digest('SHA-256', encoder.encode(accessToken)));\n if (proof.claims.ath !== expected) {\n throw new OPE('DPoP Proof ath mismatch');\n }\n }\n {\n let components;\n switch (proof.header.jwk.kty) {\n case 'EC':\n components = {\n crv: proof.header.jwk.crv,\n kty: proof.header.jwk.kty,\n x: proof.header.jwk.x,\n y: proof.header.jwk.y,\n };\n break;\n case 'OKP':\n components = {\n crv: proof.header.jwk.crv,\n kty: proof.header.jwk.kty,\n x: proof.header.jwk.x,\n };\n break;\n case 'RSA':\n components = {\n e: proof.header.jwk.e,\n kty: proof.header.jwk.kty,\n n: proof.header.jwk.n,\n };\n break;\n default:\n throw new UnsupportedOperationError();\n }\n const expected = b64u(await crypto.subtle.digest('SHA-256', encoder.encode(JSON.stringify(components))));\n if (accessTokenClaims.cnf.jkt !== expected) {\n throw new OPE('JWT Access Token confirmation mismatch');\n }\n }\n}\nexport async function validateJwtAccessToken(as, request, expectedAudience, options) {\n assertAs(as);\n if (!looseInstanceOf(request, Request)) {\n throw new TypeError('\"request\" must be an instance of Request');\n }\n if (!validateString(expectedAudience)) {\n throw new OPE('\"expectedAudience\" must be a non-empty string');\n }\n const authorization = request.headers.get('authorization');\n if (authorization === null) {\n throw new OPE('\"request\" is missing an Authorization HTTP Header');\n }\n let { 0: scheme, 1: accessToken, length } = authorization.split(' ');\n scheme = scheme.toLowerCase();\n switch (scheme) {\n case 'dpop':\n case 'bearer':\n break;\n default:\n throw new UnsupportedOperationError('unsupported Authorization HTTP Header scheme');\n }\n if (length !== 2) {\n throw new OPE('invalid Authorization HTTP Header format');\n }\n const requiredClaims = [\n 'iss',\n 'exp',\n 'aud',\n 'sub',\n 'iat',\n 'jti',\n 'client_id',\n ];\n if (options?.requireDPoP || scheme === 'dpop' || request.headers.has('dpop')) {\n requiredClaims.push('cnf');\n }\n const { claims } = await validateJwt(accessToken, checkSigningAlgorithm.bind(undefined, undefined, SUPPORTED_JWS_ALGS), getPublicSigKeyFromIssuerJwksUri.bind(undefined, as, options), getClockSkew(options), getClockTolerance(options))\n .then(checkJwtType.bind(undefined, 'at+jwt'))\n .then(validatePresence.bind(undefined, requiredClaims))\n .then(validateIssuer.bind(undefined, as.issuer))\n .then(validateAudience.bind(undefined, expectedAudience));\n for (const claim of ['client_id', 'jti', 'sub']) {\n if (typeof claims[claim] !== 'string') {\n throw new OPE(`unexpected JWT \"${claim}\" claim type`);\n }\n }\n if ('cnf' in claims) {\n if (!isJsonObject(claims.cnf)) {\n throw new OPE('unexpected JWT \"cnf\" (confirmation) claim value');\n }\n const { 0: cnf, length } = Object.keys(claims.cnf);\n if (length) {\n if (length !== 1) {\n throw new UnsupportedOperationError('multiple confirmation claims are not supported');\n }\n if (cnf !== 'jkt') {\n throw new UnsupportedOperationError('unsupported JWT Confirmation method');\n }\n }\n }\n if (options?.requireDPoP ||\n scheme === 'dpop' ||\n claims.cnf?.jkt !== undefined ||\n request.headers.has('dpop')) {\n await validateDPoP(as, request, accessToken, claims, options);\n }\n return claims;\n}\nexport const experimentalCustomFetch = customFetch;\nexport const experimental_customFetch = customFetch;\nexport const experimentalUseMtlsAlias = useMtlsAlias;\nexport const experimental_useMtlsAlias = useMtlsAlias;\nexport const experimental_validateDetachedSignatureResponse = validateDetachedSignatureResponse;\nexport const experimental_validateJwtAccessToken = validateJwtAccessToken;\n","import * as jose from \"jose\";\nimport * as o from \"oauth4webapi\";\nimport { InvalidCheck } from \"../../../../errors.js\";\nimport { decode, encode } from \"../../../../jwt.js\";\n/** Returns a signed cookie. */\nexport async function signCookie(type, value, maxAge, options, data) {\n const { cookies, logger } = options;\n logger.debug(`CREATE_${type.toUpperCase()}`, { value, maxAge });\n const expires = new Date();\n expires.setTime(expires.getTime() + maxAge * 1000);\n const token = { value };\n if (type === \"state\" && data)\n token.data = data;\n const name = cookies[type].name;\n return {\n name,\n value: await encode({ ...options.jwt, maxAge, token, salt: name }),\n options: { ...cookies[type].options, expires },\n };\n}\nconst PKCE_MAX_AGE = 60 * 15; // 15 minutes in seconds\nexport const pkce = {\n async create(options) {\n const code_verifier = o.generateRandomCodeVerifier();\n const value = await o.calculatePKCECodeChallenge(code_verifier);\n const maxAge = PKCE_MAX_AGE;\n const cookie = await signCookie(\"pkceCodeVerifier\", code_verifier, maxAge, options);\n return { cookie, value };\n },\n /**\n * Returns code_verifier if the provider is configured to use PKCE,\n * and clears the container cookie afterwards.\n * An error is thrown if the code_verifier is missing or invalid.\n * @see https://www.rfc-editor.org/rfc/rfc7636\n * @see https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/#pkce\n */\n async use(cookies, resCookies, options) {\n const { provider } = options;\n if (!provider?.checks?.includes(\"pkce\"))\n return;\n const codeVerifier = cookies?.[options.cookies.pkceCodeVerifier.name];\n if (!codeVerifier)\n throw new InvalidCheck(\"PKCE code_verifier cookie was missing.\");\n const value = await decode({\n ...options.jwt,\n token: codeVerifier,\n salt: options.cookies.pkceCodeVerifier.name,\n });\n if (!value?.value)\n throw new InvalidCheck(\"PKCE code_verifier value could not be parsed.\");\n // Clear the pkce code verifier cookie after use\n resCookies.push({\n name: options.cookies.pkceCodeVerifier.name,\n value: \"\",\n options: { ...options.cookies.pkceCodeVerifier.options, maxAge: 0 },\n });\n return value.value;\n },\n};\nconst STATE_MAX_AGE = 60 * 15; // 15 minutes in seconds\nexport function decodeState(value) {\n try {\n const decoder = new TextDecoder();\n return JSON.parse(decoder.decode(jose.base64url.decode(value)));\n }\n catch { }\n}\nexport const state = {\n async create(options, data) {\n const { provider } = options;\n if (!provider.checks.includes(\"state\")) {\n if (data) {\n throw new InvalidCheck(\"State data was provided but the provider is not configured to use state.\");\n }\n return;\n }\n const encodedState = jose.base64url.encode(JSON.stringify({ ...data, random: o.generateRandomState() }));\n const maxAge = STATE_MAX_AGE;\n const cookie = await signCookie(\"state\", encodedState, maxAge, options, data);\n return { cookie, value: encodedState };\n },\n /**\n * Returns state if the provider is configured to use state,\n * and clears the container cookie afterwards.\n * An error is thrown if the state is missing or invalid.\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-10.12\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1\n */\n async use(cookies, resCookies, options, paramRandom) {\n const { provider } = options;\n if (!provider.checks.includes(\"state\"))\n return;\n const state = cookies?.[options.cookies.state.name];\n if (!state)\n throw new InvalidCheck(\"State cookie was missing.\");\n // IDEA: Let the user do something with the returned state\n const encodedState = await decode({\n ...options.jwt,\n token: state,\n salt: options.cookies.state.name,\n });\n if (!encodedState?.value)\n throw new InvalidCheck(\"State (cookie) value could not be parsed.\");\n const decodedState = decodeState(encodedState.value);\n if (!decodedState)\n throw new InvalidCheck(\"State (encoded) value could not be parsed.\");\n if (decodedState.random !== paramRandom)\n throw new InvalidCheck(`Random state values did not match. Expected: ${decodedState.random}. Got: ${paramRandom}`);\n // Clear the state cookie after use\n resCookies.push({\n name: options.cookies.state.name,\n value: \"\",\n options: { ...options.cookies.state.options, maxAge: 0 },\n });\n return encodedState.value;\n },\n};\nconst NONCE_MAX_AGE = 60 * 15; // 15 minutes in seconds\nexport const nonce = {\n async create(options) {\n if (!options.provider.checks.includes(\"nonce\"))\n return;\n const value = o.generateRandomNonce();\n const maxAge = NONCE_MAX_AGE;\n const cookie = await signCookie(\"nonce\", value, maxAge, options);\n return { cookie, value };\n },\n /**\n * Returns nonce if the provider is configured to use nonce,\n * and clears the container cookie afterwards.\n * An error is thrown if the nonce is missing or invalid.\n * @see https://openid.net/specs/openid-connect-core-1_0.html#NonceNotes\n * @see https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/#nonce\n */\n async use(cookies, resCookies, options) {\n const { provider } = options;\n if (!provider?.checks?.includes(\"nonce\"))\n return;\n const nonce = cookies?.[options.cookies.nonce.name];\n if (!nonce)\n throw new InvalidCheck(\"Nonce cookie was missing.\");\n const value = await decode({\n ...options.jwt,\n token: nonce,\n salt: options.cookies.nonce.name,\n });\n if (!value?.value)\n throw new InvalidCheck(\"Nonce value could not be parsed.\");\n // Clear the nonce cookie after use\n resCookies.push({\n name: options.cookies.nonce.name,\n value: \"\",\n options: { ...options.cookies.nonce.options, maxAge: 0 },\n });\n return value.value;\n },\n};\n/**\n * When the authorization flow contains a state, we check if it's a redirect proxy\n * and if so, we return the random state and the original redirect URL.\n */\nexport function handleState(query, provider, isOnRedirectProxy) {\n let randomState;\n let proxyRedirect;\n if (provider.redirectProxyUrl && !query?.state) {\n throw new InvalidCheck(\"Missing state in query, but required for redirect proxy\");\n }\n const state = decodeState(query?.state);\n randomState = state?.random;\n if (isOnRedirectProxy) {\n if (!state?.origin)\n return { randomState };\n proxyRedirect = `${state.origin}?${new URLSearchParams(query)}`;\n }\n return { randomState, proxyRedirect };\n}\nconst WEBAUTHN_CHALLENGE_MAX_AGE = 60 * 15; // 15 minutes in seconds\nexport const webauthnChallenge = {\n async create(options, challenge, registerData) {\n const maxAge = WEBAUTHN_CHALLENGE_MAX_AGE;\n const data = { challenge, registerData };\n const cookie = await signCookie(\"webauthnChallenge\", JSON.stringify(data), maxAge, options);\n return { cookie };\n },\n /**\n * Returns challenge if present,\n */\n async use(options, cookies, resCookies) {\n const challenge = cookies?.[options.cookies.webauthnChallenge.name];\n if (!challenge)\n throw new InvalidCheck(\"Challenge cookie missing.\");\n const value = await decode({\n ...options.jwt,\n token: challenge,\n salt: options.cookies.webauthnChallenge.name,\n });\n if (!value?.value)\n throw new InvalidCheck(\"Challenge value could not be parsed.\");\n // Clear the pkce code verifier cookie after use\n const cookie = {\n name: options.cookies.webauthnChallenge.name,\n value: \"\",\n options: { ...options.cookies.webauthnChallenge.options, maxAge: 0 },\n };\n resCookies.push(cookie);\n return JSON.parse(value.value);\n },\n};\n","import * as checks from \"./checks.js\";\nimport * as o from \"oauth4webapi\";\nimport { OAuthCallbackError, OAuthProfileParseError, } from \"../../../../errors.js\";\n/**\n * Handles the following OAuth steps.\n * https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1\n * https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3\n * https://openid.net/specs/openid-connect-core-1_0.html#UserInfoRequest\n *\n * @note Although requesting userinfo is not required by the OAuth2.0 spec,\n * we fetch it anyway. This is because we always want a user profile.\n */\nexport async function handleOAuth(query, cookies, options, randomState) {\n const { logger, provider } = options;\n let as;\n const { token, userinfo } = provider;\n // Falls back to authjs.dev if the user only passed params\n if ((!token?.url || token.url.host === \"authjs.dev\") &&\n (!userinfo?.url || userinfo.url.host === \"authjs.dev\")) {\n // We assume that issuer is always defined as this has been asserted earlier\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const issuer = new URL(provider.issuer);\n const discoveryResponse = await o.discoveryRequest(issuer);\n const discoveredAs = await o.processDiscoveryResponse(issuer, discoveryResponse);\n if (!discoveredAs.token_endpoint)\n throw new TypeError(\"TODO: Authorization server did not provide a token endpoint.\");\n if (!discoveredAs.userinfo_endpoint)\n throw new TypeError(\"TODO: Authorization server did not provide a userinfo endpoint.\");\n as = discoveredAs;\n }\n else {\n as = {\n issuer: provider.issuer ?? \"https://authjs.dev\", // TODO: review fallback issuer\n token_endpoint: token?.url.toString(),\n userinfo_endpoint: userinfo?.url.toString(),\n };\n }\n const client = {\n client_id: provider.clientId,\n client_secret: provider.clientSecret,\n ...provider.client,\n };\n const resCookies = [];\n const state = await checks.state.use(cookies, resCookies, options, randomState);\n const codeGrantParams = o.validateAuthResponse(as, client, new URLSearchParams(query), provider.checks.includes(\"state\") ? state : o.skipStateCheck);\n /** https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2.1 */\n if (o.isOAuth2Error(codeGrantParams)) {\n const cause = { providerId: provider.id, ...codeGrantParams };\n logger.debug(\"OAuthCallbackError\", cause);\n throw new OAuthCallbackError(\"OAuth Provider returned an error\", cause);\n }\n const codeVerifier = await checks.pkce.use(cookies, resCookies, options);\n let redirect_uri = provider.callbackUrl;\n if (!options.isOnRedirectProxy && provider.redirectProxyUrl) {\n redirect_uri = provider.redirectProxyUrl;\n }\n let codeGrantResponse = await o.authorizationCodeGrantRequest(as, client, codeGrantParams, redirect_uri, codeVerifier ?? \"auth\", // TODO: review fallback code verifier,\n {\n [o.customFetch]: (...args) => {\n if (!provider.checks.includes(\"pkce\") &&\n args[1]?.body instanceof URLSearchParams) {\n args[1].body.delete(\"code_verifier\");\n }\n return fetch(...args);\n },\n });\n if (provider.token?.conform) {\n codeGrantResponse =\n (await provider.token.conform(codeGrantResponse.clone())) ??\n codeGrantResponse;\n }\n let challenges;\n if ((challenges = o.parseWwwAuthenticateChallenges(codeGrantResponse))) {\n for (const challenge of challenges) {\n console.log(\"challenge\", challenge);\n }\n throw new Error(\"TODO: Handle www-authenticate challenges as needed\");\n }\n let profile = {};\n let tokens;\n if (provider.type === \"oidc\") {\n const nonce = await checks.nonce.use(cookies, resCookies, options);\n const result = await o.processAuthorizationCodeOpenIDResponse(as, client, codeGrantResponse, nonce ?? o.expectNoNonce);\n if (o.isOAuth2Error(result)) {\n console.log(\"error\", result);\n throw new Error(\"TODO: Handle OIDC response body error\");\n }\n profile = o.getValidatedIdTokenClaims(result);\n tokens = result;\n }\n else {\n tokens = await o.processAuthorizationCodeOAuth2Response(as, client, codeGrantResponse);\n if (o.isOAuth2Error(tokens)) {\n console.log(\"error\", tokens);\n throw new Error(\"TODO: Handle OAuth 2.0 response body error\");\n }\n if (userinfo?.request) {\n const _profile = await userinfo.request({ tokens, provider });\n if (_profile instanceof Object)\n profile = _profile;\n }\n else if (userinfo?.url) {\n const userinfoResponse = await o.userInfoRequest(as, client, tokens.access_token);\n profile = await userinfoResponse.json();\n }\n else {\n throw new TypeError(\"No userinfo endpoint configured\");\n }\n }\n if (tokens.expires_in) {\n tokens.expires_at =\n Math.floor(Date.now() / 1000) + Number(tokens.expires_in);\n }\n const profileResult = await getUserAndAccount(profile, provider, tokens, logger);\n return { ...profileResult, profile, cookies: resCookies };\n}\n/**\n * Returns the user and account that is going to be created in the database.\n * @internal\n */\nexport async function getUserAndAccount(OAuthProfile, provider, tokens, logger) {\n try {\n const userFromProfile = await provider.profile(OAuthProfile, tokens);\n const user = {\n ...userFromProfile,\n id: crypto.randomUUID(),\n email: userFromProfile.email?.toLowerCase(),\n };\n return {\n user,\n account: {\n ...tokens,\n provider: provider.id,\n type: provider.type,\n providerAccountId: userFromProfile.id ?? crypto.randomUUID(),\n },\n };\n }\n catch (e) {\n // If we didn't get a response either there was a problem with the provider\n // response *or* the user cancelled the action with the provider.\n //\n // Unfortunately, we can't tell which - at least not in a way that works for\n // all providers, so we return an empty object; the user should then be\n // redirected back to the sign up page. We log the error to help developers\n // who might be trying to debug this when configuring a new provider.\n logger.debug(\"getProfile error details\", OAuthProfile);\n logger.error(new OAuthProfileParseError(e, { provider: provider.id }));\n }\n}\n","import { AdapterError, AuthError, InvalidProvider, MissingAdapter, WebAuthnVerificationError, } from \"../../errors.js\";\nimport { webauthnChallenge } from \"../actions/callback/oauth/checks.js\";\nimport { randomString } from \"./web.js\";\n/**\n * Infers the WebAuthn options based on the provided parameters.\n *\n * @param action - The WebAuthn action to perform (optional).\n * @param loggedInUser - The logged-in user (optional).\n * @param userInfoResponse - The response containing user information (optional).\n *\n * @returns The WebAuthn action to perform, or null if no inference could be made.\n */\nexport function inferWebAuthnOptions(action, loggedIn, userInfoResponse) {\n const { user, exists = false } = userInfoResponse ?? {};\n switch (action) {\n case \"authenticate\": {\n /**\n * Always allow explicit authentication requests.\n */\n return \"authenticate\";\n }\n case \"register\": {\n /**\n * Registration is only allowed if:\n * - The user is logged in, meaning the user wants to register a new authenticator.\n * - The user is not logged in and provided user info that does NOT exist, meaning the user wants to register a new account.\n */\n if (user && loggedIn === exists)\n return \"register\";\n break;\n }\n case undefined: {\n /**\n * When no explicit action is provided, we try to infer it based on the user info provided. These are the possible cases:\n * - Logged in users must always send an explit action, so we bail out in this case.\n * - Otherwise, if no user info is provided, the desired action is authentication without pre-defined authenticators.\n * - Otherwise, if the user info provided is of an existing user, the desired action is authentication with their pre-defined authenticators.\n * - Finally, if the user info provided is of a non-existing user, the desired action is registration.\n */\n if (!loggedIn) {\n if (user) {\n if (exists) {\n return \"authenticate\";\n }\n else {\n return \"register\";\n }\n }\n else {\n return \"authenticate\";\n }\n }\n break;\n }\n }\n // No decision could be made\n return null;\n}\n/**\n * Retrieves the registration response for WebAuthn options request.\n *\n * @param options - The internal options for WebAuthn.\n * @param request - The request object.\n * @param user - The user information.\n * @param resCookies - Optional cookies to be included in the response.\n * @returns A promise that resolves to the WebAuthnOptionsResponse.\n */\nexport async function getRegistrationResponse(options, request, user, resCookies) {\n // Get registration options\n const regOptions = await getRegistrationOptions(options, request, user);\n // Get signed cookie\n const { cookie } = await webauthnChallenge.create(options, regOptions.challenge, user);\n return {\n status: 200,\n cookies: [...(resCookies ?? []), cookie],\n body: {\n action: \"register\",\n options: regOptions,\n },\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n}\n/**\n * Retrieves the authentication response for WebAuthn options request.\n *\n * @param options - The internal options for WebAuthn.\n * @param request - The request object.\n * @param user - Optional user information.\n * @param resCookies - Optional array of cookies to be included in the response.\n * @returns A promise that resolves to a WebAuthnOptionsResponse object.\n */\nexport async function getAuthenticationResponse(options, request, user, resCookies) {\n // Get authentication options\n const authOptions = await getAuthenticationOptions(options, request, user);\n // Get signed cookie\n const { cookie } = await webauthnChallenge.create(options, authOptions.challenge);\n return {\n status: 200,\n cookies: [...(resCookies ?? []), cookie],\n body: {\n action: \"authenticate\",\n options: authOptions,\n },\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n}\nexport async function verifyAuthenticate(options, request, resCookies) {\n const { adapter, provider } = options;\n // Get WebAuthn response from request body\n const data = request.body && typeof request.body.data === \"string\"\n ? JSON.parse(request.body.data)\n : undefined;\n if (!data ||\n typeof data !== \"object\" ||\n !(\"id\" in data) ||\n typeof data.id !== \"string\") {\n throw new AuthError(\"Invalid WebAuthn Authentication response\");\n }\n // Reset the ID so we smooth out implementation differences\n const credentialID = toBase64(fromBase64(data.id));\n // Get authenticator from database\n const authenticator = await adapter.getAuthenticator(credentialID);\n if (!authenticator) {\n throw new AuthError(`WebAuthn authenticator not found in database: ${JSON.stringify({\n credentialID,\n })}`);\n }\n // Get challenge from request cookies\n const { challenge: expectedChallenge } = await webauthnChallenge.use(options, request.cookies, resCookies);\n // Verify the response\n let verification;\n try {\n const relayingParty = provider.getRelayingParty(options, request);\n verification = await provider.simpleWebAuthn.verifyAuthenticationResponse({\n ...provider.verifyAuthenticationOptions,\n expectedChallenge,\n response: data,\n authenticator: fromAdapterAuthenticator(authenticator),\n expectedOrigin: relayingParty.origin,\n expectedRPID: relayingParty.id,\n });\n }\n catch (e) {\n throw new WebAuthnVerificationError(e);\n }\n const { verified, authenticationInfo } = verification;\n // Make sure the response was verified\n if (!verified) {\n throw new WebAuthnVerificationError(\"WebAuthn authentication response could not be verified.\");\n }\n // Update authenticator counter\n try {\n const { newCounter } = authenticationInfo;\n await adapter.updateAuthenticatorCounter(authenticator.credentialID, newCounter);\n }\n catch (e) {\n throw new AdapterError(`Failed to update authenticator counter. This may cause future authentication attempts to fail. ${JSON.stringify({\n credentialID,\n oldCounter: authenticator.counter,\n newCounter: authenticationInfo.newCounter,\n })}`, e);\n }\n // Get the account and user\n const account = await adapter.getAccount(authenticator.providerAccountId, provider.id);\n if (!account) {\n throw new AuthError(`WebAuthn account not found in database: ${JSON.stringify({\n credentialID,\n providerAccountId: authenticator.providerAccountId,\n })}`);\n }\n const user = await adapter.getUser(account.userId);\n if (!user) {\n throw new AuthError(`WebAuthn user not found in database: ${JSON.stringify({\n credentialID,\n providerAccountId: authenticator.providerAccountId,\n userID: account.userId,\n })}`);\n }\n return {\n account,\n user,\n };\n}\nexport async function verifyRegister(options, request, resCookies) {\n const { provider } = options;\n // Get WebAuthn response from request body\n const data = request.body && typeof request.body.data === \"string\"\n ? JSON.parse(request.body.data)\n : undefined;\n if (!data ||\n typeof data !== \"object\" ||\n !(\"id\" in data) ||\n typeof data.id !== \"string\") {\n throw new AuthError(\"Invalid WebAuthn Registration response\");\n }\n // Get challenge from request cookies\n const { challenge: expectedChallenge, registerData: user } = await webauthnChallenge.use(options, request.cookies, resCookies);\n if (!user) {\n throw new AuthError(\"Missing user registration data in WebAuthn challenge cookie\");\n }\n // Verify the response\n let verification;\n try {\n const relayingParty = provider.getRelayingParty(options, request);\n verification = await provider.simpleWebAuthn.verifyRegistrationResponse({\n ...provider.verifyRegistrationOptions,\n expectedChallenge,\n response: data,\n expectedOrigin: relayingParty.origin,\n expectedRPID: relayingParty.id,\n });\n }\n catch (e) {\n throw new WebAuthnVerificationError(e);\n }\n // Make sure the response was verified\n if (!verification.verified || !verification.registrationInfo) {\n throw new WebAuthnVerificationError(\"WebAuthn registration response could not be verified\");\n }\n // Build a new account\n const account = {\n providerAccountId: toBase64(verification.registrationInfo.credentialID),\n provider: options.provider.id,\n type: provider.type,\n };\n // Build a new authenticator\n const authenticator = {\n providerAccountId: account.providerAccountId,\n counter: verification.registrationInfo.counter,\n credentialID: toBase64(verification.registrationInfo.credentialID),\n credentialPublicKey: toBase64(verification.registrationInfo.credentialPublicKey),\n credentialBackedUp: verification.registrationInfo.credentialBackedUp,\n credentialDeviceType: verification.registrationInfo.credentialDeviceType,\n transports: transportsToString(data.response\n .transports),\n };\n // Return created stuff\n return {\n user,\n account,\n authenticator,\n };\n}\n/**\n * Generates WebAuthn authentication options.\n *\n * @param options - The internal options for WebAuthn.\n * @param request - The request object.\n * @param user - Optional user information.\n * @returns The authentication options.\n */\nasync function getAuthenticationOptions(options, request, user) {\n const { provider, adapter } = options;\n // Get the user's authenticators.\n const authenticators = user && user[\"id\"]\n ? await adapter.listAuthenticatorsByUserId(user.id)\n : null;\n const relayingParty = provider.getRelayingParty(options, request);\n // Return the authentication options.\n return await provider.simpleWebAuthn.generateAuthenticationOptions({\n ...provider.authenticationOptions,\n rpID: relayingParty.id,\n allowCredentials: authenticators?.map((a) => ({\n id: fromBase64(a.credentialID),\n type: \"public-key\",\n transports: stringToTransports(a.transports),\n })),\n });\n}\n/**\n * Generates WebAuthn registration options.\n *\n * @param options - The internal options for WebAuthn.\n * @param request - The request object.\n * @param user - The user information.\n * @returns The registration options.\n */\nasync function getRegistrationOptions(options, request, user) {\n const { provider, adapter } = options;\n // Get the user's authenticators.\n const authenticators = user[\"id\"]\n ? await adapter.listAuthenticatorsByUserId(user.id)\n : null;\n // Generate a random user ID for the credential.\n // We can do this because we don't use this user ID to link the\n // credential to the user. Instead, we store actual userID in the\n // Authenticator object and fetch it via it's credential ID.\n const userID = randomString(32);\n const relayingParty = provider.getRelayingParty(options, request);\n // Return the registration options.\n return await provider.simpleWebAuthn.generateRegistrationOptions({\n ...provider.registrationOptions,\n userID,\n userName: user.email,\n userDisplayName: user.name ?? undefined,\n rpID: relayingParty.id,\n rpName: relayingParty.name,\n excludeCredentials: authenticators?.map((a) => ({\n id: fromBase64(a.credentialID),\n type: \"public-key\",\n transports: stringToTransports(a.transports),\n })),\n });\n}\nexport function assertInternalOptionsWebAuthn(options) {\n const { provider, adapter } = options;\n // Adapter is required for WebAuthn\n if (!adapter)\n throw new MissingAdapter(\"An adapter is required for the WebAuthn provider\");\n // Provider must be WebAuthn\n if (!provider || provider.type !== \"webauthn\") {\n throw new InvalidProvider(\"Provider must be WebAuthn\");\n }\n // Narrow the options type for typed usage later\n return { ...options, provider, adapter };\n}\nfunction fromAdapterAuthenticator(authenticator) {\n return {\n ...authenticator,\n credentialDeviceType: authenticator.credentialDeviceType,\n transports: stringToTransports(authenticator.transports),\n credentialID: fromBase64(authenticator.credentialID),\n credentialPublicKey: fromBase64(authenticator.credentialPublicKey),\n };\n}\nexport function fromBase64(base64) {\n return new Uint8Array(Buffer.from(base64, \"base64\"));\n}\nexport function toBase64(bytes) {\n return Buffer.from(bytes).toString(\"base64\");\n}\nexport function transportsToString(transports) {\n return transports?.join(\",\");\n}\nexport function stringToTransports(tstring) {\n return tstring\n ? tstring.split(\",\")\n : undefined;\n}\n","// TODO: Make this file smaller\nimport { AuthError, AccessDenied, CallbackRouteError, CredentialsSignin, InvalidProvider, Verification, } from \"../../../errors.js\";\nimport { handleLoginOrRegister } from \"./handle-login.js\";\nimport { handleOAuth } from \"./oauth/callback.js\";\nimport { handleState } from \"./oauth/checks.js\";\nimport { createHash } from \"../../utils/web.js\";\nimport { assertInternalOptionsWebAuthn, verifyAuthenticate, verifyRegister, } from \"../../utils/webauthn-utils.js\";\n/** Handle callbacks from login services */\nexport async function callback(request, options, sessionStore, cookies) {\n if (!options.provider)\n throw new InvalidProvider(\"Callback route called without provider\");\n const { query, body, method, headers } = request;\n const { provider, adapter, url, callbackUrl, pages, jwt, events, callbacks, session: { strategy: sessionStrategy, maxAge: sessionMaxAge }, logger, } = options;\n const useJwtSession = sessionStrategy === \"jwt\";\n try {\n if (provider.type === \"oauth\" || provider.type === \"oidc\") {\n const { proxyRedirect, randomState } = handleState(query, provider, options.isOnRedirectProxy);\n if (proxyRedirect) {\n logger.debug(\"proxy redirect\", { proxyRedirect, randomState });\n return { redirect: proxyRedirect };\n }\n const authorizationResult = await handleOAuth(query, request.cookies, options, randomState);\n if (authorizationResult.cookies.length) {\n cookies.push(...authorizationResult.cookies);\n }\n logger.debug(\"authorization result\", authorizationResult);\n const { user: userFromProvider, account, profile: OAuthProfile, } = authorizationResult;\n // If we don't have a profile object then either something went wrong\n // or the user cancelled signing in. We don't know which, so we just\n // direct the user to the signin page for now. We could do something\n // else in future.\n // TODO: Handle user cancelling signin\n if (!userFromProvider || !account || !OAuthProfile) {\n return { redirect: `${url}/signin`, cookies };\n }\n // Check if user is allowed to sign in\n // Attempt to get Profile from OAuth provider details before invoking\n // signIn callback - but if no user object is returned, that is fine\n // (that just means it's a new user signing in for the first time).\n let userByAccount;\n if (adapter) {\n const { getUserByAccount } = adapter;\n userByAccount = await getUserByAccount({\n providerAccountId: account.providerAccountId,\n provider: provider.id,\n });\n }\n const redirect = await handleAuthorized({\n user: userByAccount ?? userFromProvider,\n account,\n profile: OAuthProfile,\n }, options);\n if (redirect)\n return { redirect, cookies };\n const { user, session, isNewUser } = await handleLoginOrRegister(sessionStore.value, userFromProvider, account, options);\n if (useJwtSession) {\n const defaultToken = {\n name: user.name,\n email: user.email,\n picture: user.image,\n sub: user.id?.toString(),\n };\n const token = await callbacks.jwt({\n token: defaultToken,\n user,\n account,\n profile: OAuthProfile,\n isNewUser,\n trigger: isNewUser ? \"signUp\" : \"signIn\",\n });\n // Clear cookies if token is null\n if (token === null) {\n cookies.push(...sessionStore.clean());\n }\n else {\n const salt = options.cookies.sessionToken.name;\n // Encode token\n const newToken = await jwt.encode({ ...jwt, token, salt });\n // Set cookie expiry date\n const cookieExpires = new Date();\n cookieExpires.setTime(cookieExpires.getTime() + sessionMaxAge * 1000);\n const sessionCookies = sessionStore.chunk(newToken, {\n expires: cookieExpires,\n });\n cookies.push(...sessionCookies);\n }\n }\n else {\n // Save Session Token in cookie\n cookies.push({\n name: options.cookies.sessionToken.name,\n value: session.sessionToken,\n options: {\n ...options.cookies.sessionToken.options,\n expires: session.expires,\n },\n });\n }\n await events.signIn?.({\n user,\n account,\n profile: OAuthProfile,\n isNewUser,\n });\n // Handle first logins on new accounts\n // e.g. option to send users to a new account landing page on initial login\n // Note that the callback URL is preserved, so the journey can still be resumed\n if (isNewUser && pages.newUser) {\n return {\n redirect: `${pages.newUser}${pages.newUser.includes(\"?\") ? \"&\" : \"?\"}${new URLSearchParams({ callbackUrl })}`,\n cookies,\n };\n }\n return { redirect: callbackUrl, cookies };\n }\n else if (provider.type === \"email\") {\n const token = query?.token;\n const identifier = query?.email;\n if (!token || !identifier) {\n const e = new TypeError(\"Missing token or email. The sign-in URL was manually opened without token/identifier or the link was not sent correctly in the email.\", { cause: { hasToken: !!token, hasEmail: !!identifier } });\n e.name = \"Configuration\";\n throw e;\n }\n const secret = provider.secret ?? options.secret;\n // @ts-expect-error -- Verified in `assertConfig`.\n const invite = await adapter.useVerificationToken({\n identifier,\n token: await createHash(`${token}${secret}`),\n });\n const hasInvite = !!invite;\n const expired = invite ? invite.expires.valueOf() < Date.now() : undefined;\n const invalidInvite = !hasInvite || expired;\n if (invalidInvite)\n throw new Verification({ hasInvite, expired });\n const user = (await adapter.getUserByEmail(identifier)) ?? {\n id: crypto.randomUUID(),\n email: identifier,\n emailVerified: null,\n };\n const account = {\n providerAccountId: user.email,\n userId: user.id,\n type: \"email\",\n provider: provider.id,\n };\n const redirect = await handleAuthorized({ user, account }, options);\n if (redirect)\n return { redirect, cookies };\n // Sign user in\n const { user: loggedInUser, session, isNewUser, } = await handleLoginOrRegister(sessionStore.value, user, account, options);\n if (useJwtSession) {\n const defaultToken = {\n name: loggedInUser.name,\n email: loggedInUser.email,\n picture: loggedInUser.image,\n sub: loggedInUser.id?.toString(),\n };\n const token = await callbacks.jwt({\n token: defaultToken,\n user: loggedInUser,\n account,\n isNewUser,\n trigger: isNewUser ? \"signUp\" : \"signIn\",\n });\n // Clear cookies if token is null\n if (token === null) {\n cookies.push(...sessionStore.clean());\n }\n else {\n const salt = options.cookies.sessionToken.name;\n // Encode token\n const newToken = await jwt.encode({ ...jwt, token, salt });\n // Set cookie expiry date\n const cookieExpires = new Date();\n cookieExpires.setTime(cookieExpires.getTime() + sessionMaxAge * 1000);\n const sessionCookies = sessionStore.chunk(newToken, {\n expires: cookieExpires,\n });\n cookies.push(...sessionCookies);\n }\n }\n else {\n // Save Session Token in cookie\n cookies.push({\n name: options.cookies.sessionToken.name,\n value: session.sessionToken,\n options: {\n ...options.cookies.sessionToken.options,\n expires: session.expires,\n },\n });\n }\n await events.signIn?.({ user: loggedInUser, account, isNewUser });\n // Handle first logins on new accounts\n // e.g. option to send users to a new account landing page on initial login\n // Note that the callback URL is preserved, so the journey can still be resumed\n if (isNewUser && pages.newUser) {\n return {\n redirect: `${pages.newUser}${pages.newUser.includes(\"?\") ? \"&\" : \"?\"}${new URLSearchParams({ callbackUrl })}`,\n cookies,\n };\n }\n // Callback URL is already verified at this point, so safe to use if specified\n return { redirect: callbackUrl, cookies };\n }\n else if (provider.type === \"credentials\" && method === \"POST\") {\n const credentials = body ?? {};\n // TODO: Forward the original request as is, instead of reconstructing it\n Object.entries(query ?? {}).forEach(([k, v]) => url.searchParams.set(k, v));\n const userFromAuthorize = await provider.authorize(credentials, \n // prettier-ignore\n new Request(url, { headers, method, body: JSON.stringify(body) }));\n const user = userFromAuthorize;\n if (!user) {\n console.error(\"Read more at https://errors.authjs.dev/#credentialssignin\");\n throw new CredentialsSignin();\n }\n else\n user.id = user.id?.toString() ?? crypto.randomUUID();\n const account = {\n providerAccountId: user.id,\n type: \"credentials\",\n provider: provider.id,\n };\n const redirect = await handleAuthorized({ user, account, credentials }, options);\n if (redirect)\n return { redirect, cookies };\n const defaultToken = {\n name: user.name,\n email: user.email,\n picture: user.image,\n sub: user.id,\n };\n const token = await callbacks.jwt({\n token: defaultToken,\n user,\n account,\n isNewUser: false,\n trigger: \"signIn\",\n });\n // Clear cookies if token is null\n if (token === null) {\n cookies.push(...sessionStore.clean());\n }\n else {\n const salt = options.cookies.sessionToken.name;\n // Encode token\n const newToken = await jwt.encode({ ...jwt, token, salt });\n // Set cookie expiry date\n const cookieExpires = new Date();\n cookieExpires.setTime(cookieExpires.getTime() + sessionMaxAge * 1000);\n const sessionCookies = sessionStore.chunk(newToken, {\n expires: cookieExpires,\n });\n cookies.push(...sessionCookies);\n }\n await events.signIn?.({ user, account });\n return { redirect: callbackUrl, cookies };\n }\n else if (provider.type === \"webauthn\" && method === \"POST\") {\n // Get callback action from request. It should be either \"authenticate\" or \"register\"\n const action = request.body?.action;\n if (typeof action !== \"string\" ||\n (action !== \"authenticate\" && action !== \"register\")) {\n throw new AuthError(\"Invalid action parameter\");\n }\n // Return an error if the adapter is missing or if the provider\n // is not a webauthn provider.\n const localOptions = assertInternalOptionsWebAuthn(options);\n // Verify request to get user, account and authenticator\n let user;\n let account;\n let authenticator;\n switch (action) {\n case \"authenticate\": {\n const verified = await verifyAuthenticate(localOptions, request, cookies);\n user = verified.user;\n account = verified.account;\n break;\n }\n case \"register\": {\n const verified = await verifyRegister(options, request, cookies);\n user = verified.user;\n account = verified.account;\n authenticator = verified.authenticator;\n break;\n }\n }\n // Check if user is allowed to sign in\n await handleAuthorized({ user, account }, options);\n // Sign user in, creating them and their account if needed\n const { user: loggedInUser, isNewUser, session, account: currentAccount, } = await handleLoginOrRegister(sessionStore.value, user, account, options);\n if (!currentAccount) {\n // This is mostly for type checking. It should never actually happen.\n throw new AuthError(\"Error creating or finding account\");\n }\n // Create new authenticator if needed\n if (authenticator && loggedInUser.id) {\n await localOptions.adapter.createAuthenticator({\n ...authenticator,\n userId: loggedInUser.id,\n });\n }\n // Do the session registering dance\n if (useJwtSession) {\n const defaultToken = {\n name: loggedInUser.name,\n email: loggedInUser.email,\n picture: loggedInUser.image,\n sub: loggedInUser.id?.toString(),\n };\n const token = await callbacks.jwt({\n token: defaultToken,\n user: loggedInUser,\n account: currentAccount,\n isNewUser,\n trigger: isNewUser ? \"signUp\" : \"signIn\",\n });\n // Clear cookies if token is null\n if (token === null) {\n cookies.push(...sessionStore.clean());\n }\n else {\n const salt = options.cookies.sessionToken.name;\n // Encode token\n const newToken = await jwt.encode({ ...jwt, token, salt });\n // Set cookie expiry date\n const cookieExpires = new Date();\n cookieExpires.setTime(cookieExpires.getTime() + sessionMaxAge * 1000);\n const sessionCookies = sessionStore.chunk(newToken, {\n expires: cookieExpires,\n });\n cookies.push(...sessionCookies);\n }\n }\n else {\n // Save Session Token in cookie\n cookies.push({\n name: options.cookies.sessionToken.name,\n value: session.sessionToken,\n options: {\n ...options.cookies.sessionToken.options,\n expires: session.expires,\n },\n });\n }\n await events.signIn?.({\n user: loggedInUser,\n account: currentAccount,\n isNewUser,\n });\n // Handle first logins on new accounts\n // e.g. option to send users to a new account landing page on initial login\n // Note that the callback URL is preserved, so the journey can still be resumed\n if (isNewUser && pages.newUser) {\n return {\n redirect: `${pages.newUser}${pages.newUser.includes(\"?\") ? \"&\" : \"?\"}${new URLSearchParams({ callbackUrl })}`,\n cookies,\n };\n }\n // Callback URL is already verified at this point, so safe to use if specified\n return { redirect: callbackUrl, cookies };\n }\n throw new InvalidProvider(`Callback for provider type (${provider.type}) is not supported`);\n }\n catch (e) {\n if (e instanceof AuthError)\n throw e;\n const error = new CallbackRouteError(e, { provider: provider.id });\n logger.debug(\"callback route error details\", { method, query, body });\n throw error;\n }\n}\nasync function handleAuthorized(params, config) {\n let authorized;\n const { signIn, redirect } = config.callbacks;\n try {\n authorized = await signIn(params);\n }\n catch (e) {\n if (e instanceof AuthError)\n throw e;\n throw new AccessDenied(e);\n }\n if (!authorized)\n throw new AccessDenied(\"AccessDenied\");\n if (typeof authorized !== \"string\")\n return;\n return await redirect({ url: authorized, baseUrl: config.url.origin });\n}\n","import { JWTSessionError, SessionTokenError } from \"../../errors.js\";\nimport { fromDate } from \"../utils/date.js\";\n/** Return a session object filtered via `callbacks.session` */\nexport async function session(options, sessionStore, cookies, isUpdate, newSession) {\n const { adapter, jwt, events, callbacks, logger, session: { strategy: sessionStrategy, maxAge: sessionMaxAge }, } = options;\n const response = {\n body: null,\n headers: { \"Content-Type\": \"application/json\" },\n cookies,\n };\n const sessionToken = sessionStore.value;\n if (!sessionToken)\n return response;\n if (sessionStrategy === \"jwt\") {\n try {\n const salt = options.cookies.sessionToken.name;\n const payload = await jwt.decode({ ...jwt, token: sessionToken, salt });\n if (!payload)\n throw new Error(\"Invalid JWT\");\n // @ts-expect-error\n const token = await callbacks.jwt({\n token: payload,\n ...(isUpdate && { trigger: \"update\" }),\n session: newSession,\n });\n const newExpires = fromDate(sessionMaxAge);\n if (token !== null) {\n // By default, only exposes a limited subset of information to the client\n // as needed for presentation purposes (e.g. \"you are logged in as...\").\n const session = {\n user: { name: token.name, email: token.email, image: token.picture },\n expires: newExpires.toISOString(),\n };\n // @ts-expect-error\n const newSession = await callbacks.session({ session, token });\n // Return session payload as response\n response.body = newSession;\n // Refresh JWT expiry by re-signing it, with an updated expiry date\n const newToken = await jwt.encode({ ...jwt, token, salt });\n // Set cookie, to also update expiry date on cookie\n const sessionCookies = sessionStore.chunk(newToken, {\n expires: newExpires,\n });\n response.cookies?.push(...sessionCookies);\n await events.session?.({ session: newSession, token });\n }\n else {\n response.cookies?.push(...sessionStore.clean());\n }\n }\n catch (e) {\n logger.error(new JWTSessionError(e));\n // If the JWT is not verifiable remove the broken session cookie(s).\n response.cookies?.push(...sessionStore.clean());\n }\n return response;\n }\n // Retrieve session from database\n try {\n const { getSessionAndUser, deleteSession, updateSession } = adapter;\n let userAndSession = await getSessionAndUser(sessionToken);\n // If session has expired, clean up the database\n if (userAndSession &&\n userAndSession.session.expires.valueOf() < Date.now()) {\n await deleteSession(sessionToken);\n userAndSession = null;\n }\n if (userAndSession) {\n const { user, session } = userAndSession;\n const sessionUpdateAge = options.session.updateAge;\n // Calculate last updated date to throttle write updates to database\n // Formula: ({expiry date} - sessionMaxAge) + sessionUpdateAge\n // e.g. ({expiry date} - 30 days) + 1 hour\n const sessionIsDueToBeUpdatedDate = session.expires.valueOf() -\n sessionMaxAge * 1000 +\n sessionUpdateAge * 1000;\n const newExpires = fromDate(sessionMaxAge);\n // Trigger update of session expiry date and write to database, only\n // if the session was last updated more than {sessionUpdateAge} ago\n if (sessionIsDueToBeUpdatedDate <= Date.now()) {\n await updateSession({\n sessionToken: sessionToken,\n expires: newExpires,\n });\n }\n // Pass Session through to the session callback\n const sessionPayload = await callbacks.session({\n // TODO: user already passed below,\n // remove from session object in https://github.com/nextauthjs/next-auth/pull/9702\n // @ts-expect-error\n session: { ...session, user },\n user,\n newSession,\n ...(isUpdate ? { trigger: \"update\" } : {}),\n });\n // Return session payload as response\n response.body = sessionPayload;\n // Set cookie again to update expiry\n response.cookies?.push({\n name: options.cookies.sessionToken.name,\n value: sessionToken,\n options: {\n ...options.cookies.sessionToken.options,\n expires: newExpires,\n },\n });\n // @ts-expect-error\n await events.session?.({ session: sessionPayload });\n }\n else if (sessionToken) {\n // If `sessionToken` was found set but it's not valid for a session then\n // remove the sessionToken cookie from browser.\n response.cookies?.push(...sessionStore.clean());\n }\n }\n catch (e) {\n logger.error(new SessionTokenError(e));\n }\n return response;\n}\n","import * as checks from \"../callback/oauth/checks.js\";\nimport * as o from \"oauth4webapi\";\n/**\n * Generates an authorization/request token URL.\n *\n * [OAuth 2](https://www.oauth.com/oauth2-servers/authorization/the-authorization-request/)\n */\nexport async function getAuthorizationUrl(query, options) {\n const { logger, provider } = options;\n let url = provider.authorization?.url;\n let as;\n // Falls back to authjs.dev if the user only passed params\n if (!url || url.host === \"authjs.dev\") {\n // If url is undefined, we assume that issuer is always defined\n // We check this in assert.ts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const issuer = new URL(provider.issuer);\n const discoveryResponse = await o.discoveryRequest(issuer);\n const as = await o.processDiscoveryResponse(issuer, discoveryResponse);\n if (!as.authorization_endpoint) {\n throw new TypeError(\"Authorization server did not provide an authorization endpoint.\");\n }\n url = new URL(as.authorization_endpoint);\n }\n const authParams = url.searchParams;\n let redirect_uri = provider.callbackUrl;\n let data;\n if (!options.isOnRedirectProxy && provider.redirectProxyUrl) {\n redirect_uri = provider.redirectProxyUrl;\n data = { origin: provider.callbackUrl };\n logger.debug(\"using redirect proxy\", { redirect_uri, data });\n }\n const params = Object.assign({\n response_type: \"code\",\n // clientId can technically be undefined, should we check this in assert.ts or rely on the Authorization Server to do it?\n client_id: provider.clientId,\n redirect_uri,\n // @ts-expect-error TODO:\n ...provider.authorization?.params,\n }, Object.fromEntries(provider.authorization?.url.searchParams ?? []), query);\n for (const k in params)\n authParams.set(k, params[k]);\n const cookies = [];\n const state = await checks.state.create(options, data);\n if (state) {\n authParams.set(\"state\", state.value);\n cookies.push(state.cookie);\n }\n if (provider.checks?.includes(\"pkce\")) {\n if (as && !as.code_challenge_methods_supported?.includes(\"S256\")) {\n // We assume S256 PKCE support, if the server does not advertise that,\n // a random `nonce` must be used for CSRF protection.\n if (provider.type === \"oidc\")\n provider.checks = [\"nonce\"];\n }\n else {\n const { value, cookie } = await checks.pkce.create(options);\n authParams.set(\"code_challenge\", value);\n authParams.set(\"code_challenge_method\", \"S256\");\n cookies.push(cookie);\n }\n }\n const nonce = await checks.nonce.create(options);\n if (nonce) {\n authParams.set(\"nonce\", nonce.value);\n cookies.push(nonce.cookie);\n }\n // TODO: This does not work in normalizeOAuth because authorization endpoint can come from discovery\n // Need to make normalizeOAuth async\n if (provider.type === \"oidc\" && !url.searchParams.has(\"scope\")) {\n url.searchParams.set(\"scope\", \"openid profile email\");\n }\n logger.debug(\"authorization url is ready\", { url, cookies, provider });\n return { redirect: url.toString(), cookies };\n}\n","import { createHash, randomString, toRequest } from \"../../utils/web.js\";\nimport { AccessDenied } from \"../../../errors.js\";\n/**\n * Starts an e-mail login flow, by generating a token,\n * and sending it to the user's e-mail (with the help of a DB adapter).\n * At the end, it returns a redirect to the `verify-request` page.\n */\nexport async function sendToken(request, options) {\n const { body } = request;\n const { provider, callbacks, adapter } = options;\n const normalizer = provider.normalizeIdentifier ?? defaultNormalizer;\n const email = normalizer(body?.email);\n const defaultUser = { id: crypto.randomUUID(), email, emailVerified: null };\n const user = (await adapter.getUserByEmail(email)) ?? defaultUser;\n const account = {\n providerAccountId: email,\n userId: user.id,\n type: \"email\",\n provider: provider.id,\n };\n let authorized;\n try {\n authorized = await callbacks.signIn({\n user,\n account,\n email: { verificationRequest: true },\n });\n }\n catch (e) {\n throw new AccessDenied(e);\n }\n if (!authorized)\n throw new AccessDenied(\"AccessDenied\");\n if (typeof authorized === \"string\") {\n return {\n redirect: await callbacks.redirect({\n url: authorized,\n baseUrl: options.url.origin,\n }),\n };\n }\n const { callbackUrl, theme } = options;\n const token = (await provider.generateVerificationToken?.()) ?? randomString(32);\n const ONE_DAY_IN_SECONDS = 86400;\n const expires = new Date(Date.now() + (provider.maxAge ?? ONE_DAY_IN_SECONDS) * 1000);\n const secret = provider.secret ?? options.secret;\n const baseUrl = new URL(options.basePath, options.url.origin);\n const sendRequest = provider.sendVerificationRequest({\n identifier: email,\n token,\n expires,\n url: `${baseUrl}/callback/${provider.id}?${new URLSearchParams({\n callbackUrl,\n token,\n email,\n })}`,\n provider,\n theme,\n request: toRequest(request),\n });\n const createToken = adapter.createVerificationToken?.({\n identifier: email,\n token: await createHash(`${token}${secret}`),\n expires,\n });\n await Promise.all([sendRequest, createToken]);\n return {\n redirect: `${baseUrl}/verify-request?${new URLSearchParams({\n provider: provider.id,\n type: provider.type,\n })}`,\n };\n}\nfunction defaultNormalizer(email) {\n if (!email)\n throw new Error(\"Missing email from request body.\");\n // Get the first two elements only,\n // separated by `@` from user input.\n let [local, domain] = email.toLowerCase().trim().split(\"@\");\n // The part before \"@\" can contain a \",\"\n // but we remove it on the domain part\n domain = domain.split(\",\")[0];\n return `${local}@${domain}`;\n}\n","import { getAuthorizationUrl } from \"./authorization-url.js\";\nimport { sendToken } from \"./send-token.js\";\nexport async function signIn(request, cookies, options) {\n const signInUrl = `${options.url.origin}${options.basePath}/signin`;\n if (!options.provider)\n return { redirect: signInUrl, cookies };\n switch (options.provider.type) {\n case \"oauth\":\n case \"oidc\": {\n const { redirect, cookies: authCookies } = await getAuthorizationUrl(request.query, options);\n if (authCookies)\n cookies.push(...authCookies);\n return { redirect, cookies };\n }\n case \"email\": {\n const response = await sendToken(request, options);\n return { ...response, cookies };\n }\n default:\n return { redirect: signInUrl, cookies };\n }\n}\n","import { SignOutError } from \"../../errors.js\";\n/**\n * Destroys the session.\n * If the session strategy is database,\n * The session is also deleted from the database.\n * In any case, the session cookie is cleared and\n * {@link AuthConfig[\"events\"].signOut} is emitted.\n */\nexport async function signOut(cookies, sessionStore, options) {\n const { jwt, events, callbackUrl: redirect, logger, session } = options;\n const sessionToken = sessionStore.value;\n if (!sessionToken)\n return { redirect, cookies };\n try {\n if (session.strategy === \"jwt\") {\n const salt = options.cookies.sessionToken.name;\n const token = await jwt.decode({ ...jwt, token: sessionToken, salt });\n await events.signOut?.({ token });\n }\n else {\n const session = await options.adapter?.deleteSession(sessionToken);\n await events.signOut?.({ session });\n }\n }\n catch (e) {\n logger.error(new SignOutError(e));\n }\n cookies.push(...sessionStore.clean());\n return { redirect, cookies };\n}\n","/**\n * Returns the currently logged in user, if any.\n */\nexport async function getLoggedInUser(options, sessionStore) {\n const { adapter, jwt, session: { strategy: sessionStrategy }, } = options;\n const sessionToken = sessionStore.value;\n if (!sessionToken)\n return null;\n // Try to decode JWT\n if (sessionStrategy === \"jwt\") {\n const salt = options.cookies.sessionToken.name;\n const payload = await jwt.decode({ ...jwt, token: sessionToken, salt });\n if (payload && payload.sub) {\n return {\n id: payload.sub,\n name: payload.name,\n email: payload.email,\n image: payload.picture,\n };\n }\n }\n else {\n const userAndSession = await adapter?.getSessionAndUser(sessionToken);\n if (userAndSession) {\n return userAndSession.user;\n }\n }\n return null;\n}\n","import { getLoggedInUser } from \"../utils/session.js\";\nimport { assertInternalOptionsWebAuthn, inferWebAuthnOptions, getAuthenticationResponse, getRegistrationResponse, } from \"../utils/webauthn-utils.js\";\n/**\n * Returns authentication or registration options for a WebAuthn flow\n * depending on the parameters provided.\n */\nexport async function webAuthnOptions(request, options, sessionStore, cookies) {\n // Return an error if the adapter is missing or if the provider\n // is not a webauthn provider.\n const narrowOptions = assertInternalOptionsWebAuthn(options);\n const { provider } = narrowOptions;\n // Extract the action from the query parameters\n const { action } = (request.query ?? {});\n // Action must be either \"register\", \"authenticate\", or undefined\n if (action !== \"register\" &&\n action !== \"authenticate\" &&\n typeof action !== \"undefined\") {\n return {\n status: 400,\n body: { error: \"Invalid action\" },\n cookies,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n }\n // Get the user info from the session\n const sessionUser = await getLoggedInUser(options, sessionStore);\n // Extract user info from request\n // If session user exists, we don't need to call getUserInfo\n const getUserInfoResponse = sessionUser\n ? {\n user: sessionUser,\n exists: true,\n }\n : await provider.getUserInfo(options, request);\n const userInfo = getUserInfoResponse?.user;\n // Make a decision on what kind of webauthn options to return\n const decision = inferWebAuthnOptions(action, !!sessionUser, getUserInfoResponse);\n switch (decision) {\n case \"authenticate\":\n return getAuthenticationResponse(narrowOptions, request, userInfo, cookies);\n case \"register\":\n if (typeof userInfo?.email === \"string\") {\n return getRegistrationResponse(narrowOptions, request, userInfo, cookies);\n }\n default:\n return {\n status: 400,\n body: { error: \"Invalid request\" },\n cookies,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n }\n}\n","export { callback } from \"./callback/index.js\";\nexport { session } from \"./session.js\";\nexport { signIn } from \"./signin/index.js\";\nexport { signOut } from \"./signout.js\";\nexport { webAuthnOptions } from \"./webauthn-options.js\";\n","import { UnknownAction } from \"../errors.js\";\nimport { SessionStore } from \"./utils/cookie.js\";\nimport { init } from \"./init.js\";\nimport renderPage from \"./pages/index.js\";\nimport * as actions from \"./actions/index.js\";\nimport { validateCSRF } from \"./actions/callback/oauth/csrf-token.js\";\n/** @internal */\nexport async function AuthInternal(request, authOptions) {\n const { action, providerId, error, method } = request;\n const csrfDisabled = authOptions.skipCSRFCheck === skipCSRFCheck;\n const { options, cookies } = await init({\n authOptions,\n action,\n providerId,\n url: request.url,\n callbackUrl: request.body?.callbackUrl ?? request.query?.callbackUrl,\n csrfToken: request.body?.csrfToken,\n cookies: request.cookies,\n isPost: method === \"POST\",\n csrfDisabled,\n });\n const sessionStore = new SessionStore(options.cookies.sessionToken, request.cookies, options.logger);\n if (method === \"GET\") {\n const render = renderPage({ ...options, query: request.query, cookies });\n switch (action) {\n case \"callback\":\n return await actions.callback(request, options, sessionStore, cookies);\n case \"csrf\":\n return render.csrf(csrfDisabled, options, cookies);\n case \"error\":\n return render.error(error);\n case \"providers\":\n return render.providers(options.providers);\n case \"session\":\n return await actions.session(options, sessionStore, cookies);\n case \"signin\":\n return render.signin(providerId, error);\n case \"signout\":\n return render.signout();\n case \"verify-request\":\n return render.verifyRequest();\n case \"webauthn-options\":\n return await actions.webAuthnOptions(request, options, sessionStore, cookies);\n default:\n }\n }\n else {\n const { csrfTokenVerified } = options;\n switch (action) {\n case \"callback\":\n if (options.provider.type === \"credentials\")\n // Verified CSRF Token required for credentials providers only\n validateCSRF(action, csrfTokenVerified);\n return await actions.callback(request, options, sessionStore, cookies);\n case \"session\":\n validateCSRF(action, csrfTokenVerified);\n return await actions.session(options, sessionStore, cookies, true, request.body?.data);\n case \"signin\":\n validateCSRF(action, csrfTokenVerified);\n return await actions.signIn(request, cookies, options);\n case \"signout\":\n validateCSRF(action, csrfTokenVerified);\n return await actions.signOut(cookies, sessionStore, options);\n default:\n }\n }\n throw new UnknownAction(`Cannot handle action: ${action}`);\n}\n/**\n * :::danger\n * This option is intended for framework authors.\n * :::\n *\n * Auth.js comes with built-in CSRF protection, but\n * if you are implementing a framework that is already protected against CSRF attacks, you can skip this check by\n * passing this value to {@link AuthConfig.skipCSRFCheck}.\n */\nexport const skipCSRFCheck = Symbol(\"skip-csrf-check\");\n/**\n * :::danger\n * This option is intended for framework authors.\n * :::\n *\n * Auth.js returns a web standard {@link Response} by default, but\n * if you are implementing a framework you might want to get access to the raw internal response\n * by passing this value to {@link AuthConfig.raw}.\n */\nexport const raw = Symbol(\"return-type-raw\");\n","import { logger } from \"./logger.js\";\n/** Set default env variables on the config object */\nexport function setEnvDefaults(envObject, config) {\n try {\n const url = envObject.AUTH_URL;\n if (url && !config.basePath)\n config.basePath = new URL(url).pathname;\n }\n catch {\n }\n finally {\n config.basePath ?? (config.basePath = `/auth`);\n }\n if (!config.secret?.length) {\n config.secret = [];\n const secret = envObject.AUTH_SECRET;\n if (secret)\n config.secret.push(secret);\n for (const i of [1, 2, 3]) {\n const secret = envObject[`AUTH_SECRET_${i}`];\n if (secret)\n config.secret.unshift(secret);\n }\n }\n config.redirectProxyUrl ?? (config.redirectProxyUrl = envObject.AUTH_REDIRECT_PROXY_URL);\n config.trustHost ?? (config.trustHost = !!(envObject.AUTH_URL ??\n envObject.AUTH_TRUST_HOST ??\n envObject.VERCEL ??\n envObject.CF_PAGES ??\n envObject.NODE_ENV !== \"production\"));\n config.providers = config.providers.map((p) => {\n const finalProvider = typeof p === \"function\" ? p({}) : p;\n const ID = finalProvider.id.toUpperCase().replace(/-/g, \"_\");\n if (finalProvider.type === \"oauth\" || finalProvider.type === \"oidc\") {\n finalProvider.clientId ?? (finalProvider.clientId = envObject[`AUTH_${ID}_ID`]);\n finalProvider.clientSecret ?? (finalProvider.clientSecret = envObject[`AUTH_${ID}_SECRET`]);\n if (finalProvider.type === \"oidc\") {\n finalProvider.issuer ?? (finalProvider.issuer = envObject[`AUTH_${ID}_ISSUER`]);\n }\n }\n else if (finalProvider.type === \"email\") {\n finalProvider.apiKey ?? (finalProvider.apiKey = envObject[`AUTH_${ID}_KEY`]);\n }\n return finalProvider;\n });\n}\nexport function createActionURL(action, protocol, headers, envObject, basePath) {\n let envUrl = envObject.AUTH_URL ?? envObject.NEXTAUTH_URL;\n let url;\n if (envUrl) {\n url = new URL(envUrl);\n if (basePath && basePath !== \"/\" && url.pathname !== \"/\") {\n logger.warn(url.pathname === basePath\n ? \"env-url-basepath-redundant\"\n : \"env-url-basepath-mismatch\");\n url.pathname = \"/\";\n }\n }\n else {\n const detectedHost = headers.get(\"x-forwarded-host\") ?? headers.get(\"host\");\n const detectedProtocol = headers.get(\"x-forwarded-proto\") ?? protocol ?? \"https\";\n const _protocol = detectedProtocol.endsWith(\":\")\n ? detectedProtocol\n : detectedProtocol + \":\";\n url = new URL(`${_protocol}//${detectedHost}`);\n }\n // remove trailing slash\n const sanitizedUrl = url.toString().replace(/\\/$/, \"\");\n if (basePath) {\n // remove leading and trailing slash\n const sanitizedBasePath = basePath?.replace(/(^\\/|\\/$)/g, \"\") ?? \"\";\n return new URL(`${sanitizedUrl}/${sanitizedBasePath}/${action}`);\n }\n return new URL(`${sanitizedUrl}/${action}`);\n}\n","/**\n *\n * :::warning Experimental\n * `@auth/core` is under active development.\n * :::\n *\n * This is the main entry point to the Auth.js library.\n *\n * Based on the {@link https://developer.mozilla.org/en-US/docs/Web/API/Request Request}\n * and {@link https://developer.mozilla.org/en-US/docs/Web/API/Response Response} Web standard APIs.\n * Primarily used to implement [framework](https://authjs.dev/getting-started/integrations)-specific packages,\n * but it can also be used directly.\n *\n * ## Installation\n *\n * ```bash npm2yarn\n * npm install @auth/core\n * ```\n *\n * ## Usage\n *\n * ```ts\n * import { Auth } from \"@auth/core\"\n *\n * const request = new Request(\"https://example.com\")\n * const response = await Auth(request, {...})\n *\n * console.log(response instanceof Response) // true\n * ```\n *\n * ## Resources\n *\n * - [Getting started](https://authjs.dev/getting-started)\n * - [Guides](https://authjs.dev/guides)\n *\n * @module @auth/core\n */\nimport { assertConfig } from \"./lib/utils/assert.js\";\nimport { AuthError, CredentialsSignin, ErrorPageLoop, isClientError, } from \"./errors.js\";\nimport { AuthInternal, raw, skipCSRFCheck } from \"./lib/index.js\";\nimport { setEnvDefaults, createActionURL } from \"./lib/utils/env.js\";\nimport renderPage from \"./lib/pages/index.js\";\nimport { logger, setLogger } from \"./lib/utils/logger.js\";\nimport { toInternalRequest, toResponse } from \"./lib/utils/web.js\";\nimport { isAuthAction } from \"./lib/utils/actions.js\";\nexport { skipCSRFCheck, raw, setEnvDefaults, createActionURL, isAuthAction };\n/**\n * Core functionality provided by Auth.js.\n *\n * Receives a standard {@link Request} and returns a {@link Response}.\n *\n * @example\n * ```ts\n * import Auth from \"@auth/core\"\n *\n * const request = new Request(\"https://example.com\")\n * const response = await AuthHandler(request, {\n * providers: [Google],\n * secret: \"...\",\n * trustHost: true,\n * })\n *```\n * @see [Documentation](https://authjs.dev)\n */\nexport async function Auth(request, config) {\n setLogger(config.logger, config.debug);\n const internalRequest = await toInternalRequest(request, config);\n // There was an error parsing the request\n if (!internalRequest)\n return Response.json(`Bad request.`, { status: 400 });\n const warningsOrError = assertConfig(internalRequest, config);\n if (Array.isArray(warningsOrError)) {\n warningsOrError.forEach(logger.warn);\n }\n else if (warningsOrError) {\n // If there's an error in the user config, bail out early\n logger.error(warningsOrError);\n const htmlPages = new Set([\n \"signin\",\n \"signout\",\n \"error\",\n \"verify-request\",\n ]);\n if (!htmlPages.has(internalRequest.action) ||\n internalRequest.method !== \"GET\") {\n const message = \"There was a problem with the server configuration. Check the server logs for more information.\";\n return Response.json({ message }, { status: 500 });\n }\n const { pages, theme } = config;\n // If this is true, the config required auth on the error page\n // which could cause a redirect loop\n const authOnErrorPage = pages?.error &&\n internalRequest.url.searchParams\n .get(\"callbackUrl\")\n ?.startsWith(pages.error);\n // Either there was no error page configured or the configured one contains infinite redirects\n if (!pages?.error || authOnErrorPage) {\n if (authOnErrorPage) {\n logger.error(new ErrorPageLoop(`The error page ${pages?.error} should not require authentication`));\n }\n const page = renderPage({ theme }).error(\"Configuration\");\n return toResponse(page);\n }\n return Response.redirect(`${pages.error}?error=Configuration`);\n }\n const isRedirect = request.headers?.has(\"X-Auth-Return-Redirect\");\n const isRaw = config.raw === raw;\n try {\n const internalResponse = await AuthInternal(internalRequest, config);\n if (isRaw)\n return internalResponse;\n const response = toResponse(internalResponse);\n const url = response.headers.get(\"Location\");\n if (!isRedirect || !url)\n return response;\n return Response.json({ url }, { headers: response.headers });\n }\n catch (e) {\n const error = e;\n logger.error(error);\n const isAuthError = error instanceof AuthError;\n if (isAuthError && isRaw && !isRedirect)\n throw error;\n // If the CSRF check failed for POST/session, return a 400 status code.\n // We should not redirect to a page as this is an API route\n if (request.method === \"POST\" && internalRequest.action === \"session\")\n return Response.json(null, { status: 400 });\n const isClientSafeErrorType = isClientError(error);\n const type = isClientSafeErrorType ? error.type : \"Configuration\";\n const params = new URLSearchParams({ error: type });\n if (error instanceof CredentialsSignin)\n params.set(\"code\", error.code);\n const pageKind = (isAuthError && error.kind) || \"error\";\n const pagePath = config.pages?.[pageKind] ?? `${config.basePath}/${pageKind.toLowerCase()}`;\n const url = `${internalRequest.url.origin}${pagePath}?${params}`;\n if (isRedirect)\n return Response.json({ url });\n return Response.redirect(url);\n }\n}\n","export * from \"../server/web/exports/index\";\n\n//# sourceMappingURL=server.js.map","import { NextRequest } from \"next/server.js\";\nimport { setEnvDefaults as coreSetEnvDefaults } from \"@auth/core\";\n/** If `NEXTAUTH_URL` or `AUTH_URL` is defined, override the request's URL. */\nexport function reqWithEnvURL(req) {\n const url = process.env.AUTH_URL ?? process.env.NEXTAUTH_URL;\n if (!url)\n return req;\n const { origin: envOrigin } = new URL(url);\n const { href, origin } = req.nextUrl;\n return new NextRequest(href.replace(origin, envOrigin), req);\n}\n/**\n * For backwards compatibility, `next-auth` checks for `NEXTAUTH_URL`\n * and the `basePath` by default is `/api/auth` instead of `/auth`\n * (which is the default for all other Auth.js integrations).\n *\n * For the same reason, `NEXTAUTH_SECRET` is also checked.\n */\nexport function setEnvDefaults(config) {\n try {\n config.secret ?? (config.secret = process.env.AUTH_SECRET ?? process.env.NEXTAUTH_SECRET);\n const url = process.env.AUTH_URL ?? process.env.NEXTAUTH_URL;\n if (!url)\n return;\n const { pathname } = new URL(url);\n if (pathname === \"/\")\n return;\n config.basePath || (config.basePath = pathname);\n }\n catch {\n }\n finally {\n config.basePath || (config.basePath = \"/api/auth\");\n coreSetEnvDefaults(process.env, config);\n }\n}\n","export * from \"../client/components/headers\";\n\n//# sourceMappingURL=headers.js.map","import { Auth, createActionURL } from \"@auth/core\";\nimport { headers } from \"next/headers.js\";\nimport { NextResponse } from \"next/server.js\";\nimport { reqWithEnvURL } from \"./env.js\";\nasync function getSession(headers, config) {\n const url = createActionURL(\"session\", \n // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default\n headers.get(\"x-forwarded-proto\"), headers, process.env, config.basePath);\n const request = new Request(url, {\n headers: { cookie: headers.get(\"cookie\") ?? \"\" },\n });\n return Auth(request, {\n ...config,\n callbacks: {\n ...config.callbacks,\n // Since we are server-side, we don't need to filter out the session data\n // See https://authjs.dev/getting-started/migrating-to-v5#authenticating-server-side\n // TODO: Taint the session data to prevent accidental leakage to the client\n // https://react.dev/reference/react/experimental_taintObjectReference\n async session(...args) {\n const session = \n // If the user defined a custom session callback, use that instead\n (await config.callbacks?.session?.(...args)) ?? {\n ...args[0].session,\n expires: args[0].session.expires?.toISOString?.() ??\n args[0].session.expires,\n };\n const user = args[0].user ?? args[0].token;\n return { user, ...session };\n },\n },\n });\n}\nfunction isReqWrapper(arg) {\n return typeof arg === \"function\";\n}\nexport function initAuth(config, onLazyLoad // To set the default env vars\n) {\n if (typeof config === \"function\") {\n return (...args) => {\n if (!args.length) {\n // React Server Components\n const _headers = headers();\n const _config = config(undefined); // Review: Should we pass headers() here instead?\n onLazyLoad?.(_config);\n return getSession(_headers, _config).then((r) => r.json());\n }\n if (args[0] instanceof Request) {\n // middleware.ts inline\n // export { auth as default } from \"auth\"\n const req = args[0];\n const ev = args[1];\n const _config = config(req);\n onLazyLoad?.(_config);\n // args[0] is supposed to be NextRequest but the instanceof check is failing.\n return handleAuth([req, ev], _config);\n }\n if (isReqWrapper(args[0])) {\n // middleware.ts wrapper/route.ts\n // import { auth } from \"auth\"\n // export default auth((req) => { console.log(req.auth) }})\n const userMiddlewareOrRoute = args[0];\n return async (...args) => {\n return handleAuth(args, config(args[0]), userMiddlewareOrRoute);\n };\n }\n // API Routes, getServerSideProps\n const request = \"req\" in args[0] ? args[0].req : args[0];\n const response = \"res\" in args[0] ? args[0].res : args[1];\n // @ts-expect-error -- request is NextRequest\n const _config = config(request);\n onLazyLoad?.(_config);\n // @ts-expect-error -- request is NextRequest\n return getSession(new Headers(request.headers), _config).then(async (authResponse) => {\n const auth = await authResponse.json();\n for (const cookie of authResponse.headers.getSetCookie())\n if (\"headers\" in response)\n response.headers.append(\"set-cookie\", cookie);\n else\n response.appendHeader(\"set-cookie\", cookie);\n return auth;\n });\n };\n }\n return (...args) => {\n if (!args.length) {\n // React Server Components\n return getSession(headers(), config).then((r) => r.json());\n }\n if (args[0] instanceof Request) {\n // middleware.ts inline\n // export { auth as default } from \"auth\"\n const req = args[0];\n const ev = args[1];\n return handleAuth([req, ev], config);\n }\n if (isReqWrapper(args[0])) {\n // middleware.ts wrapper/route.ts\n // import { auth } from \"auth\"\n // export default auth((req) => { console.log(req.auth) }})\n const userMiddlewareOrRoute = args[0];\n return async (...args) => {\n return handleAuth(args, config, userMiddlewareOrRoute).then((res) => {\n return res;\n });\n };\n }\n // API Routes, getServerSideProps\n const request = \"req\" in args[0] ? args[0].req : args[0];\n const response = \"res\" in args[0] ? args[0].res : args[1];\n return getSession(\n // @ts-expect-error\n new Headers(request.headers), config).then(async (authResponse) => {\n const auth = await authResponse.json();\n for (const cookie of authResponse.headers.getSetCookie())\n if (\"headers\" in response)\n response.headers.append(\"set-cookie\", cookie);\n else\n response.appendHeader(\"set-cookie\", cookie);\n return auth;\n });\n };\n}\nasync function handleAuth(args, config, userMiddlewareOrRoute) {\n const request = reqWithEnvURL(args[0]);\n const sessionResponse = await getSession(request.headers, config);\n const auth = await sessionResponse.json();\n let authorized = true;\n if (config.callbacks?.authorized) {\n authorized = await config.callbacks.authorized({ request, auth });\n }\n let response = NextResponse.next?.();\n if (authorized instanceof Response) {\n // User returned a custom response, like redirecting to a page or 401, respect it\n response = authorized;\n const redirect = authorized.headers.get(\"Location\");\n const { pathname } = request.nextUrl;\n // If the user is redirecting to the same NextAuth.js action path as the current request,\n // don't allow the redirect to prevent an infinite loop\n if (redirect &&\n isSameAuthAction(pathname, new URL(redirect).pathname, config)) {\n authorized = true;\n }\n }\n else if (userMiddlewareOrRoute) {\n // Execute user's middleware/handler with the augmented request\n const augmentedReq = request;\n augmentedReq.auth = auth;\n response =\n // @ts-expect-error\n (await userMiddlewareOrRoute(augmentedReq, args[1])) ??\n NextResponse.next();\n }\n else if (!authorized) {\n const signInPage = config.pages?.signIn ?? `${config.basePath}/signin`;\n if (request.nextUrl.pathname !== signInPage) {\n // Redirect to signin page by default if not authorized\n const signInUrl = request.nextUrl.clone();\n signInUrl.pathname = signInPage;\n signInUrl.searchParams.set(\"callbackUrl\", request.nextUrl.href);\n response = NextResponse.redirect(signInUrl);\n }\n }\n const finalResponse = new Response(response?.body, response);\n // Preserve cookies from the session response\n for (const cookie of sessionResponse.headers.getSetCookie())\n finalResponse.headers.append(\"set-cookie\", cookie);\n return finalResponse;\n}\nfunction isSameAuthAction(requestPath, redirectPath, config) {\n const action = redirectPath.replace(`${requestPath}/`, \"\");\n const pages = Object.values(config.pages ?? {});\n return ((actions.has(action) || pages.includes(redirectPath)) &&\n redirectPath === requestPath);\n}\nconst actions = new Set([\n \"providers\",\n \"session\",\n \"csrf\",\n \"signin\",\n \"signout\",\n \"callback\",\n \"verify-request\",\n \"error\",\n]);\n","import { Auth, raw, skipCSRFCheck, createActionURL } from \"@auth/core\";\nimport { headers as nextHeaders, cookies } from \"next/headers.js\";\nimport { redirect } from \"next/navigation.js\";\nexport async function signIn(provider, options = {}, authorizationParams, config) {\n const headers = new Headers(nextHeaders());\n const { redirect: shouldRedirect = true, redirectTo, ...rest } = options instanceof FormData ? Object.fromEntries(options) : options;\n const callbackUrl = redirectTo?.toString() ?? headers.get(\"Referer\") ?? \"/\";\n const signInURL = createActionURL(\"signin\", \n // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default\n headers.get(\"x-forwarded-proto\"), headers, process.env, config.basePath);\n if (!provider) {\n signInURL.searchParams.append(\"callbackUrl\", callbackUrl);\n if (shouldRedirect)\n redirect(signInURL.toString());\n return signInURL.toString();\n }\n let url = `${signInURL}/${provider}?${new URLSearchParams(authorizationParams)}`;\n let foundProvider = {};\n for (const providerConfig of config.providers) {\n const { options, ...defaults } = typeof providerConfig === \"function\" ? providerConfig() : providerConfig;\n const id = options?.id ?? defaults.id;\n if (id === provider) {\n foundProvider = {\n id,\n type: options?.type ?? defaults.type,\n };\n break;\n }\n }\n if (!foundProvider.id) {\n const url = `${signInURL}?${new URLSearchParams({ callbackUrl })}`;\n if (shouldRedirect)\n redirect(url);\n return url;\n }\n if (foundProvider.type === \"credentials\") {\n url = url.replace(\"signin\", \"callback\");\n }\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n const body = new URLSearchParams({ ...rest, callbackUrl });\n const req = new Request(url, { method: \"POST\", headers, body });\n const res = await Auth(req, { ...config, raw, skipCSRFCheck });\n for (const c of res?.cookies ?? [])\n cookies().set(c.name, c.value, c.options);\n const responseUrl = res instanceof Response ? res.headers.get(\"Location\") : res.redirect;\n // NOTE: if for some unexpected reason the responseUrl is not set,\n // we redirect to the original url\n const redirectUrl = responseUrl ?? url;\n if (shouldRedirect)\n return redirect(redirectUrl);\n return redirectUrl;\n}\nexport async function signOut(options, config) {\n const headers = new Headers(nextHeaders());\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n const url = createActionURL(\"signout\", \n // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default\n headers.get(\"x-forwarded-proto\"), headers, process.env, config.basePath);\n const callbackUrl = options?.redirectTo ?? headers.get(\"Referer\") ?? \"/\";\n const body = new URLSearchParams({ callbackUrl });\n const req = new Request(url, { method: \"POST\", headers, body });\n const res = await Auth(req, { ...config, raw, skipCSRFCheck });\n for (const c of res?.cookies ?? [])\n cookies().set(c.name, c.value, c.options);\n if (options?.redirect ?? true)\n return redirect(res.redirect);\n return res;\n}\nexport async function update(data, config) {\n const headers = new Headers(nextHeaders());\n headers.set(\"Content-Type\", \"application/json\");\n const url = createActionURL(\"session\", \n // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default\n headers.get(\"x-forwarded-proto\"), headers, process.env, config.basePath);\n const body = JSON.stringify({ data });\n const req = new Request(url, { method: \"POST\", headers, body });\n const res = await Auth(req, { ...config, raw, skipCSRFCheck });\n for (const c of res?.cookies ?? [])\n cookies().set(c.name, c.value, c.options);\n return res.body;\n}\n","/**\n * _If you are looking to migrate from v4, visit the [Upgrade Guide (v5)](https://authjs.dev/getting-started/migrating-to-v5)._\n *\n * ## Installation\n *\n * ```bash npm2yarn\n * npm install next-auth@beta\n * ```\n *\n * ## Environment variable inference\n *\n * `NEXTAUTH_URL` and `NEXTAUTH_SECRET` have been inferred since v4.\n *\n * Since NextAuth.js v5 can also automatically infer environment variables that are prefixed with `AUTH_`.\n *\n * For example `AUTH_GITHUB_ID` and `AUTH_GITHUB_SECRET` will be used as the `clientId` and `clientSecret` options for the GitHub provider.\n *\n * :::tip\n * The environment variable name inferring has the following format for OAuth providers: `AUTH_{PROVIDER}_{ID|SECRET}`.\n *\n * `PROVIDER` is the uppercase snake case version of the provider's id, followed by either `ID` or `SECRET` respectively.\n * :::\n *\n * `AUTH_SECRET` and `AUTH_URL` are also aliased for `NEXTAUTH_SECRET` and `NEXTAUTH_URL` for consistency.\n *\n * To add social login to your app, the configuration becomes:\n *\n * ```ts title=\"auth.ts\"\n * import NextAuth from \"next-auth\"\n * import GitHub from \"next-auth/providers/github\"\n * export const { handlers, auth } = NextAuth({ providers: [ GitHub ] })\n * ```\n *\n * And the `.env.local` file:\n *\n * ```sh title=\".env.local\"\n * AUTH_GITHUB_ID=...\n * AUTH_GITHUB_SECRET=...\n * AUTH_SECRET=...\n * ```\n *\n * :::tip\n * In production, `AUTH_SECRET` is a required environment variable - if not set, NextAuth.js will throw an error. See [MissingSecretError](https://authjs.dev/reference/core/errors#missingsecret) for more details.\n * :::\n *\n * If you need to override the default values for a provider, you can still call it as a function `GitHub({...})` as before.\n *\n * ## Lazy initialization\n * You can also initialize NextAuth.js lazily (previously known as advanced intialization), which allows you to access the request context in the configuration in some cases, like Route Handlers, Middleware, API Routes or `getServerSideProps`.\n * The above example becomes:\n *\n * ```ts title=\"auth.ts\"\n * import NextAuth from \"next-auth\"\n * import GitHub from \"next-auth/providers/github\"\n * export const { handlers, auth } = NextAuth(req => {\n * if (req) {\n * console.log(req) // do something with the request\n * }\n * return { providers: [ GitHub ] }\n * })\n * ```\n *\n * :::tip\n * This is useful if you want to customize the configuration based on the request, for example, to add a different provider in staging/dev environments.\n * :::\n *\n * @module next-auth\n */\nimport { Auth } from \"@auth/core\";\nimport { reqWithEnvURL, setEnvDefaults } from \"./lib/env.js\";\nimport { initAuth } from \"./lib/index.js\";\nimport { signIn, signOut, update } from \"./lib/actions.js\";\nexport { AuthError, CredentialsSignin } from \"@auth/core/errors\";\n/**\n * Initialize NextAuth.js.\n *\n * @example\n * ```ts title=\"auth.ts\"\n * import NextAuth from \"next-auth\"\n * import GitHub from \"@auth/core/providers/github\"\n *\n * export const { handlers, auth } = NextAuth({ providers: [GitHub] })\n * ```\n *\n * Lazy initialization:\n *\n * @example\n * ```ts title=\"auth.ts\"\n * import NextAuth from \"next-auth\"\n * import GitHub from \"@auth/core/providers/github\"\n *\n * export const { handlers, auth } = NextAuth((req) => {\n * console.log(req) // do something with the request\n * return {\n * providers: [GitHub],\n * },\n * })\n * ```\n */\nexport default function NextAuth(config) {\n if (typeof config === \"function\") {\n const httpHandler = (req) => {\n const _config = config(req);\n setEnvDefaults(_config);\n return Auth(reqWithEnvURL(req), _config);\n };\n return {\n handlers: { GET: httpHandler, POST: httpHandler },\n // @ts-expect-error\n auth: initAuth(config, (c) => setEnvDefaults(c)),\n signIn: (provider, options, authorizationParams) => {\n const _config = config(undefined);\n setEnvDefaults(_config);\n return signIn(provider, options, authorizationParams, _config);\n },\n signOut: (options) => {\n const _config = config(undefined);\n setEnvDefaults(_config);\n return signOut(options, _config);\n },\n unstable_update: (data) => {\n const _config = config(undefined);\n setEnvDefaults(_config);\n return update(data, _config);\n },\n };\n }\n setEnvDefaults(config);\n const httpHandler = (req) => Auth(reqWithEnvURL(req), config);\n return {\n handlers: { GET: httpHandler, POST: httpHandler },\n // @ts-expect-error\n auth: initAuth(config),\n signIn: (provider, options, authorizationParams) => {\n return signIn(provider, options, authorizationParams, config);\n },\n signOut: (options) => {\n return signOut(options, config);\n },\n unstable_update: (data) => {\n return update(data, config);\n },\n };\n}\n","/**\n * The Credentials provider allows you to handle signing in with arbitrary credentials,\n * such as a username and password, domain, or two factor authentication or hardware device (e.g. YubiKey U2F / FIDO).\n *\n * It is intended to support use cases where you have an existing system you need to authenticate users against.\n *\n * It comes with the constraint that users authenticated in this manner are not persisted in the database,\n * and consequently that the Credentials provider can only be used if JSON Web Tokens are enabled for sessions.\n *\n * :::caution\n * The functionality provided for credentials-based authentication is intentionally limited to discourage the use of passwords due to the inherent security risks of the username-password model.\n *\n * OAuth providers spend significant amounts of money, time, and engineering effort to build:\n *\n * - abuse detection (bot-protection, rate-limiting)\n * - password management (password reset, credential stuffing, rotation)\n * - data security (encryption/salting, strength validation)\n *\n * and much more for authentication solutions. It is likely that your application would benefit from leveraging these battle-tested solutions rather than try to rebuild them from scratch.\n *\n * If you'd still like to build password-based authentication for your application despite these risks, Auth.js gives you full control to do so.\n *\n * :::\n *\n * See the [callbacks documentation](/reference/core#authconfig#callbacks) for more information on how to interact with the token. For example, you can add additional information to the token by returning an object from the `jwt()` callback:\n *\n * ```js\n * callbacks: {\n * async jwt({ token, user, account, profile, isNewUser }) {\n * if (user) {\n * token.id = user.id\n * }\n * return token\n * }\n * }\n * ```\n *\n * @example\n * ```js\n * import Auth from \"@auth/core\"\n * import Credentials from \"@auth/core/providers/credentials\"\n *\n * const request = new Request(\"https://example.com\")\n * const response = await AuthHandler(request, {\n * providers: [\n * Credentials({\n * credentials: {\n * username: { label: \"Username\" },\n * password: { label: \"Password\", type: \"password\" }\n * },\n * async authorize({ request }) {\n * const response = await fetch(request)\n * if(!response.ok) return null\n * return await response.json() ?? null\n * }\n * })\n * ],\n * secret: \"...\",\n * trustHost: true,\n * })\n * ```\n * @see [Username/Password Example](https://authjs.dev/getting-started/authentication/credentials)\n */\nexport default function Credentials(config) {\n return {\n id: \"credentials\",\n name: \"Credentials\",\n type: \"credentials\",\n credentials: {},\n authorize: () => null,\n // @ts-expect-error\n options: config,\n };\n}\n","/**\n * Add Facebook login to your page.\n *\n * ### Setup\n *\n * #### Callback URL\n * ```\n * https://example.com/api/auth/callback/facebook\n * ```\n *\n * #### Configuration\n *```js\n * import Auth from \"@auth/core\"\n * import Facebook from \"@auth/core/providers/facebook\"\n *\n * const request = new Request(origin)\n * const response = await Auth(request, {\n * providers: [Facebook({ clientId: FACEBOOK_CLIENT_ID, clientSecret: FACEBOOK_CLIENT_SECRET })],\n * })\n * ```\n *\n * ### Resources\n *\n * - [Facebook OAuth documentation](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/)\n *\n * ### Notes\n *\n * :::tip\n * Production applications cannot use localhost URLs to sign in with Facebook. You need to use a dedicated development application in Facebook to use localhost callback URLs.\n * :::\n *\n * :::tip\n * Email address may not be returned for accounts created on mobile.\n * :::\n *\n * By default, Auth.js assumes that the Facebook provider is\n * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.\n *\n * :::tip\n *\n * The Facebook provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/facebook.ts).\n * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).\n *\n * :::\n *\n * :::info **Disclaimer**\n *\n * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).\n *\n * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from\n * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,\n * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).\n *\n * :::\n */\nexport default function Facebook(options) {\n return {\n id: \"facebook\",\n name: \"Facebook\",\n type: \"oauth\",\n authorization: {\n url: \"https://www.facebook.com/v19.0/dialog/oauth\",\n params: {\n scope: \"email\",\n },\n },\n token: \"https://graph.facebook.com/oauth/access_token\",\n userinfo: {\n // https://developers.facebook.com/docs/graph-api/reference/user/#fields\n url: \"https://graph.facebook.com/me?fields=id,name,email,picture\",\n async request({ tokens, provider }) {\n return await fetch(provider.userinfo?.url, {\n headers: { Authorization: `Bearer ${tokens.access_token}` },\n }).then(async (res) => await res.json());\n },\n },\n profile(profile) {\n return {\n id: profile.id,\n name: profile.name,\n email: profile.email,\n image: profile.picture.data.url,\n };\n },\n style: { bg: \"#006aff\", text: \"#fff\" },\n options,\n };\n}\n","/**\n * Add Google login to your page.\n *\n * ### Setup\n *\n * #### Callback URL\n * ```\n * https://example.com/api/auth/callback/google\n * ```\n *\n * #### Configuration\n *```js\n * import Auth from \"@auth/core\"\n * import Google from \"@auth/core/providers/google\"\n *\n * const request = new Request(origin)\n * const response = await Auth(request, {\n * providers: [Google({ clientId: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET })],\n * })\n * ```\n *\n * ### Resources\n *\n * - [Google OAuth documentation](https://developers.google.com/identity/protocols/oauth2)\n * - [Google OAuth Configuration](https://console.developers.google.com/apis/credentials)\n *\n * ### Notes\n *\n * By default, Auth.js assumes that the Google provider is\n * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.\n *\n *\n * The \"Authorized redirect URIs\" used when creating the credentials must include your full domain and end in the callback path. For example;\n *\n * - For production: `https://{YOUR_DOMAIN}/api/auth/callback/google`\n * - For development: `http://localhost:3000/api/auth/callback/google`\n *\n * :::warning\n * Google only provides Refresh Token to an application the first time a user signs in.\n *\n * To force Google to re-issue a Refresh Token, the user needs to remove the application from their account and sign in again:\n * https://myaccount.google.com/permissions\n *\n * Alternatively, you can also pass options in the `params` object of `authorization` which will force the Refresh Token to always be provided on sign in, however this will ask all users to confirm if they wish to grant your application access every time they sign in.\n *\n * If you need access to the RefreshToken or AccessToken for a Google account and you are not using a database to persist user accounts, this may be something you need to do.\n *\n * ```js title=\"pages/api/auth/[...nextauth].js\"\n * const options = {\n * providers: [\n * GoogleProvider({\n * clientId: process.env.GOOGLE_ID,\n * clientSecret: process.env.GOOGLE_SECRET,\n * authorization: {\n * params: {\n * prompt: \"consent\",\n * access_type: \"offline\",\n * response_type: \"code\"\n * }\n * }\n * })\n * ],\n * }\n * ```\n *\n * :::\n *\n * :::tip\n * Google also returns a `email_verified` boolean property in the OAuth profile.\n *\n * You can use this property to restrict access to people with verified accounts at a particular domain.\n *\n * ```js\n * const options = {\n * ...\n * callbacks: {\n * async signIn({ account, profile }) {\n * if (account.provider === \"google\") {\n * return profile.email_verified && profile.email.endsWith(\"@example.com\")\n * }\n * return true // Do different verification for other providers that don't have `email_verified`\n * },\n * }\n * ...\n * }\n * ```\n *\n * :::\n * :::tip\n *\n * The Google provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/google.ts).\n * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).\n *\n * :::\n *\n * :::info **Disclaimer**\n *\n * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).\n *\n * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from\n * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,\n * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).\n *\n * :::\n */\nexport default function Google(options) {\n return {\n id: \"google\",\n name: \"Google\",\n type: \"oidc\",\n issuer: \"https://accounts.google.com\",\n style: {\n brandColor: \"#1a73e8\",\n },\n options,\n };\n}\n","// src/index.ts\nimport * as React2 from \"react\";\nimport { useSyncExternalStoreWithSelector as useSyncExternalStoreWithSelector2 } from \"use-sync-external-store/with-selector.js\";\n\n// src/utils/react.ts\nimport * as ReactOriginal from \"react\";\nvar React = (\n // prettier-ignore\n // @ts-ignore\n \"default\" in ReactOriginal ? ReactOriginal[\"default\"] : ReactOriginal\n);\n\n// src/components/Context.ts\nvar ContextKey = Symbol.for(`react-redux-context`);\nvar gT = typeof globalThis !== \"undefined\" ? globalThis : (\n /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n {}\n);\nfunction getContext() {\n if (!React.createContext)\n return {};\n const contextMap = gT[ContextKey] ?? (gT[ContextKey] = /* @__PURE__ */ new Map());\n let realContext = contextMap.get(React.createContext);\n if (!realContext) {\n realContext = React.createContext(\n null\n );\n if (process.env.NODE_ENV !== \"production\") {\n realContext.displayName = \"ReactRedux\";\n }\n contextMap.set(React.createContext, realContext);\n }\n return realContext;\n}\nvar ReactReduxContext = /* @__PURE__ */ getContext();\n\n// src/utils/useSyncExternalStore.ts\nvar notInitialized = () => {\n throw new Error(\"uSES not initialized!\");\n};\n\n// src/hooks/useReduxContext.ts\nfunction createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext2() {\n const contextValue = React.useContext(context);\n if (process.env.NODE_ENV !== \"production\" && !contextValue) {\n throw new Error(\n \"could not find react-redux context value; please ensure the component is wrapped in a \"\n );\n }\n return contextValue;\n };\n}\nvar useReduxContext = /* @__PURE__ */ createReduxContextHook();\n\n// src/hooks/useSelector.ts\nvar useSyncExternalStoreWithSelector = notInitialized;\nvar initializeUseSelector = (fn) => {\n useSyncExternalStoreWithSelector = fn;\n};\nvar refEquality = (a, b) => a === b;\nfunction createSelectorHook(context = ReactReduxContext) {\n const useReduxContext2 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context);\n const useSelector2 = (selector, equalityFnOrOptions = {}) => {\n const { equalityFn = refEquality, devModeChecks = {} } = typeof equalityFnOrOptions === \"function\" ? { equalityFn: equalityFnOrOptions } : equalityFnOrOptions;\n if (process.env.NODE_ENV !== \"production\") {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n if (typeof selector !== \"function\") {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n if (typeof equalityFn !== \"function\") {\n throw new Error(\n `You must pass a function as an equality function to useSelector`\n );\n }\n }\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck,\n identityFunctionCheck\n } = useReduxContext2();\n const firstRun = React.useRef(true);\n const wrappedSelector = React.useCallback(\n {\n [selector.name](state) {\n const selected = selector(state);\n if (process.env.NODE_ENV !== \"production\") {\n const {\n identityFunctionCheck: finalIdentityFunctionCheck,\n stabilityCheck: finalStabilityCheck\n } = {\n stabilityCheck,\n identityFunctionCheck,\n ...devModeChecks\n };\n if (finalStabilityCheck === \"always\" || finalStabilityCheck === \"once\" && firstRun.current) {\n const toCompare = selector(state);\n if (!equalityFn(selected, toCompare)) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"Selector \" + (selector.name || \"unknown\") + \" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization\",\n {\n state,\n selected,\n selected2: toCompare,\n stack\n }\n );\n }\n }\n if (finalIdentityFunctionCheck === \"always\" || finalIdentityFunctionCheck === \"once\" && firstRun.current) {\n if (selected === state) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"Selector \" + (selector.name || \"unknown\") + \" returned the root state when called. This can lead to unnecessary rerenders.\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.\",\n { stack }\n );\n }\n }\n if (firstRun.current)\n firstRun.current = false;\n }\n return selected;\n }\n }[selector.name],\n [selector, stabilityCheck, devModeChecks.stabilityCheck]\n );\n const selectedState = useSyncExternalStoreWithSelector(\n subscription.addNestedSub,\n store.getState,\n getServerState || store.getState,\n wrappedSelector,\n equalityFn\n );\n React.useDebugValue(selectedState);\n return selectedState;\n };\n Object.assign(useSelector2, {\n withTypes: () => useSelector2\n });\n return useSelector2;\n}\nvar useSelector = /* @__PURE__ */ createSelectorHook();\n\n// src/utils/react-is.ts\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\nvar REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nvar REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nvar REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\nvar REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nvar REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\nvar REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for(\"react.server_context\");\nvar REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\nvar REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\nvar REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nfunction isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n }\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_OFFSCREEN_TYPE) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_CLIENT_REFERENCE || type.getModuleId !== void 0) {\n return true;\n }\n }\n return false;\n}\nfunction typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n const $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE: {\n const type = object.type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n default: {\n const $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n }\n }\n case REACT_PORTAL_TYPE: {\n return $$typeof;\n }\n }\n }\n return void 0;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/connect/verifySubselectors.ts\nfunction verify(selector, methodName) {\n if (!selector) {\n throw new Error(`Unexpected value for ${methodName} in connect.`);\n } else if (methodName === \"mapStateToProps\" || methodName === \"mapDispatchToProps\") {\n if (!Object.prototype.hasOwnProperty.call(selector, \"dependsOnOwnProps\")) {\n warning(\n `The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`\n );\n }\n }\n}\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {\n verify(mapStateToProps, \"mapStateToProps\");\n verify(mapDispatchToProps, \"mapDispatchToProps\");\n verify(mergeProps, \"mergeProps\");\n}\n\n// src/connect/selectorFactory.ts\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps)\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps)\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps)\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged)\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(\n nextState,\n state,\n nextOwnProps,\n ownProps\n );\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged)\n return handleNewPropsAndNewState();\n if (propsChanged)\n return handleNewProps();\n if (stateChanged)\n return handleNewState();\n return mergedProps;\n }\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\nfunction finalPropsSelectorFactory(dispatch, {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps,\n ...options\n}) {\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n if (process.env.NODE_ENV !== \"production\") {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n// src/utils/bindActionCreators.ts\nfunction bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n return boundActionCreators;\n}\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n const proto = Object.getPrototypeOf(obj);\n if (proto === null)\n return true;\n let baseProto = proto;\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n return proto === baseProto;\n}\n\n// src/utils/verifyPlainObject.ts\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(\n `${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`\n );\n }\n}\n\n// src/connect/wrapMapToProps.ts\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n}\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, { displayName }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, void 0);\n };\n proxy.dependsOnOwnProps = true;\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n if (typeof props === \"function\") {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n if (process.env.NODE_ENV !== \"production\")\n verifyPlainObject(props, displayName, methodName);\n return props;\n };\n return proxy;\n };\n}\n\n// src/connect/invalidArgFactory.ts\nfunction createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(\n `Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`\n );\n };\n}\n\n// src/connect/mapDispatchToProps.ts\nfunction mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === \"object\" ? wrapMapToPropsConstant(\n (dispatch) => (\n // @ts-ignore\n bindActionCreators(mapDispatchToProps, dispatch)\n )\n ) : !mapDispatchToProps ? wrapMapToPropsConstant((dispatch) => ({\n dispatch\n })) : typeof mapDispatchToProps === \"function\" ? (\n // @ts-ignore\n wrapMapToPropsFunc(mapDispatchToProps, \"mapDispatchToProps\")\n ) : createInvalidArgFactory(mapDispatchToProps, \"mapDispatchToProps\");\n}\n\n// src/connect/mapStateToProps.ts\nfunction mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === \"function\" ? (\n // @ts-ignore\n wrapMapToPropsFunc(mapStateToProps, \"mapStateToProps\")\n ) : createInvalidArgFactory(mapStateToProps, \"mapStateToProps\");\n}\n\n// src/connect/mergeProps.ts\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return { ...ownProps, ...stateProps, ...dispatchProps };\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, { displayName, areMergedPropsEqual }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps))\n mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== \"production\")\n verifyPlainObject(mergedProps, displayName, \"mergeProps\");\n }\n return mergedProps;\n };\n };\n}\nfunction mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === \"function\" ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, \"mergeProps\");\n}\n\n// src/utils/batch.ts\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\n// src/utils/Subscription.ts\nfunction createListenerCollection() {\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n notify() {\n defaultNoopBatch(() => {\n let listener = first;\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get() {\n const listeners = [];\n let listener = first;\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n return listeners;\n },\n subscribe(callback) {\n let isSubscribed = true;\n const listener = last = {\n callback,\n next: null,\n prev: last\n };\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n return function unsubscribe() {\n if (!isSubscribed || first === null)\n return;\n isSubscribed = false;\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\nvar nullListeners = {\n notify() {\n },\n get: () => []\n};\nfunction createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n let subscriptionsAmount = 0;\n let selfSubscribed = false;\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener);\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n function notifyNestedSubs() {\n listeners.notify();\n }\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n function isSubscribed() {\n return selfSubscribed;\n }\n function trySubscribe() {\n subscriptionsAmount++;\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n function tryUnsubscribe() {\n subscriptionsAmount--;\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = void 0;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}\n\n// src/utils/useIsomorphicLayoutEffect.ts\nvar canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nvar isReactNative = typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\nvar useIsomorphicLayoutEffect = canUseDOM || isReactNative ? React.useLayoutEffect : React.useEffect;\n\n// src/utils/shallowEqual.ts\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB))\n return true;\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length)\n return false;\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\n// src/utils/hoistStatics.ts\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {\n [ForwardRef]: FORWARD_REF_STATICS,\n [Memo]: MEMO_STATICS\n};\nfunction getStatics(component) {\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n}\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent) {\n if (typeof sourceComponent !== \"string\") {\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent);\n }\n }\n let keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!KNOWN_STATICS[key] && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {\n }\n }\n }\n }\n return targetComponent;\n}\n\n// src/components/connect.tsx\nvar useSyncExternalStore = notInitialized;\nvar initializeConnect = (fn) => {\n useSyncExternalStore = fn;\n};\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\nvar stringifyComponent = (Comp) => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n}\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false;\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, additionalSubscribeListener) {\n if (!shouldHandleStateChanges)\n return () => {\n };\n let didUnsubscribe = false;\n let lastThrownError = null;\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n return;\n }\n const latestStoreState = store.getState();\n let newChildProps, error;\n try {\n newChildProps = childPropsSelector(\n latestStoreState,\n lastWrapperProps.current\n );\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n if (!error) {\n lastThrownError = null;\n }\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true;\n additionalSubscribeListener();\n }\n };\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n if (lastThrownError) {\n throw lastThrownError;\n }\n };\n return unsubscribeWrapper;\n}\nfunction strictEqual(a, b) {\n return a === b;\n}\nvar hasWarnedAboutDeprecatedPureOption = false;\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== \"production\") {\n if (pure !== void 0 && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning(\n 'The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component'\n );\n }\n }\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n const wrapWithConnect = (WrappedComponent) => {\n if (process.env.NODE_ENV !== \"production\") {\n const isValid = /* @__PURE__ */ isValidElementType(WrappedComponent);\n if (!isValid)\n throw new Error(\n `You must pass a component to the function returned by connect. Instead received ${stringifyComponent(\n WrappedComponent\n )}`\n );\n }\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n const { reactReduxForwardedRef: reactReduxForwardedRef2, ...wrapperProps2 } = props;\n return [props.context, reactReduxForwardedRef2, wrapperProps2];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n let ResultContext = Context;\n if (propsContext?.Consumer) {\n if (process.env.NODE_ENV !== \"production\") {\n const isValid = /* @__PURE__ */ isContextConsumer(\n // @ts-ignore\n /* @__PURE__ */ React.createElement(propsContext.Consumer, null)\n );\n if (!isValid) {\n throw new Error(\n \"You must pass a valid React context consumer as `props.context`\"\n );\n }\n ResultContext = propsContext;\n }\n }\n return ResultContext;\n }, [propsContext, Context]);\n const contextValue = React.useContext(ContextToUse);\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n if (process.env.NODE_ENV !== \"production\" && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\n `Could not find \"store\" in the context of \"${displayName}\". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to ${displayName} in connect options.`\n );\n }\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n return finalPropsSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges)\n return NO_SUBSCRIPTION_ARRAY;\n const subscription2 = createSubscription(\n store,\n didStoreComeFromProps ? void 0 : contextValue.subscription\n );\n const notifyNestedSubs2 = subscription2.notifyNestedSubs.bind(subscription2);\n return [subscription2, notifyNestedSubs2];\n }, [store, didStoreComeFromProps, contextValue]);\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n return contextValue;\n }\n return {\n ...contextValue,\n subscription\n };\n }, [didStoreComeFromProps, contextValue, subscription]);\n const lastChildProps = React.useRef(void 0);\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef(void 0);\n const renderIsScheduled = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef(\n void 0\n );\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n }\n return childPropsSelector(store.getState(), wrapperProps);\n };\n return selector;\n }, [store, wrapperProps]);\n const subscribeForReact = React.useMemo(() => {\n const subscribe = (reactListener) => {\n if (!subscription) {\n return () => {\n };\n }\n return subscribeUpdates(\n shouldHandleStateChanges,\n store,\n subscription,\n // @ts-ignore\n childPropsSelector,\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n isMounted,\n childPropsFromStoreUpdate,\n notifyNestedSubs,\n reactListener\n );\n };\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n wrapperProps,\n childPropsFromStoreUpdate,\n notifyNestedSubs\n ]);\n let actualChildProps;\n try {\n actualChildProps = useSyncExternalStore(\n // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact,\n // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector,\n getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector\n );\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n`;\n }\n throw err;\n }\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = void 0;\n childPropsFromStoreUpdate.current = void 0;\n lastChildProps.current = actualChildProps;\n });\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n // @ts-ignore\n /* @__PURE__ */ React.createElement(\n WrappedComponent,\n {\n ...actualChildProps,\n ref: reactReduxForwardedRef\n }\n )\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]);\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n return /* @__PURE__ */ React.createElement(ContextToUse.Provider, { value: overriddenContextValue }, renderedWrappedComponent);\n }\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n const _Connect = React.memo(ConnectFunction);\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n if (forwardRef) {\n const _forwarded = React.forwardRef(\n function forwardConnectRef(props, ref) {\n return /* @__PURE__ */ React.createElement(Connect, { ...props, reactReduxForwardedRef: ref });\n }\n );\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return /* @__PURE__ */ hoistNonReactStatics(forwarded, WrappedComponent);\n }\n return /* @__PURE__ */ hoistNonReactStatics(Connect, WrappedComponent);\n };\n return wrapWithConnect;\n}\nvar connect_default = connect;\n\n// src/components/Provider.tsx\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = \"once\",\n identityFunctionCheck = \"once\"\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : void 0,\n stabilityCheck,\n identityFunctionCheck\n };\n }, [store, serverState, stabilityCheck, identityFunctionCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const { subscription } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = void 0;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext;\n return /* @__PURE__ */ React.createElement(Context.Provider, { value: contextValue }, children);\n}\nvar Provider_default = Provider;\n\n// src/hooks/useStore.ts\nfunction createStoreHook(context = ReactReduxContext) {\n const useReduxContext2 = context === ReactReduxContext ? useReduxContext : (\n // @ts-ignore\n createReduxContextHook(context)\n );\n const useStore2 = () => {\n const { store } = useReduxContext2();\n return store;\n };\n Object.assign(useStore2, {\n withTypes: () => useStore2\n });\n return useStore2;\n}\nvar useStore = /* @__PURE__ */ createStoreHook();\n\n// src/hooks/useDispatch.ts\nfunction createDispatchHook(context = ReactReduxContext) {\n const useStore2 = context === ReactReduxContext ? useStore : createStoreHook(context);\n const useDispatch2 = () => {\n const store = useStore2();\n return store.dispatch;\n };\n Object.assign(useDispatch2, {\n withTypes: () => useDispatch2\n });\n return useDispatch2;\n}\nvar useDispatch = /* @__PURE__ */ createDispatchHook();\n\n// src/exports.ts\nvar batch = defaultNoopBatch;\n\n// src/index.ts\ninitializeUseSelector(useSyncExternalStoreWithSelector2);\ninitializeConnect(React2.useSyncExternalStore);\nexport {\n Provider_default as Provider,\n ReactReduxContext,\n batch,\n connect_default as connect,\n createDispatchHook,\n createSelectorHook,\n createStoreHook,\n shallowEqual,\n useDispatch,\n useSelector,\n useStore\n};\n//# sourceMappingURL=react-redux.mjs.map","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map"],"names":["exports","Q","str","options","obj","dec","opt","decode","index","length","eqIdx","indexOf","endIdx","lastIndexOf","key","slice","trim","undefined","val","charCodeAt","tryDecode","e","q","name","enc","encode","fieldContentRegExp","test","value","maxAge","isNaN","isFinite","Math","floor","domain","path","expires","__toString","call","Date","valueOf","toUTCString","httpOnly","secure","partitioned","priority","toLowerCase","sameSite","Object","prototype","toString","decodeURIComponent","encodeURIComponent","DraftMode","isEnabled","_provider","enable","store","staticGenerationAsyncStorage","getStore","trackDynamicDataAccessed","disable","constructor","provider","cookies","draftMode","headers","callingExpression","staticGenerationStore","forceStatic","HeadersAdapter","seal","Headers","getExpectedRequestStore","RequestCookiesAdapter","RequestCookies","requestStore","asyncActionStore","actionAsyncStorage","isAction","isAppRoute","mutableCookies","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","hasOwnProperty","src_exports","stringifyCookie","c","_a","attrs","filter","Boolean","stringified","join","parseCookie","cookie","map","Map","pair","split","splitAt","set","parseSetCookie","setCookie","string","attributes","httponly","maxage","samesite","fromEntries","value2","compact","t","newT","Number","SAME_SITE","includes","PRIORITY","__export","target","all","get","enumerable","ResponseCookies","module","__copyProps","to","from","except","desc","requestHeaders","_parsed","_headers","header","Symbol","iterator","size","args","getAll","Array","_","n","has","delete","names","result","isArray","clear","keys","for","JSON","stringify","values","v","responseHeaders","_b","_c","getSetCookie","cookieString","splitCookiesString","cookiesString","start","ch","lastComma","nextStart","cookiesSeparatorFound","cookiesStrings","pos","skipWhitespace","charAt","push","substring","parsed","normalizeCookie","now","replace","bag","serialized","append","__WEBPACK_AMD_DEFINE_RESULT__","i","o","a","s","b","w","l","d","u","p","m","f","h","g","k","x","y","T","S","z","N","A","C","O","U","j","R","M","B","V","D","I","F","G","H","L","Z","extend","concat","enumerize","toUpperCase","lowerize","rgxMapper","r","exec","strMapper","X","ME","XP","Vista","RT","K","browser","cpu","device","engine","E","os","UAParser","getResult","navigator","userAgent","userAgentData","getBrowser","brave","isBrave","getCPU","getDevice","mobile","standalone","maxTouchPoints","getEngine","getOS","platform","ua","getUA","setUA","VERSION","BROWSER","CPU","DEVICE","ENGINE","OS","__webpack_require__","amdO","jQuery","Zepto","Y","window","__nccwpck_require__","ab","__dirname","_export","PageSignatureError","RemovedPageError","RemovedUAError","Error","page","ImageResponse","_imageresponse","NextRequest","_request","NextResponse","_response","URLPattern","_urlpattern","_useragent","userAgentFromString","NextURL","_detectdomainlocale","_formatnextpathnameinfo","_gethostname","_getnextpathnameinfo","REGEX_LOCALHOST_HOSTNAME","parseURL","url","base","URL","String","Internal","input","baseOrOpts","opts","basePath","analyze","_this_Internal_options_nextConfig_i18n","_this_Internal_options_nextConfig","_this_Internal_domainLocale","_this_Internal_options_nextConfig_i18n1","_this_Internal_options_nextConfig1","info","getNextPathnameInfo","pathname","nextConfig","parseData","i18nProvider","hostname","getHostname","domainLocale","detectDomainLocale","i18n","domains","defaultLocale","buildId","locale","trailingSlash","formatPathname","formatNextPathnameInfo","forceLocale","formatSearch","search","locales","searchParams","host","port","protocol","href","hash","origin","password","username","startsWith","toJSON","clone","ReadonlyHeadersError","_reflect","callable","Proxy","prop","receiver","ReflectAdapter","lowercased","original","find","deleteProperty","merge","existing","forEach","callbackfn","thisArg","entries","MutableRequestCookiesAdapter","ReadonlyRequestCookiesError","appendMutableCookies","getModifiedCookieValues","_cookies","_staticgenerationasyncstorageexternal","SYMBOL_MODIFY_COOKIE_VALUES","modified","modifiedCookieValues","resCookies","returnedCookies","wrap","onUpdateCookies","responseCookies","modifiedValues","modifiedCookies","Set","updateResponseCookies","staticGenerationAsyncStore","pathWasRevalidated","allCookies","serializedCookies","tempCookies","add","INTERNALS","_nexturl","_utils","_error","Request","init","validateURL","nextUrl","toNodeOutgoingHttpHeaders","geo","ip","bodyUsed","cache","credentials","destination","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","signal","REDIRECTS","handleMiddlewareField","_init_request","request","Response","body","ok","redirected","status","statusText","type","json","response","initObj","rewrite","next","GlobalURLPattern","isBot","_uaparserjs","__esModule","default","fromNodeOutgoingHttpHeaders","nodeHeaders","error","cause","domainItems","detectedLocale","item","domainHostname","some","KEY_PREFIX","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","_typeof","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","apply","autoMergeLevel1","inboundState","originalState","reducedState","_ref","debug","newState","_objectSpread","arguments","source","configurable","writable","getOwnPropertyDescriptors","defineProperties","defaultSerialize","data","getStoredState_getStoredState","config","deserialize","transforms","storageKey","keyPrefix","storage","defaultDeserialize","getItem","then","state","rawState","reduceRight","subState","transformer","out","err","serial","parse","warnIfRemoveError","persistReducer_ownKeys","persistReducer_objectSpread","persistReducer","baseReducer","version","stateReconciler","getStoredState","timeout","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","update","action","rest","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","_sealed","_rehydrate","payload","rehydrate","setTimeout","createPersistoid","serialize","blacklist","whitelist","throttle","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","clearInterval","shift","endState","reduce","in","console","setItem","catch","onWriteFail","passWhitelistBlacklist","setInterval","flush","Promise","resolve","register","restoredState","migrate","migratedState","migrateErr","removeItem","_toConsumableArray","arr","_arrayWithoutHoles","arr2","_iterableToArray","iter","_nonIterableSpread","persistStore_ownKeys","persistStore_objectSpread","initialState","registry","bootstrapped","persistorReducer","firstIndex","splice","persistStore","cb","boostrappedCb","_pStore","redux","MT","enhancer","dispatch","rehydrateAction","persistor","getState","purge","results","purgeResult","flushResult","pause","persist","manualPersist","_getStorage","reject","noop","storageType","hasStorage","self","testKey","noopStorage","_default","_createWebStorage","is","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","useSyncExternalStoreWithSelector","current","hasValue","PrismaAdapter","prisma","createUser","id","_id","user","create","getUser","findUnique","where","getUserByEmail","email","getUserByAccount","provider_providerAccountId","account","select","updateUser","deleteUser","linkAccount","unlinkAccount","getSessionAndUser","sessionToken","userAndSession","session","include","createSession","updateSession","deleteSession","createVerificationToken","verificationToken","useVerificationToken","identifier_token","code","getAccount","providerAccountId","findFirst","createAuthenticator","authenticator","fromDBAuthenticator","getAuthenticator","credentialID","listAuthenticatorsByUserId","userId","authenticators","findMany","updateAuthenticatorCounter","counter","transports","other","ReducerType2","currentScope","NOTHING","DRAFTABLE","DRAFT_STATE","die","getPrototypeOf","isDraft","isDraftable","immer_isPlainObject","isMap","isSet","objectCtorString","proto","Ctor","Function","each","getArchtype","Reflect","entry","thing","type_","propOrOldValue","latest","copy_","base_","shallowCopy","strict","isPlain","assign","descriptors","freeze","deep","isFrozen","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","plugin","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer2","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","childValue","finalizeProperty","scope_","finalized_","resultEach","isSet2","generatePatches_","parentState","targetObject","rootPath","targetIsSet","res","assigned_","autoFreeze_","objectTraps","readPropFromProto","getDescriptorFromProto","draft_","peek","prepareCopy","createProxy","current2","currentState","markChanged","owner","setPrototypeOf","arrayTraps","useStrictShallowCopy_","parent","proxyMap_","proxySet_","createProxyProxy","isManual_","traps","revoke","proxy","revocable","currentImpl","copy","fn","immer","produce","recipe","defaultBase","base2","hasError","produceWithPatches","patches","inversePatches","autoFreeze","setAutoFreeze","useStrictShallowCopy","setUseStrictShallowCopy","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","bind","ensureIsArray","$REVISION","Cell","revision","_value","_lastValue","_isEqual","tripleEq","initialValue","isEqual","newValue","getValue","cell","warn","neverEq","createTag","createCell","consumeCollection","tag","node","collectionTag","nextId","ObjectTreeNode","objectProxyHandler","tags","children","calculateResult","childNode","ArrayTreeNode","arrayProxyHandler","Ref","WeakRef","deref","createCacheNode","weakMapMemoize","func","lastResult","fnNode","resultEqualityCheck","resultsCount","memoized","cacheNode","arg","objectCache","WeakMap","objectNode","primitiveCache","primitiveNode","terminatedNode","lastResultValue","needsWeakRef","clearCache","resetResultsCount","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","memoize","memoizeOptions","createSelector2","createSelectorArgs","recomputations","dependencyRecomputations","directlyPassedOptions","resultFunc","pop","assertIsFunction","errorMessage","argsMemoize","argsMemoizeOptions","devModeChecks","finalMemoizeOptions","finalArgsMemoizeOptions","dependencies","getDependencies","assertIsArrayOfFunctions","array","every","itemTypes","memoizedResultFunc","inputSelectorResults","collectInputSelectorResults","inputSelectorArgs","resetDependencyRecomputations","resetRecomputations","withTypes","createSelector","createStructuredSelector","inputSelectorsObject","selectorCreator","assertIsObject","inputSelectorKeys","composition","createThunkMiddleware","extraArgument","redux_thunk_thunk","createDraftSafeSelectorCreator","createDraftSafeSelector2","args2","selector","wrappedSelector","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","qC","__REDUX_DEVTOOLS_EXTENSION__","hasMatchFunction","match","createAction","prepareAction","actionCreator","prepared","formatProdErrorMessage","meta","LG","Tuple","_Tuple","items","species","prepend","freezeDraftable","emplace","handler","insert","inserted","buildGetDefaultMiddleware","thunk","immutableCheck","serializableCheck","actionCreatorCheck","middlewareArray","withExtraArgument","createQueueWithTimer","notify","rAF","requestAnimationFrame","autoBatchEnhancer","notifying","shouldNotifyAtEndOfTick","notificationQueued","listeners","queueCallback","queueMicrotask","queueNotification","notifyListeners","subscribe","listener2","unsubscribe","buildGetDefaultEnhancers","autoBatch","enhancerArray","middlewareEnhancer","configureStore","rootReducer","finalMiddleware","getDefaultMiddleware","reducer","middleware","devTools","preloadedState","enhancers","PO","UY","finalCompose","trace","getDefaultEnhancers","md","composedEnhancer","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","nanoid","urlAlphabet","random","matches","commonProperties","RejectWithValue","_type","FulfillWithMeta","miniSerializeError","simpleError","property","message","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","fulfilled","requestId","requestStatus","pending","rejected","serializeError","rejectedWithValue","aborted","condition","extra","abortHandler","abortReason","idGenerator","abortController","AbortController","abort","reason","promise","finalAction","conditionResult","abortedPromise","addEventListener","getPendingMeta","race","rejectWithValue","fulfillWithValue","removeEventListener","dispatchConditionRejection","unwrap","unwrapResult","settled","isAnyOf","matchers","asyncThunkSymbol","ReducerType","createSlice","buildCreateSlice","creators","cAT","asyncThunk","_reducer","reducerPath","reducers","buildReducerCreators","_reducerDefinitionType","caseReducer","preparedReducer","prepare","reducerNames","contextMethods","reducer2","context","exposeAction","name2","exposeCaseReducer","buildReducer","extraReducers","finalCaseReducers","createReducer","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","frozenInitialState","caseReducers","cr","previousState","sM","reducerDefinition","reducerName","reducerDetails","createNotation","handleThunkCaseReducerDefinition","handleNormalReducerDefinition","maybeReducerWithPrepare","prepareCallback","selectSelf","injectedSelectorCache","makeSelectorProps","reducerPath2","injected","selectSlice","sliceState","getSelectors","selectState","selectorCache","selectors","wrapSelector","wrapper","rootState","unwrapped","actions","injectInto","injectable","pathOpt","newReducerPath","inject","assertFunction","expected","redux_toolkit_modern_assign","alm","getListenerEntryPropsFrom","predicate","effect","createListenerEntry","addListener","removeListener","privCache","pubCache","USER_AGENT","jwkCache","__classPrivateFieldSet","kind","__classPrivateFieldGet","defaultCookies","useSecureCookies","cookiePrefix","callbackUrl","csrfToken","pkceCodeVerifier","nonce","webauthnChallenge","cookie_SessionStore","option","logger","_SessionStore_instances","_SessionStore_chunks","_SessionStore_option","_SessionStore_logger","sessionCookiePrefix","sortedKeys","sort","aSuffix","parseInt","chunk","_SessionStore_clean","_SessionStore_chunk","clean","WeakSet","chunkCount","ceil","ALLOWED_COOKIE_SIZE","substr","emptyCookieSize","valueSize","chunks","cleanedChunks","warned","isValidHttpUrl","baseUrl","hasCredentials","hasEmail","hasWebAuthn","emailMethods","sessionMethods","webauthnMethods","getGlobal","globalThis","hkdf","digest","ikm","salt","keylen","crypto","subtle","Uint8Array","deriveBits","importKey","normalizeUint8Array","label","TextEncoder","web_hkdf","normalizeDigest","normalizeIkm","byteLength","normalizeInfo","TypeError","normalizeKeylen","isInteger","webcrypto","isCryptoKey","CryptoKey","algorithm","subtleDigest","encoder","decoder","TextDecoder","buffers","buf","acc","buffer","writeUInt32BE","offset","MAX_INT32","uint64be","uint32be","lengthAndInput","concatKdf","secret","bits","iterations","runtime_digest","encodeBase64","unencoded","fromCharCode","subarray","btoa","decodeBase64","binary","atob","encoded","bytes","JOSEError","captureStackTrace","JWTClaimValidationFailed","claim","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWEDecryptionFailed","JWEInvalid","JWTInvalid","JWKInvalid","isObject","check","description","calculateJwkThumbprint","jwk","digestAlgorithm","components","kty","crv","getRandomValues","bitLength","alg","lib_iv","check_iv_length","iv","check_cek_length","cek","actual","unusable","isAlgorithm","checkEncCryptoKey","usages","checkUsage","msg","last","types","invalid_key_input","withAlg","is_key_like","toStringTag","cbcEncrypt","plaintext","aad","keySize","encKey","macKey","ciphertext","encrypt","macData","sign","gcmEncrypt","encrypted","additionalData","tagLength","bogus","checkKeySize","getCryptoKey","usage","cryptoKey","cryptoKeyCek","wrapKey","encryptedKey","unwrapKey","exportKey","deriveKey","publicKey","privateKey","keyLength","apu","apv","namedCurve","public","generateEpk","generateKey","ecdhAllowed","pbes2kw_deriveKey","p2s","p2c","checkP2s","subtleAlg","pbes2kw_getCryptoKey","pbes2kw_encrypt","derived","decrypt","subtleRsaEs","check_key_length","modulusLength","rsaes_encrypt","rsaes_decrypt","jwk_to_key_parse","keyUsages","subtleMapping","ext","key_ops","keyData","use","normalizeSecretKey","isKeyObject","importAndCache","cached","jwk_to_key","export","format","dp","dq","qi","cek_bitLength","lib_cek","keyToJWK","extractable","exportJWK","key_to_jwk","symmetricTypeCheck","asymmetricTypeCheck","check_key_type","timing_safe_equal","len","cbcDecrypt","macCheckPassed","expectedTag","gcmDecrypt","decrypt_decrypt","aesgcmkw_wrap","jweAlgorithm","wrapped","runtime_encrypt","aesgcmkw_unwrap","runtime_decrypt","encryptKeyManagement","providedCek","providedParameters","parameters","epk","ephemeralKey","sharedSecret","kwAlg","is_disjoint","sources","parameter","validate_crit","Err","recognizedDefault","recognizedOption","protectedHeader","joseHeader","recognized","crit","unprotected","FlattenedEncrypt","_plaintext","setKeyManagementParameters","_keyManagementParameters","setProtectedHeader","_protectedHeader","setSharedUnprotectedHeader","sharedUnprotectedHeader","_sharedUnprotectedHeader","setUnprotectedHeader","unprotectedHeader","_unprotectedHeader","setAdditionalAuthenticatedData","_aad","setContentEncryptionKey","_cek","setInitializationVector","_iv","aadMember","zip","encrypt_key_management","jwe","encrypted_key","protected","CompactEncrypt","_flattened","epoch","date","getTime","REGEX","secs","numericDate","matched","parseFloat","round","validateInput","ProduceJWT","_payload","setIssuer","issuer","iss","setSubject","subject","sub","setAudience","audience","aud","setJti","jwtId","jti","setNotBefore","nbf","setExpirationTime","exp","setIssuedAt","iat","EncryptJWT","replicateIssuerAsHeader","_replicateIssuerAsHeader","replicateSubjectAsHeader","_replicateSubjectAsHeader","replicateAudienceAsHeader","_replicateAudienceAsHeader","importJWK","oth","decryptKeyManagement","partyUInfo","partyVInfo","p2cLimit","maxPBES2Count","validate_algorithms","algorithms","flattenedDecrypt","parsedProt","keyManagementAlgorithms","contentEncryptionAlgorithms","resolvedKey","decrypt_key_management","additionalAuthenticatedData","compactDecrypt","decrypted","normalizeTyp","checkAudiencePresence","audPayload","audOption","jwt_claims_set","encodedPayload","tolerance","typ","requiredClaims","maxTokenAge","presenceCheck","reverse","clockTolerance","currentDate","age","jwtDecrypt","jwt","jwt_encode","params","token","secrets","encryptionSecret","getDerivedEncryptionKey","thumbprint","base64url_encode","kid","randomUUID","jwt_decode","keyMaterial","createCallbackUrl","paramValue","cookieValue","callbacks","callbackUrlCookie","red","logger_reset","errors","l4","stack","metadata","log","getBody","req","contentType","URLSearchParams","text","toInternalRequest","D7","providerId","parseActionAndProviderId","actionAndProviderId","at","node_modules_cookie","query","toResponse","cookieHeader","createHash","padStart","randomString","i2hex","createCSRFToken","isPost","bodyValue","csrfTokenHash","csrfTokenVerified","validateCSRF","verified","Rk","merge_isObject","defaultProfile","stripUndefined","profile","nickname","preferred_username","image","picture","defaultAccount","access_token","id_token","refresh_token","expires_at","token_type","session_state","normalizeEndpoint","conform","defaultCallbacks","signIn","toISOString","authOptions","reqCookies","reqCallbackUrl","reqCsrfToken","csrfDisabled","methods","providers","parseProviders","userOptions","defaults","merged","signinUrl","redirectProxyUrl","normalizeOAuth","wellKnown","authorization","userinfo","checks","isOnRedirectProxy","pages","theme","colorScheme","logo","brandColor","buttonText","strategy","adapter","updateAge","generateSessionToken","events","xQ","adapterErrorHandler","experimental","csrfCookie","preact_module_l","parentNode","removeChild","props","ref","__k","__","__b","__e","__d","__c","__h","__v","vnode","preact_module_p","__r","debounceRendering","__P","__n","ownerSVGElement","unmount","componentWillUnmount","appendChild","nextSibling","insertBefore","$","setProperty","style","cssText","removeAttribute","setAttribute","event","contextType","__E","render","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","localName","nodeType","document","createTextNode","createElementNS","createElement","childNodes","dangerouslySetInnerHTML","__html","innerHTML","checked","diffed","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","dist_r","dist_n","dist_o","dist_i","dist_a","dist_s","dist_f","dist_c","dist_u","dist_","dist_d","dist_v","dist_h","dist_g","dist_m","shallow","dist_k","dist_x","pretty","voidElements","sortAttributes","allAttributes","xml","attributeHook","dist_y","renderRootComponent","shallowHighOrder","_dirty","_nextState","displayName","P","W","class","selected","J","dist_j","dist_C","dist_O","shallowRender","jsxRuntime_module_","jsxRuntime_module_o","__source","__self","defaultProps","webauthnScript","authURL","providerID","WebAuthnBrowser","SimpleWebAuthnBrowser","fetchOptions","formFields","field","fetch","getForm","formID","form","querySelector","getFormFields","querySelectorAll","submitForm","actionInput","dataInput","submit","authenticationFlow","autofill","authResp","startAuthentication","registrationFlow","required","regResp","startRegistration","autofillAuthentication","browserSupportsWebAuthnAutofill","setupForm","browserSupportsWebAuthn","display","preventDefault","signinErrors","Signin","OAuthSignin","OAuthCallbackError","OAuthCreateAccount","EmailCreateAccount","Callback","OAuthAccountNotLinked","EmailSignin","CredentialsSignin","SessionRequired","styles","send","html","title","headTags","renderPage","csrf","skip","signin","webauthnProvider","enableConditionalUI","simpleWebAuthnBrowserVersion","simpleWebAuthnBrowserScript","SigninPage","errorType","documentElement","conditionalUIProviderID","className","src","alt","bg","color","tabIndex","loading","height","width","opacity","htmlFor","autoFocus","placeholder","credential","signout","signOut","SignoutPage","verifyRequest","VerifyRequestPage","ErrorPage","signinPageUrl","heading","Configuration","AccessDenied","Verification","fromDate","time","handleLoginOrRegister","_profile","_account","sessionStrategy","isNewUser","useJwtSession","userByEmail","emailVerified","userByAccount","currentAccount","FW","Xw","tokenSet","allowDangerousEmailAccountLinking","looseInstanceOf","clockSkew","customFetch","useMtlsAlias","build_encoder","build_decoder","b64u","decodeBase64Url","OPE","encodeBase64Url","ArrayBuffer","LRU","maxSize","_cache","UnsupportedOperationError","OperationProcessingError","dpopNonces","build_isCryptoKey","isPrivateKey","processDpopNonce","isJsonObject","prepareHeaders","AbortSignal","discoveryRequest","issuerIdentifier","validateString","processDiscoveryResponse","expectedIssuerIdentifier","assertReadableResponse","randomBytes","calculatePKCECodeChallenge","codeVerifier","formUrlEncode","keyToJws","psAlg","rsAlg","esAlg","getClockSkew","client","skew","getClockTolerance","epochTime","privateKeyJwt","as","clientAssertion","token_endpoint","client_id","assertAs","assertClient","assertClientSecret","clientSecret","assertNoClientPrivateKey","clientAuthMethod","clientPrivateKey","assertNoClientSecret","clientAuthentication","token_endpoint_auth_method","clientSecretBasic","clientId","client_secret","getKeyAndKid","claimsSet","signature","keyToSubtle","dpopProofJwt","htm","accessToken","proof","publicJwk","htu","ath","getSetPublicJwkCache","validateEndpoint","endpoint","resolveEndpoint","mtls_endpoint_aliases","isOAuth2Error","SPLIT_REGEXP","SCHEMES_REGEXP","protectedResourceRequest","DPoP","userInfoRequest","userinfo_signed_response_alg","authenticatedRequest","tokenEndpointRequest","grantType","idTokenClaims","getValidatedIdTokenClaims","claims","processGenericAccessTokenResponse","ignoreIdToken","ignoreRefreshToken","handleOAuthBodyError","expires_in","validateJwt","checkSigningAlgorithm","id_token_signed_response_alg","id_token_signing_alg_values_supported","noSignatureCheck","validatePresence","validateIssuer","validateAudience","azp","auth_time","branded","authorizationCodeGrantRequest","callbackParameters","redirectUri","getURLSearchParameter","additionalParameters","jwtClaimNames","c_hash","s_hash","cnf","expectNoNonce","skipAuthTimeCheck","processAuthorizationCodeOpenIDResponse","expectedNonce","default_max_age","require_auth_time","processAuthorizationCodeOAuth2Response","error_description","error_uri","algs","checkRsaKeyAlgorithm","ecdsaHashName","saltLength","jws","checkAlg","getKey","encodedSignature","verify","skipStateCheck","expectNoState","signCookie","setTime","pkce","code_verifier","gS","decodeState","base64url_decode","checks_state","encodedState","paramRandom","decodedState","checks_nonce","challenge","registerData","handleOAuth","randomState","challenges","tokens","userinfo_endpoint","discoveryResponse","discoveredAs","codeGrantParams","validateAuthResponse","expectedState","authorization_response_iss_parameter_supported","iV","redirect_uri","codeGrantResponse","parseWwwAuthenticateChallenges","scheme","matchAll","others","wwwAuth","idx","userinfoResponse","getUserAndAccount","OAuthProfile","userFromProfile","X0","getRegistrationResponse","regOptions","getRegistrationOptions","getAuthenticationResponse","getAuthenticationOptions","verifyAuthenticate","verification","toBase64","fromBase64","expectedChallenge","relayingParty","getRelayingParty","simpleWebAuthn","verifyAuthenticationResponse","verifyAuthenticationOptions","credentialDeviceType","stringToTransports","credentialPublicKey","expectedOrigin","expectedRPID","vV","authenticationInfo","newCounter","oldCounter","userID","verifyRegister","verifyRegistrationResponse","verifyRegistrationOptions","registrationInfo","credentialBackedUp","generateAuthenticationOptions","authenticationOptions","rpID","allowCredentials","generateRegistrationOptions","registrationOptions","userName","userDisplayName","rpName","excludeCredentials","assertInternalOptionsWebAuthn","Xp","Ab","base64","Buffer","tstring","callback","sessionStore","sessionMaxAge","proxyRedirect","handleState","authorizationResult","userFromProvider","handleAuthorized","defaultToken","trigger","newToken","cookieExpires","sessionCookies","newUser","identifier","hasToken","invite","hasInvite","expired","GX","loggedInUser","userFromAuthorize","authorize","UC","localOptions","Ng","authorized","JK","isUpdate","newSession","newExpires","xo","sessionUpdateAge","sessionIsDueToBeUpdatedDate","sessionPayload","li","getAuthorizationUrl","authorization_endpoint","authParams","response_type","code_challenge_methods_supported","sendToken","normalizer","normalizeIdentifier","local","defaultUser","verificationRequest","generateVerificationToken","sendRequest","sendVerificationRequest","createToken","signInUrl","authCookies","V1","getLoggedInUser","webAuthnOptions","narrowOptions","sessionUser","getUserInfoResponse","exists","getUserInfo","userInfo","inferWebAuthnOptions","loggedIn","userInfoResponse","AuthInternal","skipCSRFCheck","raw","createActionURL","envObject","envUrl","AUTH_URL","NEXTAUTH_URL","detectedHost","detectedProtocol","_protocol","endsWith","sanitizedUrl","sanitizedBasePath","Auth","setLogger","newLogger","internalRequest","warningsOrError","assertConfig","warnings","trustHost","kA","yv","callbackUrlParam","k7","defaultCallbackUrl","hasConditionalUIProvider","Hi","j7","autocomplete","BX","dbStrategy","onlyCredentials","lA","yQ","requiredMethods","enableWebAuthn","dw","missing","xP","htmlPages","authOnErrorPage","Mq","isRedirect","isRaw","internalResponse","isAuthError","isClientSafeErrorType","pI","pageKind","pagePath","reqWithEnvURL","process","env","envOrigin","web_exports","env_setEnvDefaults","AUTH_SECRET","setEnvDefaults","unshift","AUTH_REDIRECT_PROXY_URL","AUTH_TRUST_HOST","VERCEL","CF_PAGES","NODE_ENV","finalProvider","ID","apiKey","getSession","lib_process","isReqWrapper","initAuth","onLazyLoad","components_headers","_config","ev","handleAuth","userMiddlewareOrRoute","authResponse","auth","appendHeader","sessionResponse","isSameAuthAction","requestPath","redirectPath","lib_actions","augmentedReq","signInPage","finalResponse","actions_signIn","authorizationParams","shouldRedirect","redirectTo","FormData","signInURL","actions_process","navigation","foundProvider","providerConfig","redirectUrl","responseUrl","actions_signOut","NextAuth","httpHandler","handlers","GET","POST","unstable_update","Credentials","Facebook","Authorization","Google","ContextKey","gT","ReactReduxContext","getContext","React","createContext","contextMap","realContext","createReduxContextHook","useContext","useReduxContext","refEquality","useSelector","createSelectorHook","useReduxContext2","useSelector2","equalityFnOrOptions","equalityFn","subscription","getServerState","stabilityCheck","identityFunctionCheck","useCallback","selectedState","addNestedSub","nullListeners","canUseDOM","isReactNative","product","useIsomorphicLayoutEffect","useLayoutEffect","Provider_default","serverState","contextValue","createSubscription","parentSub","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","first","listener","isSubscribed","prev","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","Context","Provider","createStoreHook","useStore2","useStore","useDispatch","createDispatchHook","useDispatch2","use_sync_external_store_with_selector_js__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_0__","$$observable","observable","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","currentReducer","currentListeners","nextListeners","listenerIdCounter","isDispatching","ensureCanMutateNextListeners","listenerId","actionTypes_default","replaceReducer","nextReducer","observer","observeState","observerAsObserver","outerSubscribe","combineReducers","shapeAssertionError","reducerKeys","finalReducers","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","createStore2","middlewareAPI"],"sourceRoot":""}