@bnsights/bbsf-utilities 1.0.31 → 1.0.32
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.
- package/README.md +5 -2
- package/bnsights-bbsf-utilities-1.0.32.tgz +0 -0
- package/bnsights-bbsf-utilities.d.ts +1 -0
- package/{esm2015/bnsights-bbsf-utilities.js → esm2020/bnsights-bbsf-utilities.mjs} +0 -0
- package/esm2020/lib/bbsf-utilities.module.mjs +74 -0
- package/esm2020/lib/shared/authentication/auth.service.mjs +217 -0
- package/{esm2015/lib/shared/config/environment.js → esm2020/lib/shared/config/environment.mjs} +0 -0
- package/{esm2015/lib/shared/models/AreaModel.js → esm2020/lib/shared/models/AreaModel.mjs} +0 -0
- package/{esm2015/lib/shared/models/ErrorModel.js → esm2020/lib/shared/models/ErrorModel.mjs} +0 -0
- package/{esm2015/lib/shared/models/RequestOptionsModel.js → esm2020/lib/shared/models/RequestOptionsModel.mjs} +0 -0
- package/esm2020/lib/shared/services/AppearanceConfiguration.service.mjs +35 -0
- package/esm2020/lib/shared/services/configuration.service.mjs +24 -0
- package/esm2020/lib/shared/services/controlvalidation.service.mjs +166 -0
- package/esm2020/lib/shared/services/environment.service.mjs +50 -0
- package/esm2020/lib/shared/services/masterlayout.service.mjs +84 -0
- package/esm2020/lib/shared/services/requesthandler.service.mjs +202 -0
- package/esm2020/lib/shared/services/stylesbundle.service.mjs +55 -0
- package/esm2020/lib/shared/services/translate.service.mjs +14 -0
- package/esm2020/lib/shared/services/translationresolver.service.mjs +18 -0
- package/esm2020/lib/shared/services/utility.service.mjs +90 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{bnsights-bbsf-utilities.js → bnsights-bbsf-utilities.mjs} +160 -157
- package/fesm2015/bnsights-bbsf-utilities.mjs.map +1 -0
- package/fesm2020/bnsights-bbsf-utilities.mjs +997 -0
- package/fesm2020/bnsights-bbsf-utilities.mjs.map +1 -0
- package/lib/bbsf-utilities.module.d.ts +9 -0
- package/lib/shared/authentication/auth.service.d.ts +3 -0
- package/lib/shared/services/AppearanceConfiguration.service.d.ts +3 -0
- package/lib/shared/services/configuration.service.d.ts +3 -0
- package/lib/shared/services/controlvalidation.service.d.ts +3 -0
- package/lib/shared/services/environment.service.d.ts +3 -0
- package/lib/shared/services/masterlayout.service.d.ts +3 -0
- package/lib/shared/services/requesthandler.service.d.ts +3 -0
- package/lib/shared/services/stylesbundle.service.d.ts +3 -0
- package/lib/shared/services/translate.service.d.ts +3 -0
- package/lib/shared/services/translationresolver.service.d.ts +3 -0
- package/lib/shared/services/utility.service.d.ts +3 -0
- package/package.json +19 -7
- package/bnsights-bbsf-utilities-1.0.31.tgz +0 -0
- package/bnsights-bbsf-utilities.metadata.json +0 -1
- package/bundles/bnsights-bbsf-utilities.umd.js +0 -1485
- package/bundles/bnsights-bbsf-utilities.umd.js.map +0 -1
- package/esm2015/lib/bbsf-utilities.module.js +0 -52
- package/esm2015/lib/shared/authentication/auth.service.js +0 -236
- package/esm2015/lib/shared/services/AppearanceConfiguration.service.js +0 -37
- package/esm2015/lib/shared/services/configuration.service.js +0 -26
- package/esm2015/lib/shared/services/controlvalidation.service.js +0 -168
- package/esm2015/lib/shared/services/environment.service.js +0 -48
- package/esm2015/lib/shared/services/masterlayout.service.js +0 -96
- package/esm2015/lib/shared/services/requesthandler.service.js +0 -206
- package/esm2015/lib/shared/services/stylesbundle.service.js +0 -56
- package/esm2015/lib/shared/services/translate.service.js +0 -13
- package/esm2015/lib/shared/services/translationresolver.service.js +0 -20
- package/esm2015/lib/shared/services/utility.service.js +0 -96
- package/fesm2015/bnsights-bbsf-utilities.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bnsights-bbsf-utilities.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/RequestOptionsModel.ts","../../../projects/bbsf-utilities/src/lib/shared/services/requesthandler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/stylesbundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/masterlayout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/controlvalidation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translationresolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/AppearanceConfiguration.service.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.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 || Array.prototype.slice.call(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","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\nimport { AreaModel } from '../models/AreaModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n\r\n static AreaList: AreaModel[] = []\r\n\r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n let Url = environment[\"BBSF_BaseURL\"]\r\n return Url;\r\n }\r\n getApiUrl() {\r\n let Url = environment[\"BBSF_ApiUrl\"]\r\n return Url;\r\n }\r\n\r\n getProductionMode() {\r\n let Mode = environment[\"BBSF_IsProduction\"] as boolean\r\n\r\n return Mode;\r\n }\r\n\r\n getDefaultLanguage() {\r\n let Mode = environment[\"BBSF_DefaultLanguage\"] as string\r\n return Mode;\r\n }\r\n getIdentityServerUrl() {\r\n let Url = environment[\"BBSF_IdentityServerUrl\"]\r\n return Url;\r\n }\r\n getIsIdentityServerExternal() {\r\n let Mode = environment[\"BBSF_IsExternalIdentityServer\"] as string\r\n return Mode;\r\n }\r\n getIsIdentityServerClientId() {\r\n let Mode = environment[\"BBSF_IdentityServer_Client_Id\"] as string\r\n return Mode;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n let Mode = environment[\"BBSF_IdentityServer_Client_Secret\"] as string\r\n return Mode;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean=false;\r\n disableBlockUI: boolean = false;\r\n disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType:any=\"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n\r\n}\r\n","import { Injectable, OnDestroy, Pipe } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n constructor\r\n (\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService,\r\n private router: Router\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n })\r\n }\r\n\r\n public getLuckyNumber(): Observable<number> {\r\n\r\n return Observable.create((subject: Subject<number>) => {\r\n setInterval(() => {\r\n const number = Math.floor(Math.random() * 10);\r\n console.log(number)\r\n subject.next(number);\r\n }, 1000);\r\n }).pipe(\r\n takeUntil(this.onDestroy$));\r\n }\r\n\r\n\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n let object: T;\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n ) as Observable<T>;\r\n }\r\n\r\n post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n delete<T>(Url: string, deletedId: string, requestOptions?: RequestOptionsModel, responseType?: new () => T, params?: HttpParams): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\")\r\n this.destroyHandler()\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"])\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\")\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\")\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message))\r\n else\r\n {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`)\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"))\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n private getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { BBSFTranslateService } from './translate.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document, private translateService: BBSFTranslateService) { }\r\n\r\n loadThemes(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString())\r\n document.querySelector('html').setAttribute(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString())\r\n document.querySelector('html').setAttribute(\"b-lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n\r\n }\r\n\r\n loadThemesColor(theme: string, bundleDarkName: string, bundleLightName: string) {\r\n if (theme == \"Light\")\r\n this.loadStyleBundle(bundleLightName.toString());\r\n else\r\n this.loadStyleBundle(bundleDarkName.toString())\r\n }\r\n\r\n loadStyleBundle(styleName: string) {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n\r\n if (themeLink && themeLink.href.includes(styleName)) {\r\n return;\r\n }\r\n else if (themeLink && !themeLink.href.includes(styleName)) {\r\n themeLink.remove();\r\n }\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n }\r\n\r\n}\r\n\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RequestHandlerService } from './requesthandler.service';\r\nimport { StylesBundleService } from './stylesbundle.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n ApiUrl = '/api/Home/';\r\n constructor(\r\n private router: Router,\r\n private http: RequestHandlerService,\r\n private authService: AuthService,\r\n private stylesBundleService: StylesBundleService,\r\n private translate: TranslateService,\r\n private environmentService: EnvironmentService\r\n ) {}\r\n switchLang(\r\n lang: string,\r\n bundleEnglishName: string,\r\n bundleArabicName: string\r\n ) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value;\r\n this.authService.getUser();\r\n this.authService.user.profile = Object.assign(\r\n this.authService.user.profile,\r\n UserInfoObject\r\n );\r\n this.authService.storUser(this.authService.user);\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n\r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', this.authService.user.profile.id);\r\n params = params.append('LanguageKey', key);\r\n return this.http.post(this.ApiUrl + 'UpdateLanguage', null, null, params);\r\n }\r\n\r\n getUserClaims() {\r\n return this.http.get(this.ApiUrl + 'GetUserClaims', null, null);\r\n }\r\n\r\n logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.ApiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo() {\r\n let isExternal =this.environmentService.getIsIdentityServerExternal().toLowerCase() == 'true';\r\n if (isExternal)\r\n return this.getUserClaims();\r\n return this.http.get('/connect/userinfo');\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value;\r\n this.authService.getUser();\r\n this.authService.user.profile = Object.assign(\r\n this.authService.user.profile,\r\n UserInfoObject\r\n );\r\n this.authService.storUser(this.authService.user);\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', this.authService.user.profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.ApiUrl + 'SwitchRole', null, null, params);\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport {\r\n UserManager,\r\n UserManagerSettings,\r\n User,\r\n WebStorageStateStore,\r\n} from 'oidc-client';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { BBSFTranslateService } from '../services/translate.service';\r\nimport { Router } from '@angular/router';\r\nimport { MasterLayoutService } from '../services/masterlayout.service';\r\nimport { RequestHandlerService } from '../services/requesthandler.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n // Observable navItem source\r\n private _authNavStatusSource = new BehaviorSubject<boolean>(false);\r\n // Observable navItem stream\r\n authNavStatus$ = this._authNavStatusSource.asObservable();\r\n // Observable navItem source\r\n private _userSource: Subject<User> = new Subject<User>();\r\n UserStatus$ = this._userSource.asObservable();\r\n private manager = this.getUserManager();\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n user: User | null;\r\n static UserClaims: any = null;\r\n\r\n constructor(\r\n private injector: Injector,\r\n private http: HttpClient,\r\n private environmentService: EnvironmentService,\r\n private translateService: BBSFTranslateService,\r\n private router: Router\r\n ) {\r\n this.manager.getUser().then(async (user) => {\r\n this.manager.storeUser(user);\r\n AuthService.user = user;\r\n this.user = user;\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n });\r\n this.manager.events.addAccessTokenExpired((_) => {\r\n this._authNavStatusSource.next(false);\r\n });\r\n }\r\n\r\n getUserManager() {\r\n let user = null;\r\n let isExternal =\r\n this.environmentService.getIsIdentityServerExternal().toLowerCase() ==\r\n 'true';\r\n if (isExternal) {\r\n user = new UserManager({\r\n authority: this.environmentService.getIdentityServerUrl(),\r\n client_id: this.environmentService.getIsIdentityServerClientId(),\r\n client_secret:\r\n this.environmentService.getIsIdentityServerClientSecret(),\r\n redirect_uri:\r\n this.environmentService.getBaseUrl() +\r\n '/Admin/authentication/auth-callback',\r\n post_logout_redirect_uri: this.environmentService.getBaseUrl(),\r\n response_type: 'code',\r\n scope: 'openid profile email',\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri:\r\n this.environmentService.getBaseUrl() + '/assets/silent-callback.html',\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n });\r\n } else {\r\n user = new UserManager({\r\n authority: this.environmentService.getIdentityServerUrl(),\r\n client_id: 'angular_spa',\r\n redirect_uri:\r\n this.environmentService.getBaseUrl() +\r\n '/Admin/authentication/auth-callback',\r\n post_logout_redirect_uri: this.environmentService.getBaseUrl(),\r\n response_type: 'id_token token',\r\n scope: 'openid profile email IdentityServerApi',\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri:\r\n this.environmentService.getBaseUrl() + '/assets/silent-callback.html',\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n });\r\n }\r\n return user;\r\n }\r\n\r\n login() {\r\n return this.manager.signinRedirect();\r\n }\r\n\r\n getUser() {\r\n this.manager.getUser().then(async (user) => {\r\n AuthService.user = user;\r\n this.user = user;\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n });\r\n }\r\n storUser(User: any) {\r\n this.manager.storeUser(User);\r\n }\r\n\r\n revokeAccessToken() {\r\n this.manager.revokeAccessToken();\r\n }\r\n\r\n signinSilent() {\r\n let x = this.manager.signinSilentCallback();\r\n x.then((s) => {\r\n //console.log(s)\r\n });\r\n }\r\n\r\n async completeAuthentication() {\r\n this.user = await this.manager.signinRedirectCallback();\r\n AuthService.user = this.user;\r\n this._userSource.next(AuthService.user);\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n let isExternal =\r\n this.environmentService.getIsIdentityServerExternal().toLowerCase() ==\r\n 'true';\r\n if (isExternal) {\r\n const masterLayoutService = this.injector.get(MasterLayoutService);\r\n let userClaims = await masterLayoutService\r\n .getUserClaims()\r\n .toPromise()\r\n .then((e) => {\r\n AuthService.UserClaims = e;\r\n },(error)=>{\r\n console.log(error)\r\n });\r\n AuthService.user.profile = Object.assign(\r\n AuthService.user.profile,\r\n AuthService.UserClaims\r\n );\r\n }\r\n\r\n this.storUser(AuthService.user);\r\n if (\r\n !localStorage.getItem('language') ||\r\n localStorage.getItem('language') == this.user.profile.locale\r\n )\r\n localStorage.setItem('language', this.user.profile.locale);\r\n\r\n if (this.translateService.currentLang != localStorage.getItem('language')) {\r\n this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService\r\n .reloadLang(localStorage.getItem('language'))\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n this._userSource.next(AuthService.user);\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n this.user = AuthService.user;\r\n }\r\n\r\n async refreshToken(token) {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Authorization: token,\r\n }),\r\n };\r\n\r\n this.manager.revokeAccessToken();\r\n return await this.http\r\n .post<any>(\r\n `${this.environmentService.getIdentityServerUrl()}/users/refresh-token`,\r\n httpOptions,\r\n { withCredentials: true }\r\n )\r\n .subscribe((user) => {\r\n this._userSource.next(user);\r\n AuthService.user = user;\r\n this.user = user;\r\n });\r\n }\r\n\r\n getCurrentUser() {\r\n return this.manager.getUser();\r\n }\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n let user = await this.manager.getUser().then((user) => {\r\n return user;\r\n });\r\n return this.user != null && !this.user.expired;\r\n }\r\n isUserInRole(allowedPermission: number[]) {\r\n let selectedPermissionSetID: number = Number.parseInt(\r\n this.user.profile['selectedpermissionsetid']\r\n );\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\r\n }\r\n\r\n name(): string {\r\n return AuthService.user != null ? AuthService.user.profile.given_name : '';\r\n }\r\n setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\r\n }\r\n getUrl() {\r\n return localStorage.getItem('redirectUrl');\r\n }\r\n async signinSilentCallback() {\r\n let user = await this.manager.signinSilentCallback();\r\n //await this.manager.storeUser(user);\r\n AuthService.user = user;\r\n console.log('Token from signinSilentCallback :' + AuthService.user);\r\n this.user = user;\r\n }\r\n async signout() {\r\n if (await !this.isAuthenticated())\r\n this.router.navigate(['/Admin/account/login']), localStorage.clear();\r\n let isExternal =\r\n this.environmentService.getIsIdentityServerExternal().toLowerCase() ==\r\n 'true';\r\n if (isExternal) {\r\n await this.clearUserSessionClaims()\r\n .toPromise()\r\n .then((res) => {\r\n let result = res;\r\n });\r\n }\r\n await this.manager.signoutRedirect();\r\n }\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession',httpOptions);\r\n }\r\n}\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { AppInjector } from '../../bbsf-utilities.module';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private authService: AuthService, private environmentService: EnvironmentService,) {\r\n\r\n }\r\n\r\n\r\n getResourceValue(Key: string): string {\r\n let ResourceValue = this.translator.instant(Key)\r\n return ResourceValue;\r\n\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if (lang)\r\n currentLanguage = lang;\r\n else\r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n}\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl, FormsModule, FormGroup } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorModel } from '../models/ErrorModel';\r\nimport { UtilityService } from './utility.service';\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor\r\n (\r\n private utilityService: UtilityService\r\n ) {\r\n\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string | string[], formId?: string, deleteOld?: boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger')\r\n if (globalErorrElement.length > 0) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n\r\n\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message: string | string[] = \"\";\r\n\r\n\r\n if (!errorMessage || (typeof errorMessage == \"string\")) {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else {\r\n elementToAppend.innerHTML = \"<ul>\";\r\n\r\n for (const iterator of errorMessage) {\r\n\r\n elementToAppend.innerHTML = \"<li>\" + iterator + \"</li>\";\r\n }\r\n\r\n elementToAppend.innerHTML = \"</ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n\r\n this.isCreatedBefor = true;\r\n\r\n }\r\n\r\n RemoveGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel, formId?: string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray: string[] = [];\r\n\r\n this.requestOptions = requestOptions;\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.controlName;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n // this.showGlobalError(`${fieldName}: ${message}`,formId )\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n }\r\n });\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\r\n\r\n\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control = null\r\n if (controlName)\r\n control = form.get(controlName);\r\n else\r\n control = form.get(fieldName.split('.')[0]);\r\n let errors = { \"errorMassage\": message };\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n\r\n default:\r\n control.setErrors(errors);\r\n }\r\n\r\n }\r\n else if (fieldNameArray.length == 1) {\r\n control.setErrors(errors);\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n static JsonData:any[]=[]\r\n constructor(private httpClient: HttpClient){\r\n this.httpClient.get(\"./assets/config/configurations.json\").subscribe(data =>{\r\n ConfigurationService.JsonData = data as any[];\r\n })\r\n }\r\n getConfigurationValue(key:string) {\r\n return ConfigurationService.JsonData[key];\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { HttpModule } from '@angular/http';\r\nimport { UtilityService } from './shared/services/utility.service';\r\nimport { EnvironmentService } from './shared/services/environment.service';\r\nimport { AuthService } from './shared/authentication/auth.service';\r\nimport { RequestHandlerService } from './shared/services/requesthandler.service';\r\nimport { StylesBundleService } from './shared/services/stylesbundle.service';\r\nimport { BBSFTranslateService } from './shared/services/translate.service';\r\nimport { ControlValidationService } from './shared/services/controlvalidation.service';\r\nimport { MasterLayoutService } from './shared/services/masterlayout.service';\r\nimport { ConfigurationService } from './shared/services/configuration.service';\r\n\r\nexport let AppInjector: Injector;\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [\r\n \r\n ],\r\n providers:[\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService,\r\n ConfigurationService\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule { \r\n\r\n constructor(private injector: Injector) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BBSFTranslateService } from \"./translate.service\";\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslationResolverService implements Resolve<any> {\r\n constructor(private translateService: BBSFTranslateService) {}\r\n\r\n resolve(): Observable<any> {\r\n return this.translateService.getTranslation(\r\n this.translateService.currentLang\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { ConfigurationService } from \"./configuration.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n}","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/requesthandler.service'\r\nexport * from './lib/shared/services/stylesbundle.service'\r\nexport * from './lib/shared/services/translate.service'\r\nexport * from './lib/shared/services/controlvalidation.service'\r\nexport * from './lib/shared/services/masterlayout.service'\r\nexport * from './lib/shared/services/translationresolver.service'\r\nexport * from './lib/shared/services/AppearanceConfiguration.service'\r\nexport * from './lib/shared/services/configuration.service'\r\n\r\nexport * from './lib/shared/config/environment';\r\n\r\n\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n\r\nexport * from './lib/shared/models/RequestOptionsModel';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","TranslateService","Subject","Observable","takeUntil","tap","map","plainToClass","HttpHeaders","throwError","HttpClient","Router","Inject","DOCUMENT","HttpParams","BehaviorSubject","UserManager","WebStorageStateStore","Injector","AppInjector","ToastrService","BlockUI","NgModule","CommonModule","BlockUIModule","HttpModule","RouterModule","ToastrModule"],"mappings":"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"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Injector, NgModule } from '@angular/core';
|
|
3
|
-
import { RouterModule } from '@angular/router';
|
|
4
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
-
import { BlockUIModule } from 'ng-block-ui';
|
|
6
|
-
import { ToastrModule } from 'ngx-toastr';
|
|
7
|
-
import { HttpModule } from '@angular/http';
|
|
8
|
-
import { UtilityService } from './shared/services/utility.service';
|
|
9
|
-
import { EnvironmentService } from './shared/services/environment.service';
|
|
10
|
-
import { AuthService } from './shared/authentication/auth.service';
|
|
11
|
-
import { RequestHandlerService } from './shared/services/requesthandler.service';
|
|
12
|
-
import { StylesBundleService } from './shared/services/stylesbundle.service';
|
|
13
|
-
import { BBSFTranslateService } from './shared/services/translate.service';
|
|
14
|
-
import { ControlValidationService } from './shared/services/controlvalidation.service';
|
|
15
|
-
import { MasterLayoutService } from './shared/services/masterlayout.service';
|
|
16
|
-
import { ConfigurationService } from './shared/services/configuration.service';
|
|
17
|
-
export let AppInjector;
|
|
18
|
-
export class BBSFUtilitiesModule {
|
|
19
|
-
constructor(injector) {
|
|
20
|
-
this.injector = injector;
|
|
21
|
-
AppInjector = this.injector;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
BBSFUtilitiesModule.decorators = [
|
|
25
|
-
{ type: NgModule, args: [{
|
|
26
|
-
declarations: [],
|
|
27
|
-
imports: [
|
|
28
|
-
CommonModule,
|
|
29
|
-
BlockUIModule.forRoot(),
|
|
30
|
-
HttpModule,
|
|
31
|
-
RouterModule,
|
|
32
|
-
ToastrModule.forRoot(),
|
|
33
|
-
],
|
|
34
|
-
exports: [],
|
|
35
|
-
providers: [
|
|
36
|
-
UtilityService,
|
|
37
|
-
EnvironmentService,
|
|
38
|
-
AuthService,
|
|
39
|
-
RequestHandlerService,
|
|
40
|
-
StylesBundleService,
|
|
41
|
-
TranslateService,
|
|
42
|
-
BBSFTranslateService,
|
|
43
|
-
ControlValidationService,
|
|
44
|
-
MasterLayoutService,
|
|
45
|
-
ConfigurationService
|
|
46
|
-
]
|
|
47
|
-
},] }
|
|
48
|
-
];
|
|
49
|
-
BBSFUtilitiesModule.ctorParameters = () => [
|
|
50
|
-
{ type: Injector }
|
|
51
|
-
];
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi11dGlsaXRpZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9iYnNmLXV0aWxpdGllcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRS9FLE1BQU0sQ0FBQyxJQUFJLFdBQXFCLENBQUM7QUE2QmpDLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUU5QixDQUFDOzs7WUFoQ0YsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxFQUNiO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGFBQWEsQ0FBQyxPQUFPLEVBQUU7b0JBQ3ZCLFVBQVU7b0JBQ1YsWUFBWTtvQkFDWixZQUFZLENBQUMsT0FBTyxFQUFFO2lCQUV2QjtnQkFDRCxPQUFPLEVBQUUsRUFFUjtnQkFDRCxTQUFTLEVBQUM7b0JBQ1IsY0FBYztvQkFDZCxrQkFBa0I7b0JBQ2xCLFdBQVc7b0JBQ1gscUJBQXFCO29CQUNyQixtQkFBbUI7b0JBQ25CLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQix3QkFBd0I7b0JBQ3hCLG1CQUFtQjtvQkFDbkIsb0JBQW9CO2lCQUNyQjthQUNGOzs7WUE1Q1EsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdG9yLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJsb2NrVUlNb2R1bGUgfSBmcm9tICduZy1ibG9jay11aSc7XHJcbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBIdHRwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcmVxdWVzdGhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0eWxlc0J1bmRsZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9zdHlsZXNidW5kbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9jb250cm9sdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL21hc3RlcmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGxldCBBcHBJbmplY3RvcjogSW5qZWN0b3I7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQmxvY2tVSU1vZHVsZS5mb3JSb290KCksXHJcbiAgICBIdHRwTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgVG9hc3RyTW9kdWxlLmZvclJvb3QoKSxcclxuXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBcclxuICBdLFxyXG4gIHByb3ZpZGVyczpbXHJcbiAgICBVdGlsaXR5U2VydmljZSxcclxuICAgIEVudmlyb25tZW50U2VydmljZSxcclxuICAgIEF1dGhTZXJ2aWNlLFxyXG4gICAgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgU3R5bGVzQnVuZGxlU2VydmljZSxcclxuICAgIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSxcclxuICAgIE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBDb25maWd1cmF0aW9uU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJCU0ZVdGlsaXRpZXNNb2R1bGUgeyBcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIEFwcEluamVjdG9yID0gdGhpcy5pbmplY3RvcjtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable, Injector } from '@angular/core';
|
|
3
|
-
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
4
|
-
import { UserManager, WebStorageStateStore, } from 'oidc-client';
|
|
5
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
6
|
-
import { EnvironmentService } from '../services/environment.service';
|
|
7
|
-
import { BBSFTranslateService } from '../services/translate.service';
|
|
8
|
-
import { Router } from '@angular/router';
|
|
9
|
-
import { MasterLayoutService } from '../services/masterlayout.service';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/common/http";
|
|
12
|
-
import * as i2 from "../services/environment.service";
|
|
13
|
-
import * as i3 from "../services/translate.service";
|
|
14
|
-
import * as i4 from "@angular/router";
|
|
15
|
-
export class AuthService {
|
|
16
|
-
constructor(injector, http, environmentService, translateService, router) {
|
|
17
|
-
this.injector = injector;
|
|
18
|
-
this.http = http;
|
|
19
|
-
this.environmentService = environmentService;
|
|
20
|
-
this.translateService = translateService;
|
|
21
|
-
this.router = router;
|
|
22
|
-
// Observable navItem source
|
|
23
|
-
this._authNavStatusSource = new BehaviorSubject(false);
|
|
24
|
-
// Observable navItem stream
|
|
25
|
-
this.authNavStatus$ = this._authNavStatusSource.asObservable();
|
|
26
|
-
// Observable navItem source
|
|
27
|
-
this._userSource = new Subject();
|
|
28
|
-
this.UserStatus$ = this._userSource.asObservable();
|
|
29
|
-
this.manager = this.getUserManager();
|
|
30
|
-
this.redirectUrl = '';
|
|
31
|
-
this.manager.getUser().then((user) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
this.manager.storeUser(user);
|
|
33
|
-
AuthService.user = user;
|
|
34
|
-
this.user = user;
|
|
35
|
-
this._authNavStatusSource.next(yield this.isAuthenticated());
|
|
36
|
-
}));
|
|
37
|
-
this.manager.events.addAccessTokenExpired((_) => {
|
|
38
|
-
this._authNavStatusSource.next(false);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
getUserManager() {
|
|
42
|
-
let user = null;
|
|
43
|
-
let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() ==
|
|
44
|
-
'true';
|
|
45
|
-
if (isExternal) {
|
|
46
|
-
user = new UserManager({
|
|
47
|
-
authority: this.environmentService.getIdentityServerUrl(),
|
|
48
|
-
client_id: this.environmentService.getIsIdentityServerClientId(),
|
|
49
|
-
client_secret: this.environmentService.getIsIdentityServerClientSecret(),
|
|
50
|
-
redirect_uri: this.environmentService.getBaseUrl() +
|
|
51
|
-
'/Admin/authentication/auth-callback',
|
|
52
|
-
post_logout_redirect_uri: this.environmentService.getBaseUrl(),
|
|
53
|
-
response_type: 'code',
|
|
54
|
-
scope: 'openid profile email',
|
|
55
|
-
filterProtocolClaims: true,
|
|
56
|
-
loadUserInfo: true,
|
|
57
|
-
automaticSilentRenew: true,
|
|
58
|
-
silent_redirect_uri: this.environmentService.getBaseUrl() + '/assets/silent-callback.html',
|
|
59
|
-
userStore: new WebStorageStateStore({ store: window.localStorage }),
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
user = new UserManager({
|
|
64
|
-
authority: this.environmentService.getIdentityServerUrl(),
|
|
65
|
-
client_id: 'angular_spa',
|
|
66
|
-
redirect_uri: this.environmentService.getBaseUrl() +
|
|
67
|
-
'/Admin/authentication/auth-callback',
|
|
68
|
-
post_logout_redirect_uri: this.environmentService.getBaseUrl(),
|
|
69
|
-
response_type: 'id_token token',
|
|
70
|
-
scope: 'openid profile email IdentityServerApi',
|
|
71
|
-
filterProtocolClaims: true,
|
|
72
|
-
loadUserInfo: true,
|
|
73
|
-
automaticSilentRenew: true,
|
|
74
|
-
silent_redirect_uri: this.environmentService.getBaseUrl() + '/assets/silent-callback.html',
|
|
75
|
-
userStore: new WebStorageStateStore({ store: window.localStorage }),
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return user;
|
|
79
|
-
}
|
|
80
|
-
login() {
|
|
81
|
-
return this.manager.signinRedirect();
|
|
82
|
-
}
|
|
83
|
-
getUser() {
|
|
84
|
-
this.manager.getUser().then((user) => __awaiter(this, void 0, void 0, function* () {
|
|
85
|
-
AuthService.user = user;
|
|
86
|
-
this.user = user;
|
|
87
|
-
this._authNavStatusSource.next(yield this.isAuthenticated());
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
storUser(User) {
|
|
91
|
-
this.manager.storeUser(User);
|
|
92
|
-
}
|
|
93
|
-
revokeAccessToken() {
|
|
94
|
-
this.manager.revokeAccessToken();
|
|
95
|
-
}
|
|
96
|
-
signinSilent() {
|
|
97
|
-
let x = this.manager.signinSilentCallback();
|
|
98
|
-
x.then((s) => {
|
|
99
|
-
//console.log(s)
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
completeAuthentication() {
|
|
103
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
-
this.user = yield this.manager.signinRedirectCallback();
|
|
105
|
-
AuthService.user = this.user;
|
|
106
|
-
this._userSource.next(AuthService.user);
|
|
107
|
-
this._authNavStatusSource.next(yield this.isAuthenticated());
|
|
108
|
-
let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() ==
|
|
109
|
-
'true';
|
|
110
|
-
if (isExternal) {
|
|
111
|
-
const masterLayoutService = this.injector.get(MasterLayoutService);
|
|
112
|
-
let userClaims = yield masterLayoutService
|
|
113
|
-
.getUserClaims()
|
|
114
|
-
.toPromise()
|
|
115
|
-
.then((e) => {
|
|
116
|
-
AuthService.UserClaims = e;
|
|
117
|
-
}, (error) => {
|
|
118
|
-
console.log(error);
|
|
119
|
-
});
|
|
120
|
-
AuthService.user.profile = Object.assign(AuthService.user.profile, AuthService.UserClaims);
|
|
121
|
-
}
|
|
122
|
-
this.storUser(AuthService.user);
|
|
123
|
-
if (!localStorage.getItem('language') ||
|
|
124
|
-
localStorage.getItem('language') == this.user.profile.locale)
|
|
125
|
-
localStorage.setItem('language', this.user.profile.locale);
|
|
126
|
-
if (this.translateService.currentLang != localStorage.getItem('language')) {
|
|
127
|
-
this.translateService.resetLang(this.translateService.currentLang);
|
|
128
|
-
yield this.translateService
|
|
129
|
-
.reloadLang(localStorage.getItem('language'))
|
|
130
|
-
.subscribe((res) => {
|
|
131
|
-
console.log(res);
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
this._userSource.next(AuthService.user);
|
|
135
|
-
this._authNavStatusSource.next(yield this.isAuthenticated());
|
|
136
|
-
this.user = AuthService.user;
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
refreshToken(token) {
|
|
140
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
-
const httpOptions = {
|
|
142
|
-
headers: new HttpHeaders({
|
|
143
|
-
'Content-Type': 'application/json',
|
|
144
|
-
Authorization: token,
|
|
145
|
-
}),
|
|
146
|
-
};
|
|
147
|
-
this.manager.revokeAccessToken();
|
|
148
|
-
return yield this.http
|
|
149
|
-
.post(`${this.environmentService.getIdentityServerUrl()}/users/refresh-token`, httpOptions, { withCredentials: true })
|
|
150
|
-
.subscribe((user) => {
|
|
151
|
-
this._userSource.next(user);
|
|
152
|
-
AuthService.user = user;
|
|
153
|
-
this.user = user;
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
getCurrentUser() {
|
|
158
|
-
return this.manager.getUser();
|
|
159
|
-
}
|
|
160
|
-
isAuthenticated() {
|
|
161
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
-
let user = yield this.manager.getUser().then((user) => {
|
|
163
|
-
return user;
|
|
164
|
-
});
|
|
165
|
-
return this.user != null && !this.user.expired;
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
isUserInRole(allowedPermission) {
|
|
169
|
-
let selectedPermissionSetID = Number.parseInt(this.user.profile['selectedpermissionsetid']);
|
|
170
|
-
return allowedPermission.includes(selectedPermissionSetID);
|
|
171
|
-
}
|
|
172
|
-
authorizationHeaderValue() {
|
|
173
|
-
return AuthService.user
|
|
174
|
-
? `${AuthService.user.token_type} ${AuthService.user.access_token}`
|
|
175
|
-
: '';
|
|
176
|
-
}
|
|
177
|
-
name() {
|
|
178
|
-
return AuthService.user != null ? AuthService.user.profile.given_name : '';
|
|
179
|
-
}
|
|
180
|
-
setUrl(url) {
|
|
181
|
-
localStorage.setItem('redirectUrl', url);
|
|
182
|
-
}
|
|
183
|
-
getUrl() {
|
|
184
|
-
return localStorage.getItem('redirectUrl');
|
|
185
|
-
}
|
|
186
|
-
signinSilentCallback() {
|
|
187
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
-
let user = yield this.manager.signinSilentCallback();
|
|
189
|
-
//await this.manager.storeUser(user);
|
|
190
|
-
AuthService.user = user;
|
|
191
|
-
console.log('Token from signinSilentCallback :' + AuthService.user);
|
|
192
|
-
this.user = user;
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
signout() {
|
|
196
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
197
|
-
if (yield !this.isAuthenticated())
|
|
198
|
-
this.router.navigate(['/Admin/account/login']), localStorage.clear();
|
|
199
|
-
let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() ==
|
|
200
|
-
'true';
|
|
201
|
-
if (isExternal) {
|
|
202
|
-
yield this.clearUserSessionClaims()
|
|
203
|
-
.toPromise()
|
|
204
|
-
.then((res) => {
|
|
205
|
-
let result = res;
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
yield this.manager.signoutRedirect();
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
clearUserSessionClaims() {
|
|
212
|
-
const httpOptions = {
|
|
213
|
-
headers: new HttpHeaders({
|
|
214
|
-
'Content-Type': 'application/json',
|
|
215
|
-
}),
|
|
216
|
-
};
|
|
217
|
-
let ApiUrl = '/api/Home/';
|
|
218
|
-
return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
AuthService.user = null;
|
|
222
|
-
AuthService.UserClaims = null;
|
|
223
|
-
AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.EnvironmentService), i0.ɵɵinject(i3.BBSFTranslateService), i0.ɵɵinject(i4.Router)); }, token: AuthService, providedIn: "root" });
|
|
224
|
-
AuthService.decorators = [
|
|
225
|
-
{ type: Injectable, args: [{
|
|
226
|
-
providedIn: 'root',
|
|
227
|
-
},] }
|
|
228
|
-
];
|
|
229
|
-
AuthService.ctorParameters = () => [
|
|
230
|
-
{ type: Injector },
|
|
231
|
-
{ type: HttpClient },
|
|
232
|
-
{ type: EnvironmentService },
|
|
233
|
-
{ type: BBSFTranslateService },
|
|
234
|
-
{ type: Router }
|
|
235
|
-
];
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9ELE9BQU8sRUFDTCxXQUFXLEVBR1gsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7O0FBTXZFLE1BQU0sT0FBTyxXQUFXO0lBY3RCLFlBQ1UsUUFBa0IsRUFDbEIsSUFBZ0IsRUFDaEIsa0JBQXNDLEVBQ3RDLGdCQUFzQyxFQUN0QyxNQUFjO1FBSmQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbEJ4Qiw0QkFBNEI7UUFDcEIseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkUsNEJBQTRCO1FBQzVCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELDRCQUE0QjtRQUNwQixnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3pELGdCQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxZQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBWTlCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQU8sSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLFVBQVUsR0FDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDbkUsTUFBTSxDQUFDO1FBQ1QsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLEVBQUU7Z0JBQ2hFLGFBQWEsRUFDWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsK0JBQStCLEVBQUU7Z0JBQzNELFlBQVksRUFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFO29CQUNwQyxxQ0FBcUM7Z0JBQ3ZDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUU7Z0JBQzlELGFBQWEsRUFBRSxNQUFNO2dCQUNyQixLQUFLLEVBQUUsc0JBQXNCO2dCQUM3QixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsb0JBQW9CLEVBQUUsSUFBSTtnQkFDMUIsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyw4QkFBOEI7Z0JBQ3ZFLFNBQVMsRUFBRSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNwRSxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFO2dCQUN6RCxTQUFTLEVBQUUsYUFBYTtnQkFDeEIsWUFBWSxFQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUU7b0JBQ3BDLHFDQUFxQztnQkFDdkMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRTtnQkFDOUQsYUFBYSxFQUFFLGdCQUFnQjtnQkFDL0IsS0FBSyxFQUFFLHdDQUF3QztnQkFDL0Msb0JBQW9CLEVBQUUsSUFBSTtnQkFDMUIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLG1CQUFtQixFQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLEdBQUcsOEJBQThCO2dCQUN2RSxTQUFTLEVBQUUsSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDcEUsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBTyxJQUFJLEVBQUUsRUFBRTtZQUN6QyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBUztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNYLGdCQUFnQjtRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFSyxzQkFBc0I7O1lBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDeEQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxVQUFVLEdBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFLENBQUMsV0FBVyxFQUFFO2dCQUNuRSxNQUFNLENBQUM7WUFDVCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ25FLElBQUksVUFBVSxHQUFHLE1BQU0sbUJBQW1CO3FCQUN2QyxhQUFhLEVBQUU7cUJBQ2YsU0FBUyxFQUFFO3FCQUNYLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNWLFdBQVcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLEVBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRTtvQkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNwQixDQUFDLENBQUMsQ0FBQztnQkFDTCxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN0QyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFDeEIsV0FBVyxDQUFDLFVBQVUsQ0FDdkIsQ0FBQzthQUNIO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFDRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUNqQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07Z0JBRTVELFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTdELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN6RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbkUsTUFBTSxJQUFJLENBQUMsZ0JBQWdCO3FCQUN4QixVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDNUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUMvQixDQUFDO0tBQUE7SUFFSyxZQUFZLENBQUMsS0FBSzs7WUFDdEIsTUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztvQkFDdkIsY0FBYyxFQUFFLGtCQUFrQjtvQkFDbEMsYUFBYSxFQUFFLEtBQUs7aUJBQ3JCLENBQUM7YUFDSCxDQUFDO1lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSTtpQkFDbkIsSUFBSSxDQUNILEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixFQUN2RSxXQUFXLEVBQ1gsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQzFCO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUIsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUssZUFBZTs7WUFDbkIsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNwRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pELENBQUM7S0FBQTtJQUNELFlBQVksQ0FBQyxpQkFBMkI7UUFDdEMsSUFBSSx1QkFBdUIsR0FBVyxNQUFNLENBQUMsUUFBUSxDQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUM3QyxDQUFDO1FBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU8sV0FBVyxDQUFDLElBQUk7WUFDckIsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDN0UsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHO1FBQ1IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE1BQU07UUFDSixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNLLG9CQUFvQjs7WUFDeEIsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDckQscUNBQXFDO1lBQ3JDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7S0FBQTtJQUNLLE9BQU87O1lBQ1gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZFLElBQUksVUFBVSxHQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDbkUsTUFBTSxDQUFDO1lBQ1QsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7cUJBQ2hDLFNBQVMsRUFBRTtxQkFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDWixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFDRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkMsQ0FBQztLQUFBO0lBRUQsc0JBQXNCO1FBQ3BCLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsY0FBYyxFQUFFLGtCQUFrQjthQUNuQyxDQUFDO1NBQ0gsQ0FBQztRQUNGLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxNQUFNLEdBQUcseUJBQXlCLEVBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUcsQ0FBQzs7QUE5Tk0sZ0JBQUksR0FBZ0IsSUFBSSxDQUFDO0FBRXpCLHNCQUFVLEdBQVEsSUFBSSxDQUFDOzs7WUFmL0IsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFsQm9CLFFBQVE7WUFDcEIsVUFBVTtZQVNWLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIFVzZXJNYW5hZ2VyLFxyXG4gIFVzZXJNYW5hZ2VyU2V0dGluZ3MsXHJcbiAgVXNlcixcclxuICBXZWJTdG9yYWdlU3RhdGVTdG9yZSxcclxufSBmcm9tICdvaWRjLWNsaWVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hc3RlckxheW91dFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYXN0ZXJsYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcXVlc3RoYW5kbGVyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICAvLyBPYnNlcnZhYmxlIG5hdkl0ZW0gc291cmNlXHJcbiAgcHJpdmF0ZSBfYXV0aE5hdlN0YXR1c1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIC8vIE9ic2VydmFibGUgbmF2SXRlbSBzdHJlYW1cclxuICBhdXRoTmF2U3RhdHVzJCA9IHRoaXMuX2F1dGhOYXZTdGF0dXNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy8gT2JzZXJ2YWJsZSBuYXZJdGVtIHNvdXJjZVxyXG4gIHByaXZhdGUgX3VzZXJTb3VyY2U6IFN1YmplY3Q8VXNlcj4gPSBuZXcgU3ViamVjdDxVc2VyPigpO1xyXG4gIFVzZXJTdGF0dXMkID0gdGhpcy5fdXNlclNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIG1hbmFnZXIgPSB0aGlzLmdldFVzZXJNYW5hZ2VyKCk7XHJcbiAgcHVibGljIHJlZGlyZWN0VXJsOiBzdHJpbmcgPSAnJztcclxuICBzdGF0aWMgdXNlcjogVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIHVzZXI6IFVzZXIgfCBudWxsO1xyXG4gIHN0YXRpYyBVc2VyQ2xhaW1zOiBhbnkgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1hbmFnZXIuZ2V0VXNlcigpLnRoZW4oYXN5bmMgKHVzZXIpID0+IHtcclxuICAgICAgdGhpcy5tYW5hZ2VyLnN0b3JlVXNlcih1c2VyKTtcclxuICAgICAgQXV0aFNlcnZpY2UudXNlciA9IHVzZXI7XHJcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XHJcbiAgICAgIHRoaXMuX2F1dGhOYXZTdGF0dXNTb3VyY2UubmV4dChhd2FpdCB0aGlzLmlzQXV0aGVudGljYXRlZCgpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyZWQoKF8pID0+IHtcclxuICAgICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlck1hbmFnZXIoKSB7XHJcbiAgICBsZXQgdXNlciA9IG51bGw7XHJcbiAgICBsZXQgaXNFeHRlcm5hbCA9XHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElzSWRlbnRpdHlTZXJ2ZXJFeHRlcm5hbCgpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgJ3RydWUnO1xyXG4gICAgaWYgKGlzRXh0ZXJuYWwpIHtcclxuICAgICAgdXNlciA9IG5ldyBVc2VyTWFuYWdlcih7XHJcbiAgICAgICAgYXV0aG9yaXR5OiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJZGVudGl0eVNlcnZlclVybCgpLFxyXG4gICAgICAgIGNsaWVudF9pZDogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SXNJZGVudGl0eVNlcnZlckNsaWVudElkKCksXHJcbiAgICAgICAgY2xpZW50X3NlY3JldDpcclxuICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElzSWRlbnRpdHlTZXJ2ZXJDbGllbnRTZWNyZXQoKSxcclxuICAgICAgICByZWRpcmVjdF91cmk6XHJcbiAgICAgICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgK1xyXG4gICAgICAgICAgJy9BZG1pbi9hdXRoZW50aWNhdGlvbi9hdXRoLWNhbGxiYWNrJyxcclxuICAgICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSxcclxuICAgICAgICByZXNwb25zZV90eXBlOiAnY29kZScsXHJcbiAgICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZSBlbWFpbCcsXHJcbiAgICAgICAgZmlsdGVyUHJvdG9jb2xDbGFpbXM6IHRydWUsXHJcbiAgICAgICAgbG9hZFVzZXJJbmZvOiB0cnVlLFxyXG4gICAgICAgIGF1dG9tYXRpY1NpbGVudFJlbmV3OiB0cnVlLFxyXG4gICAgICAgIHNpbGVudF9yZWRpcmVjdF91cmk6XHJcbiAgICAgICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyAnL2Fzc2V0cy9zaWxlbnQtY2FsbGJhY2suaHRtbCcsXHJcbiAgICAgICAgdXNlclN0b3JlOiBuZXcgV2ViU3RvcmFnZVN0YXRlU3RvcmUoeyBzdG9yZTogd2luZG93LmxvY2FsU3RvcmFnZSB9KSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1c2VyID0gbmV3IFVzZXJNYW5hZ2VyKHtcclxuICAgICAgICBhdXRob3JpdHk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElkZW50aXR5U2VydmVyVXJsKCksXHJcbiAgICAgICAgY2xpZW50X2lkOiAnYW5ndWxhcl9zcGEnLFxyXG4gICAgICAgIHJlZGlyZWN0X3VyaTpcclxuICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSArXHJcbiAgICAgICAgICAnL0FkbWluL2F1dGhlbnRpY2F0aW9uL2F1dGgtY2FsbGJhY2snLFxyXG4gICAgICAgIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpLFxyXG4gICAgICAgIHJlc3BvbnNlX3R5cGU6ICdpZF90b2tlbiB0b2tlbicsXHJcbiAgICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZSBlbWFpbCBJZGVudGl0eVNlcnZlckFwaScsXHJcbiAgICAgICAgZmlsdGVyUHJvdG9jb2xDbGFpbXM6IHRydWUsXHJcbiAgICAgICAgbG9hZFVzZXJJbmZvOiB0cnVlLFxyXG4gICAgICAgIGF1dG9tYXRpY1NpbGVudFJlbmV3OiB0cnVlLFxyXG4gICAgICAgIHNpbGVudF9yZWRpcmVjdF91cmk6XHJcbiAgICAgICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyAnL2Fzc2V0cy9zaWxlbnQtY2FsbGJhY2suaHRtbCcsXHJcbiAgICAgICAgdXNlclN0b3JlOiBuZXcgV2ViU3RvcmFnZVN0YXRlU3RvcmUoeyBzdG9yZTogd2luZG93LmxvY2FsU3RvcmFnZSB9KSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlcjtcclxuICB9XHJcblxyXG4gIGxvZ2luKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFuYWdlci5zaWduaW5SZWRpcmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcigpIHtcclxuICAgIHRoaXMubWFuYWdlci5nZXRVc2VyKCkudGhlbihhc3luYyAodXNlcikgPT4ge1xyXG4gICAgICBBdXRoU2VydmljZS51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHN0b3JVc2VyKFVzZXI6IGFueSkge1xyXG4gICAgdGhpcy5tYW5hZ2VyLnN0b3JlVXNlcihVc2VyKTtcclxuICB9XHJcblxyXG4gIHJldm9rZUFjY2Vzc1Rva2VuKCkge1xyXG4gICAgdGhpcy5tYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuKCk7XHJcbiAgfVxyXG5cclxuICBzaWduaW5TaWxlbnQoKSB7XHJcbiAgICBsZXQgeCA9IHRoaXMubWFuYWdlci5zaWduaW5TaWxlbnRDYWxsYmFjaygpO1xyXG4gICAgeC50aGVuKChzKSA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2cocylcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29tcGxldGVBdXRoZW50aWNhdGlvbigpIHtcclxuICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMubWFuYWdlci5zaWduaW5SZWRpcmVjdENhbGxiYWNrKCk7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gdGhpcy51c2VyO1xyXG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KEF1dGhTZXJ2aWNlLnVzZXIpO1xyXG4gICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gICAgbGV0IGlzRXh0ZXJuYWwgPVxyXG4gICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJc0lkZW50aXR5U2VydmVyRXh0ZXJuYWwoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgICd0cnVlJztcclxuICAgIGlmIChpc0V4dGVybmFsKSB7XHJcbiAgICAgIGNvbnN0IG1hc3RlckxheW91dFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChNYXN0ZXJMYXlvdXRTZXJ2aWNlKTtcclxuICAgICAgbGV0IHVzZXJDbGFpbXMgPSBhd2FpdCBtYXN0ZXJMYXlvdXRTZXJ2aWNlXHJcbiAgICAgICAgLmdldFVzZXJDbGFpbXMoKVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAgIC50aGVuKChlKSA9PiB7XHJcbiAgICAgICAgICBBdXRoU2VydmljZS5Vc2VyQ2xhaW1zID0gZTtcclxuICAgICAgICB9LChlcnJvcik9PntcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICBBdXRoU2VydmljZS51c2VyLnByb2ZpbGUgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgIEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZSxcclxuICAgICAgICBBdXRoU2VydmljZS5Vc2VyQ2xhaW1zXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdG9yVXNlcihBdXRoU2VydmljZS51c2VyKTtcclxuICAgIGlmIChcclxuICAgICAgIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpIHx8XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpID09IHRoaXMudXNlci5wcm9maWxlLmxvY2FsZVxyXG4gICAgKVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZ3VhZ2UnLCB0aGlzLnVzZXIucHJvZmlsZS5sb2NhbGUpO1xyXG5cclxuICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykpIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnJlc2V0TGFuZyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpO1xyXG4gICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcclxuICAgICAgICAucmVsb2FkTGFuZyhsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91c2VyU291cmNlLm5leHQoQXV0aFNlcnZpY2UudXNlcik7XHJcbiAgICB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLm5leHQoYXdhaXQgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSk7XHJcbiAgICB0aGlzLnVzZXIgPSBBdXRoU2VydmljZS51c2VyO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFRva2VuKHRva2VuKSB7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIEF1dGhvcml6YXRpb246IHRva2VuLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5tYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuKCk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oXHJcbiAgICAgICAgYCR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SWRlbnRpdHlTZXJ2ZXJVcmwoKX0vdXNlcnMvcmVmcmVzaC10b2tlbmAsXHJcbiAgICAgICAgaHR0cE9wdGlvbnMsXHJcbiAgICAgICAgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHVzZXIpID0+IHtcclxuICAgICAgICB0aGlzLl91c2VyU291cmNlLm5leHQodXNlcik7XHJcbiAgICAgICAgQXV0aFNlcnZpY2UudXNlciA9IHVzZXI7XHJcbiAgICAgICAgdGhpcy51c2VyID0gdXNlcjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLm1hbmFnZXIuZ2V0VXNlcigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaXNBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IHVzZXIgPSBhd2FpdCB0aGlzLm1hbmFnZXIuZ2V0VXNlcigpLnRoZW4oKHVzZXIpID0+IHtcclxuICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLnVzZXIgIT0gbnVsbCAmJiAhdGhpcy51c2VyLmV4cGlyZWQ7XHJcbiAgfVxyXG4gIGlzVXNlckluUm9sZShhbGxvd2VkUGVybWlzc2lvbjogbnVtYmVyW10pIHtcclxuICAgIGxldCBzZWxlY3RlZFBlcm1pc3Npb25TZXRJRDogbnVtYmVyID0gTnVtYmVyLnBhcnNlSW50KFxyXG4gICAgICB0aGlzLnVzZXIucHJvZmlsZVsnc2VsZWN0ZWRwZXJtaXNzaW9uc2V0aWQnXVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGxvd2VkUGVybWlzc2lvbi5pbmNsdWRlcyhzZWxlY3RlZFBlcm1pc3Npb25TZXRJRCk7XHJcbiAgfVxyXG5cclxuICBhdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyXHJcbiAgICAgID8gYCR7QXV0aFNlcnZpY2UudXNlci50b2tlbl90eXBlfSAke0F1dGhTZXJ2aWNlLnVzZXIuYWNjZXNzX3Rva2VufWBcclxuICAgICAgOiAnJztcclxuICB9XHJcblxyXG4gIG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyICE9IG51bGwgPyBBdXRoU2VydmljZS51c2VyLnByb2ZpbGUuZ2l2ZW5fbmFtZSA6ICcnO1xyXG4gIH1cclxuICBzZXRVcmwodXJsKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncmVkaXJlY3RVcmwnLCB1cmwpO1xyXG4gIH1cclxuICBnZXRVcmwoKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZGlyZWN0VXJsJyk7XHJcbiAgfVxyXG4gIGFzeW5jIHNpZ25pblNpbGVudENhbGxiYWNrKCkge1xyXG4gICAgbGV0IHVzZXIgPSBhd2FpdCB0aGlzLm1hbmFnZXIuc2lnbmluU2lsZW50Q2FsbGJhY2soKTtcclxuICAgIC8vYXdhaXQgdGhpcy5tYW5hZ2VyLnN0b3JlVXNlcih1c2VyKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB1c2VyO1xyXG4gICAgY29uc29sZS5sb2coJ1Rva2VuIGZyb20gIHNpZ25pblNpbGVudENhbGxiYWNrIDonICsgQXV0aFNlcnZpY2UudXNlcik7XHJcbiAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gIH1cclxuICBhc3luYyBzaWdub3V0KCkge1xyXG4gICAgaWYgKGF3YWl0ICF0aGlzLmlzQXV0aGVudGljYXRlZCgpKVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9BZG1pbi9hY2NvdW50L2xvZ2luJ10pLCBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIGxldCBpc0V4dGVybmFsID1cclxuICAgICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SXNJZGVudGl0eVNlcnZlckV4dGVybmFsKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICAndHJ1ZSc7XHJcbiAgICBpZiAoaXNFeHRlcm5hbCkge1xyXG4gICAgICBhd2FpdCB0aGlzLmNsZWFyVXNlclNlc3Npb25DbGFpbXMoKVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLm1hbmFnZXIuc2lnbm91dFJlZGlyZWN0KCk7XHJcbiAgfVxyXG5cclxuICBjbGVhclVzZXJTZXNzaW9uQ2xhaW1zKCkge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICAgbGV0IEFwaVVybCA9ICcvYXBpL0hvbWUvJztcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSArIEFwaVVybCArICdDbGVhckN1cnJlbnRVc2VyU2Vzc2lvbicsaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|