{"version":3,"file":"auth.js","mappings":"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","sources":["webpack://web-ui/webpack/runtime/async module","webpack://web-ui/./assets/src/js/app/auth.js","webpack://web-ui/./assets/src/js/lib/supertokens.js","webpack://web-ui/./node_modules/browser-tabs-lock/index.js","webpack://web-ui/./node_modules/browser-tabs-lock/processLock.js","webpack://web-ui/./node_modules/supertokens-js-override/lib/build/getProxyObject.js","webpack://web-ui/./node_modules/supertokens-js-override/lib/build/index.js","webpack://web-ui/./node_modules/supertokens-web-js/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/constants.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/cookieHandler/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/dateProvider/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/error.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/normalisedURLDomain.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/normalisedURLPath.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/postSuperTokensInitCallbacks.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/querier.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/authRecipe/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/authRecipe/utils.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/emailverification/constants.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/multitenancy/recipe.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/multitenancy/recipeImplementation.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/multitenancy/utils.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/passwordless/constants.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/passwordless/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/passwordless/recipe.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/passwordless/recipeImplementation.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/passwordless/utils.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/recipeModule/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/recipeModule/utils.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/session/index.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/recipe/session/recipe.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/supertokens.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/utils.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/version.js","webpack://web-ui/./node_modules/supertokens-web-js/lib/build/windowHandler/index.js","webpack://web-ui/./node_modules/supertokens-web-js/recipe/passwordless/index.js","webpack://web-ui/./node_modules/supertokens-web-js/recipe/session/index.js","webpack://web-ui/./node_modules/supertokens-website/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/axios.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/axiosError.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/claims/booleanClaim.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/claims/primitiveArrayClaim.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/claims/primitiveClaim.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/error.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/fetch.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/logger.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/normalisedURLDomain.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/normalisedURLPath.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/processState.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/recipeImplementation.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/cookieHandler/defaultImplementation.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/cookieHandler/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/dateProvider/defaultImplementation.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/dateProvider/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/globalClaimValidators.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/lockFactory/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/sessionClaimValidatorStore.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/windowHandler/defaultImplementation.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/utils/windowHandler/index.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/version.js","webpack://web-ui/./node_modules/supertokens-website/lib/build/xmlhttprequest.js","webpack://web-ui/./node_modules/supertokens-website/utils/cookieHandler/index.js","webpack://web-ui/./node_modules/supertokens-website/utils/dateProvider/index.js","webpack://web-ui/./node_modules/supertokens-website/utils/error/index.js","webpack://web-ui/./node_modules/supertokens-website/utils/globalClaimValidators/index.js","webpack://web-ui/./node_modules/supertokens-website/utils/windowHandler/index.js","webpack://web-ui/webpack/bootstrap","webpack://web-ui/webpack/runtime/compat get default export","webpack://web-ui/webpack/runtime/define property getters","webpack://web-ui/webpack/runtime/global","webpack://web-ui/webpack/runtime/hasOwnProperty shorthand","webpack://web-ui/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","import {init, refresh} from '../lib/supertokens';\ntry {\n await init(window._CSRF);\n} catch (err) {\n console.log(err);\n}\nif (window._sessionExpired) {\n try {\n await refresh(window._CSRF);\n window.dispatchEvent(new CustomEvent('auth'));\n } catch (err) {\n console.log(err);\n }\n}\n\nexport {}\n","import SuperTokens from 'supertokens-web-js';\nimport Session from 'supertokens-web-js/recipe/session';\nimport Passwordless, { createCode, consumeCode, signOut } from \"supertokens-web-js/recipe/passwordless\";\n\nfunction preAPIHook(csrf) {\n return function(context) {\n let requestInit = context.requestInit;\n let url = context.url;\n let headers = {\n ...requestInit.headers,\n 'X-CSRF-TOKEN': csrf,\n };\n requestInit = {\n ...requestInit,\n headers,\n }\n return {\n requestInit, url\n };\n }\n}\n\nexport async function sendMagicLink({email}, csrf) {\n initSuperTokens(csrf);\n return await createCode({\n email,\n options: {\n preAPIHook: preAPIHook(csrf),\n },\n });\n}\n\nexport async function handleMagicLinkClicked(csrf) {\n initSuperTokens(csrf);\n return await consumeCode({\n options: {\n preAPIHook: preAPIHook(csrf),\n },\n });\n}\n\nexport async function logout(csrf) {\n initSuperTokens(csrf);\n return await signOut({\n options: {\n preAPIHook: preAPIHook(csrf),\n },\n });\n}\n\nexport function refresh(csrf) {\n initSuperTokens(csrf);\n return Session.attemptRefreshingSession();\n}\n\nexport async function init(csrf) {\n initSuperTokens(csrf);\n}\n\nlet inited = false;\nasync function initSuperTokens(csrf) {\n if (inited) {\n return;\n }\n inited = true;\n SuperTokens.init({\n appInfo: {\n apiDomain: window._domain,\n apiBasePath: '/auth',\n appName: 'webtor',\n },\n recipeList: [\n Session.init({\n preAPIHook: preAPIHook(csrf),\n }),\n Passwordless.init(),\n ],\n });\n\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar processLock_1 = require(\"./processLock\");\n/**\n * @author: SuperTokens (https://github.com/supertokens)\n * This library was created as a part of a larger project, SuperTokens(https://supertokens.io) - the best session management solution.\n * You can also check out our other projects on https://github.com/supertokens\n *\n * To contribute to this package visit https://github.com/supertokens/browser-tabs-lock\n * If you face any problems you can file an issue on https://github.com/supertokens/browser-tabs-lock/issues\n *\n * If you have any questions or if you just want to say hi visit https://supertokens.io/discord\n */\n/**\n * @constant\n * @type {string}\n * @default\n * @description All the locks taken by this package will have this as prefix\n*/\nvar LOCK_STORAGE_KEY = 'browser-tabs-lock-key';\nvar DEFAULT_STORAGE_HANDLER = {\n key: function (index) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Unsupported\");\n });\n }); },\n getItem: function (key) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Unsupported\");\n });\n }); },\n clear: function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, window.localStorage.clear()];\n });\n }); },\n removeItem: function (key) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Unsupported\");\n });\n }); },\n setItem: function (key, value) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Unsupported\");\n });\n }); },\n keySync: function (index) {\n return window.localStorage.key(index);\n },\n getItemSync: function (key) {\n return window.localStorage.getItem(key);\n },\n clearSync: function () {\n return window.localStorage.clear();\n },\n removeItemSync: function (key) {\n return window.localStorage.removeItem(key);\n },\n setItemSync: function (key, value) {\n return window.localStorage.setItem(key, value);\n },\n};\n/**\n * @function delay\n * @param {number} milliseconds - How long the delay should be in terms of milliseconds\n * @returns {Promise}\n */\nfunction delay(milliseconds) {\n return new Promise(function (resolve) { return setTimeout(resolve, milliseconds); });\n}\n/**\n * @function generateRandomString\n * @params {number} length - How long the random string should be\n * @returns {string}\n * @description returns random string whose length is equal to the length passed as parameter\n */\nfunction generateRandomString(length) {\n var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n var randomstring = '';\n for (var i = 0; i < length; i++) {\n var INDEX = Math.floor(Math.random() * CHARS.length);\n randomstring += CHARS[INDEX];\n }\n return randomstring;\n}\n/**\n * @function getLockId\n * @returns {string}\n * @description Generates an id which will be unique for the browser tab\n */\nfunction getLockId() {\n return Date.now().toString() + generateRandomString(15);\n}\nvar SuperTokensLock = /** @class */ (function () {\n function SuperTokensLock(storageHandler) {\n this.acquiredIatSet = new Set();\n this.storageHandler = undefined;\n this.id = getLockId();\n this.acquireLock = this.acquireLock.bind(this);\n this.releaseLock = this.releaseLock.bind(this);\n this.releaseLock__private__ = this.releaseLock__private__.bind(this);\n this.waitForSomethingToChange = this.waitForSomethingToChange.bind(this);\n this.refreshLockWhileAcquired = this.refreshLockWhileAcquired.bind(this);\n this.storageHandler = storageHandler;\n if (SuperTokensLock.waiters === undefined) {\n SuperTokensLock.waiters = [];\n }\n }\n /**\n * @async\n * @memberOf Lock\n * @function acquireLock\n * @param {string} lockKey - Key for which the lock is being acquired\n * @param {number} [timeout=5000] - Maximum time for which the function will wait to acquire the lock\n * @returns {Promise}\n * @description Will return true if lock is being acquired, else false.\n * Also the lock can be acquired for maximum 10 secs\n */\n SuperTokensLock.prototype.acquireLock = function (lockKey, timeout) {\n if (timeout === void 0) { timeout = 5000; }\n return __awaiter(this, void 0, void 0, function () {\n var iat, MAX_TIME, STORAGE_KEY, STORAGE, lockObj, TIMEOUT_KEY, lockObjPostDelay, parsedLockObjPostDelay;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n iat = Date.now() + generateRandomString(4);\n MAX_TIME = Date.now() + timeout;\n STORAGE_KEY = LOCK_STORAGE_KEY + \"-\" + lockKey;\n STORAGE = this.storageHandler === undefined ? DEFAULT_STORAGE_HANDLER : this.storageHandler;\n _a.label = 1;\n case 1:\n if (!(Date.now() < MAX_TIME)) return [3 /*break*/, 8];\n return [4 /*yield*/, delay(30)];\n case 2:\n _a.sent();\n lockObj = STORAGE.getItemSync(STORAGE_KEY);\n if (!(lockObj === null)) return [3 /*break*/, 5];\n TIMEOUT_KEY = this.id + \"-\" + lockKey + \"-\" + iat;\n // there is a problem if setItem happens at the exact same time for 2 different processes.. so we add some random delay here.\n return [4 /*yield*/, delay(Math.floor(Math.random() * 25))];\n case 3:\n // there is a problem if setItem happens at the exact same time for 2 different processes.. so we add some random delay here.\n _a.sent();\n STORAGE.setItemSync(STORAGE_KEY, JSON.stringify({\n id: this.id,\n iat: iat,\n timeoutKey: TIMEOUT_KEY,\n timeAcquired: Date.now(),\n timeRefreshed: Date.now()\n }));\n return [4 /*yield*/, delay(30)];\n case 4:\n _a.sent(); // this is to prevent race conditions. This time must be more than the time it takes for storage.setItem\n lockObjPostDelay = STORAGE.getItemSync(STORAGE_KEY);\n if (lockObjPostDelay !== null) {\n parsedLockObjPostDelay = JSON.parse(lockObjPostDelay);\n if (parsedLockObjPostDelay.id === this.id && parsedLockObjPostDelay.iat === iat) {\n this.acquiredIatSet.add(iat);\n this.refreshLockWhileAcquired(STORAGE_KEY, iat);\n return [2 /*return*/, true];\n }\n }\n return [3 /*break*/, 7];\n case 5:\n SuperTokensLock.lockCorrector(this.storageHandler === undefined ? DEFAULT_STORAGE_HANDLER : this.storageHandler);\n return [4 /*yield*/, this.waitForSomethingToChange(MAX_TIME)];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7:\n iat = Date.now() + generateRandomString(4);\n return [3 /*break*/, 1];\n case 8: return [2 /*return*/, false];\n }\n });\n });\n };\n SuperTokensLock.prototype.refreshLockWhileAcquired = function (storageKey, iat) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\n var STORAGE, lockObj, parsedLockObj;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, processLock_1.default().lock(iat)];\n case 1:\n _a.sent();\n if (!this.acquiredIatSet.has(iat)) {\n processLock_1.default().unlock(iat);\n return [2 /*return*/];\n }\n STORAGE = this.storageHandler === undefined ? DEFAULT_STORAGE_HANDLER : this.storageHandler;\n lockObj = STORAGE.getItemSync(storageKey);\n if (lockObj !== null) {\n parsedLockObj = JSON.parse(lockObj);\n parsedLockObj.timeRefreshed = Date.now();\n STORAGE.setItemSync(storageKey, JSON.stringify(parsedLockObj));\n processLock_1.default().unlock(iat);\n }\n else {\n processLock_1.default().unlock(iat);\n return [2 /*return*/];\n }\n this.refreshLockWhileAcquired(storageKey, iat);\n return [2 /*return*/];\n }\n });\n }); }, 1000);\n return [2 /*return*/];\n });\n });\n };\n SuperTokensLock.prototype.waitForSomethingToChange = function (MAX_TIME) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) {\n var resolvedCalled = false;\n var startedAt = Date.now();\n var MIN_TIME_TO_WAIT = 50; // ms\n var removedListeners = false;\n function stopWaiting() {\n if (!removedListeners) {\n window.removeEventListener('storage', stopWaiting);\n SuperTokensLock.removeFromWaiting(stopWaiting);\n clearTimeout(timeOutId);\n removedListeners = true;\n }\n if (!resolvedCalled) {\n resolvedCalled = true;\n var timeToWait = MIN_TIME_TO_WAIT - (Date.now() - startedAt);\n if (timeToWait > 0) {\n setTimeout(resolve, timeToWait);\n }\n else {\n resolve(null);\n }\n }\n }\n window.addEventListener('storage', stopWaiting);\n SuperTokensLock.addToWaiting(stopWaiting);\n var timeOutId = setTimeout(stopWaiting, Math.max(0, MAX_TIME - Date.now()));\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SuperTokensLock.addToWaiting = function (func) {\n this.removeFromWaiting(func);\n if (SuperTokensLock.waiters === undefined) {\n return;\n }\n SuperTokensLock.waiters.push(func);\n };\n SuperTokensLock.removeFromWaiting = function (func) {\n if (SuperTokensLock.waiters === undefined) {\n return;\n }\n SuperTokensLock.waiters = SuperTokensLock.waiters.filter(function (i) { return i !== func; });\n };\n SuperTokensLock.notifyWaiters = function () {\n if (SuperTokensLock.waiters === undefined) {\n return;\n }\n var waiters = SuperTokensLock.waiters.slice(); // so that if Lock.waiters is changed it's ok.\n waiters.forEach(function (i) { return i(); });\n };\n /**\n * @function releaseLock\n * @memberOf Lock\n * @param {string} lockKey - Key for which lock is being released\n * @returns {void}\n * @description Release a lock.\n */\n SuperTokensLock.prototype.releaseLock = function (lockKey) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.releaseLock__private__(lockKey)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * @function releaseLock\n * @memberOf Lock\n * @param {string} lockKey - Key for which lock is being released\n * @returns {void}\n * @description Release a lock.\n */\n SuperTokensLock.prototype.releaseLock__private__ = function (lockKey) {\n return __awaiter(this, void 0, void 0, function () {\n var STORAGE, STORAGE_KEY, lockObj, parsedlockObj;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n STORAGE = this.storageHandler === undefined ? DEFAULT_STORAGE_HANDLER : this.storageHandler;\n STORAGE_KEY = LOCK_STORAGE_KEY + \"-\" + lockKey;\n lockObj = STORAGE.getItemSync(STORAGE_KEY);\n if (lockObj === null) {\n return [2 /*return*/];\n }\n parsedlockObj = JSON.parse(lockObj);\n if (!(parsedlockObj.id === this.id)) return [3 /*break*/, 2];\n return [4 /*yield*/, processLock_1.default().lock(parsedlockObj.iat)];\n case 1:\n _a.sent();\n this.acquiredIatSet.delete(parsedlockObj.iat);\n STORAGE.removeItemSync(STORAGE_KEY);\n processLock_1.default().unlock(parsedlockObj.iat);\n SuperTokensLock.notifyWaiters();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @function lockCorrector\n * @returns {void}\n * @description If a lock is acquired by a tab and the tab is closed before the lock is\n * released, this function will release those locks\n */\n SuperTokensLock.lockCorrector = function (storageHandler) {\n var MIN_ALLOWED_TIME = Date.now() - 5000;\n var STORAGE = storageHandler;\n var KEYS = [];\n var currIndex = 0;\n while (true) {\n var key = STORAGE.keySync(currIndex);\n if (key === null) {\n break;\n }\n KEYS.push(key);\n currIndex++;\n }\n var notifyWaiters = false;\n for (var i = 0; i < KEYS.length; i++) {\n var LOCK_KEY = KEYS[i];\n if (LOCK_KEY.includes(LOCK_STORAGE_KEY)) {\n var lockObj = STORAGE.getItemSync(LOCK_KEY);\n if (lockObj !== null) {\n var parsedlockObj = JSON.parse(lockObj);\n if ((parsedlockObj.timeRefreshed === undefined && parsedlockObj.timeAcquired < MIN_ALLOWED_TIME) ||\n (parsedlockObj.timeRefreshed !== undefined && parsedlockObj.timeRefreshed < MIN_ALLOWED_TIME)) {\n STORAGE.removeItemSync(LOCK_KEY);\n notifyWaiters = true;\n }\n }\n }\n }\n if (notifyWaiters) {\n SuperTokensLock.notifyWaiters();\n }\n };\n SuperTokensLock.waiters = undefined;\n return SuperTokensLock;\n}());\nexports.default = SuperTokensLock;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ProcessLocking = /** @class */ (function () {\n function ProcessLocking() {\n var _this = this;\n this.locked = new Map();\n this.addToLocked = function (key, toAdd) {\n var callbacks = _this.locked.get(key);\n if (callbacks === undefined) {\n if (toAdd === undefined) {\n _this.locked.set(key, []);\n }\n else {\n _this.locked.set(key, [toAdd]);\n }\n }\n else {\n if (toAdd !== undefined) {\n callbacks.unshift(toAdd);\n _this.locked.set(key, callbacks);\n }\n }\n };\n this.isLocked = function (key) {\n return _this.locked.has(key);\n };\n this.lock = function (key) {\n return new Promise(function (resolve, reject) {\n if (_this.isLocked(key)) {\n _this.addToLocked(key, resolve);\n }\n else {\n _this.addToLocked(key);\n resolve();\n }\n });\n };\n this.unlock = function (key) {\n var callbacks = _this.locked.get(key);\n if (callbacks === undefined || callbacks.length === 0) {\n _this.locked.delete(key);\n return;\n }\n var toCall = callbacks.pop();\n _this.locked.set(key, callbacks);\n if (toCall !== undefined) {\n setTimeout(toCall, 0);\n }\n };\n }\n ProcessLocking.getInstance = function () {\n if (ProcessLocking.instance === undefined) {\n ProcessLocking.instance = new ProcessLocking();\n }\n return ProcessLocking.instance;\n };\n return ProcessLocking;\n}());\nfunction getLock() {\n return ProcessLocking.getInstance();\n}\nexports.default = getLock;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProxyObject = void 0;\nfunction getProxyObject(orig) {\n var ret = __assign(__assign({}, orig), { _call: function (_, __) {\n throw new Error(\"This function should only be called through the recipe object\");\n } });\n var keys = Object.keys(ret);\n var _loop_1 = function (k) {\n if (k !== \"_call\") {\n ret[k] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return this._call(k, args);\n };\n }\n };\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var k = keys_1[_i];\n _loop_1(k);\n }\n return ret;\n}\nexports.getProxyObject = getProxyObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OverrideableBuilder = void 0;\nvar getProxyObject_1 = require(\"./getProxyObject\");\nvar OverrideableBuilder = /** @class */ (function () {\n function OverrideableBuilder(originalImplementation) {\n this.layers = [originalImplementation];\n this.proxies = [];\n }\n OverrideableBuilder.prototype.override = function (overrideFunc) {\n var proxy = (0, getProxyObject_1.getProxyObject)(this.layers[0]);\n var layer = overrideFunc(proxy, this);\n for (var _i = 0, _a = Object.keys(this.layers[0]); _i < _a.length; _i++) {\n var key = _a[_i];\n if (layer[key] === proxy[key] || key === \"_call\") {\n delete layer[key];\n }\n else if (layer[key] === undefined) {\n layer[key] = null;\n }\n }\n this.layers.push(layer);\n this.proxies.push(proxy);\n return this;\n };\n OverrideableBuilder.prototype.build = function () {\n var _this = this;\n if (this.result) {\n return this.result;\n }\n this.result = {};\n for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n var layer = _a[_i];\n for (var _b = 0, _c = Object.keys(layer); _b < _c.length; _b++) {\n var key = _c[_b];\n var override = layer[key];\n if (override !== undefined) {\n if (override === null) {\n this.result[key] = undefined;\n }\n else if (typeof override === \"function\") {\n this.result[key] = override.bind(this.result);\n }\n else {\n this.result[key] = override;\n }\n }\n }\n }\n var _loop_1 = function (proxyInd) {\n var proxy = this_1.proxies[proxyInd];\n proxy._call = function (fname, args) {\n for (var i = proxyInd; i >= 0; --i) {\n var func = _this.layers[i][fname];\n if (func !== undefined && func !== null) {\n return func.bind(_this.result).apply(void 0, args);\n }\n }\n };\n };\n var this_1 = this;\n for (var proxyInd = 0; proxyInd < this.proxies.length; ++proxyInd) {\n _loop_1(proxyInd);\n }\n return this.result;\n };\n return OverrideableBuilder;\n}());\nexports.OverrideableBuilder = OverrideableBuilder;\nexports.default = OverrideableBuilder;\n","/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"./lib/build/\"));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SSR_ERROR = exports.DEFAULT_API_BASE_PATH = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nexports.DEFAULT_API_BASE_PATH = \"/auth\";\nexports.SSR_ERROR =\n \"\\nIf you are trying to use this method doing server-side-rendering, please make sure you move this method inside a componentDidMount method or useEffect hook.\";\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CookieHandlerReference = void 0;\nvar cookieHandler_1 = require(\"supertokens-website/utils/cookieHandler\");\nObject.defineProperty(exports, \"CookieHandlerReference\", {\n enumerable: true,\n get: function () {\n return cookieHandler_1.CookieHandlerReference;\n },\n});\n","\"use strict\";\n/* Copyright (c) 2024, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateProviderReference = void 0;\nvar dateProvider_1 = require(\"supertokens-website/utils/dateProvider\");\nObject.defineProperty(exports, \"DateProviderReference\", {\n enumerable: true,\n get: function () {\n return dateProvider_1.DateProviderReference;\n },\n});\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This error usually indicates that the API exposed by the backend SDKs responded\n * with `{status: \"GENERAL_ERROR\"}`. This should be used to show errors to the user\n * in your frontend application.\n */\nvar error_1 = require(\"supertokens-website/utils/error\");\nexports.default = error_1.STGeneralError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.init = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar supertokens_1 = require(\"./supertokens\");\nvar SuperTokensAPIWrapper = /** @class */ (function () {\n function SuperTokensAPIWrapper() {}\n SuperTokensAPIWrapper.init = function (config) {\n supertokens_1.default.init(config);\n };\n return SuperTokensAPIWrapper;\n})();\nexports.default = SuperTokensAPIWrapper;\nexports.init = SuperTokensAPIWrapper.init;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NormalisedURLDomain = /** @class */ (function () {\n function NormalisedURLDomain(url) {\n var _this = this;\n this.getAsStringDangerous = function () {\n return _this.value;\n };\n this.value = normaliseURLDomainOrThrowError(url);\n }\n return NormalisedURLDomain;\n})();\nexports.default = NormalisedURLDomain;\nfunction normaliseURLDomainOrThrowError(input, ignoreProtocol) {\n if (ignoreProtocol === void 0) {\n ignoreProtocol = false;\n }\n function isAnIpAddress(ipaddress) {\n return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(\n ipaddress\n );\n }\n input = input.trim();\n try {\n if (!input.startsWith(\"http://\") && !input.startsWith(\"https://\")) {\n throw new Error(\"Error converting to proper URL\");\n }\n var urlObj = new URL(input);\n if (ignoreProtocol) {\n if (urlObj.hostname.startsWith(\"localhost\") || isAnIpAddress(urlObj.hostname)) {\n input = \"http://\" + urlObj.host;\n } else {\n input = \"https://\" + urlObj.host;\n }\n } else {\n input = urlObj.protocol + \"//\" + urlObj.host;\n }\n return input;\n // eslint-disable-next-line no-empty\n } catch (err) {}\n if (input.startsWith(\"/\")) {\n throw new Error(\"Please provide a valid domain name\");\n }\n // not a valid URL\n if (input.indexOf(\".\") === 0) {\n input = input.substr(1);\n }\n // If the input contains a . it means they have given a domain name.\n // So we try assuming that they have given a domain name\n if (\n (input.indexOf(\".\") !== -1 || input.startsWith(\"localhost\")) &&\n !input.startsWith(\"http://\") &&\n !input.startsWith(\"https://\")\n ) {\n input = \"https://\" + input;\n // at this point, it should be a valid URL. So we test that before doing a recursive call\n try {\n new URL(input);\n return normaliseURLDomainOrThrowError(input, true);\n // eslint-disable-next-line no-empty\n } catch (err) {}\n }\n throw new Error(\"Please provide a valid domain name\");\n}\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NormalisedURLPath = /** @class */ (function () {\n function NormalisedURLPath(url) {\n var _this = this;\n this.startsWith = function (other) {\n return _this.value.startsWith(other.value);\n };\n this.appendPath = function (other) {\n return new NormalisedURLPath(_this.value + other.value);\n };\n this.getAsStringDangerous = function () {\n // Otherwise, return value.\n return _this.value;\n };\n this.value = normaliseURLPathOrThrowError(url);\n }\n return NormalisedURLPath;\n})();\nexports.default = NormalisedURLPath;\nfunction normaliseURLPathOrThrowError(input) {\n input = input.trim();\n try {\n if (!input.startsWith(\"http://\") && !input.startsWith(\"https://\")) {\n throw new Error(\"Error converting to proper URL\");\n }\n var urlObj = new URL(input);\n input = urlObj.pathname;\n if (input.charAt(input.length - 1) === \"/\") {\n return input.substr(0, input.length - 1);\n }\n return input;\n // eslint-disable-next-line no-empty\n } catch (err) {}\n // not a valid URL\n // If the input contains a . it means they have given a domain name.\n // So we try assuming that they have given a domain name + path\n if (\n (domainGiven(input) || input.startsWith(\"localhost\")) &&\n !input.startsWith(\"http://\") &&\n !input.startsWith(\"https://\")\n ) {\n input = \"http://\" + input;\n return normaliseURLPathOrThrowError(input);\n }\n if (input.charAt(0) !== \"/\") {\n input = \"/\" + input;\n }\n // at this point, we should be able to convert it into a fake URL and recursively call this function.\n try {\n // test that we can convert this to prevent an infinite loop\n new URL(\"http://example.com\" + input);\n return normaliseURLPathOrThrowError(\"http://example.com\" + input);\n } catch (err) {\n throw new Error(\"Please provide a valid URL path\");\n }\n}\nfunction domainGiven(input) {\n // If no dot, return false.\n if (input.indexOf(\".\") === -1 || input.startsWith(\"/\")) {\n return false;\n }\n try {\n var url = new URL(input);\n return url.hostname.indexOf(\".\") !== -1;\n } catch (e) {}\n try {\n var url = new URL(\"http://\" + input);\n return url.hostname.indexOf(\".\") !== -1;\n } catch (e) {}\n return false;\n}\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PostSuperTokensInitCallbacks = void 0;\nvar PostSuperTokensInitCallbacks = /** @class */ (function () {\n function PostSuperTokensInitCallbacks() {}\n PostSuperTokensInitCallbacks.addPostInitCallback = function (cb) {\n PostSuperTokensInitCallbacks.postInitCallbacks.push(cb);\n };\n PostSuperTokensInitCallbacks.runPostInitCallbacks = function () {\n for (var _i = 0, _a = PostSuperTokensInitCallbacks.postInitCallbacks; _i < _a.length; _i++) {\n var cb = _a[_i];\n cb();\n }\n };\n PostSuperTokensInitCallbacks.postInitCallbacks = [];\n return PostSuperTokensInitCallbacks;\n})();\nexports.PostSuperTokensInitCallbacks = PostSuperTokensInitCallbacks;\n","\"use strict\";\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar normalisedURLPath_1 = require(\"./normalisedURLPath\");\nvar version_1 = require(\"./version\");\nvar error_1 = require(\"./error\");\n/**\n * When network calls are made the Querier calls .clone() on the response before:\n * 1. Calling the post API hook\n * 2. Calling .json() when trying to read the body\n *\n * This is because the SDK needs to read the json body but we also want to allow users to read\n * the json body themselves (either in the post api hook or from the result of recipe functions)\n * for custom response handling. Since the body can only be read once we use .clone() to allow\n * for multiple reads.\n */\nvar Querier = /** @class */ (function () {\n function Querier(recipeId, appInfo) {\n var _this = this;\n this.recipeId = recipeId;\n this.appInfo = appInfo;\n this.get = function (tenantId, path, config, queryParams, preAPIHook, postAPIHook) {\n return __awaiter(_this, void 0, void 0, function () {\n var result, jsonBody;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [\n 4 /*yield*/,\n this.fetch(\n this.getFullUrl(tenantId, path, queryParams),\n __assign({ method: \"GET\" }, config),\n preAPIHook,\n postAPIHook\n ),\n ];\n case 1:\n result = _b.sent();\n return [4 /*yield*/, this.getResponseJsonOrThrowGeneralError(result)];\n case 2:\n jsonBody = _b.sent();\n return [\n 2 /*return*/,\n {\n jsonBody: jsonBody,\n fetchResponse: result,\n },\n ];\n }\n });\n });\n };\n this.post = function (tenantId, path, config, preAPIHook, postAPIHook) {\n return __awaiter(_this, void 0, void 0, function () {\n var result, jsonBody;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (config.body === undefined) {\n throw new Error(\"Post request must have a body\");\n }\n return [\n 4 /*yield*/,\n this.fetch(\n this.getFullUrl(tenantId, path),\n __assign({ method: \"POST\" }, config),\n preAPIHook,\n postAPIHook\n ),\n ];\n case 1:\n result = _b.sent();\n return [4 /*yield*/, this.getResponseJsonOrThrowGeneralError(result)];\n case 2:\n jsonBody = _b.sent();\n return [\n 2 /*return*/,\n {\n jsonBody: jsonBody,\n fetchResponse: result,\n },\n ];\n }\n });\n });\n };\n this.delete = function (tenantId, path, config, preAPIHook, postAPIHook) {\n return __awaiter(_this, void 0, void 0, function () {\n var result, jsonBody;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [\n 4 /*yield*/,\n this.fetch(\n this.getFullUrl(tenantId, path),\n __assign({ method: \"DELETE\" }, config),\n preAPIHook,\n postAPIHook\n ),\n ];\n case 1:\n result = _b.sent();\n return [4 /*yield*/, this.getResponseJsonOrThrowGeneralError(result)];\n case 2:\n jsonBody = _b.sent();\n return [\n 2 /*return*/,\n {\n jsonBody: jsonBody,\n fetchResponse: result,\n },\n ];\n }\n });\n });\n };\n this.put = function (tenantId, path, config, preAPIHook, postAPIHook) {\n return __awaiter(_this, void 0, void 0, function () {\n var result, jsonBody;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [\n 4 /*yield*/,\n this.fetch(\n this.getFullUrl(tenantId, path),\n __assign({ method: \"PUT\" }, config),\n preAPIHook,\n postAPIHook\n ),\n ];\n case 1:\n result = _b.sent();\n return [4 /*yield*/, this.getResponseJsonOrThrowGeneralError(result)];\n case 2:\n jsonBody = _b.sent();\n return [\n 2 /*return*/,\n {\n jsonBody: jsonBody,\n fetchResponse: result,\n },\n ];\n }\n });\n });\n };\n this.fetch = function (url, config, preAPIHook, postAPIHook) {\n return __awaiter(_this, void 0, void 0, function () {\n var headers, _b, requestInit, modifiedUrl, result, reponseForPostAPI;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (config === undefined) {\n headers = {};\n } else {\n headers = config.headers;\n }\n return [\n 4 /*yield*/,\n this.callPreAPIHook({\n preAPIHook: preAPIHook,\n url: url,\n requestInit: __assign(__assign({}, config), {\n headers: __assign(__assign({}, headers), {\n \"fdi-version\": version_1.supported_fdi.join(\",\"),\n \"Content-Type\": \"application/json\",\n rid: this.recipeId,\n }),\n }),\n }),\n ];\n case 1:\n (_b = _c.sent()), (requestInit = _b.requestInit), (modifiedUrl = _b.url);\n return [4 /*yield*/, fetch(modifiedUrl, requestInit)];\n case 2:\n result = _c.sent();\n if (result.status >= 300) {\n throw result;\n }\n if (!(postAPIHook !== undefined)) return [3 /*break*/, 4];\n reponseForPostAPI = result.clone();\n return [\n 4 /*yield*/,\n postAPIHook({\n requestInit: requestInit,\n url: url,\n fetchResponse: reponseForPostAPI,\n }),\n ];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n return [2 /*return*/, result];\n }\n });\n });\n };\n /*\n * For backward compatibility\n */\n this.callPreAPIHook = function (context) {\n return __awaiter(_this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (context.preAPIHook === undefined) {\n return [\n 2 /*return*/,\n {\n url: context.url,\n requestInit: context.requestInit,\n },\n ];\n }\n return [\n 4 /*yield*/,\n context.preAPIHook({\n url: context.url,\n requestInit: context.requestInit,\n }),\n ];\n case 1:\n result = _b.sent();\n return [2 /*return*/, result];\n }\n });\n });\n };\n this.getFullUrl = function (tenantId, pathStr, queryParams) {\n var basePath = _this.appInfo.apiBasePath.getAsStringDangerous();\n if (tenantId !== undefined && tenantId !== \"public\") {\n basePath = \"\".concat(basePath, \"/\").concat(tenantId);\n }\n var path = new normalisedURLPath_1.default(pathStr);\n var fullUrl = \"\"\n .concat(_this.appInfo.apiDomain.getAsStringDangerous())\n .concat(basePath)\n .concat(path.getAsStringDangerous());\n if (queryParams === undefined) {\n return fullUrl;\n }\n // If query params, add.\n return fullUrl + \"?\" + new URLSearchParams(queryParams);\n };\n this.getResponseJsonOrThrowGeneralError = function (response) {\n return __awaiter(_this, void 0, void 0, function () {\n var json, message;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4 /*yield*/, response.clone().json()];\n case 1:\n json = _b.sent();\n if (json.status === \"GENERAL_ERROR\") {\n message = json.message === undefined ? \"No Error Message Provided\" : json.message;\n throw new error_1.default(message);\n }\n return [2 /*return*/, json];\n }\n });\n });\n };\n }\n var _a;\n _a = Querier;\n Querier.preparePreAPIHook = function (_b) {\n var recipePreAPIHook = _b.recipePreAPIHook,\n action = _b.action,\n options = _b.options,\n userContext = _b.userContext;\n return function (context) {\n return __awaiter(void 0, void 0, void 0, function () {\n var postRecipeHookContext;\n return __generator(_a, function (_b) {\n switch (_b.label) {\n case 0:\n return [\n 4 /*yield*/,\n recipePreAPIHook(\n __assign(__assign({}, context), { action: action, userContext: userContext })\n ),\n ];\n case 1:\n postRecipeHookContext = _b.sent();\n if (options === undefined || options.preAPIHook === undefined) {\n return [2 /*return*/, postRecipeHookContext];\n }\n return [\n 2 /*return*/,\n options.preAPIHook({\n url: postRecipeHookContext.url,\n requestInit: postRecipeHookContext.requestInit,\n userContext: userContext,\n }),\n ];\n }\n });\n });\n };\n };\n Querier.preparePostAPIHook = function (_b) {\n var recipePostAPIHook = _b.recipePostAPIHook,\n action = _b.action,\n userContext = _b.userContext;\n return function (context) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(_a, function (_b) {\n switch (_b.label) {\n case 0:\n return [\n 4 /*yield*/,\n recipePostAPIHook(\n __assign(__assign({}, context), { userContext: userContext, action: action })\n ),\n ];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n };\n return Querier;\n})();\nexports.default = Querier;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __extends =\n (this && this.__extends) ||\n (function () {\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b;\n }) ||\n function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n })();\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar recipeModule_1 = require(\"../recipeModule\");\nvar recipe_1 = require(\"../session/recipe\");\nvar AuthRecipe = /** @class */ (function (_super) {\n __extends(AuthRecipe, _super);\n function AuthRecipe(config) {\n var _this = _super.call(this, config) || this;\n _this.signOut = function (input) {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [\n 4 /*yield*/,\n recipe_1.default.getInstanceOrThrow().signOut({\n userContext: input.userContext,\n }),\n ];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n return _this;\n }\n return AuthRecipe;\n})(recipeModule_1.default);\nexports.default = AuthRecipe;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normaliseAuthRecipe = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar utils_1 = require(\"../recipeModule/utils\");\nfunction normaliseAuthRecipe(config) {\n return (0, utils_1.normaliseRecipeModuleConfig)(config);\n}\nexports.normaliseAuthRecipe = normaliseAuthRecipe;\n","\"use strict\";\n/* Copyright (c) 2024, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMAILVERIFICATION_CLAIM_ID = void 0;\nexports.EMAILVERIFICATION_CLAIM_ID = \"st-ev\";\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __extends =\n (this && this.__extends) ||\n (function () {\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b;\n }) ||\n function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n })();\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Recipe = void 0;\nvar utils_1 = require(\"./utils\");\nvar supertokens_js_override_1 = require(\"supertokens-js-override\");\nvar recipeImplementation_1 = require(\"./recipeImplementation\");\nvar utils_2 = require(\"../../utils\");\nvar authRecipe_1 = require(\"../authRecipe\");\nvar Recipe = /** @class */ (function (_super) {\n __extends(Recipe, _super);\n function Recipe(config) {\n var _this = _super.call(this, (0, utils_1.normaliseUserInput)(config)) || this;\n var builder = new supertokens_js_override_1.default(\n (0, recipeImplementation_1.default)({\n recipeId: _this.config.recipeId,\n appInfo: _this.config.appInfo,\n clientType: _this.config.clientType,\n preAPIHook: _this.config.preAPIHook,\n postAPIHook: _this.config.postAPIHook,\n })\n );\n _this.recipeImplementation = builder.override(_this.config.override.functions).build();\n return _this;\n }\n Recipe.init = function (config) {\n return function (appInfo, clientType) {\n Recipe.instance = new Recipe(\n __assign(__assign({}, config), { recipeId: Recipe.RECIPE_ID, appInfo: appInfo, clientType: clientType })\n );\n return Recipe.instance;\n };\n };\n Recipe.getInstanceOrThrow = function () {\n if (Recipe.instance === undefined) {\n var error = \"No instance of Multitenancy found. Ensure that 'SuperTokens.init' method has been called.\";\n error = (0, utils_2.checkForSSRErrorAndAppendIfNeeded)(error);\n throw Error(error);\n }\n return Recipe.instance;\n };\n Recipe.reset = function () {\n if (!(0, utils_2.isTest)()) {\n return;\n }\n Recipe.instance = undefined;\n return;\n };\n Recipe.RECIPE_ID = \"multitenancy\";\n return Recipe;\n})(authRecipe_1.default);\nexports.Recipe = Recipe;\nexports.default = Recipe;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRecipeImplementation = void 0;\nvar querier_1 = require(\"../../querier\");\nvar utils_1 = require(\"../../utils\");\nfunction getRecipeImplementation(recipeImplInput) {\n var querier = new querier_1.default(recipeImplInput.recipeId, recipeImplInput.appInfo);\n return {\n getTenantId: function () {\n var queryParam = (0, utils_1.getQueryParams)(\"tenantId\");\n if ((queryParam === null || queryParam === void 0 ? void 0 : queryParam.trim()) === \"\") {\n return undefined; // This defaults to the \"public\" tenant\n }\n return queryParam;\n },\n getLoginMethods: function (_a) {\n var tenantId = _a.tenantId,\n options = _a.options,\n userContext = _a.userContext;\n return __awaiter(this, void 0, void 0, function () {\n var queryParams, _b, jsonBody, fetchResponse, firstFactors;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n queryParams = {};\n if (recipeImplInput.clientType !== undefined) {\n queryParams.clientType = recipeImplInput.clientType;\n }\n return [\n 4 /*yield*/,\n querier.get(\n tenantId,\n \"/loginmethods\",\n {},\n queryParams,\n querier_1.default.preparePreAPIHook({\n recipePreAPIHook: recipeImplInput.preAPIHook,\n action: \"GET_LOGIN_METHODS\",\n options: options,\n userContext: userContext,\n }),\n querier_1.default.preparePostAPIHook({\n recipePostAPIHook: recipeImplInput.postAPIHook,\n action: \"GET_LOGIN_METHODS\",\n userContext: userContext,\n })\n ),\n ];\n case 1:\n (_b = _c.sent()), (jsonBody = _b.jsonBody), (fetchResponse = _b.fetchResponse);\n if (jsonBody.firstFactors === undefined) {\n firstFactors = [];\n if (jsonBody.emailPassword.enabled) {\n firstFactors.push(\"emailpassword\");\n }\n if (jsonBody.thirdParty.enabled) {\n firstFactors.push(\"thirdparty\");\n }\n if (jsonBody.passwordless.enabled) {\n firstFactors.push(\"otp-email\");\n firstFactors.push(\"otp-phone\");\n firstFactors.push(\"link-email\");\n firstFactors.push(\"link-phone\");\n }\n } else {\n firstFactors = jsonBody.firstFactors;\n }\n return [\n 2 /*return*/,\n {\n status: \"OK\",\n thirdParty: {\n providers: jsonBody.thirdParty.providers,\n },\n firstFactors: firstFactors,\n fetchResponse: fetchResponse,\n },\n ];\n }\n });\n });\n },\n };\n}\nexports.default = getRecipeImplementation;\nexports.getRecipeImplementation = getRecipeImplementation;\n","\"use strict\";\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normaliseUserInput = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar utils_1 = require(\"../authRecipe/utils\");\nfunction normaliseUserInput(config) {\n var override = __assign(\n {\n functions: function (originalImplementation) {\n return originalImplementation;\n },\n },\n config.override\n );\n return __assign(__assign({}, (0, utils_1.normaliseAuthRecipe)(config)), { override: override });\n}\nexports.normaliseUserInput = normaliseUserInput;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PASSWORDLESS_LOGIN_ATTEMPT_INFO_STORAGE_KEY = void 0;\nexports.PASSWORDLESS_LOGIN_ATTEMPT_INFO_STORAGE_KEY = \"supertokens-passwordless-loginAttemptInfo\";\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clearLoginAttemptInfo =\n exports.setLoginAttemptInfo =\n exports.getLoginAttemptInfo =\n exports.getTenantIdFromURL =\n exports.getPreAuthSessionIdFromURL =\n exports.getLinkCodeFromURL =\n exports.signOut =\n exports.doesPhoneNumberExist =\n exports.doesEmailExist =\n exports.consumeCode =\n exports.resendCode =\n exports.createCode =\n exports.init =\n void 0;\nvar utils_1 = require(\"../../utils\");\nvar recipe_1 = require(\"../multitenancy/recipe\");\nvar recipe_2 = require(\"./recipe\");\nvar RecipeWrapper = /** @class */ (function () {\n function RecipeWrapper() {}\n RecipeWrapper.init = function (config) {\n return recipe_2.default.init(config);\n };\n /**\n * Create and send a code to the user for passwordless auth\n *\n * @param email Email of the user, ignored if `phoneNumber` is provided\n *\n * @param phoneNumber Phone number of the user\n *\n * @param shouldTryLinkingWithSessionUser (OPTIONAL) Whether the backend should try to link the user to the session user\n *\n * @param userContext (OPTIONAL) Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @param options (OPTIONAL) Use this to configure additional properties (for example pre api hooks)\n *\n * @returns `{status: \"OK\", deviceId, preAuthSessionId, flowType}` If successful\n *\n * @throws STGeneralError if the API exposed by the backend SDKs returns `status: \"GENERAL_ERROR\"`\n */\n RecipeWrapper.createCode = function (input) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var recipe, recipeImplementation, normalisedUserContext, tenantId, createCodeResponse;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n recipe = recipe_2.default.getInstanceOrThrow();\n recipeImplementation = recipe.recipeImplementation;\n normalisedUserContext = (0, utils_1.getNormalisedUserContext)(input.userContext);\n return [\n 4 /*yield*/,\n recipe_1.default.getInstanceOrThrow().recipeImplementation.getTenantId({\n userContext: input.userContext,\n }),\n ];\n case 1:\n tenantId = _c.sent();\n return [\n 4 /*yield*/,\n recipeImplementation.createCode(\n __assign(__assign({}, input), {\n shouldTryLinkingWithSessionUser:\n (_a = input.shouldTryLinkingWithSessionUser) !== null && _a !== void 0\n ? _a\n : false,\n userContext: normalisedUserContext,\n })\n ),\n ];\n case 2:\n createCodeResponse = _c.sent();\n if (!(createCodeResponse.status === \"OK\")) return [3 /*break*/, 4];\n return [\n 4 /*yield*/,\n recipeImplementation.setLoginAttemptInfo({\n attemptInfo: {\n tenantId: tenantId,\n deviceId: createCodeResponse.deviceId,\n preAuthSessionId: createCodeResponse.preAuthSessionId,\n shouldTryLinkingWithSessionUser:\n (_b = input.shouldTryLinkingWithSessionUser) !== null && _b !== void 0\n ? _b\n : false,\n flowType: createCodeResponse.flowType,\n },\n userContext: normalisedUserContext,\n }),\n ];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n return [2 /*return*/, createCodeResponse];\n }\n });\n });\n };\n /**\n * Resend the code to the user\n *\n * @param deviceId The device if from the reponse of `createCode`\n *\n * @param preAuthSessionId The id from the response of `createCode`\n *\n * @param userContext (OPTIONAL) Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @param options (OPTIONAL) Use this to configure additional properties (for example pre api hooks)\n *\n * @returns `{status: \"OK\"}` if succesful\n *\n * @returns `{status: \"RESTART_FLOW_ERROR\"}` if the auth flow should be restarted\n *\n * @throws STGeneralError if the API exposed by the backend SDKs returns `status: \"GENERAL_ERROR\"`\n */\n RecipeWrapper.resendCode = function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var recipe, recipeImplementation, normalisedUserContext, previousAttemptInfo;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n recipe = recipe_2.default.getInstanceOrThrow();\n recipeImplementation = recipe.recipeImplementation;\n normalisedUserContext = (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n );\n return [\n 4 /*yield*/,\n recipeImplementation.getLoginAttemptInfo({\n userContext: normalisedUserContext,\n }),\n ];\n case 1:\n previousAttemptInfo = _a.sent();\n /**\n * If previousAttemptInfo is undefined then local storage was probably cleared by another tab.\n * In this case we use empty strings when calling the API because we want to\n * return \"RESTART_FLOW_ERROR\"\n */\n return [\n 2 /*return*/,\n recipeImplementation.resendCode(\n __assign(__assign({}, input), {\n tenantId:\n previousAttemptInfo === null || previousAttemptInfo === void 0\n ? void 0\n : previousAttemptInfo.tenantId,\n userContext: normalisedUserContext,\n deviceId: previousAttemptInfo === undefined ? \"\" : previousAttemptInfo.deviceId,\n preAuthSessionId:\n previousAttemptInfo === undefined ? \"\" : previousAttemptInfo.preAuthSessionId,\n shouldTryLinkingWithSessionUser:\n previousAttemptInfo === null || previousAttemptInfo === void 0\n ? void 0\n : previousAttemptInfo.shouldTryLinkingWithSessionUser,\n })\n ),\n ];\n }\n });\n });\n };\n /**\n * Log the user in using the input code or link code\n *\n * @param userInputCode Code that the user inputs\n *\n * @param deviceId The device if from the reponse of `createCode`. (Not required when using `linkCode`)\n *\n * @param preAuthSessionId The id from the response of `createCode`.\n *\n * @param linkCode The code from the URL to use when logging the user in. Ignored if `userInputCode` is provided\n *\n * @param userContext (OPTIONAL) Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @param options (OPTIONAL) Use this to configure additional properties (for example pre api hooks)\n *\n * @returns `{status: \"OK\", user, createdNewRecipeUser: bool}` if succesful\n *\n * @returns `{status: \"INCORRECT_USER_INPUT_CODE_ERROR\", failedCodeInputAttemptCount, maximumCodeInputAttempts}` if the code is incorrect\n *\n * @returns `{status: \"EXPIRED_USER_INPUT_CODE_ERROR\", failedCodeInputAttemptCount, maximumCodeInputAttempts}` if the code is expired\n *\n * @returns `{status: \"RESTART_FLOW_ERROR\"}` if the auth flow should be restarted\n * @returns `{status: \"SIGN_IN_UP_NOT_ALLOWED\", reason: string}` if sign in or up is not allowed because of account-linking conflicts\n *\n * @throws STGeneralError if the API exposed by the backend SDKs returns `status: \"GENERAL_ERROR\"`\n */\n RecipeWrapper.consumeCode = function (input) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var recipe,\n recipeImplementation,\n userContext,\n additionalParams,\n attemptInfoFromStorage,\n shouldTryLinkingWithSessionUser,\n shouldTryLinkingWithSessionUser,\n linkCode,\n tenantId,\n preAuthSessionId;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n recipe = recipe_2.default.getInstanceOrThrow();\n recipeImplementation = recipe.recipeImplementation;\n userContext = (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n );\n if (!(input !== undefined && \"userInputCode\" in input)) return [3 /*break*/, 2];\n return [\n 4 /*yield*/,\n recipeImplementation.getLoginAttemptInfo({\n userContext: userContext,\n }),\n ];\n case 1:\n attemptInfoFromStorage = _b.sent();\n shouldTryLinkingWithSessionUser =\n (_a =\n attemptInfoFromStorage === null || attemptInfoFromStorage === void 0\n ? void 0\n : attemptInfoFromStorage.shouldTryLinkingWithSessionUser) !== null && _a !== void 0\n ? _a\n : false;\n additionalParams = {\n userInputCode: input.userInputCode,\n deviceId: attemptInfoFromStorage === undefined ? \"\" : attemptInfoFromStorage.deviceId,\n preAuthSessionId:\n attemptInfoFromStorage === undefined ? \"\" : attemptInfoFromStorage.preAuthSessionId,\n shouldTryLinkingWithSessionUser: shouldTryLinkingWithSessionUser,\n tenantId:\n attemptInfoFromStorage === null || attemptInfoFromStorage === void 0\n ? void 0\n : attemptInfoFromStorage.tenantId,\n };\n return [3 /*break*/, 3];\n case 2:\n shouldTryLinkingWithSessionUser = false;\n linkCode = recipeImplementation.getLinkCodeFromURL({\n userContext: userContext,\n });\n tenantId = recipeImplementation.getTenantIdFromURL({\n userContext: userContext,\n });\n preAuthSessionId = recipeImplementation.getPreAuthSessionIdFromURL({\n userContext: userContext,\n });\n additionalParams = {\n tenantId: tenantId,\n linkCode: linkCode,\n preAuthSessionId: preAuthSessionId,\n shouldTryLinkingWithSessionUser: shouldTryLinkingWithSessionUser,\n };\n _b.label = 3;\n case 3:\n return [\n 2 /*return*/,\n recipeImplementation.consumeCode(\n __assign(\n {\n userContext: userContext,\n options: input === null || input === void 0 ? void 0 : input.options,\n },\n additionalParams\n )\n ),\n ];\n }\n });\n });\n };\n /**\n * Reads and returns the link code from the current URL\n *\n * @param userContext Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @returns The hash (#) property of the current URL\n */\n RecipeWrapper.getLinkCodeFromURL = function (input) {\n return recipe_2.default.getInstanceOrThrow().recipeImplementation.getLinkCodeFromURL(\n __assign(__assign({}, input), {\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n })\n );\n };\n /**\n * Reads and returns the pre auth session id from the current URL\n *\n * @param userContext Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @returns The \"preAuthSessionId\" query parameter from the current URL\n */\n RecipeWrapper.getPreAuthSessionIdFromURL = function (input) {\n return recipe_2.default.getInstanceOrThrow().recipeImplementation.getPreAuthSessionIdFromURL(\n __assign(__assign({}, input), {\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n })\n );\n };\n /**\n * Reads and returns the tenant id from the current URL\n *\n * @param userContext Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @returns The \"tenantId\" query parameter from the current location\n */\n RecipeWrapper.getTenantIdFromURL = function (input) {\n return recipe_2.default.getInstanceOrThrow().recipeImplementation.getTenantIdFromURL(\n __assign(__assign({}, input), {\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n })\n );\n };\n /**\n * Check if a user with the given email exists\n *\n * @param email Email to check\n *\n * @param userContext (OPTIONAL) Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @param options (OPTIONAL) Use this to configure additional properties (for example pre api hooks)\n *\n * @returns `{status: \"OK\", doesExist: boolean}`\n *\n * @throws STGeneralError if the API exposed by the backend SDKs returns `status: \"GENERAL_ERROR\"`\n */\n RecipeWrapper.doesEmailExist = function (input) {\n return recipe_2.default\n .getInstanceOrThrow()\n .recipeImplementation.doesEmailExist(\n __assign(__assign({}, input), { userContext: (0, utils_1.getNormalisedUserContext)(input.userContext) })\n );\n };\n /**\n * Check if a user with the given phone number exists\n *\n * @param phoneNumber Phone number to check\n *\n * @param userContext (OPTIONAL) Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @param options (OPTIONAL) Use this to configure additional properties (for example pre api hooks)\n *\n * @returns `{status: \"OK\", doesExist: boolean}`\n *\n * @throws STGeneralError if the API exposed by the backend SDKs returns `status: \"GENERAL_ERROR\"`\n */\n RecipeWrapper.doesPhoneNumberExist = function (input) {\n return recipe_2.default\n .getInstanceOrThrow()\n .recipeImplementation.doesPhoneNumberExist(\n __assign(__assign({}, input), { userContext: (0, utils_1.getNormalisedUserContext)(input.userContext) })\n );\n };\n /**\n * Get information about the current login attempt from storage\n *\n * @param userContext Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n *\n * @returns `{deviceId, preAuthSessionId, flowType}` if present, returns undefined otherwise\n */\n RecipeWrapper.getLoginAttemptInfo = function (input) {\n return recipe_2.default.getInstanceOrThrow().recipeImplementation.getLoginAttemptInfo(\n __assign(__assign({}, input), {\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n })\n );\n };\n /**\n * Set information about the current login attempt to storage\n *\n * @param userContext Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n */\n RecipeWrapper.setLoginAttemptInfo = function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var userContext, recipe, tenantId;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n userContext = (0, utils_1.getNormalisedUserContext)(input.userContext);\n recipe = recipe_2.default.getInstanceOrThrow();\n return [\n 4 /*yield*/,\n recipe_1.default\n .getInstanceOrThrow()\n .recipeImplementation.getTenantId({ userContext: userContext }),\n ];\n case 1:\n tenantId = _a.sent();\n return [\n 2 /*return*/,\n recipe.recipeImplementation.setLoginAttemptInfo({\n attemptInfo: __assign(\n {\n tenantId: tenantId,\n shouldTryLinkingWithSessionUser:\n input.attemptInfo.shouldTryLinkingWithSessionUser,\n },\n input.attemptInfo\n ),\n userContext: userContext,\n }),\n ];\n }\n });\n });\n };\n /**\n * Clear any information about login attempts from storage\n *\n * @param userContext Refer to {@link https://supertokens.com/docs/passwordless/advanced-customizations/user-context the documentation}\n */\n RecipeWrapper.clearLoginAttemptInfo = function (input) {\n return recipe_2.default.getInstanceOrThrow().recipeImplementation.clearLoginAttemptInfo(\n __assign(__assign({}, input), {\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n })\n );\n };\n RecipeWrapper.signOut = function (input) {\n return recipe_2.default.getInstanceOrThrow().signOut({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n return RecipeWrapper;\n})();\nexports.default = RecipeWrapper;\nvar init = RecipeWrapper.init;\nexports.init = init;\nvar createCode = RecipeWrapper.createCode;\nexports.createCode = createCode;\nvar resendCode = RecipeWrapper.resendCode;\nexports.resendCode = resendCode;\nvar consumeCode = RecipeWrapper.consumeCode;\nexports.consumeCode = consumeCode;\nvar doesEmailExist = RecipeWrapper.doesEmailExist;\nexports.doesEmailExist = doesEmailExist;\nvar doesPhoneNumberExist = RecipeWrapper.doesPhoneNumberExist;\nexports.doesPhoneNumberExist = doesPhoneNumberExist;\nvar signOut = RecipeWrapper.signOut;\nexports.signOut = signOut;\nvar getLinkCodeFromURL = RecipeWrapper.getLinkCodeFromURL;\nexports.getLinkCodeFromURL = getLinkCodeFromURL;\nvar getPreAuthSessionIdFromURL = RecipeWrapper.getPreAuthSessionIdFromURL;\nexports.getPreAuthSessionIdFromURL = getPreAuthSessionIdFromURL;\nvar getTenantIdFromURL = RecipeWrapper.getTenantIdFromURL;\nexports.getTenantIdFromURL = getTenantIdFromURL;\nvar getLoginAttemptInfo = RecipeWrapper.getLoginAttemptInfo;\nexports.getLoginAttemptInfo = getLoginAttemptInfo;\nvar setLoginAttemptInfo = RecipeWrapper.setLoginAttemptInfo;\nexports.setLoginAttemptInfo = setLoginAttemptInfo;\nvar clearLoginAttemptInfo = RecipeWrapper.clearLoginAttemptInfo;\nexports.clearLoginAttemptInfo = clearLoginAttemptInfo;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __extends =\n (this && this.__extends) ||\n (function () {\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b;\n }) ||\n function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n })();\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Recipe = void 0;\nvar supertokens_js_override_1 = require(\"supertokens-js-override\");\nvar utils_1 = require(\"../../utils\");\nvar authRecipe_1 = require(\"../authRecipe\");\nvar utils_2 = require(\"./utils\");\nvar recipeImplementation_1 = require(\"./recipeImplementation\");\nvar Recipe = /** @class */ (function (_super) {\n __extends(Recipe, _super);\n function Recipe(config) {\n var _this = _super.call(this, (0, utils_2.normaliseUserInput)(config)) || this;\n var builder = new supertokens_js_override_1.default(\n (0, recipeImplementation_1.default)({\n recipeId: _this.config.recipeId,\n appInfo: _this.config.appInfo,\n clientType: _this.config.clientType,\n preAPIHook: _this.config.preAPIHook,\n postAPIHook: _this.config.postAPIHook,\n })\n );\n _this.recipeImplementation = builder.override(_this.config.override.functions).build();\n return _this;\n }\n Recipe.init = function (config) {\n return function (appInfo, clientType) {\n Recipe.instance = new Recipe(\n __assign(__assign({}, config), { recipeId: Recipe.RECIPE_ID, appInfo: appInfo, clientType: clientType })\n );\n return Recipe.instance;\n };\n };\n Recipe.getInstanceOrThrow = function () {\n if (Recipe.instance === undefined) {\n var error =\n \"No instance of Passwordless found. Ensure that the 'Passwordless.init' method is called within the 'SuperTokens.init' recipeList.\";\n error = (0, utils_1.checkForSSRErrorAndAppendIfNeeded)(error);\n throw Error(error);\n }\n return Recipe.instance;\n };\n Recipe.reset = function () {\n if (!(0, utils_1.isTest)()) {\n return;\n }\n Recipe.instance = undefined;\n return;\n };\n Recipe.RECIPE_ID = \"passwordless\";\n return Recipe;\n})(authRecipe_1.default);\nexports.Recipe = Recipe;\nexports.default = Recipe;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRecipeImplementation = void 0;\nvar windowHandler_1 = require(\"../../windowHandler\");\nvar querier_1 = require(\"../../querier\");\nvar utils_1 = require(\"../../utils\");\nvar recipe_1 = require(\"../multitenancy/recipe\");\nvar constants_1 = require(\"./constants\");\nfunction getRecipeImplementation(recipeImplInput) {\n var querier = new querier_1.default(recipeImplInput.recipeId, recipeImplInput.appInfo);\n return {\n createCode: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var bodyObj, _a, jsonBody, fetchResponse, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (\"email\" in input) {\n bodyObj = {\n email: input.email,\n shouldTryLinkingWithSessionUser: input.shouldTryLinkingWithSessionUser,\n };\n }\n if (\"phoneNumber\" in input) {\n bodyObj = {\n phoneNumber: input.phoneNumber,\n shouldTryLinkingWithSessionUser: input.shouldTryLinkingWithSessionUser,\n };\n }\n _c = (_b = querier).post;\n return [\n 4 /*yield*/,\n recipe_1.default.getInstanceOrThrow().recipeImplementation.getTenantId({\n userContext: input.userContext,\n }),\n ];\n case 1:\n return [\n 4 /*yield*/,\n _c.apply(_b, [\n _d.sent(),\n \"/signinup/code\",\n { body: JSON.stringify(bodyObj) },\n querier_1.default.preparePreAPIHook({\n recipePreAPIHook: recipeImplInput.preAPIHook,\n action: \"PASSWORDLESS_CREATE_CODE\",\n userContext: input.userContext,\n options: input.options,\n }),\n querier_1.default.preparePostAPIHook({\n recipePostAPIHook: recipeImplInput.postAPIHook,\n action: \"PASSWORDLESS_CREATE_CODE\",\n userContext: input.userContext,\n }),\n ]),\n ];\n case 2:\n (_a = _d.sent()), (jsonBody = _a.jsonBody), (fetchResponse = _a.fetchResponse);\n return [2 /*return*/, __assign(__assign({}, jsonBody), { fetchResponse: fetchResponse })];\n }\n });\n });\n },\n resendCode: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var bodyObj, _a, jsonBody, fetchResponse;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n bodyObj = {\n deviceId: input.deviceId,\n preAuthSessionId: input.preAuthSessionId,\n shouldTryLinkingWithSessionUser: input.shouldTryLinkingWithSessionUser,\n };\n return [\n 4 /*yield*/,\n querier.post(\n input.tenantId,\n \"/signinup/code/resend\",\n { body: JSON.stringify(bodyObj) },\n querier_1.default.preparePreAPIHook({\n recipePreAPIHook: recipeImplInput.preAPIHook,\n action: \"PASSWORDLESS_RESEND_CODE\",\n userContext: input.userContext,\n options: input.options,\n }),\n querier_1.default.preparePostAPIHook({\n recipePostAPIHook: recipeImplInput.postAPIHook,\n action: \"PASSWORDLESS_RESEND_CODE\",\n userContext: input.userContext,\n })\n ),\n ];\n case 1:\n (_a = _b.sent()), (jsonBody = _a.jsonBody), (fetchResponse = _a.fetchResponse);\n return [\n 2 /*return*/,\n {\n status: jsonBody.status,\n fetchResponse: fetchResponse,\n },\n ];\n }\n });\n });\n },\n consumeCode: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var bodyObj, _a, jsonBody, fetchResponse;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (\"userInputCode\" in input) {\n bodyObj = {\n userInputCode: input.userInputCode,\n deviceId: input.deviceId,\n preAuthSessionId: input.preAuthSessionId,\n shouldTryLinkingWithSessionUser: input.shouldTryLinkingWithSessionUser,\n };\n } else {\n bodyObj = {\n linkCode: input.linkCode,\n preAuthSessionId: input.preAuthSessionId,\n shouldTryLinkingWithSessionUser: input.shouldTryLinkingWithSessionUser,\n };\n }\n return [\n 4 /*yield*/,\n querier.post(\n input.tenantId,\n \"/signinup/code/consume\",\n { body: JSON.stringify(bodyObj) },\n querier_1.default.preparePreAPIHook({\n recipePreAPIHook: recipeImplInput.preAPIHook,\n action: \"PASSWORDLESS_CONSUME_CODE\",\n userContext: input.userContext,\n options: input.options,\n }),\n querier_1.default.preparePostAPIHook({\n recipePostAPIHook: recipeImplInput.postAPIHook,\n action: \"PASSWORDLESS_CONSUME_CODE\",\n userContext: input.userContext,\n })\n ),\n ];\n case 1:\n (_a = _b.sent()), (jsonBody = _a.jsonBody), (fetchResponse = _a.fetchResponse);\n if (jsonBody.status !== \"OK\") {\n return [\n 2 /*return*/,\n __assign(__assign({}, jsonBody), { fetchResponse: fetchResponse }),\n ];\n }\n return [\n 2 /*return*/,\n __assign(\n __assign(\n { status: \"OK\" },\n (0, utils_1.normaliseUserResponse)(\"passwordless\", jsonBody)\n ),\n { fetchResponse: fetchResponse }\n ),\n ];\n }\n });\n });\n },\n getTenantIdFromURL: function () {\n return (0, utils_1.getQueryParams)(\"tenantId\");\n },\n getLinkCodeFromURL: function () {\n return (0, utils_1.getHashFromLocation)();\n },\n getPreAuthSessionIdFromURL: function () {\n var idFromQuery = (0, utils_1.getQueryParams)(\"preAuthSessionId\");\n if (idFromQuery === undefined) {\n return \"\";\n }\n return idFromQuery;\n },\n doesEmailExist: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, jsonBody, fetchResponse, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _c = (_b = querier).get;\n return [\n 4 /*yield*/,\n recipe_1.default.getInstanceOrThrow().recipeImplementation.getTenantId({\n userContext: input.userContext,\n }),\n ];\n case 1:\n return [\n 4 /*yield*/,\n _c.apply(_b, [\n _d.sent(),\n \"/passwordless/email/exists\",\n {},\n { email: input.email },\n querier_1.default.preparePreAPIHook({\n recipePreAPIHook: recipeImplInput.preAPIHook,\n action: \"EMAIL_EXISTS\",\n userContext: input.userContext,\n options: input.options,\n }),\n querier_1.default.preparePostAPIHook({\n recipePostAPIHook: recipeImplInput.postAPIHook,\n action: \"EMAIL_EXISTS\",\n userContext: input.userContext,\n }),\n ]),\n ];\n case 2:\n (_a = _d.sent()), (jsonBody = _a.jsonBody), (fetchResponse = _a.fetchResponse);\n return [\n 2 /*return*/,\n {\n status: jsonBody.status,\n doesExist: jsonBody.exists,\n fetchResponse: fetchResponse,\n },\n ];\n }\n });\n });\n },\n doesPhoneNumberExist: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, jsonBody, fetchResponse, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _c = (_b = querier).get;\n return [\n 4 /*yield*/,\n recipe_1.default.getInstanceOrThrow().recipeImplementation.getTenantId({\n userContext: input.userContext,\n }),\n ];\n case 1:\n return [\n 4 /*yield*/,\n _c.apply(_b, [\n _d.sent(),\n \"/passwordless/phonenumber/exists\",\n {},\n { phoneNumber: input.phoneNumber },\n querier_1.default.preparePreAPIHook({\n recipePreAPIHook: recipeImplInput.preAPIHook,\n action: \"PHONE_NUMBER_EXISTS\",\n userContext: input.userContext,\n options: input.options,\n }),\n querier_1.default.preparePostAPIHook({\n recipePostAPIHook: recipeImplInput.postAPIHook,\n action: \"PHONE_NUMBER_EXISTS\",\n userContext: input.userContext,\n }),\n ]),\n ];\n case 2:\n (_a = _d.sent()), (jsonBody = _a.jsonBody), (fetchResponse = _a.fetchResponse);\n return [\n 2 /*return*/,\n {\n status: jsonBody.status,\n doesExist: jsonBody.exists,\n fetchResponse: fetchResponse,\n },\n ];\n }\n });\n });\n },\n getLoginAttemptInfo: function () {\n return __awaiter(this, void 0, void 0, function () {\n var storedInfo;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [\n 4 /*yield*/,\n windowHandler_1.WindowHandlerReference.getReferenceOrThrow().windowHandler.localStorage.getItem(\n constants_1.PASSWORDLESS_LOGIN_ATTEMPT_INFO_STORAGE_KEY\n ),\n ];\n case 1:\n storedInfo = _a.sent();\n if (storedInfo === null) {\n return [2 /*return*/, undefined];\n }\n try {\n return [2 /*return*/, JSON.parse(storedInfo)];\n } catch (ex) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/];\n }\n });\n });\n },\n setLoginAttemptInfo: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [\n 4 /*yield*/,\n windowHandler_1.WindowHandlerReference.getReferenceOrThrow().windowHandler.localStorage.setItem(\n constants_1.PASSWORDLESS_LOGIN_ATTEMPT_INFO_STORAGE_KEY,\n JSON.stringify(\n __assign(\n {\n // This can make future changes/migrations a lot cleaner\n version: 1,\n },\n input.attemptInfo\n )\n )\n ),\n ];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n },\n clearLoginAttemptInfo: function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n windowHandler_1.WindowHandlerReference.getReferenceOrThrow().windowHandler.localStorage.removeItem(\n constants_1.PASSWORDLESS_LOGIN_ATTEMPT_INFO_STORAGE_KEY\n );\n return [2 /*return*/];\n });\n });\n },\n };\n}\nexports.default = getRecipeImplementation;\nexports.getRecipeImplementation = getRecipeImplementation;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normaliseUserInput = void 0;\nvar utils_1 = require(\"../authRecipe/utils\");\nfunction normaliseUserInput(config) {\n var override = __assign(\n {\n functions: function (originalImplementation) {\n return originalImplementation;\n },\n },\n config.override\n );\n return __assign(__assign({}, (0, utils_1.normaliseAuthRecipe)(config)), { override: override });\n}\nexports.normaliseUserInput = normaliseUserInput;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RecipeModule = /** @class */ (function () {\n function RecipeModule(config) {\n this.config = config;\n }\n return RecipeModule;\n})();\nexports.default = RecipeModule;\n","\"use strict\";\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normaliseRecipeModuleConfig = void 0;\nfunction normaliseRecipeModuleConfig(config) {\n var _this = this;\n var preAPIHook = config.preAPIHook;\n if (preAPIHook === undefined) {\n preAPIHook = function (context) {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, context];\n });\n });\n };\n }\n var postAPIHook = config.postAPIHook;\n if (postAPIHook === undefined) {\n postAPIHook = function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n }\n return {\n recipeId: config.recipeId,\n appInfo: config.appInfo,\n clientType: config.clientType,\n preAPIHook: preAPIHook,\n postAPIHook: postAPIHook,\n };\n}\nexports.normaliseRecipeModuleConfig = normaliseRecipeModuleConfig;\n","\"use strict\";\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInvalidClaimsFromResponse =\n exports.getClaimValue =\n exports.validateClaims =\n exports.signOut =\n exports.addAxiosInterceptors =\n exports.doesSessionExist =\n exports.attemptRefreshingSession =\n exports.getAccessToken =\n exports.getAccessTokenPayloadSecurely =\n exports.getUserId =\n exports.init =\n exports.BooleanClaim =\n exports.PrimitiveArrayClaim =\n exports.PrimitiveClaim =\n void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar utils_1 = require(\"../../utils\");\nvar recipe_1 = require(\"./recipe\");\nvar RecipeWrapper = /** @class */ (function () {\n function RecipeWrapper() {}\n RecipeWrapper.init = function (config) {\n return recipe_1.default.init(config);\n };\n RecipeWrapper.getUserId = function (input) {\n return recipe_1.default.getInstanceOrThrow().getUserId({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n RecipeWrapper.getAccessToken = function (input) {\n return recipe_1.default.getInstanceOrThrow().getAccessToken({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n RecipeWrapper.getAccessTokenPayloadSecurely = function (input) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [\n 2 /*return*/,\n recipe_1.default.getInstanceOrThrow().getAccessTokenPayloadSecurely({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n }),\n ];\n });\n });\n };\n RecipeWrapper.attemptRefreshingSession = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, recipe_1.default.getInstanceOrThrow().attemptRefreshingSession()];\n });\n });\n };\n RecipeWrapper.doesSessionExist = function (input) {\n return recipe_1.default.getInstanceOrThrow().doesSessionExist({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n /**\n * @deprecated\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n RecipeWrapper.addAxiosInterceptors = function (axiosInstance, userContext) {\n return recipe_1.default.addAxiosInterceptors(axiosInstance, (0, utils_1.getNormalisedUserContext)(userContext));\n };\n RecipeWrapper.signOut = function (input) {\n return recipe_1.default.getInstanceOrThrow().signOut({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n RecipeWrapper.getClaimValue = function (input) {\n return recipe_1.default.getInstanceOrThrow().getClaimValue({\n claim: input.claim,\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n RecipeWrapper.validateClaims = function (input) {\n return recipe_1.default.getInstanceOrThrow().validateClaims({\n overrideGlobalClaimValidators:\n input === null || input === void 0 ? void 0 : input.overrideGlobalClaimValidators,\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n // The strange typing is to avoid adding a dependency to axios\n RecipeWrapper.getInvalidClaimsFromResponse = function (input) {\n return recipe_1.default.getInstanceOrThrow().getInvalidClaimsFromResponse({\n response: input.response,\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === null || input === void 0 ? void 0 : input.userContext\n ),\n });\n };\n return RecipeWrapper;\n})();\nexports.default = RecipeWrapper;\nvar init = RecipeWrapper.init;\nexports.init = init;\nvar getUserId = RecipeWrapper.getUserId;\nexports.getUserId = getUserId;\nvar getAccessTokenPayloadSecurely = RecipeWrapper.getAccessTokenPayloadSecurely;\nexports.getAccessTokenPayloadSecurely = getAccessTokenPayloadSecurely;\nvar getAccessToken = RecipeWrapper.getAccessToken;\nexports.getAccessToken = getAccessToken;\nvar attemptRefreshingSession = RecipeWrapper.attemptRefreshingSession;\nexports.attemptRefreshingSession = attemptRefreshingSession;\nvar doesSessionExist = RecipeWrapper.doesSessionExist;\nexports.doesSessionExist = doesSessionExist;\n/**\n * @deprecated\n */\nvar addAxiosInterceptors = RecipeWrapper.addAxiosInterceptors;\nexports.addAxiosInterceptors = addAxiosInterceptors;\nvar signOut = RecipeWrapper.signOut;\nexports.signOut = signOut;\nvar validateClaims = RecipeWrapper.validateClaims;\nexports.validateClaims = validateClaims;\nvar getClaimValue = RecipeWrapper.getClaimValue;\nexports.getClaimValue = getClaimValue;\nvar getInvalidClaimsFromResponse = RecipeWrapper.getInvalidClaimsFromResponse;\nexports.getInvalidClaimsFromResponse = getInvalidClaimsFromResponse;\nvar supertokens_website_1 = require(\"supertokens-website\");\nObject.defineProperty(exports, \"PrimitiveClaim\", {\n enumerable: true,\n get: function () {\n return supertokens_website_1.PrimitiveClaim;\n },\n});\nObject.defineProperty(exports, \"PrimitiveArrayClaim\", {\n enumerable: true,\n get: function () {\n return supertokens_website_1.PrimitiveArrayClaim;\n },\n});\nObject.defineProperty(exports, \"BooleanClaim\", {\n enumerable: true,\n get: function () {\n return supertokens_website_1.BooleanClaim;\n },\n});\n","\"use strict\";\nvar __extends =\n (this && this.__extends) ||\n (function () {\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b;\n }) ||\n function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n })();\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: [],\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nvar __spreadArray =\n (this && this.__spreadArray) ||\n function (to, from, pack) {\n if (pack || arguments.length === 2)\n for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Recipe = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar recipeModule_1 = require(\"../recipeModule\");\nvar supertokens_website_1 = require(\"supertokens-website\");\nvar utils_1 = require(\"../../utils\");\nvar constants_1 = require(\"../emailverification/constants\");\nvar priorityValidatorIds = [constants_1.EMAILVERIFICATION_CLAIM_ID];\nvar Recipe = /** @class */ (function (_super) {\n __extends(Recipe, _super);\n function Recipe(config) {\n var _this = _super.call(this, config) || this;\n _this.getUserId = function (input) {\n return supertokens_website_1.default.getUserId({\n userContext: input.userContext,\n });\n };\n _this.getAccessToken = function (input) {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [\n 2 /*return*/,\n supertokens_website_1.default.getAccessToken({\n userContext: input.userContext,\n }),\n ];\n });\n });\n };\n _this.getAccessTokenPayloadSecurely = function (input) {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [\n 2 /*return*/,\n supertokens_website_1.default.getAccessTokenPayloadSecurely({\n userContext: input.userContext,\n }),\n ];\n });\n });\n };\n _this.doesSessionExist = function (input) {\n return supertokens_website_1.default.doesSessionExist({\n userContext: input.userContext,\n });\n };\n _this.signOut = function (input) {\n return supertokens_website_1.default.signOut({\n userContext: input.userContext,\n });\n };\n _this.attemptRefreshingSession = function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, supertokens_website_1.default.attemptRefreshingSession()];\n });\n });\n };\n _this.validateClaims = function (input) {\n return supertokens_website_1.default.validateClaims(input.overrideGlobalClaimValidators, input.userContext);\n };\n supertokens_website_1.default.init(\n __assign(__assign({}, config), {\n override: {\n functions: function (originalImpl, builder) {\n var _a;\n builder.override(function (oI) {\n return __assign(__assign({}, oI), {\n getGlobalClaimValidators: function (input) {\n var res = oI.getGlobalClaimValidators(input);\n return __spreadArray(\n __spreadArray(\n [],\n res.filter(function (x) {\n return priorityValidatorIds.includes(x.id);\n }),\n true\n ),\n res.filter(function (x) {\n return !priorityValidatorIds.includes(x.id);\n }),\n true\n );\n },\n });\n });\n if ((_a = config.override) === null || _a === void 0 ? void 0 : _a.functions) {\n builder.override(config.override.functions);\n }\n return originalImpl;\n },\n },\n preAPIHook: function (context) {\n return __awaiter(_this, void 0, void 0, function () {\n var headers, response;\n return __generator(this, function (_a) {\n headers = new Headers(context.requestInit.headers);\n headers.set(\"rid\", config.recipeId);\n response = __assign(__assign({}, context), {\n requestInit: __assign(__assign({}, context.requestInit), { headers: headers }),\n });\n if (config.preAPIHook === undefined) {\n return [2 /*return*/, response];\n } else {\n return [2 /*return*/, config.preAPIHook(context)];\n }\n return [2 /*return*/];\n });\n });\n },\n apiDomain: config.appInfo.apiDomain.getAsStringDangerous(),\n apiBasePath: config.appInfo.apiBasePath.getAsStringDangerous(),\n })\n );\n return _this;\n }\n Recipe.init = function (config) {\n return function (appInfo, _, enableDebugLogs) {\n Recipe.instance = new Recipe(\n __assign(__assign({}, config), {\n appInfo: appInfo,\n recipeId: Recipe.RECIPE_ID,\n enableDebugLogs: enableDebugLogs,\n })\n );\n return Recipe.instance;\n };\n };\n Recipe.prototype.getClaimValue = function (input) {\n return supertokens_website_1.default.getClaimValue(input);\n };\n // The strange typing is to avoid adding a dependency to axios\n Recipe.prototype.getInvalidClaimsFromResponse = function (input) {\n return supertokens_website_1.default.getInvalidClaimsFromResponse(input);\n };\n Recipe.addAxiosInterceptors = function (axiosInstance, userContext) {\n return supertokens_website_1.default.addAxiosInterceptors(axiosInstance, userContext);\n };\n Recipe.getInstanceOrThrow = function () {\n if (Recipe.instance === undefined) {\n var error =\n \"No instance of Session found. Ensure that the 'Session.init' method is called within the 'SuperTokens.init' recipeList.\";\n error = (0, utils_1.checkForSSRErrorAndAppendIfNeeded)(error);\n throw Error(error);\n }\n return Recipe.instance;\n };\n Recipe.reset = function () {\n if (!(0, utils_1.isTest)()) {\n return;\n }\n Recipe.instance = undefined;\n return;\n };\n Recipe.RECIPE_ID = \"session\";\n return Recipe;\n})(recipeModule_1.default);\nexports.Recipe = Recipe;\nexports.default = Recipe;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar cookieHandler_1 = require(\"./cookieHandler\");\nvar windowHandler_1 = require(\"./windowHandler\");\nvar postSuperTokensInitCallbacks_1 = require(\"./postSuperTokensInitCallbacks\");\nvar recipe_1 = require(\"./recipe/multitenancy/recipe\");\nvar dateProvider_1 = require(\"./dateProvider\");\nvar SuperTokens = /** @class */ (function () {\n function SuperTokens(config) {\n var _this = this;\n this.recipeList = [];\n this.appInfo = (0, utils_1.normaliseInputAppInfoOrThrowError)(config.appInfo);\n if (config.recipeList === undefined || config.recipeList.length === 0) {\n throw new Error(\n \"Please provide at least one recipe to the supertokens.init function call. See https://supertokens.io/docs/emailpassword/quick-setup/frontend\"\n );\n }\n var enableDebugLogs = false;\n if (config.enableDebugLogs !== undefined) {\n enableDebugLogs = config.enableDebugLogs;\n }\n var multitenancyFound = false;\n this.recipeList = config.recipeList.map(function (recipe) {\n var recipeInstance = recipe(_this.appInfo, config.clientType, enableDebugLogs);\n if (recipeInstance.config.recipeId === recipe_1.Recipe.RECIPE_ID) {\n multitenancyFound = true;\n }\n return recipeInstance;\n });\n if (!multitenancyFound) {\n this.recipeList.push(recipe_1.Recipe.init()(this.appInfo, config.clientType, enableDebugLogs));\n }\n }\n /**\n * Initialise the SuperTokens SDK. Calling this function multiple times results\n * in a warning and has no other effect\n *\n * @param config The configuration the SDK should use\n */\n SuperTokens.init = function (config) {\n cookieHandler_1.CookieHandlerReference.init(config.cookieHandler);\n windowHandler_1.WindowHandlerReference.init(config.windowHandler);\n dateProvider_1.DateProviderReference.init(config.dateProvider);\n if (SuperTokens.instance !== undefined) {\n console.warn(\"SuperTokens was already initialized\");\n return;\n }\n SuperTokens.instance = new SuperTokens(config);\n postSuperTokensInitCallbacks_1.PostSuperTokensInitCallbacks.runPostInitCallbacks();\n };\n /**\n * Retrieve an instance of SuperTokens\n *\n * @returns An instance of SuperTokens\n *\n * @throws If SuperTokens.init has not been called before using this function\n */\n SuperTokens.getInstanceOrThrow = function () {\n if (SuperTokens.instance === undefined) {\n var error = \"SuperTokens must be initialized before calling this method.\";\n error = (0, utils_1.checkForSSRErrorAndAppendIfNeeded)(error);\n throw new Error(error);\n }\n return SuperTokens.instance;\n };\n SuperTokens.reset = function () {\n if (!(0, utils_1.isTest)()) {\n console.warn(\"Calling reset() is only supported during testing\");\n return;\n }\n // We reset the multitenancy recipe here because we are auto-initializing it\n // and we should always be resetting it when we reset the SDK\n recipe_1.Recipe.reset();\n SuperTokens.instance = undefined;\n return;\n };\n return SuperTokens;\n})();\nexports.default = SuperTokens;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normaliseUser =\n exports.normaliseUserResponse =\n exports.getGlobalClaimValidators =\n exports.getHashFromLocation =\n exports.getNormalisedUserContext =\n exports.checkForSSRErrorAndAppendIfNeeded =\n exports.getAllQueryParams =\n exports.getQueryParams =\n exports.isTest =\n exports.normaliseInputAppInfoOrThrowError =\n exports.appendQueryParamsToURL =\n void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar windowHandler_1 = require(\"./windowHandler\");\nvar constants_1 = require(\"./constants\");\nvar normalisedURLDomain_1 = require(\"./normalisedURLDomain\");\nvar normalisedURLPath_1 = require(\"./normalisedURLPath\");\nvar globalClaimValidators_1 = require(\"supertokens-website/utils/globalClaimValidators\");\nfunction appendQueryParamsToURL(stringUrl, queryParams) {\n if (queryParams === undefined) {\n return stringUrl;\n }\n try {\n var url_1 = new URL(stringUrl);\n Object.entries(queryParams).forEach(function (_a) {\n var key = _a[0],\n value = _a[1];\n url_1.searchParams.set(key, value);\n });\n return url_1.href;\n } catch (e) {\n var fakeDomain = stringUrl.startsWith(\"/\") ? \"http:localhost\" : \"http://localhost/\";\n var url_2 = new URL(\"\".concat(fakeDomain).concat(stringUrl));\n Object.entries(queryParams).forEach(function (_a) {\n var key = _a[0],\n value = _a[1];\n url_2.searchParams.set(key, value);\n });\n return \"\".concat(url_2.pathname).concat(url_2.search);\n }\n}\nexports.appendQueryParamsToURL = appendQueryParamsToURL;\nfunction getNormalisedURLPathOrDefault(defaultPath, path) {\n if (path !== undefined) {\n return new normalisedURLPath_1.default(path);\n } else {\n return new normalisedURLPath_1.default(defaultPath);\n }\n}\nfunction normaliseInputAppInfoOrThrowError(appInfo) {\n if (appInfo === undefined) {\n throw new Error(\"Please provide the appInfo object when calling supertokens.init\");\n }\n if (appInfo.apiDomain === undefined) {\n throw new Error(\"Please provide your apiDomain inside the appInfo object when calling supertokens.init\");\n }\n if (appInfo.appName === undefined) {\n throw new Error(\"Please provide your appName inside the appInfo object when calling supertokens.init\");\n }\n var apiGatewayPath = new normalisedURLPath_1.default(\"\");\n if (appInfo.apiGatewayPath !== undefined) {\n apiGatewayPath = new normalisedURLPath_1.default(appInfo.apiGatewayPath);\n }\n return {\n appName: appInfo.appName,\n apiDomain: new normalisedURLDomain_1.default(appInfo.apiDomain),\n apiBasePath: apiGatewayPath.appendPath(\n getNormalisedURLPathOrDefault(constants_1.DEFAULT_API_BASE_PATH, appInfo.apiBasePath)\n ),\n };\n}\nexports.normaliseInputAppInfoOrThrowError = normaliseInputAppInfoOrThrowError;\nfunction isTest() {\n try {\n return process.env.TEST_MODE === \"testing\";\n } catch (err) {\n // can get Uncaught ReferenceError: process is not defined error\n return false;\n }\n}\nexports.isTest = isTest;\nfunction getQueryParams(param) {\n var urlParams = new URLSearchParams(\n windowHandler_1.WindowHandlerReference.getReferenceOrThrow().windowHandler.location.getSearch()\n );\n var queryParam = urlParams.get(param);\n if (queryParam === null) {\n return undefined;\n }\n return queryParam;\n}\nexports.getQueryParams = getQueryParams;\nfunction getAllQueryParams() {\n return new URLSearchParams(\n windowHandler_1.WindowHandlerReference.getReferenceOrThrow().windowHandler.location.getSearch()\n );\n}\nexports.getAllQueryParams = getAllQueryParams;\nfunction checkForSSRErrorAndAppendIfNeeded(error) {\n // tslint:disable-next-line\n if (typeof window === \"undefined\") {\n error = error + constants_1.SSR_ERROR;\n }\n return error;\n}\nexports.checkForSSRErrorAndAppendIfNeeded = checkForSSRErrorAndAppendIfNeeded;\nfunction getNormalisedUserContext(userContext) {\n return userContext === undefined ? {} : userContext;\n}\nexports.getNormalisedUserContext = getNormalisedUserContext;\nfunction getHashFromLocation() {\n // By default it is returned with the \"#\" at the beginning, we cut that off here.\n return windowHandler_1.WindowHandlerReference.getReferenceOrThrow().windowHandler.location.getHash().substring(1);\n}\nexports.getHashFromLocation = getHashFromLocation;\nfunction getGlobalClaimValidators(_a) {\n var overrideGlobalClaimValidators = _a.overrideGlobalClaimValidators,\n userContext = _a.userContext;\n return (0, globalClaimValidators_1.getGlobalClaimValidators)(overrideGlobalClaimValidators, userContext);\n}\nexports.getGlobalClaimValidators = getGlobalClaimValidators;\nfunction normaliseUserResponse(recipeId, response) {\n if (\"createdNewRecipeUser\" in response) {\n return response;\n }\n return {\n createdNewRecipeUser: response.createdNewUser,\n user: normaliseUser(recipeId, response.user),\n };\n}\nexports.normaliseUserResponse = normaliseUserResponse;\nfunction normaliseUser(recipeId, responseUser) {\n if (\"loginMethods\" in responseUser) {\n return responseUser;\n }\n var emails = responseUser.email !== undefined ? [responseUser.email] : [];\n var phoneNumbers = responseUser.phoneNumber !== undefined ? [responseUser.phoneNumber] : [];\n var thirdParty = responseUser.thirdParty !== undefined ? [responseUser.thirdParty] : [];\n return {\n id: responseUser.id,\n emails: emails,\n phoneNumbers: phoneNumbers,\n thirdParty: thirdParty,\n isPrimaryUser: false,\n tenantIds: responseUser.tenantIds,\n timeJoined: responseUser.timeJoined,\n loginMethods: [\n {\n recipeId: recipeId,\n recipeUserId: responseUser.id,\n timeJoined: responseUser.timeJoined,\n tenantIds: responseUser.tenantIds,\n email: responseUser.email,\n phoneNumber: responseUser.email,\n },\n ],\n };\n}\nexports.normaliseUser = normaliseUser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.supported_fdi = exports.package_version = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nexports.package_version = \"0.14.0\";\nexports.supported_fdi = [\"3.1\", \"4.0\"];\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WindowHandlerReference = void 0;\nvar windowHandler_1 = require(\"supertokens-website/utils/windowHandler\");\nObject.defineProperty(exports, \"WindowHandlerReference\", {\n enumerable: true,\n get: function () {\n return windowHandler_1.WindowHandlerReference;\n },\n});\n","/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"../../lib/build/recipe/passwordless\"));\n","/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"../../lib/build/recipe/session\"));\n","/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n * \n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License. \n*/\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"./lib/build\"));\n","\"use strict\";\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.responseErrorInterceptor = exports.responseInterceptor = exports.interceptorFunctionRequestFulfilled = void 0;\nvar axiosError_1 = require(\"./axiosError\");\nvar fetch_1 = require(\"./fetch\");\nvar processState_1 = require(\"./processState\");\nvar windowHandler_1 = require(\"./utils/windowHandler\");\nvar logger_1 = require(\"./logger\");\nfunction incrementSessionRefreshAttemptCount(config) {\n if (config.__supertokensSessionRefreshAttempts === undefined) {\n config.__supertokensSessionRefreshAttempts = 0;\n }\n config.__supertokensSessionRefreshAttempts++;\n}\nfunction hasExceededMaxSessionRefreshAttempts(config) {\n if (config.__supertokensSessionRefreshAttempts === undefined) {\n config.__supertokensSessionRefreshAttempts = 0;\n }\n return config.__supertokensSessionRefreshAttempts >= fetch_1.default.config.maxRetryAttemptsForSessionRefresh;\n}\nfunction getUrlFromConfig(config) {\n var url = config.url === undefined ? \"\" : config.url;\n var baseURL = config.baseURL;\n if (baseURL !== undefined) {\n if (url.charAt(0) === \"/\" && baseURL.charAt(baseURL.length - 1) === \"/\") {\n url = baseURL + url.substr(1);\n } else if (url.charAt(0) !== \"/\" && baseURL.charAt(baseURL.length - 1) !== \"/\") {\n url = baseURL + \"/\" + url;\n } else {\n url = baseURL + url;\n }\n }\n return url;\n}\nfunction interceptorFunctionRequestFulfilled(config) {\n return __awaiter(this, void 0, void 0, function () {\n var url, doNotDoInterception, preRequestLSS, configWithAntiCsrf, antiCsrfToken, transferMethod;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"interceptorFunctionRequestFulfilled: started axios interception\");\n url = getUrlFromConfig(config);\n doNotDoInterception = false;\n try {\n doNotDoInterception =\n typeof url === \"string\" &&\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n url,\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n );\n } catch (err) {\n if (err.message === \"Please provide a valid domain name\") {\n (0, logger_1.logDebugMessage)(\n \"interceptorFunctionRequestFulfilled: Trying shouldDoInterceptionBasedOnUrl with location.origin\"\n );\n // .origin gives the port as well..\n doNotDoInterception = !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n windowHandler_1.default.getReferenceOrThrow().windowHandler.location.getOrigin(),\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n );\n } else {\n throw err;\n }\n }\n (0,\n logger_1.logDebugMessage)(\"interceptorFunctionRequestFulfilled: Value of doNotDoInterception: \" + doNotDoInterception);\n if (doNotDoInterception) {\n (0, logger_1.logDebugMessage)(\n \"interceptorFunctionRequestFulfilled: Returning config unchanged\"\n );\n // this check means that if you are using axios via inteceptor, then we only do the refresh steps if you are calling your APIs.\n return [2 /*return*/, config];\n }\n (0, logger_1.logDebugMessage)(\"interceptorFunctionRequestFulfilled: Modifying config\");\n processState_1.ProcessState.getInstance().addState(\n processState_1.PROCESS_STATE.CALLING_INTERCEPTION_REQUEST\n );\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(true)];\n case 1:\n preRequestLSS = _a.sent();\n configWithAntiCsrf = config;\n if (!(preRequestLSS.status === \"EXISTS\")) return [3 /*break*/, 3];\n return [4 /*yield*/, fetch_1.AntiCsrfToken.getToken(preRequestLSS.lastAccessTokenUpdate)];\n case 2:\n antiCsrfToken = _a.sent();\n if (antiCsrfToken !== undefined) {\n (0, logger_1.logDebugMessage)(\n \"interceptorFunctionRequestFulfilled: Adding anti-csrf token to request\"\n );\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), {\n headers:\n configWithAntiCsrf === undefined\n ? {\n \"anti-csrf\": antiCsrfToken\n }\n : __assign(__assign({}, configWithAntiCsrf.headers), { \"anti-csrf\": antiCsrfToken })\n });\n }\n _a.label = 3;\n case 3:\n if (fetch_1.default.config.autoAddCredentials && configWithAntiCsrf.withCredentials === undefined) {\n (0, logger_1.logDebugMessage)(\n \"interceptorFunctionRequestFulfilled: Adding credentials include\"\n );\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), { withCredentials: true });\n }\n // adding rid for anti-csrf protection: Anti-csrf via custom header\n (0,\n logger_1.logDebugMessage)(\"interceptorFunctionRequestFulfilled: Adding rid header: anti-csrf (it may be overriden by the user's provided rid)\");\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), {\n headers:\n configWithAntiCsrf === undefined\n ? {\n rid: \"anti-csrf\"\n }\n : __assign({ rid: \"anti-csrf\" }, configWithAntiCsrf.headers)\n });\n transferMethod = fetch_1.default.config.tokenTransferMethod;\n (0,\n logger_1.logDebugMessage)(\"interceptorFunctionRequestFulfilled: Adding st-auth-mode header: \" + transferMethod);\n configWithAntiCsrf.headers[\"st-auth-mode\"] = transferMethod;\n return [4 /*yield*/, removeAuthHeaderIfMatchesLocalToken(configWithAntiCsrf)];\n case 4:\n configWithAntiCsrf = _a.sent();\n return [4 /*yield*/, setAuthorizationHeaderIfRequired(configWithAntiCsrf)];\n case 5:\n _a.sent();\n (0, logger_1.logDebugMessage)(\"interceptorFunctionRequestFulfilled: returning modified config\");\n return [2 /*return*/, configWithAntiCsrf];\n }\n });\n });\n}\nexports.interceptorFunctionRequestFulfilled = interceptorFunctionRequestFulfilled;\nfunction responseInterceptor(axiosInstance) {\n var _this = this;\n return function (response) {\n return __awaiter(_this, void 0, void 0, function () {\n var doNotDoInterception, url, preRequestLSS, config;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n doNotDoInterception = false;\n if (!fetch_1.default.initCalled) {\n throw new Error(\"init function not called\");\n }\n (0, logger_1.logDebugMessage)(\"responseInterceptor: started\");\n (0,\n logger_1.logDebugMessage)(\"responseInterceptor: already intercepted: \" + response.headers[\"x-supertokens-xhr-intercepted\"]);\n url = getUrlFromConfig(response.config);\n try {\n doNotDoInterception =\n (typeof url === \"string\" &&\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n url,\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n )) ||\n !!response.headers[\"x-supertokens-xhr-intercepted\"];\n } catch (err) {\n if (err.message === \"Please provide a valid domain name\") {\n (0, logger_1.logDebugMessage)(\n \"responseInterceptor: Trying shouldDoInterceptionBasedOnUrl with location.origin\"\n );\n // .origin gives the port as well..\n doNotDoInterception =\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n windowHandler_1.default\n .getReferenceOrThrow()\n .windowHandler.location.getOrigin(),\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n ) || !!response.headers[\"x-supertokens-xhr-intercepted\"];\n } else {\n throw err;\n }\n }\n (0,\n logger_1.logDebugMessage)(\"responseInterceptor: Value of doNotDoInterception: \" + doNotDoInterception);\n if (doNotDoInterception) {\n (0, logger_1.logDebugMessage)(\"responseInterceptor: Returning without interception\");\n // this check means that if you are using axios via inteceptor, then we only do the refresh steps if you are calling your APIs.\n return [2 /*return*/, response];\n }\n (0, logger_1.logDebugMessage)(\"responseInterceptor: Interception started\");\n processState_1.ProcessState.getInstance().addState(\n processState_1.PROCESS_STATE.CALLING_INTERCEPTION_RESPONSE\n );\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(false)];\n case 1:\n preRequestLSS = _a.sent();\n return [4 /*yield*/, saveTokensFromHeaders(response)];\n case 2:\n _a.sent();\n (0,\n fetch_1.fireSessionUpdateEventsIfNecessary)(preRequestLSS.status === \"EXISTS\", response.status, response.headers[\"front-token\"]);\n if (!(response.status === fetch_1.default.config.sessionExpiredStatusCode))\n return [3 /*break*/, 3];\n (0, logger_1.logDebugMessage)(\"responseInterceptor: Status code is: \" + response.status);\n config = response.config;\n return [\n 2 /*return*/,\n AuthHttpRequest.doRequest(\n function (config) {\n // we create an instance since we don't want to intercept this.\n // const instance = axios.create();\n // return instance(config);\n return axiosInstance(config);\n },\n config,\n url,\n response,\n undefined,\n true\n )\n ];\n case 3:\n if (!(response.status === fetch_1.default.config.invalidClaimStatusCode))\n return [3 /*break*/, 5];\n // only fire event if body is defined.\n return [4 /*yield*/, (0, fetch_1.onInvalidClaimResponse)(response)];\n case 4:\n // only fire event if body is defined.\n _a.sent();\n _a.label = 5;\n case 5:\n return [2 /*return*/, response];\n }\n });\n });\n };\n}\nexports.responseInterceptor = responseInterceptor;\nfunction responseErrorInterceptor(axiosInstance) {\n var _this = this;\n return function (error) {\n return __awaiter(_this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"responseErrorInterceptor: called\");\n (0,\n logger_1.logDebugMessage)(\"responseErrorInterceptor: already intercepted: \" + (error.response && error.response.headers[\"x-supertokens-xhr-intercepted\"]));\n if (error.response === undefined || error.response.headers[\"x-supertokens-xhr-intercepted\"]) {\n throw error;\n }\n if (\n !(\n error.response !== undefined &&\n error.response.status === fetch_1.default.config.sessionExpiredStatusCode\n )\n )\n return [3 /*break*/, 1];\n (0,\n logger_1.logDebugMessage)(\"responseErrorInterceptor: Status code is: \" + error.response.status);\n config = error.config;\n return [\n 2 /*return*/,\n AuthHttpRequest.doRequest(\n function (config) {\n // we create an instance since we don't want to intercept this.\n // const instance = axios.create();\n // return instance(config);\n return axiosInstance(config);\n },\n config,\n getUrlFromConfig(config),\n undefined,\n error,\n true\n )\n ];\n case 1:\n if (\n !(\n error.response !== undefined &&\n error.response.status === fetch_1.default.config.invalidClaimStatusCode\n )\n )\n return [3 /*break*/, 3];\n return [4 /*yield*/, (0, fetch_1.onInvalidClaimResponse)(error.response)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n throw error;\n }\n });\n });\n };\n}\nexports.responseErrorInterceptor = responseErrorInterceptor;\n/**\n * @class AuthHttpRequest\n * @description wrapper for common http methods.\n */\nvar AuthHttpRequest = /** @class */ (function () {\n function AuthHttpRequest() {}\n var _a;\n _a = AuthHttpRequest;\n /**\n * @description sends the actual http request and returns a response if successful/\n * If not successful due to session expiry reasons, it\n * attempts to call the refresh token API and if that is successful, calls this API again.\n * @throws Error\n */\n AuthHttpRequest.doRequest = function (httpCall, config, url, prevResponse, prevError, viaInterceptor) {\n if (viaInterceptor === void 0) {\n viaInterceptor = false;\n }\n return __awaiter(void 0, void 0, void 0, function () {\n var doNotDoInterception,\n returnObj,\n preRequestLSS,\n configWithAntiCsrf,\n antiCsrfToken,\n transferMethod,\n localPrevError,\n localPrevResponse,\n response,\n _b,\n err_1,\n response,\n errorMessage,\n refreshResult,\n _c;\n return __generator(_a, function (_d) {\n switch (_d.label) {\n case 0:\n if (!fetch_1.default.initCalled) {\n throw Error(\"init function not called\");\n }\n (0, logger_1.logDebugMessage)(\"doRequest: called\");\n doNotDoInterception = false;\n try {\n doNotDoInterception =\n typeof url === \"string\" &&\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n url,\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n ) &&\n viaInterceptor;\n } catch (err) {\n if (err.message === \"Please provide a valid domain name\") {\n (0, logger_1.logDebugMessage)(\n \"doRequest: Trying shouldDoInterceptionBasedOnUrl with location.origin\"\n );\n // .origin gives the port as well..\n doNotDoInterception =\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n windowHandler_1.default\n .getReferenceOrThrow()\n .windowHandler.location.getOrigin(),\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n ) && viaInterceptor;\n } else {\n throw err;\n }\n }\n (0,\n logger_1.logDebugMessage)(\"doRequest: Value of doNotDoInterception: \" + doNotDoInterception);\n if (!doNotDoInterception) return [3 /*break*/, 2];\n (0, logger_1.logDebugMessage)(\"doRequest: Returning without interception\");\n if (prevError !== undefined) {\n throw prevError;\n } else if (prevResponse !== undefined) {\n return [2 /*return*/, prevResponse];\n }\n return [4 /*yield*/, httpCall(config)];\n case 1:\n return [2 /*return*/, _d.sent()];\n case 2:\n (0, logger_1.logDebugMessage)(\"doRequest: Interception started\");\n return [4 /*yield*/, removeAuthHeaderIfMatchesLocalToken(config)];\n case 3:\n config = _d.sent();\n returnObj = undefined;\n _d.label = 4;\n case 4:\n if (!true) return [3 /*break*/, 28];\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(true)];\n case 5:\n preRequestLSS = _d.sent();\n configWithAntiCsrf = config;\n if (!(preRequestLSS.status === \"EXISTS\")) return [3 /*break*/, 7];\n return [4 /*yield*/, fetch_1.AntiCsrfToken.getToken(preRequestLSS.lastAccessTokenUpdate)];\n case 6:\n antiCsrfToken = _d.sent();\n if (antiCsrfToken !== undefined) {\n (0, logger_1.logDebugMessage)(\"doRequest: Adding anti-csrf token to request\");\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), {\n headers:\n configWithAntiCsrf === undefined\n ? {\n \"anti-csrf\": antiCsrfToken\n }\n : __assign(__assign({}, configWithAntiCsrf.headers), {\n \"anti-csrf\": antiCsrfToken\n })\n });\n }\n _d.label = 7;\n case 7:\n if (\n fetch_1.default.config.autoAddCredentials &&\n configWithAntiCsrf.withCredentials === undefined\n ) {\n (0, logger_1.logDebugMessage)(\"doRequest: Adding credentials include\");\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), { withCredentials: true });\n }\n // adding rid for anti-csrf protection: Anti-csrf via custom header\n (0,\n logger_1.logDebugMessage)(\"doRequest: Adding rid header: anti-csrf (May get overriden by user's rid)\");\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), {\n headers:\n configWithAntiCsrf === undefined\n ? {\n rid: \"anti-csrf\"\n }\n : __assign({ rid: \"anti-csrf\" }, configWithAntiCsrf.headers)\n });\n transferMethod = fetch_1.default.config.tokenTransferMethod;\n (0, logger_1.logDebugMessage)(\"doRequest: Adding st-auth-mode header: \" + transferMethod);\n configWithAntiCsrf.headers[\"st-auth-mode\"] = transferMethod;\n return [4 /*yield*/, setAuthorizationHeaderIfRequired(configWithAntiCsrf)];\n case 8:\n _d.sent();\n _d.label = 9;\n case 9:\n _d.trys.push([9, 14, , 27]);\n localPrevError = prevError;\n localPrevResponse = prevResponse;\n prevError = undefined;\n prevResponse = undefined;\n if (localPrevError !== undefined) {\n (0, logger_1.logDebugMessage)(\n \"doRequest: Not making call because localPrevError is not undefined\"\n );\n throw localPrevError;\n }\n if (localPrevResponse !== undefined) {\n (0, logger_1.logDebugMessage)(\n \"doRequest: Not making call because localPrevResponse is not undefined\"\n );\n } else {\n (0, logger_1.logDebugMessage)(\"doRequest: Making user's http call\");\n }\n if (!(localPrevResponse === undefined)) return [3 /*break*/, 11];\n return [4 /*yield*/, httpCall(configWithAntiCsrf)];\n case 10:\n _b = _d.sent();\n return [3 /*break*/, 12];\n case 11:\n _b = localPrevResponse;\n _d.label = 12;\n case 12:\n response = _b;\n // NOTE: No need to check for unauthorized response status here for session refresh,\n // as we only reach this point on a successful response. Axios handles error responses\n // by throwing an error, which is handled in the catch block.\n (0, logger_1.logDebugMessage)(\"doRequest: User's http call ended\");\n return [4 /*yield*/, saveTokensFromHeaders(response)];\n case 13:\n _d.sent();\n (0,\n fetch_1.fireSessionUpdateEventsIfNecessary)(preRequestLSS.status === \"EXISTS\", response.status, response.headers[\"front-token\"]);\n return [2 /*return*/, response];\n case 14:\n err_1 = _d.sent();\n response = err_1.response;\n if (!(response !== undefined)) return [3 /*break*/, 25];\n return [4 /*yield*/, saveTokensFromHeaders(response)];\n case 15:\n _d.sent();\n (0,\n fetch_1.fireSessionUpdateEventsIfNecessary)(preRequestLSS.status === \"EXISTS\", response.status, response.headers[\"front-token\"]);\n if (!(response.status === fetch_1.default.config.sessionExpiredStatusCode))\n return [3 /*break*/, 21];\n (0, logger_1.logDebugMessage)(\"doRequest: Status code is: \" + response.status);\n /**\n * An API may return a 401 error response even with a valid session, causing a session refresh loop in the interceptor.\n * To prevent this infinite loop, we break out of the loop after retrying the original request a specified number of times.\n * The maximum number of retry attempts is defined by maxRetryAttemptsForSessionRefresh config variable.\n */\n if (hasExceededMaxSessionRefreshAttempts(config)) {\n (0, logger_1.logDebugMessage)(\n \"doRequest: Maximum session refresh attempts reached. sessionRefreshAttempts: \"\n .concat(\n config.__supertokensSessionRefreshAttempts,\n \", maxRetryAttemptsForSessionRefresh: \"\n )\n .concat(fetch_1.default.config.maxRetryAttemptsForSessionRefresh)\n );\n errorMessage = \"Received a 401 response from \"\n .concat(\n url,\n \". Attempted to refresh the session and retry the request with the updated session tokens \"\n )\n .concat(\n fetch_1.default.config.maxRetryAttemptsForSessionRefresh,\n \" times, but each attempt resulted in a 401 error. The maximum session refresh limit has been reached. Please investigate your API. To increase the session refresh attempts, update maxRetryAttemptsForSessionRefresh in the config.\"\n );\n console.error(errorMessage);\n throw new Error(errorMessage);\n }\n return [4 /*yield*/, (0, fetch_1.onUnauthorisedResponse)(preRequestLSS)];\n case 16:\n refreshResult = _d.sent();\n incrementSessionRefreshAttemptCount(config);\n (0,\n logger_1.logDebugMessage)(\"doRequest: sessionRefreshAttempts: \" + config.__supertokensSessionRefreshAttempts);\n if (!(refreshResult.result !== \"RETRY\")) return [3 /*break*/, 20];\n (0, logger_1.logDebugMessage)(\"doRequest: Not retrying original request\");\n if (!(refreshResult.error !== undefined)) return [3 /*break*/, 18];\n return [4 /*yield*/, (0, axiosError_1.createAxiosErrorFromFetchResp)(refreshResult.error)];\n case 17:\n _c = _d.sent();\n return [3 /*break*/, 19];\n case 18:\n _c = err_1;\n _d.label = 19;\n case 19:\n // Returning refreshResult.error as an Axios Error if we attempted a refresh\n // Returning the original error if we did not attempt refreshing\n returnObj = _c;\n return [3 /*break*/, 28];\n case 20:\n (0, logger_1.logDebugMessage)(\"doRequest: Retrying original request\");\n return [3 /*break*/, 24];\n case 21:\n if (!(response.status === fetch_1.default.config.invalidClaimStatusCode))\n return [3 /*break*/, 23];\n return [4 /*yield*/, (0, fetch_1.onInvalidClaimResponse)(response)];\n case 22:\n _d.sent();\n _d.label = 23;\n case 23:\n throw err_1;\n case 24:\n return [3 /*break*/, 26];\n case 25:\n throw err_1;\n case 26:\n return [3 /*break*/, 27];\n case 27:\n return [3 /*break*/, 4];\n case 28:\n // if it comes here, means we called break. which happens only if we have logged out.\n // which means it's a 401, so we throw\n throw returnObj;\n }\n });\n });\n };\n return AuthHttpRequest;\n})();\nexports.default = AuthHttpRequest;\nfunction setAuthorizationHeaderIfRequired(requestConfig) {\n return __awaiter(this, void 0, void 0, function () {\n var accessToken, refreshToken;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (requestConfig.headers === undefined) {\n // This is makes TS happy\n requestConfig.headers = {};\n }\n (0, logger_1.logDebugMessage)(\"setAuthorizationHeaderIfRequired: adding existing tokens as header\");\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"access\")];\n case 1:\n accessToken = _b.sent();\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"refresh\")];\n case 2:\n refreshToken = _b.sent();\n // We don't add the refresh token because that's only required by the refresh call which is done with fetch\n // Still, we only add the Authorization header if both are present, because we are planning to add an option to expose the\n // access token to the frontend while using cookie based auth - so that users can get the access token to use\n if (accessToken !== undefined && refreshToken !== undefined) {\n if (\n requestConfig.headers[\"Authorization\"] !== undefined ||\n requestConfig.headers[\"authorization\"] !== undefined\n ) {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: Authorization header defined by the user, not adding\"\n );\n } else {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: added authorization header\"\n );\n requestConfig.headers = __assign(__assign({}, requestConfig.headers), {\n Authorization: \"Bearer \".concat(accessToken)\n });\n requestConfig.__supertokensAddedAuthHeader = true;\n }\n } else {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: token for header based auth not found\"\n );\n }\n return [2 /*return*/];\n }\n });\n });\n}\nfunction saveTokensFromHeaders(response) {\n return __awaiter(this, void 0, void 0, function () {\n var refreshToken, accessToken, frontToken, responseHeaders_1, antiCsrfToken, tok;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: Saving updated tokens from the response\");\n refreshToken = response.headers[\"st-refresh-token\"];\n if (!(refreshToken !== undefined)) return [3 /*break*/, 2];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: saving new refresh token\");\n return [4 /*yield*/, (0, fetch_1.setToken)(\"refresh\", refreshToken)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n accessToken = response.headers[\"st-access-token\"];\n if (!(accessToken !== undefined)) return [3 /*break*/, 4];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: saving new access token\");\n return [4 /*yield*/, (0, fetch_1.setToken)(\"access\", accessToken)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n frontToken = response.headers[\"front-token\"];\n if (!(frontToken !== undefined)) return [3 /*break*/, 6];\n (0, logger_1.logDebugMessage)(\"doRequest: Setting sFrontToken: \" + frontToken);\n return [4 /*yield*/, fetch_1.FrontToken.setItem(frontToken)];\n case 5:\n _b.sent();\n responseHeaders_1 = new Headers();\n Object.entries(response.headers).forEach(function (_b) {\n var key = _b[0],\n value = _b[1];\n Array.isArray(value)\n ? value.forEach(function (item) {\n return responseHeaders_1.append(key, item);\n })\n : responseHeaders_1.append(key, value);\n });\n (0,\n fetch_1.updateClockSkewUsingFrontToken)({ frontToken: frontToken, responseHeaders: responseHeaders_1 });\n _b.label = 6;\n case 6:\n antiCsrfToken = response.headers[\"anti-csrf\"];\n if (!(antiCsrfToken !== undefined)) return [3 /*break*/, 9];\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(false)];\n case 7:\n tok = _b.sent();\n if (!(tok.status === \"EXISTS\")) return [3 /*break*/, 9];\n (0, logger_1.logDebugMessage)(\"doRequest: Setting anti-csrf token\");\n return [4 /*yield*/, fetch_1.AntiCsrfToken.setItem(tok.lastAccessTokenUpdate, antiCsrfToken)];\n case 8:\n _b.sent();\n _b.label = 9;\n case 9:\n return [2 /*return*/];\n }\n });\n });\n}\nfunction removeAuthHeaderIfMatchesLocalToken(config) {\n return __awaiter(this, void 0, void 0, function () {\n var accessToken, refreshToken, authHeader, res;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"access\")];\n case 1:\n accessToken = _b.sent();\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"refresh\")];\n case 2:\n refreshToken = _b.sent();\n authHeader = config.headers.Authorization || config.headers.authorization;\n if (accessToken !== undefined && refreshToken !== undefined) {\n if (authHeader === \"Bearer \".concat(accessToken) || \"__supertokensAddedAuthHeader\" in config) {\n // We are ignoring the Authorization header set by the user in this case, because it would cause issues\n // If we do not ignore this, then this header would be used even if the request is being retried after a refresh, even though it contains an outdated access token.\n // This causes an infinite refresh loop.\n (0, logger_1.logDebugMessage)(\n \"removeAuthHeaderIfMatchesLocalToken: Removing Authorization from user provided headers because it contains our access token\"\n );\n res = __assign(__assign({}, config), { headers: __assign({}, config.headers) });\n delete res.headers.authorization;\n delete res.headers.Authorization;\n return [2 /*return*/, res];\n }\n }\n return [2 /*return*/, config];\n }\n });\n });\n}\n","\"use strict\";\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createAxiosErrorFromFetchResp = void 0;\n/**\n * From axios package\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nfunction enhanceAxiosError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n}\nfunction createAxiosErrorFromFetchResp(responseOrError) {\n return __awaiter(this, void 0, void 0, function () {\n var config, isResponse, axiosResponse, contentType, data, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n config = {\n url: responseOrError.url,\n headers: responseOrError.headers\n };\n isResponse = \"status\" in responseOrError;\n if (!isResponse) return [3 /*break*/, 12];\n contentType = responseOrError.headers.get(\"content-type\");\n data = void 0;\n if (!(contentType === null)) return [3 /*break*/, 5];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, responseOrError.text()];\n case 2:\n data = _b.sent();\n return [3 /*break*/, 4];\n case 3:\n _a = _b.sent();\n data = \"\";\n return [3 /*break*/, 4];\n case 4:\n return [3 /*break*/, 11];\n case 5:\n if (!contentType.includes(\"application/json\")) return [3 /*break*/, 7];\n return [4 /*yield*/, responseOrError.json()];\n case 6:\n data = _b.sent();\n return [3 /*break*/, 11];\n case 7:\n if (!contentType.includes(\"text/\")) return [3 /*break*/, 9];\n return [4 /*yield*/, responseOrError.text()];\n case 8:\n data = _b.sent();\n return [3 /*break*/, 11];\n case 9:\n return [4 /*yield*/, responseOrError.blob()];\n case 10:\n data = _b.sent();\n _b.label = 11;\n case 11:\n axiosResponse = {\n data: data,\n status: responseOrError.status,\n statusText: responseOrError.statusText,\n headers: responseOrError.headers,\n config: config,\n request: undefined\n };\n _b.label = 12;\n case 12:\n return [\n 2 /*return*/,\n enhanceAxiosError(\n isResponse\n ? new Error(\"Request failed with status code \" + responseOrError.status)\n : responseOrError,\n config,\n responseOrError.code,\n undefined,\n axiosResponse\n )\n ];\n }\n });\n });\n}\nexports.createAxiosErrorFromFetchResp = createAxiosErrorFromFetchResp;\n","\"use strict\";\nvar __extends =\n (this && this.__extends) ||\n (function () {\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b;\n }) ||\n function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n })();\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BooleanClaim = void 0;\nvar primitiveClaim_1 = require(\"./primitiveClaim\");\nvar BooleanClaim = /** @class */ (function (_super) {\n __extends(BooleanClaim, _super);\n function BooleanClaim(config) {\n var _this = _super.call(this, config) || this;\n _this.validators = __assign(__assign({}, _this.validators), {\n isTrue: function (maxAge) {\n return _this.validators.hasValue(true, maxAge);\n },\n isFalse: function (maxAge) {\n return _this.validators.hasValue(false, maxAge);\n }\n });\n return _this;\n }\n return BooleanClaim;\n})(primitiveClaim_1.PrimitiveClaim);\nexports.BooleanClaim = BooleanClaim;\n","\"use strict\";\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PrimitiveArrayClaim = void 0;\nvar dateProvider_1 = require(\"../utils/dateProvider\");\nvar PrimitiveArrayClaim = /** @class */ (function () {\n function PrimitiveArrayClaim(config) {\n var _this = this;\n this.validators = {\n includes: function (val, maxAgeInSeconds, id) {\n if (maxAgeInSeconds === void 0) {\n maxAgeInSeconds = _this.defaultMaxAgeInSeconds;\n }\n var DateProvider = dateProvider_1.default.getReferenceOrThrow().dateProvider;\n return {\n id: id !== undefined ? id : _this.id,\n refresh: function (ctx) {\n return _this.refresh(ctx);\n },\n shouldRefresh: function (payload, ctx) {\n if (maxAgeInSeconds !== undefined && maxAgeInSeconds < DateProvider.getThresholdInSeconds()) {\n throw new Error(\n \"maxAgeInSeconds must be greater than or equal to the DateProvider threshold value -> \".concat(\n DateProvider.getThresholdInSeconds()\n )\n );\n }\n return (\n _this.getValueFromPayload(payload, ctx) === undefined ||\n // We know payload[this.id] is defined since the value is not undefined in this branch\n (maxAgeInSeconds !== undefined &&\n payload[_this.id].t < DateProvider.now() - maxAgeInSeconds * 1000)\n );\n },\n validate: function (payload, ctx) {\n return __awaiter(_this, void 0, void 0, function () {\n var claimVal, ageInSeconds;\n return __generator(this, function (_a) {\n claimVal = this.getValueFromPayload(payload, ctx);\n if (claimVal === undefined) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"value does not exist\",\n expectedToInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n ageInSeconds = (DateProvider.now() - this.getLastFetchedTime(payload, ctx)) / 1000;\n if (maxAgeInSeconds !== undefined && ageInSeconds > maxAgeInSeconds) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"expired\",\n ageInSeconds: ageInSeconds,\n maxAgeInSeconds: maxAgeInSeconds\n }\n }\n ];\n }\n if (!claimVal.includes(val)) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"wrong value\",\n expectedToInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n return [2 /*return*/, { isValid: true }];\n });\n });\n }\n };\n },\n excludes: function (val, maxAgeInSeconds, id) {\n if (maxAgeInSeconds === void 0) {\n maxAgeInSeconds = _this.defaultMaxAgeInSeconds;\n }\n var DateProvider = dateProvider_1.default.getReferenceOrThrow().dateProvider;\n return {\n id: id !== undefined ? id : _this.id,\n refresh: function (ctx) {\n return _this.refresh(ctx);\n },\n shouldRefresh: function (payload, ctx) {\n if (maxAgeInSeconds !== undefined && maxAgeInSeconds < DateProvider.getThresholdInSeconds()) {\n throw new Error(\n \"maxAgeInSeconds must be greater than or equal to the DateProvider threshold value -> \".concat(\n DateProvider.getThresholdInSeconds()\n )\n );\n }\n return (\n _this.getValueFromPayload(payload, ctx) === undefined ||\n // We know payload[this.id] is defined since the value is not undefined in this branch\n (maxAgeInSeconds !== undefined &&\n payload[_this.id].t < DateProvider.now() - maxAgeInSeconds * 1000)\n );\n },\n validate: function (payload, ctx) {\n return __awaiter(_this, void 0, void 0, function () {\n var claimVal, ageInSeconds;\n return __generator(this, function (_a) {\n claimVal = this.getValueFromPayload(payload, ctx);\n if (claimVal === undefined) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"value does not exist\",\n expectedToNotInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n ageInSeconds = (DateProvider.now() - this.getLastFetchedTime(payload, ctx)) / 1000;\n if (maxAgeInSeconds !== undefined && ageInSeconds > maxAgeInSeconds) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"expired\",\n ageInSeconds: ageInSeconds,\n maxAgeInSeconds: maxAgeInSeconds\n }\n }\n ];\n }\n if (claimVal.includes(val)) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"wrong value\",\n expectedToNotInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n return [2 /*return*/, { isValid: true }];\n });\n });\n }\n };\n },\n includesAll: function (val, maxAgeInSeconds, id) {\n if (maxAgeInSeconds === void 0) {\n maxAgeInSeconds = _this.defaultMaxAgeInSeconds;\n }\n var DateProvider = dateProvider_1.default.getReferenceOrThrow().dateProvider;\n return {\n id: id !== undefined ? id : _this.id,\n refresh: function (ctx) {\n return _this.refresh(ctx);\n },\n shouldRefresh: function (payload, ctx) {\n if (maxAgeInSeconds !== undefined && maxAgeInSeconds < DateProvider.getThresholdInSeconds()) {\n throw new Error(\n \"maxAgeInSeconds must be greater than or equal to the DateProvider threshold value -> \".concat(\n DateProvider.getThresholdInSeconds()\n )\n );\n }\n return (\n _this.getValueFromPayload(payload, ctx) === undefined ||\n // We know payload[this.id] is defined since the value is not undefined in this branch\n (maxAgeInSeconds !== undefined &&\n payload[_this.id].t < DateProvider.now() - maxAgeInSeconds * 1000)\n );\n },\n validate: function (payload, ctx) {\n return __awaiter(_this, void 0, void 0, function () {\n var claimVal, ageInSeconds, claimSet, isValid;\n return __generator(this, function (_a) {\n claimVal = this.getValueFromPayload(payload, ctx);\n if (claimVal === undefined) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"value does not exist\",\n expectedToInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n ageInSeconds = (DateProvider.now() - this.getLastFetchedTime(payload, ctx)) / 1000;\n if (maxAgeInSeconds !== undefined && ageInSeconds > maxAgeInSeconds) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"expired\",\n ageInSeconds: ageInSeconds,\n maxAgeInSeconds: maxAgeInSeconds\n }\n }\n ];\n }\n claimSet = new Set(claimVal);\n isValid = val.every(function (v) {\n return claimSet.has(v);\n });\n return [\n 2 /*return*/,\n isValid\n ? { isValid: isValid }\n : {\n isValid: isValid,\n reason: {\n message: \"wrong value\",\n expectedToInclude: val,\n actualValue: claimVal\n }\n }\n ];\n });\n });\n }\n };\n },\n includesAny: function (val, maxAgeInSeconds, id) {\n if (maxAgeInSeconds === void 0) {\n maxAgeInSeconds = _this.defaultMaxAgeInSeconds;\n }\n var DateProvider = dateProvider_1.default.getReferenceOrThrow().dateProvider;\n return {\n id: id !== undefined ? id : _this.id,\n refresh: function (ctx) {\n return _this.refresh(ctx);\n },\n shouldRefresh: function (payload, ctx) {\n if (maxAgeInSeconds !== undefined && maxAgeInSeconds < DateProvider.getThresholdInSeconds()) {\n throw new Error(\n \"maxAgeInSeconds must be greater than or equal to the DateProvider threshold value -> \".concat(\n DateProvider.getThresholdInSeconds()\n )\n );\n }\n return (\n _this.getValueFromPayload(payload, ctx) === undefined ||\n // We know payload[this.id] is defined since the value is not undefined in this branch\n (maxAgeInSeconds !== undefined &&\n payload[_this.id].t < DateProvider.now() - maxAgeInSeconds * 1000)\n );\n },\n validate: function (payload, ctx) {\n return __awaiter(_this, void 0, void 0, function () {\n var claimVal, ageInSeconds, claimSet, isValid;\n return __generator(this, function (_a) {\n claimVal = this.getValueFromPayload(payload, ctx);\n if (claimVal === undefined) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"value does not exist\",\n expectedToInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n ageInSeconds = (DateProvider.now() - this.getLastFetchedTime(payload, ctx)) / 1000;\n if (maxAgeInSeconds !== undefined && ageInSeconds > maxAgeInSeconds) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"expired\",\n ageInSeconds: ageInSeconds,\n maxAgeInSeconds: maxAgeInSeconds\n }\n }\n ];\n }\n claimSet = new Set(claimVal);\n isValid = val.some(function (v) {\n return claimSet.has(v);\n });\n return [\n 2 /*return*/,\n isValid\n ? { isValid: isValid }\n : {\n isValid: isValid,\n reason: {\n message: \"wrong value\",\n expectedToIncludeAtLeastOneOf: val,\n actualValue: claimVal\n }\n }\n ];\n });\n });\n }\n };\n },\n excludesAll: function (val, maxAgeInSeconds, id) {\n if (maxAgeInSeconds === void 0) {\n maxAgeInSeconds = _this.defaultMaxAgeInSeconds;\n }\n var DateProvider = dateProvider_1.default.getReferenceOrThrow().dateProvider;\n return {\n id: id !== undefined ? id : _this.id,\n refresh: function (ctx) {\n return _this.refresh(ctx);\n },\n shouldRefresh: function (payload, ctx) {\n if (maxAgeInSeconds !== undefined && maxAgeInSeconds < DateProvider.getThresholdInSeconds()) {\n throw new Error(\n \"maxAgeInSeconds must be greater than or equal to the DateProvider threshold value -> \".concat(\n DateProvider.getThresholdInSeconds()\n )\n );\n }\n return (\n _this.getValueFromPayload(payload, ctx) === undefined ||\n // We know payload[this.id] is defined since the value is not undefined in this branch\n (maxAgeInSeconds !== undefined &&\n payload[_this.id].t < DateProvider.now() - maxAgeInSeconds * 1000)\n );\n },\n validate: function (payload, ctx) {\n return __awaiter(_this, void 0, void 0, function () {\n var claimVal, ageInSeconds, claimSet, isValid;\n return __generator(this, function (_a) {\n claimVal = this.getValueFromPayload(payload, ctx);\n if (claimVal === undefined) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"value does not exist\",\n expectedToNotInclude: val,\n actualValue: claimVal\n }\n }\n ];\n }\n ageInSeconds = (DateProvider.now() - this.getLastFetchedTime(payload, ctx)) / 1000;\n if (maxAgeInSeconds !== undefined && ageInSeconds > maxAgeInSeconds) {\n return [\n 2 /*return*/,\n {\n isValid: false,\n reason: {\n message: \"expired\",\n ageInSeconds: ageInSeconds,\n maxAgeInSeconds: maxAgeInSeconds\n }\n }\n ];\n }\n claimSet = new Set(claimVal);\n isValid = val.every(function (v) {\n return !claimSet.has(v);\n });\n return [\n 2 /*return*/,\n isValid\n ? { isValid: isValid }\n : {\n isValid: isValid,\n reason: {\n message: \"wrong value\",\n expectedToNotInclude: val,\n actualValue: claimVal\n }\n }\n ];\n });\n });\n }\n };\n }\n };\n this.id = config.id;\n this.refresh = config.refresh;\n this.defaultMaxAgeInSeconds = config.defaultMaxAgeInSeconds;\n }\n PrimitiveArrayClaim.prototype.getValueFromPayload = function (payload, _userContext) {\n return payload[this.id] !== undefined ? payload[this.id].v : undefined;\n };\n PrimitiveArrayClaim.prototype.getLastFetchedTime = function (payload, _userContext) {\n return payload[this.id] !== undefined ? payload[this.id].t : undefined;\n };\n return PrimitiveArrayClaim;\n})();\nexports.PrimitiveArrayClaim = PrimitiveArrayClaim;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PrimitiveClaim = void 0;\nvar dateProvider_1 = require(\"../utils/dateProvider\");\nvar PrimitiveClaim = /** @class */ (function () {\n function PrimitiveClaim(config) {\n var _this = this;\n this.validators = {\n hasValue: function (val, maxAgeInSeconds, id) {\n if (maxAgeInSeconds === void 0) {\n maxAgeInSeconds = _this.defaultMaxAgeInSeconds;\n }\n var DateProvider = dateProvider_1.default.getReferenceOrThrow().dateProvider;\n return {\n id: id !== undefined ? id : _this.id,\n refresh: function (ctx) {\n return _this.refresh(ctx);\n },\n shouldRefresh: function (payload, ctx) {\n if (maxAgeInSeconds !== undefined && maxAgeInSeconds < DateProvider.getThresholdInSeconds()) {\n throw new Error(\n \"maxAgeInSeconds must be greater than or equal to the DateProvider threshold value -> \".concat(\n DateProvider.getThresholdInSeconds()\n )\n );\n }\n return (\n _this.getValueFromPayload(payload, ctx) === undefined ||\n // We know payload[this.id] is defined since the value is not undefined in this branch\n (maxAgeInSeconds !== undefined &&\n payload[_this.id].t < DateProvider.now() - maxAgeInSeconds * 1000)\n );\n },\n validate: function (payload, ctx) {\n var claimVal = _this.getValueFromPayload(payload, ctx);\n if (claimVal === undefined) {\n return {\n isValid: false,\n reason: { message: \"value does not exist\", expectedValue: val, actualValue: claimVal }\n };\n }\n var ageInSeconds = (DateProvider.now() - _this.getLastFetchedTime(payload, ctx)) / 1000;\n if (maxAgeInSeconds !== undefined && ageInSeconds > maxAgeInSeconds) {\n return {\n isValid: false,\n reason: {\n message: \"expired\",\n ageInSeconds: ageInSeconds,\n maxAgeInSeconds: maxAgeInSeconds\n }\n };\n }\n if (claimVal !== val) {\n return {\n isValid: false,\n reason: { message: \"wrong value\", expectedValue: val, actualValue: claimVal }\n };\n }\n return { isValid: true };\n }\n };\n }\n };\n this.id = config.id;\n this.refresh = config.refresh;\n this.defaultMaxAgeInSeconds = config.defaultMaxAgeInSeconds;\n }\n PrimitiveClaim.prototype.getValueFromPayload = function (payload, _userContext) {\n return payload[this.id] !== undefined ? payload[this.id].v : undefined;\n };\n PrimitiveClaim.prototype.getLastFetchedTime = function (payload, _userContext) {\n return payload[this.id] !== undefined ? payload[this.id].t : undefined;\n };\n return PrimitiveClaim;\n})();\nexports.PrimitiveClaim = PrimitiveClaim;\n","\"use strict\";\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __extends =\n (this && this.__extends) ||\n (function () {\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b;\n }) ||\n function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n };\n })();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STGeneralError = void 0;\n/**\n * This error usually indicates that the API exposed by the backend SDKs responded\n * with `{status: \"GENERAL_ERROR\"}`. This should be used to show errors to the user\n * in your frontend application.\n */\nvar STGeneralError = /** @class */ (function (_super) {\n __extends(STGeneralError, _super);\n function STGeneralError(message) {\n var _this = _super.call(this, message) || this;\n _this.isSuperTokensGeneralError = true;\n return _this;\n }\n STGeneralError.isThisError = function (err) {\n return err.isSuperTokensGeneralError === true;\n };\n return STGeneralError;\n})(Error);\nexports.STGeneralError = STGeneralError;\n","\"use strict\";\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateClockSkewUsingFrontToken =\n exports.fireSessionUpdateEventsIfNecessary =\n exports.setFrontToken =\n exports.getFrontToken =\n exports.setAntiCSRF =\n exports.saveLastAccessTokenUpdate =\n exports.getTokenForHeaderAuth =\n exports.setToken =\n exports.getStorageNameForToken =\n exports.getLocalSessionState =\n exports.onInvalidClaimResponse =\n exports.onTokenUpdate =\n exports.onUnauthorisedResponse =\n exports.FrontToken =\n exports.AntiCsrfToken =\n void 0;\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar processState_1 = require(\"./processState\");\nvar version_1 = require(\"./version\");\nvar cookieHandler_1 = require(\"./utils/cookieHandler\");\nvar windowHandler_1 = require(\"./utils/windowHandler\");\nvar lockFactory_1 = require(\"./utils/lockFactory\");\nvar logger_1 = require(\"./logger\");\nvar dateProvider_1 = require(\"./utils/dateProvider\");\nvar AntiCsrfToken = /** @class */ (function () {\n function AntiCsrfToken() {}\n AntiCsrfToken.getToken = function (associatedAccessTokenUpdate) {\n return __awaiter(this, void 0, void 0, function () {\n var antiCsrf;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"AntiCsrfToken.getToken: called\");\n if (associatedAccessTokenUpdate === undefined) {\n AntiCsrfToken.tokenInfo = undefined;\n (0, logger_1.logDebugMessage)(\"AntiCsrfToken.getToken: returning undefined\");\n return [2 /*return*/, undefined];\n }\n if (!(AntiCsrfToken.tokenInfo === undefined)) return [3 /*break*/, 2];\n return [4 /*yield*/, getAntiCSRFToken()];\n case 1:\n antiCsrf = _a.sent();\n if (antiCsrf === null) {\n (0, logger_1.logDebugMessage)(\"AntiCsrfToken.getToken: returning undefined\");\n return [2 /*return*/, undefined];\n }\n AntiCsrfToken.tokenInfo = {\n antiCsrf: antiCsrf,\n associatedAccessTokenUpdate: associatedAccessTokenUpdate\n };\n return [3 /*break*/, 4];\n case 2:\n if (!(AntiCsrfToken.tokenInfo.associatedAccessTokenUpdate !== associatedAccessTokenUpdate))\n return [3 /*break*/, 4];\n // csrf token has changed.\n AntiCsrfToken.tokenInfo = undefined;\n return [4 /*yield*/, AntiCsrfToken.getToken(associatedAccessTokenUpdate)];\n case 3:\n return [2 /*return*/, _a.sent()];\n case 4:\n (0,\n logger_1.logDebugMessage)(\"AntiCsrfToken.getToken: returning: \" + AntiCsrfToken.tokenInfo.antiCsrf);\n return [2 /*return*/, AntiCsrfToken.tokenInfo.antiCsrf];\n }\n });\n });\n };\n AntiCsrfToken.removeToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"AntiCsrfToken.removeToken: called\");\n AntiCsrfToken.tokenInfo = undefined;\n return [4 /*yield*/, setAntiCSRF(undefined)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AntiCsrfToken.setItem = function (associatedAccessTokenUpdate, antiCsrf) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (associatedAccessTokenUpdate === undefined) {\n AntiCsrfToken.tokenInfo = undefined;\n return [2 /*return*/];\n }\n (0, logger_1.logDebugMessage)(\"AntiCsrfToken.setItem: called\");\n return [4 /*yield*/, setAntiCSRF(antiCsrf)];\n case 1:\n _a.sent();\n AntiCsrfToken.tokenInfo = {\n antiCsrf: antiCsrf,\n associatedAccessTokenUpdate: associatedAccessTokenUpdate\n };\n return [2 /*return*/];\n }\n });\n });\n };\n return AntiCsrfToken;\n})();\nexports.AntiCsrfToken = AntiCsrfToken;\n// Note: We do not store this in memory because another tab may have\n// modified this value, and if so, we may not know about it in this tab\nvar FrontToken = /** @class */ (function () {\n function FrontToken() {}\n FrontToken.getTokenInfo = function () {\n return __awaiter(this, void 0, void 0, function () {\n var frontToken, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"FrontToken.getTokenInfo: called\");\n return [4 /*yield*/, getFrontToken()];\n case 1:\n frontToken = _a.sent();\n if (!(frontToken === null)) return [3 /*break*/, 5];\n return [4 /*yield*/, getLocalSessionState(false)];\n case 2:\n if (!(_a.sent().status === \"EXISTS\")) return [3 /*break*/, 4];\n // this means that the id refresh token has been set, so we must\n // wait for this to be set or removed\n return [\n 4 /*yield*/,\n new Promise(function (resolve) {\n FrontToken.waiters.push(resolve);\n })\n ];\n case 3:\n // this means that the id refresh token has been set, so we must\n // wait for this to be set or removed\n _a.sent();\n return [2 /*return*/, FrontToken.getTokenInfo()];\n case 4:\n return [2 /*return*/, undefined];\n case 5:\n response = parseFrontToken(frontToken);\n (0, logger_1.logDebugMessage)(\"FrontToken.getTokenInfo: returning ate: \" + response.ate);\n (0, logger_1.logDebugMessage)(\"FrontToken.getTokenInfo: returning uid: \" + response.uid);\n (0, logger_1.logDebugMessage)(\"FrontToken.getTokenInfo: returning up: \" + response.up);\n return [2 /*return*/, response];\n }\n });\n });\n };\n FrontToken.removeToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"FrontToken.removeToken: called\");\n return [4 /*yield*/, setFrontToken(undefined)];\n case 1:\n _a.sent();\n // We are clearing all stored tokens here, because:\n // 1. removing FrontToken signals that the session is being cleared\n // 2. you can only have a single active session - this means that all tokens can be cleared from all auth-modes if one is being cleared\n // 3. some proxies remove the empty headers used to clear the other tokens (i.e.: https://github.com/supertokens/supertokens-website/issues/218)\n return [4 /*yield*/, setToken(\"access\", \"\")];\n case 2:\n // We are clearing all stored tokens here, because:\n // 1. removing FrontToken signals that the session is being cleared\n // 2. you can only have a single active session - this means that all tokens can be cleared from all auth-modes if one is being cleared\n // 3. some proxies remove the empty headers used to clear the other tokens (i.e.: https://github.com/supertokens/supertokens-website/issues/218)\n _a.sent();\n return [4 /*yield*/, setToken(\"refresh\", \"\")];\n case 3:\n _a.sent();\n return [4 /*yield*/, AntiCsrfToken.removeToken()];\n case 4:\n _a.sent();\n FrontToken.waiters.forEach(function (f) {\n return f(undefined);\n });\n FrontToken.waiters = [];\n return [2 /*return*/];\n }\n });\n });\n };\n FrontToken.setItem = function (frontToken) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // We update the refresh attempt info here as well, since this means that we've updated the session in some way\n // This could be both by a refresh call or if the access token was updated in a custom endpoint\n // By saving every time the access token has been updated, we cause an early retry if\n // another request has failed with a 401 with the previous access token and the token still exists.\n // Check the start and end of onUnauthorisedResponse\n // As a side-effect we reload the anti-csrf token to check if it was changed by another tab.\n return [4 /*yield*/, saveLastAccessTokenUpdate()];\n case 1:\n // We update the refresh attempt info here as well, since this means that we've updated the session in some way\n // This could be both by a refresh call or if the access token was updated in a custom endpoint\n // By saving every time the access token has been updated, we cause an early retry if\n // another request has failed with a 401 with the previous access token and the token still exists.\n // Check the start and end of onUnauthorisedResponse\n // As a side-effect we reload the anti-csrf token to check if it was changed by another tab.\n _a.sent();\n if (frontToken === \"remove\") {\n return [2 /*return*/, FrontToken.removeToken()];\n }\n (0, logger_1.logDebugMessage)(\"FrontToken.setItem: called\");\n return [4 /*yield*/, setFrontToken(frontToken)];\n case 2:\n _a.sent();\n FrontToken.waiters.forEach(function (f) {\n return f(undefined);\n });\n FrontToken.waiters = [];\n return [2 /*return*/];\n }\n });\n });\n };\n FrontToken.doesTokenExists = function () {\n return __awaiter(this, void 0, void 0, function () {\n var frontToken;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, getFrontTokenFromCookie()];\n case 1:\n frontToken = _a.sent();\n return [2 /*return*/, frontToken !== null];\n }\n });\n });\n };\n // these are waiters for when the idRefreshToken has been set, but this token has\n // not yet been set. Once this token is set or removed, the waiters are resolved.\n FrontToken.waiters = [];\n return FrontToken;\n})();\nexports.FrontToken = FrontToken;\n/**\n * @class AuthHttpRequest\n * @description wrapper for common http methods.\n */\nvar AuthHttpRequest = /** @class */ (function () {\n function AuthHttpRequest() {}\n AuthHttpRequest.init = function (config, recipeImpl) {\n (0, logger_1.logDebugMessage)(\"init: called\");\n (0, logger_1.logDebugMessage)(\"init: Input apiBasePath: \" + config.apiBasePath);\n (0, logger_1.logDebugMessage)(\"init: Input apiDomain: \" + config.apiDomain);\n (0, logger_1.logDebugMessage)(\"init: Input autoAddCredentials: \" + config.autoAddCredentials);\n (0, logger_1.logDebugMessage)(\"init: Input sessionTokenBackendDomain: \" + config.sessionTokenBackendDomain);\n (0, logger_1.logDebugMessage)(\"init: Input isInIframe: \" + config.isInIframe);\n (0, logger_1.logDebugMessage)(\"init: Input sessionExpiredStatusCode: \" + config.sessionExpiredStatusCode);\n (0, logger_1.logDebugMessage)(\"init: Input sessionTokenFrontendDomain: \" + config.sessionTokenFrontendDomain);\n (0, logger_1.logDebugMessage)(\"init: Input tokenTransferMethod: \" + config.tokenTransferMethod);\n var fetchedWindow = windowHandler_1.default.getReferenceOrThrow().windowHandler.getWindowUnsafe();\n AuthHttpRequest.env = fetchedWindow === undefined || fetchedWindow.fetch === undefined ? global : fetchedWindow;\n AuthHttpRequest.refreshTokenUrl = config.apiDomain + config.apiBasePath + \"/session/refresh\";\n AuthHttpRequest.signOutUrl = config.apiDomain + config.apiBasePath + \"/signout\";\n AuthHttpRequest.rid = \"session\";\n AuthHttpRequest.config = config;\n if (AuthHttpRequest.env.__supertokensOriginalFetch === undefined) {\n (0, logger_1.logDebugMessage)(\"init: __supertokensOriginalFetch is undefined\");\n // this block contains code that is run just once per page load..\n // all items in this block are attached to the global env so that\n // even if the init function is called more than once (maybe across JS scripts),\n // things will not get created multiple times.\n AuthHttpRequest.env.__supertokensOriginalFetch = AuthHttpRequest.env.fetch.bind(AuthHttpRequest.env);\n AuthHttpRequest.env.__supertokensSessionRecipe = recipeImpl;\n AuthHttpRequest.env.fetch =\n AuthHttpRequest.env.__supertokensSessionRecipe.addFetchInterceptorsAndReturnModifiedFetch({\n originalFetch: AuthHttpRequest.env.__supertokensOriginalFetch,\n userContext: {}\n });\n AuthHttpRequest.env.__supertokensSessionRecipe.addXMLHttpRequestInterceptor({\n userContext: {}\n });\n }\n AuthHttpRequest.recipeImpl = AuthHttpRequest.env.__supertokensSessionRecipe;\n AuthHttpRequest.initCalled = true;\n };\n var _a;\n _a = AuthHttpRequest;\n AuthHttpRequest.initCalled = false;\n AuthHttpRequest.doRequest = function (httpCall, config, url) {\n return __awaiter(void 0, void 0, void 0, function () {\n var doNotDoInterception,\n finalURL,\n origHeaders,\n accessToken,\n refreshToken,\n sessionRefreshAttempts,\n returnObj,\n preRequestLSS,\n clonedHeaders,\n configWithAntiCsrf,\n antiCsrfToken,\n transferMethod,\n response,\n errorMessage,\n retry;\n return __generator(_a, function (_b) {\n switch (_b.label) {\n case 0:\n if (!AuthHttpRequest.initCalled) {\n throw Error(\"init function not called\");\n }\n (0, logger_1.logDebugMessage)(\"doRequest: start of fetch interception\");\n doNotDoInterception = false;\n try {\n finalURL = void 0;\n if (typeof url === \"string\") {\n finalURL = url;\n } else if (typeof url === \"object\") {\n if (typeof url.url === \"string\") {\n finalURL = url.url;\n } else if (typeof url.href === \"string\") {\n finalURL = url.href;\n }\n }\n doNotDoInterception = !AuthHttpRequest.recipeImpl.shouldDoInterceptionBasedOnUrl(\n finalURL,\n AuthHttpRequest.config.apiDomain,\n AuthHttpRequest.config.sessionTokenBackendDomain\n );\n } catch (err) {\n if (err.message === \"Please provide a valid domain name\") {\n (0, logger_1.logDebugMessage)(\n \"doRequest: Trying shouldDoInterceptionBasedOnUrl with location.origin\"\n );\n // .origin gives the port as well..\n doNotDoInterception = !AuthHttpRequest.recipeImpl.shouldDoInterceptionBasedOnUrl(\n windowHandler_1.default.getReferenceOrThrow().windowHandler.location.getOrigin(),\n AuthHttpRequest.config.apiDomain,\n AuthHttpRequest.config.sessionTokenBackendDomain\n );\n } else {\n throw err;\n }\n }\n (0,\n logger_1.logDebugMessage)(\"doRequest: Value of doNotDoInterception: \" + doNotDoInterception);\n if (!doNotDoInterception) return [3 /*break*/, 2];\n (0, logger_1.logDebugMessage)(\"doRequest: Returning without interception\");\n return [4 /*yield*/, httpCall(config)];\n case 1:\n return [2 /*return*/, _b.sent()];\n case 2:\n origHeaders = new Headers(\n config !== undefined && config.headers !== undefined ? config.headers : url.headers\n );\n if (!origHeaders.has(\"Authorization\")) return [3 /*break*/, 5];\n return [4 /*yield*/, getTokenForHeaderAuth(\"access\")];\n case 3:\n accessToken = _b.sent();\n return [4 /*yield*/, getTokenForHeaderAuth(\"refresh\")];\n case 4:\n refreshToken = _b.sent();\n if (\n accessToken !== undefined &&\n refreshToken !== undefined &&\n origHeaders.get(\"Authorization\") === \"Bearer \".concat(accessToken)\n ) {\n // We are ignoring the Authorization header set by the user in this case, because it would cause issues\n // If we do not ignore this, then this header would be used even if the request is being retried after a refresh, even though it contains an outdated access token.\n // This causes an infinite refresh loop.\n (0, logger_1.logDebugMessage)(\n \"doRequest: Removing Authorization from user provided headers because it contains our access token\"\n );\n origHeaders.delete(\"Authorization\");\n }\n _b.label = 5;\n case 5:\n (0, logger_1.logDebugMessage)(\"doRequest: Interception started\");\n processState_1.ProcessState.getInstance().addState(\n processState_1.PROCESS_STATE.CALLING_INTERCEPTION_REQUEST\n );\n sessionRefreshAttempts = 0;\n returnObj = undefined;\n _b.label = 6;\n case 6:\n if (!true) return [3 /*break*/, 18];\n return [4 /*yield*/, getLocalSessionState(true)];\n case 7:\n preRequestLSS = _b.sent();\n clonedHeaders = new Headers(origHeaders);\n configWithAntiCsrf = __assign(__assign({}, config), { headers: clonedHeaders });\n if (!(preRequestLSS.status === \"EXISTS\")) return [3 /*break*/, 9];\n return [4 /*yield*/, AntiCsrfToken.getToken(preRequestLSS.lastAccessTokenUpdate)];\n case 8:\n antiCsrfToken = _b.sent();\n if (antiCsrfToken !== undefined) {\n (0, logger_1.logDebugMessage)(\"doRequest: Adding anti-csrf token to request\");\n clonedHeaders.set(\"anti-csrf\", antiCsrfToken);\n }\n _b.label = 9;\n case 9:\n if (AuthHttpRequest.config.autoAddCredentials) {\n (0, logger_1.logDebugMessage)(\"doRequest: Adding credentials include\");\n if (configWithAntiCsrf === undefined) {\n configWithAntiCsrf = {\n credentials: \"include\"\n };\n } else if (configWithAntiCsrf.credentials === undefined) {\n configWithAntiCsrf = __assign(__assign({}, configWithAntiCsrf), {\n credentials: \"include\"\n });\n }\n }\n // adding rid for anti-csrf protection: Anti-csrf via custom header\n if (!clonedHeaders.has(\"rid\")) {\n (0, logger_1.logDebugMessage)(\"doRequest: Adding rid header: anti-csrf\");\n clonedHeaders.set(\"rid\", \"anti-csrf\");\n } else {\n (0, logger_1.logDebugMessage)(\"doRequest: rid header was already there in request\");\n }\n transferMethod = AuthHttpRequest.config.tokenTransferMethod;\n (0, logger_1.logDebugMessage)(\"doRequest: Adding st-auth-mode header: \" + transferMethod);\n clonedHeaders.set(\"st-auth-mode\", transferMethod);\n return [4 /*yield*/, setAuthorizationHeaderIfRequired(clonedHeaders)];\n case 10:\n _b.sent();\n (0, logger_1.logDebugMessage)(\"doRequest: Making user's http call\");\n return [4 /*yield*/, httpCall(configWithAntiCsrf)];\n case 11:\n response = _b.sent();\n (0, logger_1.logDebugMessage)(\"doRequest: User's http call ended\");\n return [4 /*yield*/, saveTokensFromHeaders(response)];\n case 12:\n _b.sent();\n fireSessionUpdateEventsIfNecessary(\n preRequestLSS.status === \"EXISTS\",\n response.status,\n response.headers.get(\"front-token\")\n );\n if (!(response.status === AuthHttpRequest.config.sessionExpiredStatusCode))\n return [3 /*break*/, 14];\n (0, logger_1.logDebugMessage)(\"doRequest: Status code is: \" + response.status);\n /**\n * An API may return a 401 error response even with a valid session, causing a session refresh loop in the interceptor.\n * To prevent this infinite loop, we break out of the loop after retrying the original request a specified number of times.\n * The maximum number of retry attempts is defined by maxRetryAttemptsForSessionRefresh config variable.\n */\n if (sessionRefreshAttempts >= AuthHttpRequest.config.maxRetryAttemptsForSessionRefresh) {\n (0, logger_1.logDebugMessage)(\n \"doRequest: Maximum session refresh attempts reached. sessionRefreshAttempts: \"\n .concat(sessionRefreshAttempts, \", maxRetryAttemptsForSessionRefresh: \")\n .concat(AuthHttpRequest.config.maxRetryAttemptsForSessionRefresh)\n );\n errorMessage = \"Received a 401 response from \"\n .concat(\n url,\n \". Attempted to refresh the session and retry the request with the updated session tokens \"\n )\n .concat(\n AuthHttpRequest.config.maxRetryAttemptsForSessionRefresh,\n \" times, but each attempt resulted in a 401 error. The maximum session refresh limit has been reached. Please investigate your API. To increase the session refresh attempts, update maxRetryAttemptsForSessionRefresh in the config.\"\n );\n console.error(errorMessage);\n throw new Error(errorMessage);\n }\n return [4 /*yield*/, onUnauthorisedResponse(preRequestLSS)];\n case 13:\n retry = _b.sent();\n sessionRefreshAttempts++;\n (0, logger_1.logDebugMessage)(\"doRequest: sessionRefreshAttempts: \" + sessionRefreshAttempts);\n if (retry.result !== \"RETRY\") {\n (0, logger_1.logDebugMessage)(\"doRequest: Not retrying original request\");\n if (retry.error !== undefined) {\n if (retry.error instanceof Response) {\n returnObj = retry.error;\n } else {\n throw retry.error;\n }\n } else {\n returnObj = response;\n }\n return [3 /*break*/, 18];\n }\n (0, logger_1.logDebugMessage)(\"doRequest: Retrying original request\");\n return [3 /*break*/, 17];\n case 14:\n if (!(response.status === AuthHttpRequest.config.invalidClaimStatusCode))\n return [3 /*break*/, 16];\n return [4 /*yield*/, onInvalidClaimResponse(response)];\n case 15:\n _b.sent();\n _b.label = 16;\n case 16:\n return [2 /*return*/, response];\n case 17:\n return [3 /*break*/, 6];\n case 18:\n // if it comes here, means we breaked. which happens only if we have logged out.\n return [2 /*return*/, returnObj];\n }\n });\n });\n };\n AuthHttpRequest.attemptRefreshingSession = function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var preRequestLSS, refresh;\n return __generator(_a, function (_b) {\n switch (_b.label) {\n case 0:\n if (!AuthHttpRequest.initCalled) {\n throw Error(\"init function not called\");\n }\n return [4 /*yield*/, getLocalSessionState(false)];\n case 1:\n preRequestLSS = _b.sent();\n return [4 /*yield*/, onUnauthorisedResponse(preRequestLSS)];\n case 2:\n refresh = _b.sent();\n if (refresh.result === \"API_ERROR\") {\n throw refresh.error;\n }\n return [2 /*return*/, refresh.result === \"RETRY\"];\n }\n });\n });\n };\n return AuthHttpRequest;\n})();\nexports.default = AuthHttpRequest;\nvar LAST_ACCESS_TOKEN_UPDATE = \"st-last-access-token-update\";\nvar REFRESH_TOKEN_NAME = \"st-refresh-token\";\nvar ACCESS_TOKEN_NAME = \"st-access-token\";\nvar ANTI_CSRF_NAME = \"sAntiCsrf\";\nvar FRONT_TOKEN_NAME = \"sFrontToken\";\n/**\n * @description attempts to call the refresh token API each time we are sure the session has expired, or it throws an error or,\n * or the ID_COOKIE_NAME has changed value -> which may mean that we have a new set of tokens.\n */\nfunction onUnauthorisedResponse(preRequestLSS) {\n return __awaiter(this, void 0, void 0, function () {\n var lock,\n postLockLSS,\n postLockSessionExists,\n preRequestSessionExists,\n sessionStatusChanged,\n accessTokenTimestampChanged,\n headers,\n antiCsrfToken,\n transferMethod,\n preAPIResult,\n response,\n isUnauthorised,\n errorMessage,\n error_1,\n postRequestLSS;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4 /*yield*/, lockFactory_1.default.getReferenceOrThrow().lockFactory()];\n case 1:\n lock = _b.sent();\n _b.label = 2;\n case 2:\n if (!true) return [3 /*break*/, 23];\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: trying to acquire lock\");\n return [4 /*yield*/, lock.acquireLock(\"REFRESH_TOKEN_USE\", 1000)];\n case 3:\n if (!_b.sent()) return [3 /*break*/, 21];\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: lock acquired\");\n _b.label = 4;\n case 4:\n _b.trys.push([4, 17, 19, 21]);\n return [4 /*yield*/, getLocalSessionState(false)];\n case 5:\n postLockLSS = _b.sent();\n if (postLockLSS.status === \"NOT_EXISTS\") {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: Not refreshing because local session state is NOT_EXISTS\"\n );\n // if it comes here, it means a request was made thinking\n // that the session exists, but it doesn't actually exist.\n AuthHttpRequest.config.onHandleEvent({\n action: \"UNAUTHORISED\",\n sessionExpiredOrRevoked: false,\n userContext: {}\n });\n return [2 /*return*/, { result: \"SESSION_EXPIRED\" }];\n }\n postLockSessionExists = postLockLSS.status === \"EXISTS\";\n preRequestSessionExists = preRequestLSS.status === \"EXISTS\";\n sessionStatusChanged = postLockLSS.status !== preRequestLSS.status;\n accessTokenTimestampChanged =\n \"lastAccessTokenUpdate\" in postLockLSS &&\n \"lastAccessTokenUpdate\" in preRequestLSS &&\n postLockLSS.lastAccessTokenUpdate !== preRequestLSS.lastAccessTokenUpdate;\n // If the session status has changed, we should return early and retry the request\n // only if postLockLSS.status is \"EXISTS\".\n if (sessionStatusChanged && postLockSessionExists) {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: Retrying early because session status has changed and postLockLSS.status is EXISTS\"\n );\n return [2 /*return*/, { result: \"RETRY\" }];\n }\n // If the session exists in both postLockLSS and preRequestLSS, we should return early\n // and retry the request only if the access token timestamp has changed.\n // This indicates that another process has already called this API and succeeded,\n // so we don't need to call it again.\n if (postLockSessionExists && preRequestSessionExists && accessTokenTimestampChanged) {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: Retrying early because pre and post lastAccessTokenUpdate don't match\"\n );\n return [2 /*return*/, { result: \"RETRY\" }];\n }\n headers = new Headers();\n if (!(preRequestLSS.status === \"EXISTS\")) return [3 /*break*/, 7];\n return [4 /*yield*/, AntiCsrfToken.getToken(preRequestLSS.lastAccessTokenUpdate)];\n case 6:\n antiCsrfToken = _b.sent();\n if (antiCsrfToken !== undefined) {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: Adding anti-csrf token to refresh API call\"\n );\n headers.set(\"anti-csrf\", antiCsrfToken);\n }\n _b.label = 7;\n case 7:\n (0,\n logger_1.logDebugMessage)(\"onUnauthorisedResponse: Adding rid and fdi-versions to refresh call header\");\n headers.set(\"rid\", AuthHttpRequest.rid);\n headers.set(\"fdi-version\", version_1.supported_fdi.join(\",\"));\n transferMethod = AuthHttpRequest.config.tokenTransferMethod;\n (0,\n logger_1.logDebugMessage)(\"onUnauthorisedResponse: Adding st-auth-mode header: \" + transferMethod);\n headers.set(\"st-auth-mode\", transferMethod);\n return [4 /*yield*/, setAuthorizationHeaderIfRequired(headers, true)];\n case 8:\n _b.sent();\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: Calling refresh pre API hook\");\n return [\n 4 /*yield*/,\n AuthHttpRequest.config.preAPIHook({\n action: \"REFRESH_SESSION\",\n requestInit: {\n method: \"post\",\n credentials: \"include\",\n headers: headers\n },\n url: AuthHttpRequest.refreshTokenUrl,\n userContext: {}\n })\n ];\n case 9:\n preAPIResult = _b.sent();\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: Making refresh call\");\n return [\n 4 /*yield*/,\n AuthHttpRequest.env.__supertokensOriginalFetch(preAPIResult.url, preAPIResult.requestInit)\n ];\n case 10:\n response = _b.sent();\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: Refresh call ended\");\n return [4 /*yield*/, saveTokensFromHeaders(response)];\n case 11:\n _b.sent();\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: Refresh status code is: \" + response.status);\n isUnauthorised = response.status === AuthHttpRequest.config.sessionExpiredStatusCode;\n if (!(response.headers.get(\"front-token\") === null)) return [3 /*break*/, 14];\n if (!isUnauthorised) return [3 /*break*/, 13];\n // There is a case where the FE thinks the session is valid, but backend doesn't get the tokens.\n // In this event, session expired error will be thrown and the frontend should remove this token\n return [4 /*yield*/, FrontToken.setItem(\"remove\")];\n case 12:\n // There is a case where the FE thinks the session is valid, but backend doesn't get the tokens.\n // In this event, session expired error will be thrown and the frontend should remove this token\n _b.sent();\n return [3 /*break*/, 14];\n case 13:\n if (response.status === 200) {\n errorMessage =\n \"The 'front-token' header is missing from a successful refresh-session response. The most likely causes are proxy settings (e.g.: 'front-token' missing from 'access-control-expose-headers' or a proxy stripping this header). Please investigate your API.\";\n console.error(errorMessage);\n throw new Error(errorMessage);\n }\n _b.label = 14;\n case 14:\n fireSessionUpdateEventsIfNecessary(\n preRequestLSS.status === \"EXISTS\",\n response.status,\n isUnauthorised && response.headers.get(\"front-token\") === null\n ? \"remove\"\n : response.headers.get(\"front-token\")\n );\n if (response.status >= 300) {\n throw response;\n }\n return [\n 4 /*yield*/,\n AuthHttpRequest.config.postAPIHook({\n action: \"REFRESH_SESSION\",\n fetchResponse: response.clone(),\n requestInit: preAPIResult.requestInit,\n url: preAPIResult.url,\n userContext: {}\n })\n ];\n case 15:\n _b.sent();\n return [4 /*yield*/, getLocalSessionState(false)];\n case 16:\n if (_b.sent().status === \"NOT_EXISTS\") {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: local session doesn't exist, so returning session expired\"\n );\n // The execution should never come here.. but just in case.\n // removed by server during refresh. So we logout\n // we do not send \"UNAUTHORISED\" event here because\n // this is a result of the refresh API returning a session expiry, which\n // means that the frontend did not know for sure that the session existed\n // in the first place.\n return [2 /*return*/, { result: \"SESSION_EXPIRED\" }];\n }\n AuthHttpRequest.config.onHandleEvent({\n action: \"REFRESH_SESSION\",\n userContext: {}\n });\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: Sending RETRY signal\");\n return [2 /*return*/, { result: \"RETRY\" }];\n case 17:\n error_1 = _b.sent();\n return [4 /*yield*/, getLocalSessionState(false)];\n case 18:\n if (_b.sent().status === \"NOT_EXISTS\") {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: local session doesn't exist, so returning session expired\"\n );\n // removed by server.\n // we do not send \"UNAUTHORISED\" event here because\n // this is a result of the refresh API returning a session expiry, which\n // means that the frontend did not know for sure that the session existed\n // in the first place.\n return [2 /*return*/, { result: \"SESSION_EXPIRED\", error: error_1 }];\n }\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: sending API_ERROR\");\n return [2 /*return*/, { result: \"API_ERROR\", error: error_1 }];\n case 19:\n return [4 /*yield*/, lock.releaseLock(\"REFRESH_TOKEN_USE\")];\n case 20:\n _b.sent();\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: Released lock\");\n return [7 /*endfinally*/];\n case 21:\n return [4 /*yield*/, getLocalSessionState(false)];\n case 22:\n postRequestLSS = _b.sent();\n if (postRequestLSS.status === \"NOT_EXISTS\") {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: lock acquired failed and local session doesn't exist, so sending SESSION_EXPIRED\"\n );\n // removed by server. So we logout\n return [2 /*return*/, { result: \"SESSION_EXPIRED\" }];\n } else {\n if (\n postRequestLSS.status !== preRequestLSS.status ||\n (postRequestLSS.status === \"EXISTS\" &&\n preRequestLSS.status === \"EXISTS\" &&\n postRequestLSS.lastAccessTokenUpdate !== preRequestLSS.lastAccessTokenUpdate)\n ) {\n (0, logger_1.logDebugMessage)(\n \"onUnauthorisedResponse: lock acquired failed and retrying early because pre and post lastAccessTokenUpdate don't match\"\n );\n return [2 /*return*/, { result: \"RETRY\" }];\n }\n // here we try to call the API again since we probably failed to acquire lock and nothing has changed.\n }\n return [3 /*break*/, 2];\n case 23:\n return [2 /*return*/];\n }\n });\n });\n}\nexports.onUnauthorisedResponse = onUnauthorisedResponse;\nfunction onTokenUpdate() {\n (0, logger_1.logDebugMessage)(\"onTokenUpdate: firing ACCESS_TOKEN_PAYLOAD_UPDATED event\");\n AuthHttpRequest.config.onHandleEvent({\n action: \"ACCESS_TOKEN_PAYLOAD_UPDATED\",\n userContext: {}\n });\n}\nexports.onTokenUpdate = onTokenUpdate;\nfunction onInvalidClaimResponse(response) {\n return __awaiter(this, void 0, void 0, function () {\n var claimValidationErrors, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 2, , 3]);\n return [\n 4 /*yield*/,\n AuthHttpRequest.recipeImpl.getInvalidClaimsFromResponse({\n response: response,\n userContext: {}\n })\n ];\n case 1:\n claimValidationErrors = _c.sent();\n // This shouldn't be undefined normally, but since we can't be certain about the shape of the response object so we check it like this.\n // It could still be something else, but chance of that happening by accident is really low.\n if (claimValidationErrors) {\n AuthHttpRequest.config.onHandleEvent({\n action: \"API_INVALID_CLAIM\",\n claimValidationErrors: claimValidationErrors,\n userContext: {}\n });\n }\n return [3 /*break*/, 3];\n case 2:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 3:\n return [2 /*return*/];\n }\n });\n });\n}\nexports.onInvalidClaimResponse = onInvalidClaimResponse;\n// if tryRefresh is true & this token doesn't exist, we try and refresh the session\n// else we return undefined.\nfunction getLocalSessionState(tryRefresh) {\n return __awaiter(this, void 0, void 0, function () {\n var lastAccessTokenUpdate,\n frontTokenExists,\n response,\n res,\n lastAccessTokenUpdate_1,\n frontTokenExists_1,\n errorMessage;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"getLocalSessionState: called\");\n return [4 /*yield*/, getFromCookies(LAST_ACCESS_TOKEN_UPDATE)];\n case 1:\n lastAccessTokenUpdate = _b.sent();\n return [4 /*yield*/, FrontToken.doesTokenExists()];\n case 2:\n frontTokenExists = _b.sent();\n if (!(frontTokenExists && lastAccessTokenUpdate !== undefined)) return [3 /*break*/, 3];\n (0,\n logger_1.logDebugMessage)(\"getLocalSessionState: returning EXISTS since both frontToken and lastAccessTokenUpdate exists\");\n return [2 /*return*/, { status: \"EXISTS\", lastAccessTokenUpdate: lastAccessTokenUpdate }];\n case 3:\n if (!lastAccessTokenUpdate) return [3 /*break*/, 4];\n (0,\n logger_1.logDebugMessage)(\"getLocalSessionState: returning NOT_EXISTS since frontToken was cleared but lastAccessTokenUpdate exists\");\n return [2 /*return*/, { status: \"NOT_EXISTS\" }];\n case 4:\n response = {\n status: \"MAY_EXIST\"\n };\n if (!tryRefresh) return [3 /*break*/, 8];\n (0, logger_1.logDebugMessage)(\"getLocalSessionState: trying to refresh\");\n return [4 /*yield*/, onUnauthorisedResponse(response)];\n case 5:\n res = _b.sent();\n if (res.result !== \"RETRY\") {\n (0, logger_1.logDebugMessage)(\n \"getLocalSessionState: return NOT_EXISTS in case error from backend\" + res.result\n );\n // in case the backend is not working, we treat it as the session not existing...\n return [\n 2 /*return*/,\n {\n status: \"NOT_EXISTS\"\n }\n ];\n }\n return [4 /*yield*/, getFromCookies(LAST_ACCESS_TOKEN_UPDATE)];\n case 6:\n lastAccessTokenUpdate_1 = _b.sent();\n return [4 /*yield*/, FrontToken.doesTokenExists()];\n case 7:\n frontTokenExists_1 = _b.sent();\n // If we fail to retrieve the local session state after a successful refresh,\n // it indicates an issue with writing to cookies. Without the FrontToken,\n // session refresh may work but other SDK functionalities won't work as expected.\n // Therefore, we throw an error here instead of retrying.\n if (!frontTokenExists_1 || lastAccessTokenUpdate_1 === undefined) {\n errorMessage =\n \"Failed to retrieve local session state from cookies after a successful session refresh. This indicates a configuration error or that the browser is preventing cookie writes.\";\n console.error(errorMessage);\n throw new Error(errorMessage);\n }\n (0,\n logger_1.logDebugMessage)(\"getLocalSessionState: returning EXISTS since both frontToken and lastAccessTokenUpdate exists post refresh\");\n return [2 /*return*/, { status: \"EXISTS\", lastAccessTokenUpdate: lastAccessTokenUpdate_1 }];\n case 8:\n (0, logger_1.logDebugMessage)(\"getLocalSessionState: returning: \" + response.status);\n return [2 /*return*/, response];\n }\n });\n });\n}\nexports.getLocalSessionState = getLocalSessionState;\nfunction getStorageNameForToken(tokenType) {\n switch (tokenType) {\n case \"access\":\n return ACCESS_TOKEN_NAME;\n case \"refresh\":\n return REFRESH_TOKEN_NAME;\n }\n}\nexports.getStorageNameForToken = getStorageNameForToken;\nfunction setToken(tokenType, value) {\n var name = getStorageNameForToken(tokenType);\n if (value !== \"\") {\n (0, logger_1.logDebugMessage)(\"setToken: saved \".concat(tokenType, \" token into cookies\"));\n // We save the tokens with a 100-year expiration time\n // We have to use the client side system clock here, because the cookie expiration will be counted based on that\n return storeInCookies(name, value, Date.now() + 3153600000);\n } else {\n (0, logger_1.logDebugMessage)(\"setToken: cleared \".concat(tokenType, \" token from cookies\"));\n return storeInCookies(name, value, 0);\n }\n}\nexports.setToken = setToken;\nfunction storeInCookies(name, value, expiry) {\n var expires = \"Fri, 31 Dec 9999 23:59:59 GMT\";\n if (expiry !== Number.MAX_SAFE_INTEGER) {\n // We should respect the storage expirations set by the backend, even though tokens will also be checked elsewhere.\n // We check them locally in case of front-token, and on the backend enforces the validity period for access and refresh tokens.\n expires = new Date(expiry).toUTCString();\n }\n var domain = AuthHttpRequest.config.sessionTokenFrontendDomain;\n if (\n domain === \"localhost\" ||\n domain === windowHandler_1.default.getReferenceOrThrow().windowHandler.location.getHostName()\n ) {\n // since some browsers ignore cookies with domain set to localhost\n // see https://github.com/supertokens/supertokens-website/issues/25\n return cookieHandler_1.default.getReferenceOrThrow().cookieHandler.setCookie(\n \"\"\n .concat(name, \"=\")\n .concat(value, \";expires=\")\n .concat(expires, \";path=/;samesite=\")\n .concat(AuthHttpRequest.config.isInIframe ? \"none;secure\" : \"lax\")\n );\n } else {\n return cookieHandler_1.default.getReferenceOrThrow().cookieHandler.setCookie(\n \"\"\n .concat(name, \"=\")\n .concat(value, \";expires=\")\n .concat(expires, \";domain=\")\n .concat(domain, \";path=/;samesite=\")\n .concat(AuthHttpRequest.config.isInIframe ? \"none;secure\" : \"lax\")\n );\n }\n}\nfunction getTokenForHeaderAuth(tokenType) {\n return __awaiter(this, void 0, void 0, function () {\n var name;\n return __generator(this, function (_b) {\n name = getStorageNameForToken(tokenType);\n return [2 /*return*/, getFromCookies(name)];\n });\n });\n}\nexports.getTokenForHeaderAuth = getTokenForHeaderAuth;\nfunction getFromCookies(name) {\n return __awaiter(this, void 0, void 0, function () {\n var value, _b, parts, last;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = \"; \";\n return [4 /*yield*/, cookieHandler_1.default.getReferenceOrThrow().cookieHandler.getCookie()];\n case 1:\n value = _b + _c.sent();\n parts = value.split(\"; \" + name + \"=\");\n if (parts.length >= 2) {\n last = parts.pop();\n if (last !== undefined) {\n return [2 /*return*/, last.split(\";\").shift()];\n }\n }\n return [2 /*return*/, undefined];\n }\n });\n });\n}\nfunction setAuthorizationHeaderIfRequired(clonedHeaders, addRefreshToken) {\n if (addRefreshToken === void 0) {\n addRefreshToken = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var accessToken, refreshToken;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"setTokenHeaders: adding existing tokens as header\");\n return [4 /*yield*/, getTokenForHeaderAuth(\"access\")];\n case 1:\n accessToken = _b.sent();\n return [4 /*yield*/, getTokenForHeaderAuth(\"refresh\")];\n case 2:\n refreshToken = _b.sent();\n // We don't always need the refresh token because that's only required by the refresh call\n // Still, we only add the access token to Authorization header if both are present, because we are planning to add an option to expose the\n // access token to the frontend while using cookie based auth - so that users can get the access token without using header based auth\n // We can add the refresh token even if only that one is present, to make manual testing easier - you can then\n // force a refresh by just deleting the access token.\n if ((addRefreshToken || accessToken !== undefined) && refreshToken !== undefined) {\n // the Headers class normalizes header names so we don't have to worry about casing\n if (clonedHeaders.has(\"Authorization\")) {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: Authorization header defined by the user, not adding\"\n );\n } else {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: added authorization header\"\n );\n clonedHeaders.set(\n \"Authorization\",\n \"Bearer \".concat(addRefreshToken ? refreshToken : accessToken)\n );\n }\n } else {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: token for header based auth not found\"\n );\n }\n return [2 /*return*/];\n }\n });\n });\n}\nfunction saveTokensFromHeaders(response) {\n return __awaiter(this, void 0, void 0, function () {\n var refreshToken, accessToken, frontToken, antiCsrfToken, tok;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0,\n logger_1.logDebugMessage)(\"saveTokensFromHeaders: Saving updated tokens from the response headers\");\n refreshToken = response.headers.get(\"st-refresh-token\");\n if (!(refreshToken !== null)) return [3 /*break*/, 2];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: saving new refresh token\");\n return [4 /*yield*/, setToken(\"refresh\", refreshToken)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n accessToken = response.headers.get(\"st-access-token\");\n if (!(accessToken !== null)) return [3 /*break*/, 4];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: saving new access token\");\n return [4 /*yield*/, setToken(\"access\", accessToken)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n frontToken = response.headers.get(\"front-token\");\n if (!(frontToken !== null)) return [3 /*break*/, 6];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: Setting sFrontToken: \" + frontToken);\n return [4 /*yield*/, FrontToken.setItem(frontToken)];\n case 5:\n _b.sent();\n (0,\n exports.updateClockSkewUsingFrontToken)({ frontToken: frontToken, responseHeaders: response.headers });\n _b.label = 6;\n case 6:\n antiCsrfToken = response.headers.get(\"anti-csrf\");\n if (!(antiCsrfToken !== null)) return [3 /*break*/, 9];\n return [4 /*yield*/, getLocalSessionState(false)];\n case 7:\n tok = _b.sent();\n if (!(tok.status === \"EXISTS\")) return [3 /*break*/, 9];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: Setting anti-csrf token\");\n return [4 /*yield*/, AntiCsrfToken.setItem(tok.lastAccessTokenUpdate, antiCsrfToken)];\n case 8:\n _b.sent();\n _b.label = 9;\n case 9:\n return [2 /*return*/];\n }\n });\n });\n}\nvar successfullySavedToCookies = undefined;\nfunction saveLastAccessTokenUpdate() {\n return __awaiter(this, void 0, void 0, function () {\n var now;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"saveLastAccessTokenUpdate: called\");\n now = Date.now().toString();\n (0, logger_1.logDebugMessage)(\"saveLastAccessTokenUpdate: setting \" + now);\n return [4 /*yield*/, storeInCookies(LAST_ACCESS_TOKEN_UPDATE, now, Number.MAX_SAFE_INTEGER)];\n case 1:\n _b.sent();\n if (!(successfullySavedToCookies === undefined)) return [3 /*break*/, 3];\n return [4 /*yield*/, getFromCookies(LAST_ACCESS_TOKEN_UPDATE)];\n case 2:\n successfullySavedToCookies = _b.sent() === now;\n _b.label = 3;\n case 3:\n if (successfullySavedToCookies === false) {\n console.warn(\n \"Saving to cookies was not successful, this indicates a configuration error or the browser preventing us from writing the cookies.\"\n );\n }\n // We clear the sIRTFrontend cookie\n // We are handling this as a special case here because we want to limit the scope of legacy code\n return [4 /*yield*/, storeInCookies(\"sIRTFrontend\", \"\", 0)];\n case 4:\n // We clear the sIRTFrontend cookie\n // We are handling this as a special case here because we want to limit the scope of legacy code\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n}\nexports.saveLastAccessTokenUpdate = saveLastAccessTokenUpdate;\nfunction getAntiCSRFToken() {\n return __awaiter(this, void 0, void 0, function () {\n function getAntiCSRFromCookie() {\n return __awaiter(this, void 0, void 0, function () {\n var value, _b, parts, last, temp;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = \"; \";\n return [\n 4 /*yield*/,\n cookieHandler_1.default.getReferenceOrThrow().cookieHandler.getCookie()\n ];\n case 1:\n value = _b + _c.sent();\n parts = value.split(\"; \" + ANTI_CSRF_NAME + \"=\");\n if (parts.length >= 2) {\n last = parts.pop();\n if (last !== undefined) {\n temp = last.split(\";\").shift();\n if (temp === undefined) {\n return [2 /*return*/, null];\n }\n return [2 /*return*/, temp];\n }\n }\n return [2 /*return*/, null];\n }\n });\n });\n }\n var fromCookie;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"getAntiCSRFToken: called\");\n return [4 /*yield*/, getLocalSessionState(true)];\n case 1:\n // we do not call doesSessionExist here cause the user might override that\n // function here and then it may break the logic of our original implementation.\n if (!(_b.sent().status === \"EXISTS\")) {\n (0, logger_1.logDebugMessage)(\n \"getAntiCSRFToken: Returning because local session state != EXISTS\"\n );\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, getAntiCSRFromCookie()];\n case 2:\n fromCookie = _b.sent();\n (0, logger_1.logDebugMessage)(\"getAntiCSRFToken: returning: \" + fromCookie);\n return [2 /*return*/, fromCookie];\n }\n });\n });\n}\n// give antiCSRFToken as undefined to remove it.\nfunction setAntiCSRF(antiCSRFToken) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"setAntiCSRF: called: \" + antiCSRFToken);\n if (!(antiCSRFToken !== undefined)) return [3 /*break*/, 2];\n return [4 /*yield*/, storeInCookies(ANTI_CSRF_NAME, antiCSRFToken, Number.MAX_SAFE_INTEGER)];\n case 1:\n _b.sent();\n return [3 /*break*/, 4];\n case 2:\n return [4 /*yield*/, storeInCookies(ANTI_CSRF_NAME, \"\", 0)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n return [2 /*return*/];\n }\n });\n });\n}\nexports.setAntiCSRF = setAntiCSRF;\nfunction getFrontTokenFromCookie() {\n return __awaiter(this, void 0, void 0, function () {\n var val;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"getFrontTokenFromCookie: called\");\n return [4 /*yield*/, getFromCookies(FRONT_TOKEN_NAME)];\n case 1:\n val = _b.sent();\n return [2 /*return*/, val === undefined ? null : val];\n }\n });\n });\n}\nfunction parseFrontToken(frontToken) {\n return JSON.parse(decodeURIComponent(escape(atob(frontToken))));\n}\nfunction getFrontToken() {\n return __awaiter(this, void 0, void 0, function () {\n var fromCookie;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"getFrontToken: called\");\n return [4 /*yield*/, getLocalSessionState(true)];\n case 1:\n // we do not call doesSessionExist here because that directly calls this function.\n if (!(_b.sent().status === \"EXISTS\")) {\n (0, logger_1.logDebugMessage)(\"getFrontToken: Returning because sIRTFrontend != EXISTS\");\n return [2 /*return*/, null];\n }\n return [4 /*yield*/, getFrontTokenFromCookie()];\n case 2:\n fromCookie = _b.sent();\n (0, logger_1.logDebugMessage)(\"getFrontToken: returning: \" + fromCookie);\n return [2 /*return*/, fromCookie];\n }\n });\n });\n}\nexports.getFrontToken = getFrontToken;\nfunction setFrontToken(frontToken) {\n return __awaiter(this, void 0, void 0, function () {\n var oldToken, oldPayload, newPayload;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"setFrontToken: called\");\n return [4 /*yield*/, getFrontTokenFromCookie()];\n case 1:\n oldToken = _b.sent();\n if (oldToken !== null && frontToken !== undefined) {\n oldPayload = parseFrontToken(oldToken).up;\n newPayload = parseFrontToken(frontToken).up;\n if (JSON.stringify(oldPayload) !== JSON.stringify(newPayload)) {\n onTokenUpdate();\n }\n }\n if (!(frontToken === undefined)) return [3 /*break*/, 3];\n // clear the cookie\n return [4 /*yield*/, storeInCookies(FRONT_TOKEN_NAME, \"\", 0)];\n case 2:\n // clear the cookie\n _b.sent();\n return [3 /*break*/, 5];\n case 3:\n return [4 /*yield*/, storeInCookies(FRONT_TOKEN_NAME, frontToken, Number.MAX_SAFE_INTEGER)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n return [2 /*return*/];\n }\n });\n });\n}\nexports.setFrontToken = setFrontToken;\nfunction fireSessionUpdateEventsIfNecessary(wasLoggedIn, status, frontTokenHeaderFromResponse) {\n // In case we've received a 401 that didn't clear the session (e.g.: we've sent no session token, or we should try refreshing)\n // then onUnauthorised will handle firing the UNAUTHORISED event if necessary\n // In some rare cases (where we receive a 401 that also clears the session) this will fire the event twice.\n // This may be considered a bug, but it is the existing behaviour before the rework\n if (frontTokenHeaderFromResponse === undefined || frontTokenHeaderFromResponse === null) {\n // The access token (and the session) hasn't been updated.\n (0, logger_1.logDebugMessage)(\n \"fireSessionUpdateEventsIfNecessary returning early because the front token was not updated\"\n );\n return;\n }\n // if the current endpoint clears the session it'll set the front-token to remove\n // any other update means it's created or updated.\n var frontTokenExistsAfter = frontTokenHeaderFromResponse !== \"remove\";\n (0, logger_1.logDebugMessage)(\n \"fireSessionUpdateEventsIfNecessary wasLoggedIn: \"\n .concat(wasLoggedIn, \" frontTokenExistsAfter: \")\n .concat(frontTokenExistsAfter, \" status: \")\n .concat(status)\n );\n if (wasLoggedIn) {\n // we check for wasLoggedIn cause we don't want to fire an event\n // unnecessarily on first app load or if the user tried\n // to query an API that returned 401 while the user was not logged in...\n if (!frontTokenExistsAfter) {\n if (status === AuthHttpRequest.config.sessionExpiredStatusCode) {\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: firing UNAUTHORISED event\");\n AuthHttpRequest.config.onHandleEvent({\n action: \"UNAUTHORISED\",\n sessionExpiredOrRevoked: true,\n userContext: {}\n });\n } else {\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: firing SIGN_OUT event\");\n AuthHttpRequest.config.onHandleEvent({\n action: \"SIGN_OUT\",\n userContext: {}\n });\n }\n }\n } else if (frontTokenExistsAfter) {\n (0, logger_1.logDebugMessage)(\"onUnauthorisedResponse: firing SESSION_CREATED event\");\n AuthHttpRequest.config.onHandleEvent({\n action: \"SESSION_CREATED\",\n userContext: {}\n });\n }\n}\nexports.fireSessionUpdateEventsIfNecessary = fireSessionUpdateEventsIfNecessary;\n/**\n * Updates the clock skew based on the provided frontToken and responseHeaders.\n */\nvar updateClockSkewUsingFrontToken = function (_b) {\n var frontToken = _b.frontToken,\n responseHeaders = _b.responseHeaders;\n (0, logger_1.logDebugMessage)(\"updateClockSkewUsingFrontToken: frontToken: \" + frontToken);\n if (frontToken === null || frontToken === undefined || frontToken === \"remove\") {\n (0, logger_1.logDebugMessage)(\n \"updateClockSkewUsingFrontToken: the access token payload wasn't updated or is being removed, skipping clock skew update\"\n );\n return;\n }\n var frontTokenPayload = parseFrontToken(frontToken);\n var clockSkewInMillis = AuthHttpRequest.recipeImpl.calculateClockSkewInMillis({\n accessTokenPayload: frontTokenPayload.up,\n responseHeaders: responseHeaders\n });\n dateProvider_1.default.getReferenceOrThrow().dateProvider.setClientClockSkewInMillis(clockSkewInMillis);\n (0, logger_1.logDebugMessage)(\"updateClockSkewUsingFrontToken: Client clock synchronized successfully\");\n};\nexports.updateClockSkewUsingFrontToken = updateClockSkewUsingFrontToken;\n","\"use strict\";\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BooleanClaim =\n exports.PrimitiveArrayClaim =\n exports.PrimitiveClaim =\n exports.getInvalidClaimsFromResponse =\n exports.getClaimValue =\n exports.validateClaims =\n exports.signOut =\n exports.addAxiosInterceptors =\n exports.doesSessionExist =\n exports.attemptRefreshingSession =\n exports.getAccessToken =\n exports.getAccessTokenPayloadSecurely =\n exports.getUserId =\n exports.init =\n void 0;\nvar fetch_1 = require(\"./fetch\");\nvar recipeImplementation_1 = require(\"./recipeImplementation\");\nvar supertokens_js_override_1 = require(\"supertokens-js-override\");\nvar utils_1 = require(\"./utils\");\nvar cookieHandler_1 = require(\"./utils/cookieHandler\");\nvar windowHandler_1 = require(\"./utils/windowHandler\");\nvar lockFactory_1 = require(\"./utils/lockFactory\");\nvar sessionClaimValidatorStore_1 = require(\"./utils/sessionClaimValidatorStore\");\nvar logger_1 = require(\"./logger\");\nvar dateProvider_1 = require(\"./utils/dateProvider\");\nvar AuthHttpRequest = /** @class */ (function () {\n function AuthHttpRequest() {}\n AuthHttpRequest.init = function (options) {\n cookieHandler_1.default.init(options.cookieHandler);\n windowHandler_1.default.init(options.windowHandler);\n dateProvider_1.default.init(options.dateProvider);\n lockFactory_1.default.init(\n options.lockFactory,\n windowHandler_1.default.getReferenceOrThrow().windowHandler.localStorage\n );\n var config = (0, utils_1.validateAndNormaliseInputOrThrowError)(options);\n if (options.enableDebugLogs !== undefined && options.enableDebugLogs) {\n (0, logger_1.enableLogging)();\n }\n var recipeImpl = new supertokens_js_override_1.default(\n (0, recipeImplementation_1.default)({\n onHandleEvent: config.onHandleEvent,\n preAPIHook: config.preAPIHook,\n postAPIHook: config.postAPIHook,\n sessionExpiredStatusCode: config.sessionExpiredStatusCode\n })\n )\n .override(config.override.functions)\n .build();\n fetch_1.default.init(config, recipeImpl);\n AuthHttpRequest.axiosInterceptorQueue.forEach(function (f) {\n f();\n });\n AuthHttpRequest.axiosInterceptorQueue = [];\n };\n AuthHttpRequest.getUserId = function (input) {\n return fetch_1.default.recipeImpl.getUserId({\n userContext: (0, utils_1.getNormalisedUserContext)(input === undefined ? undefined : input.userContext)\n });\n };\n AuthHttpRequest.getAccessTokenPayloadSecurely = function (input) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [\n 2 /*return*/,\n fetch_1.default.recipeImpl.getAccessTokenPayloadSecurely({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === undefined ? undefined : input.userContext\n )\n })\n ];\n });\n });\n };\n var _a;\n _a = AuthHttpRequest;\n AuthHttpRequest.axiosInterceptorQueue = [];\n AuthHttpRequest.attemptRefreshingSession = function () {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(_a, function (_b) {\n return [2 /*return*/, fetch_1.default.attemptRefreshingSession()];\n });\n });\n };\n AuthHttpRequest.doesSessionExist = function (input) {\n return fetch_1.default.recipeImpl.doesSessionExist({\n userContext: (0, utils_1.getNormalisedUserContext)(input === undefined ? undefined : input.userContext)\n });\n };\n /**\n * @deprecated\n */\n AuthHttpRequest.addAxiosInterceptors = function (axiosInstance, userContext) {\n if (!fetch_1.default.initCalled) {\n // the recipe implementation has not been initialised yet, so add\n // this to the queue and wait for it to be initialised, and then on\n // init call, we add all the interceptors.\n AuthHttpRequest.axiosInterceptorQueue.push(function () {\n fetch_1.default.recipeImpl.addAxiosInterceptors({\n axiosInstance: axiosInstance,\n userContext: (0, utils_1.getNormalisedUserContext)(userContext)\n });\n });\n } else {\n fetch_1.default.recipeImpl.addAxiosInterceptors({\n axiosInstance: axiosInstance,\n userContext: (0, utils_1.getNormalisedUserContext)(userContext)\n });\n }\n };\n AuthHttpRequest.signOut = function (input) {\n return fetch_1.default.recipeImpl.signOut({\n userContext: (0, utils_1.getNormalisedUserContext)(input === undefined ? undefined : input.userContext)\n });\n };\n AuthHttpRequest.getInvalidClaimsFromResponse = function (input) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [\n 2 /*return*/,\n fetch_1.default.recipeImpl.getInvalidClaimsFromResponse({\n response: input.response,\n userContext: (0, utils_1.getNormalisedUserContext)(input.userContext)\n })\n ];\n });\n });\n };\n AuthHttpRequest.getClaimValue = function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var userContext, accessTokenPayload;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n userContext = (0, utils_1.getNormalisedUserContext)(\n input === undefined ? undefined : input.userContext\n );\n return [\n 4 /*yield*/,\n AuthHttpRequest.getAccessTokenPayloadSecurely({ userContext: userContext })\n ];\n case 1:\n accessTokenPayload = _b.sent();\n return [2 /*return*/, input.claim.getValueFromPayload(accessTokenPayload, userContext)];\n }\n });\n });\n };\n AuthHttpRequest.validateClaims = function (overrideGlobalClaimValidators, userContext) {\n var normalisedUserContext = (0, utils_1.getNormalisedUserContext)(userContext);\n var claimValidatorsAddedByOtherRecipes =\n sessionClaimValidatorStore_1.SessionClaimValidatorStore.getClaimValidatorsAddedByOtherRecipes();\n var globalClaimValidators = fetch_1.default.recipeImpl.getGlobalClaimValidators({\n claimValidatorsAddedByOtherRecipes: claimValidatorsAddedByOtherRecipes,\n userContext: normalisedUserContext\n });\n var claimValidators =\n overrideGlobalClaimValidators !== undefined\n ? overrideGlobalClaimValidators(globalClaimValidators, normalisedUserContext)\n : globalClaimValidators;\n if (claimValidators.length === 0) {\n return [];\n }\n return fetch_1.default.recipeImpl.validateClaims({\n claimValidators: claimValidators,\n userContext: (0, utils_1.getNormalisedUserContext)(userContext)\n });\n };\n AuthHttpRequest.getAccessToken = function (input) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(_a, function (_b) {\n switch (_b.label) {\n case 0:\n return [\n 4 /*yield*/,\n fetch_1.default.recipeImpl.doesSessionExist({\n userContext: (0, utils_1.getNormalisedUserContext)(\n input === undefined ? undefined : input.userContext\n )\n })\n ];\n case 1:\n // This takes care of refreshing the access token if necessary.\n if (_b.sent()) {\n return [2 /*return*/, (0, fetch_1.getTokenForHeaderAuth)(\"access\")];\n }\n return [2 /*return*/, undefined];\n }\n });\n });\n };\n return AuthHttpRequest;\n})();\nexports.default = AuthHttpRequest;\nexports.init = AuthHttpRequest.init;\nexports.getUserId = AuthHttpRequest.getUserId;\nexports.getAccessTokenPayloadSecurely = AuthHttpRequest.getAccessTokenPayloadSecurely;\nexports.getAccessToken = AuthHttpRequest.getAccessToken;\nexports.attemptRefreshingSession = AuthHttpRequest.attemptRefreshingSession;\nexports.doesSessionExist = AuthHttpRequest.doesSessionExist;\n/**\n * @deprecated\n */\nexports.addAxiosInterceptors = AuthHttpRequest.addAxiosInterceptors;\nexports.signOut = AuthHttpRequest.signOut;\nexports.validateClaims = AuthHttpRequest.validateClaims;\nexports.getClaimValue = AuthHttpRequest.getClaimValue;\nexports.getInvalidClaimsFromResponse = AuthHttpRequest.getInvalidClaimsFromResponse;\nvar primitiveClaim_1 = require(\"./claims/primitiveClaim\");\nObject.defineProperty(exports, \"PrimitiveClaim\", {\n enumerable: true,\n get: function () {\n return primitiveClaim_1.PrimitiveClaim;\n }\n});\nvar primitiveArrayClaim_1 = require(\"./claims/primitiveArrayClaim\");\nObject.defineProperty(exports, \"PrimitiveArrayClaim\", {\n enumerable: true,\n get: function () {\n return primitiveArrayClaim_1.PrimitiveArrayClaim;\n }\n});\nvar booleanClaim_1 = require(\"./claims/booleanClaim\");\nObject.defineProperty(exports, \"BooleanClaim\", {\n enumerable: true,\n get: function () {\n return booleanClaim_1.BooleanClaim;\n }\n});\n","\"use strict\";\n/* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logDebugMessage = exports.disableLogging = exports.enableLogging = void 0;\nvar version_1 = require(\"./version\");\nvar SUPERTOKENS_DEBUG_NAMESPACE = \"com.supertokens\";\nvar __supertokensWebsiteLogging = false;\nfunction enableLogging() {\n __supertokensWebsiteLogging = true;\n}\nexports.enableLogging = enableLogging;\nfunction disableLogging() {\n __supertokensWebsiteLogging = false;\n}\nexports.disableLogging = disableLogging;\nfunction logDebugMessage(message) {\n if (__supertokensWebsiteLogging) {\n console.log(\n \"\"\n .concat(SUPERTOKENS_DEBUG_NAMESPACE, ' {t: \"')\n .concat(new Date().toISOString(), '\", message: \"')\n .concat(message, '\", supertokens-website-ver: \"')\n .concat(version_1.package_version, '\"}')\n );\n }\n}\nexports.logDebugMessage = logDebugMessage;\n","\"use strict\";\n/* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAnIpAddress = void 0;\nfunction isAnIpAddress(ipaddress) {\n return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(\n ipaddress\n );\n}\nexports.isAnIpAddress = isAnIpAddress;\nvar NormalisedURLDomain = /** @class */ (function () {\n function NormalisedURLDomain(url) {\n var _this = this;\n this.getAsStringDangerous = function () {\n return _this.value;\n };\n this.value = normaliseURLDomainOrThrowError(url);\n }\n return NormalisedURLDomain;\n})();\nexports.default = NormalisedURLDomain;\nfunction normaliseURLDomainOrThrowError(input, ignoreProtocol) {\n if (ignoreProtocol === void 0) {\n ignoreProtocol = false;\n }\n input = input.trim();\n try {\n if (!input.startsWith(\"http://\") && !input.startsWith(\"https://\")) {\n throw new Error(\"converting to proper URL\");\n }\n var urlObj = new URL(input);\n if (ignoreProtocol) {\n if (urlObj.hostname.startsWith(\"localhost\") || isAnIpAddress(urlObj.hostname)) {\n input = \"http://\" + urlObj.host;\n } else {\n input = \"https://\" + urlObj.host;\n }\n } else {\n input = urlObj.protocol + \"//\" + urlObj.host;\n }\n return input;\n // eslint-disable-next-line no-empty\n } catch (err) {}\n if (input.startsWith(\"/\")) {\n throw new Error(\"Please provide a valid domain name\");\n }\n // not a valid URL\n if (input.indexOf(\".\") === 0) {\n input = input.substr(1);\n }\n // If the input contains a . it means they have given a domain name.\n // So we try assuming that they have given a domain name\n if (\n (input.indexOf(\".\") !== -1 || input.startsWith(\"localhost\")) &&\n !input.startsWith(\"http://\") &&\n !input.startsWith(\"https://\")\n ) {\n input = \"https://\" + input;\n // at this point, it should be a valid URL. So we test that before doing a recursive call\n try {\n new URL(input);\n return normaliseURLDomainOrThrowError(input, true);\n // eslint-disable-next-line no-empty\n } catch (err) {}\n }\n throw new Error(\"Please provide a valid domain name\");\n}\n","\"use strict\";\n/* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NormalisedURLPath = /** @class */ (function () {\n function NormalisedURLPath(url) {\n var _this = this;\n this.startsWith = function (other) {\n return _this.value.startsWith(other.value);\n };\n this.appendPath = function (other) {\n return new NormalisedURLPath(_this.value + other.value);\n };\n this.getAsStringDangerous = function () {\n return _this.value;\n };\n this.value = normaliseURLPathOrThrowError(url);\n }\n return NormalisedURLPath;\n})();\nexports.default = NormalisedURLPath;\nfunction normaliseURLPathOrThrowError(input) {\n input = input.trim();\n try {\n if (!input.startsWith(\"http://\") && !input.startsWith(\"https://\")) {\n throw new Error(\"converting to proper URL\");\n }\n var urlObj = new URL(input);\n input = urlObj.pathname;\n if (input.charAt(input.length - 1) === \"/\") {\n return input.substr(0, input.length - 1);\n }\n return input;\n // eslint-disable-next-line no-empty\n } catch (err) {}\n // not a valid URL\n // If the input contains a . it means they have given a domain name.\n // So we try assuming that they have given a domain name + path\n if (\n (domainGiven(input) || input.startsWith(\"localhost\")) &&\n !input.startsWith(\"http://\") &&\n !input.startsWith(\"https://\")\n ) {\n input = \"http://\" + input;\n return normaliseURLPathOrThrowError(input);\n }\n if (input.charAt(0) !== \"/\") {\n input = \"/\" + input;\n }\n // at this point, we should be able to convert it into a fake URL and recursively call this function.\n try {\n // test that we can convert this to prevent an infinite loop\n new URL(\"http://example.com\" + input);\n return normaliseURLPathOrThrowError(\"http://example.com\" + input);\n } catch (err) {\n throw new Error(\"Please provide a valid URL path\");\n }\n}\nfunction domainGiven(input) {\n // If no dot, return false.\n if (input.indexOf(\".\") === -1 || input.startsWith(\"/\")) {\n return false;\n }\n try {\n var url = new URL(input);\n return url.hostname.indexOf(\".\") !== -1;\n } catch (e) {}\n try {\n var url = new URL(\"http://\" + input);\n return url.hostname.indexOf(\".\") !== -1;\n } catch (e) {}\n return false;\n}\n","\"use strict\";\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProcessState = exports.PROCESS_STATE = void 0;\nvar PROCESS_STATE;\n(function (PROCESS_STATE) {\n //CALLING_INTERCEPTION_REQUEST : Process state for the request interceptor.\n //CALLING_INTERCEPTION_RESOPONSE : Process state for the response interceptor.\n PROCESS_STATE[(PROCESS_STATE[\"CALLING_INTERCEPTION_REQUEST\"] = 0)] = \"CALLING_INTERCEPTION_REQUEST\";\n PROCESS_STATE[(PROCESS_STATE[\"CALLING_INTERCEPTION_RESPONSE\"] = 1)] = \"CALLING_INTERCEPTION_RESPONSE\";\n})((PROCESS_STATE = exports.PROCESS_STATE || (exports.PROCESS_STATE = {})));\nvar ProcessState = /** @class */ (function () {\n function ProcessState() {\n var _this = this;\n this.history = [];\n this.addState = function (state) {\n try {\n if (process !== undefined && process.env !== undefined && process.env.TEST_MODE === \"testing\") {\n _this.history.push(state);\n }\n } catch (ignored) {}\n };\n this.getEventByLastEventByName = function (state) {\n for (var i = _this.history.length - 1; i >= 0; i--) {\n if (_this.history[i] == state) {\n return _this.history[i];\n }\n }\n return undefined;\n };\n this.reset = function () {\n _this.history = [];\n };\n this.waitForEvent = function (state, timeInMS) {\n if (timeInMS === void 0) {\n timeInMS = 7000;\n }\n return __awaiter(_this, void 0, void 0, function () {\n var startTime;\n var _this = this;\n return __generator(this, function (_a) {\n startTime = Date.now();\n return [\n 2 /*return*/,\n new Promise(function (resolve) {\n var actualThis = _this;\n function tryAndGet() {\n var result = actualThis.getEventByLastEventByName(state);\n if (result === undefined) {\n if (Date.now() - startTime > timeInMS) {\n resolve(undefined);\n } else {\n setTimeout(tryAndGet, 1000);\n }\n } else {\n resolve(result);\n }\n }\n tryAndGet();\n })\n ];\n });\n });\n };\n }\n ProcessState.getInstance = function () {\n if (ProcessState.instance == undefined) {\n ProcessState.instance = new ProcessState();\n }\n return ProcessState.instance;\n };\n return ProcessState;\n})();\nexports.ProcessState = ProcessState;\n","\"use strict\";\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fetch_1 = require(\"./fetch\");\nvar axios_1 = require(\"./axios\");\nvar version_1 = require(\"./version\");\nvar logger_1 = require(\"./logger\");\nvar error_1 = require(\"./error\");\nvar xmlhttprequest_1 = require(\"./xmlhttprequest\");\nvar utils_1 = require(\"./utils\");\nvar dateProvider_1 = require(\"./utils/dateProvider\");\nvar lockFactory_1 = require(\"./utils/lockFactory\");\nvar MAX_REFRESH_LOCK_TRY_COUNT = 100;\nvar CLAIM_REFRESH_LOCK_NAME = \"CLAIM_REFRESH_LOCK\";\nfunction RecipeImplementation(recipeImplInput) {\n return {\n addXMLHttpRequestInterceptor: function (_) {\n (0, logger_1.logDebugMessage)(\"addXMLHttpRequestInterceptorAndReturnModified: called\");\n (0, xmlhttprequest_1.addInterceptorsToXMLHttpRequest)();\n },\n addFetchInterceptorsAndReturnModifiedFetch: function (input) {\n (0, logger_1.logDebugMessage)(\"addFetchInterceptorsAndReturnModifiedFetch: called\");\n return function (url, config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [\n 4 /*yield*/,\n fetch_1.default.doRequest(\n function (config) {\n return input.originalFetch(\n typeof url === \"object\" && \"clone\" in url ? url.clone() : url,\n __assign({}, config)\n );\n },\n config,\n url\n )\n ];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n },\n addAxiosInterceptors: function (input) {\n (0, logger_1.logDebugMessage)(\"addAxiosInterceptors: called\");\n if (XMLHttpRequest.__interceptedBySuperTokens) {\n console.warn(\n \"Not adding axios interceptor since XMLHttpRequest is already added. This is just a warning.\"\n );\n console.warn(\"Our axios and XMLHttpRequest interceptors cannot be used at the same time.\");\n console.warn(\n \"Since XMLHttpRequest is added automatically and supports axios by default, you can just remove addAxiosInterceptors from your code.\"\n );\n console.warn(\n \"If you want to continue using our axios interceptor, you can override addXMLHttpRequestInterceptor with an empty function.\"\n );\n (0, logger_1.logDebugMessage)(\n \"addAxiosInterceptors: not adding, because XHR interceptors are already in place\"\n );\n return;\n }\n // we first check if this axiosInstance already has our interceptors.\n var requestInterceptors = input.axiosInstance.interceptors.request;\n for (var i = 0; i < requestInterceptors.handlers.length; i++) {\n if (requestInterceptors.handlers[i].fulfilled === axios_1.interceptorFunctionRequestFulfilled) {\n (0, logger_1.logDebugMessage)(\n \"addAxiosInterceptors: not adding because already added on this instance\"\n );\n return;\n }\n }\n // Add a request interceptor\n input.axiosInstance.interceptors.request.use(axios_1.interceptorFunctionRequestFulfilled, function (error) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw error;\n });\n });\n });\n // Add a response interceptor\n input.axiosInstance.interceptors.response.use(\n (0, axios_1.responseInterceptor)(input.axiosInstance),\n (0, axios_1.responseErrorInterceptor)(input.axiosInstance)\n );\n },\n getUserId: function (_) {\n return __awaiter(this, void 0, void 0, function () {\n var tokenInfo;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"getUserId: called\");\n return [4 /*yield*/, fetch_1.FrontToken.getTokenInfo()];\n case 1:\n tokenInfo = _a.sent();\n if (tokenInfo === undefined) {\n throw new Error(\"No session exists\");\n }\n (0, logger_1.logDebugMessage)(\"getUserId: returning: \" + tokenInfo.uid);\n return [2 /*return*/, tokenInfo.uid];\n }\n });\n });\n },\n getAccessTokenPayloadSecurely: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var tokenInfo, retry;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"getAccessTokenPayloadSecurely: called\");\n return [4 /*yield*/, fetch_1.FrontToken.getTokenInfo()];\n case 1:\n tokenInfo = _a.sent();\n if (tokenInfo === undefined) {\n throw new Error(\"No session exists\");\n }\n if (!(tokenInfo.ate < dateProvider_1.default.getReferenceOrThrow().dateProvider.now()))\n return [3 /*break*/, 5];\n (0,\n logger_1.logDebugMessage)(\"getAccessTokenPayloadSecurely: access token expired. Refreshing session\");\n return [4 /*yield*/, fetch_1.default.attemptRefreshingSession()];\n case 2:\n retry = _a.sent();\n if (!retry) return [3 /*break*/, 4];\n return [\n 4 /*yield*/,\n this.getAccessTokenPayloadSecurely({\n userContext: input.userContext\n })\n ];\n case 3:\n return [2 /*return*/, _a.sent()];\n case 4:\n throw new Error(\"Could not refresh session\");\n case 5:\n (0,\n logger_1.logDebugMessage)(\"getAccessTokenPayloadSecurely: returning: \" + JSON.stringify(tokenInfo.up));\n return [2 /*return*/, tokenInfo.up];\n }\n });\n });\n },\n doesSessionExist: function (_) {\n return __awaiter(this, void 0, void 0, function () {\n var tokenInfo, preRequestLSS, refresh;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"doesSessionExist: called\");\n return [4 /*yield*/, fetch_1.FrontToken.getTokenInfo()];\n case 1:\n tokenInfo = _a.sent();\n // The above includes getLocalSessionState(true), which would call refresh if the FE cookies were cleared for some reason\n if (tokenInfo === undefined) {\n (0, logger_1.logDebugMessage)(\"doesSessionExist: access token does not exist locally\");\n return [2 /*return*/, false];\n }\n if (!(tokenInfo.ate < dateProvider_1.default.getReferenceOrThrow().dateProvider.now()))\n return [3 /*break*/, 4];\n (0, logger_1.logDebugMessage)(\"doesSessionExist: access token expired. Refreshing session\");\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(false)];\n case 2:\n preRequestLSS = _a.sent();\n return [4 /*yield*/, (0, fetch_1.onUnauthorisedResponse)(preRequestLSS)];\n case 3:\n refresh = _a.sent();\n return [2 /*return*/, refresh.result === \"RETRY\"];\n case 4:\n return [2 /*return*/, true];\n }\n });\n });\n },\n signOut: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var preAPIResult, resp, responseJson, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"signOut: called\");\n return [4 /*yield*/, this.doesSessionExist(input)];\n case 1:\n if (!_a.sent()) {\n (0, logger_1.logDebugMessage)(\"signOut: exiting early because session does not exist\");\n (0, logger_1.logDebugMessage)(\"signOut: firing SIGN_OUT event\");\n recipeImplInput.onHandleEvent({\n action: \"SIGN_OUT\",\n userContext: input.userContext\n });\n return [2 /*return*/];\n }\n (0, logger_1.logDebugMessage)(\"signOut: Calling refresh pre API hook\");\n return [\n 4 /*yield*/,\n recipeImplInput.preAPIHook({\n action: \"SIGN_OUT\",\n requestInit: {\n method: \"post\",\n headers: {\n \"fdi-version\": version_1.supported_fdi.join(\",\"),\n rid: fetch_1.default.rid\n }\n },\n url: fetch_1.default.signOutUrl,\n userContext: input.userContext\n })\n ];\n case 2:\n preAPIResult = _a.sent();\n (0, logger_1.logDebugMessage)(\"signOut: Calling API\");\n return [4 /*yield*/, fetch(preAPIResult.url, preAPIResult.requestInit)];\n case 3:\n resp = _a.sent();\n (0, logger_1.logDebugMessage)(\"signOut: API ended\");\n (0, logger_1.logDebugMessage)(\"signOut: API responded with status code: \" + resp.status);\n if (resp.status === recipeImplInput.sessionExpiredStatusCode) {\n // refresh must have already sent session expiry event\n return [2 /*return*/];\n }\n if (resp.status >= 300) {\n throw resp;\n }\n return [\n 4 /*yield*/,\n recipeImplInput.postAPIHook({\n action: \"SIGN_OUT\",\n requestInit: preAPIResult.requestInit,\n url: preAPIResult.url,\n fetchResponse: resp.clone(),\n userContext: input.userContext\n })\n ];\n case 4:\n _a.sent();\n return [4 /*yield*/, resp.clone().json()];\n case 5:\n responseJson = _a.sent();\n if (responseJson.status === \"GENERAL_ERROR\") {\n (0, logger_1.logDebugMessage)(\"doRequest: Throwing general error\");\n message =\n responseJson.message === undefined\n ? \"No Error Message Provided\"\n : responseJson.message;\n throw new error_1.STGeneralError(message);\n }\n return [2 /*return*/];\n }\n });\n });\n },\n getInvalidClaimsFromResponse: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var body;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(\"body\" in input.response)) return [3 /*break*/, 2];\n return [4 /*yield*/, input.response.clone().json()];\n case 1:\n body = _a.sent();\n return [3 /*break*/, 3];\n case 2:\n if (typeof input.response.data === \"string\") {\n body = JSON.parse(input.response.data);\n } else {\n body = input.response.data;\n }\n _a.label = 3;\n case 3:\n return [2 /*return*/, body.claimValidationErrors];\n }\n });\n });\n },\n getGlobalClaimValidators: function (input) {\n return input.claimValidatorsAddedByOtherRecipes;\n },\n validateClaims: function (input) {\n return __awaiter(this, void 0, void 0, function () {\n var accessTokenPayload,\n tryCount,\n lockFactory,\n claimRefreshLock,\n _i,\n _a,\n validator,\n err_1,\n errors,\n _b,\n _c,\n validator,\n validationRes;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n tryCount = 0;\n _d.label = 1;\n case 1:\n if (!(++tryCount < MAX_REFRESH_LOCK_TRY_COUNT)) return [3 /*break*/, 20];\n return [4 /*yield*/, lockFactory_1.default.getReferenceOrThrow().lockFactory()];\n case 2:\n lockFactory = _d.sent();\n (0, logger_1.logDebugMessage)(\"validateClaims: trying to acquire claim refresh lock\");\n return [4 /*yield*/, lockFactory.acquireLock(CLAIM_REFRESH_LOCK_NAME)];\n case 3:\n claimRefreshLock = _d.sent();\n if (!claimRefreshLock) return [3 /*break*/, 18];\n _d.label = 4;\n case 4:\n _d.trys.push([4, , 15, 17]);\n return [\n 4 /*yield*/,\n this.getAccessTokenPayloadSecurely({\n userContext: input.userContext\n })\n ];\n case 5:\n accessTokenPayload = _d.sent();\n (0, logger_1.logDebugMessage)(\"validateClaims: claim refresh lock acquired\");\n (_i = 0), (_a = input.claimValidators);\n _d.label = 6;\n case 6:\n if (!(_i < _a.length)) return [3 /*break*/, 14];\n validator = _a[_i];\n return [4 /*yield*/, validator.shouldRefresh(accessTokenPayload, input.userContext)];\n case 7:\n if (!_d.sent()) return [3 /*break*/, 13];\n _d.label = 8;\n case 8:\n _d.trys.push([8, 10, , 11]);\n return [4 /*yield*/, validator.refresh(input.userContext)];\n case 9:\n _d.sent();\n return [3 /*break*/, 11];\n case 10:\n err_1 = _d.sent();\n console.error(\n \"Encountered an error while refreshing validator \".concat(validator.id),\n err_1\n );\n return [3 /*break*/, 11];\n case 11:\n return [\n 4 /*yield*/,\n this.getAccessTokenPayloadSecurely({\n userContext: input.userContext\n })\n ];\n case 12:\n accessTokenPayload = _d.sent();\n _d.label = 13;\n case 13:\n _i++;\n return [3 /*break*/, 6];\n case 14:\n return [3 /*break*/, 17];\n case 15:\n (0, logger_1.logDebugMessage)(\"validateClaims: releasing claim refresh lock\");\n return [4 /*yield*/, lockFactory.releaseLock(CLAIM_REFRESH_LOCK_NAME)];\n case 16:\n _d.sent();\n return [7 /*endfinally*/];\n case 17:\n return [3 /*break*/, 20];\n case 18:\n (0,\n logger_1.logDebugMessage)(\"validateClaims: Retrying refresh lock \".concat(tryCount, \"/\").concat(MAX_REFRESH_LOCK_TRY_COUNT));\n _d.label = 19;\n case 19:\n return [3 /*break*/, 1];\n case 20:\n if (!(tryCount === MAX_REFRESH_LOCK_TRY_COUNT)) return [3 /*break*/, 22];\n (0,\n logger_1.logDebugMessage)(\"validateClaims: ran out of retries while trying to acquire claim refresh lock\");\n return [\n 4 /*yield*/,\n this.getAccessTokenPayloadSecurely({ userContext: input.userContext })\n ];\n case 21:\n // We can just load the access token payload (that doesn't happen above if we never got inside the lock)\n accessTokenPayload = _d.sent();\n _d.label = 22;\n case 22:\n errors = [];\n (_b = 0), (_c = input.claimValidators);\n _d.label = 23;\n case 23:\n if (!(_b < _c.length)) return [3 /*break*/, 26];\n validator = _c[_b];\n return [4 /*yield*/, validator.validate(accessTokenPayload, input.userContext)];\n case 24:\n validationRes = _d.sent();\n if (!validationRes.isValid) {\n errors.push({\n id: validator.id,\n reason: validationRes.reason\n });\n }\n _d.label = 25;\n case 25:\n _b++;\n return [3 /*break*/, 23];\n case 26:\n return [2 /*return*/, errors];\n }\n });\n });\n },\n shouldDoInterceptionBasedOnUrl: function (toCheckUrl, apiDomain, sessionTokenBackendDomain) {\n (0, logger_1.logDebugMessage)(\n \"shouldDoInterceptionBasedOnUrl: toCheckUrl: \" +\n toCheckUrl +\n \" apiDomain: \" +\n apiDomain +\n \" sessionTokenBackendDomain: \" +\n sessionTokenBackendDomain\n );\n // The safest/best way to add this is the hash as the browser strips it before sending\n // but we don't have a reason to limit checking to that part.\n if (toCheckUrl.includes(\"superTokensDoNotDoInterception\")) {\n return false;\n }\n toCheckUrl = (0, utils_1.normaliseURLDomainOrThrowError)(toCheckUrl);\n var urlObj = new URL(toCheckUrl);\n var domain = urlObj.hostname;\n var apiDomainAndInputDomainMatch = false;\n if (apiDomain !== \"\") {\n // we have the \"\" check cause in tests, we pass \"\" in lots of cases.\n apiDomain = (0, utils_1.normaliseURLDomainOrThrowError)(apiDomain);\n var apiUrlObj = new URL(apiDomain);\n apiDomainAndInputDomainMatch = domain === apiUrlObj.hostname;\n }\n if (sessionTokenBackendDomain === undefined || apiDomainAndInputDomainMatch) {\n // even if sessionTokenBackendDomain !== undefined, if there is an exact match\n // of api domain, ignoring the port, we return true\n return apiDomainAndInputDomainMatch;\n } else {\n var normalisedsessionDomain = (0, utils_1.normaliseSessionScopeOrThrowError)(sessionTokenBackendDomain);\n return (0, utils_1.matchesDomainOrSubdomain)(domain, normalisedsessionDomain);\n }\n },\n calculateClockSkewInMillis: function (_a) {\n var accessTokenPayload = _a.accessTokenPayload;\n (0, logger_1.logDebugMessage)(\"calculateClockSkewInMillis: called\");\n var tokenIssuedAt =\n accessTokenPayload === null || accessTokenPayload === void 0 ? void 0 : accessTokenPayload.iat;\n if (tokenIssuedAt === undefined || typeof tokenIssuedAt !== \"number\") {\n (0, logger_1.logDebugMessage)(\n \"calculateClockSkewInMillis: payload iat is undefined or not a number. This may happen due to an unsupported backend sdk. Returning 0\"\n );\n return 0;\n }\n var estimatedServerTimeNow = tokenIssuedAt * 1000;\n var clockSkewInMillis = estimatedServerTimeNow - Date.now();\n (0, logger_1.logDebugMessage)(\"calculateClockSkewInMillis: returning \" + clockSkewInMillis);\n return clockSkewInMillis;\n }\n };\n}\nexports.default = RecipeImplementation;\n","\"use strict\";\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultCookieHandlerImplementation = void 0;\nvar windowHandler_1 = require(\"../windowHandler\");\nexports.defaultCookieHandlerImplementation = {\n getCookie: function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [\n 2 /*return*/,\n windowHandler_1.default.getReferenceOrThrow().windowHandler.getWindowUnsafe().document.cookie\n ];\n });\n });\n },\n setCookie: function (cookieString) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n windowHandler_1.default.getReferenceOrThrow().windowHandler.getWindowUnsafe().document.cookie =\n cookieString;\n return [2 /*return*/];\n });\n });\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CookieHandlerReference = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar defaultImplementation_1 = require(\"./defaultImplementation\");\nvar CookieHandlerReference = /** @class */ (function () {\n function CookieHandlerReference(cookieHandlerInput) {\n var cookieHandlerFunc = function (original) {\n return original;\n };\n if (cookieHandlerInput !== undefined) {\n cookieHandlerFunc = cookieHandlerInput;\n }\n this.cookieHandler = cookieHandlerFunc(defaultImplementation_1.defaultCookieHandlerImplementation);\n }\n CookieHandlerReference.init = function (cookieHandlerInput) {\n if (CookieHandlerReference.instance !== undefined) {\n return;\n }\n CookieHandlerReference.instance = new CookieHandlerReference(cookieHandlerInput);\n };\n CookieHandlerReference.getReferenceOrThrow = function () {\n if (CookieHandlerReference.instance === undefined) {\n throw new Error(\"SuperTokensCookieHandler must be initialized before calling this method.\");\n }\n return CookieHandlerReference.instance;\n };\n return CookieHandlerReference;\n})();\nexports.CookieHandlerReference = CookieHandlerReference;\nexports.default = CookieHandlerReference;\n","\"use strict\";\n/* Copyright (c) 2024, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateProvider = void 0;\nvar windowHandler_1 = require(\"../windowHandler\");\nvar DateProvider = /** @class */ (function () {\n function DateProvider() {\n this.clockSkewInMillis = 0;\n // Ensure a meaningful clock skew value by setting a threshold. Omitting a threshold would invariably lead to some\n // clock skew due to server-client latency, arising from the time it takes for the token to arrive after being issued.\n this.thresholdInSeconds = 7;\n }\n // The static init method is used to create a singleton instance of DateProvider,\n // as we require access to localStorage for initializing clockSkewInMillis.\n // Access to localStorage is available only after WindowHandlerReference is initialized.\n // We took the following considerations into account while designing the cache implementation:\n // 1. Cache cleared with an active session while the FE clock is wrong (e.g., Safari clears localStorage after 7 days).\n // - Resets clockSkewInMillis to 0, corrected in the next front token update.\n // 2. Outdated info in the cache making the clock point into the future.\n // - May cause validator.shouldRefresh to always be true, corrected by the next front token update.\n // 3. Outdated info in the cache making the clock point into the past.\n // - May cause validator.shouldRefresh to always be false, fixed during the next token refresh (worst case).\n // 4. Other tabs (on different subdomains) refreshing the session with outdated info in the cache.\n // - Each subdomain has its own cache (localStorage), similar implications to cases 2 and 3.\n // 5. Other tabs refreshing the session with outdated info in memory.\n // - May cause validator.shouldRefresh to always be true or false, fixed in the next front token update.\n DateProvider.init = function () {\n if (DateProvider.instance !== undefined) {\n return;\n }\n DateProvider.instance = new DateProvider();\n var localStorage = windowHandler_1.default.getReferenceOrThrow().windowHandler.localStorage;\n var stored = localStorage.getItemSync(DateProvider.CLOCK_SKEW_KEY);\n var clockSkewInMillis = stored !== null ? parseInt(stored, 10) : 0;\n DateProvider.instance.setClientClockSkewInMillis(clockSkewInMillis);\n };\n DateProvider.getReferenceOrThrow = function () {\n if (DateProvider.instance === undefined) {\n throw new Error(\"DateProvider must be initialized before calling this method.\");\n }\n return DateProvider.instance;\n };\n DateProvider.prototype.getThresholdInSeconds = function () {\n return this.thresholdInSeconds;\n };\n DateProvider.prototype.setThresholdInSeconds = function (thresholdInSeconds) {\n this.thresholdInSeconds = thresholdInSeconds;\n };\n DateProvider.prototype.setClientClockSkewInMillis = function (clockSkewInMillis) {\n this.clockSkewInMillis = Math.abs(clockSkewInMillis) >= this.thresholdInSeconds * 1000 ? clockSkewInMillis : 0;\n var localStorage = windowHandler_1.default.getReferenceOrThrow().windowHandler.localStorage;\n localStorage.setItemSync(DateProvider.CLOCK_SKEW_KEY, String(clockSkewInMillis));\n };\n DateProvider.prototype.getClientClockSkewInMillis = function () {\n return this.clockSkewInMillis;\n };\n DateProvider.prototype.now = function () {\n return Date.now() + this.getClientClockSkewInMillis();\n };\n DateProvider.CLOCK_SKEW_KEY = \"__st_clockSkewInMillis\";\n return DateProvider;\n})();\nexports.DateProvider = DateProvider;\n","\"use strict\";\n/* Copyright (c) 2024, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateProviderReference = void 0;\nvar defaultImplementation_1 = require(\"./defaultImplementation\");\n/**\n * A utility class for managing a reference to a DateProviderInterface, allowing customization of time-related operations.\n * This class is designed to address clock skew issues between the server and client by providing a consistent mechanism\n * for obtaining current time adjusted for clock skew.\n *\n * @class DateProviderReference\n */\nvar DateProviderReference = /** @class */ (function () {\n function DateProviderReference(dateProviderInput) {\n if (dateProviderInput !== undefined) {\n this.dateProvider = dateProviderInput();\n } else {\n // Initialize the DateProvider implementation by calling the init method.\n // This is done to ensure that the WindowHandler is initialized before we instantiate the DateProvider.\n defaultImplementation_1.DateProvider.init();\n this.dateProvider = defaultImplementation_1.DateProvider.getReferenceOrThrow();\n }\n }\n DateProviderReference.init = function (dateProviderInput) {\n if (DateProviderReference.instance !== undefined) {\n return;\n }\n DateProviderReference.instance = new DateProviderReference(dateProviderInput);\n };\n DateProviderReference.getReferenceOrThrow = function () {\n if (DateProviderReference.instance === undefined) {\n throw new Error(\"SuperTokensDateProvider must be initialized before calling this method.\");\n }\n return DateProviderReference.instance;\n };\n return DateProviderReference;\n})();\nexports.DateProviderReference = DateProviderReference;\nexports.default = DateProviderReference;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getGlobalClaimValidators = void 0;\nvar _1 = require(\".\");\nvar fetch_1 = require(\"../fetch\");\nvar sessionClaimValidatorStore_1 = require(\"./sessionClaimValidatorStore\");\nfunction getGlobalClaimValidators(overrideGlobalClaimValidators, userContext) {\n var normalisedUserContext = (0, _1.getNormalisedUserContext)(userContext);\n var claimValidatorsAddedByOtherRecipes =\n sessionClaimValidatorStore_1.default.getClaimValidatorsAddedByOtherRecipes();\n var globalClaimValidators = fetch_1.default.recipeImpl.getGlobalClaimValidators({\n claimValidatorsAddedByOtherRecipes: claimValidatorsAddedByOtherRecipes,\n userContext: normalisedUserContext\n });\n var claimValidators =\n overrideGlobalClaimValidators !== undefined\n ? overrideGlobalClaimValidators(globalClaimValidators, normalisedUserContext)\n : globalClaimValidators;\n return claimValidators;\n}\nexports.getGlobalClaimValidators = getGlobalClaimValidators;\n","\"use strict\";\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __assign =\n (this && this.__assign) ||\n function () {\n __assign =\n Object.assign ||\n function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchesDomainOrSubdomain =\n exports.getNormalisedUserContext =\n exports.validateAndNormaliseInputOrThrowError =\n exports.normaliseSessionScopeOrThrowError =\n exports.normaliseURLPathOrThrowError =\n exports.normaliseURLDomainOrThrowError =\n void 0;\nvar normalisedURLDomain_1 = require(\"../normalisedURLDomain\");\nvar normalisedURLPath_1 = require(\"../normalisedURLPath\");\nvar windowHandler_1 = require(\"../utils/windowHandler\");\nfunction normaliseURLDomainOrThrowError(input) {\n var str = new normalisedURLDomain_1.default(input).getAsStringDangerous();\n return str;\n}\nexports.normaliseURLDomainOrThrowError = normaliseURLDomainOrThrowError;\nfunction normaliseURLPathOrThrowError(input) {\n return new normalisedURLPath_1.default(input).getAsStringDangerous();\n}\nexports.normaliseURLPathOrThrowError = normaliseURLPathOrThrowError;\nfunction normaliseSessionScopeOrThrowError(sessionScope) {\n function helper(sessionScope) {\n sessionScope = sessionScope.trim().toLowerCase();\n // first we convert it to a URL so that we can use the URL class\n if (sessionScope.startsWith(\".\")) {\n sessionScope = sessionScope.substr(1);\n }\n if (!sessionScope.startsWith(\"http://\") && !sessionScope.startsWith(\"https://\")) {\n sessionScope = \"http://\" + sessionScope;\n }\n try {\n var urlObj = new URL(sessionScope);\n sessionScope = urlObj.hostname;\n return sessionScope;\n } catch (err) {\n throw new Error(\"Please provide a valid sessionScope\");\n }\n }\n var noDotNormalised = helper(sessionScope);\n if (noDotNormalised === \"localhost\" || (0, normalisedURLDomain_1.isAnIpAddress)(noDotNormalised)) {\n return noDotNormalised;\n }\n if (sessionScope.startsWith(\".\")) {\n return \".\" + noDotNormalised;\n }\n return noDotNormalised;\n}\nexports.normaliseSessionScopeOrThrowError = normaliseSessionScopeOrThrowError;\nfunction validateAndNormaliseInputOrThrowError(options) {\n var _this = this;\n var apiDomain = normaliseURLDomainOrThrowError(options.apiDomain);\n var apiBasePath = normaliseURLPathOrThrowError(\"/auth\");\n if (options.apiBasePath !== undefined) {\n apiBasePath = normaliseURLPathOrThrowError(options.apiBasePath);\n }\n var defaultSessionScope = windowHandler_1.default.getReferenceOrThrow().windowHandler.location.getHostName();\n // See https://github.com/supertokens/supertokens-website/issues/98\n var sessionTokenFrontendDomain = normaliseSessionScopeOrThrowError(\n options !== undefined && options.sessionTokenFrontendDomain !== undefined\n ? options.sessionTokenFrontendDomain\n : defaultSessionScope\n );\n var sessionExpiredStatusCode = 401;\n if (options.sessionExpiredStatusCode !== undefined) {\n sessionExpiredStatusCode = options.sessionExpiredStatusCode;\n }\n var invalidClaimStatusCode = 403;\n if (options.invalidClaimStatusCode !== undefined) {\n invalidClaimStatusCode = options.invalidClaimStatusCode;\n }\n if (sessionExpiredStatusCode === invalidClaimStatusCode) {\n throw new Error(\"sessionExpiredStatusCode and invalidClaimStatusCode cannot be the same.\");\n }\n var autoAddCredentials = true;\n if (options.autoAddCredentials !== undefined) {\n autoAddCredentials = options.autoAddCredentials;\n }\n var isInIframe = false;\n if (options.isInIframe !== undefined) {\n isInIframe = options.isInIframe;\n }\n var sessionTokenBackendDomain = undefined;\n if (options.sessionTokenBackendDomain !== undefined) {\n sessionTokenBackendDomain = normaliseSessionScopeOrThrowError(options.sessionTokenBackendDomain);\n }\n var maxRetryAttemptsForSessionRefresh = 10;\n if (options.maxRetryAttemptsForSessionRefresh !== undefined) {\n if (options.maxRetryAttemptsForSessionRefresh < 0) {\n throw new Error(\"maxRetryAttemptsForSessionRefresh must be greater than or equal to 0.\");\n }\n maxRetryAttemptsForSessionRefresh = options.maxRetryAttemptsForSessionRefresh;\n }\n var preAPIHook = function (context) {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, { url: context.url, requestInit: context.requestInit }];\n });\n });\n };\n if (options.preAPIHook !== undefined) {\n preAPIHook = options.preAPIHook;\n }\n var postAPIHook = function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n if (options.postAPIHook !== undefined) {\n postAPIHook = options.postAPIHook;\n }\n var onHandleEvent = function () {};\n if (options.onHandleEvent !== undefined) {\n onHandleEvent = options.onHandleEvent;\n }\n var override = __assign(\n {\n functions: function (oI) {\n return oI;\n }\n },\n options.override\n );\n return {\n apiDomain: apiDomain,\n apiBasePath: apiBasePath,\n sessionTokenFrontendDomain: sessionTokenFrontendDomain,\n sessionExpiredStatusCode: sessionExpiredStatusCode,\n invalidClaimStatusCode: invalidClaimStatusCode,\n autoAddCredentials: autoAddCredentials,\n isInIframe: isInIframe,\n tokenTransferMethod: options.tokenTransferMethod !== undefined ? options.tokenTransferMethod : \"cookie\",\n sessionTokenBackendDomain: sessionTokenBackendDomain,\n maxRetryAttemptsForSessionRefresh: maxRetryAttemptsForSessionRefresh,\n preAPIHook: preAPIHook,\n postAPIHook: postAPIHook,\n onHandleEvent: onHandleEvent,\n override: override\n };\n}\nexports.validateAndNormaliseInputOrThrowError = validateAndNormaliseInputOrThrowError;\nfunction getNormalisedUserContext(userContext) {\n if (userContext === undefined) {\n return {};\n }\n return userContext;\n}\nexports.getNormalisedUserContext = getNormalisedUserContext;\n/**\n * Checks if a given string matches any subdomain or the main domain of a specified hostname.\n *\n * @param {string} hostname - The hostname to derive subdomains from.\n * @param {string} str - The string to compare against the subdomains.\n * @returns {boolean} True if the string matches any subdomain or the main domain, otherwise false.\n */\nfunction matchesDomainOrSubdomain(hostname, str) {\n var parts = hostname.split(\".\");\n for (var i = 0; i < parts.length; i++) {\n var subdomainCandidate = parts.slice(i).join(\".\");\n if (subdomainCandidate === str || \".\".concat(subdomainCandidate) === str) {\n return true;\n }\n }\n return false;\n}\nexports.matchesDomainOrSubdomain = matchesDomainOrSubdomain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LockFactoryReference = void 0;\nvar browser_tabs_lock_1 = require(\"browser-tabs-lock\");\nvar defaultFactory = function (storageHandler) {\n return function () {\n return Promise.resolve(new browser_tabs_lock_1.default(storageHandler));\n };\n};\nvar LockFactoryReference = /** @class */ (function () {\n function LockFactoryReference(lockFactory) {\n this.lockFactory = lockFactory;\n }\n LockFactoryReference.init = function (lockFactory, storageHandler) {\n // This is copied from the other XXXReference clasess\n if (this.instance !== undefined) {\n return;\n }\n this.instance = new LockFactoryReference(\n lockFactory !== null && lockFactory !== void 0 ? lockFactory : defaultFactory(storageHandler)\n );\n };\n LockFactoryReference.getReferenceOrThrow = function () {\n if (LockFactoryReference.instance === undefined) {\n throw new Error(\"SuperTokensLockReference must be initialized before calling this method.\");\n }\n return LockFactoryReference.instance;\n };\n return LockFactoryReference;\n})();\nexports.LockFactoryReference = LockFactoryReference;\nexports.default = LockFactoryReference;\n","\"use strict\";\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionClaimValidatorStore = void 0;\nvar SessionClaimValidatorStore = /** @class */ (function () {\n function SessionClaimValidatorStore() {}\n SessionClaimValidatorStore.claimValidatorsAddedByOtherRecipes = [];\n SessionClaimValidatorStore.addClaimValidatorFromOtherRecipe = function (builder) {\n SessionClaimValidatorStore.claimValidatorsAddedByOtherRecipes.push(builder);\n };\n SessionClaimValidatorStore.getClaimValidatorsAddedByOtherRecipes = function () {\n return SessionClaimValidatorStore.claimValidatorsAddedByOtherRecipes;\n };\n return SessionClaimValidatorStore;\n})();\nexports.SessionClaimValidatorStore = SessionClaimValidatorStore;\nexports.default = SessionClaimValidatorStore;\n","\"use strict\";\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultWindowHandlerImplementation = void 0;\nfunction getWindowOrThrow() {\n if (typeof window === \"undefined\") {\n throw Error(\n \"If you are using this package with server-side rendering, please make sure that you are checking if the window object is defined.\"\n );\n }\n return window;\n}\nvar defaultLocalStorageHandler = {\n key: function (index) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().localStorage.key(index)];\n });\n });\n },\n clear: function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().localStorage.clear()];\n });\n });\n },\n getItem: function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().localStorage.getItem(key)];\n });\n });\n },\n removeItem: function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().localStorage.removeItem(key)];\n });\n });\n },\n setItem: function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().localStorage.setItem(key, value)];\n });\n });\n },\n keySync: function (index) {\n return getWindowOrThrow().localStorage.key(index);\n },\n clearSync: function () {\n return getWindowOrThrow().localStorage.clear();\n },\n getItemSync: function (key) {\n return getWindowOrThrow().localStorage.getItem(key);\n },\n removeItemSync: function (key) {\n return getWindowOrThrow().localStorage.removeItem(key);\n },\n setItemSync: function (key, value) {\n return getWindowOrThrow().localStorage.setItem(key, value);\n }\n};\nvar defaultSessionStorageHandler = {\n key: function (index) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().sessionStorage.key(index)];\n });\n });\n },\n clear: function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().sessionStorage.clear()];\n });\n });\n },\n getItem: function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().sessionStorage.getItem(key)];\n });\n });\n },\n removeItem: function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().sessionStorage.removeItem(key)];\n });\n });\n },\n setItem: function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, getWindowOrThrow().sessionStorage.setItem(key, value)];\n });\n });\n },\n keySync: function (index) {\n return getWindowOrThrow().sessionStorage.key(index);\n },\n clearSync: function () {\n return getWindowOrThrow().sessionStorage.clear();\n },\n getItemSync: function (key) {\n return getWindowOrThrow().sessionStorage.getItem(key);\n },\n removeItemSync: function (key) {\n return getWindowOrThrow().sessionStorage.removeItem(key);\n },\n setItemSync: function (key, value) {\n return getWindowOrThrow().sessionStorage.setItem(key, value);\n }\n};\nexports.defaultWindowHandlerImplementation = {\n history: {\n replaceState: function (data, unused, url) {\n return getWindowOrThrow().history.replaceState(data, unused, url);\n },\n getState: function () {\n return getWindowOrThrow().history.state;\n }\n },\n location: {\n getHref: function () {\n return getWindowOrThrow().location.href;\n },\n setHref: function (href) {\n getWindowOrThrow().location.href = href;\n },\n getSearch: function () {\n return getWindowOrThrow().location.search;\n },\n getHash: function () {\n return getWindowOrThrow().location.hash;\n },\n getPathName: function () {\n return getWindowOrThrow().location.pathname;\n },\n assign: function (url) {\n /**\n * The type for assign accepts URL | string but when building\n * it complains about only accepting a string. To prevent this\n * we use any\n */\n getWindowOrThrow().location.assign(url);\n },\n getHostName: function () {\n return getWindowOrThrow().location.hostname;\n },\n getHost: function () {\n return getWindowOrThrow().location.host;\n },\n getOrigin: function () {\n return getWindowOrThrow().location.origin;\n }\n },\n getDocument: function () {\n return getWindowOrThrow().document;\n },\n getWindowUnsafe: function () {\n return getWindowOrThrow().window;\n },\n localStorage: defaultLocalStorageHandler,\n sessionStorage: defaultSessionStorageHandler\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WindowHandlerReference = void 0;\n/* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar defaultImplementation_1 = require(\"./defaultImplementation\");\nvar WindowHandlerReference = /** @class */ (function () {\n function WindowHandlerReference(windowHandlerInput) {\n var windowHandlerFunc = function (original) {\n return original;\n };\n if (windowHandlerInput !== undefined) {\n windowHandlerFunc = windowHandlerInput;\n }\n this.windowHandler = windowHandlerFunc(defaultImplementation_1.defaultWindowHandlerImplementation);\n }\n WindowHandlerReference.init = function (windowHandlerInput) {\n if (WindowHandlerReference.instance !== undefined) {\n return;\n }\n WindowHandlerReference.instance = new WindowHandlerReference(windowHandlerInput);\n };\n WindowHandlerReference.getReferenceOrThrow = function () {\n if (WindowHandlerReference.instance === undefined) {\n throw new Error(\"SuperTokensWindowHandler must be initialized before calling this method.\");\n }\n return WindowHandlerReference.instance;\n };\n return WindowHandlerReference;\n})();\nexports.WindowHandlerReference = WindowHandlerReference;\nexports.default = WindowHandlerReference;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.supported_fdi = exports.package_version = void 0;\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nexports.package_version = \"20.1.5\";\nexports.supported_fdi = [\"1.16\", \"1.17\", \"1.18\", \"1.19\", \"2.0\", \"3.0\", \"3.1\", \"4.0\"];\n","\"use strict\";\n/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\nvar __awaiter =\n (this && this.__awaiter) ||\n function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P\n ? value\n : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\nvar __generator =\n (this && this.__generator) ||\n function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return (\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\n typeof Symbol === \"function\" &&\n (g[Symbol.iterator] = function () {\n return this;\n }),\n g\n );\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_)\n try {\n if (\n ((f = 1),\n y &&\n (t =\n op[0] & 2\n ? y[\"return\"]\n : op[0]\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\n : y.next) &&\n !(t = t.call(y, op[1])).done)\n )\n return t;\n if (((y = 0), t)) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return { value: op[1], done: false };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\n (op[0] === 6 || op[0] === 2)\n ) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addInterceptorsToXMLHttpRequest = void 0;\nvar fetch_1 = require(\"./fetch\");\nvar logger_1 = require(\"./logger\");\nvar windowHandler_1 = require(\"./utils/windowHandler\");\nvar processState_1 = require(\"./processState\");\nvar XHR_EVENTS = [\"readystatechange\", \"abort\", \"error\", \"load\", \"loadend\", \"loadstart\", \"progress\", \"timeout\"];\nfunction addInterceptorsToXMLHttpRequest() {\n var firstEventLoopDone = new Promise(function (res) {\n return setTimeout(res, 0);\n });\n var oldXMLHttpRequest = XMLHttpRequest;\n (0, logger_1.logDebugMessage)(\"addInterceptorsToXMLHttpRequest called\");\n // create XMLHttpRequest proxy object\n // define constructor for my proxy object\n XMLHttpRequest = function () {\n var actual = new oldXMLHttpRequest();\n var self = this;\n var listOfFunctionCallsInProxy = [];\n var requestHeaders = [];\n var customGetterValues = {};\n var customResponseHeaders;\n var eventHandlers = new Map();\n var delayedQueue = firstEventLoopDone;\n function delayIfNecessary(cb) {\n delayedQueue = delayedQueue.finally(function () {\n var _a;\n return (_a = cb()) === null || _a === void 0\n ? void 0\n : _a.catch(function (err) {\n // Call the onerror handler to ensure XHR throws this error.\n var ev = new ProgressEvent(\"error\");\n ev.error = err;\n if (self.onerror !== undefined && self.onerror !== null) {\n self.onerror(ev);\n }\n redispatchEvent(\"error\", ev);\n });\n });\n }\n // We define these during open\n // let method: string = \"\";\n var url = \"\";\n var doNotDoInterception = false;\n var preRequestLSS = undefined;\n var body;\n var sessionRefreshAttempts = 0;\n // we do not provide onerror cause that is fired only on\n // network level failures and nothing else. If a status code is > 400,\n // then onload and onreadystatechange are called.\n // Setting up props (event handlers) that we use in event handlers\n // These require processing the response (and possibly retrying) before they are forwarded to the user\n self.onload = null;\n self.onreadystatechange = null;\n self.onloadend = null;\n // TODO: add support for other event listener options\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#parameters\n self.addEventListener = function (type, listener, _options) {\n var handlers = eventHandlers.get(type);\n if (handlers === undefined) {\n handlers = new Set();\n eventHandlers.set(type, handlers);\n }\n handlers.add(listener);\n };\n self.removeEventListener = function (type, listener) {\n var handlers = eventHandlers.get(type);\n if (handlers === undefined) {\n handlers = new Set();\n eventHandlers.set(type, handlers);\n }\n handlers.delete(listener);\n };\n function redispatchEvent(name, ev) {\n var handlers = eventHandlers.get(name);\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor dispatching \".concat(ev.type, \" to \").concat(handlers ? handlers.size : 0, \" listeners\")\n );\n if (handlers) {\n Array.from(handlers).forEach(function (handler) {\n return handler.apply(self, [ev]);\n });\n }\n }\n function handleRetryPostRefreshing() {\n return __awaiter(this, void 0, void 0, function () {\n var errorMessage, refreshResult, retryXhr;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (preRequestLSS === undefined) {\n throw new Error(\"Should never come here..\");\n }\n (0,\n logger_1.logDebugMessage)(\"XHRInterceptor.handleRetryPostRefreshing: preRequestLSS \" + preRequestLSS.status);\n /**\n * An API may return a 401 error response even with a valid session, causing a session refresh loop in the interceptor.\n * To prevent this infinite loop, we break out of the loop after retrying the original request a specified number of times.\n * The maximum number of retry attempts is defined by maxRetryAttemptsForSessionRefresh config variable.\n */\n if (sessionRefreshAttempts >= fetch_1.default.config.maxRetryAttemptsForSessionRefresh) {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.handleRetryPostRefreshing: Maximum session refresh attempts reached. sessionRefreshAttempts: \"\n .concat(sessionRefreshAttempts, \", maxRetryAttemptsForSessionRefresh: \")\n .concat(fetch_1.default.config.maxRetryAttemptsForSessionRefresh)\n );\n // We set these values to prevent XHR from returning any response in this case. This simulates a network error in XHR.\n customGetterValues[\"status\"] = 0;\n customGetterValues[\"statusText\"] = \"\";\n customGetterValues[\"responseType\"] = \"\";\n errorMessage = \"Received a 401 response from \"\n .concat(\n url,\n \". Attempted to refresh the session and retry the request with the updated session tokens \"\n )\n .concat(\n fetch_1.default.config.maxRetryAttemptsForSessionRefresh,\n \" times, but each attempt resulted in a 401 error. The maximum session refresh limit has been reached. Please investigate your API. To increase the session refresh attempts, update maxRetryAttemptsForSessionRefresh in the config.\"\n );\n console.error(errorMessage);\n throw new Error(errorMessage);\n }\n return [4 /*yield*/, (0, fetch_1.onUnauthorisedResponse)(preRequestLSS)];\n case 1:\n refreshResult = _a.sent();\n sessionRefreshAttempts++;\n (0,\n logger_1.logDebugMessage)(\"XHRInterceptor.handleRetryPostRefreshing: sessionRefreshAttempts: \" + sessionRefreshAttempts);\n if (refreshResult.result !== \"RETRY\") {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.handleRetryPostRefreshing: Not retrying original request \" +\n !!refreshResult.error\n );\n if (refreshResult.error !== undefined) {\n // this will cause the responseText of the self to be updated\n // to the error message and make the status code the same as\n // what the error's status code is.\n throw refreshResult.error;\n }\n // it can come here if refreshResult.result is SESSION_EXPIRED.\n // in that case, the status of self is already 401. So we let it\n // pass through.\n return [2 /*return*/, true];\n }\n (0,\n logger_1.logDebugMessage)(\"XHRInterceptor.handleRetryPostRefreshing: Retrying original request\");\n retryXhr = new oldXMLHttpRequest();\n setUpXHR(self, retryXhr, true);\n // this also calls the send function with the appropriate body\n listOfFunctionCallsInProxy.forEach(function (i) {\n i(retryXhr);\n });\n sendXHR(retryXhr, body);\n return [2 /*return*/, false];\n }\n });\n });\n }\n function handleResponse(xhr) {\n return __awaiter(this, void 0, void 0, function () {\n var status_1, headers, err_1, resp, ev;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (doNotDoInterception) {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.handleResponse: Returning without interception\"\n );\n return [2 /*return*/, true];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, , 11]);\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.handleResponse: Interception started\");\n processState_1.ProcessState.getInstance().addState(\n processState_1.PROCESS_STATE.CALLING_INTERCEPTION_RESPONSE\n );\n status_1 = xhr.status;\n headers = getResponseHeadersFromXHR(xhr);\n return [4 /*yield*/, saveTokensFromHeaders(headers)];\n case 2:\n _a.sent();\n (0,\n fetch_1.fireSessionUpdateEventsIfNecessary)(preRequestLSS.status === \"EXISTS\", status_1, headers.get(\"front-token\"));\n if (!(status_1 === fetch_1.default.config.sessionExpiredStatusCode))\n return [3 /*break*/, 4];\n (0, logger_1.logDebugMessage)(\"responseInterceptor: Status code is: \" + status_1);\n return [4 /*yield*/, handleRetryPostRefreshing()];\n case 3:\n return [2 /*return*/, _a.sent()];\n case 4:\n if (!(status_1 === fetch_1.default.config.invalidClaimStatusCode)) return [3 /*break*/, 6];\n return [4 /*yield*/, (0, fetch_1.onInvalidClaimResponse)({ data: xhr.responseText })];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n return [2 /*return*/, true];\n case 7:\n err_1 = _a.sent();\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.handleResponse: caught error\");\n if (!(err_1.status !== undefined)) return [3 /*break*/, 9];\n return [4 /*yield*/, getXMLHttpStatusAndResponseTextFromFetchResponse(err_1)];\n case 8:\n resp = _a.sent();\n customGetterValues[\"status\"] = resp.status;\n customGetterValues[\"statusText\"] = resp.statusText;\n customGetterValues[\"responseType\"] = resp.responseType;\n customResponseHeaders = resp.headers;\n if (resp.responseType === \"json\") {\n try {\n customGetterValues[\"response\"] = JSON.parse(resp.responseText);\n } catch (_b) {\n customGetterValues[\"response\"] = resp.responseText;\n }\n } else {\n customGetterValues[\"response\"] = resp.responseText;\n }\n customGetterValues[\"responseText\"] = resp.responseText;\n return [3 /*break*/, 10];\n case 9:\n ev = new ProgressEvent(\"error\");\n ev.error = err_1;\n if (self.onerror !== undefined && self.onerror !== null) {\n self.onerror(ev);\n }\n redispatchEvent(\"error\", ev);\n _a.label = 10;\n case 10:\n return [2 /*return*/, true];\n case 11:\n return [2 /*return*/];\n }\n });\n });\n }\n self.open = function (_, u) {\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.open called\");\n var args = arguments;\n // method = m;\n url = u;\n try {\n doNotDoInterception =\n (typeof url === \"string\" &&\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n url,\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n )) ||\n (typeof url !== \"string\" &&\n !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n url.toString(),\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n ));\n } catch (err) {\n if (err.message === \"Please provide a valid domain name\") {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.open: Trying shouldDoInterceptionBasedOnUrl with location.origin\"\n );\n // .origin gives the port as well..\n doNotDoInterception = !fetch_1.default.recipeImpl.shouldDoInterceptionBasedOnUrl(\n windowHandler_1.default.getReferenceOrThrow().windowHandler.location.getOrigin(),\n fetch_1.default.config.apiDomain,\n fetch_1.default.config.sessionTokenBackendDomain\n );\n } else {\n throw err;\n }\n }\n delayIfNecessary(function () {\n listOfFunctionCallsInProxy.push(function (xhr) {\n xhr.open.apply(xhr, args);\n });\n // here we use the apply syntax cause there are other optional args that\n // can be passed by the user.\n actual.open.apply(actual, args);\n });\n };\n self.send = function (inputBody) {\n body = inputBody;\n sendXHR(actual, body);\n };\n self.setRequestHeader = function (name, value) {\n var _this = this;\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.setRequestHeader: Called with \".concat(name));\n if (doNotDoInterception) {\n delayIfNecessary(function () {\n return actual.setRequestHeader(name, value);\n });\n return;\n }\n // We need to do this, because if there is another interceptor wrapping this (e.g.: the axios interceptor)\n // then the anti-csrf token they add would be concatenated to the anti-csrf token added by this interceptor\n if (name === \"anti-csrf\") {\n return;\n }\n delayIfNecessary(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var accessToken, refreshToken;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(name.toLowerCase() === \"authorization\")) return [3 /*break*/, 3];\n (0,\n logger_1.logDebugMessage)(\"XHRInterceptor.setRequestHeader: checking if user provided auth header matches local token\");\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"access\")];\n case 1:\n accessToken = _a.sent();\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"refresh\")];\n case 2:\n refreshToken = _a.sent();\n if (\n accessToken !== undefined &&\n refreshToken !== undefined &&\n value === \"Bearer \".concat(accessToken)\n ) {\n // We are ignoring the Authorization header set by the user in this case, because it would cause issues\n // If we do not ignore this, then this header would be used even if the request is being retried after a refresh, even though it contains an outdated access token.\n // This causes an infinite refresh loop.\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.setRequestHeader: skipping Authorization from user provided headers because it contains our access token\"\n );\n return [2 /*return*/];\n }\n _a.label = 3;\n case 3:\n listOfFunctionCallsInProxy.push(function (xhr) {\n xhr.setRequestHeader(name, value);\n });\n // The original version \"combines\" headers according to MDN.\n requestHeaders.push({ name: name, value: value });\n actual.setRequestHeader(name, value);\n return [2 /*return*/];\n }\n });\n });\n });\n };\n var copiedProps = undefined;\n setUpXHR(self, actual, false);\n function setUpXHR(self, xhr, isRetry) {\n var responseProcessed;\n var delayedEvents = [\"load\", \"loadend\", \"readystatechange\"];\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.setUpXHR called\");\n var _loop_1 = function (name_1) {\n (0, logger_1.logDebugMessage)(\"XHRInterceptor added listener for event \".concat(name_1));\n xhr.addEventListener(name_1, function (ev) {\n (0, logger_1.logDebugMessage)(\"XHRInterceptor got event \".concat(name_1));\n if (!delayedEvents.includes(name_1)) {\n redispatchEvent(name_1, ev);\n }\n });\n };\n for (var _i = 0, XHR_EVENTS_1 = XHR_EVENTS; _i < XHR_EVENTS_1.length; _i++) {\n var name_1 = XHR_EVENTS_1[_i];\n _loop_1(name_1);\n }\n xhr.onload = function (ev) {\n if (responseProcessed === undefined) {\n responseProcessed = handleResponse(xhr);\n }\n responseProcessed.then(function (callself) {\n if (!callself) {\n return;\n }\n if (self.onload) {\n self.onload(ev);\n }\n redispatchEvent(\"load\", ev);\n });\n };\n xhr.onreadystatechange = function (ev) {\n // In local files, status is 0 upon success in Mozilla Firefox\n if (xhr.readyState === oldXMLHttpRequest.DONE) {\n if (responseProcessed === undefined) {\n responseProcessed = handleResponse(xhr);\n }\n responseProcessed.then(function (callself) {\n if (!callself) {\n return;\n }\n if (self.onreadystatechange) self.onreadystatechange(ev);\n redispatchEvent(\"readystatechange\", ev);\n });\n } else {\n if (self.onreadystatechange) {\n self.onreadystatechange(ev);\n }\n redispatchEvent(\"readystatechange\", ev);\n }\n };\n xhr.onloadend = function (ev) {\n if (responseProcessed === undefined) {\n responseProcessed = handleResponse(xhr);\n }\n responseProcessed.then(function (callself) {\n if (!callself) {\n return;\n }\n if (self.onloadend) {\n self.onloadend(ev);\n }\n redispatchEvent(\"loadend\", ev);\n });\n };\n self.getAllResponseHeaders = function () {\n var headersString;\n if (customResponseHeaders) {\n headersString = \"\";\n customResponseHeaders.forEach(function (v, k) {\n return (headersString += \"\".concat(k, \": \").concat(v, \"\\r\\n\"));\n });\n } else {\n headersString = xhr.getAllResponseHeaders();\n }\n // We use this \"fake-header\" to signal other interceptors (axios) that this is done\n // in case both is applied\n return headersString + \"x-supertokens-xhr-intercepted: true\\r\\n\";\n };\n self.getResponseHeader = function (name) {\n if (name === \"x-supertokens-xhr-intercepted\") {\n return \"true\";\n }\n if (customResponseHeaders) {\n return customResponseHeaders.get(name);\n }\n return xhr.getResponseHeader(name);\n };\n if (copiedProps === undefined) {\n copiedProps = [];\n // iterate all properties in actual to proxy them according to their type\n // For functions, we call actual and return the result\n // For non-functions, we make getters/setters\n // If the property already exists on self, then don't proxy it\n for (var prop in xhr) {\n // skip properties we already have - this will skip both the above defined properties\n // that we don't want to proxy and skip properties on the prototype belonging to Object\n if (!(prop in self)) {\n // We save these props into an array - in case we need to set up a retry XHR\n copiedProps.push(prop);\n }\n }\n }\n var _loop_2 = function (prop) {\n if (typeof xhr[prop] === \"function\") {\n // define our own property that calls the same method on the actual\n Object.defineProperty(self, prop, {\n configurable: true,\n value: function () {\n var args = arguments;\n if (!isRetry) {\n listOfFunctionCallsInProxy.push(function (xhr) {\n xhr[prop].apply(xhr, args);\n });\n }\n return xhr[prop].apply(xhr, args);\n }\n });\n } else {\n // define our own property that just gets or sets the same prop on the actual\n Object.defineProperty(self, prop, {\n configurable: true,\n get: function () {\n if (customGetterValues[prop] !== undefined) {\n return customGetterValues[prop];\n }\n return xhr[prop];\n },\n set: function (val) {\n if (!isRetry) {\n listOfFunctionCallsInProxy.push(function (xhr) {\n xhr[prop] = val;\n });\n }\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.set[\".concat(prop, \"] = \").concat(val));\n xhr[prop] = val;\n }\n });\n }\n };\n for (var _a = 0, copiedProps_1 = copiedProps; _a < copiedProps_1.length; _a++) {\n var prop = copiedProps_1[_a];\n _loop_2(prop);\n }\n }\n function sendXHR(xhr, body) {\n var _this = this;\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: called\");\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: Value of doNotDoInterception: \" + doNotDoInterception);\n if (doNotDoInterception) {\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: Returning without interception\");\n delayIfNecessary(function () {\n return xhr.send(body);\n });\n return;\n }\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: Interception started\");\n processState_1.ProcessState.getInstance().addState(\n processState_1.PROCESS_STATE.CALLING_INTERCEPTION_REQUEST\n );\n delayIfNecessary(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var antiCsrfToken, transferMethod;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(true)];\n case 1:\n preRequestLSS = _a.sent();\n if (!(preRequestLSS.status === \"EXISTS\")) return [3 /*break*/, 3];\n return [\n 4 /*yield*/,\n fetch_1.AntiCsrfToken.getToken(preRequestLSS.lastAccessTokenUpdate)\n ];\n case 2:\n antiCsrfToken = _a.sent();\n if (antiCsrfToken !== undefined) {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.send: Adding anti-csrf token to request\"\n );\n xhr.setRequestHeader(\"anti-csrf\", antiCsrfToken);\n }\n _a.label = 3;\n case 3:\n if (fetch_1.default.config.autoAddCredentials) {\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: Adding credentials include\");\n self.withCredentials = true;\n }\n if (\n !requestHeaders.some(function (i) {\n return i.name === \"rid\";\n })\n ) {\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: Adding rid header: anti-csrf\");\n xhr.setRequestHeader(\"rid\", \"anti-csrf\");\n } else {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.send: rid header was already there in request\"\n );\n }\n transferMethod = fetch_1.default.config.tokenTransferMethod;\n if (\n !requestHeaders.some(function (i) {\n return i.name === \"st-auth-mode\";\n })\n ) {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.send: Adding st-auth-mode header: \" + transferMethod\n );\n xhr.setRequestHeader(\"st-auth-mode\", transferMethod);\n } else {\n (0, logger_1.logDebugMessage)(\n \"XHRInterceptor.send: st-auth-mode header was already there in request\"\n );\n }\n return [4 /*yield*/, setAuthorizationHeaderIfRequired(xhr, requestHeaders)];\n case 4:\n _a.sent();\n (0, logger_1.logDebugMessage)(\"XHRInterceptor.send: Making user's http call\");\n return [2 /*return*/, xhr.send(body)];\n }\n });\n });\n });\n }\n };\n // This can be used by other interceptors (axios) to detect if this interceptor has been added or not\n XMLHttpRequest.__interceptedBySuperTokens = true;\n XMLHttpRequest.__original = oldXMLHttpRequest;\n}\nexports.addInterceptorsToXMLHttpRequest = addInterceptorsToXMLHttpRequest;\nfunction getXMLHttpStatusAndResponseTextFromFetchResponse(response) {\n return __awaiter(this, void 0, void 0, function () {\n var contentType, data, responseType, _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n contentType = response.headers.get(\"content-type\");\n data = \"\";\n responseType = \"text\";\n if (!(contentType === null)) return [3 /*break*/, 5];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n return [4 /*yield*/, response.text()];\n case 2:\n data = _d.sent();\n return [3 /*break*/, 4];\n case 3:\n _a = _d.sent();\n data = \"\";\n return [3 /*break*/, 4];\n case 4:\n return [3 /*break*/, 9];\n case 5:\n if (!contentType.includes(\"application/json\")) return [3 /*break*/, 7];\n responseType = \"json\";\n _c = (_b = JSON).stringify;\n return [4 /*yield*/, response.json()];\n case 6:\n data = _c.apply(_b, [_d.sent()]);\n return [3 /*break*/, 9];\n case 7:\n if (!contentType.includes(\"text/\")) return [3 /*break*/, 9];\n return [4 /*yield*/, response.text()];\n case 8:\n data = _d.sent();\n _d.label = 9;\n case 9:\n return [\n 2 /*return*/,\n {\n status: response.status,\n responseText: data,\n statusText: response.statusText,\n responseType: responseType,\n headers: response.headers\n }\n ];\n }\n });\n });\n}\nfunction setAuthorizationHeaderIfRequired(xhr, requestHeaders) {\n return __awaiter(this, void 0, void 0, function () {\n var accessToken, refreshToken;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"setAuthorizationHeaderIfRequired: adding existing tokens as header\");\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"access\")];\n case 1:\n accessToken = _a.sent();\n return [4 /*yield*/, (0, fetch_1.getTokenForHeaderAuth)(\"refresh\")];\n case 2:\n refreshToken = _a.sent();\n // We don't add the refresh token because that's only required by the refresh call which is done with fetch\n // Still, we only add the Authorization header if both are present, because we are planning to add an option to expose the\n // access token to the frontend while using cookie based auth - so that users can get the access token to use\n if (accessToken !== undefined && refreshToken !== undefined) {\n if (\n requestHeaders.some(function (_a) {\n var name = _a.name;\n return name.toLowerCase() === \"authorization\";\n })\n ) {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: Authorization header defined by the user, not adding\"\n );\n } else {\n if (accessToken !== undefined) {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: added authorization header\"\n );\n xhr.setRequestHeader(\"Authorization\", \"Bearer \".concat(accessToken));\n }\n // We don't add the refresh token because that's only required by the refresh call which is done with fetch\n }\n } else {\n (0, logger_1.logDebugMessage)(\n \"setAuthorizationHeaderIfRequired: token for header based auth not found\"\n );\n }\n return [2 /*return*/];\n }\n });\n });\n}\nfunction saveTokensFromHeaders(headers) {\n return __awaiter(this, void 0, void 0, function () {\n var refreshToken, accessToken, frontToken, antiCsrfToken, tok;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: Saving updated tokens from the response\");\n refreshToken = headers.get(\"st-refresh-token\");\n if (!(refreshToken !== null)) return [3 /*break*/, 2];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: saving new refresh token\");\n return [4 /*yield*/, (0, fetch_1.setToken)(\"refresh\", refreshToken)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n accessToken = headers.get(\"st-access-token\");\n if (!(accessToken !== null)) return [3 /*break*/, 4];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: saving new access token\");\n return [4 /*yield*/, (0, fetch_1.setToken)(\"access\", accessToken)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n frontToken = headers.get(\"front-token\");\n if (!(frontToken !== null)) return [3 /*break*/, 6];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: Setting sFrontToken: \" + frontToken);\n return [4 /*yield*/, fetch_1.FrontToken.setItem(frontToken)];\n case 5:\n _a.sent();\n (0, fetch_1.updateClockSkewUsingFrontToken)({ frontToken: frontToken, responseHeaders: headers });\n _a.label = 6;\n case 6:\n antiCsrfToken = headers.get(\"anti-csrf\");\n if (!(antiCsrfToken !== null)) return [3 /*break*/, 9];\n return [4 /*yield*/, (0, fetch_1.getLocalSessionState)(false)];\n case 7:\n tok = _a.sent();\n if (!(tok.status === \"EXISTS\")) return [3 /*break*/, 9];\n (0, logger_1.logDebugMessage)(\"saveTokensFromHeaders: Setting anti-csrf token\");\n return [4 /*yield*/, fetch_1.AntiCsrfToken.setItem(tok.lastAccessTokenUpdate, antiCsrfToken)];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n return [2 /*return*/];\n }\n });\n });\n}\nfunction getResponseHeadersFromXHR(xhr) {\n return new Headers(\n xhr\n .getAllResponseHeaders()\n .split(\"\\r\\n\")\n .map(function (line) {\n var sep = line.indexOf(\": \");\n if (sep === -1) {\n return [\"\", \"\"];\n }\n return [line.slice(0, sep), line.slice(sep + 2)];\n })\n .filter(function (e) {\n return e[0].length !== 0;\n })\n );\n}\n","/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n * \n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License. \n*/\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"../../lib/build/utils/cookieHandler\"));\n","/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n * \n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License. \n*/\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"../../lib/build/utils/dateProvider\"));\n","/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n\nlet d = require(\"../../lib/build/error\");\n\nif (d.default !== undefined) {\n __export(d);\n} else {\n __export({\n default: d,\n ...d,\n });\n}","/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n * \n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License. \n*/\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"../../lib/build/utils/globalClaimValidators\"));\n","/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * \"License\") as published by the Apache Software Foundation.\n * \n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License. \n*/\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"../../lib/build/utils/windowHandler\"));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(991);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","init","window","_CSRF","err","console","log","_sessionExpired","refresh","dispatchEvent","CustomEvent","preAPIHook","csrf","context","requestInit","url","headers","initSuperTokens","Session","async","inited","SuperTokens","appInfo","apiDomain","_domain","apiBasePath","appName","recipeList","Passwordless","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","_this","Object","defineProperty","exports","processLock_1","LOCK_STORAGE_KEY","DEFAULT_STORAGE_HANDLER","key","index","_a","Error","getItem","clear","localStorage","removeItem","setItem","keySync","getItemSync","clearSync","removeItemSync","setItemSync","delay","milliseconds","setTimeout","generateRandomString","CHARS","randomstring","i","Math","floor","random","SuperTokensLock","storageHandler","acquiredIatSet","Set","undefined","id","Date","now","toString","acquireLock","bind","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","prototype","lockKey","timeout","iat","MAX_TIME","STORAGE_KEY","STORAGE","TIMEOUT_KEY","lockObjPostDelay","parsedLockObjPostDelay","JSON","stringify","timeoutKey","timeAcquired","timeRefreshed","parse","add","lockCorrector","storageKey","lockObj","parsedLockObj","default","lock","has","unlock","resolvedCalled","startedAt","removedListeners","stopWaiting","removeEventListener","removeFromWaiting","clearTimeout","timeOutId","timeToWait","addEventListener","addToWaiting","max","func","filter","notifyWaiters","slice","forEach","parsedlockObj","delete","MIN_ALLOWED_TIME","KEYS","currIndex","LOCK_KEY","includes","ProcessLocking","locked","Map","addToLocked","toAdd","callbacks","get","set","unshift","isLocked","toCall","getInstance","instance","__assign","assign","s","arguments","p","hasOwnProperty","getProxyObject","orig","ret","_call","__","_loop_1","k","args","_i","keys_1","keys","OverrideableBuilder","getProxyObject_1","originalImplementation","layers","proxies","override","overrideFunc","proxy","layer","build","_b","_c","proxyInd","this_1","fname","__esModule","m","__export","SSR_ERROR","DEFAULT_API_BASE_PATH","CookieHandlerReference","cookieHandler_1","enumerable","DateProviderReference","dateProvider_1","error_1","STGeneralError","supertokens_1","SuperTokensAPIWrapper","config","NormalisedURLDomain","getAsStringDangerous","normaliseURLDomainOrThrowError","input","ignoreProtocol","trim","startsWith","urlObj","URL","hostname","ipaddress","test","host","protocol","indexOf","substr","NormalisedURLPath","other","appendPath","normaliseURLPathOrThrowError","pathname","charAt","domainGiven","PostSuperTokensInitCallbacks","addPostInitCallback","cb","postInitCallbacks","runPostInitCallbacks","throw","return","normalisedURLPath_1","version_1","Querier","recipeId","tenantId","path","queryParams","postAPIHook","fetch","getFullUrl","method","getResponseJsonOrThrowGeneralError","jsonBody","fetchResponse","post","put","modifiedUrl","reponseForPostAPI","callPreAPIHook","supported_fdi","join","rid","status","clone","pathStr","basePath","concat","fullUrl","URLSearchParams","response","json","message","preparePreAPIHook","recipePreAPIHook","action","options","userContext","postRecipeHookContext","preparePostAPIHook","recipePostAPIHook","extendStatics","__extends","d","b","setPrototypeOf","__proto__","Array","String","constructor","create","recipeModule_1","recipe_1","AuthRecipe","_super","signOut","getInstanceOrThrow","normaliseAuthRecipe","utils_1","normaliseRecipeModuleConfig","EMAILVERIFICATION_CLAIM_ID","Recipe","supertokens_js_override_1","recipeImplementation_1","utils_2","normaliseUserInput","builder","clientType","recipeImplementation","functions","RECIPE_ID","error","checkForSSRErrorAndAppendIfNeeded","reset","isTest","getRecipeImplementation","querier_1","recipeImplInput","querier","getTenantId","queryParam","getQueryParams","getLoginMethods","firstFactors","emailPassword","enabled","thirdParty","passwordless","providers","PASSWORDLESS_LOGIN_ATTEMPT_INFO_STORAGE_KEY","clearLoginAttemptInfo","setLoginAttemptInfo","getLoginAttemptInfo","getTenantIdFromURL","getPreAuthSessionIdFromURL","getLinkCodeFromURL","doesPhoneNumberExist","doesEmailExist","consumeCode","resendCode","createCode","recipe_2","RecipeWrapper","recipe","normalisedUserContext","createCodeResponse","getNormalisedUserContext","shouldTryLinkingWithSessionUser","attemptInfo","deviceId","preAuthSessionId","flowType","previousAttemptInfo","additionalParams","attemptInfoFromStorage","linkCode","userInputCode","authRecipe_1","windowHandler_1","constants_1","bodyObj","_d","email","phoneNumber","normaliseUserResponse","getHashFromLocation","idFromQuery","doesExist","exists","storedInfo","WindowHandlerReference","getReferenceOrThrow","windowHandler","ex","version","RecipeModule","getInvalidClaimsFromResponse","getClaimValue","validateClaims","addAxiosInterceptors","doesSessionExist","attemptRefreshingSession","getAccessToken","getAccessTokenPayloadSecurely","getUserId","BooleanClaim","PrimitiveArrayClaim","PrimitiveClaim","axiosInstance","claim","overrideGlobalClaimValidators","supertokens_website_1","__spreadArray","to","from","pack","ar","l","priorityValidatorIds","originalImpl","oI","getGlobalClaimValidators","res","x","Headers","enableDebugLogs","postSuperTokensInitCallbacks_1","normaliseInputAppInfoOrThrowError","multitenancyFound","map","recipeInstance","cookieHandler","dateProvider","warn","normaliseUser","getAllQueryParams","appendQueryParamsToURL","normalisedURLDomain_1","globalClaimValidators_1","responseUser","emails","phoneNumbers","isPrimaryUser","tenantIds","timeJoined","loginMethods","recipeUserId","stringUrl","url_1","entries","searchParams","href","fakeDomain","url_2","search","defaultPath","apiGatewayPath","process","env","TEST_MODE","param","location","getSearch","getHash","substring","createdNewRecipeUser","createdNewUser","user","package_version","responseErrorInterceptor","responseInterceptor","interceptorFunctionRequestFulfilled","axiosError_1","fetch_1","processState_1","logger_1","getUrlFromConfig","baseURL","doNotDoInterception","preRequestLSS","configWithAntiCsrf","antiCsrfToken","transferMethod","logDebugMessage","recipeImpl","shouldDoInterceptionBasedOnUrl","sessionTokenBackendDomain","getOrigin","ProcessState","addState","PROCESS_STATE","CALLING_INTERCEPTION_REQUEST","getLocalSessionState","AntiCsrfToken","getToken","lastAccessTokenUpdate","autoAddCredentials","withCredentials","tokenTransferMethod","removeAuthHeaderIfMatchesLocalToken","setAuthorizationHeaderIfRequired","initCalled","CALLING_INTERCEPTION_RESPONSE","saveTokensFromHeaders","fireSessionUpdateEventsIfNecessary","sessionExpiredStatusCode","AuthHttpRequest","doRequest","invalidClaimStatusCode","onInvalidClaimResponse","httpCall","prevResponse","prevError","viaInterceptor","returnObj","localPrevError","localPrevResponse","err_1","errorMessage","refreshResult","__supertokensSessionRefreshAttempts","maxRetryAttemptsForSessionRefresh","hasExceededMaxSessionRefreshAttempts","onUnauthorisedResponse","incrementSessionRefreshAttemptCount","createAxiosErrorFromFetchResp","requestConfig","accessToken","refreshToken","getTokenForHeaderAuth","Authorization","__supertokensAddedAuthHeader","frontToken","responseHeaders_1","tok","setToken","FrontToken","isArray","item","append","updateClockSkewUsingFrontToken","responseHeaders","authHeader","authorization","enhanceAxiosError","code","request","isAxiosError","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","responseOrError","isResponse","axiosResponse","contentType","data","text","blob","statusText","validators","isTrue","maxAge","hasValue","isFalse","val","maxAgeInSeconds","defaultMaxAgeInSeconds","DateProvider","ctx","shouldRefresh","payload","getThresholdInSeconds","getValueFromPayload","validate","claimVal","ageInSeconds","isValid","reason","expectedToInclude","actualValue","getLastFetchedTime","excludes","expectedToNotInclude","includesAll","claimSet","every","includesAny","some","expectedToIncludeAtLeastOneOf","excludesAll","_userContext","expectedValue","isSuperTokensGeneralError","isThisError","setFrontToken","getFrontToken","setAntiCSRF","saveLastAccessTokenUpdate","getStorageNameForToken","onTokenUpdate","lockFactory_1","associatedAccessTokenUpdate","antiCsrf","tokenInfo","getAntiCSRFToken","removeToken","getTokenInfo","parseFrontToken","ate","uid","up","doesTokenExists","getFrontTokenFromCookie","isInIframe","sessionTokenFrontendDomain","fetchedWindow","getWindowUnsafe","refreshTokenUrl","signOutUrl","__supertokensOriginalFetch","__supertokensSessionRecipe","addFetchInterceptorsAndReturnModifiedFetch","originalFetch","addXMLHttpRequestInterceptor","finalURL","origHeaders","sessionRefreshAttempts","clonedHeaders","retry","credentials","Response","LAST_ACCESS_TOKEN_UPDATE","REFRESH_TOKEN_NAME","ACCESS_TOKEN_NAME","ANTI_CSRF_NAME","FRONT_TOKEN_NAME","postLockLSS","postLockSessionExists","preRequestSessionExists","sessionStatusChanged","accessTokenTimestampChanged","preAPIResult","isUnauthorised","postRequestLSS","lockFactory","onHandleEvent","sessionExpiredOrRevoked","claimValidationErrors","tryRefresh","lastAccessTokenUpdate_1","getFromCookies","tokenType","storeInCookies","expiry","expires","Number","MAX_SAFE_INTEGER","toUTCString","domain","getHostName","setCookie","parts","last","getCookie","split","shift","addRefreshToken","successfullySavedToCookies","getAntiCSRFromCookie","temp","fromCookie","antiCSRFToken","decodeURIComponent","escape","atob","oldToken","oldPayload","newPayload","wasLoggedIn","frontTokenHeaderFromResponse","frontTokenExistsAfter","frontTokenPayload","clockSkewInMillis","calculateClockSkewInMillis","accessTokenPayload","setClientClockSkewInMillis","sessionClaimValidatorStore_1","validateAndNormaliseInputOrThrowError","enableLogging","axiosInterceptorQueue","claimValidatorsAddedByOtherRecipes","SessionClaimValidatorStore","getClaimValidatorsAddedByOtherRecipes","globalClaimValidators","claimValidators","primitiveClaim_1","primitiveArrayClaim_1","booleanClaim_1","disableLogging","__supertokensWebsiteLogging","toISOString","isAnIpAddress","history","state","ignored","getEventByLastEventByName","waitForEvent","timeInMS","startTime","actualThis","tryAndGet","axios_1","xmlhttprequest_1","CLAIM_REFRESH_LOCK_NAME","addInterceptorsToXMLHttpRequest","XMLHttpRequest","__interceptedBySuperTokens","requestInterceptors","interceptors","handlers","use","resp","responseJson","tryCount","errors","validator","validationRes","toCheckUrl","apiDomainAndInputDomainMatch","normalisedsessionDomain","normaliseSessionScopeOrThrowError","matchesDomainOrSubdomain","tokenIssuedAt","defaultCookieHandlerImplementation","document","cookie","cookieString","defaultImplementation_1","cookieHandlerInput","cookieHandlerFunc","original","thresholdInSeconds","stored","CLOCK_SKEW_KEY","parseInt","setThresholdInSeconds","abs","getClientClockSkewInMillis","dateProviderInput","_1","sessionScope","noDotNormalised","toLowerCase","helper","defaultSessionScope","str","subdomainCandidate","LockFactoryReference","browser_tabs_lock_1","defaultFactory","addClaimValidatorFromOtherRecipe","getWindowOrThrow","defaultWindowHandlerImplementation","defaultLocalStorageHandler","defaultSessionStorageHandler","sessionStorage","replaceState","unused","getState","getHref","setHref","hash","getPathName","getHost","origin","getDocument","windowHandlerInput","windowHandlerFunc","XHR_EVENTS","getXMLHttpStatusAndResponseTextFromFetchResponse","responseType","responseText","xhr","requestHeaders","setRequestHeader","firstEventLoopDone","oldXMLHttpRequest","customResponseHeaders","actual","self","listOfFunctionCallsInProxy","customGetterValues","eventHandlers","delayedQueue","delayIfNecessary","finally","catch","ev","ProgressEvent","onerror","redispatchEvent","type","size","handler","handleRetryPostRefreshing","retryXhr","setUpXHR","sendXHR","handleResponse","status_1","getAllResponseHeaders","line","sep","getResponseHeadersFromXHR","onload","onreadystatechange","onloadend","listener","_options","open","u","send","inputBody","copiedProps","isRetry","responseProcessed","delayedEvents","name_1","XHR_EVENTS_1","callself","readyState","DONE","headersString","getResponseHeader","prop","_loop_2","configurable","copiedProps_1","__original","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","queue","fn","r","a","hasAwait","currentDeps","outerResolve","depQueues","promise","rej","deps","dep","obj","wrapDeps","getResult","fnQueue","q","getter","definition","o","globalThis","Function"],"sourceRoot":""}