@sambath999/localize-token 12.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sambath999-localize-token.umd.js","sources":["../../node_modules/tslib/tslib.es6.mjs","../../src/lib/localize.token.storage.ts","../../src/lib/localize.token.ts","../../src/lib/localize.token.service.ts","../../src/lib/localize.token.module.ts","../../src/lib/localize.api.service.ts","../../src/sambath999-localize-token.ts"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(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 __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 (g && (g = 0, op[0] && (_ = 0)), _) 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}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) 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}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { LocalizeToken } from \"./localize.token\";\r\n\r\n\r\n/**\r\n* Assembly of @package ng2-cookies @see https://www.npmjs.com/package/ng2-cookies\r\n*\r\n* Reassembled by\r\n* @author sambath999\r\n* @date_29_09_2021\r\n* Updated from raw parameters to\r\n* @param {ICookieOptions} options and added another newer cookie flag\r\n* @param {string} samesite\r\n* @param {constant} SameSiteTypes, @param {string} strict \"strict\", @param {string} lax \"lax\", @param {string} none \"none\"\r\n*\r\n* @enum\r\n*/\r\nexport class LocalizeTokenStorageHelper {\r\n\r\n /**\r\n * Checks the existence of a single cookie by it's name\r\n *\r\n * @param {string} name Identification of the cookie\r\n * @returns existence of the cookie\r\n */\r\n check(name: string): boolean {\r\n if (typeof document === \"undefined\") return false;\r\n name = encodeURIComponent(name);\r\n const regexp = new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\r\n return regexp.test(document.cookie);\r\n }\r\n\r\n /**\r\n * Retrieves a single cookie by it's name\r\n *\r\n * @param {string} name Identification of the Cookie\r\n * @returns The Cookie's value\r\n */\r\n get(name: string): string | undefined {\r\n if (!this.check(name)) return undefined;\r\n\r\n name = encodeURIComponent(name);\r\n const regexp = new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\r\n const result = regexp.exec(document.cookie);\r\n return result ? decodeURIComponent(result[1]) : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves a a list of all cookie avaiable\r\n *\r\n * @returns Object with all Cookies\r\n */\r\n getAll(): any {\r\n const cookies: any = {};\r\n\r\n if (document.cookie) {\r\n const split = document.cookie.split(';');\r\n for (const s of split) {\r\n const currCookie = s.split('=');\r\n currCookie[0] = currCookie[0].trim();\r\n cookies[decodeURIComponent(currCookie[0])] = decodeURIComponent(currCookie[1]);\r\n }\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n get defaultOptions(): ICookieOptions { return LocalizeToken.cookieOptions }\r\n\r\n\r\n set(name: string, value: string, options?: ICookieOptions) {\r\n options ??= this.defaultOptions;\r\n const { expires, path, domain, secure, samesite } = options;\r\n let cookieStr = `${encodeURIComponent(name)}=${encodeURIComponent(value)};`;\r\n\r\n if (expires) {\r\n const dtExpires = typeof expires === 'number' ? new Date(Date.now() + expires * 864e5) : expires;\r\n cookieStr += `expires=${dtExpires.toUTCString()};`;\r\n }\r\n\r\n cookieStr += path ? `path=${path};` : '';\r\n cookieStr += domain ? `domain=${domain};` : '';\r\n cookieStr += secure ? 'secure;' : '';\r\n cookieStr += samesite ? `samesite=${samesite};` : '';\r\n\r\n document.cookie = cookieStr;\r\n }\r\n\r\n /**\r\n * Removes specified Cookie\r\n *\r\n * @param {string} name Cookie's identification\r\n * @param {string} path Path relative to the domain where the cookie should be avaiable. Default /\r\n * @param {string} domain Domain where the cookie should be avaiable. Default current domain\r\n */\r\n delete(name: string, path: string = '/', domain: string = window.location.hostname): void {\r\n this.set(name, '', { path, domain, expires: -1 });\r\n }\r\n\r\n /**\r\n * Delete all cookie avaiable\r\n */\r\n deleteAll(path?: string, domain?: string): void {\r\n const cookies = this.getAll();\r\n\r\n for (const cookieName of Object.keys(cookies)) {\r\n this.delete(cookieName, path, domain);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport enum ISameSiteType {\r\n strict = \"strict\",\r\n lax = \"lax\",\r\n none = \"none\"\r\n}\r\n\r\nexport interface ICookieOptions {\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n samesite?: string\r\n}\r\n","import { ICookieOptions, LocalizeTokenStorageHelper } from \"./localize.token.storage\";\r\ninterface ILocalizeTokenConfig {\r\n mainDomain: string;\r\n authTokenName: string;\r\n tenantTokenName: string;\r\n refreshTokenName: string;\r\n needTenant: boolean;\r\n isProduction: boolean;\r\n revokeTokenUrl?: string;\r\n}\r\nexport class LocalizeToken {\r\n static config: ILocalizeTokenConfig = {\r\n mainDomain: location.hostname,\r\n authTokenName: 'auth-token',\r\n tenantTokenName: 'tenant-token',\r\n refreshTokenName: 'refresh-token',\r\n needTenant: false,\r\n isProduction: false,\r\n }\r\n\r\n static cookieOptions: ICookieOptions = {\r\n path: '/',\r\n domain: LocalizeToken.config.mainDomain,\r\n secure: true,\r\n // samesite: SameSiteType.strict,\r\n expires: 1\r\n }\r\n static readonly storage = new LocalizeTokenStorageHelper();\r\n\r\n static readonly httpHeaders = {\r\n AUTHORIZATION: 'Authorization',\r\n X_TENANT: 'X-Tenant',\r\n X_REFRESH_TOKEN: 'X-RefreshToken',\r\n CONTENT_TYPE: 'Content-Type',\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Waits for a specified amount of time.\r\n * @param milliseconds - The milliseconds to wait.\r\n * @param when - The condition to wait for. Default is true.\r\n * @returns - Promise<void>\r\n */\r\nexport async function waitFor(milliseconds: number, when: boolean = true) {\r\n if (!when) return;\r\n await new Promise(resolve => setTimeout(resolve, milliseconds));\r\n }\r\n \r\n /**\r\n * Waits until the condition is met.\r\n * @param when - The condition to wait for.\r\n * @param intervalNumber - The interval number in milliseconds to check the condition. Default is 50.\r\n */\r\n export async function waitUntil(when: () => any, intervalNumber: number = 50) {\r\n await new Promise(resolve => {\r\n const interval = setInterval(async () => {\r\n const cond = when();\r\n const result = cond instanceof Promise ? await cond : cond;\r\n if (result) {\r\n clearInterval(interval);\r\n resolve(true);\r\n }\r\n }, intervalNumber);\r\n });\r\n }","import { Injectable } from '@angular/core';\r\nimport { LocalizeToken } from './localize.token';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport * as jwt_decode from 'jwt-decode';\r\nexport interface JwtPayload extends jwt_decode.JwtPayload {\r\n // Define the structure of your JWT payload here\r\n email: string;\r\n sub: string;\r\n name: string;\r\n iat: number;\r\n exp: number;\r\n // Add other fields as needed\r\n}\r\n\r\ninterface IAuthToken {\r\n token: string;\r\n revoke: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalizeTokenService {\r\n readonly isRevokingTokenSubject = new BehaviorSubject<boolean>(false);\r\n\r\n private get authToken() { return this.storageGet() }\r\n private set authToken(value: IAuthToken | undefined) {\r\n value\r\n ? this.storageSet(value)\r\n : LocalizeToken.storage.delete(LocalizeToken.config.authTokenName);\r\n }\r\n\r\n get refreshToken() { return LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName) }\r\n get accessToken() { return this.authToken?.token }\r\n\r\n set accessToken(value: string | undefined) {\r\n if (value) {\r\n this.authToken = { token: value, revoke: false }\r\n }\r\n }\r\n\r\n get isRevokingToken() { return this.isRevokingTokenSubject.value /* this.authToken?.revoke ?? false */ }\r\n set isRevokingToken(value: boolean) {\r\n this.isRevokingTokenSubject.next(value);\r\n if (this.authToken) {\r\n this.authToken = { ...this.authToken, revoke: value };\r\n }\r\n }\r\n\r\n get tenantToken() { return LocalizeToken.storage.get(LocalizeToken.config.tenantTokenName) }\r\n\r\n constructor() { }\r\n\r\n private storageGet() {\r\n try {\r\n const encoded = LocalizeToken.storage.get(LocalizeToken.config.authTokenName);\r\n const decoded = atob(encoded || '');\r\n return JSON.parse(decoded) as IAuthToken;\r\n } catch {\r\n return undefined\r\n }\r\n }\r\n\r\n private storageSet(value: IAuthToken) {\r\n const base64 = btoa(JSON.stringify(value));\r\n LocalizeToken.storage.set(LocalizeToken.config.authTokenName, base64);\r\n }\r\n\r\n tokensValid() {\r\n return this.refreshToken?.length && (!LocalizeToken.config.needTenant || this.tenantToken?.length);\r\n }\r\n\r\n decodeToken = (token: string) => jwt_decode.jwtDecode<JwtPayload>(token);\r\n get decodeRefreshToken() {\r\n const token = LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName);\r\n if (!token) return null;\r\n return this.decodeToken(token);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { LocalizeTokenService } from './localize.token.service';\r\n\r\n@NgModule({\r\n providers: [LocalizeTokenService],\r\n})\r\nexport class LocalizeTokenModule { }","import { Injectable } from \"@angular/core\";\r\nimport { LocalizeTokenService } from \"./localize.token.service\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { LocalizeToken, waitFor, waitUntil } from \"./localize.token\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\n/**\r\n * Http method options\r\n */\r\nexport enum EMethod {\r\n POST = 1,\r\n GET = 2,\r\n PUT = 3,\r\n DELETE = 4,\r\n PATCH = 5\r\n}\r\n\r\ninterface ILocalizeApiConfigs {\r\n onPrepareRequest?: () => any;\r\n /**\r\n * A function that is called when refresh token is missing then perform the auto logout.\r\n * @returns - The base URL of the API.\r\n */\r\n onAutoLogout?: () => any;\r\n /**\r\n * A function that is called when request revoking token unauthorized.\r\n * @returns - The login dialog service.\r\n */\r\n onRevokeUnauthorized?: () => any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizeApiService {\r\n\r\n readonly isRequestingSubject = new BehaviorSubject<boolean>(false);\r\n readonly isResolvedStartupSubject = new BehaviorSubject<boolean>(false);\r\n get isRequesting() { return this.isRequestingSubject.value; }\r\n get isResolvedStartup() { return this.isResolvedStartupSubject.value; }\r\n\r\n private apiConfigs: ILocalizeApiConfigs = {};\r\n\r\n constructor(readonly httpClient: HttpClient,\r\n private readonly localizeTokenService: LocalizeTokenService\r\n ) { }\r\n\r\n /**\r\n * Initialize the API service.\r\n * @param apiConfigs - The API configurations.\r\n */\r\n init(apiConfigs: ILocalizeApiConfigs) {\r\n this.apiConfigs = apiConfigs;\r\n }\r\n\r\n\r\n /**\r\n * A higher-order function that returns a curried function for making API requests.\r\n *\r\n * @param baseUrl - The base URL of the API.\r\n * @returns A curried function that can be used to make API requests.\r\n */\r\n func = (baseUrl: string) =>\r\n (path: string, method: EMethod = EMethod.GET, value: any = null, isFormData: boolean = false, headers?: { [x: string]: string }) =>\r\n this.base(baseUrl, path, method, value, isFormData, headers)\r\n\r\n private async base(baseUrl: string,\r\n path: string,\r\n method: EMethod = EMethod.GET,\r\n value: any = null,\r\n isFormData: boolean = false,\r\n headers?: { [x: string]: string }) {\r\n\r\n await this.ifPromise(this.apiConfigs.onPrepareRequest);\r\n\r\n const url = `${baseUrl.trim().replace(/\\/?$/, '/')}${path.trim().replace(/^\\//, '')}`;\r\n const httpMethod = EMethod[method].toLowerCase();\r\n const request = () => { return { body: value, headers: this.options(isFormData, headers) } };\r\n\r\n // Wait for previous request to complete\r\n await this.toWaitForPreviousRequest();\r\n\r\n // Process request\r\n try { return await this.processRequest(httpMethod, url, request()) }\r\n // Handle unauthorized error if any\r\n catch (error) {\r\n if ((error as any).status !== 401) { throw error; }\r\n return await this.onUnauthorizedError(httpMethod, url, request);\r\n }\r\n }\r\n\r\n private async onUnauthorizedError(httpMethod: string, url: string, request: Function) {\r\n await this.revokeToken();\r\n if (!this.isResolvedStartup) {\r\n return await this.processRequest(httpMethod, url, request());\r\n }\r\n }\r\n\r\n private async toWaitForPreviousRequest() {\r\n if (this.localizeTokenService.isRevokingToken) {\r\n await waitUntil(() => !this.localizeTokenService.isRevokingToken);\r\n }\r\n // to wait for each request in 50ms, even if the request is not completed\r\n await waitFor(50, this.isRequesting);\r\n }\r\n\r\n private async processRequest(method: string, url: string, options: any): Promise<any> {\r\n this.isRequestingSubject.next(true);\r\n const result = await new Promise((resolve, reject) =>\r\n this.httpClient.request<any>(method, url, options).subscribe({ next: resolve, error: reject }))\r\n this.isRequestingSubject.next(false);\r\n return result;\r\n }\r\n\r\n private async revokeToken(force: boolean = false): Promise<void> {\r\n\r\n if (this.localizeTokenService.isRevokingToken && !force) {\r\n await waitUntil(() => !this.localizeTokenService.isRevokingToken)\r\n return;\r\n }\r\n\r\n try {\r\n this.localizeTokenService.isRevokingToken = true;\r\n const reqUrl = LocalizeToken.config.revokeTokenUrl;\r\n const reqHeaders = this.options().append(LocalizeToken.httpHeaders.X_REFRESH_TOKEN, `${this.localizeTokenService.refreshToken}`);\r\n const revokeToken: any = await new Promise((resolve, reject) =>\r\n this.httpClient.get<any>(reqUrl!, { headers: reqHeaders }).subscribe({ next: resolve, error: reject }))\r\n\r\n if (revokeToken?.status) {\r\n this.localizeTokenService.accessToken = revokeToken.message;\r\n } else if (!this.localizeTokenService.refreshToken) {\r\n await this.ifPromise(this.apiConfigs.onAutoLogout)\r\n } else {\r\n if (this.apiConfigs.onRevokeUnauthorized) {\r\n await this.ifPromise(this.apiConfigs.onRevokeUnauthorized);\r\n await this.revokeToken(true);\r\n }\r\n }\r\n } finally {\r\n this.localizeTokenService.isRevokingToken = false;\r\n }\r\n }\r\n\r\n /** default http request options */\r\n private options(isFormData: boolean = false, headers: { [key: string]: string } = {}): HttpHeaders {\r\n const defaultHeaders = { [LocalizeToken.httpHeaders.AUTHORIZATION]: `Bearer ${this.localizeTokenService.accessToken}`, };\r\n if (LocalizeToken.config.needTenant) {\r\n defaultHeaders[LocalizeToken.httpHeaders.X_TENANT] = `${this.localizeTokenService.tenantToken}`;\r\n }\r\n\r\n if (!isFormData) {\r\n defaultHeaders[LocalizeToken.httpHeaders.CONTENT_TYPE] = 'application/json';\r\n }\r\n\r\n const filteredHeaders = Object.keys(defaultHeaders).filter(key => !Object.keys(headers).includes(key))\r\n .reduce((acc, key) => ({ ...acc, [key]: defaultHeaders[key] }), {})\r\n const mergedHeaders = { ...filteredHeaders, ...headers };\r\n return new HttpHeaders(mergedHeaders);\r\n }\r\n\r\n private async ifPromise(fn?: Function) {\r\n if (!fn) return;\r\n return fn instanceof Promise ? await fn() : fn();\r\n }\r\n\r\n}//class\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ISameSiteType","BehaviorSubject","jwt_decode","Injectable","NgModule","EMethod","HttpHeaders","HttpClient"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './localize.token.service';
2
+ export * from './localize.token';
3
+ export * from './localize.token.storage';
4
+ export * from './localize.token.module';
5
+ export * from './localize.api.service';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemUudG9rZW4uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemUudG9rZW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXplLnRva2VuLnN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXplLnRva2VuLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemUuYXBpLnNlcnZpY2UnO1xyXG4iXX0=
@@ -0,0 +1,152 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from "@angular/core";
3
+ import { LocalizeTokenService } from "./localize.token.service";
4
+ import { HttpClient, HttpHeaders } from "@angular/common/http";
5
+ import { LocalizeToken, waitFor, waitUntil } from "./localize.token";
6
+ import { BehaviorSubject } from "rxjs";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http/index";
9
+ import * as i2 from "./localize.token.service";
10
+ /**
11
+ * Http method options
12
+ */
13
+ export var EMethod;
14
+ (function (EMethod) {
15
+ EMethod[EMethod["POST"] = 1] = "POST";
16
+ EMethod[EMethod["GET"] = 2] = "GET";
17
+ EMethod[EMethod["PUT"] = 3] = "PUT";
18
+ EMethod[EMethod["DELETE"] = 4] = "DELETE";
19
+ EMethod[EMethod["PATCH"] = 5] = "PATCH";
20
+ })(EMethod || (EMethod = {}));
21
+ export class LocalizeApiService {
22
+ constructor(httpClient, localizeTokenService) {
23
+ this.httpClient = httpClient;
24
+ this.localizeTokenService = localizeTokenService;
25
+ this.isRequestingSubject = new BehaviorSubject(false);
26
+ this.isResolvedStartupSubject = new BehaviorSubject(false);
27
+ this.apiConfigs = {};
28
+ /**
29
+ * A higher-order function that returns a curried function for making API requests.
30
+ *
31
+ * @param baseUrl - The base URL of the API.
32
+ * @returns A curried function that can be used to make API requests.
33
+ */
34
+ this.func = (baseUrl) => (path, method = EMethod.GET, value = null, isFormData = false, headers) => this.base(baseUrl, path, method, value, isFormData, headers);
35
+ }
36
+ get isRequesting() { return this.isRequestingSubject.value; }
37
+ get isResolvedStartup() { return this.isResolvedStartupSubject.value; }
38
+ /**
39
+ * Initialize the API service.
40
+ * @param apiConfigs - The API configurations.
41
+ */
42
+ init(apiConfigs) {
43
+ this.apiConfigs = apiConfigs;
44
+ }
45
+ base(baseUrl, path, method = EMethod.GET, value = null, isFormData = false, headers) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ yield this.ifPromise(this.apiConfigs.onPrepareRequest);
48
+ const url = `${baseUrl.trim().replace(/\/?$/, '/')}${path.trim().replace(/^\//, '')}`;
49
+ const httpMethod = EMethod[method].toLowerCase();
50
+ const request = () => { return { body: value, headers: this.options(isFormData, headers) }; };
51
+ // Wait for previous request to complete
52
+ yield this.toWaitForPreviousRequest();
53
+ // Process request
54
+ try {
55
+ return yield this.processRequest(httpMethod, url, request());
56
+ }
57
+ // Handle unauthorized error if any
58
+ catch (error) {
59
+ if (error.status !== 401) {
60
+ throw error;
61
+ }
62
+ return yield this.onUnauthorizedError(httpMethod, url, request);
63
+ }
64
+ });
65
+ }
66
+ onUnauthorizedError(httpMethod, url, request) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ yield this.revokeToken();
69
+ if (!this.isResolvedStartup) {
70
+ return yield this.processRequest(httpMethod, url, request());
71
+ }
72
+ });
73
+ }
74
+ toWaitForPreviousRequest() {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ if (this.localizeTokenService.isRevokingToken) {
77
+ yield waitUntil(() => !this.localizeTokenService.isRevokingToken);
78
+ }
79
+ // to wait for each request in 50ms, even if the request is not completed
80
+ yield waitFor(50, this.isRequesting);
81
+ });
82
+ }
83
+ processRequest(method, url, options) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ this.isRequestingSubject.next(true);
86
+ const result = yield new Promise((resolve, reject) => this.httpClient.request(method, url, options).subscribe({ next: resolve, error: reject }));
87
+ this.isRequestingSubject.next(false);
88
+ return result;
89
+ });
90
+ }
91
+ revokeToken(force = false) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ if (this.localizeTokenService.isRevokingToken && !force) {
94
+ yield waitUntil(() => !this.localizeTokenService.isRevokingToken);
95
+ return;
96
+ }
97
+ try {
98
+ this.localizeTokenService.isRevokingToken = true;
99
+ const reqUrl = LocalizeToken.config.revokeTokenUrl;
100
+ const reqHeaders = this.options().append(LocalizeToken.httpHeaders.X_REFRESH_TOKEN, `${this.localizeTokenService.refreshToken}`);
101
+ const revokeToken = yield new Promise((resolve, reject) => this.httpClient.get(reqUrl, { headers: reqHeaders }).subscribe({ next: resolve, error: reject }));
102
+ if (revokeToken === null || revokeToken === void 0 ? void 0 : revokeToken.status) {
103
+ this.localizeTokenService.accessToken = revokeToken.message;
104
+ }
105
+ else if (!this.localizeTokenService.refreshToken) {
106
+ yield this.ifPromise(this.apiConfigs.onAutoLogout);
107
+ }
108
+ else {
109
+ if (this.apiConfigs.onRevokeUnauthorized) {
110
+ yield this.ifPromise(this.apiConfigs.onRevokeUnauthorized);
111
+ yield this.revokeToken(true);
112
+ }
113
+ }
114
+ }
115
+ finally {
116
+ this.localizeTokenService.isRevokingToken = false;
117
+ }
118
+ });
119
+ }
120
+ /** default http request options */
121
+ options(isFormData = false, headers = {}) {
122
+ const defaultHeaders = { [LocalizeToken.httpHeaders.AUTHORIZATION]: `Bearer ${this.localizeTokenService.accessToken}`, };
123
+ if (LocalizeToken.config.needTenant) {
124
+ defaultHeaders[LocalizeToken.httpHeaders.X_TENANT] = `${this.localizeTokenService.tenantToken}`;
125
+ }
126
+ if (!isFormData) {
127
+ defaultHeaders[LocalizeToken.httpHeaders.CONTENT_TYPE] = 'application/json';
128
+ }
129
+ const filteredHeaders = Object.keys(defaultHeaders).filter(key => !Object.keys(headers).includes(key))
130
+ .reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: defaultHeaders[key] })), {});
131
+ const mergedHeaders = Object.assign(Object.assign({}, filteredHeaders), headers);
132
+ return new HttpHeaders(mergedHeaders);
133
+ }
134
+ ifPromise(fn) {
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ if (!fn)
137
+ return;
138
+ return fn instanceof Promise ? yield fn() : fn();
139
+ });
140
+ }
141
+ } //class
142
+ LocalizeApiService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalizeApiService_Factory() { return new LocalizeApiService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.LocalizeTokenService)); }, token: LocalizeApiService, providedIn: "root" });
143
+ LocalizeApiService.decorators = [
144
+ { type: Injectable, args: [{
145
+ providedIn: 'root'
146
+ },] }
147
+ ];
148
+ LocalizeApiService.ctorParameters = () => [
149
+ { type: HttpClient },
150
+ { type: LocalizeTokenService }
151
+ ];
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2xvY2FsaXplLmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUV2Qzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLE9BTVg7QUFORCxXQUFZLE9BQU87SUFDakIscUNBQVEsQ0FBQTtJQUNSLG1DQUFPLENBQUE7SUFDUCxtQ0FBTyxDQUFBO0lBQ1AseUNBQVUsQ0FBQTtJQUNWLHVDQUFTLENBQUE7QUFDWCxDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUFtQkQsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QixZQUFxQixVQUFzQixFQUN4QixvQkFBMEM7UUFEeEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBUnBELHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzFELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBSWhFLGVBQVUsR0FBd0IsRUFBRSxDQUFDO1FBZTdDOzs7OztXQUtHO1FBQ0gsU0FBSSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDekIsQ0FBQyxJQUFZLEVBQUUsU0FBa0IsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFhLElBQUksRUFB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a0JBQWtCLENBQUM7U0FDN0U7UUFFRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbkcsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsaUNBQU0sR0FBRyxLQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDckUsTUFBTSxhQUFhLG1DQUFRLGVBQWUsR0FBSyxPQUFPLENBQUUsQ0FBQztRQUN6RCxPQUFPLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFYSxTQUFTLENBQUMsRUFBYTs7WUFDbkMsSUFBSSxDQUFDLEVBQUU7Z0JBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ25ELENBQUM7S0FBQTtFQUVGLE9BQU87OztZQXRJUCxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQS9CUSxVQUFVO1lBRFYsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXplVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIi4vbG9jYWxpemUudG9rZW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuLCB3YWl0Rm9yLCB3YWl0VW50aWwgfSBmcm9tIFwiLi9sb2NhbGl6ZS50b2tlblwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuLyoqXHJcbiAqIEh0dHAgbWV0aG9kIG9wdGlvbnNcclxuICovXHJcbmV4cG9ydCBlbnVtIEVNZXRob2Qge1xyXG4gIFBPU1QgPSAxLFxyXG4gIEdFVCA9IDIsXHJcbiAgUFVUID0gMyxcclxuICBERUxFVEUgPSA0LFxyXG4gIFBBVENIID0gNVxyXG59XHJcblxyXG5pbnRlcmZhY2UgSUxvY2FsaXplQXBpQ29uZmlncyB7XHJcbiAgb25QcmVwYXJlUmVxdWVzdD86ICgpID0+IGFueTtcclxuICAvKipcclxuICAgKiAgQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHJlZnJlc2ggdG9rZW4gaXMgbWlzc2luZyB0aGVuIHBlcmZvcm0gdGhlIGF1dG8gbG9nb3V0LlxyXG4gICAqIEByZXR1cm5zIC0gVGhlIGJhc2UgVVJMIG9mIHRoZSBBUEkuXHJcbiAgICovXHJcbiAgb25BdXRvTG9nb3V0PzogKCkgPT4gYW55O1xyXG4gIC8qKlxyXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiByZXF1ZXN0IHJldm9raW5nIHRva2VuIHVuYXV0aG9yaXplZC5cclxuICAgKiBAcmV0dXJucyAtIFRoZSBsb2dpbiBkaWFsb2cgc2VydmljZS5cclxuICAgKi9cclxuICBvblJldm9rZVVuYXV0aG9yaXplZD86ICgpID0+IGFueTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemVBcGlTZXJ2aWNlIHtcclxuXHJcbiAgcmVhZG9ubHkgaXNSZXF1ZXN0aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IGlzUmVzb2x2ZWRTdGFydHVwU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGdldCBpc1JlcXVlc3RpbmcoKSB7IHJldHVybiB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QudmFsdWU7IH1cclxuICBnZXQgaXNSZXNvbHZlZFN0YXJ0dXAoKSB7IHJldHVybiB0aGlzLmlzUmVzb2x2ZWRTdGFydHVwU3ViamVjdC52YWx1ZTsgfVxyXG5cclxuICBwcml2YXRlIGFwaUNvbmZpZ3M6IElMb2NhbGl6ZUFwaUNvbmZpZ3MgPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxpemVUb2tlblNlcnZpY2U6IExvY2FsaXplVG9rZW5TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgQVBJIHNlcnZpY2UuXHJcbiAgICogQHBhcmFtIGFwaUNvbmZpZ3MgLSBUaGUgQVBJIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqL1xyXG4gIGluaXQoYXBpQ29uZmlnczogSUxvY2FsaXplQXBpQ29uZmlncykge1xyXG4gICAgdGhpcy5hcGlDb25maWdzID0gYXBpQ29uZmlncztcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBBIGhpZ2hlci1vcmRlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBjdXJyaWVkIGZ1bmN0aW9uIGZvciBtYWtpbmcgQVBJIHJlcXVlc3RzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGJhc2VVcmwgLSBUaGUgYmFzZSBVUkwgb2YgdGhlIEFQSS5cclxuICAgKiBAcmV0dXJucyBBIGN1cnJpZWQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBtYWtlIEFQSSByZXF1ZXN0cy5cclxuICAgKi9cclxuICBmdW5jID0gKGJhc2VVcmw6IHN0cmluZykgPT5cclxuICAgIChwYXRoOiBzdHJpbmcsIG1ldGhvZDogRU1ldGhvZCA9IEVNZXRob2QuR0VULCB2YWx1ZTogYW55ID0gbnVsbCwgaXNGb3JtRGF0YTogYm9vbGVhbiA9IGZhbHNlLCBoZWFkZXJzPzogeyBbeDogc3RyaW5nXTogc3RyaW5nIH0pID0+XHJcbiAgICAgIHRoaXMuYmFzZShiYXNlVXJsLCBwYXRoLCBtZXRob2QsIHZhbHVlLCBpc0Zvcm1EYXRhLCBoZWFkZXJzKVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGJhc2UoYmFzZVVybDogc3RyaW5nLFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgbWV0aG9kOiBFTWV0aG9kID0gRU1ldGhvZC5HRVQsXHJcbiAgICB2YWx1ZTogYW55ID0gbnVsbCxcclxuICAgIGlzRm9ybURhdGE6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIGhlYWRlcnM/OiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfSkge1xyXG5cclxuICAgIGF3YWl0IHRoaXMuaWZQcm9taXNlKHRoaXMuYXBpQ29uZmlncy5vblByZXBhcmVSZXF1ZXN0KTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsLnRyaW0oKS5yZXBsYWNlKC9cXC8/JC8sICcvJyl9JHtwYXRoLnRyaW0oKS5yZXBsYWNlKC9eXFwvLywgJycpfWA7XHJcbiAgICBjb25zdCBodHRwTWV0aG9kID0gRU1ldGhvZFttZXRob2RdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gKCkgPT4geyByZXR1cm4geyBib2R5OiB2YWx1ZSwgaGVhZGVyczogdGhpcy5vcHRpb25zKGlzRm9ybURhdGEsIGhlYWRlcnMpIH0gfTtcclxuXHJcbiAgICAvLyBXYWl0IGZvciBwcmV2aW91cyByZXF1ZXN0IHRvIGNvbXBsZXRlXHJcbiAgICBhd2FpdCB0aGlzLnRvV2FpdEZvclByZXZpb3VzUmVxdWVzdCgpO1xyXG5cclxuICAgIC8vIFByb2Nlc3MgcmVxdWVzdFxyXG4gICAgdHJ5IHsgcmV0dXJuIGF3YWl0IHRoaXMucHJvY2Vzc1JlcXVlc3QoaHR0cE1ldGhvZCwgdXJsLCByZXF1ZXN0KCkpIH1cclxuICAgIC8vIEhhbmRsZSB1bmF1dGhvcml6ZWQgZXJyb3IgaWYgYW55XHJcbiAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgaWYgKChlcnJvciBhcyBhbnkpLnN0YXR1cyAhPT0gNDAxKSB7IHRocm93IGVycm9yOyB9XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLm9uVW5hdXRob3JpemVkRXJyb3IoaHR0cE1ldGhvZCwgdXJsLCByZXF1ZXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgb25VbmF1dGhvcml6ZWRFcnJvcihodHRwTWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nLCByZXF1ZXN0OiBGdW5jdGlvbikge1xyXG4gICAgYXdhaXQgdGhpcy5yZXZva2VUb2tlbigpO1xyXG4gICAgaWYgKCF0aGlzLmlzUmVzb2x2ZWRTdGFydHVwKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2Nlc3NSZXF1ZXN0KGh0dHBNZXRob2QsIHVybCwgcmVxdWVzdCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdG9XYWl0Rm9yUHJldmlvdXNSZXF1ZXN0KCkge1xyXG4gICAgaWYgKHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuKSB7XHJcbiAgICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5pc1Jldm9raW5nVG9rZW4pO1xyXG4gICAgfVxyXG4gICAgLy8gdG8gd2FpdCBmb3IgZWFjaCByZXF1ZXN0IGluIDUwbXMsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgaXMgbm90IGNvbXBsZXRlZFxyXG4gICAgYXdhaXQgd2FpdEZvcig1MCwgdGhpcy5pc1JlcXVlc3RpbmcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzUmVxdWVzdChtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QubmV4dCh0cnVlKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PGFueT4obWV0aG9kLCB1cmwsIG9wdGlvbnMpLnN1YnNjcmliZSh7IG5leHQ6IHJlc29sdmUsIGVycm9yOiByZWplY3QgfSkpXHJcbiAgICB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QubmV4dChmYWxzZSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZXZva2VUb2tlbihmb3JjZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgaWYgKHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuICYmICFmb3JjZSkge1xyXG4gICAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gIXRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5pc1Jldm9raW5nVG9rZW4gPSB0cnVlO1xyXG4gICAgICBjb25zdCByZXFVcmwgPSBMb2NhbGl6ZVRva2VuLmNvbmZpZy5yZXZva2VUb2tlblVybDtcclxuICAgICAgY29uc3QgcmVxSGVhZGVycyA9IHRoaXMub3B0aW9ucygpLmFwcGVuZChMb2NhbGl6ZVRva2VuLmh0dHBIZWFkZXJzLlhfUkVGUkVTSF9UT0tFTiwgYCR7dGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5yZWZyZXNoVG9rZW59YCk7XHJcbiAgICAgIGNvbnN0IHJldm9rZVRva2VuOiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihyZXFVcmwhLCB7IGhlYWRlcnM6IHJlcUhlYWRlcnMgfSkuc3Vic2NyaWJlKHsgbmV4dDogcmVzb2x2ZSwgZXJyb3I6IHJlamVjdCB9KSlcclxuXHJcbiAgICAgIGlmIChyZXZva2VUb2tlbj8uc3RhdHVzKSB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5hY2Nlc3NUb2tlbiA9IHJldm9rZVRva2VuLm1lc3NhZ2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UucmVmcmVzaFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pZlByb21pc2UodGhpcy5hcGlDb25maWdzLm9uQXV0b0xvZ291dClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5hcGlDb25maWdzLm9uUmV2b2tlVW5hdXRob3JpemVkKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmlmUHJvbWlzZSh0aGlzLmFwaUNvbmZpZ3Mub25SZXZva2VVbmF1dGhvcml6ZWQpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5yZXZva2VUb2tlbih0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogZGVmYXVsdCBodHRwIHJlcXVlc3Qgb3B0aW9ucyAqL1xyXG4gIHByaXZhdGUgb3B0aW9ucyhpc0Zvcm1EYXRhOiBib29sZWFuID0gZmFsc2UsIGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSk6IEh0dHBIZWFkZXJzIHtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0geyBbTG9jYWxpemVUb2tlbi5odHRwSGVhZGVycy5BVVRIT1JJWkFUSU9OXTogYEJlYXJlciAke3RoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuYWNjZXNzVG9rZW59YCwgfTtcclxuICAgIGlmIChMb2NhbGl6ZVRva2VuLmNvbmZpZy5uZWVkVGVuYW50KSB7XHJcbiAgICAgIGRlZmF1bHRIZWFkZXJzW0xvY2FsaXplVG9rZW4uaHR0cEhlYWRlcnMuWF9URU5BTlRdID0gYCR7dGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS50ZW5hbnRUb2tlbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNGb3JtRGF0YSkge1xyXG4gICAgICBkZWZhdWx0SGVhZGVyc1tMb2NhbGl6ZVRva2VuLmh0dHBIZWFkZXJzLkNPTlRFTlRfVFlQRV0gPSAnYXBwbGljYXRpb24vanNvbic7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsdGVyZWRIZWFkZXJzID0gT2JqZWN0LmtleXMoZGVmYXVsdEhlYWRlcnMpLmZpbHRlcihrZXkgPT4gIU9iamVjdC5rZXlzKGhlYWRlcnMpLmluY2x1ZGVzKGtleSkpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBkZWZhdWx0SGVhZGVyc1trZXldIH0pLCB7fSlcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSB7IC4uLmZpbHRlcmVkSGVhZGVycywgLi4uaGVhZGVycyB9O1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyhtZXJnZWRIZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaWZQcm9taXNlKGZuPzogRnVuY3Rpb24pIHtcclxuICAgIGlmICghZm4pIHJldHVybjtcclxuICAgIHJldHVybiBmbiBpbnN0YW5jZW9mIFByb21pc2UgPyBhd2FpdCBmbigpIDogZm4oKTtcclxuICB9XHJcblxyXG59Ly9jbGFzc1xyXG4iXX0=
@@ -0,0 +1,59 @@
1
+ import { __awaiter } from "tslib";
2
+ import { LocalizeTokenStorageHelper } from "./localize.token.storage";
3
+ export class LocalizeToken {
4
+ }
5
+ LocalizeToken.config = {
6
+ mainDomain: location.hostname,
7
+ authTokenName: 'auth-token',
8
+ tenantTokenName: 'tenant-token',
9
+ refreshTokenName: 'refresh-token',
10
+ needTenant: false,
11
+ isProduction: false,
12
+ };
13
+ LocalizeToken.cookieOptions = {
14
+ path: '/',
15
+ domain: LocalizeToken.config.mainDomain,
16
+ secure: true,
17
+ // samesite: SameSiteType.strict,
18
+ expires: 1
19
+ };
20
+ LocalizeToken.storage = new LocalizeTokenStorageHelper();
21
+ LocalizeToken.httpHeaders = {
22
+ AUTHORIZATION: 'Authorization',
23
+ X_TENANT: 'X-Tenant',
24
+ X_REFRESH_TOKEN: 'X-RefreshToken',
25
+ CONTENT_TYPE: 'Content-Type',
26
+ };
27
+ /**
28
+ * Waits for a specified amount of time.
29
+ * @param milliseconds - The milliseconds to wait.
30
+ * @param when - The condition to wait for. Default is true.
31
+ * @returns - Promise<void>
32
+ */
33
+ export function waitFor(milliseconds, when = true) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ if (!when)
36
+ return;
37
+ yield new Promise(resolve => setTimeout(resolve, milliseconds));
38
+ });
39
+ }
40
+ /**
41
+ * Waits until the condition is met.
42
+ * @param when - The condition to wait for.
43
+ * @param intervalNumber - The interval number in milliseconds to check the condition. Default is 50.
44
+ */
45
+ export function waitUntil(when, intervalNumber = 50) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ yield new Promise(resolve => {
48
+ const interval = setInterval(() => __awaiter(this, void 0, void 0, function* () {
49
+ const cond = when();
50
+ const result = cond instanceof Promise ? yield cond : cond;
51
+ if (result) {
52
+ clearInterval(interval);
53
+ resolve(true);
54
+ }
55
+ }), intervalNumber);
56
+ });
57
+ });
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2xvY2FsaXplLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWtCLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFVdEYsTUFBTSxPQUFPLGFBQWE7O0FBQ2Ysb0JBQU0sR0FBeUI7SUFDbEMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRO0lBQzdCLGFBQWEsRUFBRSxZQUFZO0lBQzNCLGVBQWUsRUFBRSxjQUFjO0lBQy9CLGdCQUFnQixFQUFFLGVBQWU7SUFDakMsVUFBVSxFQUFFLEtBQUs7SUFDakIsWUFBWSxFQUFFLEtBQUs7Q0FDdEIsQ0FBQTtBQUVNLDJCQUFhLEdBQW1CO0lBQ25DLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVTtJQUN2QyxNQUFNLEVBQUUsSUFBSTtJQUNaLGlDQUFpQztJQUNqQyxPQUFPLEVBQUUsQ0FBQztDQUNiLENBQUE7QUFDZSxxQkFBTyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztBQUUzQyx5QkFBVyxHQUFHO0lBQzFCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLGVBQWUsRUFBRSxnQkFBZ0I7SUFDakMsWUFBWSxFQUFFLGNBQWM7Q0FDN0IsQ0FBQTtBQUlQOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFnQixPQUFPLENBQUMsWUFBb0IsRUFBRSxPQUFnQixJQUFJOztRQUNwRSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQUE7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFnQixTQUFTLENBQUMsSUFBZSxFQUFFLGlCQUF5QixFQUFFOztRQUMxRSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFTLEVBQUU7Z0JBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMzRCxJQUFJLE1BQU0sRUFBRTtvQkFDVixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDZjtZQUNILENBQUMsQ0FBQSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNvb2tpZU9wdGlvbnMsIExvY2FsaXplVG9rZW5TdG9yYWdlSGVscGVyIH0gZnJvbSBcIi4vbG9jYWxpemUudG9rZW4uc3RvcmFnZVwiO1xyXG5pbnRlcmZhY2UgSUxvY2FsaXplVG9rZW5Db25maWcge1xyXG4gICAgbWFpbkRvbWFpbjogc3RyaW5nO1xyXG4gICAgYXV0aFRva2VuTmFtZTogc3RyaW5nO1xyXG4gICAgdGVuYW50VG9rZW5OYW1lOiBzdHJpbmc7XHJcbiAgICByZWZyZXNoVG9rZW5OYW1lOiBzdHJpbmc7XHJcbiAgICBuZWVkVGVuYW50OiBib29sZWFuO1xyXG4gICAgaXNQcm9kdWN0aW9uOiBib29sZWFuO1xyXG4gICAgcmV2b2tlVG9rZW5Vcmw/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGNsYXNzIExvY2FsaXplVG9rZW4ge1xyXG4gICAgc3RhdGljIGNvbmZpZzogSUxvY2FsaXplVG9rZW5Db25maWcgPSB7XHJcbiAgICAgICAgbWFpbkRvbWFpbjogbG9jYXRpb24uaG9zdG5hbWUsXHJcbiAgICAgICAgYXV0aFRva2VuTmFtZTogJ2F1dGgtdG9rZW4nLFxyXG4gICAgICAgIHRlbmFudFRva2VuTmFtZTogJ3RlbmFudC10b2tlbicsXHJcbiAgICAgICAgcmVmcmVzaFRva2VuTmFtZTogJ3JlZnJlc2gtdG9rZW4nLFxyXG4gICAgICAgIG5lZWRUZW5hbnQ6IGZhbHNlLFxyXG4gICAgICAgIGlzUHJvZHVjdGlvbjogZmFsc2UsXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNvb2tpZU9wdGlvbnM6IElDb29raWVPcHRpb25zID0ge1xyXG4gICAgICAgIHBhdGg6ICcvJyxcclxuICAgICAgICBkb21haW46IExvY2FsaXplVG9rZW4uY29uZmlnLm1haW5Eb21haW4sXHJcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxyXG4gICAgICAgIC8vIHNhbWVzaXRlOiBTYW1lU2l0ZVR5cGUuc3RyaWN0LFxyXG4gICAgICAgIGV4cGlyZXM6IDFcclxuICAgIH1cclxuICAgIHN0YXRpYyByZWFkb25seSBzdG9yYWdlID0gbmV3IExvY2FsaXplVG9rZW5TdG9yYWdlSGVscGVyKCk7XHJcblxyXG4gICAgc3RhdGljIHJlYWRvbmx5IGh0dHBIZWFkZXJzID0ge1xyXG4gICAgICAgIEFVVEhPUklaQVRJT046ICdBdXRob3JpemF0aW9uJyxcclxuICAgICAgICBYX1RFTkFOVDogJ1gtVGVuYW50JyxcclxuICAgICAgICBYX1JFRlJFU0hfVE9LRU46ICdYLVJlZnJlc2hUb2tlbicsXHJcbiAgICAgICAgQ09OVEVOVF9UWVBFOiAnQ29udGVudC1UeXBlJyxcclxuICAgICAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqICBXYWl0cyBmb3IgYSBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuXHJcbiAqIEBwYXJhbSBtaWxsaXNlY29uZHMgIC0gVGhlIG1pbGxpc2Vjb25kcyB0byB3YWl0LlxyXG4gKiBAcGFyYW0gd2hlbiAgLSBUaGUgY29uZGl0aW9uIHRvIHdhaXQgZm9yLiBEZWZhdWx0IGlzIHRydWUuXHJcbiAqIEByZXR1cm5zICAtIFByb21pc2U8dm9pZD5cclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yKG1pbGxpc2Vjb25kczogbnVtYmVyLCB3aGVuOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKCF3aGVuKSByZXR1cm47XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzZWNvbmRzKSk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqICBXYWl0cyB1bnRpbCB0aGUgY29uZGl0aW9uIGlzIG1ldC5cclxuICAgKiBAcGFyYW0gd2hlbiAgLSBUaGUgY29uZGl0aW9uIHRvIHdhaXQgZm9yLlxyXG4gICAqIEBwYXJhbSBpbnRlcnZhbE51bWJlciAgLSBUaGUgaW50ZXJ2YWwgbnVtYmVyIGluIG1pbGxpc2Vjb25kcyB0byBjaGVjayB0aGUgY29uZGl0aW9uLiBEZWZhdWx0IGlzIDUwLlxyXG4gICAqL1xyXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0VW50aWwod2hlbjogKCkgPT4gYW55LCBpbnRlcnZhbE51bWJlcjogbnVtYmVyID0gNTApIHtcclxuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb25kID0gd2hlbigpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbmQgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgY29uZCA6IGNvbmQ7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgaW50ZXJ2YWxOdW1iZXIpO1xyXG4gICAgfSk7XHJcbiAgfSJdfQ==
@@ -0,0 +1,10 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { LocalizeTokenService } from './localize.token.service';
3
+ export class LocalizeTokenModule {
4
+ }
5
+ LocalizeTokenModule.decorators = [
6
+ { type: NgModule, args: [{
7
+ providers: [LocalizeTokenService],
8
+ },] }
9
+ ];
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9sb2NhbGl6ZS50b2tlbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUtoRSxNQUFNLE9BQU8sbUJBQW1COzs7WUFIL0IsUUFBUSxTQUFDO2dCQUNOLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemVUb2tlblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXplLnRva2VuLnNlcnZpY2UnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIHByb3ZpZGVyczogW0xvY2FsaXplVG9rZW5TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplVG9rZW5Nb2R1bGUgeyB9Il19
@@ -0,0 +1,62 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { LocalizeToken } from './localize.token';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as jwt_decode from 'jwt-decode';
5
+ import * as i0 from "@angular/core";
6
+ export class LocalizeTokenService {
7
+ constructor() {
8
+ this.isRevokingTokenSubject = new BehaviorSubject(false);
9
+ this.decodeToken = (token) => jwt_decode.jwtDecode(token);
10
+ }
11
+ get authToken() { return this.storageGet(); }
12
+ set authToken(value) {
13
+ value
14
+ ? this.storageSet(value)
15
+ : LocalizeToken.storage.delete(LocalizeToken.config.authTokenName);
16
+ }
17
+ get refreshToken() { return LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName); }
18
+ get accessToken() { var _a; return (_a = this.authToken) === null || _a === void 0 ? void 0 : _a.token; }
19
+ set accessToken(value) {
20
+ if (value) {
21
+ this.authToken = { token: value, revoke: false };
22
+ }
23
+ }
24
+ get isRevokingToken() { return this.isRevokingTokenSubject.value; /* this.authToken?.revoke ?? false */ }
25
+ set isRevokingToken(value) {
26
+ this.isRevokingTokenSubject.next(value);
27
+ if (this.authToken) {
28
+ this.authToken = Object.assign(Object.assign({}, this.authToken), { revoke: value });
29
+ }
30
+ }
31
+ get tenantToken() { return LocalizeToken.storage.get(LocalizeToken.config.tenantTokenName); }
32
+ storageGet() {
33
+ try {
34
+ const encoded = LocalizeToken.storage.get(LocalizeToken.config.authTokenName);
35
+ const decoded = atob(encoded || '');
36
+ return JSON.parse(decoded);
37
+ }
38
+ catch (_a) {
39
+ return undefined;
40
+ }
41
+ }
42
+ storageSet(value) {
43
+ const base64 = btoa(JSON.stringify(value));
44
+ LocalizeToken.storage.set(LocalizeToken.config.authTokenName, base64);
45
+ }
46
+ tokensValid() {
47
+ var _a, _b;
48
+ return ((_a = this.refreshToken) === null || _a === void 0 ? void 0 : _a.length) && (!LocalizeToken.config.needTenant || ((_b = this.tenantToken) === null || _b === void 0 ? void 0 : _b.length));
49
+ }
50
+ get decodeRefreshToken() {
51
+ const token = LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName);
52
+ if (!token)
53
+ return null;
54
+ return this.decodeToken(token);
55
+ }
56
+ }
57
+ LocalizeTokenService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalizeTokenService_Factory() { return new LocalizeTokenService(); }, token: LocalizeTokenService, providedIn: "root" });
58
+ LocalizeTokenService.decorators = [
59
+ { type: Injectable, args: [{ providedIn: 'root' },] }
60
+ ];
61
+ LocalizeTokenService.ctorParameters = () => [];
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9jYWxpemUudG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFDOztBQWlCekMsTUFBTSxPQUFPLG9CQUFvQjtJQTZCN0I7UUE1QlMsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFpRHRFLGdCQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQWEsS0FBSyxDQUFDLENBQUM7SUFyQnpELENBQUM7SUExQmpCLElBQVksU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUNwRCxJQUFZLFNBQVMsQ0FBQyxLQUE2QjtRQUMvQyxLQUFLO1lBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLFlBQVksS0FBSyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDOUYsSUFBSSxXQUFXLGFBQUssT0FBTyxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFFbEQsSUFBSSxXQUFXLENBQUMsS0FBeUI7UUFDckMsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFBLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN4RyxJQUFJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLG1DQUFRLElBQUksQ0FBQyxTQUFTLEtBQUUsTUFBTSxFQUFFLEtBQUssR0FBRSxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFJcEYsVUFBVTtRQUNkLElBQUk7WUFDQSxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBZSxDQUFDO1NBQzVDO1FBQUMsV0FBTTtZQUNKLE9BQU8sU0FBUyxDQUFBO1NBQ25CO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFpQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxXQUFXOztRQUNQLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUksTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFHRCxJQUFJLGtCQUFrQjtRQUNsQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7OztZQXhESixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuIH0gZnJvbSAnLi9sb2NhbGl6ZS50b2tlbic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBqd3RfZGVjb2RlIGZyb20gJ2p3dC1kZWNvZGUnO1xyXG5leHBvcnQgaW50ZXJmYWNlIEp3dFBheWxvYWQgZXh0ZW5kcyBqd3RfZGVjb2RlLkp3dFBheWxvYWQge1xyXG4gICAgLy8gRGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBKV1QgcGF5bG9hZCBoZXJlXHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgc3ViOiBzdHJpbmc7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBpYXQ6IG51bWJlcjtcclxuICAgIGV4cDogbnVtYmVyO1xyXG4gICAgLy8gQWRkIG90aGVyIGZpZWxkcyBhcyBuZWVkZWRcclxufVxyXG5cclxuaW50ZXJmYWNlIElBdXRoVG9rZW4ge1xyXG4gICAgdG9rZW46IHN0cmluZztcclxuICAgIHJldm9rZTogYm9vbGVhbjtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplVG9rZW5TZXJ2aWNlIHtcclxuICAgIHJlYWRvbmx5IGlzUmV2b2tpbmdUb2tlblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgICBwcml2YXRlIGdldCBhdXRoVG9rZW4oKSB7IHJldHVybiB0aGlzLnN0b3JhZ2VHZXQoKSB9XHJcbiAgICBwcml2YXRlIHNldCBhdXRoVG9rZW4odmFsdWU6IElBdXRoVG9rZW4gfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICA/IHRoaXMuc3RvcmFnZVNldCh2YWx1ZSlcclxuICAgICAgICAgICAgOiBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZGVsZXRlKExvY2FsaXplVG9rZW4uY29uZmlnLmF1dGhUb2tlbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByZWZyZXNoVG9rZW4oKSB7IHJldHVybiBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZ2V0KExvY2FsaXplVG9rZW4uY29uZmlnLnJlZnJlc2hUb2tlbk5hbWUpIH1cclxuICAgIGdldCBhY2Nlc3NUb2tlbigpIHsgcmV0dXJuIHRoaXMuYXV0aFRva2VuPy50b2tlbiB9XHJcblxyXG4gICAgc2V0IGFjY2Vzc1Rva2VuKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoVG9rZW4gPSB7IHRva2VuOiB2YWx1ZSwgcmV2b2tlOiBmYWxzZSB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc1Jldm9raW5nVG9rZW4oKSB7IHJldHVybiB0aGlzLmlzUmV2b2tpbmdUb2tlblN1YmplY3QudmFsdWUgLyogdGhpcy5hdXRoVG9rZW4/LnJldm9rZSA/PyBmYWxzZSAqLyB9XHJcbiAgICBzZXQgaXNSZXZva2luZ1Rva2VuKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jldm9raW5nVG9rZW5TdWJqZWN0Lm5leHQodmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmF1dGhUb2tlbikge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IHsgLi4udGhpcy5hdXRoVG9rZW4sIHJldm9rZTogdmFsdWUgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRlbmFudFRva2VuKCkgeyByZXR1cm4gTG9jYWxpemVUb2tlbi5zdG9yYWdlLmdldChMb2NhbGl6ZVRva2VuLmNvbmZpZy50ZW5hbnRUb2tlbk5hbWUpIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIHByaXZhdGUgc3RvcmFnZUdldCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBlbmNvZGVkID0gTG9jYWxpemVUb2tlbi5zdG9yYWdlLmdldChMb2NhbGl6ZVRva2VuLmNvbmZpZy5hdXRoVG9rZW5OYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZCA9IGF0b2IoZW5jb2RlZCB8fCAnJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZWQpIGFzIElBdXRoVG9rZW47XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2V0KHZhbHVlOiBJQXV0aFRva2VuKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgICAgIExvY2FsaXplVG9rZW4uc3RvcmFnZS5zZXQoTG9jYWxpemVUb2tlbi5jb25maWcuYXV0aFRva2VuTmFtZSwgYmFzZTY0KTtcclxuICAgIH1cclxuXHJcbiAgICB0b2tlbnNWYWxpZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW4/Lmxlbmd0aCAmJiAoIUxvY2FsaXplVG9rZW4uY29uZmlnLm5lZWRUZW5hbnQgfHwgdGhpcy50ZW5hbnRUb2tlbj8ubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWNvZGVUb2tlbiA9ICh0b2tlbjogc3RyaW5nKSA9PiBqd3RfZGVjb2RlLmp3dERlY29kZTxKd3RQYXlsb2FkPih0b2tlbik7XHJcbiAgICBnZXQgZGVjb2RlUmVmcmVzaFRva2VuKCkge1xyXG4gICAgICAgIGNvbnN0IHRva2VuID0gTG9jYWxpemVUb2tlbi5zdG9yYWdlLmdldChMb2NhbGl6ZVRva2VuLmNvbmZpZy5yZWZyZXNoVG9rZW5OYW1lKTtcclxuICAgICAgICBpZiAoIXRva2VuKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVUb2tlbih0b2tlbik7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==