@sambath999/localize-token 12.1.7 → 12.1.8

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.
@@ -932,7 +932,6 @@
932
932
  this.success = false;
933
933
  this.config = LocalizeToken.config;
934
934
  this.clickLogout = function () { var _a; return (_a = _this.logout) === null || _a === void 0 ? void 0 : _a.call(_this); };
935
- this.showMessage = function (severity, summary) { return _this.messageService.add({ key: _this.messageKey, severity: severity, summary: summary }); };
936
935
  this.decodeToken = this.tokenService.decodeRefreshToken;
937
936
  this.loginConfig = this.dlgConfig.data.loginConfig;
938
937
  }
@@ -967,7 +966,6 @@
967
966
  loginRes = _c.sent();
968
967
  if (!(loginRes === null || loginRes === void 0 ? void 0 : loginRes.status)) {
969
968
  this.showMessage("error", (_a = loginRes.message) !== null && _a !== void 0 ? _a : "An error occurred");
970
- this.loading = false;
971
969
  return [2 /*return*/];
972
970
  }
973
971
  this.tokenService.accessToken = loginRes.tokens.accessToken;
@@ -982,6 +980,7 @@
982
980
  };
983
981
  LocalizeLogindlgComponent.prototype.login = function () {
984
982
  return __awaiter(this, void 0, void 0, function () {
983
+ var e_1;
985
984
  var _this = this;
986
985
  return __generator(this, function (_c) {
987
986
  switch (_c.label) {
@@ -990,9 +989,17 @@
990
989
  this.showMessage("error", "Login url is required");
991
990
  throw new Error("Login url is required");
992
991
  }
992
+ _c.label = 1;
993
+ case 1:
994
+ _c.trys.push([1, 3, , 4]);
993
995
  return [4 /*yield*/, new Promise(function (resolve, reject) { return _this.httpClient.post(_this.loginUrl, { password: _this.password.trim() }, { headers: _this.getHeaders() })
994
996
  .subscribe({ next: resolve, error: reject }); })];
995
- case 1: return [2 /*return*/, _c.sent()];
997
+ case 2: return [2 /*return*/, _c.sent()];
998
+ case 3:
999
+ e_1 = _c.sent();
1000
+ this.showMessage("error", e_1.message);
1001
+ return [2 /*return*/, null];
1002
+ case 4: return [2 /*return*/];
996
1003
  }
997
1004
  });
998
1005
  });
@@ -1007,11 +1014,16 @@
1007
1014
  };
1008
1015
  Object.defineProperty(LocalizeLogindlgComponent.prototype, "isValidPassword", {
1009
1016
  get: function () {
1017
+ this.loading = false;
1010
1018
  return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;
1011
1019
  },
1012
1020
  enumerable: false,
1013
1021
  configurable: true
1014
1022
  });
1023
+ LocalizeLogindlgComponent.prototype.showMessage = function (severity, summary) {
1024
+ this.messageService.add({ key: this.messageKey, severity: severity, summary: summary });
1025
+ this.loading = false;
1026
+ };
1015
1027
  return LocalizeLogindlgComponent;
1016
1028
  }());
1017
1029
  LocalizeLogindlgComponent.decorators = [
@@ -1 +1 @@
1
- {"version":3,"file":"sambath999-localize-token.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/localize-token/localize.token.storage.ts","../../src/localize-token/localize.token.ts","../../src/localize-token/localize.token.service.ts","../../src/localize-token/localize.api.service.ts","../../src/localize-token/localize.token.module.ts","../../src/localize-logindlg/localize-logindlg.component.ts","../../src/localize-logindlg/localize-logindlg.service.ts","../../src/localize-logindlg/localize-logindlg.module.ts","../../src/sambath999-localize-token.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { extractMainDomain } from \"./localize.token\";\r\n\r\nexport interface ICookieOptions {\r\n /**\r\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\r\n */\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n samesite?: \"strict\" | \"lax\" | \"none\";\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 LocalizeTokenStorage {\r\n\r\n private get getDefaultOptions(): ICookieOptions {\r\n const mainDomain = extractMainDomain(window.location.hostname);\r\n return {\r\n path: '/',\r\n domain: mainDomain,\r\n secure: true,\r\n // samesite: SameSiteType.strict,\r\n expires: 1\r\n }\r\n }\r\n\r\n private readonly defaultOptions: ICookieOptions;\r\n constructor(_defaultOptions?: ICookieOptions) {\r\n this.defaultOptions = _defaultOptions ?? this.getDefaultOptions;\r\n }\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 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 set(name: string, value: string, options?: ICookieOptions) {\r\n options ??= this.defaultOptions;\r\n const { expires, path, domain, secure, samesite } = { ...this.defaultOptions, ...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","import { LocalizeTokenStorage } from \"./localize.token.storage\";\r\nexport interface ILocalizeTokenConfig {\r\n /**\r\n * The main domain of the application to set the cookies to be available for cross application with subdomains.\r\n * \r\n * Default is location.hostname (current domain) and automatically set extracted main domain if it is subdomain.\r\n */\r\n mainDomain?: string;\r\n authTokenName?: string;\r\n tenantTokenName?: string;\r\n refreshTokenName?: string;\r\n /**\r\n * Flag to determine if the tenant token is required.\r\n */\r\n needTenant: boolean;\r\n isProduction: boolean;\r\n revokeTokenUrl: string;\r\n}\r\n\r\nexport class LocalizeToken {\r\n\r\n static init(config: ILocalizeTokenConfig) {\r\n LocalizeToken.config = { ...LocalizeToken.config, ...config };\r\n }\r\n\r\n static config: ILocalizeTokenConfig = {\r\n mainDomain: extractMainDomain(),\r\n authTokenName: 'auth-token',\r\n tenantTokenName: '_lze_tnt_01',\r\n refreshTokenName: '_lze_rftkp_',\r\n needTenant: false,\r\n isProduction: false,\r\n revokeTokenUrl: ''\r\n }\r\n\r\n static readonly storage = new LocalizeTokenStorage();\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\nexport 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}\r\n\r\nexport function extractMainDomain(subdomain?: string): string {\r\n subdomain ??= window.location.hostname;\r\n const parts = subdomain.split('.');\r\n return parts.length > 2 ? parts.slice(-2).join('.') : subdomain;\r\n}","import { Injectable } from '@angular/core';\r\nimport { ILocalizeTokenConfig, 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 private readonly config: ILocalizeTokenConfig\r\n constructor() {\r\n if (!LocalizeToken.config.authTokenName || !LocalizeToken.config.refreshTokenName || !LocalizeToken.config.tenantTokenName) {\r\n throw new Error('authTokenName, refreshTokenName, and tenantTokenName must be defined in LocalizeToken.config')\r\n }\r\n this.config = LocalizeToken.config;\r\n }\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(this.config.authTokenName!);\r\n }\r\n\r\n get refreshToken() { return LocalizeToken.storage.get(this.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(this.config.tenantTokenName!) }\r\n\r\n private storageGet() {\r\n try {\r\n const encoded = LocalizeToken.storage.get(this.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(this.config.authTokenName!, base64);\r\n }\r\n\r\n tokensValid() {\r\n return this.refreshToken?.length && (!this.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(this.config.refreshTokenName!);\r\n if (!token) return null;\r\n return this.decodeToken(token);\r\n }\r\n\r\n}\r\n","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 * The time to wait for each request to complete in milliseconds.\r\n * Be careful with this option, it may cause the application to hang if the request is not completed.\r\n */\r\n waitEachRequest?: {\r\n milliseconds: number\r\n }\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 if (this.apiConfigs.waitEachRequest?.milliseconds) {\r\n await waitFor(this.apiConfigs.waitEachRequest.milliseconds, this.isRequesting);\r\n }\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","import { NgModule } from '@angular/core';\r\nimport { LocalizeTokenService } from './localize.token.service';\r\nimport { LocalizeApiService } from './localize.api.service';\r\n\r\n@NgModule({\r\n providers: [\r\n LocalizeTokenService,\r\n LocalizeApiService\r\n ],\r\n})\r\nexport class LocalizeTokenModule { }","import { HttpClient } from \"@angular/common/http\";\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { MessageService } from \"primeng/api\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { JwtPayload, LocalizeTokenService } from \"../localize-token/localize.token.service\";\r\nimport { LocalizeToken } from \"../localize-token/localize.token\";\r\nimport { ILoginDialogConfig } from \"./localize-logindlg.service\";\r\n\r\n@Component({\r\n styles: [`\r\n #login-dlg-wrap {\r\n width: 100%;\r\n max-width: 400px;\r\n margin: 0 auto;\r\n padding: 30px;\r\n }\r\n \r\n .login-dlg-elm {\r\n margin-top: 1rem;\r\n }\r\n \r\n #login-dlg-header {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n \r\n #login-dlg-header h3 {\r\n font-weight: bold;\r\n font-size: 0.9rem;\r\n color: orange;\r\n text-align: center;\r\n }\r\n \r\n #login-logo {\r\n height: 40px;\r\n width: 40px;\r\n background: url(\"/assets/images/logo-300px.png\") no-repeat;\r\n background-size: contain;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup {\r\n height: 45px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon {\r\n height: 45px;\r\n border-radius: 15px 0 0 15px;\r\n width: 50px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon * {\r\n font-size: 1rem;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup input {\r\n height: 45px;\r\n border-radius: 0 15px 15px 0;\r\n }\r\n \r\n #login-dlg-content button {\r\n height: 45px;\r\n border-radius: 15px;\r\n }\r\n \r\n /*check animation block*/\r\n \r\n .check-animation-wrap {\r\n top: 0;\r\n left: 0;\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: calc(100% - 200px);\r\n min-height: 400px;\r\n }\r\n \r\n .check-main-container {\r\n width: 100%;\r\n height: 100vh;\r\n display: flex;\r\n flex-flow: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n \r\n .check-container {\r\n width: 6.25rem;\r\n height: 7.5rem;\r\n display: flex;\r\n flex-flow: column;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n \r\n .check-container .check-background {\r\n width: 100%;\r\n height: calc(100% - 1.25rem);\r\n background: linear-gradient(to bottom right, #5de593, #41d67c);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n transform: scale(0.84);\r\n border-radius: 50%;\r\n animation: animateContainer 0.75s ease-out forwards 0.75s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0;\r\n }\r\n \r\n .check-container .check-background svg {\r\n width: 65%;\r\n transform: translateY(0.25rem);\r\n stroke-dasharray: 80;\r\n stroke-dashoffset: 80;\r\n animation: animateCheck 0.35s forwards 1.25s ease-out;\r\n min-width: auto !important;\r\n }\r\n \r\n .check-container .check-shadow {\r\n bottom: calc(-15% - 5px);\r\n left: 0;\r\n border-radius: 50%;\r\n background: radial-gradient(closest-side, rgba(73, 218, 131, 1), transparent);\r\n animation: animateShadow 0.75s ease-out forwards 0.75s;\r\n }\r\n \r\n @keyframes animateContainer {\r\n 0% {\r\n opacity: 0;\r\n transform: scale(0);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 25% {\r\n opacity: 1;\r\n transform: scale(0.9);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 43.75% {\r\n transform: scale(1.15);\r\n box-shadow: 0px 0px 0px 43.334px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 62.5% {\r\n transform: scale(1);\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 21.667px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 81.25% {\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 100% {\r\n opacity: 1;\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n }\r\n \r\n @keyframes animateCheck {\r\n from {\r\n stroke-dashoffset: 80;\r\n }\r\n \r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n }\r\n \r\n @keyframes animateShadow {\r\n 0% {\r\n opacity: 0;\r\n width: 100%;\r\n height: 15%;\r\n }\r\n \r\n 25% {\r\n opacity: 0.25;\r\n }\r\n \r\n 43.75% {\r\n width: 40%;\r\n height: 7%;\r\n opacity: 0.35;\r\n }\r\n \r\n 100% {\r\n width: 85%;\r\n height: 15%;\r\n opacity: 0.25;\r\n }\r\n }\r\n #login-dlg-wrap .loader-wrap {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height:100%;\r\n width:100%;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 100;\r\n background: #ffffff42;\r\n backdrop-filter: blur(1px);\r\n }\r\n\r\n #login-dlg-wrap .login-dlg-loader {\r\n border: 15px solid #e7e7e7;\r\n border-top: 15px solid #52dba1;\r\n border-radius: 50%;\r\n width: 100px;\r\n height: 100px;\r\n animation: spinloader 2s linear infinite;\r\n }\r\n\r\n #login-dlg-wrap .loader-wrap::before {\r\n content: \"\";\r\n position: absolute;\r\n width: 70px;\r\n height: 70px;\r\n transform: translate(-50%, -50%);\r\n z-index: 1;\r\n border: 15px solid #e7e7e700;\r\n border-top: 15px solid #52dba1c9;\r\n border-radius: 50%;\r\n animation: spinloader .75s linear infinite;\r\n }\r\n\r\n @keyframes spinloader {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n `],\r\n template: `<p-toast key=\"$login-dlg\" position=\"top-center\"></p-toast>\r\n <div id=\"login-dlg-wrap\">\r\n <div id=\"login-dlg-header\">\r\n <div id=\"login-logo\" class=\"p-mb-2\"></div>\r\n <h3 *ngIf=\"!success\">Your session is expired! <br> Please login again to continue.</h3>\r\n <h3 *ngIf=\"success\" style=\"color:green !important;\">You haved successfully logged in.</h3>\r\n </div>\r\n <div id=\"login-dlg-content\">\r\n <ng-container *ngIf=\"!success\">\r\n <div *ngIf=\"loading\" class=\"loader-wrap\">\r\n <div class=\"login-dlg-loader\"></div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">person</i>\r\n </span>\r\n <input disabled pInputText type=\"text\" placeholder=\"Username\" [value]=\"decodeToken?.email\" />\r\n </div>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">lock</i>\r\n </span>\r\n <input [disabled]=\"loading\" (keydown.enter)=\"clickLogin()\" pInputText type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\"\r\n autofocus />\r\n </div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <button style=\"width: 100%;\" pButton type=\"button\" label=\"Login\" (click)=\"clickLogin()\"\r\n [disabled]=\"!password || loading\"></button>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\" style=\"display:flex;align-items: center;user-select: none;\">\r\n <span>No, I want to login with another user.</span>\r\n <button class=\"p-button-text\" pButton type=\"button\" label=\"Logout\" (click)=\"clickLogout()\"></button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"success\">\r\n <div style=\"margin-top:35px;\"></div>\r\n <div class=\"check-animation-wrap\">\r\n <div class=\"check-main-container\">\r\n <div class=\"check-container\">\r\n <div class=\"check-background\">\r\n <svg viewBox=\"0 0 65 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M7 25L27.3077 44L58.5 7\" stroke=\"white\" stroke-width=\"13\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>`,\r\n selector: \"app-localize-logindlg\",\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class LocalizeLogindlgComponent implements OnInit {\r\n readonly messageKey = \"$login-dlg\";\r\n password: any;\r\n readonly decodeToken: JwtPayload | null;\r\n loading = false;\r\n success = false;\r\n private readonly config = LocalizeToken.config;\r\n private readonly loginConfig: ILoginDialogConfig\r\n\r\n private logout?: () => any\r\n private loginUrl?: string;\r\n\r\n\r\n constructor(\r\n private readonly messageService: MessageService,\r\n private readonly cdt: ChangeDetectorRef,\r\n private readonly dlgRef: DynamicDialogRef,\r\n private readonly dlgConfig: DynamicDialogConfig,\r\n private readonly tokenService: LocalizeTokenService,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n this.decodeToken = this.tokenService.decodeRefreshToken;\r\n this.loginConfig = this.dlgConfig.data.loginConfig;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.dlgConfig.closable = false;\r\n this.logout = this.loginConfig.logoutFunc;\r\n this.loginUrl = this.loginConfig.loginUrl\r\n\r\n if (!this.decodeToken) {\r\n this.showMessage(\"error\", \"Token is invalid\");\r\n setTimeout(() => this.logout?.(), 2000);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdt.detectChanges();\r\n }\r\n\r\n async clickLogin() {\r\n if (!this.isValidPassword) {\r\n this.showMessage(\"error\", \"Password is required and must be at least 6 characters\");\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n const loginRes = await this.login();\r\n if (!loginRes?.status) {\r\n this.showMessage(\"error\", loginRes.message ?? \"An error occurred\");\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n this.tokenService.accessToken = loginRes.tokens.accessToken;\r\n const cookieOptions = { expires: this.loginConfig.expire ?? 5 }\r\n LocalizeToken.storage.set(this.config.refreshTokenName!, loginRes.tokens.refreshToken, cookieOptions);\r\n this.success = true;\r\n setTimeout(() => this.dlgRef.close(true), 2000);\r\n }\r\n\r\n private async login() {\r\n if (!this.loginUrl || !this.loginUrl.trim().length) {\r\n this.showMessage(\"error\", \"Login url is required\");\r\n throw new Error(\"Login url is required\");\r\n }\r\n\r\n return await new Promise<any>((resolve, reject) =>\r\n this.httpClient.post(this.loginUrl!, { password: this.password.trim() }, { headers: this.getHeaders() })\r\n .subscribe({ next: resolve, error: reject })\r\n );\r\n }\r\n\r\n private getHeaders() {\r\n return {\r\n [LocalizeToken.httpHeaders.X_REFRESH_TOKEN]: LocalizeToken.storage.get(this.config.refreshTokenName!) ?? \"\",\r\n [LocalizeToken.httpHeaders.X_TENANT]: LocalizeToken.storage.get(this.config.tenantTokenName!) ?? \"\",\r\n };\r\n }\r\n\r\n get isValidPassword(): boolean {\r\n return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;\r\n }\r\n\r\n clickLogout = () => this.logout?.();\r\n\r\n private showMessage = (severity: string, summary: string) =>\r\n this.messageService.add({ key: this.messageKey, severity, summary });\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\nimport { DialogService, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { LocalizeLogindlgComponent } from './localize-logindlg.component';\nexport interface ILoginDialogConfig {\n loginUrl?: string;\n logoutUrl?: string;\n logoutFunc?: () => void;\n /**\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\n */\n expire?: number;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizeLogindlgService {\n\n constructor(private readonly injector: Injector) { }\n\n async openLoginDialog(loginConfig: ILoginDialogConfig, config?: DynamicDialogConfig) {\n config ??= {\n header: 'Login',\n height: '650px',\n style: { 'max-width': '400px', width: '100%', 'height': '650px' },\n }\n config.data = { ...config.data || {}, ...{ loginConfig } };\n\n const dialogService = this.injector.get(DialogService);\n const dialog = dialogService.open(LocalizeLogindlgComponent, config);\n\n await new Promise<void>((resolve) =>\n dialog.onClose.subscribe(res => {\n if (res) {\n resolve();\n }\n }));\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LocalizeLogindlgComponent } from \"./localize-logindlg.component\";\nimport { ToastModule } from \"primeng/toast\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ButtonModule } from \"primeng/button\";\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { LocalizeLogindlgService } from \"./localize-logindlg.service\";\n\n@NgModule({\n declarations: [LocalizeLogindlgComponent],\n exports: [LocalizeLogindlgComponent],\n imports: [\n CommonModule,\n ToastModule,\n InputTextModule,\n BrowserModule,\n FormsModule,\n ButtonModule,\n ],\n providers: [LocalizeLogindlgService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class LocalizeLogindlgModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BehaviorSubject","jwt_decode","Injectable","EMethod","HttpHeaders","HttpClient","NgModule","Component","MessageService","ViewEncapsulation","ChangeDetectorRef","DynamicDialogRef","DynamicDialogConfig","DialogService","Injector","CommonModule","ToastModule","InputTextModule","BrowserModule","FormsModule","ButtonModule","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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"}
1
+ {"version":3,"file":"sambath999-localize-token.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/localize-token/localize.token.storage.ts","../../src/localize-token/localize.token.ts","../../src/localize-token/localize.token.service.ts","../../src/localize-token/localize.api.service.ts","../../src/localize-token/localize.token.module.ts","../../src/localize-logindlg/localize-logindlg.component.ts","../../src/localize-logindlg/localize-logindlg.service.ts","../../src/localize-logindlg/localize-logindlg.module.ts","../../src/sambath999-localize-token.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { extractMainDomain } from \"./localize.token\";\r\n\r\nexport interface ICookieOptions {\r\n /**\r\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\r\n */\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n samesite?: \"strict\" | \"lax\" | \"none\";\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 LocalizeTokenStorage {\r\n\r\n private get getDefaultOptions(): ICookieOptions {\r\n const mainDomain = extractMainDomain(window.location.hostname);\r\n return {\r\n path: '/',\r\n domain: mainDomain,\r\n secure: true,\r\n // samesite: SameSiteType.strict,\r\n expires: 1\r\n }\r\n }\r\n\r\n private readonly defaultOptions: ICookieOptions;\r\n constructor(_defaultOptions?: ICookieOptions) {\r\n this.defaultOptions = _defaultOptions ?? this.getDefaultOptions;\r\n }\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 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 set(name: string, value: string, options?: ICookieOptions) {\r\n options ??= this.defaultOptions;\r\n const { expires, path, domain, secure, samesite } = { ...this.defaultOptions, ...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","import { LocalizeTokenStorage } from \"./localize.token.storage\";\r\nexport interface ILocalizeTokenConfig {\r\n /**\r\n * The main domain of the application to set the cookies to be available for cross application with subdomains.\r\n * \r\n * Default is location.hostname (current domain) and automatically set extracted main domain if it is subdomain.\r\n */\r\n mainDomain?: string;\r\n authTokenName?: string;\r\n tenantTokenName?: string;\r\n refreshTokenName?: string;\r\n /**\r\n * Flag to determine if the tenant token is required.\r\n */\r\n needTenant: boolean;\r\n isProduction: boolean;\r\n revokeTokenUrl: string;\r\n}\r\n\r\nexport class LocalizeToken {\r\n\r\n static init(config: ILocalizeTokenConfig) {\r\n LocalizeToken.config = { ...LocalizeToken.config, ...config };\r\n }\r\n\r\n static config: ILocalizeTokenConfig = {\r\n mainDomain: extractMainDomain(),\r\n authTokenName: 'auth-token',\r\n tenantTokenName: '_lze_tnt_01',\r\n refreshTokenName: '_lze_rftkp_',\r\n needTenant: false,\r\n isProduction: false,\r\n revokeTokenUrl: ''\r\n }\r\n\r\n static readonly storage = new LocalizeTokenStorage();\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\nexport 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}\r\n\r\nexport function extractMainDomain(subdomain?: string): string {\r\n subdomain ??= window.location.hostname;\r\n const parts = subdomain.split('.');\r\n return parts.length > 2 ? parts.slice(-2).join('.') : subdomain;\r\n}","import { Injectable } from '@angular/core';\r\nimport { ILocalizeTokenConfig, 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 private readonly config: ILocalizeTokenConfig\r\n constructor() {\r\n if (!LocalizeToken.config.authTokenName || !LocalizeToken.config.refreshTokenName || !LocalizeToken.config.tenantTokenName) {\r\n throw new Error('authTokenName, refreshTokenName, and tenantTokenName must be defined in LocalizeToken.config')\r\n }\r\n this.config = LocalizeToken.config;\r\n }\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(this.config.authTokenName!);\r\n }\r\n\r\n get refreshToken() { return LocalizeToken.storage.get(this.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(this.config.tenantTokenName!) }\r\n\r\n private storageGet() {\r\n try {\r\n const encoded = LocalizeToken.storage.get(this.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(this.config.authTokenName!, base64);\r\n }\r\n\r\n tokensValid() {\r\n return this.refreshToken?.length && (!this.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(this.config.refreshTokenName!);\r\n if (!token) return null;\r\n return this.decodeToken(token);\r\n }\r\n\r\n}\r\n","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 * The time to wait for each request to complete in milliseconds.\r\n * Be careful with this option, it may cause the application to hang if the request is not completed.\r\n */\r\n waitEachRequest?: {\r\n milliseconds: number\r\n }\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 if (this.apiConfigs.waitEachRequest?.milliseconds) {\r\n await waitFor(this.apiConfigs.waitEachRequest.milliseconds, this.isRequesting);\r\n }\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","import { NgModule } from '@angular/core';\r\nimport { LocalizeTokenService } from './localize.token.service';\r\nimport { LocalizeApiService } from './localize.api.service';\r\n\r\n@NgModule({\r\n providers: [\r\n LocalizeTokenService,\r\n LocalizeApiService\r\n ],\r\n})\r\nexport class LocalizeTokenModule { }","import { HttpClient } from \"@angular/common/http\";\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { MessageService } from \"primeng/api\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { JwtPayload, LocalizeTokenService } from \"../localize-token/localize.token.service\";\r\nimport { LocalizeToken } from \"../localize-token/localize.token\";\r\nimport { ILoginDialogConfig } from \"./localize-logindlg.service\";\r\n\r\n@Component({\r\n styles: [`\r\n #login-dlg-wrap {\r\n width: 100%;\r\n max-width: 400px;\r\n margin: 0 auto;\r\n padding: 30px;\r\n }\r\n \r\n .login-dlg-elm {\r\n margin-top: 1rem;\r\n }\r\n \r\n #login-dlg-header {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n \r\n #login-dlg-header h3 {\r\n font-weight: bold;\r\n font-size: 0.9rem;\r\n color: orange;\r\n text-align: center;\r\n }\r\n \r\n #login-logo {\r\n height: 40px;\r\n width: 40px;\r\n background: url(\"/assets/images/logo-300px.png\") no-repeat;\r\n background-size: contain;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup {\r\n height: 45px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon {\r\n height: 45px;\r\n border-radius: 15px 0 0 15px;\r\n width: 50px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon * {\r\n font-size: 1rem;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup input {\r\n height: 45px;\r\n border-radius: 0 15px 15px 0;\r\n }\r\n \r\n #login-dlg-content button {\r\n height: 45px;\r\n border-radius: 15px;\r\n }\r\n \r\n /*check animation block*/\r\n \r\n .check-animation-wrap {\r\n top: 0;\r\n left: 0;\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: calc(100% - 200px);\r\n min-height: 400px;\r\n }\r\n \r\n .check-main-container {\r\n width: 100%;\r\n height: 100vh;\r\n display: flex;\r\n flex-flow: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n \r\n .check-container {\r\n width: 6.25rem;\r\n height: 7.5rem;\r\n display: flex;\r\n flex-flow: column;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n \r\n .check-container .check-background {\r\n width: 100%;\r\n height: calc(100% - 1.25rem);\r\n background: linear-gradient(to bottom right, #5de593, #41d67c);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n transform: scale(0.84);\r\n border-radius: 50%;\r\n animation: animateContainer 0.75s ease-out forwards 0.75s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0;\r\n }\r\n \r\n .check-container .check-background svg {\r\n width: 65%;\r\n transform: translateY(0.25rem);\r\n stroke-dasharray: 80;\r\n stroke-dashoffset: 80;\r\n animation: animateCheck 0.35s forwards 1.25s ease-out;\r\n min-width: auto !important;\r\n }\r\n \r\n .check-container .check-shadow {\r\n bottom: calc(-15% - 5px);\r\n left: 0;\r\n border-radius: 50%;\r\n background: radial-gradient(closest-side, rgba(73, 218, 131, 1), transparent);\r\n animation: animateShadow 0.75s ease-out forwards 0.75s;\r\n }\r\n \r\n @keyframes animateContainer {\r\n 0% {\r\n opacity: 0;\r\n transform: scale(0);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 25% {\r\n opacity: 1;\r\n transform: scale(0.9);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 43.75% {\r\n transform: scale(1.15);\r\n box-shadow: 0px 0px 0px 43.334px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 62.5% {\r\n transform: scale(1);\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 21.667px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 81.25% {\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 100% {\r\n opacity: 1;\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n }\r\n \r\n @keyframes animateCheck {\r\n from {\r\n stroke-dashoffset: 80;\r\n }\r\n \r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n }\r\n \r\n @keyframes animateShadow {\r\n 0% {\r\n opacity: 0;\r\n width: 100%;\r\n height: 15%;\r\n }\r\n \r\n 25% {\r\n opacity: 0.25;\r\n }\r\n \r\n 43.75% {\r\n width: 40%;\r\n height: 7%;\r\n opacity: 0.35;\r\n }\r\n \r\n 100% {\r\n width: 85%;\r\n height: 15%;\r\n opacity: 0.25;\r\n }\r\n }\r\n #login-dlg-wrap .loader-wrap {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height:100%;\r\n width:100%;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 100;\r\n background: #ffffff42;\r\n backdrop-filter: blur(1px);\r\n }\r\n\r\n #login-dlg-wrap .login-dlg-loader {\r\n border: 15px solid #e7e7e7;\r\n border-top: 15px solid #52dba1;\r\n border-radius: 50%;\r\n width: 100px;\r\n height: 100px;\r\n animation: spinloader 2s linear infinite;\r\n }\r\n\r\n #login-dlg-wrap .loader-wrap::before {\r\n content: \"\";\r\n position: absolute;\r\n width: 70px;\r\n height: 70px;\r\n transform: translate(-50%, -50%);\r\n z-index: 1;\r\n border: 15px solid #e7e7e700;\r\n border-top: 15px solid #52dba1c9;\r\n border-radius: 50%;\r\n animation: spinloader .75s linear infinite;\r\n }\r\n\r\n @keyframes spinloader {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n `],\r\n template: `<p-toast key=\"$login-dlg\" position=\"top-center\"></p-toast>\r\n <div id=\"login-dlg-wrap\">\r\n <div id=\"login-dlg-header\">\r\n <div id=\"login-logo\" class=\"p-mb-2\"></div>\r\n <h3 *ngIf=\"!success\">Your session is expired! <br> Please login again to continue.</h3>\r\n <h3 *ngIf=\"success\" style=\"color:green !important;\">You haved successfully logged in.</h3>\r\n </div>\r\n <div id=\"login-dlg-content\">\r\n <ng-container *ngIf=\"!success\">\r\n <div *ngIf=\"loading\" class=\"loader-wrap\">\r\n <div class=\"login-dlg-loader\"></div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">person</i>\r\n </span>\r\n <input disabled pInputText type=\"text\" placeholder=\"Username\" [value]=\"decodeToken?.email\" />\r\n </div>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">lock</i>\r\n </span>\r\n <input [disabled]=\"loading\" (keydown.enter)=\"clickLogin()\" pInputText type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\"\r\n autofocus />\r\n </div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <button style=\"width: 100%;\" pButton type=\"button\" label=\"Login\" (click)=\"clickLogin()\"\r\n [disabled]=\"!password || loading\"></button>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\" style=\"display:flex;align-items: center;user-select: none;\">\r\n <span>No, I want to login with another user.</span>\r\n <button class=\"p-button-text\" pButton type=\"button\" label=\"Logout\" (click)=\"clickLogout()\"></button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"success\">\r\n <div style=\"margin-top:35px;\"></div>\r\n <div class=\"check-animation-wrap\">\r\n <div class=\"check-main-container\">\r\n <div class=\"check-container\">\r\n <div class=\"check-background\">\r\n <svg viewBox=\"0 0 65 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M7 25L27.3077 44L58.5 7\" stroke=\"white\" stroke-width=\"13\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>`,\r\n selector: \"app-localize-logindlg\",\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class LocalizeLogindlgComponent implements OnInit {\r\n readonly messageKey = \"$login-dlg\";\r\n password: any;\r\n readonly decodeToken: JwtPayload | null;\r\n loading = false;\r\n success = false;\r\n private readonly config = LocalizeToken.config;\r\n private readonly loginConfig: ILoginDialogConfig\r\n\r\n private logout?: () => any\r\n private loginUrl?: string;\r\n\r\n\r\n constructor(\r\n private readonly messageService: MessageService,\r\n private readonly cdt: ChangeDetectorRef,\r\n private readonly dlgRef: DynamicDialogRef,\r\n private readonly dlgConfig: DynamicDialogConfig,\r\n private readonly tokenService: LocalizeTokenService,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n this.decodeToken = this.tokenService.decodeRefreshToken;\r\n this.loginConfig = this.dlgConfig.data.loginConfig;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.dlgConfig.closable = false;\r\n this.logout = this.loginConfig.logoutFunc;\r\n this.loginUrl = this.loginConfig.loginUrl\r\n\r\n if (!this.decodeToken) {\r\n this.showMessage(\"error\", \"Token is invalid\");\r\n setTimeout(() => this.logout?.(), 2000);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdt.detectChanges();\r\n }\r\n\r\n async clickLogin() {\r\n if (!this.isValidPassword) {\r\n this.showMessage(\"error\", \"Password is required and must be at least 6 characters\");\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n const loginRes = await this.login();\r\n if (!loginRes?.status) {\r\n this.showMessage(\"error\", loginRes.message ?? \"An error occurred\");\r\n return;\r\n }\r\n\r\n this.tokenService.accessToken = loginRes.tokens.accessToken;\r\n const cookieOptions = { expires: this.loginConfig.expire ?? 5 }\r\n LocalizeToken.storage.set(this.config.refreshTokenName!, loginRes.tokens.refreshToken, cookieOptions);\r\n this.success = true;\r\n setTimeout(() => this.dlgRef.close(true), 2000);\r\n }\r\n\r\n private async login() {\r\n if (!this.loginUrl || !this.loginUrl.trim().length) {\r\n this.showMessage(\"error\", \"Login url is required\");\r\n throw new Error(\"Login url is required\");\r\n }\r\n\r\n try {\r\n return await new Promise<any>((resolve, reject) =>\r\n this.httpClient.post(this.loginUrl!, { password: this.password.trim() }, { headers: this.getHeaders() })\r\n .subscribe({ next: resolve, error: reject }));\r\n } catch (e: any) {\r\n this.showMessage(\"error\", e.message);\r\n return null;\r\n }\r\n }\r\n\r\n private getHeaders() {\r\n return {\r\n [LocalizeToken.httpHeaders.X_REFRESH_TOKEN]: LocalizeToken.storage.get(this.config.refreshTokenName!) ?? \"\",\r\n [LocalizeToken.httpHeaders.X_TENANT]: LocalizeToken.storage.get(this.config.tenantTokenName!) ?? \"\",\r\n };\r\n }\r\n\r\n get isValidPassword(): boolean {\r\n this.loading = false;\r\n return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;\r\n }\r\n\r\n clickLogout = () => this.logout?.();\r\n\r\n private showMessage(severity: string, summary: string) {\r\n this.messageService.add({ key: this.messageKey, severity, summary });\r\n this.loading = false;\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\nimport { DialogService, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { LocalizeLogindlgComponent } from './localize-logindlg.component';\nexport interface ILoginDialogConfig {\n loginUrl?: string;\n logoutUrl?: string;\n logoutFunc?: () => void;\n /**\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\n */\n expire?: number;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizeLogindlgService {\n\n constructor(private readonly injector: Injector) { }\n\n async openLoginDialog(loginConfig: ILoginDialogConfig, config?: DynamicDialogConfig) {\n config ??= {\n header: 'Login',\n height: '650px',\n style: { 'max-width': '400px', width: '100%', 'height': '650px' },\n }\n config.data = { ...config.data || {}, ...{ loginConfig } };\n\n const dialogService = this.injector.get(DialogService);\n const dialog = dialogService.open(LocalizeLogindlgComponent, config);\n\n await new Promise<void>((resolve) =>\n dialog.onClose.subscribe(res => {\n if (res) {\n resolve();\n }\n }));\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LocalizeLogindlgComponent } from \"./localize-logindlg.component\";\nimport { ToastModule } from \"primeng/toast\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ButtonModule } from \"primeng/button\";\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { LocalizeLogindlgService } from \"./localize-logindlg.service\";\n\n@NgModule({\n declarations: [LocalizeLogindlgComponent],\n exports: [LocalizeLogindlgComponent],\n imports: [\n CommonModule,\n ToastModule,\n InputTextModule,\n BrowserModule,\n FormsModule,\n ButtonModule,\n ],\n providers: [LocalizeLogindlgService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class LocalizeLogindlgModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BehaviorSubject","jwt_decode","Injectable","EMethod","HttpHeaders","HttpClient","NgModule","Component","MessageService","ViewEncapsulation","ChangeDetectorRef","DynamicDialogRef","DynamicDialogConfig","DialogService","Injector","CommonModule","ToastModule","InputTextModule","BrowserModule","FormsModule","ButtonModule","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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"}
@@ -18,7 +18,6 @@ export class LocalizeLogindlgComponent {
18
18
  this.success = false;
19
19
  this.config = LocalizeToken.config;
20
20
  this.clickLogout = () => { var _a; return (_a = this.logout) === null || _a === void 0 ? void 0 : _a.call(this); };
21
- this.showMessage = (severity, summary) => this.messageService.add({ key: this.messageKey, severity, summary });
22
21
  this.decodeToken = this.tokenService.decodeRefreshToken;
23
22
  this.loginConfig = this.dlgConfig.data.loginConfig;
24
23
  }
@@ -45,7 +44,6 @@ export class LocalizeLogindlgComponent {
45
44
  const loginRes = yield this.login();
46
45
  if (!(loginRes === null || loginRes === void 0 ? void 0 : loginRes.status)) {
47
46
  this.showMessage("error", (_a = loginRes.message) !== null && _a !== void 0 ? _a : "An error occurred");
48
- this.loading = false;
49
47
  return;
50
48
  }
51
49
  this.tokenService.accessToken = loginRes.tokens.accessToken;
@@ -61,8 +59,14 @@ export class LocalizeLogindlgComponent {
61
59
  this.showMessage("error", "Login url is required");
62
60
  throw new Error("Login url is required");
63
61
  }
64
- return yield new Promise((resolve, reject) => this.httpClient.post(this.loginUrl, { password: this.password.trim() }, { headers: this.getHeaders() })
65
- .subscribe({ next: resolve, error: reject }));
62
+ try {
63
+ return yield new Promise((resolve, reject) => this.httpClient.post(this.loginUrl, { password: this.password.trim() }, { headers: this.getHeaders() })
64
+ .subscribe({ next: resolve, error: reject }));
65
+ }
66
+ catch (e) {
67
+ this.showMessage("error", e.message);
68
+ return null;
69
+ }
66
70
  });
67
71
  }
68
72
  getHeaders() {
@@ -73,8 +77,13 @@ export class LocalizeLogindlgComponent {
73
77
  };
74
78
  }
75
79
  get isValidPassword() {
80
+ this.loading = false;
76
81
  return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;
77
82
  }
83
+ showMessage(severity, summary) {
84
+ this.messageService.add({ key: this.messageKey, severity, summary });
85
+ this.loading = false;
86
+ }
78
87
  }
79
88
  LocalizeLogindlgComponent.decorators = [
80
89
  { type: Component, args: [{
@@ -377,4 +386,4 @@ LocalizeLogindlgComponent.ctorParameters = () => [
377
386
  { type: LocalizeTokenService },
378
387
  { type: HttpClient }
379
388
  ];
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUtbG9naW5kbGcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvY2FsaXplLWxvZ2luZGxnL2xvY2FsaXplLWxvZ2luZGxnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQXNTakUsTUFBTSxPQUFPLHlCQUF5QjtJQWFwQyxZQUNtQixjQUE4QixFQUM5QixHQUFzQixFQUN0QixNQUF3QixFQUN4QixTQUE4QixFQUM5QixZQUFrQyxFQUNsQyxVQUFzQjtRQUx0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFsQmhDLGVBQVUsR0FBRyxZQUFZLENBQUM7UUFHbkMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ0MsV0FBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUE4RS9DLGdCQUFXLEdBQUcsR0FBRyxFQUFFLFdBQUMsT0FBQSxNQUFBLElBQUksQ0FBQyxNQUFN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QUMsSUFBSTt5QkFoUzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1PUjthQThERjs7O1lBeFNRLGNBQWM7WUFMckIsaUJBQWlCO1lBTVcsZ0JBQWdCO1lBQXJDLG1CQUFtQjtZQUNQLG9CQUFvQjtZQVRoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gXCJwcmltZW5nL2R5bmFtaWNkaWFsb2dcIjtcclxuaW1wb3J0IHsgSnd0UGF5bG9hZCwgTG9jYWxpemVUb2tlblNlcnZpY2UgfSBmcm9tIFwiLi4vbG9jYWxpemUtdG9rZW4vbG9jYWxpemUudG9rZW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuIH0gZnJvbSBcIi4uL2xvY2FsaXplLXRva2VuL2xvY2FsaXplLnRva2VuXCI7XHJcbmltcG9ydCB7IElMb2dpbkRpYWxvZ0NvbmZpZyB9IGZyb20gXCIuL2xvY2FsaXplLWxvZ2luZGxnLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0eWxlczogW2BcclxuICAjbG9naW4tZGxnLXdyYXAge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBwYWRkaW5nOiAzMHB4O1xyXG4gIH1cclxuICBcclxuICAubG9naW4tZGxnLWVsbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWhlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICB9XHJcbiAgXHJcbiAgI2xvZ2luLWRsZy1oZWFkZXIgaDMge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXNpemU6IDAuOXJlbTtcclxuICAgIGNvbG9yOiBvcmFuZ2U7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gICNsb2dpbi1sb2dvIHtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2Fzc2V0cy9pbWFnZXMvbG9nby0zMDBweC5wbmdcIikgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgLnAtaW5wdXRncm91cCB7XHJcbiAgICBoZWlnaHQ6IDQ1cHg7XHJcbiAgfVxyXG4gIFxyXG4gICNsb2dpbi1kbGctY29udGVudCAucC1pbnB1dGdyb3VwIC5wLWlucHV0Z3JvdXAtYWRkb24ge1xyXG4gICAgaGVpZ2h0OiA0NXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTVweCAwIDAgMTVweDtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgLnAtaW5wdXRncm91cCAucC1pbnB1dGdyb3VwLWFkZG9uICoge1xyXG4gICAgZm9udC1zaXplOiAxcmVtO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgLnAtaW5wdXRncm91cCBpbnB1dCB7XHJcbiAgICBoZWlnaHQ6IDQ1cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwIDE1cHggMTVweCAwO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgYnV0dG9uIHtcclxuICAgIGhlaWdodDogNDVweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XHJcbiAgfVxyXG4gIFxyXG4gIC8qY2hlY2sgYW5pbWF0aW9uIGJsb2NrKi9cclxuICBcclxuICAuY2hlY2stYW5pbWF0aW9uLXdyYXAge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIwMHB4KTtcclxuICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xyXG4gIH1cclxuICBcclxuICAuY2hlY2stbWFpbi1jb250YWluZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZmxvdzogY29sdW1uO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuICBcclxuICAuY2hlY2stY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiA2LjI1cmVtO1xyXG4gICAgaGVpZ2h0OiA3LjVyZW07XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1mbG93OiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIH1cclxuICBcclxuICAuY2hlY2stY29udGFpbmVyIC5jaGVjay1iYWNrZ3JvdW5kIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxLjI1cmVtKTtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20gcmlnaHQsICM1ZGU1OTMsICM0MWQ2N2MpO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggNjVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpIGluc2V0LCAwcHggMHB4IDBweCA2NXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQ7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuODQpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYW5pbWF0aW9uOiBhbmltYXRlQ29udGFpbmVyIDAuNzVzIGVhc2Utb3V0IGZvcndhcmRzIDAuNzVzO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG4gIFxyXG4gIC5jaGVjay1jb250YWluZXIgLmNoZWNrLWJhY2tncm91bmQgc3ZnIHtcclxuICAgIHdpZHRoOiA2NSU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4yNXJlbSk7XHJcbiAgICBzdHJva2UtZGFzaGFycmF5OiA4MDtcclxuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiA4MDtcclxuICAgIGFuaW1hdGlvbjogYW5pbWF0ZUNoZWNrIDAuMzVzIGZvcndhcmRzIDEuMjVzIGVhc2Utb3V0O1xyXG4gICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIFxyXG4gIC5jaGVjay1jb250YWluZXIgLmNoZWNrLXNoYWRvdyB7XHJcbiAgICBib3R0b206IGNhbGMoLTE1JSAtIDVweCk7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNsb3Nlc3Qtc2lkZSwgcmdiYSg3MywgMjE4LCAxMzEsIDEpLCB0cmFuc3BhcmVudCk7XHJcbiAgICBhbmltYXRpb246IGFuaW1hdGVTaGFkb3cgMC43NXMgZWFzZS1vdXQgZm9yd2FyZHMgMC43NXM7XHJcbiAgfVxyXG4gIFxyXG4gIEBrZXlmcmFtZXMgYW5pbWF0ZUNvbnRhaW5lciB7XHJcbiAgICAwJSB7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XHJcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDY1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldCwgMHB4IDBweCAwcHggNjVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpIGluc2V0O1xyXG4gICAgfVxyXG4gIFxyXG4gICAgMjUlIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xyXG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCA2NXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDY1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldDtcclxuICAgIH1cclxuICBcclxuICAgIDQzLjc1JSB7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSk7XHJcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDQzLjMzNHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDY1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldDtcclxuICAgIH1cclxuICBcclxuICAgIDYyLjUlIHtcclxuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcclxuICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDIxLjY2N3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQ7XHJcbiAgICB9XHJcbiAgXHJcbiAgICA4MS4yNSUge1xyXG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldCwgMHB4IDBweCAwcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQ7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAxMDAlIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpIGluc2V0O1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBAa2V5ZnJhbWVzIGFuaW1hdGVDaGVjayB7XHJcbiAgICBmcm9tIHtcclxuICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDgwO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgdG8ge1xyXG4gICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgQGtleWZyYW1lcyBhbmltYXRlU2hhZG93IHtcclxuICAgIDAlIHtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTUlO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgMjUlIHtcclxuICAgICAgb3BhY2l0eTogMC4yNTtcclxuICAgIH1cclxuICBcclxuICAgIDQzLjc1JSB7XHJcbiAgICAgIHdpZHRoOiA0MCU7XHJcbiAgICAgIGhlaWdodDogNyU7XHJcbiAgICAgIG9wYWNpdHk6IDAuMzU7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAxMDAlIHtcclxuICAgICAgd2lkdGg6IDg1JTtcclxuICAgICAgaGVpZ2h0OiAxNSU7XHJcbiAgICAgIG9wYWNpdHk6IDAuMjU7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNsb2dpbi1kbGctd3JhcCAubG9hZGVyLXdyYXAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDoxMDAlO1xyXG4gICAgd2lkdGg6MTAwJTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB6LWluZGV4OiAxMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmNDI7XHJcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMXB4KTtcclxuICB9XHJcblxyXG4gICNsb2dpbi1kbGctd3JhcCAubG9naW4tZGxnLWxvYWRlciB7XHJcbiAgICBib3JkZXI6IDE1cHggc29saWQgI2U3ZTdlNztcclxuICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgIzUyZGJhMTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIHdpZHRoOiAxMDBweDtcclxuICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICBhbmltYXRpb246IHNwaW5sb2FkZXIgMnMgbGluZWFyIGluZmluaXRlO1xyXG4gIH1cclxuXHJcbiAgI2xvZ2luLWRsZy13cmFwIC5sb2FkZXItd3JhcDo6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB3aWR0aDogNzBweDtcclxuICAgIGhlaWdodDogNzBweDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIGJvcmRlcjogMTVweCBzb2xpZCAjZTdlN2U3MDA7XHJcbiAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICM1MmRiYTFjOTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGFuaW1hdGlvbjogc3BpbmxvYWRlciAuNzVzIGxpbmVhciBpbmZpbml0ZTtcclxuICB9XHJcblxyXG4gIEBrZXlmcmFtZXMgc3BpbmxvYWRlciB7XHJcbiAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XHJcbiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxyXG4gIH1cclxuICBgXSxcclxuICB0ZW1wbGF0ZTogYDxwLXRvYXN0IGtleT1cIiRsb2dpbi1kbGdcIiBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+XHJcbiAgPGRpdiBpZD1cImxvZ2luLWRsZy13cmFwXCI+XHJcbiAgICA8ZGl2IGlkPVwibG9naW4tZGxnLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGlkPVwibG9naW4tbG9nb1wiIGNsYXNzPVwicC1tYi0yXCI+PC9kaXY+XHJcbiAgICAgIDxoMyAqbmdJZj1cIiFzdWNjZXNzXCI+WW91ciBzZXNzaW9uIGlzIGV4cGlyZWQhIDxicj4gUGxlYXNlIGxvZ2luIGFnYWluIHRvIGNvbnRpbnVlLjwvaDM+XHJcbiAgICAgIDxoMyAqbmdJZj1cInN1Y2Nlc3NcIiBzdHlsZT1cImNvbG9yOmdyZWVuICFpbXBvcnRhbnQ7XCI+WW91IGhhdmVkIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4uPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBpZD1cImxvZ2luLWRsZy1jb250ZW50XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3VjY2Vzc1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJsb2FkZXItd3JhcFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWRsZy1sb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tZGxnLWVsbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRncm91cC1hZGRvblwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtcm91bmRcIj5wZXJzb248L2k+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGRpc2FibGVkIHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlVzZXJuYW1lXCIgW3ZhbHVlXT1cImRlY29kZVRva2VuPy5lbWFpbFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tZGxnLWVsbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRncm91cC1hZGRvblwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtcm91bmRcIj5sb2NrPC9pPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChrZXlkb3duLmVudGVyKT1cImNsaWNrTG9naW4oKVwiIHBJbnB1dFRleHQgdHlwZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiIFsobmdNb2RlbCldPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgIGF1dG9mb2N1cyAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWRsZy1lbG1cIj5cclxuICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIkxvZ2luXCIgKGNsaWNrKT1cImNsaWNrTG9naW4oKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcGFzc3dvcmQgfHwgbG9hZGluZ1wiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1kbGctZWxtXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjt1c2VyLXNlbGVjdDogbm9uZTtcIj5cclxuICAgICAgICAgIDxzcGFuPk5vLCBJIHdhbnQgdG8gbG9naW4gd2l0aCBhbm90aGVyIHVzZXIuPC9zcGFuPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIkxvZ291dFwiIChjbGljayk9XCJjbGlja0xvZ291dCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VjY2Vzc1wiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjM1cHg7XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWFuaW1hdGlvbi13cmFwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2stbWFpbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVjay1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgNjUgNTFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDI1TDI3LjMwNzcgNDRMNTguNSA3XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+YCxcclxuICBzZWxlY3RvcjogXCJhcHAtbG9jYWxpemUtbG9naW5kbGdcIixcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplTG9naW5kbGdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IG1lc3NhZ2VLZXkgPSBcIiRsb2dpbi1kbGdcIjtcclxuICBwYXNzd29yZDogYW55O1xyXG4gIHJlYWRvbmx5IGRlY29kZVRva2VuOiBKd3RQYXlsb2FkIHwgbnVsbDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgc3VjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gTG9jYWxpemVUb2tlbi5jb25maWc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dpbkNvbmZpZzogSUxvZ2luRGlhbG9nQ29uZmlnXHJcblxyXG4gIHByaXZhdGUgbG9nb3V0PzogKCkgPT4gYW55XHJcbiAgcHJpdmF0ZSBsb2dpblVybD86IHN0cmluZztcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkdDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRsZ1JlZjogRHluYW1pY0RpYWxvZ1JlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGxnQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2tlblNlcnZpY2U6IExvY2FsaXplVG9rZW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgICB0aGlzLmRlY29kZVRva2VuID0gdGhpcy50b2tlblNlcnZpY2UuZGVjb2RlUmVmcmVzaFRva2VuO1xyXG4gICAgdGhpcy5sb2dpbkNvbmZpZyA9IHRoaXMuZGxnQ29uZmlnLmRhdGEubG9naW5Db25maWc7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGxnQ29uZmlnLmNsb3NhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ291dCA9IHRoaXMubG9naW5Db25maWcubG9nb3V0RnVuYztcclxuICAgIHRoaXMubG9naW5VcmwgPSB0aGlzLmxvZ2luQ29uZmlnLmxvZ2luVXJsXHJcblxyXG4gICAgaWYgKCF0aGlzLmRlY29kZVRva2VuKSB7XHJcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXCJlcnJvclwiLCBcIlRva2VuIGlzIGludmFsaWRcIik7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2dvdXQ/LigpLCAyMDAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2R0LmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNsaWNrTG9naW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXCJlcnJvclwiLCBcIlBhc3N3b3JkIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVyc1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBsb2dpblJlcyA9IGF3YWl0IHRoaXMubG9naW4oKTtcclxuICAgIGlmICghbG9naW5SZXM/LnN0YXR1cykge1xyXG4gICAgICB0aGlzLnNob3dNZXNzYWdlKFwiZXJyb3JcIiwgbG9naW5SZXMubWVzc2FnZSA/PyBcIkFuIGVycm9yIG9jY3VycmVkXCIpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudG9rZW5TZXJ2aWNlLmFjY2Vzc1Rva2VuID0gbG9naW5SZXMudG9rZW5zLmFjY2Vzc1Rva2VuO1xyXG4gICAgY29uc3QgY29va2llT3B0aW9ucyA9IHsgZXhwaXJlczogdGhpcy5sb2dpbkNvbmZpZy5leHBpcmUgPz8gNSB9XHJcbiAgICBMb2NhbGl6ZVRva2VuLnN0b3JhZ2Uuc2V0KHRoaXMuY29uZmlnLnJlZnJlc2hUb2tlbk5hbWUhLCBsb2dpblJlcy50b2tlbnMucmVmcmVzaFRva2VuLCBjb29raWVPcHRpb25zKTtcclxuICAgIHRoaXMuc3VjY2VzcyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGxnUmVmLmNsb3NlKHRydWUpLCAyMDAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbG9naW4oKSB7XHJcbiAgICBpZiAoIXRoaXMubG9naW5VcmwgfHwgIXRoaXMubG9naW5VcmwudHJpbSgpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNob3dNZXNzYWdlKFwiZXJyb3JcIiwgXCJMb2dpbiB1cmwgaXMgcmVxdWlyZWRcIik7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvZ2luIHVybCBpcyByZXF1aXJlZFwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PlxyXG4gICAgICB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmxvZ2luVXJsISwgeyBwYXNzd29yZDogdGhpcy5wYXNzd29yZC50cmltKCkgfSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoeyBuZXh0OiByZXNvbHZlLCBlcnJvcjogcmVqZWN0IH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgW0xvY2FsaXplVG9rZW4uaHR0cEhlYWRlcnMuWF9SRUZSRVNIX1RPS0VOXTogTG9jYWxpemVUb2tlbi5zdG9yYWdlLmdldCh0aGlzLmNvbmZpZy5yZWZyZXNoVG9rZW5OYW1lISkgPz8gXCJcIixcclxuICAgICAgW0xvY2FsaXplVG9rZW4uaHR0cEhlYWRlcnMuWF9URU5BTlRdOiBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZ2V0KHRoaXMuY29uZmlnLnRlbmFudFRva2VuTmFtZSEpID8/IFwiXCIsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVmFsaWRQYXNzd29yZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkICYmIHRoaXMucGFzc3dvcmQudHJpbSgpLmxlbmd0aCA+PSA2ICYmIHRoaXMucGFzc3dvcmQudHJpbSgpLmxlbmd0aCA8PSAxNjtcclxuICB9XHJcblxyXG4gIGNsaWNrTG9nb3V0ID0gKCkgPT4gdGhpcy5sb2dvdXQ/LigpO1xyXG5cclxuICBwcml2YXRlIHNob3dNZXNzYWdlID0gKHNldmVyaXR5OiBzdHJpbmcsIHN1bW1hcnk6IHN0cmluZykgPT5cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiB0aGlzLm1lc3NhZ2VLZXksIHNldmVyaXR5LCBzdW1tYXJ5IH0pO1xyXG59XHJcbiJdfQ==
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUtbG9naW5kbGcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvY2FsaXplLWxvZ2luZGxnL2xvY2FsaXplLWxvZ2luZGxnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQXNTakUsTUFBTSxPQUFPLHlCQUF5QjtJQWFwQyxZQUNtQixjQUE4QixFQUM5QixHQUFzQixFQUN0QixNQUF3QixFQUN4QixTQUE4QixFQUM5QixZQUFrQyxFQUNsQyxVQUFzQjtRQUx0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFsQmhDLGVBQVUsR0FBRyxZQUFZLENBQUM7UUFHbkMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ0MsV0FBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFrRi9DLGdCQUFXLEdBQUcsR0FBRyxFQUFFLFdBQUMsT0FBQSxNQUFBLElBQUksQ0FBQyxNQUFN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UUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F5REg7Z0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUMzQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTt5QkFoUzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1PUjthQThERjs7O1lBeFNRLGNBQWM7WUFMckIsaUJBQWlCO1lBTVcsZ0JBQWdCO1lBQXJDLG1CQUFtQjtZQUNQLG9CQUFvQjtZQVRoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gXCJwcmltZW5nL2R5bmFtaWNkaWFsb2dcIjtcclxuaW1wb3J0IHsgSnd0UGF5bG9hZCwgTG9jYWxpemVUb2tlblNlcnZpY2UgfSBmcm9tIFwiLi4vbG9jYWxpemUtdG9rZW4vbG9jYWxpemUudG9rZW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuIH0gZnJvbSBcIi4uL2xvY2FsaXplLXRva2VuL2xvY2FsaXplLnRva2VuXCI7XHJcbmltcG9ydCB7IElMb2dpbkRpYWxvZ0NvbmZpZyB9IGZyb20gXCIuL2xvY2FsaXplLWxvZ2luZGxnLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0eWxlczogW2BcclxuICAjbG9naW4tZGxnLXdyYXAge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBwYWRkaW5nOiAzMHB4O1xyXG4gIH1cclxuICBcclxuICAubG9naW4tZGxnLWVsbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWhlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICB9XHJcbiAgXHJcbiAgI2xvZ2luLWRsZy1oZWFkZXIgaDMge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXNpemU6IDAuOXJlbTtcclxuICAgIGNvbG9yOiBvcmFuZ2U7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gICNsb2dpbi1sb2dvIHtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2Fzc2V0cy9pbWFnZXMvbG9nby0zMDBweC5wbmdcIikgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgLnAtaW5wdXRncm91cCB7XHJcbiAgICBoZWlnaHQ6IDQ1cHg7XHJcbiAgfVxyXG4gIFxyXG4gICNsb2dpbi1kbGctY29udGVudCAucC1pbnB1dGdyb3VwIC5wLWlucHV0Z3JvdXAtYWRkb24ge1xyXG4gICAgaGVpZ2h0OiA0NXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTVweCAwIDAgMTVweDtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgLnAtaW5wdXRncm91cCAucC1pbnB1dGdyb3VwLWFkZG9uICoge1xyXG4gICAgZm9udC1zaXplOiAxcmVtO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgLnAtaW5wdXRncm91cCBpbnB1dCB7XHJcbiAgICBoZWlnaHQ6IDQ1cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwIDE1cHggMTVweCAwO1xyXG4gIH1cclxuICBcclxuICAjbG9naW4tZGxnLWNvbnRlbnQgYnV0dG9uIHtcclxuICAgIGhlaWdodDogNDVweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XHJcbiAgfVxyXG4gIFxyXG4gIC8qY2hlY2sgYW5pbWF0aW9uIGJsb2NrKi9cclxuICBcclxuICAuY2hlY2stYW5pbWF0aW9uLXdyYXAge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIwMHB4KTtcclxuICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xyXG4gIH1cclxuICBcclxuICAuY2hlY2stbWFpbi1jb250YWluZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZmxvdzogY29sdW1uO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuICBcclxuICAuY2hlY2stY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiA2LjI1cmVtO1xyXG4gICAgaGVpZ2h0OiA3LjVyZW07XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1mbG93OiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIH1cclxuICBcclxuICAuY2hlY2stY29udGFpbmVyIC5jaGVjay1iYWNrZ3JvdW5kIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxLjI1cmVtKTtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20gcmlnaHQsICM1ZGU1OTMsICM0MWQ2N2MpO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggNjVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpIGluc2V0LCAwcHggMHB4IDBweCA2NXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQ7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuODQpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYW5pbWF0aW9uOiBhbmltYXRlQ29udGFpbmVyIDAuNzVzIGVhc2Utb3V0IGZvcndhcmRzIDAuNzVzO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG4gIFxyXG4gIC5jaGVjay1jb250YWluZXIgLmNoZWNrLWJhY2tncm91bmQgc3ZnIHtcclxuICAgIHdpZHRoOiA2NSU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4yNXJlbSk7XHJcbiAgICBzdHJva2UtZGFzaGFycmF5OiA4MDtcclxuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiA4MDtcclxuICAgIGFuaW1hdGlvbjogYW5pbWF0ZUNoZWNrIDAuMzVzIGZvcndhcmRzIDEuMjVzIGVhc2Utb3V0O1xyXG4gICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIFxyXG4gIC5jaGVjay1jb250YWluZXIgLmNoZWNrLXNoYWRvdyB7XHJcbiAgICBib3R0b206IGNhbGMoLTE1JSAtIDVweCk7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNsb3Nlc3Qtc2lkZSwgcmdiYSg3MywgMjE4LCAxMzEsIDEpLCB0cmFuc3BhcmVudCk7XHJcbiAgICBhbmltYXRpb246IGFuaW1hdGVTaGFkb3cgMC43NXMgZWFzZS1vdXQgZm9yd2FyZHMgMC43NXM7XHJcbiAgfVxyXG4gIFxyXG4gIEBrZXlmcmFtZXMgYW5pbWF0ZUNvbnRhaW5lciB7XHJcbiAgICAwJSB7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XHJcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDY1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldCwgMHB4IDBweCAwcHggNjVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpIGluc2V0O1xyXG4gICAgfVxyXG4gIFxyXG4gICAgMjUlIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xyXG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCA2NXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDY1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldDtcclxuICAgIH1cclxuICBcclxuICAgIDQzLjc1JSB7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSk7XHJcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDQzLjMzNHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDY1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldDtcclxuICAgIH1cclxuICBcclxuICAgIDYyLjUlIHtcclxuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcclxuICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDIxLjY2N3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQ7XHJcbiAgICB9XHJcbiAgXHJcbiAgICA4MS4yNSUge1xyXG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSBpbnNldCwgMHB4IDBweCAwcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQ7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAxMDAlIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSkgaW5zZXQsIDBweCAwcHggMHB4IDBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpIGluc2V0O1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBAa2V5ZnJhbWVzIGFuaW1hdGVDaGVjayB7XHJcbiAgICBmcm9tIHtcclxuICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDgwO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgdG8ge1xyXG4gICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgQGtleWZyYW1lcyBhbmltYXRlU2hhZG93IHtcclxuICAgIDAlIHtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTUlO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgMjUlIHtcclxuICAgICAgb3BhY2l0eTogMC4yNTtcclxuICAgIH1cclxuICBcclxuICAgIDQzLjc1JSB7XHJcbiAgICAgIHdpZHRoOiA0MCU7XHJcbiAgICAgIGhlaWdodDogNyU7XHJcbiAgICAgIG9wYWNpdHk6IDAuMzU7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAxMDAlIHtcclxuICAgICAgd2lkdGg6IDg1JTtcclxuICAgICAgaGVpZ2h0OiAxNSU7XHJcbiAgICAgIG9wYWNpdHk6IDAuMjU7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNsb2dpbi1kbGctd3JhcCAubG9hZGVyLXdyYXAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDoxMDAlO1xyXG4gICAgd2lkdGg6MTAwJTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB6LWluZGV4OiAxMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmNDI7XHJcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMXB4KTtcclxuICB9XHJcblxyXG4gICNsb2dpbi1kbGctd3JhcCAubG9naW4tZGxnLWxvYWRlciB7XHJcbiAgICBib3JkZXI6IDE1cHggc29saWQgI2U3ZTdlNztcclxuICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgIzUyZGJhMTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIHdpZHRoOiAxMDBweDtcclxuICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICBhbmltYXRpb246IHNwaW5sb2FkZXIgMnMgbGluZWFyIGluZmluaXRlO1xyXG4gIH1cclxuXHJcbiAgI2xvZ2luLWRsZy13cmFwIC5sb2FkZXItd3JhcDo6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB3aWR0aDogNzBweDtcclxuICAgIGhlaWdodDogNzBweDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIGJvcmRlcjogMTVweCBzb2xpZCAjZTdlN2U3MDA7XHJcbiAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICM1MmRiYTFjOTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGFuaW1hdGlvbjogc3BpbmxvYWRlciAuNzVzIGxpbmVhciBpbmZpbml0ZTtcclxuICB9XHJcblxyXG4gIEBrZXlmcmFtZXMgc3BpbmxvYWRlciB7XHJcbiAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XHJcbiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxyXG4gIH1cclxuICBgXSxcclxuICB0ZW1wbGF0ZTogYDxwLXRvYXN0IGtleT1cIiRsb2dpbi1kbGdcIiBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+XHJcbiAgPGRpdiBpZD1cImxvZ2luLWRsZy13cmFwXCI+XHJcbiAgICA8ZGl2IGlkPVwibG9naW4tZGxnLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGlkPVwibG9naW4tbG9nb1wiIGNsYXNzPVwicC1tYi0yXCI+PC9kaXY+XHJcbiAgICAgIDxoMyAqbmdJZj1cIiFzdWNjZXNzXCI+WW91ciBzZXNzaW9uIGlzIGV4cGlyZWQhIDxicj4gUGxlYXNlIGxvZ2luIGFnYWluIHRvIGNvbnRpbnVlLjwvaDM+XHJcbiAgICAgIDxoMyAqbmdJZj1cInN1Y2Nlc3NcIiBzdHlsZT1cImNvbG9yOmdyZWVuICFpbXBvcnRhbnQ7XCI+WW91IGhhdmVkIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4uPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBpZD1cImxvZ2luLWRsZy1jb250ZW50XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3VjY2Vzc1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJsb2FkZXItd3JhcFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWRsZy1sb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tZGxnLWVsbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRncm91cC1hZGRvblwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtcm91bmRcIj5wZXJzb248L2k+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGRpc2FibGVkIHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlVzZXJuYW1lXCIgW3ZhbHVlXT1cImRlY29kZVRva2VuPy5lbWFpbFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tZGxnLWVsbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRncm91cC1hZGRvblwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtcm91bmRcIj5sb2NrPC9pPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChrZXlkb3duLmVudGVyKT1cImNsaWNrTG9naW4oKVwiIHBJbnB1dFRleHQgdHlwZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiIFsobmdNb2RlbCldPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgIGF1dG9mb2N1cyAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWRsZy1lbG1cIj5cclxuICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIkxvZ2luXCIgKGNsaWNrKT1cImNsaWNrTG9naW4oKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcGFzc3dvcmQgfHwgbG9hZGluZ1wiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1kbGctZWxtXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjt1c2VyLXNlbGVjdDogbm9uZTtcIj5cclxuICAgICAgICAgIDxzcGFuPk5vLCBJIHdhbnQgdG8gbG9naW4gd2l0aCBhbm90aGVyIHVzZXIuPC9zcGFuPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIkxvZ291dFwiIChjbGljayk9XCJjbGlja0xvZ291dCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VjY2Vzc1wiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjM1cHg7XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWFuaW1hdGlvbi13cmFwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2stbWFpbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVjay1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgNjUgNTFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDI1TDI3LjMwNzcgNDRMNTguNSA3XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+YCxcclxuICBzZWxlY3RvcjogXCJhcHAtbG9jYWxpemUtbG9naW5kbGdcIixcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplTG9naW5kbGdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IG1lc3NhZ2VLZXkgPSBcIiRsb2dpbi1kbGdcIjtcclxuICBwYXNzd29yZDogYW55O1xyXG4gIHJlYWRvbmx5IGRlY29kZVRva2VuOiBKd3RQYXlsb2FkIHwgbnVsbDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgc3VjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gTG9jYWxpemVUb2tlbi5jb25maWc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dpbkNvbmZpZzogSUxvZ2luRGlhbG9nQ29uZmlnXHJcblxyXG4gIHByaXZhdGUgbG9nb3V0PzogKCkgPT4gYW55XHJcbiAgcHJpdmF0ZSBsb2dpblVybD86IHN0cmluZztcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkdDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRsZ1JlZjogRHluYW1pY0RpYWxvZ1JlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGxnQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2tlblNlcnZpY2U6IExvY2FsaXplVG9rZW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgICB0aGlzLmRlY29kZVRva2VuID0gdGhpcy50b2tlblNlcnZpY2UuZGVjb2RlUmVmcmVzaFRva2VuO1xyXG4gICAgdGhpcy5sb2dpbkNvbmZpZyA9IHRoaXMuZGxnQ29uZmlnLmRhdGEubG9naW5Db25maWc7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGxnQ29uZmlnLmNsb3NhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ291dCA9IHRoaXMubG9naW5Db25maWcubG9nb3V0RnVuYztcclxuICAgIHRoaXMubG9naW5VcmwgPSB0aGlzLmxvZ2luQ29uZmlnLmxvZ2luVXJsXHJcblxyXG4gICAgaWYgKCF0aGlzLmRlY29kZVRva2VuKSB7XHJcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXCJlcnJvclwiLCBcIlRva2VuIGlzIGludmFsaWRcIik7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2dvdXQ/LigpLCAyMDAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2R0LmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNsaWNrTG9naW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXCJlcnJvclwiLCBcIlBhc3N3b3JkIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVyc1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBsb2dpblJlcyA9IGF3YWl0IHRoaXMubG9naW4oKTtcclxuICAgIGlmICghbG9naW5SZXM/LnN0YXR1cykge1xyXG4gICAgICB0aGlzLnNob3dNZXNzYWdlKFwiZXJyb3JcIiwgbG9naW5SZXMubWVzc2FnZSA/PyBcIkFuIGVycm9yIG9jY3VycmVkXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b2tlblNlcnZpY2UuYWNjZXNzVG9rZW4gPSBsb2dpblJlcy50b2tlbnMuYWNjZXNzVG9rZW47XHJcbiAgICBjb25zdCBjb29raWVPcHRpb25zID0geyBleHBpcmVzOiB0aGlzLmxvZ2luQ29uZmlnLmV4cGlyZSA/PyA1IH1cclxuICAgIExvY2FsaXplVG9rZW4uc3RvcmFnZS5zZXQodGhpcy5jb25maWcucmVmcmVzaFRva2VuTmFtZSEsIGxvZ2luUmVzLnRva2Vucy5yZWZyZXNoVG9rZW4sIGNvb2tpZU9wdGlvbnMpO1xyXG4gICAgdGhpcy5zdWNjZXNzID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kbGdSZWYuY2xvc2UodHJ1ZSksIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2dpbigpIHtcclxuICAgIGlmICghdGhpcy5sb2dpblVybCB8fCAhdGhpcy5sb2dpblVybC50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXCJlcnJvclwiLCBcIkxvZ2luIHVybCBpcyByZXF1aXJlZFwiKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9naW4gdXJsIGlzIHJlcXVpcmVkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5sb2dpblVybCEsIHsgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQudHJpbSgpIH0sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoeyBuZXh0OiByZXNvbHZlLCBlcnJvcjogcmVqZWN0IH0pKTtcclxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xyXG4gICAgICB0aGlzLnNob3dNZXNzYWdlKFwiZXJyb3JcIiwgZS5tZXNzYWdlKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhlYWRlcnMoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBbTG9jYWxpemVUb2tlbi5odHRwSGVhZGVycy5YX1JFRlJFU0hfVE9LRU5dOiBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZ2V0KHRoaXMuY29uZmlnLnJlZnJlc2hUb2tlbk5hbWUhKSA/PyBcIlwiLFxyXG4gICAgICBbTG9jYWxpemVUb2tlbi5odHRwSGVhZGVycy5YX1RFTkFOVF06IExvY2FsaXplVG9rZW4uc3RvcmFnZS5nZXQodGhpcy5jb25maWcudGVuYW50VG9rZW5OYW1lISkgPz8gXCJcIixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWYWxpZFBhc3N3b3JkKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZCAmJiB0aGlzLnBhc3N3b3JkLnRyaW0oKS5sZW5ndGggPj0gNiAmJiB0aGlzLnBhc3N3b3JkLnRyaW0oKS5sZW5ndGggPD0gMTY7XHJcbiAgfVxyXG5cclxuICBjbGlja0xvZ291dCA9ICgpID0+IHRoaXMubG9nb3V0Py4oKTtcclxuXHJcbiAgcHJpdmF0ZSBzaG93TWVzc2FnZShzZXZlcml0eTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiB0aGlzLm1lc3NhZ2VLZXksIHNldmVyaXR5LCBzdW1tYXJ5IH0pO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -410,7 +410,6 @@ class LocalizeLogindlgComponent {
410
410
  this.success = false;
411
411
  this.config = LocalizeToken.config;
412
412
  this.clickLogout = () => { var _a; return (_a = this.logout) === null || _a === void 0 ? void 0 : _a.call(this); };
413
- this.showMessage = (severity, summary) => this.messageService.add({ key: this.messageKey, severity, summary });
414
413
  this.decodeToken = this.tokenService.decodeRefreshToken;
415
414
  this.loginConfig = this.dlgConfig.data.loginConfig;
416
415
  }
@@ -437,7 +436,6 @@ class LocalizeLogindlgComponent {
437
436
  const loginRes = yield this.login();
438
437
  if (!(loginRes === null || loginRes === void 0 ? void 0 : loginRes.status)) {
439
438
  this.showMessage("error", (_a = loginRes.message) !== null && _a !== void 0 ? _a : "An error occurred");
440
- this.loading = false;
441
439
  return;
442
440
  }
443
441
  this.tokenService.accessToken = loginRes.tokens.accessToken;
@@ -453,8 +451,14 @@ class LocalizeLogindlgComponent {
453
451
  this.showMessage("error", "Login url is required");
454
452
  throw new Error("Login url is required");
455
453
  }
456
- return yield new Promise((resolve, reject) => this.httpClient.post(this.loginUrl, { password: this.password.trim() }, { headers: this.getHeaders() })
457
- .subscribe({ next: resolve, error: reject }));
454
+ try {
455
+ return yield new Promise((resolve, reject) => this.httpClient.post(this.loginUrl, { password: this.password.trim() }, { headers: this.getHeaders() })
456
+ .subscribe({ next: resolve, error: reject }));
457
+ }
458
+ catch (e) {
459
+ this.showMessage("error", e.message);
460
+ return null;
461
+ }
458
462
  });
459
463
  }
460
464
  getHeaders() {
@@ -465,8 +469,13 @@ class LocalizeLogindlgComponent {
465
469
  };
466
470
  }
467
471
  get isValidPassword() {
472
+ this.loading = false;
468
473
  return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;
469
474
  }
475
+ showMessage(severity, summary) {
476
+ this.messageService.add({ key: this.messageKey, severity, summary });
477
+ this.loading = false;
478
+ }
470
479
  }
471
480
  LocalizeLogindlgComponent.decorators = [
472
481
  { type: Component, args: [{
@@ -1 +1 @@
1
- {"version":3,"file":"sambath999-localize-token.js","sources":["../../src/localize-token/localize.token.storage.ts","../../src/localize-token/localize.token.ts","../../src/localize-token/localize.token.service.ts","../../src/localize-token/localize.api.service.ts","../../src/localize-token/localize.token.module.ts","../../src/localize-logindlg/localize-logindlg.component.ts","../../src/localize-logindlg/localize-logindlg.service.ts","../../src/localize-logindlg/localize-logindlg.module.ts","../../src/sambath999-localize-token.ts"],"sourcesContent":["import { extractMainDomain } from \"./localize.token\";\r\n\r\nexport interface ICookieOptions {\r\n /**\r\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\r\n */\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n samesite?: \"strict\" | \"lax\" | \"none\";\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 LocalizeTokenStorage {\r\n\r\n private get getDefaultOptions(): ICookieOptions {\r\n const mainDomain = extractMainDomain(window.location.hostname);\r\n return {\r\n path: '/',\r\n domain: mainDomain,\r\n secure: true,\r\n // samesite: SameSiteType.strict,\r\n expires: 1\r\n }\r\n }\r\n\r\n private readonly defaultOptions: ICookieOptions;\r\n constructor(_defaultOptions?: ICookieOptions) {\r\n this.defaultOptions = _defaultOptions ?? this.getDefaultOptions;\r\n }\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 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 set(name: string, value: string, options?: ICookieOptions) {\r\n options ??= this.defaultOptions;\r\n const { expires, path, domain, secure, samesite } = { ...this.defaultOptions, ...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","import { LocalizeTokenStorage } from \"./localize.token.storage\";\r\nexport interface ILocalizeTokenConfig {\r\n /**\r\n * The main domain of the application to set the cookies to be available for cross application with subdomains.\r\n * \r\n * Default is location.hostname (current domain) and automatically set extracted main domain if it is subdomain.\r\n */\r\n mainDomain?: string;\r\n authTokenName?: string;\r\n tenantTokenName?: string;\r\n refreshTokenName?: string;\r\n /**\r\n * Flag to determine if the tenant token is required.\r\n */\r\n needTenant: boolean;\r\n isProduction: boolean;\r\n revokeTokenUrl: string;\r\n}\r\n\r\nexport class LocalizeToken {\r\n\r\n static init(config: ILocalizeTokenConfig) {\r\n LocalizeToken.config = { ...LocalizeToken.config, ...config };\r\n }\r\n\r\n static config: ILocalizeTokenConfig = {\r\n mainDomain: extractMainDomain(),\r\n authTokenName: 'auth-token',\r\n tenantTokenName: '_lze_tnt_01',\r\n refreshTokenName: '_lze_rftkp_',\r\n needTenant: false,\r\n isProduction: false,\r\n revokeTokenUrl: ''\r\n }\r\n\r\n static readonly storage = new LocalizeTokenStorage();\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\nexport 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}\r\n\r\nexport function extractMainDomain(subdomain?: string): string {\r\n subdomain ??= window.location.hostname;\r\n const parts = subdomain.split('.');\r\n return parts.length > 2 ? parts.slice(-2).join('.') : subdomain;\r\n}","import { Injectable } from '@angular/core';\r\nimport { ILocalizeTokenConfig, 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 private readonly config: ILocalizeTokenConfig\r\n constructor() {\r\n if (!LocalizeToken.config.authTokenName || !LocalizeToken.config.refreshTokenName || !LocalizeToken.config.tenantTokenName) {\r\n throw new Error('authTokenName, refreshTokenName, and tenantTokenName must be defined in LocalizeToken.config')\r\n }\r\n this.config = LocalizeToken.config;\r\n }\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(this.config.authTokenName!);\r\n }\r\n\r\n get refreshToken() { return LocalizeToken.storage.get(this.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(this.config.tenantTokenName!) }\r\n\r\n private storageGet() {\r\n try {\r\n const encoded = LocalizeToken.storage.get(this.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(this.config.authTokenName!, base64);\r\n }\r\n\r\n tokensValid() {\r\n return this.refreshToken?.length && (!this.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(this.config.refreshTokenName!);\r\n if (!token) return null;\r\n return this.decodeToken(token);\r\n }\r\n\r\n}\r\n","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 * The time to wait for each request to complete in milliseconds.\r\n * Be careful with this option, it may cause the application to hang if the request is not completed.\r\n */\r\n waitEachRequest?: {\r\n milliseconds: number\r\n }\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 if (this.apiConfigs.waitEachRequest?.milliseconds) {\r\n await waitFor(this.apiConfigs.waitEachRequest.milliseconds, this.isRequesting);\r\n }\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","import { NgModule } from '@angular/core';\r\nimport { LocalizeTokenService } from './localize.token.service';\r\nimport { LocalizeApiService } from './localize.api.service';\r\n\r\n@NgModule({\r\n providers: [\r\n LocalizeTokenService,\r\n LocalizeApiService\r\n ],\r\n})\r\nexport class LocalizeTokenModule { }","import { HttpClient } from \"@angular/common/http\";\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { MessageService } from \"primeng/api\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { JwtPayload, LocalizeTokenService } from \"../localize-token/localize.token.service\";\r\nimport { LocalizeToken } from \"../localize-token/localize.token\";\r\nimport { ILoginDialogConfig } from \"./localize-logindlg.service\";\r\n\r\n@Component({\r\n styles: [`\r\n #login-dlg-wrap {\r\n width: 100%;\r\n max-width: 400px;\r\n margin: 0 auto;\r\n padding: 30px;\r\n }\r\n \r\n .login-dlg-elm {\r\n margin-top: 1rem;\r\n }\r\n \r\n #login-dlg-header {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n \r\n #login-dlg-header h3 {\r\n font-weight: bold;\r\n font-size: 0.9rem;\r\n color: orange;\r\n text-align: center;\r\n }\r\n \r\n #login-logo {\r\n height: 40px;\r\n width: 40px;\r\n background: url(\"/assets/images/logo-300px.png\") no-repeat;\r\n background-size: contain;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup {\r\n height: 45px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon {\r\n height: 45px;\r\n border-radius: 15px 0 0 15px;\r\n width: 50px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon * {\r\n font-size: 1rem;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup input {\r\n height: 45px;\r\n border-radius: 0 15px 15px 0;\r\n }\r\n \r\n #login-dlg-content button {\r\n height: 45px;\r\n border-radius: 15px;\r\n }\r\n \r\n /*check animation block*/\r\n \r\n .check-animation-wrap {\r\n top: 0;\r\n left: 0;\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: calc(100% - 200px);\r\n min-height: 400px;\r\n }\r\n \r\n .check-main-container {\r\n width: 100%;\r\n height: 100vh;\r\n display: flex;\r\n flex-flow: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n \r\n .check-container {\r\n width: 6.25rem;\r\n height: 7.5rem;\r\n display: flex;\r\n flex-flow: column;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n \r\n .check-container .check-background {\r\n width: 100%;\r\n height: calc(100% - 1.25rem);\r\n background: linear-gradient(to bottom right, #5de593, #41d67c);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n transform: scale(0.84);\r\n border-radius: 50%;\r\n animation: animateContainer 0.75s ease-out forwards 0.75s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0;\r\n }\r\n \r\n .check-container .check-background svg {\r\n width: 65%;\r\n transform: translateY(0.25rem);\r\n stroke-dasharray: 80;\r\n stroke-dashoffset: 80;\r\n animation: animateCheck 0.35s forwards 1.25s ease-out;\r\n min-width: auto !important;\r\n }\r\n \r\n .check-container .check-shadow {\r\n bottom: calc(-15% - 5px);\r\n left: 0;\r\n border-radius: 50%;\r\n background: radial-gradient(closest-side, rgba(73, 218, 131, 1), transparent);\r\n animation: animateShadow 0.75s ease-out forwards 0.75s;\r\n }\r\n \r\n @keyframes animateContainer {\r\n 0% {\r\n opacity: 0;\r\n transform: scale(0);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 25% {\r\n opacity: 1;\r\n transform: scale(0.9);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 43.75% {\r\n transform: scale(1.15);\r\n box-shadow: 0px 0px 0px 43.334px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 62.5% {\r\n transform: scale(1);\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 21.667px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 81.25% {\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 100% {\r\n opacity: 1;\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n }\r\n \r\n @keyframes animateCheck {\r\n from {\r\n stroke-dashoffset: 80;\r\n }\r\n \r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n }\r\n \r\n @keyframes animateShadow {\r\n 0% {\r\n opacity: 0;\r\n width: 100%;\r\n height: 15%;\r\n }\r\n \r\n 25% {\r\n opacity: 0.25;\r\n }\r\n \r\n 43.75% {\r\n width: 40%;\r\n height: 7%;\r\n opacity: 0.35;\r\n }\r\n \r\n 100% {\r\n width: 85%;\r\n height: 15%;\r\n opacity: 0.25;\r\n }\r\n }\r\n #login-dlg-wrap .loader-wrap {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height:100%;\r\n width:100%;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 100;\r\n background: #ffffff42;\r\n backdrop-filter: blur(1px);\r\n }\r\n\r\n #login-dlg-wrap .login-dlg-loader {\r\n border: 15px solid #e7e7e7;\r\n border-top: 15px solid #52dba1;\r\n border-radius: 50%;\r\n width: 100px;\r\n height: 100px;\r\n animation: spinloader 2s linear infinite;\r\n }\r\n\r\n #login-dlg-wrap .loader-wrap::before {\r\n content: \"\";\r\n position: absolute;\r\n width: 70px;\r\n height: 70px;\r\n transform: translate(-50%, -50%);\r\n z-index: 1;\r\n border: 15px solid #e7e7e700;\r\n border-top: 15px solid #52dba1c9;\r\n border-radius: 50%;\r\n animation: spinloader .75s linear infinite;\r\n }\r\n\r\n @keyframes spinloader {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n `],\r\n template: `<p-toast key=\"$login-dlg\" position=\"top-center\"></p-toast>\r\n <div id=\"login-dlg-wrap\">\r\n <div id=\"login-dlg-header\">\r\n <div id=\"login-logo\" class=\"p-mb-2\"></div>\r\n <h3 *ngIf=\"!success\">Your session is expired! <br> Please login again to continue.</h3>\r\n <h3 *ngIf=\"success\" style=\"color:green !important;\">You haved successfully logged in.</h3>\r\n </div>\r\n <div id=\"login-dlg-content\">\r\n <ng-container *ngIf=\"!success\">\r\n <div *ngIf=\"loading\" class=\"loader-wrap\">\r\n <div class=\"login-dlg-loader\"></div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">person</i>\r\n </span>\r\n <input disabled pInputText type=\"text\" placeholder=\"Username\" [value]=\"decodeToken?.email\" />\r\n </div>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">lock</i>\r\n </span>\r\n <input [disabled]=\"loading\" (keydown.enter)=\"clickLogin()\" pInputText type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\"\r\n autofocus />\r\n </div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <button style=\"width: 100%;\" pButton type=\"button\" label=\"Login\" (click)=\"clickLogin()\"\r\n [disabled]=\"!password || loading\"></button>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\" style=\"display:flex;align-items: center;user-select: none;\">\r\n <span>No, I want to login with another user.</span>\r\n <button class=\"p-button-text\" pButton type=\"button\" label=\"Logout\" (click)=\"clickLogout()\"></button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"success\">\r\n <div style=\"margin-top:35px;\"></div>\r\n <div class=\"check-animation-wrap\">\r\n <div class=\"check-main-container\">\r\n <div class=\"check-container\">\r\n <div class=\"check-background\">\r\n <svg viewBox=\"0 0 65 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M7 25L27.3077 44L58.5 7\" stroke=\"white\" stroke-width=\"13\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>`,\r\n selector: \"app-localize-logindlg\",\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class LocalizeLogindlgComponent implements OnInit {\r\n readonly messageKey = \"$login-dlg\";\r\n password: any;\r\n readonly decodeToken: JwtPayload | null;\r\n loading = false;\r\n success = false;\r\n private readonly config = LocalizeToken.config;\r\n private readonly loginConfig: ILoginDialogConfig\r\n\r\n private logout?: () => any\r\n private loginUrl?: string;\r\n\r\n\r\n constructor(\r\n private readonly messageService: MessageService,\r\n private readonly cdt: ChangeDetectorRef,\r\n private readonly dlgRef: DynamicDialogRef,\r\n private readonly dlgConfig: DynamicDialogConfig,\r\n private readonly tokenService: LocalizeTokenService,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n this.decodeToken = this.tokenService.decodeRefreshToken;\r\n this.loginConfig = this.dlgConfig.data.loginConfig;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.dlgConfig.closable = false;\r\n this.logout = this.loginConfig.logoutFunc;\r\n this.loginUrl = this.loginConfig.loginUrl\r\n\r\n if (!this.decodeToken) {\r\n this.showMessage(\"error\", \"Token is invalid\");\r\n setTimeout(() => this.logout?.(), 2000);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdt.detectChanges();\r\n }\r\n\r\n async clickLogin() {\r\n if (!this.isValidPassword) {\r\n this.showMessage(\"error\", \"Password is required and must be at least 6 characters\");\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n const loginRes = await this.login();\r\n if (!loginRes?.status) {\r\n this.showMessage(\"error\", loginRes.message ?? \"An error occurred\");\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n this.tokenService.accessToken = loginRes.tokens.accessToken;\r\n const cookieOptions = { expires: this.loginConfig.expire ?? 5 }\r\n LocalizeToken.storage.set(this.config.refreshTokenName!, loginRes.tokens.refreshToken, cookieOptions);\r\n this.success = true;\r\n setTimeout(() => this.dlgRef.close(true), 2000);\r\n }\r\n\r\n private async login() {\r\n if (!this.loginUrl || !this.loginUrl.trim().length) {\r\n this.showMessage(\"error\", \"Login url is required\");\r\n throw new Error(\"Login url is required\");\r\n }\r\n\r\n return await new Promise<any>((resolve, reject) =>\r\n this.httpClient.post(this.loginUrl!, { password: this.password.trim() }, { headers: this.getHeaders() })\r\n .subscribe({ next: resolve, error: reject })\r\n );\r\n }\r\n\r\n private getHeaders() {\r\n return {\r\n [LocalizeToken.httpHeaders.X_REFRESH_TOKEN]: LocalizeToken.storage.get(this.config.refreshTokenName!) ?? \"\",\r\n [LocalizeToken.httpHeaders.X_TENANT]: LocalizeToken.storage.get(this.config.tenantTokenName!) ?? \"\",\r\n };\r\n }\r\n\r\n get isValidPassword(): boolean {\r\n return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;\r\n }\r\n\r\n clickLogout = () => this.logout?.();\r\n\r\n private showMessage = (severity: string, summary: string) =>\r\n this.messageService.add({ key: this.messageKey, severity, summary });\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\nimport { DialogService, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { LocalizeLogindlgComponent } from './localize-logindlg.component';\nexport interface ILoginDialogConfig {\n loginUrl?: string;\n logoutUrl?: string;\n logoutFunc?: () => void;\n /**\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\n */\n expire?: number;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizeLogindlgService {\n\n constructor(private readonly injector: Injector) { }\n\n async openLoginDialog(loginConfig: ILoginDialogConfig, config?: DynamicDialogConfig) {\n config ??= {\n header: 'Login',\n height: '650px',\n style: { 'max-width': '400px', width: '100%', 'height': '650px' },\n }\n config.data = { ...config.data || {}, ...{ loginConfig } };\n\n const dialogService = this.injector.get(DialogService);\n const dialog = dialogService.open(LocalizeLogindlgComponent, config);\n\n await new Promise<void>((resolve) =>\n dialog.onClose.subscribe(res => {\n if (res) {\n resolve();\n }\n }));\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LocalizeLogindlgComponent } from \"./localize-logindlg.component\";\nimport { ToastModule } from \"primeng/toast\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ButtonModule } from \"primeng/button\";\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { LocalizeLogindlgService } from \"./localize-logindlg.service\";\n\n@NgModule({\n declarations: [LocalizeLogindlgComponent],\n exports: [LocalizeLogindlgComponent],\n imports: [\n CommonModule,\n ToastModule,\n InputTextModule,\n BrowserModule,\n FormsModule,\n ButtonModule,\n ],\n providers: [LocalizeLogindlgService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class LocalizeLogindlgModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sambath999-localize-token.js","sources":["../../src/localize-token/localize.token.storage.ts","../../src/localize-token/localize.token.ts","../../src/localize-token/localize.token.service.ts","../../src/localize-token/localize.api.service.ts","../../src/localize-token/localize.token.module.ts","../../src/localize-logindlg/localize-logindlg.component.ts","../../src/localize-logindlg/localize-logindlg.service.ts","../../src/localize-logindlg/localize-logindlg.module.ts","../../src/sambath999-localize-token.ts"],"sourcesContent":["import { extractMainDomain } from \"./localize.token\";\r\n\r\nexport interface ICookieOptions {\r\n /**\r\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\r\n */\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n samesite?: \"strict\" | \"lax\" | \"none\";\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 LocalizeTokenStorage {\r\n\r\n private get getDefaultOptions(): ICookieOptions {\r\n const mainDomain = extractMainDomain(window.location.hostname);\r\n return {\r\n path: '/',\r\n domain: mainDomain,\r\n secure: true,\r\n // samesite: SameSiteType.strict,\r\n expires: 1\r\n }\r\n }\r\n\r\n private readonly defaultOptions: ICookieOptions;\r\n constructor(_defaultOptions?: ICookieOptions) {\r\n this.defaultOptions = _defaultOptions ?? this.getDefaultOptions;\r\n }\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 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 set(name: string, value: string, options?: ICookieOptions) {\r\n options ??= this.defaultOptions;\r\n const { expires, path, domain, secure, samesite } = { ...this.defaultOptions, ...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","import { LocalizeTokenStorage } from \"./localize.token.storage\";\r\nexport interface ILocalizeTokenConfig {\r\n /**\r\n * The main domain of the application to set the cookies to be available for cross application with subdomains.\r\n * \r\n * Default is location.hostname (current domain) and automatically set extracted main domain if it is subdomain.\r\n */\r\n mainDomain?: string;\r\n authTokenName?: string;\r\n tenantTokenName?: string;\r\n refreshTokenName?: string;\r\n /**\r\n * Flag to determine if the tenant token is required.\r\n */\r\n needTenant: boolean;\r\n isProduction: boolean;\r\n revokeTokenUrl: string;\r\n}\r\n\r\nexport class LocalizeToken {\r\n\r\n static init(config: ILocalizeTokenConfig) {\r\n LocalizeToken.config = { ...LocalizeToken.config, ...config };\r\n }\r\n\r\n static config: ILocalizeTokenConfig = {\r\n mainDomain: extractMainDomain(),\r\n authTokenName: 'auth-token',\r\n tenantTokenName: '_lze_tnt_01',\r\n refreshTokenName: '_lze_rftkp_',\r\n needTenant: false,\r\n isProduction: false,\r\n revokeTokenUrl: ''\r\n }\r\n\r\n static readonly storage = new LocalizeTokenStorage();\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\nexport 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}\r\n\r\nexport function extractMainDomain(subdomain?: string): string {\r\n subdomain ??= window.location.hostname;\r\n const parts = subdomain.split('.');\r\n return parts.length > 2 ? parts.slice(-2).join('.') : subdomain;\r\n}","import { Injectable } from '@angular/core';\r\nimport { ILocalizeTokenConfig, 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 private readonly config: ILocalizeTokenConfig\r\n constructor() {\r\n if (!LocalizeToken.config.authTokenName || !LocalizeToken.config.refreshTokenName || !LocalizeToken.config.tenantTokenName) {\r\n throw new Error('authTokenName, refreshTokenName, and tenantTokenName must be defined in LocalizeToken.config')\r\n }\r\n this.config = LocalizeToken.config;\r\n }\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(this.config.authTokenName!);\r\n }\r\n\r\n get refreshToken() { return LocalizeToken.storage.get(this.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(this.config.tenantTokenName!) }\r\n\r\n private storageGet() {\r\n try {\r\n const encoded = LocalizeToken.storage.get(this.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(this.config.authTokenName!, base64);\r\n }\r\n\r\n tokensValid() {\r\n return this.refreshToken?.length && (!this.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(this.config.refreshTokenName!);\r\n if (!token) return null;\r\n return this.decodeToken(token);\r\n }\r\n\r\n}\r\n","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 * The time to wait for each request to complete in milliseconds.\r\n * Be careful with this option, it may cause the application to hang if the request is not completed.\r\n */\r\n waitEachRequest?: {\r\n milliseconds: number\r\n }\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 if (this.apiConfigs.waitEachRequest?.milliseconds) {\r\n await waitFor(this.apiConfigs.waitEachRequest.milliseconds, this.isRequesting);\r\n }\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","import { NgModule } from '@angular/core';\r\nimport { LocalizeTokenService } from './localize.token.service';\r\nimport { LocalizeApiService } from './localize.api.service';\r\n\r\n@NgModule({\r\n providers: [\r\n LocalizeTokenService,\r\n LocalizeApiService\r\n ],\r\n})\r\nexport class LocalizeTokenModule { }","import { HttpClient } from \"@angular/common/http\";\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { MessageService } from \"primeng/api\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { JwtPayload, LocalizeTokenService } from \"../localize-token/localize.token.service\";\r\nimport { LocalizeToken } from \"../localize-token/localize.token\";\r\nimport { ILoginDialogConfig } from \"./localize-logindlg.service\";\r\n\r\n@Component({\r\n styles: [`\r\n #login-dlg-wrap {\r\n width: 100%;\r\n max-width: 400px;\r\n margin: 0 auto;\r\n padding: 30px;\r\n }\r\n \r\n .login-dlg-elm {\r\n margin-top: 1rem;\r\n }\r\n \r\n #login-dlg-header {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n \r\n #login-dlg-header h3 {\r\n font-weight: bold;\r\n font-size: 0.9rem;\r\n color: orange;\r\n text-align: center;\r\n }\r\n \r\n #login-logo {\r\n height: 40px;\r\n width: 40px;\r\n background: url(\"/assets/images/logo-300px.png\") no-repeat;\r\n background-size: contain;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup {\r\n height: 45px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon {\r\n height: 45px;\r\n border-radius: 15px 0 0 15px;\r\n width: 50px;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup .p-inputgroup-addon * {\r\n font-size: 1rem;\r\n }\r\n \r\n #login-dlg-content .p-inputgroup input {\r\n height: 45px;\r\n border-radius: 0 15px 15px 0;\r\n }\r\n \r\n #login-dlg-content button {\r\n height: 45px;\r\n border-radius: 15px;\r\n }\r\n \r\n /*check animation block*/\r\n \r\n .check-animation-wrap {\r\n top: 0;\r\n left: 0;\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: calc(100% - 200px);\r\n min-height: 400px;\r\n }\r\n \r\n .check-main-container {\r\n width: 100%;\r\n height: 100vh;\r\n display: flex;\r\n flex-flow: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n \r\n .check-container {\r\n width: 6.25rem;\r\n height: 7.5rem;\r\n display: flex;\r\n flex-flow: column;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n \r\n .check-container .check-background {\r\n width: 100%;\r\n height: calc(100% - 1.25rem);\r\n background: linear-gradient(to bottom right, #5de593, #41d67c);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n transform: scale(0.84);\r\n border-radius: 50%;\r\n animation: animateContainer 0.75s ease-out forwards 0.75s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0;\r\n }\r\n \r\n .check-container .check-background svg {\r\n width: 65%;\r\n transform: translateY(0.25rem);\r\n stroke-dasharray: 80;\r\n stroke-dashoffset: 80;\r\n animation: animateCheck 0.35s forwards 1.25s ease-out;\r\n min-width: auto !important;\r\n }\r\n \r\n .check-container .check-shadow {\r\n bottom: calc(-15% - 5px);\r\n left: 0;\r\n border-radius: 50%;\r\n background: radial-gradient(closest-side, rgba(73, 218, 131, 1), transparent);\r\n animation: animateShadow 0.75s ease-out forwards 0.75s;\r\n }\r\n \r\n @keyframes animateContainer {\r\n 0% {\r\n opacity: 0;\r\n transform: scale(0);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 25% {\r\n opacity: 1;\r\n transform: scale(0.9);\r\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 43.75% {\r\n transform: scale(1.15);\r\n box-shadow: 0px 0px 0px 43.334px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 62.5% {\r\n transform: scale(1);\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 21.667px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 81.25% {\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n \r\n 100% {\r\n opacity: 1;\r\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\r\n }\r\n }\r\n \r\n @keyframes animateCheck {\r\n from {\r\n stroke-dashoffset: 80;\r\n }\r\n \r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n }\r\n \r\n @keyframes animateShadow {\r\n 0% {\r\n opacity: 0;\r\n width: 100%;\r\n height: 15%;\r\n }\r\n \r\n 25% {\r\n opacity: 0.25;\r\n }\r\n \r\n 43.75% {\r\n width: 40%;\r\n height: 7%;\r\n opacity: 0.35;\r\n }\r\n \r\n 100% {\r\n width: 85%;\r\n height: 15%;\r\n opacity: 0.25;\r\n }\r\n }\r\n #login-dlg-wrap .loader-wrap {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height:100%;\r\n width:100%;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 100;\r\n background: #ffffff42;\r\n backdrop-filter: blur(1px);\r\n }\r\n\r\n #login-dlg-wrap .login-dlg-loader {\r\n border: 15px solid #e7e7e7;\r\n border-top: 15px solid #52dba1;\r\n border-radius: 50%;\r\n width: 100px;\r\n height: 100px;\r\n animation: spinloader 2s linear infinite;\r\n }\r\n\r\n #login-dlg-wrap .loader-wrap::before {\r\n content: \"\";\r\n position: absolute;\r\n width: 70px;\r\n height: 70px;\r\n transform: translate(-50%, -50%);\r\n z-index: 1;\r\n border: 15px solid #e7e7e700;\r\n border-top: 15px solid #52dba1c9;\r\n border-radius: 50%;\r\n animation: spinloader .75s linear infinite;\r\n }\r\n\r\n @keyframes spinloader {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n `],\r\n template: `<p-toast key=\"$login-dlg\" position=\"top-center\"></p-toast>\r\n <div id=\"login-dlg-wrap\">\r\n <div id=\"login-dlg-header\">\r\n <div id=\"login-logo\" class=\"p-mb-2\"></div>\r\n <h3 *ngIf=\"!success\">Your session is expired! <br> Please login again to continue.</h3>\r\n <h3 *ngIf=\"success\" style=\"color:green !important;\">You haved successfully logged in.</h3>\r\n </div>\r\n <div id=\"login-dlg-content\">\r\n <ng-container *ngIf=\"!success\">\r\n <div *ngIf=\"loading\" class=\"loader-wrap\">\r\n <div class=\"login-dlg-loader\"></div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">person</i>\r\n </span>\r\n <input disabled pInputText type=\"text\" placeholder=\"Username\" [value]=\"decodeToken?.email\" />\r\n </div>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\">\r\n <div class=\"p-inputgroup\">\r\n <span class=\"p-inputgroup-addon\">\r\n <i class=\"material-icons-round\">lock</i>\r\n </span>\r\n <input [disabled]=\"loading\" (keydown.enter)=\"clickLogin()\" pInputText type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\"\r\n autofocus />\r\n </div>\r\n </div>\r\n <div class=\"login-dlg-elm\">\r\n <button style=\"width: 100%;\" pButton type=\"button\" label=\"Login\" (click)=\"clickLogin()\"\r\n [disabled]=\"!password || loading\"></button>\r\n </div>\r\n \r\n <div class=\"login-dlg-elm\" style=\"display:flex;align-items: center;user-select: none;\">\r\n <span>No, I want to login with another user.</span>\r\n <button class=\"p-button-text\" pButton type=\"button\" label=\"Logout\" (click)=\"clickLogout()\"></button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"success\">\r\n <div style=\"margin-top:35px;\"></div>\r\n <div class=\"check-animation-wrap\">\r\n <div class=\"check-main-container\">\r\n <div class=\"check-container\">\r\n <div class=\"check-background\">\r\n <svg viewBox=\"0 0 65 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M7 25L27.3077 44L58.5 7\" stroke=\"white\" stroke-width=\"13\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>`,\r\n selector: \"app-localize-logindlg\",\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class LocalizeLogindlgComponent implements OnInit {\r\n readonly messageKey = \"$login-dlg\";\r\n password: any;\r\n readonly decodeToken: JwtPayload | null;\r\n loading = false;\r\n success = false;\r\n private readonly config = LocalizeToken.config;\r\n private readonly loginConfig: ILoginDialogConfig\r\n\r\n private logout?: () => any\r\n private loginUrl?: string;\r\n\r\n\r\n constructor(\r\n private readonly messageService: MessageService,\r\n private readonly cdt: ChangeDetectorRef,\r\n private readonly dlgRef: DynamicDialogRef,\r\n private readonly dlgConfig: DynamicDialogConfig,\r\n private readonly tokenService: LocalizeTokenService,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n this.decodeToken = this.tokenService.decodeRefreshToken;\r\n this.loginConfig = this.dlgConfig.data.loginConfig;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.dlgConfig.closable = false;\r\n this.logout = this.loginConfig.logoutFunc;\r\n this.loginUrl = this.loginConfig.loginUrl\r\n\r\n if (!this.decodeToken) {\r\n this.showMessage(\"error\", \"Token is invalid\");\r\n setTimeout(() => this.logout?.(), 2000);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdt.detectChanges();\r\n }\r\n\r\n async clickLogin() {\r\n if (!this.isValidPassword) {\r\n this.showMessage(\"error\", \"Password is required and must be at least 6 characters\");\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n const loginRes = await this.login();\r\n if (!loginRes?.status) {\r\n this.showMessage(\"error\", loginRes.message ?? \"An error occurred\");\r\n return;\r\n }\r\n\r\n this.tokenService.accessToken = loginRes.tokens.accessToken;\r\n const cookieOptions = { expires: this.loginConfig.expire ?? 5 }\r\n LocalizeToken.storage.set(this.config.refreshTokenName!, loginRes.tokens.refreshToken, cookieOptions);\r\n this.success = true;\r\n setTimeout(() => this.dlgRef.close(true), 2000);\r\n }\r\n\r\n private async login() {\r\n if (!this.loginUrl || !this.loginUrl.trim().length) {\r\n this.showMessage(\"error\", \"Login url is required\");\r\n throw new Error(\"Login url is required\");\r\n }\r\n\r\n try {\r\n return await new Promise<any>((resolve, reject) =>\r\n this.httpClient.post(this.loginUrl!, { password: this.password.trim() }, { headers: this.getHeaders() })\r\n .subscribe({ next: resolve, error: reject }));\r\n } catch (e: any) {\r\n this.showMessage(\"error\", e.message);\r\n return null;\r\n }\r\n }\r\n\r\n private getHeaders() {\r\n return {\r\n [LocalizeToken.httpHeaders.X_REFRESH_TOKEN]: LocalizeToken.storage.get(this.config.refreshTokenName!) ?? \"\",\r\n [LocalizeToken.httpHeaders.X_TENANT]: LocalizeToken.storage.get(this.config.tenantTokenName!) ?? \"\",\r\n };\r\n }\r\n\r\n get isValidPassword(): boolean {\r\n this.loading = false;\r\n return this.password && this.password.trim().length >= 6 && this.password.trim().length <= 16;\r\n }\r\n\r\n clickLogout = () => this.logout?.();\r\n\r\n private showMessage(severity: string, summary: string) {\r\n this.messageService.add({ key: this.messageKey, severity, summary });\r\n this.loading = false;\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\nimport { DialogService, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { LocalizeLogindlgComponent } from './localize-logindlg.component';\nexport interface ILoginDialogConfig {\n loginUrl?: string;\n logoutUrl?: string;\n logoutFunc?: () => void;\n /**\n * Cookie expiration date in days from now. If not provided the cookie is a session cookie\n */\n expire?: number;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizeLogindlgService {\n\n constructor(private readonly injector: Injector) { }\n\n async openLoginDialog(loginConfig: ILoginDialogConfig, config?: DynamicDialogConfig) {\n config ??= {\n header: 'Login',\n height: '650px',\n style: { 'max-width': '400px', width: '100%', 'height': '650px' },\n }\n config.data = { ...config.data || {}, ...{ loginConfig } };\n\n const dialogService = this.injector.get(DialogService);\n const dialog = dialogService.open(LocalizeLogindlgComponent, config);\n\n await new Promise<void>((resolve) =>\n dialog.onClose.subscribe(res => {\n if (res) {\n resolve();\n }\n }));\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { LocalizeLogindlgComponent } from \"./localize-logindlg.component\";\nimport { ToastModule } from \"primeng/toast\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ButtonModule } from \"primeng/button\";\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { LocalizeLogindlgService } from \"./localize-logindlg.service\";\n\n@NgModule({\n declarations: [LocalizeLogindlgComponent],\n exports: [LocalizeLogindlgComponent],\n imports: [\n CommonModule,\n ToastModule,\n InputTextModule,\n BrowserModule,\n FormsModule,\n ButtonModule,\n ],\n providers: [LocalizeLogindlgService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class LocalizeLogindlgModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sambath999/localize-token",
3
- "version": "12.1.7",
3
+ "version": "12.1.8",
4
4
  "description": "localize token client app",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"JwtPayload":{"__symbolic":"interface"},"LocalizeTokenService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"storageGet":[{"__symbolic":"method"}],"storageSet":[{"__symbolic":"method"}],"tokensValid":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ILocalizeTokenConfig":{"__symbolic":"interface"},"LocalizeToken":{"__symbolic":"class","members":{},"statics":{"config":{"mainDomain":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"extractMainDomain"}},"authTokenName":"auth-token","tenantTokenName":"_lze_tnt_01","refreshTokenName":"_lze_rftkp_","needTenant":false,"isProduction":false,"revokeTokenUrl":""},"storage":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LocalizeTokenStorage"}},"httpHeaders":{"AUTHORIZATION":"Authorization","X_TENANT":"X-Tenant","X_REFRESH_TOKEN":"X-RefreshToken","CONTENT_TYPE":"Content-Type"}}},"waitFor":{"__symbolic":"function"},"waitUntil":{"__symbolic":"function"},"extractMainDomain":{"__symbolic":"function"},"ICookieOptions":{"__symbolic":"interface"},"LocalizeTokenStorage":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"check":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"getAll":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}]}},"LocalizeTokenModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"LocalizeTokenService"},{"__symbolic":"reference","name":"LocalizeApiService"}]}]}],"members":{}},"EMethod":{"POST":1,"GET":2,"PUT":3,"DELETE":4,"PATCH":5},"LocalizeApiService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":50,"character":35},{"__symbolic":"reference","name":"LocalizeTokenService"}]}],"init":[{"__symbolic":"method"}],"base":[{"__symbolic":"method"}],"onUnauthorizedError":[{"__symbolic":"method"}],"toWaitForPreviousRequest":[{"__symbolic":"method"}],"processRequest":[{"__symbolic":"method"}],"revokeToken":[{"__symbolic":"method"}],"options":[{"__symbolic":"method"}],"ifPromise":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LocalizeLogindlgComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"styles":["\n #login-dlg-wrap {\n width: 100%;\n max-width: 400px;\n margin: 0 auto;\n padding: 30px;\n }\n \n .login-dlg-elm {\n margin-top: 1rem;\n }\n \n #login-dlg-header {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n \n #login-dlg-header h3 {\n font-weight: bold;\n font-size: 0.9rem;\n color: orange;\n text-align: center;\n }\n \n #login-logo {\n height: 40px;\n width: 40px;\n background: url(\"/assets/images/logo-300px.png\") no-repeat;\n background-size: contain;\n }\n \n #login-dlg-content .p-inputgroup {\n height: 45px;\n }\n \n #login-dlg-content .p-inputgroup .p-inputgroup-addon {\n height: 45px;\n border-radius: 15px 0 0 15px;\n width: 50px;\n }\n \n #login-dlg-content .p-inputgroup .p-inputgroup-addon * {\n font-size: 1rem;\n }\n \n #login-dlg-content .p-inputgroup input {\n height: 45px;\n border-radius: 0 15px 15px 0;\n }\n \n #login-dlg-content button {\n height: 45px;\n border-radius: 15px;\n }\n \n /*check animation block*/\n \n .check-animation-wrap {\n top: 0;\n left: 0;\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: calc(100% - 200px);\n min-height: 400px;\n }\n \n .check-main-container {\n width: 100%;\n height: 100vh;\n display: flex;\n flex-flow: column;\n justify-content: center;\n align-items: center;\n }\n \n .check-container {\n width: 6.25rem;\n height: 7.5rem;\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: space-between;\n }\n \n .check-container .check-background {\n width: 100%;\n height: calc(100% - 1.25rem);\n background: linear-gradient(to bottom right, #5de593, #41d67c);\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n transform: scale(0.84);\n border-radius: 50%;\n animation: animateContainer 0.75s ease-out forwards 0.75s;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n }\n \n .check-container .check-background svg {\n width: 65%;\n transform: translateY(0.25rem);\n stroke-dasharray: 80;\n stroke-dashoffset: 80;\n animation: animateCheck 0.35s forwards 1.25s ease-out;\n min-width: auto !important;\n }\n \n .check-container .check-shadow {\n bottom: calc(-15% - 5px);\n left: 0;\n border-radius: 50%;\n background: radial-gradient(closest-side, rgba(73, 218, 131, 1), transparent);\n animation: animateShadow 0.75s ease-out forwards 0.75s;\n }\n \n @keyframes animateContainer {\n 0% {\n opacity: 0;\n transform: scale(0);\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n }\n \n 25% {\n opacity: 1;\n transform: scale(0.9);\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n }\n \n 43.75% {\n transform: scale(1.15);\n box-shadow: 0px 0px 0px 43.334px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n }\n \n 62.5% {\n transform: scale(1);\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 21.667px rgba(255, 255, 255, 0.25) inset;\n }\n \n 81.25% {\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\n }\n \n 100% {\n opacity: 1;\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\n }\n }\n \n @keyframes animateCheck {\n from {\n stroke-dashoffset: 80;\n }\n \n to {\n stroke-dashoffset: 0;\n }\n }\n \n @keyframes animateShadow {\n 0% {\n opacity: 0;\n width: 100%;\n height: 15%;\n }\n \n 25% {\n opacity: 0.25;\n }\n \n 43.75% {\n width: 40%;\n height: 7%;\n opacity: 0.35;\n }\n \n 100% {\n width: 85%;\n height: 15%;\n opacity: 0.25;\n }\n }\n #login-dlg-wrap .loader-wrap {\n display: flex;\n justify-content: center;\n align-items: center;\n height:100%;\n width:100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n background: #ffffff42;\n backdrop-filter: blur(1px);\n }\n\n #login-dlg-wrap .login-dlg-loader {\n border: 15px solid #e7e7e7;\n border-top: 15px solid #52dba1;\n border-radius: 50%;\n width: 100px;\n height: 100px;\n animation: spinloader 2s linear infinite;\n }\n\n #login-dlg-wrap .loader-wrap::before {\n content: \"\";\n position: absolute;\n width: 70px;\n height: 70px;\n transform: translate(-50%, -50%);\n z-index: 1;\n border: 15px solid #e7e7e700;\n border-top: 15px solid #52dba1c9;\n border-radius: 50%;\n animation: spinloader .75s linear infinite;\n }\n\n @keyframes spinloader {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n "],"template":"<p-toast key=\"$login-dlg\" position=\"top-center\"></p-toast>\n <div id=\"login-dlg-wrap\">\n <div id=\"login-dlg-header\">\n <div id=\"login-logo\" class=\"p-mb-2\"></div>\n <h3 *ngIf=\"!success\">Your session is expired! <br> Please login again to continue.</h3>\n <h3 *ngIf=\"success\" style=\"color:green !important;\">You haved successfully logged in.</h3>\n </div>\n <div id=\"login-dlg-content\">\n <ng-container *ngIf=\"!success\">\n <div *ngIf=\"loading\" class=\"loader-wrap\">\n <div class=\"login-dlg-loader\"></div>\n </div>\n <div class=\"login-dlg-elm\">\n <div class=\"p-inputgroup\">\n <span class=\"p-inputgroup-addon\">\n <i class=\"material-icons-round\">person</i>\n </span>\n <input disabled pInputText type=\"text\" placeholder=\"Username\" [value]=\"decodeToken?.email\" />\n </div>\n </div>\n \n <div class=\"login-dlg-elm\">\n <div class=\"p-inputgroup\">\n <span class=\"p-inputgroup-addon\">\n <i class=\"material-icons-round\">lock</i>\n </span>\n <input [disabled]=\"loading\" (keydown.enter)=\"clickLogin()\" pInputText type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\"\n autofocus />\n </div>\n </div>\n <div class=\"login-dlg-elm\">\n <button style=\"width: 100%;\" pButton type=\"button\" label=\"Login\" (click)=\"clickLogin()\"\n [disabled]=\"!password || loading\"></button>\n </div>\n \n <div class=\"login-dlg-elm\" style=\"display:flex;align-items: center;user-select: none;\">\n <span>No, I want to login with another user.</span>\n <button class=\"p-button-text\" pButton type=\"button\" label=\"Logout\" (click)=\"clickLogout()\"></button>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"success\">\n <div style=\"margin-top:35px;\"></div>\n <div class=\"check-animation-wrap\">\n <div class=\"check-main-container\">\n <div class=\"check-container\">\n <div class=\"check-background\">\n <svg viewBox=\"0 0 65 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 25L27.3077 44L58.5 7\" stroke=\"white\" stroke-width=\"13\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>","selector":"app-localize-logindlg","providers":[{"__symbolic":"reference","module":"primeng/api","name":"MessageService","line":301,"character":14}],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":302,"character":17},"member":"None"}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"primeng/api","name":"MessageService","line":318,"character":37},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":319,"character":26},{"__symbolic":"reference","module":"primeng/dynamicdialog","name":"DynamicDialogRef","line":320,"character":29},{"__symbolic":"reference","module":"primeng/dynamicdialog","name":"DynamicDialogConfig","line":321,"character":32},{"__symbolic":"reference","name":"LocalizeTokenService"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":323,"character":33}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"clickLogin":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"getHeaders":[{"__symbolic":"method"}]}},"LocalizeLogindlgModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"LocalizeLogindlgComponent"}],"exports":[{"__symbolic":"reference","name":"LocalizeLogindlgComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"primeng/toast","name":"ToastModule","line":15,"character":4},{"__symbolic":"reference","module":"primeng/inputtext","name":"InputTextModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/platform-browser","name":"BrowserModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":18,"character":4},{"__symbolic":"reference","module":"primeng/button","name":"ButtonModule","line":19,"character":4}],"providers":[{"__symbolic":"reference","name":"LocalizeLogindlgService"}],"schemas":[{"__symbolic":"reference","module":"@angular/core","name":"CUSTOM_ELEMENTS_SCHEMA","line":22,"character":12}]}]}],"members":{}},"ILoginDialogConfig":{"__symbolic":"interface"},"LocalizeLogindlgService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":41}]}],"openLoginDialog":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"JwtPayload":"./localize-token/localize.token.service","LocalizeTokenService":"./localize-token/localize.token.service","ILocalizeTokenConfig":"./localize-token/localize.token","LocalizeToken":"./localize-token/localize.token","waitFor":"./localize-token/localize.token","waitUntil":"./localize-token/localize.token","extractMainDomain":"./localize-token/localize.token","ICookieOptions":"./localize-token/localize.token.storage","LocalizeTokenStorage":"./localize-token/localize.token.storage","LocalizeTokenModule":"./localize-token/localize.token.module","EMethod":"./localize-token/localize.api.service","LocalizeApiService":"./localize-token/localize.api.service","LocalizeLogindlgComponent":"./localize-logindlg/localize-logindlg.component","LocalizeLogindlgModule":"./localize-logindlg/localize-logindlg.module","ILoginDialogConfig":"./localize-logindlg/localize-logindlg.service","LocalizeLogindlgService":"./localize-logindlg/localize-logindlg.service"},"importAs":"@sambath999/localize-token"}
1
+ {"__symbolic":"module","version":4,"metadata":{"JwtPayload":{"__symbolic":"interface"},"LocalizeTokenService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"storageGet":[{"__symbolic":"method"}],"storageSet":[{"__symbolic":"method"}],"tokensValid":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ILocalizeTokenConfig":{"__symbolic":"interface"},"LocalizeToken":{"__symbolic":"class","members":{},"statics":{"config":{"mainDomain":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"extractMainDomain"}},"authTokenName":"auth-token","tenantTokenName":"_lze_tnt_01","refreshTokenName":"_lze_rftkp_","needTenant":false,"isProduction":false,"revokeTokenUrl":""},"storage":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LocalizeTokenStorage"}},"httpHeaders":{"AUTHORIZATION":"Authorization","X_TENANT":"X-Tenant","X_REFRESH_TOKEN":"X-RefreshToken","CONTENT_TYPE":"Content-Type"}}},"waitFor":{"__symbolic":"function"},"waitUntil":{"__symbolic":"function"},"extractMainDomain":{"__symbolic":"function"},"ICookieOptions":{"__symbolic":"interface"},"LocalizeTokenStorage":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"check":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"getAll":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}]}},"LocalizeTokenModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"LocalizeTokenService"},{"__symbolic":"reference","name":"LocalizeApiService"}]}]}],"members":{}},"EMethod":{"POST":1,"GET":2,"PUT":3,"DELETE":4,"PATCH":5},"LocalizeApiService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":50,"character":35},{"__symbolic":"reference","name":"LocalizeTokenService"}]}],"init":[{"__symbolic":"method"}],"base":[{"__symbolic":"method"}],"onUnauthorizedError":[{"__symbolic":"method"}],"toWaitForPreviousRequest":[{"__symbolic":"method"}],"processRequest":[{"__symbolic":"method"}],"revokeToken":[{"__symbolic":"method"}],"options":[{"__symbolic":"method"}],"ifPromise":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LocalizeLogindlgComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"styles":["\n #login-dlg-wrap {\n width: 100%;\n max-width: 400px;\n margin: 0 auto;\n padding: 30px;\n }\n \n .login-dlg-elm {\n margin-top: 1rem;\n }\n \n #login-dlg-header {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n \n #login-dlg-header h3 {\n font-weight: bold;\n font-size: 0.9rem;\n color: orange;\n text-align: center;\n }\n \n #login-logo {\n height: 40px;\n width: 40px;\n background: url(\"/assets/images/logo-300px.png\") no-repeat;\n background-size: contain;\n }\n \n #login-dlg-content .p-inputgroup {\n height: 45px;\n }\n \n #login-dlg-content .p-inputgroup .p-inputgroup-addon {\n height: 45px;\n border-radius: 15px 0 0 15px;\n width: 50px;\n }\n \n #login-dlg-content .p-inputgroup .p-inputgroup-addon * {\n font-size: 1rem;\n }\n \n #login-dlg-content .p-inputgroup input {\n height: 45px;\n border-radius: 0 15px 15px 0;\n }\n \n #login-dlg-content button {\n height: 45px;\n border-radius: 15px;\n }\n \n /*check animation block*/\n \n .check-animation-wrap {\n top: 0;\n left: 0;\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: calc(100% - 200px);\n min-height: 400px;\n }\n \n .check-main-container {\n width: 100%;\n height: 100vh;\n display: flex;\n flex-flow: column;\n justify-content: center;\n align-items: center;\n }\n \n .check-container {\n width: 6.25rem;\n height: 7.5rem;\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: space-between;\n }\n \n .check-container .check-background {\n width: 100%;\n height: calc(100% - 1.25rem);\n background: linear-gradient(to bottom right, #5de593, #41d67c);\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n transform: scale(0.84);\n border-radius: 50%;\n animation: animateContainer 0.75s ease-out forwards 0.75s;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n }\n \n .check-container .check-background svg {\n width: 65%;\n transform: translateY(0.25rem);\n stroke-dasharray: 80;\n stroke-dashoffset: 80;\n animation: animateCheck 0.35s forwards 1.25s ease-out;\n min-width: auto !important;\n }\n \n .check-container .check-shadow {\n bottom: calc(-15% - 5px);\n left: 0;\n border-radius: 50%;\n background: radial-gradient(closest-side, rgba(73, 218, 131, 1), transparent);\n animation: animateShadow 0.75s ease-out forwards 0.75s;\n }\n \n @keyframes animateContainer {\n 0% {\n opacity: 0;\n transform: scale(0);\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n }\n \n 25% {\n opacity: 1;\n transform: scale(0.9);\n box-shadow: 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n }\n \n 43.75% {\n transform: scale(1.15);\n box-shadow: 0px 0px 0px 43.334px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 65px rgba(255, 255, 255, 0.25) inset;\n }\n \n 62.5% {\n transform: scale(1);\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 21.667px rgba(255, 255, 255, 0.25) inset;\n }\n \n 81.25% {\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\n }\n \n 100% {\n opacity: 1;\n box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset, 0px 0px 0px 0px rgba(255, 255, 255, 0.25) inset;\n }\n }\n \n @keyframes animateCheck {\n from {\n stroke-dashoffset: 80;\n }\n \n to {\n stroke-dashoffset: 0;\n }\n }\n \n @keyframes animateShadow {\n 0% {\n opacity: 0;\n width: 100%;\n height: 15%;\n }\n \n 25% {\n opacity: 0.25;\n }\n \n 43.75% {\n width: 40%;\n height: 7%;\n opacity: 0.35;\n }\n \n 100% {\n width: 85%;\n height: 15%;\n opacity: 0.25;\n }\n }\n #login-dlg-wrap .loader-wrap {\n display: flex;\n justify-content: center;\n align-items: center;\n height:100%;\n width:100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n background: #ffffff42;\n backdrop-filter: blur(1px);\n }\n\n #login-dlg-wrap .login-dlg-loader {\n border: 15px solid #e7e7e7;\n border-top: 15px solid #52dba1;\n border-radius: 50%;\n width: 100px;\n height: 100px;\n animation: spinloader 2s linear infinite;\n }\n\n #login-dlg-wrap .loader-wrap::before {\n content: \"\";\n position: absolute;\n width: 70px;\n height: 70px;\n transform: translate(-50%, -50%);\n z-index: 1;\n border: 15px solid #e7e7e700;\n border-top: 15px solid #52dba1c9;\n border-radius: 50%;\n animation: spinloader .75s linear infinite;\n }\n\n @keyframes spinloader {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n "],"template":"<p-toast key=\"$login-dlg\" position=\"top-center\"></p-toast>\n <div id=\"login-dlg-wrap\">\n <div id=\"login-dlg-header\">\n <div id=\"login-logo\" class=\"p-mb-2\"></div>\n <h3 *ngIf=\"!success\">Your session is expired! <br> Please login again to continue.</h3>\n <h3 *ngIf=\"success\" style=\"color:green !important;\">You haved successfully logged in.</h3>\n </div>\n <div id=\"login-dlg-content\">\n <ng-container *ngIf=\"!success\">\n <div *ngIf=\"loading\" class=\"loader-wrap\">\n <div class=\"login-dlg-loader\"></div>\n </div>\n <div class=\"login-dlg-elm\">\n <div class=\"p-inputgroup\">\n <span class=\"p-inputgroup-addon\">\n <i class=\"material-icons-round\">person</i>\n </span>\n <input disabled pInputText type=\"text\" placeholder=\"Username\" [value]=\"decodeToken?.email\" />\n </div>\n </div>\n \n <div class=\"login-dlg-elm\">\n <div class=\"p-inputgroup\">\n <span class=\"p-inputgroup-addon\">\n <i class=\"material-icons-round\">lock</i>\n </span>\n <input [disabled]=\"loading\" (keydown.enter)=\"clickLogin()\" pInputText type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\"\n autofocus />\n </div>\n </div>\n <div class=\"login-dlg-elm\">\n <button style=\"width: 100%;\" pButton type=\"button\" label=\"Login\" (click)=\"clickLogin()\"\n [disabled]=\"!password || loading\"></button>\n </div>\n \n <div class=\"login-dlg-elm\" style=\"display:flex;align-items: center;user-select: none;\">\n <span>No, I want to login with another user.</span>\n <button class=\"p-button-text\" pButton type=\"button\" label=\"Logout\" (click)=\"clickLogout()\"></button>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"success\">\n <div style=\"margin-top:35px;\"></div>\n <div class=\"check-animation-wrap\">\n <div class=\"check-main-container\">\n <div class=\"check-container\">\n <div class=\"check-background\">\n <svg viewBox=\"0 0 65 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 25L27.3077 44L58.5 7\" stroke=\"white\" stroke-width=\"13\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>","selector":"app-localize-logindlg","providers":[{"__symbolic":"reference","module":"primeng/api","name":"MessageService","line":301,"character":14}],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":302,"character":17},"member":"None"}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"primeng/api","name":"MessageService","line":318,"character":37},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":319,"character":26},{"__symbolic":"reference","module":"primeng/dynamicdialog","name":"DynamicDialogRef","line":320,"character":29},{"__symbolic":"reference","module":"primeng/dynamicdialog","name":"DynamicDialogConfig","line":321,"character":32},{"__symbolic":"reference","name":"LocalizeTokenService"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":323,"character":33}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"clickLogin":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"getHeaders":[{"__symbolic":"method"}],"showMessage":[{"__symbolic":"method"}]}},"LocalizeLogindlgModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"LocalizeLogindlgComponent"}],"exports":[{"__symbolic":"reference","name":"LocalizeLogindlgComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"primeng/toast","name":"ToastModule","line":15,"character":4},{"__symbolic":"reference","module":"primeng/inputtext","name":"InputTextModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/platform-browser","name":"BrowserModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":18,"character":4},{"__symbolic":"reference","module":"primeng/button","name":"ButtonModule","line":19,"character":4}],"providers":[{"__symbolic":"reference","name":"LocalizeLogindlgService"}],"schemas":[{"__symbolic":"reference","module":"@angular/core","name":"CUSTOM_ELEMENTS_SCHEMA","line":22,"character":12}]}]}],"members":{}},"ILoginDialogConfig":{"__symbolic":"interface"},"LocalizeLogindlgService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":41}]}],"openLoginDialog":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"JwtPayload":"./localize-token/localize.token.service","LocalizeTokenService":"./localize-token/localize.token.service","ILocalizeTokenConfig":"./localize-token/localize.token","LocalizeToken":"./localize-token/localize.token","waitFor":"./localize-token/localize.token","waitUntil":"./localize-token/localize.token","extractMainDomain":"./localize-token/localize.token","ICookieOptions":"./localize-token/localize.token.storage","LocalizeTokenStorage":"./localize-token/localize.token.storage","LocalizeTokenModule":"./localize-token/localize.token.module","EMethod":"./localize-token/localize.api.service","LocalizeApiService":"./localize-token/localize.api.service","LocalizeLogindlgComponent":"./localize-logindlg/localize-logindlg.component","LocalizeLogindlgModule":"./localize-logindlg/localize-logindlg.module","ILoginDialogConfig":"./localize-logindlg/localize-logindlg.service","LocalizeLogindlgService":"./localize-logindlg/localize-logindlg.service"},"importAs":"@sambath999/localize-token"}