{"version":3,"file":"scripts/@lvflanders/bar-ng/lvflanders-bar-ng-14.min.js","mappings":"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","sources":["webpack://ng-cli/webpack/runtime/create fake namespace object","webpack://ng-cli/webpack/bootstrap","webpack://ng-cli/webpack/runtime/define property getters","webpack://ng-cli/webpack/runtime/hasOwnProperty shorthand","webpack://ng-cli/webpack/runtime/make namespace object","webpack://ng-cli/external var \"ng.core\"","webpack://ng-cli/external var \"rxjs\"","webpack://ng-cli/external var \"lvflanders.bar.shared\"","webpack://ng-cli/external var \"ng.common\"","webpack://ng-cli/external var \"ng.common.http\"","webpack://ng-cli/external var \"ng.common.locales.extra.nl\"","webpack://ng-cli/external var \"ng.common.locales.extra.nlBe\"","webpack://ng-cli/external var \"ng.common.locales.nl\"","webpack://ng-cli/external var \"ng.common.locales.nlBe\"","webpack://ng-cli/external var \"ng.router\"","webpack://ng-cli/external var \"lvflanders.bar.ng.i18n\"","webpack://ng-cli/external var \"rxjs.operators\"","webpack://ng-cli/external var \"window[\\\"date-fns\\\"]\"","webpack://ng-cli/./node_modules/tslib/tslib.es6.mjs","webpack://ng-cli/external var \"ng.material.icon\"","webpack://ng-cli/./dist/@lvflanders/bar-ng/fesm2015/lvflanders-bar-ng.mjs","webpack://ng-cli/./cdn/lvflanders-bar-ng.ts"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = ng.core;","const __WEBPACK_NAMESPACE_OBJECT__ = rxjs;","const __WEBPACK_NAMESPACE_OBJECT__ = lvflanders.bar.shared;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.common;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.common.http;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.common.locales.extra.nl;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.common.locales.extra.nlBe;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.common.locales.nl;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.common.locales.nlBe;","const __WEBPACK_NAMESPACE_OBJECT__ = ng.router;","const __WEBPACK_NAMESPACE_OBJECT__ = lvflanders.bar.ng.i18n;","const __WEBPACK_NAMESPACE_OBJECT__ = rxjs.operators;","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"date-fns\"];","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = ng.material.icon;","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, EventEmitter, APP_INITIALIZER, Inject, Optional, Component, LOCALE_ID, ErrorHandler, NgModule, inject } from '@angular/core';\nimport { BehaviorSubject, Subject, of, from, Observable, lastValueFrom, defer, forkJoin, map as map$1, catchError as catchError$1, tap as tap$1, filter, switchMap, mergeMap as mergeMap$1, takeUntil, throwError, EMPTY } from 'rxjs';\nimport * as i1$3 from '@lvflanders/bar';\nimport { openUrl, resolveValue, ensureGlobal, BarErrorHandling, checkDateObject, convertToISOString, LOCALE, getParamNames, BarCacheManager, BarCacheStore, BarCacheEntryOptions, _BAAS_SHARED_CONSTANTS, deleteCookie, BarStopwatch, generateRandomNumber, concatUrl, deleteAllIndexedDb, deleteAllCookies, BarCacheStoreType, versionCompare, checkUrlAbsolute, generateUuid, extractUrlParts, parseQueryStringValue, BarIdpClient, extractUrlOrigin, BarGvkManager, BarHubClient, BarNotificationManager, checkLocalhost, BarSharedBootstrapper } from '@lvflanders/bar';\nimport { registerLocaleData, Location, LocationStrategy, PathLocationStrategy, NgIf, APP_BASE_HREF, CommonModule } from '@angular/common';\nimport * as i1$1 from '@angular/common/http';\nimport { HttpParams, HttpResponse, HTTP_INTERCEPTORS, HttpHeaders, HttpClient } from '@angular/common/http';\nimport localeNlExtra from '@angular/common/locales/extra/nl';\nimport localeNlBeExtra from '@angular/common/locales/extra/nl-BE';\nimport localeNl from '@angular/common/locales/nl';\nimport localeNlBe from '@angular/common/locales/nl-BE';\nimport * as i1 from '@angular/router';\nimport { Router, DefaultUrlSerializer, UrlSerializer, RouterModule, NavigationEnd, NavigationStart, NavigationError } from '@angular/router';\nimport * as i1$2 from '@lvflanders/bar-ng-i18n';\nimport { BarI18nModule } from '@lvflanders/bar-ng-i18n';\nimport { mergeMap, catchError, tap, map, delayWhen, retry } from 'rxjs/operators';\nimport { parseISO, isAfter, isBefore, isEqual } from 'date-fns';\nimport { __classPrivateFieldGet, __awaiter, __decorate } from 'tslib';\nimport * as i1$4 from '@angular/material/icon';\nimport { MatIconModule } from '@angular/material/icon';\n\n// injection token to have same class injected in different ways\r\nconst BAR_GLOBAL_CACHE = new InjectionToken('Global cache store');\r\nconst BAR_USER_CACHE = new InjectionToken('User cache store');\r\nconst BAR_APP_CACHE = new InjectionToken('Application cache store');\r\nconst BAR_MELDINGEN_CACHE = new InjectionToken('Meldingen cache store');\r\n/** Token for BAR initialized lifecycle hook. */\r\nconst BAR_INITIALIZED = new InjectionToken('BAR initialized token.');\r\n/** Token for BAR error handler hook. */\r\nconst BAR_ERROR_HANDLER = new InjectionToken('BAR error handling token.');\r\nconst BAR_LOG_OFF = new InjectionToken('BAR log off token');\r\n/** Token used to define whether running under localhost. */\r\nconst BAR_LOCALHOST = new InjectionToken('BAR localhost token');\n\nconst APP_INFO_COOKIE_KEY = 'domain.basisarchitectuur.appinfo';\r\nconst PAGES_ROOT_PATH = 'bui/';\r\nconst STORAGE_KEY_PREFIX = 'lvflanders.bar.ng.core.';\r\nconst BAR_CORE_CONSTANTS = {\r\n STORAGE_KEY_PREFIX,\r\n DEFAULT_MEETPUNT_TYPE: 'NG',\r\n STORAGE_KEYS: {\r\n SESSION_ID: 'sessionId',\r\n IDP_IMPERSONATE: STORAGE_KEY_PREFIX + 'idpImpersonate'\r\n },\r\n URL_SEGMENT: {\r\n BAR_WEB: '/basisarchitectuur/domain.basisarchitectuur.web/',\r\n BAAS_STATIC: '/{segment}/baas-static/web/',\r\n BAAS_WEB: '/{segment}/baasweb/web/'\r\n },\r\n AUDIT: {\r\n HTML_ATTRIBUTE_AUDIT_ID: 'data-bar-audit-id',\r\n HTML_ATTRIBUTE_AUDIT_TYPE: 'data-bar-audit-type'\r\n },\r\n COOKIE: {\r\n APP_INFO: {\r\n MAIN: APP_INFO_COOKIE_KEY,\r\n SESSION: APP_INFO_COOKIE_KEY + '.session',\r\n SECURE: APP_INFO_COOKIE_KEY + '.secure'\r\n }\r\n },\r\n HEADERS: {\r\n BAAS_BACKEND_HEADER: 'baas.context.backend',\r\n BAAS_BROWSER_CALLSTACK: 'baas.browser.callstack'\r\n },\r\n PAGES: {\r\n ONBESCHIKBAAR: PAGES_ROOT_PATH + 'blokkerende-melding',\r\n SESSION_EXPIRED: PAGES_ROOT_PATH + 'session-expired',\r\n INSUFFICIENT_PRIVILEGES: PAGES_ROOT_PATH + 'insufficient-privileges',\r\n LOG_OFF: PAGES_ROOT_PATH + 'log-off'\r\n }\r\n};\n\nclass BarRoutingService {\r\n constructor(router) {\r\n this.router = router;\r\n }\r\n /**\r\n * Will navigates to a given url and make sure the current component is not reused in case of a same route navigation (reload).\r\n * @param url\r\n */\r\n navigateByUrlWithReload(url, extras) {\r\n return new Promise((resolve, reject) => {\r\n // navigate to the bar refresh route to then navigate to the same url (tricks of the trade)\r\n this.router.navigateByUrl('/bar-refresh', { skipLocationChange: true }).then(() => {\r\n // to then navigate back to the same page\r\n this.router\r\n .navigateByUrl(url)\r\n .then((value) => {\r\n resolve(value);\r\n })\r\n .catch((reason) => {\r\n reject(reason);\r\n });\r\n });\r\n });\r\n }\r\n /**\r\n * Will navigates based on command array and make sure the current component is not reused in case of a same route navigation (reload).\r\n * @param url\r\n */\r\n navigateWithReload(commands, extras) {\r\n return new Promise((resolve, reject) => {\r\n // navigate to the bar refresh route to then navigate to the same url (tricks of the trade)\r\n this.router.navigateByUrl('/bar-refresh', { skipLocationChange: true }).then(() => {\r\n // to then navigate back to the same page\r\n this.router\r\n .navigate(commands, extras)\r\n .then((value) => {\r\n resolve(value);\r\n })\r\n .catch((reason) => {\r\n reject(reason);\r\n });\r\n });\r\n });\r\n }\r\n}\r\nBarRoutingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarRoutingService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarRoutingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarRoutingService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarRoutingService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: i1.Router }]; } });\n\n/**\r\n Holds state of the BAR core module within the single page.\r\n With this in place we can access the state anywhere.\r\n */\r\n// NOTE not a model because injectable provider and not a service because it only holds state\r\nclass BarCoreStateService {\r\n constructor() {\r\n /** Meldingen set by the BarMeldingGuard */\r\n this.meldingen$ = new BehaviorSubject(undefined);\r\n }\r\n}\r\nBarCoreStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarCoreStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreStateService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreStateService, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass BarCoreService {\r\n constructor(\r\n // all app initializers need to be run again\r\n appInits, injector, coreState) {\r\n this.appInits = appInits;\r\n this.injector = injector;\r\n this.coreState = coreState;\r\n /** Global core event that is invoked when an error occurs. */\r\n this.errorOccurred = new EventEmitter();\r\n /** Event invoked when performed soft refresh. */\r\n this.refreshed = new EventEmitter();\r\n /** Occurs when a custom message is send from the BaaS hub and received in the client. */\r\n this.customHubMessageReceived = new EventEmitter();\r\n // Listen for the custom event on a JavaScript object or DOM element\r\n window.addEventListener('customHubMessage', (event) => {\r\n this.customHubMessageReceived.emit(event.detail);\r\n });\r\n }\r\n // avoid cyclic dependency\r\n get router() {\r\n return this.injector.get(Router);\r\n }\r\n get routing() {\r\n return this.injector.get(BarRoutingService);\r\n }\r\n /** Performs a soft refresh (make sure to have onSameUrlNavigation set to 'reload' in the routing setup) */\r\n refresh() {\r\n return new Promise((resolve) => {\r\n // https://dormoshe.io/articles/hook-into-angular-initialization-process-8\r\n // get all async promises (or executed if no promise)\r\n const initPromises = [];\r\n if (this.appInits) {\r\n this.appInits.forEach((appInit) => {\r\n const initResult = appInit();\r\n const promise = Promise.resolve(initResult);\r\n initPromises.push(promise);\r\n });\r\n }\r\n // after executing all startup logic\r\n Promise.all(initPromises).then(() => {\r\n // save url before navigating (otherwise wrong one)\r\n const url = this.router.url;\r\n // use custom navigate with to reload to ensure route component is completely reloaded\r\n this.routing.navigateWithReload([url]).then(() => {\r\n this.refreshed.emit();\r\n resolve();\r\n });\r\n });\r\n });\r\n }\r\n /**\r\n * Navigate to the defined home url (default is startscherm)\r\n * @param invokeHomeAction Whether to invoke the custom home action defined in this service as a property.\r\n */\r\n navigateHome(invokeHomeAction = true) {\r\n return this.navigateAction(invokeHomeAction, () => {\r\n window.location = this.coreState.config.homeUrl;\r\n }, this.homeAction, undefined);\r\n }\r\n navigateRoot(invokeRootAction = true, event = undefined) {\r\n return this.navigateAction(invokeRootAction, () => {\r\n const newTab = event && (event.ctrlKey || event.metaKey);\r\n if (newTab) {\r\n openUrl(this.coreState.location.spa.url, '_blank');\r\n }\r\n else {\r\n this.router.navigate(['./']);\r\n }\r\n }, this.rootAction, event);\r\n }\r\n navigateAction(invokeAction, defaultAction, action, event) {\r\n // return a promise for whatever use\r\n return new Promise((resolve) => {\r\n let defaultBehaviour = false;\r\n if (invokeAction && action != null) {\r\n if (action.action != null) {\r\n const result = action.action(event);\r\n if (result instanceof Promise) {\r\n result.then(() => {\r\n resolve();\r\n });\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n else if (action.routerUrl != null) {\r\n const routerUrl = resolveValue(action.routerUrl);\r\n this.router.navigateByUrl(routerUrl).then(() => {\r\n resolve();\r\n });\r\n }\r\n else if (action.routerCommands != null) {\r\n const routerLink = resolveValue(action.routerCommands);\r\n this.router.navigate(routerLink).then((a) => {\r\n resolve();\r\n });\r\n }\r\n else if (action.href != null) {\r\n const href = resolveValue(action.href);\r\n openUrl(href, action.target);\r\n resolve();\r\n }\r\n else {\r\n defaultBehaviour = true;\r\n }\r\n }\r\n else {\r\n defaultBehaviour = true;\r\n }\r\n if (defaultBehaviour) {\r\n defaultAction();\r\n resolve();\r\n }\r\n });\r\n }\r\n}\r\nBarCoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreService, deps: [{ token: APP_INITIALIZER, optional: true }, { token: i0.Injector }, { token: BarCoreStateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarCoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () {\r\n return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [APP_INITIALIZER]\r\n }, {\r\n type: Optional\r\n }] }, { type: i0.Injector }, { type: BarCoreStateService, decorators: [{\r\n type: Optional\r\n }] }];\r\n } });\n\nclass BarLogModel {\r\n}\n\nvar BarLogLevel;\r\n(function (BarLogLevel) {\r\n BarLogLevel[BarLogLevel[\"Debug\"] = 0] = \"Debug\";\r\n BarLogLevel[BarLogLevel[\"Audit\"] = 1] = \"Audit\";\r\n BarLogLevel[BarLogLevel[\"Info\"] = 2] = \"Info\";\r\n BarLogLevel[BarLogLevel[\"Warn\"] = 3] = \"Warn\";\r\n BarLogLevel[BarLogLevel[\"Error\"] = 4] = \"Error\";\r\n BarLogLevel[BarLogLevel[\"Critical\"] = 5] = \"Critical\";\r\n})(BarLogLevel || (BarLogLevel = {}));\n\n/**\r\n * Represents a mechanism to add items to a queue and to read them out to execute something.\r\n */\r\nclass BarQueueProcessor {\r\n /**\r\n * Constructor.\r\n * @param storage Storage to use.\r\n * @param storageKey Key to use in the storage.\r\n */\r\n constructor(storage, storageKey) {\r\n this.storage = storage;\r\n this.storageKey = storageKey;\r\n this.started = false;\r\n }\r\n /**\r\n * Starts listening to the queue.\r\n * @param interval Interval in milliseconds to get items from the queue.\r\n * @param dequeueCount Number of items to get from the queue.\r\n */\r\n start(interval, dequeueCount) {\r\n this.subject$ = new Subject();\r\n this.execute$ = this.subject$.asObservable();\r\n this.intervalId = window.setInterval(() => this.dequeue(dequeueCount), interval);\r\n this.started = true;\r\n }\r\n /**\r\n * Stops listening to the queue.\r\n */\r\n stop() {\r\n if (this.started) {\r\n this.started = false;\r\n this.subject$.complete();\r\n this.subject$ = null;\r\n this.execute$ = null;\r\n window.clearInterval(this.intervalId);\r\n this.intervalId = null;\r\n }\r\n }\r\n /**\r\n * Adds an item to the queue.\r\n * @param item\r\n */\r\n enqueue(item) {\r\n let queueStr = this.storage.getItem(this.storageKey);\r\n let queue = null;\r\n if (queueStr == null) {\r\n queue = [];\r\n }\r\n else {\r\n queue = JSON.parse(queueStr);\r\n }\r\n queue.push(item);\r\n queueStr = JSON.stringify(queue);\r\n this.storage.setItem(this.storageKey, queueStr);\r\n }\r\n dequeue(dequeueCount) {\r\n let queueStr = this.storage.getItem(this.storageKey);\r\n if (queueStr != null) {\r\n let queue = JSON.parse(queueStr);\r\n if (queue.length > 0) {\r\n const itemsToSend = queue.slice(0, dequeueCount);\r\n queue = queue.slice(dequeueCount);\r\n if (queue.length == 0) {\r\n this.storage.removeItem(this.storageKey);\r\n }\r\n else {\r\n queueStr = JSON.stringify(queue);\r\n this.storage.setItem(this.storageKey, queueStr);\r\n }\r\n this.subject$.next(itemsToSend);\r\n }\r\n }\r\n }\r\n}\n\n// https://stackoverflow.com/a/46078299/2174621\r\nclass BarHttpParams extends HttpParams {\r\n constructor(\r\n /**This means this is a request that should pass the interceptor but happens in background*/\r\n backgroundRequest = false, \r\n /**This means interception should be ommited*/\r\n ommitInterceptor = false, options) {\r\n super(options);\r\n this.backgroundRequest = backgroundRequest;\r\n this.ommitInterceptor = ommitInterceptor;\r\n }\r\n}\n\nclass BarLoggingHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n save(logs) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/logging', logs, { params: new BarHttpParams(true, false) });\r\n }\r\n}\r\nBarLoggingHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarLoggingHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarLoggingHttpService {\r\n}\r\nBarLoggingHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarLoggingHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingHttpService, providedIn: 'root', useClass: BarLoggingHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarLoggingHttpDefaultService }]\r\n }] });\n\n/**\r\n BAR connectivity modus. In the future extra connectivities could be supported (no boolean).\r\n */\r\nvar BarConnectivity;\r\n(function (BarConnectivity) {\r\n /** The application is online -> connect to remote BAR */\r\n BarConnectivity[BarConnectivity[\"Online\"] = 0] = \"Online\";\r\n /** The application is offline -> connect to local BAR (in the same process) */\r\n BarConnectivity[BarConnectivity[\"Offline\"] = 1] = \"Offline\";\r\n})(BarConnectivity || (BarConnectivity = {}));\n\nclass BarAuthOptions {\r\n constructor() {\r\n /** Whether authentication is enabled */\r\n this.enabled = true;\r\n /** Whether IDP validation is enabled. */\r\n this.validation = true;\r\n }\r\n}\n\nclass BarConnectedModuleOptions {\r\n constructor() {\r\n /** The authentication options */\r\n this.auth = new BarAuthOptions();\r\n /** Whether the sources (static files, web api) are local or remote */\r\n this.connectivity = BarConnectivity.Online;\r\n }\r\n}\n\nclass BarLoggingService {\r\n constructor(state, loggingHttpService, config) {\r\n this.state = state;\r\n this.loggingHttpService = loggingHttpService;\r\n this.config = config;\r\n // instantiate the queue with session storage\r\n this.queueProcessor = new BarQueueProcessor(window.sessionStorage, `${BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX}logQueue`);\r\n }\r\n error(log) {\r\n this.post(log, BarLogLevel.Error);\r\n }\r\n warn(log) {\r\n this.post(log, BarLogLevel.Warn);\r\n }\r\n critical(log) {\r\n this.post(log, BarLogLevel.Critical);\r\n }\r\n info(log) {\r\n this.post(log, BarLogLevel.Info);\r\n }\r\n /**\r\n * Inits logging logic (init != start).\r\n */\r\n init() {\r\n const global = ensureGlobal('lvflanders.bar.ng.core.logging');\r\n Object.defineProperty(global, 'failedLogs', {\r\n get() {\r\n const failedLogsStr = window.localStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'failedLogs');\r\n return failedLogsStr != null ? JSON.parse(failedLogsStr) : null;\r\n }\r\n });\r\n }\r\n /**\r\n * Start to listen to the log queue.\r\n */\r\n start() {\r\n // start listening to the queue\r\n this.queueProcessor.start(this.state.config.log.interval, this.state.config.log.itemCount);\r\n // post items to back-end with interval\r\n this.queueProcessor.execute$\r\n .pipe(mergeMap((logs) => this.loggingHttpService.save(logs).pipe(catchError((error) => {\r\n console.error(error);\r\n // in case of failure we store this in the local storage with a timestamp\r\n const failedLogsStr = window.localStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'failedLogs');\r\n const failedLogs = failedLogsStr != null ? JSON.parse(failedLogsStr) : [];\r\n logs.forEach((log) => {\r\n log.timestamp = new Date();\r\n failedLogs.push(log);\r\n });\r\n window.localStorage.setItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'failedLogs', JSON.stringify(failedLogs));\r\n return of(null);\r\n }))))\r\n .subscribe();\r\n }\r\n post(log, level) {\r\n var _a;\r\n if (!((_a = this.state.config) === null || _a === void 0 ? void 0 : _a.log.enabled))\r\n return;\r\n const model = new BarLogModel();\r\n model.logLevel = level;\r\n model.message = log.message;\r\n if (log.error != null) {\r\n if (typeof log.error === 'string') {\r\n model.exception = log.error;\r\n if (model.message == null) {\r\n model.message = log.error;\r\n }\r\n }\r\n else {\r\n model.exception = log.error.message;\r\n model.stackTrace = log.error.stack;\r\n if (model.message == null) {\r\n model.message = log.error.message;\r\n }\r\n }\r\n }\r\n // toepassing informatie meegeven om te loggen in context van die toepassing (use config if null)\r\n if (this.state.toepassing != null) {\r\n model.appCode = this.state.toepassing.code;\r\n model.appVersion = this.state.toepassing.versie;\r\n }\r\n else {\r\n model.appCode = this.config.appCode;\r\n model.appVersion = this.config.appVersion;\r\n }\r\n if (!model.message)\r\n model.message = '';\r\n // append the current URL for extra information purposes\r\n model.message += `\\r\\n\\r\\nURL: ${window.location.href}`;\r\n this.queueProcessor.enqueue(model);\r\n }\r\n}\r\nBarLoggingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingService, deps: [{ token: BarCoreStateService }, { token: BarLoggingHttpService }, { token: BarConnectedModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarLoggingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLoggingService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }, { type: BarLoggingHttpService }, { type: BarConnectedModuleOptions }]; } });\n\n// https://medium.com/@amcdnl/global-error-handling-with-angular2-6b992bdfb59c\r\nclass BarErrorHandler {\r\n constructor(zone, core, logging, errorHandlerHooks) {\r\n this.zone = zone;\r\n this.core = core;\r\n this.logging = logging;\r\n this.errorHandlerHooks = errorHandlerHooks;\r\n const global = ensureGlobal('lvflanders.bar.ng.core');\r\n // make global variable to handle the error from outside Angular\r\n global.handleError = (error) => {\r\n // run back in Angular zone from outside Angular\r\n this.zone.run(() => {\r\n // invoke error routine\r\n this.handleError(error);\r\n });\r\n };\r\n }\r\n handleError(error) {\r\n var _a;\r\n if (error == null)\r\n return;\r\n if (typeof error === 'object') {\r\n error.handled = true;\r\n }\r\n let proceed = true;\r\n // process angular hooks\r\n if (this.errorHandlerHooks && this.errorHandlerHooks.length) {\r\n this.errorHandlerHooks.forEach((hook) => {\r\n const args = {\r\n handled: false,\r\n error: error\r\n };\r\n hook.run(args);\r\n if (args.handled)\r\n proceed = false;\r\n });\r\n }\r\n // process non-angular handlers\r\n if ((_a = BarErrorHandling.instance.delegates) === null || _a === void 0 ? void 0 : _a.length) {\r\n BarErrorHandling.instance.delegates.forEach((handler) => {\r\n const args = {\r\n handled: false,\r\n error: error\r\n };\r\n handler.handle(args);\r\n if (args.handled)\r\n proceed = false;\r\n });\r\n }\r\n // a hook already handled the error, stop proceeding\r\n if (!proceed)\r\n return;\r\n // do something with the exception\r\n try {\r\n console.error(error);\r\n const getCircularReplacer = () => {\r\n const seen = new WeakSet();\r\n return (key, value) => {\r\n if (typeof value === 'object' && value !== null) {\r\n if (seen.has(value)) {\r\n return;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n };\r\n };\r\n // put the error in session storage\r\n window.sessionStorage[BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'error'] = JSON.stringify(error, getCircularReplacer());\r\n this.core.errorOccurred.emit(error);\r\n if (this.logging != null) {\r\n this.logging.error({ error });\r\n }\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\nBarErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarErrorHandler, deps: [{ token: i0.NgZone }, { token: BarCoreService }, { token: BarLoggingService, optional: true }, { token: BAR_ERROR_HANDLER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarErrorHandler });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarErrorHandler, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i0.NgZone }, { type: BarCoreService }, { type: BarLoggingService, decorators: [{\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_ERROR_HANDLER]\r\n }, {\r\n type: Optional\r\n }] }];\r\n } });\n\nclass BarErrorExpressionChangedAfterCheckedHook {\r\n /** Invoked by the error handler. */\r\n run(args) {\r\n if (args.error && args.error.code === '100' && args.error.message && args.error.message.startsWith('NG0100')) {\r\n args.handled = true;\r\n console.error(args.error);\r\n }\r\n }\r\n}\n\n/** Represents the strategy to use for converting date objects to strings. */\r\nvar BarDateTimeConversionStrategy;\r\n(function (BarDateTimeConversionStrategy) {\r\n /** Converts the date to an iso string with the exact same date. */\r\n BarDateTimeConversionStrategy[BarDateTimeConversionStrategy[\"Iso\"] = 0] = \"Iso\";\r\n /** Converts the date to an iso string in GMT 0. */\r\n BarDateTimeConversionStrategy[BarDateTimeConversionStrategy[\"IsoGmt\"] = 1] = \"IsoGmt\";\r\n})(BarDateTimeConversionStrategy || (BarDateTimeConversionStrategy = {}));\n\nclass BarCoreModuleOptions {\r\n}\n\n// NOTE based on https://gist.github.com/martinobordin/39bb1fe3400a29c1078dec00ff76bba9\r\nconst ISO_8601_REGEX = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/;\r\n/** This http interceptor will capture json calls and transform ISO strings to Date objects through date-fns and vice versa. */\r\nclass BarDateTimeHttpInterceptor {\r\n constructor(moduleOptions) {\r\n this.moduleOptions = moduleOptions;\r\n }\r\n intercept(req, next) {\r\n this.traverseInput(req.body);\r\n return next.handle(req).pipe(tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n const body = event.body;\r\n this.traverseOutput(body);\r\n }\r\n }));\r\n }\r\n traverseInput(body) {\r\n this.traverse(body, (value) => checkDateObject(value), (value) => this.convertToISOString(value), (body) => this.traverseInput(body));\r\n }\r\n traverseOutput(body) {\r\n this.traverse(body, (value) => this.isIso8601(value), (value) => parseISO(value), (body) => this.traverseOutput(body));\r\n }\r\n convertToISOString(value) {\r\n switch (this.moduleOptions.dateTimeInterception.conversionStrategy) {\r\n case BarDateTimeConversionStrategy.IsoGmt:\r\n return value.toISOString();\r\n default:\r\n case BarDateTimeConversionStrategy.Iso:\r\n return convertToISOString(value);\r\n }\r\n }\r\n traverse(body, matcher, converter, traverser) {\r\n if (body == null || typeof body !== 'object')\r\n return;\r\n if (Array.isArray(body)) {\r\n for (let i = 0; i < body.length; i++) {\r\n const value = body[i];\r\n if (matcher(value)) {\r\n body[i] = converter(value);\r\n }\r\n else if (typeof value === 'object') {\r\n traverser(value);\r\n }\r\n }\r\n }\r\n else {\r\n for (const key of Object.keys(body)) {\r\n const value = body[key];\r\n if (matcher(value)) {\r\n body[key] = converter(value);\r\n }\r\n else if (typeof value === 'object') {\r\n traverser(value);\r\n }\r\n }\r\n }\r\n }\r\n isIso8601(value) {\r\n if (value === null || value === undefined)\r\n return false;\r\n return ISO_8601_REGEX.test(value);\r\n }\r\n}\r\nBarDateTimeHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarDateTimeHttpInterceptor, deps: [{ token: BarCoreModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarDateTimeHttpInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarDateTimeHttpInterceptor });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarDateTimeHttpInterceptor, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarCoreModuleOptions }]; } });\n\nclass BarEmptyComponent {\r\n}\r\nBarEmptyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nBarEmptyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.3.0\", type: BarEmptyComponent, selector: \"ng-component\", ngImport: i0, template: '', isInline: true });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarEmptyComponent, decorators: [{\r\n type: Component,\r\n args: [{ template: '' }]\r\n }] });\n\nvar translations$1 = {\r\n GENERIC_ERROR: 'Er heeft zich een fout voorgedaan'\r\n};\n\n// next is needed for case insensitive routing (added as provider in the forRoot method)\r\nclass LowerCaseUrlSerializer extends DefaultUrlSerializer {\r\n parse(url) {\r\n return super.parse(url.toLowerCase());\r\n }\r\n}\r\nconst coreRoutes = [{ path: 'bar-refresh', component: BarEmptyComponent, data: { _framework: true } }];\r\n// NOTE this is used for backwards compatibility with basiscomponenten while @bar 8 is still supported\r\nclass BarCoreModule {\r\n constructor(injector, translate) {\r\n this.injector = injector;\r\n this.translate = translate;\r\n BarCoreModule.injector = this.injector;\r\n this.translate.addTranslations('DOMAIN_BAR_CORE', translations$1);\r\n }\r\n static forRoot(options = { dateTimeInterception: { enabled: false } }) {\r\n if (options == null)\r\n options = new BarCoreModuleOptions();\r\n if (options.dateTimeInterception == null)\r\n options.dateTimeInterception = { enabled: false };\r\n if (options.dateTimeInterception.enabled && !options.dateTimeInterception.conversionStrategy)\r\n options.dateTimeInterception.conversionStrategy = BarDateTimeConversionStrategy.Iso;\r\n // register nl-BE\r\n registerLocaleData(localeNlBe, LOCALE.FLEMISH, localeNlBeExtra);\r\n registerLocaleData(localeNl, LOCALE.DUTCH, localeNlExtra);\r\n const providers = [\r\n { provide: LOCALE_ID, useValue: LOCALE.FLEMISH },\r\n {\r\n provide: BarCoreModuleOptions,\r\n useValue: options\r\n },\r\n {\r\n provide: UrlSerializer,\r\n // routing needs to work case insensitive\r\n useClass: LowerCaseUrlSerializer\r\n },\r\n Location,\r\n {\r\n provide: LocationStrategy,\r\n useClass: PathLocationStrategy\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useClass: BarErrorHandler\r\n },\r\n {\r\n provide: BAR_ERROR_HANDLER,\r\n useClass: BarErrorExpressionChangedAfterCheckedHook,\r\n multi: true\r\n }\r\n ];\r\n if (options.dateTimeInterception.enabled) {\r\n providers.push({\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: BarDateTimeHttpInterceptor,\r\n multi: true\r\n });\r\n }\r\n return {\r\n ngModule: BarCoreModule,\r\n providers: providers\r\n };\r\n }\r\n}\r\nBarCoreModule.injector = null;\r\nBarCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreModule, deps: [{ token: i0.Injector }, { token: i1$2.BarI18nService }], target: i0.ɵɵFactoryTarget.NgModule });\r\nBarCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreModule, declarations: [BarEmptyComponent], imports: [i1.RouterModule, BarI18nModule] });\r\nBarCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreModule, imports: [RouterModule.forChild(coreRoutes), BarI18nModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [BarEmptyComponent],\r\n imports: [RouterModule.forChild(coreRoutes), BarI18nModule]\r\n }]\r\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$2.BarI18nService }]; } });\n\nfunction defineCacheKey(cacheKeyPrefix, paramNames, args) {\r\n // no arguments just use cache key prefix (class + method)\r\n if (paramNames.length == 0) {\r\n return cacheKeyPrefix;\r\n }\r\n if (paramNames.length != args.length) {\r\n // we cannot match the parameters names with the arguments so we just stringify entire args\r\n return `${cacheKeyPrefix}_${JSON.stringify(args)}`;\r\n }\r\n // we have matching parameters, loop through them and generate a full cache key\r\n let result = cacheKeyPrefix;\r\n for (let i = 0; i < paramNames.length; i++) {\r\n result += `_${paramNames[i]}:${JSON.stringify(args[i])}`;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Decorator to use to use on functions which return an observable which will use @lvflanders/bar caching.\r\n * Note that because it uses async cache it cannot be used on methods which do not return Observable.\r\n * @param options\r\n */\r\nfunction BarCacheable(options) {\r\n return function (target, key, descriptor) {\r\n // original method\r\n const originalMethod = descriptor.value;\r\n const className = target.constructor != null ? target.constructor.name : null;\r\n const cacheKeyPrefix = options == null || options.key == null ? `${className}_${key}` : options.key;\r\n const paramNames = getParamNames(descriptor.value);\r\n descriptor.value = function (...args) {\r\n const cacheKey = defineCacheKey(cacheKeyPrefix, paramNames, args);\r\n let cacheStore;\r\n if (options != null && options.store != null) {\r\n if (options.store instanceof InjectionToken) {\r\n // we have an injection token use this\r\n cacheStore = BarCoreModule.injector.get(options.store);\r\n }\r\n else {\r\n const manager = BarCoreModule.injector.get(BarCacheManager);\r\n cacheStore = manager.getStore(options.store);\r\n }\r\n }\r\n else {\r\n // get the default one which is for the current app\r\n cacheStore = BarCoreModule.injector.get(BarCacheStore);\r\n }\r\n if (options != null && options.promise) {\r\n // consumer wants to use a promise return type\r\n return cacheStore.getOrSetItem(cacheKey, () => {\r\n // callback in case not in cache yet\r\n // get original result and we make assumption that an observable is used because this is what is mostly used in Angular applications\r\n const originalResult = originalMethod.apply(this, args);\r\n if (originalResult instanceof Promise) {\r\n // convert it back to a promise because @lvflanders/bar uses promises to be more loosely coupled\r\n return originalResult;\r\n }\r\n else {\r\n Promise.reject('Functions using BarCacheable from @lvflanders/bar-ng decorator must return a Promise in case BarCacheableOptions.promise equals true.');\r\n }\r\n }, options != null ? options.options : BarCacheEntryOptions.default);\r\n }\r\n else {\r\n // consumer wants to use default Observable return type\r\n // get the item through the cache and converts it to observable because we cannot detect at runtime what the return type of a method is without executing it\r\n return from(cacheStore.getOrSetItem(cacheKey, () => {\r\n // callback in case not in cache yet\r\n // get original result and we make assumption that an observable is used because this is what is mostly used in Angular applications\r\n const originalResult = originalMethod.apply(this, args);\r\n if (originalResult instanceof Observable) {\r\n // convert it back to a promise because @lvflanders/bar uses promises to be more loosely coupled\r\n return lastValueFrom(originalResult);\r\n }\r\n else {\r\n Promise.reject('Functions using BarCacheable from @lvflanders/bar-ng decorator must return an Observable in case BarCacheableOptions.promise is not equal true.');\r\n }\r\n }, options != null ? options.options : BarCacheEntryOptions.default));\r\n }\r\n };\r\n return descriptor;\r\n };\r\n}\n\nvar BaasContextTransportModus;\r\n(function (BaasContextTransportModus) {\r\n BaasContextTransportModus[BaasContextTransportModus[\"OnlineCookies\"] = 0] = \"OnlineCookies\";\r\n BaasContextTransportModus[BaasContextTransportModus[\"OfflineHeaders\"] = 1] = \"OfflineHeaders\";\r\n BaasContextTransportModus[BaasContextTransportModus[\"OnlineHeaders\"] = 2] = \"OnlineHeaders\";\r\n})(BaasContextTransportModus || (BaasContextTransportModus = {}));\n\nclass BarAppInfoSecure {\r\n}\n\nclass BarBasiscontext {\r\n}\n\nvar BarSecurityLevel;\r\n(function (BarSecurityLevel) {\r\n BarSecurityLevel[BarSecurityLevel[\"Development\"] = 0] = \"Development\";\r\n BarSecurityLevel[BarSecurityLevel[\"Test\"] = 1] = \"Test\";\r\n BarSecurityLevel[BarSecurityLevel[\"Production\"] = 2] = \"Production\";\r\n BarSecurityLevel[BarSecurityLevel[\"Unknown\"] = 3] = \"Unknown\";\r\n})(BarSecurityLevel || (BarSecurityLevel = {}));\n\n/** header object coming from BaaS apps, an stored in session storage */\r\nclass BaasPersistentStateObject {\r\n}\r\nclass UserTicketInfo {\r\n}\r\nvar TokenType;\r\n(function (TokenType) {\r\n TokenType[TokenType[\"BarSecTicket\"] = 0] = \"BarSecTicket\";\r\n TokenType[TokenType[\"OidcLinkId\"] = 1] = \"OidcLinkId\";\r\n})(TokenType || (TokenType = {}));\n\nclass BarAppInfo {\r\n}\n\n/** Stores/retrieves baaS context header to window.sessionStorage\r\n * This header is being used as the alternative for cookies\r\n */\r\nclass BaasContextService {\r\n /** saves the baas state context as a structure in sessiondata (for re-use in headers). Will only save when key does not exist */\r\n saveBaasContextToStorage(baasPersistentStateObject) {\r\n // Q&D enums from backend can become strings due to following setting:\r\n // o.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());\r\n // here we parse it back to a numeric enum (which is expected by the backend header parsing logic)\r\n if (typeof baasPersistentStateObject.tokenType === 'string') {\r\n const strTokenType = baasPersistentStateObject.tokenType;\r\n switch (strTokenType.toUpperCase()) {\r\n case 'BARSECTICKET':\r\n baasPersistentStateObject.tokenType = TokenType.BarSecTicket;\r\n break;\r\n case 'OIDCLINKID':\r\n baasPersistentStateObject.tokenType = TokenType.OidcLinkId;\r\n break;\r\n default:\r\n baasPersistentStateObject.tokenType = undefined;\r\n break;\r\n }\r\n }\r\n const jsonObj = JSON.stringify(baasPersistentStateObject);\r\n window.sessionStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT, jsonObj);\r\n /*Session storage is boss here, but localstorage also serves as a \"backup\" for other apps that run on different browser windows (in Hybrid and Headeronly modus without cookies)*/\r\n window.localStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT, jsonObj);\r\n }\r\n /** Updates the baas context (when it exists in storage) with altered voorwie + hoedanigheid */\r\n updateAppInfoToStorage(appInfo) {\r\n var _a, _b, _c, _d, _e, _f;\r\n if (!this.checkBaasContextInStorage())\r\n return;\r\n const data = this.getBaasContextFromStorage();\r\n //only certain fields are allowed to be altered\r\n const vw = (_a = appInfo.ToepVoorwie) !== null && _a !== void 0 ? _a : '';\r\n const vwrc = (_b = appInfo.ToepVoorwieRolcode) !== null && _b !== void 0 ? _b : '';\r\n const hd = (_c = appInfo.ToepHoedanigheid) !== null && _c !== void 0 ? _c : '';\r\n const hdrc = (_d = appInfo.ToepHoedanigheidRolcode) !== null && _d !== void 0 ? _d : '';\r\n data.userVoorwie = `${vw};${vwrc}`;\r\n data.userHoedanigheid = `${hd};${hdrc}`;\r\n //choosing a(nother) testprofiel can also alter the user here!!\r\n data.userID = (_e = appInfo === null || appInfo === void 0 ? void 0 : appInfo.ToepUser) !== null && _e !== void 0 ? _e : data.userID; //do not alter this when no other guid available (in case of external auth provider)\r\n data.userTicketGuid = (_f = appInfo === null || appInfo === void 0 ? void 0 : appInfo.SecurityTicketGuid) !== null && _f !== void 0 ? _f : data.userTicketGuid;\r\n if (data.userTicketInfo == null)\r\n data.userTicketInfo = new UserTicketInfo();\r\n data.userTicketInfo.userCbiUserID = appInfo.CbiUserId;\r\n //save changed object in session state\r\n window.sessionStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT, JSON.stringify(data));\r\n window.sessionStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAR_APPINFO_CONTEXT); //(cache cleared) needs to be recreated next time appinfo is retrieved\r\n window.localStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT, JSON.stringify(data)); //keep localstorage in sync\r\n }\r\n /** returns stored baas context object in stringified format (used for baas.context.backend header)*/\r\n getBaasContextAsHeaderString() {\r\n const data = this.getBaasContextString();\r\n if (data == null)\r\n return '';\r\n return data;\r\n }\r\n /** detects if baaS context state is available in storage (alternative for cookies)*/\r\n checkBaasContextInStorage() {\r\n return this.getBaasContextString() !== null;\r\n }\r\n /** retrieves baaS context from storage and converts it into appinfo object */\r\n getAppInfoFromStorage() {\r\n //this method is requested many times, so needs to be fast!\r\n const appInfoDataFromStorage = window.sessionStorage.getItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAR_APPINFO_CONTEXT);\r\n if (appInfoDataFromStorage !== null)\r\n return JSON.parse(appInfoDataFromStorage);\r\n //no appinfo in session store.. retrieve baas state insead, then convert it to appinfo, and store + return appinfo\r\n const data = this.getBaasContextFromStorage();\r\n const appinfo = this.convertFromBaasState(data);\r\n window.sessionStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAR_APPINFO_CONTEXT, JSON.stringify(appinfo)); //save for fast retrieval\r\n return appinfo;\r\n }\r\n removeContextFromSession() {\r\n window.sessionStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT);\r\n window.sessionStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAR_APPINFO_CONTEXT);\r\n window.localStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT); //keep localstore in sync\r\n }\r\n convertFromBaasState(baas) {\r\n var _a, _b;\r\n const resp = new BarAppInfo();\r\n resp.AuditId = baas.auditID;\r\n resp.CbiUserId = (_a = baas.userTicketInfo) === null || _a === void 0 ? void 0 : _a.userCbiUserID;\r\n resp.SecurityTicketGuid = baas.userTicketGuid;\r\n resp.UserZone = (_b = baas.userTicketInfo) === null || _b === void 0 ? void 0 : _b.userZone;\r\n //old stuff that does not exist in BaaS\r\n resp.ForcePerformanceLog = false;\r\n resp.AllowCookieAuth = false;\r\n //old stuff ends\r\n resp.ExpireTicks = this.generateDatum2DaysInFutureInticks(); //set dotnet ticks, 48 hrs in future\r\n resp.Timestamp = new Date().toString();\r\n resp.ToepVoorwie = this.getPart(true, baas === null || baas === void 0 ? void 0 : baas.userVoorwie);\r\n resp.ToepVoorwieRolcode = this.getPart(false, baas === null || baas === void 0 ? void 0 : baas.userVoorwie);\r\n resp.ToepHoedanigheid = this.getPart(true, baas === null || baas === void 0 ? void 0 : baas.userHoedanigheid);\r\n resp.ToepHoedanigheidRolcode = this.getPart(false, baas === null || baas === void 0 ? void 0 : baas.userHoedanigheid);\r\n resp.ToepUser = baas === null || baas === void 0 ? void 0 : baas.userID;\r\n return resp;\r\n }\r\n generateDatum2DaysInFutureInticks() {\r\n const date = new Date();\r\n date.setTime(date.getTime() + 50 * 60 * 60 * 1000); //add 2 days + 2 hours time-zone compensation\r\n const ticks = date.getTime() * 10000 + 621355968000000000; //ticks from epoch (1970) to this date\r\n return ticks;\r\n }\r\n getPart(getfirstPart, input) {\r\n var _a, _b;\r\n if (input == null)\r\n return '';\r\n if (input.indexOf(';') == -1)\r\n return '';\r\n const segments = input.split(';');\r\n if (segments.length != 2)\r\n return '';\r\n return getfirstPart ? (_a = segments[0]) === null || _a === void 0 ? void 0 : _a.trim() : (_b = segments[1]) === null || _b === void 0 ? void 0 : _b.trim();\r\n }\r\n /** Retrieves the baasPersistentStateObject from storage if it exists */\r\n getBaasContextFromStorage() {\r\n const data = this.getBaasContextString();\r\n if (data === null)\r\n return null;\r\n return JSON.parse(data);\r\n }\r\n /** get raw string from session or local storage */\r\n getBaasContextString() {\r\n let data = window.sessionStorage.getItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT);\r\n if (data === null) {\r\n data = window.localStorage.getItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT); //get it from local storage backup (and copy in sessionstorage) instead!\r\n if (data !== null)\r\n window.sessionStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT, data);\r\n }\r\n return data;\r\n }\r\n}\r\nBaasContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasContextService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasContextService, decorators: [{\r\n type: Injectable\r\n }] });\n\n// NOTE this service is not exposed to consumers\r\n// NOTE partially copied from legacy bwcCookieUpdater.ts and util.ts\r\n/**\r\n * This service will perform manipulations on the app info cookie or BaaS persistentstateobject (wrapper around cookie).\r\n */\r\nclass BarAppInfoService {\r\n constructor(state, baasContextService, config) {\r\n this.state = state;\r\n this.baasContextService = baasContextService;\r\n this.config = config;\r\n /** Occurs when synchronisation is needed (local cookie and server cookie) */\r\n this.onSyncRequired = new EventEmitter();\r\n }\r\n get sessionId() {\r\n return this.readCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.SESSION);\r\n }\r\n set sessionId(sessionId) {\r\n this.createCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.SESSION, sessionId);\r\n }\r\n /**\r\n * Passes initialization data.\r\n * @param data\r\n */\r\n init(data) {\r\n this.data = data;\r\n }\r\n /**\r\n * Gets the app info data from the cookie or from stored BaaS persist object\r\n */\r\n get() {\r\n if (this.baasContextModus !== BaasContextTransportModus.OnlineCookies) {\r\n //do NOT get state from cookie but from session when that object is available\r\n if (this.baasContextService.checkBaasContextInStorage())\r\n return this.baasContextService.getAppInfoFromStorage();\r\n return null; //WARNING THIS MODUS IGNORES COOKIES\r\n }\r\n const koek = this.readCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.MAIN);\r\n if (koek == null)\r\n return null;\r\n // decode again because it is possible the cookie is double encoded (iframe...)\r\n return JSON.parse(decodeURIComponent(koek));\r\n }\r\n /** Deletes the app info cookie and the secure cookie (if possible). */\r\n delete() {\r\n this.baasContextService.removeContextFromSession(); //equal to logoff\r\n if (this.baasContextModus !== BaasContextTransportModus.OnlineCookies)\r\n return; //WARNING THIS MODUS IGNORES COOKIES\r\n deleteCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.MAIN);\r\n deleteCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.SECURE);\r\n }\r\n /**\r\n * Saves the app info data\r\n * @param appInfo\r\n */\r\n save(appInfo, createGuidCookie = false, setTimestamp = true, emit = true, syncContext = null) {\r\n if (setTimestamp) {\r\n appInfo.Timestamp = new Date().toISOString();\r\n }\r\n if (this.baasContextModus != BaasContextTransportModus.OnlineCookies)\r\n this.baasContextService.updateAppInfoToStorage(appInfo);\r\n if (this.baasContextModus == BaasContextTransportModus.OfflineHeaders)\r\n return Promise.resolve(null); //do NOT call xdc to set cookies\r\n // save cookie (writes new cookie)\r\n this.createCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.MAIN, JSON.stringify(appInfo));\r\n if (createGuidCookie || this.secureCookieMissing) {\r\n //also make guid cookie when missing\r\n const secureContent = new BarAppInfoSecure();\r\n secureContent.SecurityTicketGuid = appInfo.SecurityTicketGuid;\r\n secureContent.ExpireTicks = appInfo.ExpireTicks;\r\n this.createCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.SECURE, JSON.stringify(secureContent));\r\n }\r\n if (emit) {\r\n return this.sync({ caller: 'Save', innerContext: syncContext });\r\n }\r\n else {\r\n // nothing to emit: just auto resolve\r\n return Promise.resolve();\r\n }\r\n }\r\n /**\r\n * Persists the modifiable data of the basiscontext into the app info cookie.\r\n This is used when having to make a request to the back-end.\r\n * @param basiscontext\r\n */\r\n persistBasiscontext(syncContext) {\r\n if (this.state.basiscontext == null)\r\n return;\r\n const context = {\r\n caller: 'PersistBasiscontext',\r\n innerContext: syncContext\r\n };\r\n return new Promise((resolve, reject) => {\r\n // first we sync cookies (or auto resolve in case not localhost)\r\n this.sync(context).then(() => {\r\n const appInfo = this.get();\r\n if (appInfo != null) {\r\n // make sure not to put value null because this will lead to a null string after uri encode\r\n appInfo.ToepVoorwie = this.state.basiscontext.voorwie == null ? '' : this.state.basiscontext.voorwie;\r\n appInfo.ToepVoorwieRolcode = this.state.basiscontext.voorwieRolcode == null ? '' : this.state.basiscontext.voorwieRolcode;\r\n appInfo.ToepHoedanigheid = this.state.basiscontext.hoedanigheid == null ? '' : this.state.basiscontext.hoedanigheid;\r\n appInfo.ToepHoedanigheidRolcode = this.state.basiscontext.hoedanigheidRolcode == null ? '' : this.state.basiscontext.hoedanigheidRolcode;\r\n // save it\r\n this.save(appInfo, false, true, true, context)\r\n .then(() => {\r\n resolve();\r\n })\r\n .catch(() => {\r\n reject();\r\n });\r\n }\r\n else {\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n /**\r\n * Derives the basis context from the app info cookie.\r\n */\r\n getBasiscontext() {\r\n const appInfo = this.get();\r\n return this.toBasiscontext(appInfo);\r\n }\r\n sync(context) {\r\n if (this.baasContextModus !== BaasContextTransportModus.OnlineCookies)\r\n //no not sync\r\n return Promise.resolve(null);\r\n // emit the event and pass the resolve reject\r\n return new Promise((resolve, reject) => {\r\n this.onSyncRequired.next({ resolve, reject, context });\r\n });\r\n }\r\n toBasiscontext(appInfo) {\r\n let result = null;\r\n if (appInfo != null) {\r\n result = new BarBasiscontext();\r\n // assign values with trick for readonly values\r\n const hoedanigheidKey = 'hoedanigheid';\r\n result[hoedanigheidKey] = appInfo.ToepHoedanigheid;\r\n const hoedanigheidRolcodeKey = 'hoedanigheidRolcode';\r\n result[hoedanigheidRolcodeKey] = appInfo.ToepHoedanigheidRolcode;\r\n const voorwieKey = 'voorwie';\r\n result[voorwieKey] = appInfo.ToepVoorwie;\r\n const voorwieRolcodeKey = 'voorwieRolcode';\r\n result[voorwieRolcodeKey] = appInfo.ToepVoorwieRolcode;\r\n const userIdKey = 'userId';\r\n result[userIdKey] = appInfo.ToepUser;\r\n const securityTicketIdKey = 'securityTicketId';\r\n result[securityTicketIdKey] = appInfo.SecurityTicketGuid || '';\r\n const zoneKey = 'zone';\r\n result[zoneKey] = appInfo.UserZone || appInfo.ToepZone;\r\n // assign extra initialization data which does not exist in the cookie\r\n if (this.data != null) {\r\n const fullUsernameKey = 'fullUsername';\r\n result[fullUsernameKey] = this.data.fullUsername;\r\n const klantnummerKey = 'klantnummer';\r\n result[klantnummerKey] = this.data.klantnummer;\r\n // define test profiel\r\n // if the user starts with DUMMY we know it is a test profiel\r\n if (result.userId != null && result.userId.toString().startsWith('DUMMY')) {\r\n // now we need to substract the test profiel name\r\n const testProfielKey = 'testProfiel';\r\n try {\r\n result[testProfielKey] = result.fullUsername.substr(result.fullUsername.indexOf('\\\\') + 1, result.fullUsername.indexOf('#') - 6);\r\n }\r\n catch (error) {\r\n console.warn('BarAppInfoService: ', error);\r\n }\r\n }\r\n }\r\n // assign extra data which exists outside the cookie\r\n const impersonateStrStorage = window.localStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEYS.IDP_IMPERSONATE);\r\n let impersonate = false;\r\n if (impersonateStrStorage != null && impersonateStrStorage.length) {\r\n impersonate = impersonateStrStorage.toLowerCase() === true.toString();\r\n }\r\n const impersonateKey = 'impersonate';\r\n result[impersonateKey] = impersonate;\r\n }\r\n return result;\r\n }\r\n readCookie(name) {\r\n const nameEQ = name + '=';\r\n const ca = document.cookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ')\r\n c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) === 0) {\r\n const cookieValue = decodeURIComponent(c.substring(nameEQ.length, c.length));\r\n return cookieValue === 'null' ? null : cookieValue;\r\n }\r\n }\r\n return null;\r\n }\r\n get secureCookieMissing() {\r\n return this.readCookie(BAR_CORE_CONSTANTS.COOKIE.APP_INFO.SECURE) === null;\r\n }\r\n createCookie(name, value) {\r\n let str = name + '=' + encodeURIComponent(value) + ';path=/;'; //wimfra\r\n if (this.state.toepassing != null && this.state.toepassing.securityLevel != BarSecurityLevel.Production)\r\n str = str + 'SameSite=None;Secure=true;';\r\n document.cookie = str;\r\n }\r\n get baasContextModus() {\r\n var _a, _b, _c;\r\n //return BaasContextModus.HybridHeaderThenCookies;\r\n return (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.auth) === null || _b === void 0 ? void 0 : _b.contextTransportModus) !== null && _c !== void 0 ? _c : BaasContextTransportModus.OnlineCookies;\r\n }\r\n}\r\nBarAppInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAppInfoService, deps: [{ token: BarCoreStateService }, { token: BaasContextService }, { token: BarConnectedModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarAppInfoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAppInfoService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAppInfoService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }, { type: BaasContextService }, { type: BarConnectedModuleOptions }]; } });\n\nclass BarMeetpuntHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n save(meetpunten) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/meetpunt', meetpunten, { params: new BarHttpParams(true, false) });\r\n }\r\n}\r\nBarMeetpuntHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeetpuntHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarMeetpuntHttpService {\r\n}\r\nBarMeetpuntHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeetpuntHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntHttpService, providedIn: 'root', useClass: BarMeetpuntHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarMeetpuntHttpDefaultService }]\r\n }] });\n\nclass BarMeetpuntService {\r\n constructor(state, appInfo, meetpuntHttpService) {\r\n this.state = state;\r\n this.appInfo = appInfo;\r\n this.meetpuntHttpService = meetpuntHttpService;\r\n // instantiate the queue with session storage\r\n this.queueProcessor = new BarQueueProcessor(window.sessionStorage, BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'meetpuntQueue');\r\n }\r\n /** Whether performance logging is enabled:\r\n - must be enabled in config\r\n - must be enabled by cookie OR enabled in configuation for the toepassing\r\n */\r\n get loggingEnabled() {\r\n var _a;\r\n const appinfo = this.appInfo.get();\r\n // meetpunt must be enabled globally\r\n return (((_a = this.state.config) === null || _a === void 0 ? void 0 : _a.meetpunt.enabled) &&\r\n // we must be authenticated\r\n appinfo &&\r\n // must be enforced by cookie OR must be set on in configuration for the toepassing\r\n (appinfo.ForcePerformanceLog || this.state.meetpuntenAutomatischAanmaken) &&\r\n // must be supported by browser to perform measurements\r\n window.performance &&\r\n window.performance.timing != null);\r\n }\r\n /**\r\n * Logs a meetpunt.\r\n * @param meetpunt\r\n */\r\n log(meetpunt) {\r\n if (!this.loggingEnabled)\r\n return;\r\n if (meetpunt.appCode == null) {\r\n meetpunt.appCode = this.state.toepassing.code;\r\n }\r\n if (meetpunt.meetpuntType == null) {\r\n meetpunt.meetpuntType = BAR_CORE_CONSTANTS.DEFAULT_MEETPUNT_TYPE;\r\n }\r\n this.queueProcessor.enqueue(meetpunt);\r\n }\r\n /**\r\n * Start to listen to the meetpunten queue.\r\n */\r\n start() {\r\n // start listening to the queue\r\n this.queueProcessor.start(this.state.config.meetpunt.interval, this.state.config.meetpunt.itemCount);\r\n // post items to back-end with interval\r\n // NOTE use mergeMap because switchMap would cancel out first subscription which is a hot observable\r\n this.queueProcessor.execute$.pipe(mergeMap((meetpunten) => this.meetpuntHttpService.save(meetpunten))).subscribe();\r\n }\r\n}\r\nBarMeetpuntService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntService, deps: [{ token: BarCoreStateService }, { token: BarAppInfoService }, { token: BarMeetpuntHttpService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeetpuntService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeetpuntService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }, { type: BarAppInfoService }, { type: BarMeetpuntHttpService }]; } });\n\n// https://netbasal.com/inspiration-for-custom-decorators-in-angular-95aeb87f072c\r\n/**\r\n * Measures the duration of a directive or component (which is a directive) between ngOnInit and ngAfterViewInit.\r\n */\r\nfunction BarMeetpunt() {\r\n return function (constructor) {\r\n // get meetpunt service through static injector on the core module\r\n const meetpunt = BarCoreModule.injector.get(BarMeetpuntService);\r\n const ngOnInit = constructor.prototype.ngOnInit;\r\n let stopwatch = null;\r\n // override the ngOnInit\r\n constructor.prototype.ngOnInit = function (...args) {\r\n // create and start new watch\r\n stopwatch = new BarStopwatch();\r\n stopwatch.start();\r\n // call original ngOnInit after starting the watch (if present)\r\n ngOnInit && ngOnInit.apply(this, args);\r\n };\r\n const ngAfterViewInit = constructor.prototype.ngAfterViewInit;\r\n // override the ngAfterViewInit\r\n constructor.prototype.ngAfterViewInit = function (...args) {\r\n // call original ngAfterViewInit if present\r\n ngAfterViewInit && ngAfterViewInit.apply(this, args);\r\n // stop the watch\r\n stopwatch.stop();\r\n // call meetpunt service to log this\r\n meetpunt.log({\r\n meetpunt: 'DIRECTIVE',\r\n meetpuntDetail: constructor.name,\r\n waarde: stopwatch.duration,\r\n meetpuntInfo: document.location.href\r\n });\r\n stopwatch = null;\r\n };\r\n };\r\n}\n\nvar __OopsDomService_instances, __OopsDomService_coreStateService, __OopsDomService_mappings, __OopsDomService_oopsActionRefresh, __OopsDomService_oopsActionHome;\r\nvar _OopsType;\r\n(function (_OopsType) {\r\n _OopsType[_OopsType[\"Technical\"] = 0] = \"Technical\";\r\n _OopsType[_OopsType[\"Authentication\"] = 1] = \"Authentication\";\r\n _OopsType[_OopsType[\"NotFound\"] = 2] = \"NotFound\";\r\n})(_OopsType || (_OopsType = {}));\r\nconst ACTION_ICON_REFRESH = 'fa-solid fa-rotate';\r\nconst ACTION_CONTENT_REFRESH = 'Wis & herlaad';\r\nconst ACTION_INFO_REFRESH = 'Met de knop hieronder wordt uw sessie-data gewist en deze pagina opnieuw geladen.';\r\nclass _OopsDomService {\r\n constructor() {\r\n __OopsDomService_instances.add(this);\r\n __OopsDomService_coreStateService.set(this, inject(BarCoreStateService, { optional: true }));\r\n __OopsDomService_mappings.set(this, {\r\n [_OopsType.Technical]: {\r\n title: 'Technische fout',\r\n content: 'Er heeft zich een technische fout voorgedaan.',\r\n action: __classPrivateFieldGet(this, __OopsDomService_instances, \"m\", __OopsDomService_oopsActionRefresh).bind(this),\r\n actionIcon: ACTION_ICON_REFRESH,\r\n actionContent: ACTION_CONTENT_REFRESH,\r\n actionInfo: ACTION_INFO_REFRESH\r\n },\r\n [_OopsType.Authentication]: {\r\n title: 'Authenticatie mislukt',\r\n content: 'Er heeft zich een authenticatie fout voorgedaan.',\r\n action: __classPrivateFieldGet(this, __OopsDomService_instances, \"m\", __OopsDomService_oopsActionRefresh).bind(this),\r\n actionIcon: ACTION_ICON_REFRESH,\r\n actionContent: ACTION_CONTENT_REFRESH,\r\n actionInfo: ACTION_INFO_REFRESH\r\n },\r\n [_OopsType.NotFound]: {\r\n title: 'Oeps',\r\n content: 'Deze pagina is vermist.',\r\n action: __classPrivateFieldGet(this, __OopsDomService_instances, \"m\", __OopsDomService_oopsActionHome).bind(this),\r\n actionIcon: 'fa-regular fa-house',\r\n actionContent: 'Terug naar Startscherm'\r\n }\r\n });\r\n }\r\n checkOopsSupported() {\r\n return document.getElementById('oops') != null;\r\n }\r\n showOops(settings) {\r\n var _a, _b, _c;\r\n if (!settings)\r\n throw new Error('Oops settings are required.');\r\n if (!this.checkOopsSupported()) {\r\n console.warn('Oops DOM is not supported.');\r\n return;\r\n }\r\n const oopsElement = document.getElementById('oops');\r\n if ((_c = (_b = (_a = __classPrivateFieldGet(this, __OopsDomService_coreStateService, \"f\")) === null || _a === void 0 ? void 0 : _a.location) === null || _b === void 0 ? void 0 : _b.baasStatic) === null || _c === void 0 ? void 0 : _c.url) {\r\n let image;\r\n let imgElement = document.getElementById('oops-image');\r\n // @deprecated old img id wrong convention\r\n if (imgElement == null)\r\n imgElement = document.getElementById('oopsImg');\r\n if (settings.type === _OopsType.NotFound)\r\n image = 'lv-melding-error-404.png';\r\n else {\r\n const number = generateRandomNumber(1, 8);\r\n image = `lv-melding-circle-0${number}.png`;\r\n }\r\n imgElement.src = concatUrl(__classPrivateFieldGet(this, __OopsDomService_coreStateService, \"f\").location.baasStatic.url, '/images/all/', image);\r\n }\r\n // new mechanism with oops\r\n oopsElement.style.display = 'block';\r\n const appRoot = document.getElementById('app-root');\r\n appRoot.parentElement.removeChild(appRoot);\r\n const loader = document.getElementById('app-loading');\r\n loader.style.display = 'none';\r\n const config = __classPrivateFieldGet(this, __OopsDomService_mappings, \"f\")[settings.type];\r\n const titleElement = document.getElementById('oops-title');\r\n if (titleElement)\r\n titleElement.innerText = config.title;\r\n const contentElement = document.getElementById('oops-content');\r\n if (contentElement)\r\n contentElement.innerText = config.content;\r\n const actionElement = document.getElementById('oops-action');\r\n if (actionElement)\r\n actionElement.addEventListener('click', config.action);\r\n const actionIconElement = document.getElementById('oops-action-icon');\r\n if (actionIconElement)\r\n actionIconElement.className = config.actionIcon;\r\n const actionContentElement = document.getElementById('oops-action-content');\r\n if (actionContentElement)\r\n actionContentElement.innerText = config.actionContent;\r\n const actionInfoElement = document.getElementById('oops-action-info');\r\n if (actionInfoElement) {\r\n actionInfoElement.style.display = config.actionInfo ? 'block' : 'none';\r\n actionInfoElement.innerText = config.actionInfo;\r\n }\r\n }\r\n}\r\n__OopsDomService_coreStateService = new WeakMap(), __OopsDomService_mappings = new WeakMap(), __OopsDomService_instances = new WeakSet(), __OopsDomService_oopsActionRefresh = function __OopsDomService_oopsActionRefresh() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n window.localStorage.clear();\r\n window.sessionStorage.clear();\r\n yield deleteAllIndexedDb();\r\n deleteAllCookies();\r\n window.location.reload();\r\n });\r\n}, __OopsDomService_oopsActionHome = function __OopsDomService_oopsActionHome() {\r\n var _a, _b;\r\n if ((_b = (_a = __classPrivateFieldGet(this, __OopsDomService_coreStateService, \"f\")) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.homeUrl)\r\n window.location = __classPrivateFieldGet(this, __OopsDomService_coreStateService, \"f\").config.homeUrl;\r\n return Promise.resolve();\r\n};\r\n_OopsDomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _OopsDomService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\n_OopsDomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _OopsDomService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _OopsDomService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }] });\n\n/**\r\n * Will return an Observable based on a value which can be of different types.\r\n * @param value\r\n */\r\nfunction resolveValue$(value) {\r\n if (value instanceof Observable) {\r\n return value;\r\n }\r\n if (value instanceof Promise) {\r\n return from(value);\r\n }\r\n const resolvedValue = resolveValue(value);\r\n return of(resolvedValue);\r\n}\r\n/**\r\n * Convers an object to a http params.\r\n * @param obj\r\n */\r\n// https://github.com/angular/angular/issues/18012\r\nfunction convertToHttpParams(obj) {\r\n let params = new HttpParams();\r\n if (obj != null) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n const val = obj[key];\r\n if (val !== null && val !== undefined) {\r\n params = params.append(key, val.toString());\r\n }\r\n }\r\n }\r\n }\r\n return params;\r\n}\r\n/** Creates the default base href factory. The base href factory generated will ensure the base href match is done in a case insensitive way. Use this when providing APP_BASE_HREF.*/\r\nfunction createDefaultBaseHrefFactory(baseHref) {\r\n return () => {\r\n if (!baseHref || baseHref === '/')\r\n return baseHref;\r\n // do not take into account end slash because pathname is not with end slash\r\n const comparisonBaseHref = baseHref.endsWith('/') ? baseHref.substring(0, baseHref.length - 1) : baseHref;\r\n if (!window.location.pathname.toLowerCase().startsWith(comparisonBaseHref.toLowerCase()))\r\n return baseHref;\r\n return window.location.pathname.substring(0, comparisonBaseHref.length);\r\n };\r\n}\n\nclass BarActie {\r\n constructor(actie) {\r\n if (actie != null) {\r\n this.actie = actie.actie;\r\n this.voorwie = actie.voorwie;\r\n this.voorwieRolcode = actie.voorwieRolcode;\r\n this.hoedanigheid = actie.hoedanigheid;\r\n this.hoedanigheidRolcode = actie.hoedanigheidRolcode;\r\n }\r\n }\r\n}\n\nclass BarSecurityHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n checkActieAllowed(actie) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/security/check-actie-allowed', actie);\r\n }\r\n getHoedanigheidInfoSet() {\r\n return this.http.get(this.state.location.barWeb.url + 'api/security/ticket-info').pipe(catchError((err) => {\r\n console.warn('You need BAR web api 7.54.1 or higher for the ticket info api.', err);\r\n return of([]);\r\n }));\r\n }\r\n getUserInfo() {\r\n // @deprecated feature flagging not needed in long term\r\n if (this.state.connectivity === BarConnectivity.Offline) {\r\n // old mechanisme in case offline modus (only hoedanigheid info set is filled in)\r\n // user-data doesn't exist in BAR\r\n return this.getHoedanigheidInfoSet().pipe(map((data) => ({\r\n hoedanigheidInfoSet: data\r\n })));\r\n }\r\n else {\r\n // ask baas static for the user data\r\n return this.http.get(this.state.location.baasStatic.url + 'baas/security/user-info').pipe(map((data) => ({\r\n cbiUserId: data.cbiUserId,\r\n hoedanigheidInfoSet: data.hoedList,\r\n contactInfo: data.contactInfo != null\r\n ? {\r\n klantnummer: data.contactInfo.alvNr,\r\n firstname: data.contactInfo.firstName,\r\n lastname: data.contactInfo.lastname,\r\n fullName: data.contactInfo.fullname,\r\n phone: data.contactInfo.phoneNumber,\r\n mobile: data.contactInfo.mobileNumber,\r\n email: data.contactInfo.mailAddress\r\n }\r\n : undefined\r\n })), catchError((err) => {\r\n console.error(err);\r\n return of({});\r\n }));\r\n }\r\n }\r\n}\r\nBarSecurityHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarSecurityHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarSecurityHttpService {\r\n}\r\nBarSecurityHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarSecurityHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityHttpService, providedIn: 'root', useClass: BarSecurityHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarSecurityHttpDefaultService }]\r\n }] });\n\n/**\r\n * Security service to perform BAR security tasks.\r\n */\r\nclass BarSecurityService {\r\n constructor(securityHttpService, state, cacheManager) {\r\n this.securityHttpService = securityHttpService;\r\n this.state = state;\r\n this.cacheManager = cacheManager;\r\n }\r\n get store() {\r\n return this.cacheManager.getStore({\r\n storeType: BarCacheStoreType.User,\r\n store: 'actieAllowed',\r\n userId: this.state.basiscontext.userId\r\n });\r\n }\r\n /**\r\n * Checks whether the actie is allowed and returns an observable with the result.\r\n */\r\n checkActieAllowed(actie) {\r\n return defer(() => {\r\n const key = JSON.stringify(actie);\r\n const httpCallback = () => {\r\n return lastValueFrom(this.securityHttpService.checkActieAllowed(actie));\r\n };\r\n return this.store.getOrSetItem(key, httpCallback, {\r\n session: true\r\n });\r\n });\r\n }\r\n // NOTE equivalent of isActieAllowedFromSession but using basiscontext from page state\r\n /**\r\n * Checks whether the actie is allowed by checking the basiscontext and returns an observable with the result.\r\n * @param actie\r\n * @param includeVoorwie\r\n * @param includeHoedanigheid\r\n */\r\n checkActieAllowedFromContext(actie) {\r\n const actieObj = new BarActie();\r\n actieObj.actie = actie.actie;\r\n if (actie.includeVoorwie) {\r\n actieObj.voorwie = this.state.basiscontext.voorwie;\r\n actieObj.voorwieRolcode = this.state.basiscontext.voorwieRolcode;\r\n }\r\n if (actie.includeHoedanigheid) {\r\n actieObj.hoedanigheid = this.state.basiscontext.hoedanigheid;\r\n actieObj.hoedanigheidRolcode = this.state.basiscontext.hoedanigheidRolcode;\r\n }\r\n return this.checkActieAllowed(actieObj);\r\n }\r\n /**\r\n * Flushes the security browser cache.\r\n */\r\n flush() {\r\n return from(this.store.clear());\r\n }\r\n}\r\nBarSecurityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityService, deps: [{ token: BarSecurityHttpService }, { token: BarCoreStateService }, { token: i1$3.BarCacheManager }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarSecurityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSecurityService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarSecurityHttpService }, { type: BarCoreStateService }, { type: i1$3.BarCacheManager }]; } });\n\nclass BarActieAllowedGuard {\r\n constructor(translate, core, security, state, localhost) {\r\n this.translate = translate;\r\n this.core = core;\r\n this.security = security;\r\n this.state = state;\r\n this.localhost = localhost;\r\n }\r\n // NOTE use any because of typescript compiler incompatibility\r\n canActivate(route) {\r\n return new Promise((resolve) => {\r\n // https://stackoverflow.com/questions/42719445/pass-parameter-into-route-guard\r\n const acties = route.data['acties'];\r\n // turns different observables into promises\r\n const promises = [];\r\n // iterate all acties\r\n acties.forEach((actie) => {\r\n const promise = lastValueFrom(this.security.checkActieAllowedFromContext(actie));\r\n // push to promise list\r\n promises.push(promise);\r\n // save the result\r\n promise.then((result) => {\r\n if (!result) {\r\n if (!this.localhost) {\r\n // perform hard redirect on deployed environment\r\n window.location.href = this.state.location.baasStatic.url + BAR_CORE_CONSTANTS.PAGES.INSUFFICIENT_PRIVILEGES;\r\n }\r\n else {\r\n // on localhost emit an error, do not perform hard redirect\r\n const errorMessage = this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.INSUFFICIENT_PRIVILEGES_FOR_ACTIE', {\r\n actie: actie.actie,\r\n includeVoorwie: actie.includeVoorwie,\r\n includeHoedanigheid: actie.includeHoedanigheid\r\n });\r\n console.error(errorMessage);\r\n const error = new Error(errorMessage);\r\n this.core.errorOccurred.emit(error);\r\n }\r\n resolve(false);\r\n }\r\n });\r\n });\r\n // wait for all promises\r\n Promise.all(promises).then(() => {\r\n // give positive result because no false result was given\r\n resolve(true);\r\n });\r\n });\r\n }\r\n}\r\nBarActieAllowedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarActieAllowedGuard, deps: [{ token: i1$2.BarI18nService }, { token: BarCoreService }, { token: BarSecurityService }, { token: BarCoreStateService }, { token: BAR_LOCALHOST }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarActieAllowedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarActieAllowedGuard });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarActieAllowedGuard, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i1$2.BarI18nService }, { type: BarCoreService }, { type: BarSecurityService }, { type: BarCoreStateService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOCALHOST]\r\n }] }];\r\n } });\n\nclass BarProfielModel {\r\n}\n\nclass BarProfielHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n read(model) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/profiel/read', model, { responseType: 'text' });\r\n }\r\n}\r\nBarProfielHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarProfielHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarProfielHttpService {\r\n}\r\nBarProfielHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarProfielHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielHttpService, providedIn: 'root', useClass: BarProfielHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarProfielHttpDefaultService }]\r\n }] });\n\n/** @deprecated use BarConfigurationService. */\r\nclass BarProfielService {\r\n constructor(state, cacheManager, profielHttpService) {\r\n this.state = state;\r\n this.cacheManager = cacheManager;\r\n this.profielHttpService = profielHttpService;\r\n }\r\n get store() {\r\n return this.cacheManager.getStore({\r\n storeType: BarCacheStoreType.User,\r\n store: 'profiel',\r\n userId: this.state.basiscontext.userId\r\n });\r\n }\r\n /**\r\n * Reads a profiel key and returns an observable.\r\n * @param key\r\n */\r\n read(key) {\r\n return defer(() => {\r\n const httpCallback = () => {\r\n const model = new BarProfielModel();\r\n model.key = key;\r\n model.appCode = this.state.toepassing.code;\r\n model.appVersion = this.state.toepassing.versie;\r\n // NOTE perform post to avoid query string\r\n return lastValueFrom(this.profielHttpService.read(model));\r\n };\r\n return this.store.getOrSetItem(key, httpCallback, {\r\n session: true\r\n });\r\n });\r\n }\r\n readNumber(key) {\r\n return this.read(key).pipe(map((value) => (value != null ? parseFloat(value) : null)));\r\n }\r\n readBoolean(key) {\r\n return this.read(key).pipe(map((value) => (value != null ? value.toLowerCase() == 'true' || value == '1' : null)));\r\n }\r\n /**\r\n * Flushes the security browser cache.\r\n */\r\n flush() {\r\n return from(this.store.clear());\r\n }\r\n}\r\nBarProfielService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielService, deps: [{ token: BarCoreStateService }, { token: i1$3.BarCacheManager }, { token: BarProfielHttpService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarProfielService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarProfielService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }, { type: i1$3.BarCacheManager }, { type: BarProfielHttpService }]; } });\n\n/** Configuration service. */\r\nclass BarConfigurationService {\r\n constructor(state, cacheManager, profielHttpService) {\r\n this.state = state;\r\n this.cacheManager = cacheManager;\r\n this.profielHttpService = profielHttpService;\r\n }\r\n get store() {\r\n return this.cacheManager.getStore({\r\n storeType: BarCacheStoreType.User,\r\n store: 'configuration',\r\n userId: this.state.basiscontext.userId\r\n });\r\n }\r\n /** Reads the value with given options. */\r\n readValue(options) {\r\n if (!options)\r\n throw new Error('The options argument is required.');\r\n if (!options.pathAndKey)\r\n throw new Error('The pathAndKey property is required.');\r\n let key = options.pathAndKey;\r\n if (key && key.indexOf('/') > -1) {\r\n console.warn('BaaS configuration keys should contain backslashes (\\\\) instead of slashes (/). The key was automatically transformed.');\r\n // apparently replace func replaces only the first occurrence\r\n do\r\n key = key.replace('/', '\\\\');\r\n while (key.indexOf('/') > -1);\r\n }\r\n return defer(() => {\r\n const httpCallback = () => {\r\n const model = new BarProfielModel();\r\n model.key = key;\r\n model.appCode = options.appCode || this.state.toepassing.code;\r\n // NOTE that version is only used with BAR backend and not with BaaS backend\r\n model.appVersion = options.appVersion || this.state.toepassing.versie;\r\n // for now we just use the existing profiel http service\r\n return lastValueFrom(this.profielHttpService.read(model));\r\n };\r\n return this.store.getOrSetItem(key, httpCallback, {\r\n session: true\r\n });\r\n });\r\n }\r\n /**\r\n * Flushes the security browser cache.\r\n */\r\n flush() {\r\n return from(this.store.clear());\r\n }\r\n}\r\nBarConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConfigurationService, deps: [{ token: BarCoreStateService }, { token: i1$3.BarCacheManager }, { token: BarProfielHttpService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConfigurationService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConfigurationService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }, { type: i1$3.BarCacheManager }, { type: BarProfielHttpService }]; } });\n\nconst STORAGE_KEY = BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'requestLogOff';\r\n// NOTE do not expose !!!\r\n/** Internal log off (utility) service. */\r\nclass BarLogOffUtilityService {\r\n constructor(coreOptions, state, profiel, configuration, security, globalStore, logOffHooks) {\r\n this.coreOptions = coreOptions;\r\n this.state = state;\r\n this.profiel = profiel;\r\n this.configuration = configuration;\r\n this.security = security;\r\n this.globalStore = globalStore;\r\n this.logOffHooks = logOffHooks;\r\n }\r\n /** Start to listen for log off request. */\r\n startListening() {\r\n window.onstorage = () => {\r\n if (this.requestLogOff)\r\n this.navigateLogOff();\r\n };\r\n }\r\n get requestLogOff() {\r\n return localStorage.getItem(STORAGE_KEY) === 'true';\r\n }\r\n set requestLogOff(value) {\r\n if (value == null)\r\n localStorage.removeItem(STORAGE_KEY);\r\n else\r\n localStorage.setItem(STORAGE_KEY, value.toString());\r\n }\r\n invokePreLogOffHooks() {\r\n if (!this.logOffHooks || this.logOffHooks.length == 0)\r\n return of(undefined);\r\n const logOffObservables = this.logOffHooks.map((hook) => {\r\n const hookResult = hook.run();\r\n if (hookResult === undefined)\r\n return of(undefined);\r\n return hookResult.pipe(\r\n // make sure not to block log off\r\n catchError((err) => {\r\n console.error(err);\r\n return of(undefined);\r\n }));\r\n });\r\n return forkJoin(logOffObservables).pipe(map(() => undefined));\r\n }\r\n /** Performs some pre-log off logic. */\r\n cleanup() {\r\n var _a;\r\n this.globalStore.clear();\r\n if ((_a = this.state.basiscontext) === null || _a === void 0 ? void 0 : _a.userId) {\r\n this.profiel.flush().subscribe();\r\n this.configuration.flush().subscribe();\r\n this.security.flush().subscribe();\r\n }\r\n // NOTE make sure not to block the log off process\r\n return of(undefined);\r\n }\r\n navigateLogOff() {\r\n var _a;\r\n // redirect to log off page\r\n window.location.href = ((_a = this.coreOptions.auth) === null || _a === void 0 ? void 0 : _a.logOffUrl) || this.state.location.baasStatic.url + BAR_CORE_CONSTANTS.PAGES.LOG_OFF;\r\n }\r\n}\r\nBarLogOffUtilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLogOffUtilityService, deps: [{ token: BarConnectedModuleOptions }, { token: BarCoreStateService }, { token: BarProfielService }, { token: BarConfigurationService }, { token: BarSecurityService }, { token: BAR_GLOBAL_CACHE }, { token: BAR_LOG_OFF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarLogOffUtilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLogOffUtilityService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLogOffUtilityService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: BarConnectedModuleOptions }, { type: BarCoreStateService }, { type: BarProfielService }, { type: BarConfigurationService }, { type: BarSecurityService }, { type: i1$3.BarCacheStore, decorators: [{\r\n type: Inject,\r\n args: [BAR_GLOBAL_CACHE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOG_OFF]\r\n }, {\r\n type: Optional\r\n }] }];\r\n } });\n\n/** BAR authentication service contract. Implement this class to provide authentication. */\r\nclass BarAuthService {\r\n constructor(injector) {\r\n this.injector = injector;\r\n }\r\n get logOffService() {\r\n if (!this._logOffService)\r\n this._logOffService = this.injector.get(BarLogOffUtilityService);\r\n return this._logOffService;\r\n }\r\n /** Processing that occurs after the authentication. Meaning we are authenticated. */\r\n postProcessing() { }\r\n /** Performs the log off. */\r\n logOff() {\r\n // first do some cleanup (state)\r\n return this.logOffService.cleanup().pipe(\r\n // then invoke log off hooks by other applications\r\n mergeMap(() => this.logOffService.invokePreLogOffHooks()), tap(() => {\r\n // notify other tabs about fact that we are logging off\r\n this.logOffService.requestLogOff = true;\r\n }), \r\n // do the log off (e.g. in idp this is a redirect)\r\n mergeMap(() => this.performLogOff()));\r\n }\r\n}\r\nBarAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuthService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuthService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i0.Injector }]; } });\n\nclass BarAuthGuard {\r\n constructor(authService) {\r\n this.authService = authService;\r\n }\r\n canActivate(route, state) {\r\n return this.authService.authenticated ? of(true) : this.authService.authenticate();\r\n }\r\n}\r\nBarAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuthGuard, deps: [{ token: BarAuthService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuthGuard });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuthGuard, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarAuthService }]; } });\n\nvar BarMeldingType;\r\n(function (BarMeldingType) {\r\n BarMeldingType[\"Opgelost\"] = \"OPGELOST\";\r\n BarMeldingType[\"Informatief\"] = \"INFORMATIEF\";\r\n BarMeldingType[\"Belangrijk\"] = \"BELANGRIJK\";\r\n BarMeldingType[\"Onbeschikbaar\"] = \"ONBESCHIKBAAR\";\r\n BarMeldingType[\"Banner\"] = \"BANNER\";\r\n})(BarMeldingType || (BarMeldingType = {}));\n\nclass BarMelding {\r\n convert(m) {\r\n const meldingTypeMapping = {\r\n 20: BarMeldingType.Opgelost,\r\n 40: BarMeldingType.Informatief,\r\n 60: BarMeldingType.Belangrijk,\r\n 80: BarMeldingType.Onbeschikbaar,\r\n 90: BarMeldingType.Banner\r\n };\r\n const classicBannerProcessing = (m) => {\r\n // banner information is the same accross BAR en BaaS\r\n this.bannerTitle = m.bannerTitle;\r\n this.bannerUrl = m.bannerUrl;\r\n this.bannerUrlText = m.bannerUrlText;\r\n this.bannerImage = m.bannerImage;\r\n };\r\n if (m.baas === true) {\r\n //BaaS melding\r\n if (m.version === '2') {\r\n // V2\r\n const readField = (m, field) => { var _a, _b; return (_b = (_a = m.fields) === null || _a === void 0 ? void 0 : _a.find(f => f.name === field)) === null || _b === void 0 ? void 0 : _b.content; };\r\n Object.assign(this, {\r\n id: m.meldingId,\r\n startDate: m.validFrom,\r\n endDate: m.validUntil,\r\n meldingType: m.meldingType,\r\n location: m.urlPattern,\r\n content: readField(m, 'TEKST'),\r\n title: readField(m, 'TITEL'),\r\n zone: m.zone\r\n });\r\n if (this.meldingType === BarMeldingType.Banner) {\r\n this.bannerTitle = readField(m, 'TITLE');\r\n this.bannerUrl = readField(m, 'LINK_URL');\r\n this.bannerUrlText = readField(m, 'LINK_CONTENT');\r\n this.bannerImage = readField(m, 'IMAGE');\r\n }\r\n }\r\n else {\r\n Object.assign(this, {\r\n id: m.meldingId,\r\n startDate: m.validFrom,\r\n endDate: m.validUntil,\r\n meldingType: meldingTypeMapping[m._mtype],\r\n location: m.urlPattern,\r\n content: m.meldingText,\r\n zone: m.zone\r\n });\r\n classicBannerProcessing(m);\r\n }\r\n }\r\n //BAR melding\r\n else {\r\n Object.assign(this, {\r\n id: m.id,\r\n startDate: m.startDatum,\r\n endDate: m.eindDatum,\r\n meldingType: meldingTypeMapping[m.meldingType],\r\n location: m.locatie,\r\n content: m.tekst,\r\n zone: m.zone\r\n });\r\n classicBannerProcessing(m);\r\n }\r\n return this;\r\n }\r\n}\n\nclass BarMeldingHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n /**\r\n * Get meldingen for requested url\r\n */\r\n getMeldingen(url) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/meldingen', { url }, { params: new BarHttpParams(true, false) }).pipe(map$1((meldingen) => meldingen.map((melding) => {\r\n return Object.assign(Object.assign({}, melding), { baas: false, version: '0' });\r\n })));\r\n }\r\n /**\r\n *Used by Melding Guard to check if a route has a blocking notification, if so it has to redirect to a specific page\r\n */\r\n hasBlockingMelding(url) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/meldingen/get', { url }, { params: new BarHttpParams(true, false) });\r\n }\r\n}\r\nBarMeldingHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeldingHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarMeldingHttpService {\r\n}\r\nBarMeldingHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeldingHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingHttpService, providedIn: 'root', useClass: BarMeldingHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarMeldingHttpDefaultService }]\r\n }] });\n\nclass BarMeldingService {\r\n constructor(meldingHttpService) {\r\n this.meldingHttpService = meldingHttpService;\r\n }\r\n /**\r\n * Get meldingen for requested url\r\n */\r\n getMeldingen(url) {\r\n return this.meldingHttpService.getMeldingen(url);\r\n }\r\n /**\r\n *Used by Melding Guard to check if a route has a blocking notification, if so it has to redirect to a specific page\r\n */\r\n hasBlockingMelding(url) {\r\n return this.hasBlockingMelding(url);\r\n }\r\n}\r\nBarMeldingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingService, deps: [{ token: BarMeldingHttpService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeldingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarMeldingHttpService }]; } });\n\nvar _BarMeldingenEngine_instances, _BarMeldingenEngine_state, _BarMeldingenEngine_meldingService, _BarMeldingenEngine_handleOnbeschikbaar;\r\nclass BarMeldingenEngine {\r\n constructor() {\r\n _BarMeldingenEngine_instances.add(this);\r\n _BarMeldingenEngine_state.set(this, inject(BarCoreStateService));\r\n _BarMeldingenEngine_meldingService.set(this, inject(BarMeldingService));\r\n }\r\n /** Retrieves and processes the meldinen. Returns true in case the route is available (meaning no blocking meldingen). */\r\n retrieveAndProcess(routeUrl) {\r\n const pathnameEndsWithSlash = __classPrivateFieldGet(this, _BarMeldingenEngine_state, \"f\").location.spa.pathname.endsWith('/');\r\n const url = `${__classPrivateFieldGet(this, _BarMeldingenEngine_state, \"f\").location.spa.pathname}${pathnameEndsWithSlash ? routeUrl.substring(1) : routeUrl}`;\r\n return __classPrivateFieldGet(this, _BarMeldingenEngine_meldingService, \"f\").getMeldingen(url).pipe(catchError$1((err) => {\r\n console.error(err);\r\n return of([]);\r\n }), map$1((meldingen) => {\r\n let onbeschikbaarMelding = null;\r\n if (meldingen && meldingen.length) {\r\n // Parse DTO to our model\r\n const parsedMeldingen = meldingen.map((m) => new BarMelding().convert(m));\r\n // Find melding of type onbeschikbaar\r\n onbeschikbaarMelding = parsedMeldingen.find((m) => m.meldingType === BarMeldingType.Onbeschikbaar);\r\n // If melding of type onbeschikbaar has been found, redirect to onbeschikbaar page\r\n if (onbeschikbaarMelding) {\r\n __classPrivateFieldGet(this, _BarMeldingenEngine_instances, \"m\", _BarMeldingenEngine_handleOnbeschikbaar).call(this, onbeschikbaarMelding);\r\n }\r\n else {\r\n // Set meldingen on layout\r\n __classPrivateFieldGet(this, _BarMeldingenEngine_state, \"f\").meldingen$.next(parsedMeldingen);\r\n }\r\n }\r\n else {\r\n __classPrivateFieldGet(this, _BarMeldingenEngine_state, \"f\").meldingen$.next([]);\r\n }\r\n return !onbeschikbaarMelding;\r\n }));\r\n }\r\n}\r\n_BarMeldingenEngine_state = new WeakMap(), _BarMeldingenEngine_meldingService = new WeakMap(), _BarMeldingenEngine_instances = new WeakSet(), _BarMeldingenEngine_handleOnbeschikbaar = function _BarMeldingenEngine_handleOnbeschikbaar(melding) {\r\n const meldingKey = `${BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX}melding_${melding.id}`;\r\n // store melding content in session storage\r\n window.sessionStorage.setItem(meldingKey, JSON.stringify(melding));\r\n // redirect to onbeschikbaar pagina which will ready the melding to show from the session storage (and clean it up)\r\n window.location.href = `${__classPrivateFieldGet(this, _BarMeldingenEngine_state, \"f\").location.baasStatic.url}${BAR_CORE_CONSTANTS.PAGES.ONBESCHIKBAAR}/${melding.id}`;\r\n};\r\nBarMeldingenEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingenEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeldingenEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingenEngine });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingenEngine, decorators: [{\r\n type: Injectable\r\n }] });\n\nvar __BarMeldingGuard_meldingEngine;\r\n/** Internal guard for meldingen. */\r\nclass _BarMeldingGuard {\r\n constructor() {\r\n __BarMeldingGuard_meldingEngine.set(this, inject(BarMeldingenEngine));\r\n }\r\n canActivate(route, state) {\r\n return this._canActivate(route, state);\r\n }\r\n canActivateChild(childRoute, state) {\r\n return this._canActivate(childRoute, state);\r\n }\r\n _canActivate(route, state) {\r\n var _a;\r\n // if not leaf route ommit check\r\n if (!((_a = route.routeConfig) === null || _a === void 0 ? void 0 : _a.component))\r\n return of(true);\r\n return __classPrivateFieldGet(this, __BarMeldingGuard_meldingEngine, \"f\").retrieveAndProcess(state.url);\r\n }\r\n}\r\n__BarMeldingGuard_meldingEngine = new WeakMap();\r\n_BarMeldingGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarMeldingGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\n_BarMeldingGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarMeldingGuard });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarMeldingGuard, decorators: [{\r\n type: Injectable\r\n }] });\r\n/** @deprecated Adding guards for meldingen is not needed anymore. */\r\nclass BarMeldingGuard {\r\n // NOTE use any because of typescript compiler incompatibility\r\n canActivate(route, state) {\r\n if (!BarMeldingGuard.warningGiven) {\r\n console.warn('The BarMeldingGuard is deprecated and can be removed safely.');\r\n BarMeldingGuard.warningGiven = true;\r\n }\r\n return of(true);\r\n }\r\n}\r\nBarMeldingGuard.warningGiven = false;\r\nBarMeldingGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarMeldingGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingGuard });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarMeldingGuard, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass BarZoneGuard {\r\n constructor(translate, core, state, localhost) {\r\n this.translate = translate;\r\n this.core = core;\r\n this.state = state;\r\n this.localhost = localhost;\r\n }\r\n canActivate(route) {\r\n // https://stackoverflow.com/questions/42719445/pass-parameter-into-route-guard\r\n const zones = route.data['zones'];\r\n let result = false;\r\n if (zones != null &&\r\n zones.length > 0 &&\r\n this.state.basiscontext != null &&\r\n this.state.basiscontext.zone != null &&\r\n this.state.basiscontext.zone.length > 0) {\r\n result = zones.indexOf(this.state.basiscontext.zone) > -1;\r\n }\r\n if (!result) {\r\n if (!this.localhost) {\r\n this.core.navigateHome();\r\n }\r\n else {\r\n const errorMessage = this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.ZONES_NOT_ALLOWED', { zones: zones.join() });\r\n console.error(errorMessage);\r\n const error = new Error(errorMessage);\r\n this.core.errorOccurred.emit(error);\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\nBarZoneGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarZoneGuard, deps: [{ token: i1$2.BarI18nService }, { token: BarCoreService }, { token: BarCoreStateService }, { token: BAR_LOCALHOST }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarZoneGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarZoneGuard });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarZoneGuard, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i1$2.BarI18nService }, { type: BarCoreService }, { type: BarCoreStateService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOCALHOST]\r\n }] }];\r\n } });\n\nclass BaasModuleOptions {\r\n}\n\n/**\r\n * Actie object to check. This is needed by the BarActieAllowedGuard.\r\n */\r\nclass BarActieFromContext {\r\n constructor(actie) {\r\n this.includeVoorwie = true;\r\n this.includeHoedanigheid = true;\r\n if (actie != null) {\r\n this.actie = actie.actie;\r\n this.includeVoorwie =\r\n actie.includeVoorwie === undefined\r\n ? true\r\n : actie.includeVoorwie;\r\n this.includeHoedanigheid =\r\n actie.includeHoedanigheid === undefined\r\n ? true\r\n : actie.includeHoedanigheid;\r\n }\r\n }\r\n}\n\n/** Represents a definition of an action without UI or styling. */\r\nclass BarActionDef {\r\n}\n\n/** Options for the cacheable decorator. */\r\nclass BarCacheableOptions {\r\n constructor() {\r\n /** Whether to use a promise instead of an Observable. The reason is that we cannot guess the return type by default without executing it. */\r\n this.promise = false;\r\n }\r\n}\n\nclass BarLogInfo {\r\n}\n\n/** Will initialize everything regarding the BaaS BUI hub. */\r\nclass BaasHubInitializedHook {\r\n constructor(hubClient, coreState, moduleOptions) {\r\n this.hubClient = hubClient;\r\n this.coreState = coreState;\r\n this.moduleOptions = moduleOptions;\r\n }\r\n run() {\r\n var _a, _b, _c;\r\n if ((_a = this.moduleOptions.hub) === null || _a === void 0 ? void 0 : _a.enabled) {\r\n const hubUrl = concatUrl(this.coreState.location.baasWeb.url, '/baas/hubs/bui');\r\n this.hubClient.init({\r\n hubUrl,\r\n userId: (_b = this.coreState.basiscontext) === null || _b === void 0 ? void 0 : _b.userId,\r\n appCode: this.coreState.toepassing.code,\r\n securityTicketId: (_c = this.coreState.basiscontext) === null || _c === void 0 ? void 0 : _c.securityTicketId,\r\n logLevel: this.moduleOptions.hub.logLevel\r\n });\r\n }\r\n }\r\n}\r\nBaasHubInitializedHook.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasHubInitializedHook, deps: [{ token: i1$3.BarHubClient }, { token: BarCoreStateService }, { token: BaasModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasHubInitializedHook.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasHubInitializedHook });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasHubInitializedHook, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$3.BarHubClient }, { type: BarCoreStateService }, { type: BaasModuleOptions }]; } });\n\nclass BaasAuditHttpService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n save(auditItems) {\r\n return this.http.post(this.state.location.apiRoot.url + 'baas/audit/bui/messages', auditItems, {\r\n params: new BarHttpParams(true, false),\r\n responseType: 'text'\r\n });\r\n }\r\n}\r\nBaasAuditHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasAuditHttpService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasAuditHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasAuditHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasAuditHttpService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\n// version of baas where this is available with the version parameter (endpoint logging)\r\nconst BAAS_VERSION_ENDPOINTS = '3.8.2.0';\r\nclass BaasCommonHttpService {\r\n constructor(http, state, coreOptions) {\r\n this.http = http;\r\n this.state = state;\r\n this.coreOptions = coreOptions;\r\n }\r\n get rootUrl() {\r\n if (this.coreOptions.rootUrl != null) {\r\n if (this.coreOptions.rootUrl.endsWith('/')) {\r\n return this.coreOptions.rootUrl;\r\n }\r\n return this.coreOptions.rootUrl + '/';\r\n }\r\n return '/';\r\n }\r\n preInitLocal() {\r\n return this.http.post(this.state.location.apiRoot.url + 'baas/bootloader/pre-init-local', null, {\r\n // ommit interceptor for performing the pre-init-local\r\n // this is invoked in the very beginning before pre-init\r\n params: new BarHttpParams(false, true),\r\n withCredentials: true\r\n });\r\n }\r\n preInit(request) {\r\n return this.http\r\n .post(this.state.location.apiRoot.url + 'baas/bootloader/pre-init', request, {\r\n // ommit interceptor for getting configuration\r\n // this is invoked before authentication\r\n params: new BarHttpParams(false, true),\r\n withCredentials: true\r\n })\r\n .pipe(tap((response) => {\r\n if (response === null || response === void 0 ? void 0 : response.toepassing)\r\n this.parseToepassing(response.toepassing);\r\n }));\r\n }\r\n init(request) {\r\n return this.http\r\n .post(this.state.location.apiRoot.url + 'baas/bootloader/init', request, {\r\n // treat as background request because audit needs the toepassing (kip of het ei syndrom)\r\n // this is running after authentication\r\n params: new BarHttpParams(true, false)\r\n })\r\n .pipe(tap((response) => {\r\n if (response && response.toepassing)\r\n this.parseToepassing(response.toepassing);\r\n }));\r\n }\r\n initLocal() {\r\n return this.http.post(this.state.location.apiRoot.url + 'baas/bootloader/init-local', {}, {\r\n // init local runs after init, meaning we are authenticated\r\n params: new BarHttpParams(true, false)\r\n });\r\n }\r\n saveEndpoints(appCode, appVersion, endpoints) {\r\n // @deprecated feature flagging not needed in long term\r\n const versionOk = this.state.baasVersion && versionCompare(this.state.baasVersion, BAAS_VERSION_ENDPOINTS) >= 0;\r\n if (!versionOk)\r\n console.warn(`Please upgrade Baas.NET to the latest stable version higher or equal to ${BAAS_VERSION_ENDPOINTS} for an optimal registration of route endpoints.`);\r\n const rootUrl = versionOk ? this.state.location.apiRoot.url : this.state.location.baasStatic.url;\r\n const url = `${rootUrl}baas/bootloader/endpoints/appcode/${appCode}/version/${appVersion}`;\r\n return this.http.post(url, endpoints).pipe(tap((result) => {\r\n if (!result.returnVal)\r\n console.error('An error occurred while saving the endpoints', result);\r\n }), catchError((err) => {\r\n // application should not crash because of this\r\n console.error('An error occurred while saving the endpoints', err);\r\n return of(undefined);\r\n }));\r\n }\r\n parseToepassing(toepassing) {\r\n if (typeof toepassing.securityLevel === 'string') {\r\n const securityLevelKey = 'securityLevel';\r\n toepassing[securityLevelKey] = this.parseSecLevelFromString(toepassing.securityLevel);\r\n }\r\n }\r\n parseSecLevelFromString(securityLevel) {\r\n if (securityLevel == null)\r\n return null;\r\n switch (securityLevel.toUpperCase()) {\r\n case 'DEV':\r\n return BarSecurityLevel.Development;\r\n case 'TST':\r\n return BarSecurityLevel.Test;\r\n case 'PRD':\r\n return BarSecurityLevel.Production;\r\n default:\r\n return BarSecurityLevel.Unknown;\r\n }\r\n }\r\n}\r\nBaasCommonHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCommonHttpService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }, { token: BarConnectedModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasCommonHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCommonHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCommonHttpService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }, { type: BarConnectedModuleOptions }]; } });\n\nclass BaasLoggingHttpService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n save(logs) {\r\n return this.http.post(this.state.location.apiRoot.url + 'baas/logging/bui/messages', logs, {\r\n params: new BarHttpParams(true, false),\r\n responseType: 'text'\r\n });\r\n }\r\n}\r\nBaasLoggingHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasLoggingHttpService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasLoggingHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasLoggingHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasLoggingHttpService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BaasMeetpuntHttpService {\r\n constructor() {\r\n this.warnedNotAvailable = false;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n save(meetpunten) {\r\n this.warnNotAvailable();\r\n return of(null);\r\n }\r\n warnNotAvailable() {\r\n if (!this.warnedNotAvailable) {\r\n this.warnedNotAvailable = true;\r\n console.warn('Meetpunten zijn (nog) niet beschikbaar binnen BaaS.Net...');\r\n }\r\n }\r\n}\r\nBaasMeetpuntHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasMeetpuntHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasMeetpuntHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasMeetpuntHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasMeetpuntHttpService, decorators: [{\r\n type: Injectable\r\n }] });\n\nvar _BaasMeldingHttpService_instances, _BaasMeldingHttpService_getMeldingenV2, _BaasMeldingHttpService_getMeldingenV1;\r\nconst BAAS_VERSION_MELDINGEN_V2 = '3.8.5.0';\r\nclass BaasMeldingHttpService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n _BaasMeldingHttpService_instances.add(this);\r\n }\r\n /**\r\n * Get meldingen for requested url\r\n */\r\n getMeldingen(url) {\r\n var _a, _b, _c;\r\n const apiVersion = (_c = (_b = (_a = this.state.config) === null || _a === void 0 ? void 0 : _a.baasStatic) === null || _b === void 0 ? void 0 : _b.meldingen) === null || _c === void 0 ? void 0 : _c.apiVersion;\r\n if (apiVersion === '2')\r\n return __classPrivateFieldGet(this, _BaasMeldingHttpService_instances, \"m\", _BaasMeldingHttpService_getMeldingenV2).call(this, url);\r\n return __classPrivateFieldGet(this, _BaasMeldingHttpService_instances, \"m\", _BaasMeldingHttpService_getMeldingenV1).call(this, url);\r\n }\r\n /**\r\n *Used by Melding Guard to check if a route has a blocking notification, if so it has to redirect to a specific page\r\n */\r\n hasBlockingMelding(urlPart) {\r\n const url = this.state.location.apiRoot.url + `baas/melding/important-only/for-url?urlPart=${encodeURI(urlPart)}`;\r\n return this.http.get(url);\r\n }\r\n}\r\n_BaasMeldingHttpService_instances = new WeakSet(), _BaasMeldingHttpService_getMeldingenV2 = function _BaasMeldingHttpService_getMeldingenV2(url) {\r\n // @deprecated feature flagging not needed in long term\r\n const versionOk = this.state.baasVersion && versionCompare(this.state.baasVersion, BAAS_VERSION_MELDINGEN_V2) >= 0;\r\n if (!versionOk)\r\n console.warn(`Please upgrade Baas.NET to the latest stable version higher or equal to ${BAAS_VERSION_MELDINGEN_V2} for an optimal use of meldingen api V2.`);\r\n const apiUrl = concatUrl(versionOk ? this.state.location.apiRoot.url : this.state.location.baasStatic.url, `/baas/meldingv2/for-url?pattern=${encodeURI(url)}`);\r\n return this.http.get(apiUrl).pipe(map$1((meldingen) => meldingen.map((melding) => {\r\n return Object.assign(Object.assign({}, melding), { baas: true, version: '2' });\r\n })));\r\n}, _BaasMeldingHttpService_getMeldingenV1 = function _BaasMeldingHttpService_getMeldingenV1(url) {\r\n const myUrl = this.state.location.apiRoot.url + `baas/melding/all-types/for-url?urlPart=${encodeURI(url)}`;\r\n return this.http.get(myUrl).pipe(map$1((meldingen) => meldingen.map((melding) => {\r\n return Object.assign(Object.assign({}, melding), { baas: true, version: '1' });\r\n })));\r\n};\r\nBaasMeldingHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasMeldingHttpService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasMeldingHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasMeldingHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasMeldingHttpService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BaasProfielHttpService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n // de BaaS api werkt met GET voor ophalen van values\r\n read(model) {\r\n const myUrl = this.state.location.apiRoot.url + `baas/configuration/value/appCode/${model.appCode}/path/${encodeURI(model.key)}`;\r\n return this.http.get(myUrl, { responseType: 'text' });\r\n }\r\n}\r\nBaasProfielHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasProfielHttpService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasProfielHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasProfielHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasProfielHttpService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nconst BAAS_VERSION_USER_INFO = '1.7.6.0';\r\nclass BaasSecurityHttpService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n checkActieAllowed(actie) {\r\n // indien checkActieAllowed vanuit checkActieAllowedFromContext wordt aangeroepen\r\n // zal voorwie / voorwierolcode en hoedanigheid / hoedanigheidrolcode ingevuld zijn\r\n // /baas/security/isactieallowed/actie/{actie}\r\n // /baas/security/isactieallowed/actie/{actie}/voorwie/{voorwie}/rolcode/{rolcode}\r\n // /baas/security/isactieallowed/actie/{actie}/hoedanigheid/{hoedanigheid}/rolcode/{rolcode}\r\n // /baas/security/isactieallowed/actie/{actie}/voorwie/{vw}/rolcode/{vwrc}/hoedanigheid/{hoed}/rolcode/{hdrc}\r\n let voorwieSegment = '';\r\n if (actie.voorwie && actie.voorwieRolcode)\r\n voorwieSegment = '/voorwie/' + actie.voorwie + '/rolcode/' + actie.voorwieRolcode;\r\n let hoedanigheidSegment = '';\r\n if (actie.hoedanigheid && actie.hoedanigheidRolcode)\r\n hoedanigheidSegment = '/hoedanigheid/' + actie.hoedanigheid + '/rolcode/' + actie.hoedanigheidRolcode;\r\n return this.http.get(this.state.location.apiRoot.url + 'baas/security/isactieallowed/actie/' + encodeURI(actie.actie) + voorwieSegment + hoedanigheidSegment);\r\n }\r\n /** @deprecated */\r\n getHoedanigheidInfoSet() {\r\n return this.http.get(this.state.location.apiRoot.url + 'baas/security/ticket-info').pipe(catchError((err) => {\r\n console.error(err);\r\n return of([]);\r\n }));\r\n }\r\n getUserInfo() {\r\n // @deprecated feature flagging not needed in long term\r\n const versionOk = this.state.baasVersion && versionCompare(this.state.baasVersion, BAAS_VERSION_USER_INFO) >= 0;\r\n if (!versionOk)\r\n console.warn(`Please upgrade Baas.NET to the latest stable version higher or equal to ${BAAS_VERSION_USER_INFO} for an optimal retrieval of user info.`);\r\n if (!versionOk && this.state.connectivity === BarConnectivity.Offline) {\r\n // old mechanisme in case offline modus (only hoedanigheid info set is filled in)\r\n return this.getHoedanigheidInfoSet().pipe(map((data) => ({\r\n hoedanigheidInfoSet: data\r\n })));\r\n }\r\n else {\r\n // in case baas version is too low we ask information to baas static (we cannot call baas static in offline modus)\r\n const rootUrl = versionOk ? this.state.location.apiRoot.url : this.state.location.baasStatic.url;\r\n return this.http.get(rootUrl + 'baas/security/user-info').pipe(map((data) => ({\r\n cbiUserId: data.cbiUserId,\r\n hoedanigheidInfoSet: data.hoedList,\r\n contactInfo: data.contactInfo != null\r\n ? {\r\n klantnummer: data.contactInfo.alvNr,\r\n firstname: data.contactInfo.firstName,\r\n lastname: data.contactInfo.lastname,\r\n fullName: data.contactInfo.fullname,\r\n phone: data.contactInfo.phoneNumber,\r\n mobile: data.contactInfo.mobileNumber,\r\n email: data.contactInfo.mailAddress\r\n }\r\n : undefined\r\n })), catchError((err) => {\r\n console.error(err);\r\n return of({});\r\n }));\r\n }\r\n }\r\n}\r\nBaasSecurityHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasSecurityHttpService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasSecurityHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasSecurityHttpService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasSecurityHttpService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarAuditHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n save(auditItems) {\r\n return this.http.post(this.state.location.barWeb.url + 'api/audit', auditItems, { params: new BarHttpParams(true, false) });\r\n }\r\n}\r\nBarAuditHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarAuditHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarAuditHttpService {\r\n}\r\nBarAuditHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarAuditHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditHttpService, providedIn: 'root', useClass: BarAuditHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarAuditHttpDefaultService }]\r\n }] });\n\nclass BarCommonHttpDefaultService {\r\n constructor(http, state) {\r\n this.http = http;\r\n this.state = state;\r\n }\r\n preInitLocal() {\r\n return this.http.post(this.state.location.apiRoot.url + 'api/pre-init-local', null, {\r\n // ommit interceptor for performing the pre-init-local\r\n params: new BarHttpParams(false, true),\r\n withCredentials: true\r\n });\r\n }\r\n preInit(request) {\r\n return this.http\r\n .post(this.state.location.baasStatic.url + 'baas/bootloader/pre-init', request, {\r\n // ommit interceptor for getting configuration\r\n // this is invoked before authentication\r\n params: new BarHttpParams(false, true),\r\n withCredentials: true\r\n })\r\n .pipe(tap$1((response) => {\r\n if (response === null || response === void 0 ? void 0 : response.toepassing)\r\n this.parseToepassing(response.toepassing);\r\n }));\r\n }\r\n init(request) {\r\n return this.http\r\n .post(this.state.location.baasStatic.url + 'baas/bootloader/init', request, {\r\n // treat as background request because audit needs the toepassing (kip of het ei syndrom)\r\n // this is running after authentication\r\n params: new BarHttpParams(true, false)\r\n })\r\n .pipe(tap$1((response) => {\r\n if (response && response.toepassing)\r\n this.parseToepassing(response.toepassing);\r\n }));\r\n }\r\n initLocal() {\r\n return this.http.post(this.state.location.apiRoot.url + 'api/init-local', {}, {\r\n params: new BarHttpParams(false, true),\r\n withCredentials: true,\r\n headers: new HttpHeaders({ 'X-Requested-With': 'XMLHttpRequest' })\r\n });\r\n }\r\n saveEndpoints(appCode, appVersion, endpoints) {\r\n // NOTE just invoke baas static instead of BAR web\r\n const url = `${this.state.location.baasStatic.url}baas/bootloader/endpoints/appcode/${appCode}/version/${appVersion}`;\r\n return this.http.post(url, endpoints).pipe(tap$1((result) => {\r\n if (!result.returnVal)\r\n console.error('An error occurred while saving the endpoints', result);\r\n }), catchError$1((err) => {\r\n // application should not crash because of this\r\n console.error('An error occurred while saving the endpoints', err);\r\n return of(undefined);\r\n }));\r\n }\r\n parseToepassing(toepassing) {\r\n if (typeof toepassing.securityLevel === 'string') {\r\n const securityLevelKey = 'securityLevel';\r\n toepassing[securityLevelKey] = this.parseSecLevelFromString(toepassing.securityLevel);\r\n }\r\n }\r\n parseSecLevelFromString(securityLevel) {\r\n if (securityLevel == null)\r\n return null;\r\n switch (securityLevel.toUpperCase()) {\r\n case 'DEV':\r\n return BarSecurityLevel.Development;\r\n case 'TST':\r\n return BarSecurityLevel.Test;\r\n case 'PRD':\r\n return BarSecurityLevel.Production;\r\n default:\r\n return BarSecurityLevel.Unknown;\r\n }\r\n }\r\n}\r\nBarCommonHttpDefaultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCommonHttpDefaultService, deps: [{ token: i1$1.HttpClient }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarCommonHttpDefaultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCommonHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCommonHttpDefaultService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: BarCoreStateService }]; } });\n\nclass BarCommonHttpService {\r\n}\r\nBarCommonHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCommonHttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarCommonHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCommonHttpService, providedIn: 'root', useClass: BarCommonHttpDefaultService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCommonHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root', useClass: BarCommonHttpDefaultService }]\r\n }] });\n\nclass BaasCoreModule {\r\n constructor(injector, translate) {\r\n this.translate = translate;\r\n BaasCoreModule.injector = injector;\r\n this.translate.addTranslations('DOMAIN_BAR_CORE', translations$1);\r\n }\r\n static forRoot(options = {}) {\r\n return {\r\n ngModule: BaasCoreModule,\r\n providers: [\r\n {\r\n provide: BaasModuleOptions,\r\n useValue: options\r\n },\r\n {\r\n provide: BarAuditHttpService,\r\n useClass: BaasAuditHttpService\r\n },\r\n {\r\n provide: BarCommonHttpService,\r\n useClass: BaasCommonHttpService\r\n },\r\n {\r\n provide: BarLoggingHttpService,\r\n useClass: BaasLoggingHttpService\r\n },\r\n {\r\n provide: BarMeetpuntHttpService,\r\n useClass: BaasMeetpuntHttpService\r\n },\r\n {\r\n provide: BarMeldingHttpService,\r\n useClass: BaasMeldingHttpService\r\n },\r\n {\r\n provide: BarProfielHttpService,\r\n useClass: BaasProfielHttpService\r\n },\r\n {\r\n provide: BarSecurityHttpService,\r\n useClass: BaasSecurityHttpService\r\n },\r\n {\r\n provide: BAR_INITIALIZED,\r\n useClass: BaasHubInitializedHook,\r\n multi: true\r\n }\r\n ]\r\n };\r\n }\r\n}\r\nBaasCoreModule.injector = null;\r\nBaasCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCoreModule, deps: [{ token: i0.Injector }, { token: i1$2.BarI18nService }], target: i0.ɵɵFactoryTarget.NgModule });\r\nBaasCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCoreModule });\r\nBaasCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCoreModule });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasCoreModule, decorators: [{\r\n type: NgModule\r\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$2.BarI18nService }]; } });\n\nclass BarGvkStateBridge {\r\n constructor(coreState) {\r\n this.coreState = coreState;\r\n // In Angular applications calls to remote api are enabled because we have XDC\r\n this.remoteLocalhostApiEnabled = true;\r\n }\r\n get userId() {\r\n return this.coreState.basiscontext ? this.coreState.basiscontext.userId : null;\r\n }\r\n get appCode() {\r\n return this.coreState.toepassing ? this.coreState.toepassing.code : null;\r\n }\r\n get apiRootUrl() {\r\n return this.coreState.location && this.coreState.location.barWeb ? this.coreState.location.barWeb.url : null;\r\n }\r\n}\r\nBarGvkStateBridge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarGvkStateBridge, deps: [{ token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarGvkStateBridge.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarGvkStateBridge, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarGvkStateBridge, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }]; } });\n\nvar _BarPageNotFoundGuard_oopsDomService;\r\nclass BarPageNotFoundGuard {\r\n constructor() {\r\n _BarPageNotFoundGuard_oopsDomService.set(this, inject(_OopsDomService));\r\n }\r\n canActivate(route) {\r\n if (__classPrivateFieldGet(this, _BarPageNotFoundGuard_oopsDomService, \"f\").checkOopsSupported()) {\r\n __classPrivateFieldGet(this, _BarPageNotFoundGuard_oopsDomService, \"f\").showOops({ type: _OopsType.NotFound });\r\n }\r\n return true;\r\n }\r\n}\r\n_BarPageNotFoundGuard_oopsDomService = new WeakMap();\r\nBarPageNotFoundGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarPageNotFoundGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarPageNotFoundGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarPageNotFoundGuard });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarPageNotFoundGuard, decorators: [{\r\n type: Injectable\r\n }] });\n\nvar __BaasStaticConfigurationApiClient_instances, __BaasStaticConfigurationApiClient_httpClient, __BaasStaticConfigurationApiClient_coreState, __BaasStaticConfigurationApiClient_logging, __BaasStaticConfigurationApiClient_cacheManager, __BaasStaticConfigurationApiClient_invalidateConfiguration;\r\nconst CACHE_STORE = 'baas-static';\r\nconst CONFIGURATION_KEY = 'configuration';\r\n/** Internal service to access the BaaS Static configuration api. */\r\nclass _BaasStaticConfigurationApiClient {\r\n constructor() {\r\n __BaasStaticConfigurationApiClient_instances.add(this);\r\n __BaasStaticConfigurationApiClient_httpClient.set(this, inject(HttpClient));\r\n __BaasStaticConfigurationApiClient_coreState.set(this, inject(BarCoreStateService));\r\n __BaasStaticConfigurationApiClient_logging.set(this, inject(BarLoggingService));\r\n __BaasStaticConfigurationApiClient_cacheManager.set(this, inject(BarCacheManager));\r\n }\r\n /* Gets the BaaS static configuration */\r\n getConfiguration() {\r\n const url = `${__classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_coreState, \"f\").location.baasStatic.url}api/configuration`;\r\n return __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_httpClient, \"f\").get(url).pipe(\r\n // NOTE do not crash the application in case something happens here\r\n catchError((err) => {\r\n console.error(err);\r\n __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_logging, \"f\").error(err);\r\n return of(undefined);\r\n }));\r\n }\r\n /** Enables or disables the chatbot. */\r\n enableChatbot(enabled) {\r\n const url = `${__classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_coreState, \"f\").location.baasStatic.url}api/configuration/chat-bot/enabled`;\r\n return __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_httpClient, \"f\").put(url, enabled).pipe(mergeMap(() => {\r\n var _a;\r\n if ((_a = __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_coreState, \"f\").config) === null || _a === void 0 ? void 0 : _a.baasStatic) {\r\n // change in memory value\r\n __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_coreState, \"f\").config.baasStatic.chatbot.enabled = enabled;\r\n // remove the configuration from the cache store\r\n return __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_instances, \"m\", __BaasStaticConfigurationApiClient_invalidateConfiguration).call(this);\r\n }\r\n return of(undefined);\r\n }));\r\n }\r\n /** Checks whether the chatbot is enabled. */\r\n checkChatbotEnabled() {\r\n var _a, _b, _c;\r\n return of((_c = (_b = (_a = __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_coreState, \"f\").config) === null || _a === void 0 ? void 0 : _a.baasStatic) === null || _b === void 0 ? void 0 : _b.chatbot) === null || _c === void 0 ? void 0 : _c.enabled);\r\n }\r\n}\r\n__BaasStaticConfigurationApiClient_httpClient = new WeakMap(), __BaasStaticConfigurationApiClient_coreState = new WeakMap(), __BaasStaticConfigurationApiClient_logging = new WeakMap(), __BaasStaticConfigurationApiClient_cacheManager = new WeakMap(), __BaasStaticConfigurationApiClient_instances = new WeakSet(), __BaasStaticConfigurationApiClient_invalidateConfiguration = function __BaasStaticConfigurationApiClient_invalidateConfiguration() {\r\n const cacheStore = __classPrivateFieldGet(this, __BaasStaticConfigurationApiClient_cacheManager, \"f\").getStore({ storeType: BarCacheStoreType.Global, store: CACHE_STORE });\r\n // remove the configuration from the cache store\r\n return from(cacheStore.removeItem(CONFIGURATION_KEY));\r\n};\r\n_BaasStaticConfigurationApiClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BaasStaticConfigurationApiClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\n_BaasStaticConfigurationApiClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BaasStaticConfigurationApiClient, providedIn: 'root' });\r\n__decorate([\r\n BarCacheable({\r\n key: CONFIGURATION_KEY,\r\n store: {\r\n store: CACHE_STORE,\r\n storeType: BarCacheStoreType.Global\r\n }\r\n })\r\n], _BaasStaticConfigurationApiClient.prototype, \"getConfiguration\", null);\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BaasStaticConfigurationApiClient, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], propDecorators: { getConfiguration: [] } });\n\n// internal key in app store\r\nconst KEY_ENDPOINTS = '_endpoints';\r\n/** Internal class logging all routes of the app. */\r\nclass _BarRouteLogger {\r\n constructor() {\r\n this.router = inject(Router);\r\n this.api = inject(BarCommonHttpService);\r\n this.state = inject(BarCoreStateService);\r\n this.appStore = inject(BarCacheStore);\r\n this.localhost = inject(BAR_LOCALHOST);\r\n // TODO use takeUntil from angular 16+ in the future\r\n this.destroyed$ = new Subject();\r\n this.loggedEndpoints$$ = new BehaviorSubject(undefined);\r\n }\r\n ngOnDestroy() {\r\n this.destroyed$.next(undefined);\r\n this.destroyed$.complete();\r\n this.loggedEndpoints$$.complete();\r\n }\r\n init() {\r\n var _a, _b;\r\n // behavior must be turned on and not in localhost modus\r\n const enabled = ((_b = (_a = this.state.config.baasStatic) === null || _a === void 0 ? void 0 : _a.general) === null || _b === void 0 ? void 0 : _b.endpointLoggingEnabled) && !this.localhost;\r\n if (!enabled)\r\n return;\r\n this.router.events\r\n .pipe(filter((val) => val instanceof NavigationEnd), switchMap(() => {\r\n // Check if data is available in the BehaviorSubject, otherwise, fetch from appStore\r\n // NOTE this is to avoid having to access indexed db too much\r\n if (this.loggedEndpoints$$.getValue() === undefined) {\r\n // also get the already logged endpoints from the storage\r\n return from(this.appStore.getItem(KEY_ENDPOINTS)).pipe(tap$1((endpoints) => {\r\n // Cache the fetched endpoints in the BehaviorSubject\r\n this.loggedEndpoints$$.next(endpoints);\r\n }));\r\n }\r\n else {\r\n return this.loggedEndpoints$$.asObservable(); // Use cached data\r\n }\r\n }), map$1((loggedEndpoints) => {\r\n if (!loggedEndpoints)\r\n loggedEndpoints = [];\r\n const endpointsToLog = [];\r\n this.collect(this.router.config, endpointsToLog, loggedEndpoints);\r\n return { endpoints: endpointsToLog, loggedEndpoints };\r\n }), filter((result) => result.endpoints.length > 0), mergeMap$1((result) => {\r\n const remember$ = from(this.appStore.setItem(KEY_ENDPOINTS, result.loggedEndpoints.concat(result.endpoints)));\r\n return forkJoin([this.api.saveEndpoints(this.state.toepassing.code, this.state.toepassing.versie, result.endpoints), remember$]);\r\n }), takeUntil(this.destroyed$))\r\n .subscribe();\r\n }\r\n collect(routes, endpointsToLog, loggedEndpoints, parentPath = undefined) {\r\n routes\r\n // don't collect framework routes\r\n .filter((route) => { var _a; return !((_a = route.data) === null || _a === void 0 ? void 0 : _a._framework); })\r\n .forEach((route) => {\r\n var _a;\r\n const fullPath = parentPath ? parentPath + '/' + route.path : route.path;\r\n if (route.loadChildren) {\r\n // check that lazy loaded module has already been loaded\r\n if (route._loadedRoutes) {\r\n // lazy loaded module, traverse the children\r\n this.collect(route._loadedRoutes, endpointsToLog, loggedEndpoints, fullPath);\r\n }\r\n }\r\n else {\r\n if (((_a = route.children) === null || _a === void 0 ? void 0 : _a.length) > 0) {\r\n // this is a parent route, so traverse the children\r\n this.collect(route.children, endpointsToLog, loggedEndpoints, fullPath);\r\n }\r\n // define whether it is an end route\r\n const endRoute = route.component || route.loadComponent || route.redirectTo;\r\n // real route should have a component (but can still be a parent route)\r\n if (!route._baasHandled && endRoute) {\r\n const path = `${this.state.location.application.pathname}${fullPath}`;\r\n // chech that it has not been logged yet\r\n if (loggedEndpoints.indexOf(path) == -1) {\r\n // regular route, just log in case not handled yet\r\n endpointsToLog.push(path);\r\n }\r\n // mark as handled in case leaf route\r\n // note that a parent route could always have lazy loaded modules which have not been loaded yet\r\n route._baasHandled = true;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n_BarRouteLogger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarRouteLogger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\n_BarRouteLogger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarRouteLogger });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarRouteLogger, decorators: [{\r\n type: Injectable\r\n }] });\n\n// NOTE here we load some BaaS static specific data after BAR/BaaS is initialized\r\nclass BaasStaticInitializedHook {\r\n constructor() {\r\n this.order = 0;\r\n /** Invoked before init. */\r\n this._pre = true;\r\n this._framework = true;\r\n this.moduleOptions = inject(BarConnectedModuleOptions);\r\n this.coreState = inject(BarCoreStateService);\r\n this.apiService = inject(_BaasStaticConfigurationApiClient);\r\n this.routeLogger = inject(_BarRouteLogger);\r\n this.localhost = inject(BAR_LOCALHOST);\r\n }\r\n run() {\r\n if (this.coreState.connectivity === BarConnectivity.Online) {\r\n return this.apiService.getConfiguration().pipe(tap((config) => this.handleConfig(config)), \r\n // NOTE after configuration we init the route logging which depends on BaaS Static configuration\r\n tap(() => this.routeLogger.init()), map(() => undefined));\r\n }\r\n }\r\n handleConfig(config) {\r\n var _a, _b;\r\n (_a = config === null || config === void 0 ? void 0 : config.appMenuItems) === null || _a === void 0 ? void 0 : _a.forEach((ami) => {\r\n ami.url = this.processAppMenuUrl(ami.url);\r\n if (this.localhost) {\r\n ami.urlLocalhost = this.processAppMenuUrl(ami.urlLocalhost);\r\n }\r\n });\r\n const configKey = 'config';\r\n // assign it to sub property\r\n this.coreState[configKey].baasStatic = config;\r\n // override config in case public\r\n if (this.moduleOptions.public === true && ((_b = config.public) === null || _b === void 0 ? void 0 : _b.homeUrl)) {\r\n this.coreState.config.homeUrl = config.public.homeUrl;\r\n }\r\n }\r\n processAppMenuUrl(url) {\r\n if (!url || checkUrlAbsolute(url))\r\n return url;\r\n return `${this.coreState.location.release.origin}${url}`;\r\n }\r\n}\r\nBaasStaticInitializedHook.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasStaticInitializedHook, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasStaticInitializedHook.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasStaticInitializedHook });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasStaticInitializedHook, decorators: [{\r\n type: Injectable\r\n }] });\n\n/** Lifecycle for initializing everything regarding push notifications. */\r\nclass BarNotificationInitializedHook {\r\n constructor(notificationManager, moduleOptions) {\r\n this.notificationManager = notificationManager;\r\n this.moduleOptions = moduleOptions;\r\n }\r\n run() {\r\n if (this.moduleOptions.notifications === true)\r\n this.notificationManager.init();\r\n }\r\n}\r\nBarNotificationInitializedHook.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarNotificationInitializedHook, deps: [{ token: i1$3.BarNotificationManager }, { token: BarConnectedModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarNotificationInitializedHook.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarNotificationInitializedHook });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarNotificationInitializedHook, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$3.BarNotificationManager }, { type: BarConnectedModuleOptions }]; } });\n\nconst STORAGE_KEY_USER_INFO_PREFIX = BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'userInfo_';\r\n/** Handles the user data (security ticket, contact...) processing. */\r\nclass BarUserDataHook {\r\n constructor(securityHttpService, state, auth) {\r\n this.securityHttpService = securityHttpService;\r\n this.state = state;\r\n this.auth = auth;\r\n this.order = 1;\r\n this._framework = true;\r\n }\r\n run() {\r\n var _a;\r\n // don't do anything if not authenticated\r\n if (!this.auth.authenticated) {\r\n const hoedanigheidInfoSetKey = 'hoedanigheidInfoSet';\r\n this.state[hoedanigheidInfoSetKey] = [];\r\n const userDataKey = 'userInfo';\r\n this.state[userDataKey] = {\r\n hoedanigheidInfoSet: []\r\n };\r\n return of(undefined);\r\n }\r\n const cacheKey = STORAGE_KEY_USER_INFO_PREFIX + (((_a = this.state.basiscontext) === null || _a === void 0 ? void 0 : _a.userId) || 'UNDEFINED');\r\n let cachedItem = window.sessionStorage.getItem(cacheKey);\r\n let userData$;\r\n if (cachedItem) {\r\n userData$ = of(JSON.parse(cachedItem));\r\n }\r\n else {\r\n userData$ = this.securityHttpService.getUserInfo().pipe(tap((data) => {\r\n cachedItem = JSON.stringify(data);\r\n window.sessionStorage.setItem(cacheKey, cachedItem);\r\n }));\r\n }\r\n return userData$.pipe(tap((userData) => {\r\n const userInfoKey = 'userInfo';\r\n this.state[userInfoKey] = userData;\r\n const hoedanigheidInfoSetKey = 'hoedanigheidInfoSet';\r\n this.state[hoedanigheidInfoSetKey] = userData.hoedanigheidInfoSet || [];\r\n }), mergeMap(() => of(undefined)));\r\n }\r\n}\r\nBarUserDataHook.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarUserDataHook, deps: [{ token: BarSecurityHttpService }, { token: BarCoreStateService }, { token: BarAuthService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarUserDataHook.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarUserDataHook });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarUserDataHook, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarSecurityHttpService }, { type: BarCoreStateService }, { type: BarAuthService }]; } });\n\nvar BarAuditType;\r\n(function (BarAuditType) {\r\n BarAuditType[\"Session\"] = \"BROWSERSESSIONSTART\";\r\n BarAuditType[\"Page\"] = \"BROWSERPAGE\";\r\n BarAuditType[\"Route\"] = \"BROWSERROUTE\";\r\n BarAuditType[\"Dependencies\"] = \"BROWSERDEPENDENCIES\";\r\n})(BarAuditType || (BarAuditType = {}));\n\n/** Internal enum representing the RAP segment in the URL. */\r\nvar _BarRapSegment;\r\n(function (_BarRapSegment) {\r\n _BarRapSegment[\"Applicative\"] = \"a\";\r\n _BarRapSegment[\"ReverseProxy\"] = \"r\";\r\n _BarRapSegment[\"Public\"] = \"p\";\r\n})(_BarRapSegment || (_BarRapSegment = {}));\r\n/** Internal url to assist with RAP related stuff. */\r\nclass _BarRapUrlHelper {\r\n constructor(config) {\r\n this.config = config;\r\n }\r\n get baasStaticSegment() {\r\n return BAR_CORE_CONSTANTS.URL_SEGMENT.BAAS_STATIC.replace('{segment}', this.rapSegment);\r\n }\r\n get baasWebSegment() {\r\n return BAR_CORE_CONSTANTS.URL_SEGMENT.BAAS_WEB.replace('{segment}', this.rapSegment);\r\n }\r\n get rapSegment() {\r\n return this.config.public ? _BarRapSegment.Public : _BarRapSegment.Applicative;\r\n }\r\n parseUrl(url) {\r\n if (this.config.public && url.toLowerCase().indexOf(`/${_BarRapSegment.Applicative}/`) > -1) {\r\n // Q&D for now we just do a replace (short term)\r\n return url.toLowerCase().replace(`/${_BarRapSegment.Applicative}/`, `/${_BarRapSegment.Public}/`);\r\n }\r\n return url;\r\n }\r\n}\r\n_BarRapUrlHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarRapUrlHelper, deps: [{ token: BarConnectedModuleOptions }], target: i0.ɵɵFactoryTarget.Injectable });\r\n_BarRapUrlHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarRapUrlHelper });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: _BarRapUrlHelper, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarConnectedModuleOptions }]; } });\n\n/**\r\n * Provides cross domain cookie functionality.\r\n * creëert een iframe (indien toegestaan)\r\n * voorziet een sendMessage functie voor het versturen van strings naar de iframebron\r\n * luistert op het message event\r\n */\r\nclass BarXdcService {\r\n constructor(translate, logging, config, appInfo, state, rapUrlHelper, localhost) {\r\n this.translate = translate;\r\n this.logging = logging;\r\n this.config = config;\r\n this.appInfo = appInfo;\r\n this.state = state;\r\n this.rapUrlHelper = rapUrlHelper;\r\n this.localhost = localhost;\r\n // holds all resolve and rejects for the synchronization with a guid as a key\r\n this.syncDefers = {};\r\n // defines whether sync has been disabled at runtime because of broken XDC, we need to do this to avoid syncen causing endless error loops\r\n this.syncDisabled = false;\r\n // avoid cyclic dependency with event emitter -> when app info is saved we perform a sync\r\n this.appInfo.onSyncRequired.subscribe((arg) => {\r\n this.sync(arg.context)\r\n .then(() => {\r\n arg.resolve();\r\n })\r\n .catch(() => {\r\n arg.reject();\r\n });\r\n });\r\n }\r\n get enabled() {\r\n var _a;\r\n // enabled in release build with localhost client if security level is not production (if state.toepassing is not set yet we assume XDC might be on -> chicken or egg problem: we don't have this toepassing information yet in the beginning)\r\n // or enabled in local build if we force it for testing purposes\r\n // only enabled if online (never in offline or disconnected modus)\r\n return (this.localhost &&\r\n this.config.connectivity == BarConnectivity.Online &&\r\n (!this.config.local || ((_a = this.config.auth) === null || _a === void 0 ? void 0 : _a.forceRemote)) &&\r\n this.baasContextModus === BaasContextTransportModus.OnlineCookies &&\r\n (this.state.toepassing == null || this.state.toepassing.securityLevel != BarSecurityLevel.Production));\r\n }\r\n /** Will sync the local cookie with the server cookie */\r\n // the sync is a chat between the main thread and an iframe using asynchronous communication\r\n // the main goal is to sync the local cookie and the server cookie by using a timestamp\r\n sync(context) {\r\n if (this.enabled && !this.syncDisabled) {\r\n return new Promise((resolve, reject) => {\r\n const id = generateUuid();\r\n this.syncDefers[id] = { resolve, reject };\r\n // get the server cookie first\r\n this.sendMessage({ action: 'get', id: id, context: context });\r\n });\r\n }\r\n else {\r\n //disabled: auto resolve\r\n return Promise.resolve();\r\n }\r\n }\r\n /** Will clear the server cookies at the other end (iframe). */\r\n clear(context) {\r\n if (this.enabled && !this.syncDisabled) {\r\n return new Promise((resolve, reject) => {\r\n const id = generateUuid();\r\n this.syncDefers[id] = { resolve, reject };\r\n // get the server cookie first\r\n this.sendMessage({ action: 'clear', id: id, context: context });\r\n });\r\n }\r\n else {\r\n //disabled: auto resolve\r\n return Promise.resolve();\r\n }\r\n }\r\n handleMessage(e) {\r\n if (e == null || e.data == null || e.data.action == null)\r\n return;\r\n switch (e.data.action) {\r\n case 'ready': {\r\n // the iframe is ready\r\n // resolve the promise so that messages can be send\r\n this.resolveReady();\r\n break;\r\n }\r\n case 'get-response': {\r\n // if we don't have a local session we take over the remote session of the iframe\r\n if (this.appInfo.sessionId == null) {\r\n this.appInfo.sessionId = e.data.sessionId;\r\n }\r\n // we have the server cookie\r\n const localCookie = this.appInfo.get();\r\n if (localCookie == null && e.data.cookie != null) {\r\n // save without setting the timestamp + set guid cookie\r\n this.appInfo.save(e.data.cookie, true, false, false);\r\n this.resolveSync(e.data.id);\r\n }\r\n else if (e.data.cookie == null && localCookie != null) {\r\n this.sendMessage({\r\n action: 'set',\r\n cookie: localCookie,\r\n context: e.data.context,\r\n id: e.data.id\r\n });\r\n // do not resolve yet\r\n }\r\n else if (e.data.cookie != null && localCookie != null) {\r\n // convert timestamps to date time to be able to compare\r\n const localTimestamp = localCookie.Timestamp == null ? null : new Date(localCookie.Timestamp);\r\n const serverTimestamp = e.data.cookie.Timestamp == null ? null : new Date(e.data.cookie.Timestamp);\r\n if (localTimestamp == null && serverTimestamp != null) {\r\n // no timestamp locally -> take sever cookie as is and update main cookie\r\n this.appInfo.save(e.data.cookie, true, false, false);\r\n this.resolveSync(e.data.id);\r\n }\r\n else if (localTimestamp != null && serverTimestamp == null) {\r\n // do an update on the local cookie\r\n this.sendMessage({\r\n action: 'update',\r\n cookie: localCookie,\r\n context: e.data.context,\r\n id: e.data.id\r\n });\r\n // do not resolve yet\r\n }\r\n else if (localTimestamp != null && serverTimestamp != null) {\r\n if (localTimestamp > serverTimestamp) {\r\n // local cookie time is more recent -> update server cookie\r\n this.sendMessage({\r\n action: 'update',\r\n cookie: localCookie,\r\n context: e.data.context,\r\n id: e.data.id\r\n });\r\n // do not resolve yet\r\n }\r\n else if (localTimestamp < serverTimestamp) {\r\n // server cookie time is more recent -> update local cookie\r\n this.appInfo.save(e.data.cookie, true, false, false);\r\n this.resolveSync(e.data.id);\r\n }\r\n else {\r\n // times are equal just resolve\r\n this.resolveSync(e.data.id);\r\n }\r\n }\r\n else {\r\n // we cannot sync because times are null -> do nothing\r\n this.resolveSync(e.data.id);\r\n }\r\n }\r\n else {\r\n // nothing to sync\r\n this.resolveSync(e.data.id);\r\n }\r\n break;\r\n }\r\n case 'set-response':\r\n case 'update-response':\r\n case 'clear-response': {\r\n // end of response -> resolve the sync\r\n this.resolveSync(e.data.id);\r\n break;\r\n }\r\n }\r\n }\r\n ensureIFrame() {\r\n if (this.iframeEl != null)\r\n return;\r\n this.defineGlobal();\r\n // Create the iframe\r\n this.iframeEl = document.createElement('iframe');\r\n // if xdc is enabled in local solution this means we need to point to dev because of remote authentication\r\n const rootUrl = this.config.local ? `${this.state.location.release.origin}${this.rapUrlHelper.baasStaticSegment}` : this.state.location.baasStatic.url;\r\n this.iframeEl.setAttribute('src', rootUrl + 'xdc');\r\n this.iframeEl.style.display = 'none';\r\n document.body.appendChild(this.iframeEl);\r\n this.bindEvent(window, 'message', (e) => this.handleMessage(e));\r\n // create the promise to be used when sending a message\r\n this.iframeReady = new Promise((resolve, reject) => {\r\n // remember the resolve variable\r\n this.resolveReady = resolve;\r\n });\r\n }\r\n // addEventListener support for IE8\r\n bindEvent(element, eventName, eventHandler) {\r\n if (element.addEventListener) {\r\n element.addEventListener(eventName, eventHandler, false);\r\n }\r\n else if (element.attachEvent) {\r\n element.attachEvent('on' + eventName, eventHandler);\r\n }\r\n }\r\n // Send a message to the child iframe\r\n // Make sure you are sending a string, and to stringify JSON\r\n sendMessage(msg) {\r\n this.ensureIFrame();\r\n // when the iframe is ready we send the message\r\n // we are dynamically adding the iframe to the DOM, this means it is not immediately ready (unless F12 is open)\r\n this.iframeReady.then(() => {\r\n try {\r\n this.iframeEl.contentWindow.postMessage(msg, '*');\r\n }\r\n catch (error) {\r\n const xdcErrorMsg = this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.XDC_ERROR');\r\n console.error(xdcErrorMsg);\r\n console.error(error);\r\n // keep the promise (avoid promise error cycle by not rejecting)\r\n this.resolveSync(msg.id);\r\n // disable xdc sync\r\n this.syncDisabled = true;\r\n console.warn(this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.XDC_SYNC_DISABLED'));\r\n this.logging.error({\r\n error: error,\r\n message: xdcErrorMsg\r\n });\r\n }\r\n });\r\n }\r\n // define some global stuff\r\n defineGlobal() {\r\n // make sure the state is available globally for non Angular code\r\n const xdc = ensureGlobal('lvflanders.bar.ng.core.xdc');\r\n Object.defineProperty(xdc, 'loggingEnabled', {\r\n set: (value) => {\r\n this.sendMessage({\r\n action: 'set-logging-enabled',\r\n value: value\r\n });\r\n }\r\n });\r\n }\r\n resolveSync(id) {\r\n if (this.syncDefers[id] != null) {\r\n this.syncDefers[id].resolve();\r\n delete this.syncDefers[id];\r\n }\r\n }\r\n rejectSync(id) {\r\n if (this.syncDefers[id] != null) {\r\n this.syncDefers[id].reject();\r\n delete this.syncDefers[id];\r\n }\r\n }\r\n get baasContextModus() {\r\n var _a, _b, _c;\r\n return (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.auth) === null || _b === void 0 ? void 0 : _b.contextTransportModus) !== null && _c !== void 0 ? _c : BaasContextTransportModus.OnlineCookies;\r\n }\r\n}\r\nBarXdcService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarXdcService, deps: [{ token: i1$2.BarI18nService }, { token: BarLoggingService }, { token: BarConnectedModuleOptions }, { token: BarAppInfoService }, { token: BarCoreStateService }, { token: _BarRapUrlHelper }, { token: BAR_LOCALHOST }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarXdcService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarXdcService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarXdcService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i1$2.BarI18nService }, { type: BarLoggingService }, { type: BarConnectedModuleOptions }, { type: BarAppInfoService }, { type: BarCoreStateService }, { type: _BarRapUrlHelper }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOCALHOST]\r\n }] }];\r\n } });\n\nclass BarCoreHttpInterceptor {\r\n constructor(injector, state, appInfo, xdc, moduleOptions, baasContextService, logging, localhost, oopsDomService) {\r\n this.injector = injector;\r\n this.state = state;\r\n this.appInfo = appInfo;\r\n this.xdc = xdc;\r\n this.moduleOptions = moduleOptions;\r\n this.baasContextService = baasContextService;\r\n this.logging = logging;\r\n this.localhost = localhost;\r\n this.oopsDomService = oopsDomService;\r\n this.defineGlobal();\r\n }\r\n get meetpunt() {\r\n return this.injector.get(BarMeetpuntService);\r\n }\r\n // defines if we handle the forbidden status (combined means we check different parts of the afschakelplan)\r\n get handleAuthFailedStatusCombined() {\r\n var _a;\r\n // we handle it if defined globally through configuration and if the user didn't turn it off (if we don't have the configuration yet we assume we want to handle: init call)\r\n return this.handleAuthFailedStatus && (!this.state.config || ((_a = this.state.config.interception) === null || _a === void 0 ? void 0 : _a.handleAuthFailed));\r\n }\r\n // gets if we handle the forbidden status based on a global linked to the local storage\r\n get handleAuthFailedStatus() {\r\n let result = true;\r\n const tmp = window.localStorage.getItem('lvflanders.bar.ng.core.interception.handleAuthFailed');\r\n if (tmp != null && tmp.length > 0) {\r\n result = JSON.parse(tmp);\r\n }\r\n return result;\r\n }\r\n // sets if we handle the forbidden status based on a global linked to the local storage\r\n set handleAuthFailedStatus(value) {\r\n window.localStorage.setItem('lvflanders.bar.ng.core.interception.handleAuthFailed', JSON.stringify(value));\r\n }\r\n // defines if we handle the forbidden status (combined means we check different parts of the afschakelplan)\r\n get handleForbiddenStatusCombined() {\r\n // we handle it if defined globally through configuration and if the user didn't turn it off\r\n return this.handleForbiddenStatus && this.state.config.interception != null && this.state.config.interception.handleForbidden;\r\n }\r\n // gets if we handle the forbidden status based on a global linked to the local storage\r\n get handleForbiddenStatus() {\r\n let result = true;\r\n const tmp = window.localStorage.getItem('lvflanders.bar.ng.core.interception.handleForbidden');\r\n if (tmp != null && tmp.length > 0) {\r\n result = JSON.parse(tmp);\r\n }\r\n return result;\r\n }\r\n // sets if we handle the forbidden status based on a global linked to the local storage\r\n set handleForbiddenStatus(value) {\r\n window.localStorage.setItem('lvflanders.bar.ng.core.interception.handleForbidden', JSON.stringify(value));\r\n }\r\n intercept(request, next) {\r\n const ommitInterceptor = request.params instanceof BarHttpParams && request.params.ommitInterceptor;\r\n if (ommitInterceptor) {\r\n return next.handle(request);\r\n }\r\n else {\r\n let stopwatch = null;\r\n // first we need to know if this is a background request, we don't want audit for audit (recursive)\r\n const backgroundRequest = request.params instanceof BarHttpParams && request.params.backgroundRequest;\r\n if (!backgroundRequest && this.meetpunt.loggingEnabled) {\r\n stopwatch = new BarStopwatch();\r\n stopwatch.start();\r\n }\r\n // determine whether this is a domain request\r\n const domainRequest = this.checkDomainRequest(request.url);\r\n const crossDomainRequest = this.checkCrossDomainRequest(request.url);\r\n let promise = null;\r\n // for domain requests (within same application) or cross domain request, we want to persist the basiscontext or at least sync the cookies if enabled\r\n if (domainRequest || crossDomainRequest) {\r\n if (this.state.basiscontext != null) {\r\n // before we do the call we make sure the cookie is up to date for the request\r\n promise = this.appInfo.persistBasiscontext({\r\n caller: 'Interceptor',\r\n url: request.url\r\n });\r\n }\r\n else if (crossDomainRequest && this.xdc.enabled) {\r\n promise = this.xdc.sync({\r\n caller: 'Interceptor',\r\n url: request.url\r\n });\r\n }\r\n // clone request\r\n request = request.clone({\r\n // needed for localhost cookie sharing\r\n withCredentials: true,\r\n headers: this.defineHeaders(request.headers, domainRequest, crossDomainRequest)\r\n });\r\n }\r\n if (promise != null) {\r\n // execute promise before proceeding\r\n // use merge map to be able\r\n return from(promise).pipe(mergeMap(() => {\r\n return this.handleRequest(request, next, stopwatch, domainRequest, crossDomainRequest);\r\n }));\r\n }\r\n else {\r\n // no promise just proceed\r\n return this.handleRequest(request, next, stopwatch, domainRequest, crossDomainRequest);\r\n }\r\n }\r\n }\r\n handleRequest(request, next, stopwatch, domainRequest, crossDomainRequest) {\r\n return next.handle(request).pipe(catchError((error) => {\r\n // 455 custom code authentication engine or authentication handler (in localhost we also want redirect behavior)\r\n if (this.handleAuthFailedStatusCombined && !this.localhost && error.status == 455) {\r\n this.handleAuthFailed(error);\r\n }\r\n // 403 forbidden (e.g. actie allowed failed) handling, in localhost we don't want to get kicked out of application\r\n else if (this.handleForbiddenStatusCombined && !this.localhost && error.status == 403) {\r\n this.handleForbidden(error);\r\n }\r\n return throwError(() => error);\r\n }), \r\n // tap to execute some non asynchronous code after the request\r\n tap((ev) => {\r\n if (ev instanceof HttpResponse) {\r\n if (domainRequest) {\r\n // get the basiscontext based on cookie and update basiscontext in temp state and page state\r\n // a request can lead to changed basiscontext\r\n const basiscontext = this.appInfo.getBasiscontext();\r\n const basiscontextKey = 'basiscontext';\r\n this.state[basiscontextKey] = basiscontext;\r\n }\r\n if (stopwatch != null) {\r\n // read audit id response headers\r\n const auditId = ev.headers.get('X-Audit-Id');\r\n stopwatch.stop();\r\n this.meetpunt.log({\r\n meetpunt: 'INTERCEPTOR',\r\n meetpuntDetail: extractUrlParts(request.url).pathname,\r\n waarde: stopwatch.duration,\r\n meetpuntInfo: request.url,\r\n auditId: auditId\r\n });\r\n }\r\n }\r\n }), \r\n // https://stackoverflow.com/a/52206312/2174621\r\n // here we execute another observable, but we don't alter the output which is needed by the return parameter of this function (delayWhen doesn't alter result)\r\n delayWhen((ev) => {\r\n // execute the sync promise in case it's a httpresponse (otherwise auto resolve)\r\n return from(ev instanceof HttpResponse && crossDomainRequest\r\n ? this.xdc.sync({\r\n caller: 'Interceptor-End',\r\n url: request.url\r\n })\r\n : Promise.resolve());\r\n }));\r\n }\r\n defineHeaders(headers, domainRequest, crossDomainRequest) {\r\n // needed for aspnet core knowing about ajax requests\r\n headers = headers.set('X-Requested-With', 'XMLHttpRequest');\r\n let requestToken = null;\r\n if (domainRequest && !crossDomainRequest && this.state.localRequestToken != null && this.xdc.enabled) {\r\n // local request cookie in case domain request && cross domain cookeis are enabled\r\n requestToken = this.state.localRequestToken;\r\n }\r\n else if (this.state.requestToken != null) {\r\n requestToken = this.state.requestToken;\r\n }\r\n if (requestToken != null) {\r\n // antiforgery header\r\n headers = headers.set('X-XSRF-TOKEN', requestToken);\r\n }\r\n let auditId = null;\r\n let auditType = null;\r\n if (this.state.routeId != null) {\r\n auditId = this.state.routeId;\r\n auditType = BarAuditType.Route;\r\n }\r\n else if (this.state.pageId != null) {\r\n auditId = this.state.pageId;\r\n auditType = BarAuditType.Page;\r\n }\r\n else if (this.state.sessionId != null) {\r\n auditId = this.state.sessionId;\r\n auditType = BarAuditType.Session;\r\n }\r\n if (auditId != null) {\r\n // set audit id so that audit system can chain everything together\r\n headers = headers.set('X-Audit-Id', auditId).set('X-Audit-Type', auditType);\r\n }\r\n //wimfra: adds baas header to request, when available in sessiondata.\r\n //this header will have preference to cookies, when being passed\r\n headers = this.addBaasHeaders(headers);\r\n return headers;\r\n }\r\n /**pass headers from session storage to call */\r\n addBaasHeaders(headers) {\r\n var _a, _b;\r\n if (this.baasContextModus !== BaasContextTransportModus.OnlineCookies &&\r\n this.baasContextService.checkBaasContextInStorage() &&\r\n !headers.has(BAR_CORE_CONSTANTS.HEADERS.BAAS_BACKEND_HEADER)) {\r\n // (old BAR apps only accept baas.context.backend headers)\r\n headers = headers.set(BAR_CORE_CONSTANTS.HEADERS.BAAS_BACKEND_HEADER, this.baasContextService.getBaasContextAsHeaderString());\r\n }\r\n if (!headers.has(BAR_CORE_CONSTANTS.HEADERS.BAAS_BROWSER_CALLSTACK)) {\r\n const callStack = [\r\n {\r\n userId: (_a = this.state.basiscontext) === null || _a === void 0 ? void 0 : _a.userId,\r\n appCode: (_b = this.state.toepassing) === null || _b === void 0 ? void 0 : _b.code\r\n }\r\n ];\r\n const headerValue = JSON.stringify(callStack);\r\n headers = headers.set(BAR_CORE_CONSTANTS.HEADERS.BAAS_BROWSER_CALLSTACK, headerValue);\r\n }\r\n return headers;\r\n }\r\n checkDomainRequest(url) {\r\n return !checkUrlAbsolute(url) || url.indexOf('localhost') > -1 || url.startsWith(document.location.origin) || this.checkCompatibleOrigin(url);\r\n }\r\n /* check if this is a cross domain request\r\n rules:\r\n - xdc must be enabled (localhost, not production...)\r\n - we must be doing a call to the release domain (which is not localhost)\r\n */\r\n checkCrossDomainRequest(url) {\r\n const result = false;\r\n if (this.localhost) {\r\n // get the parts of the url being invoked by http\r\n const invokedUrlParts = extractUrlParts(url);\r\n // do the check if this is really a cross domain check (http call to origin of cross domain && cross domain is not localhost)\r\n return invokedUrlParts.origin == this.state.location.release.origin && this.state.location.release.hostname != 'localhost';\r\n }\r\n return result;\r\n }\r\n checkCompatibleOrigin(url) {\r\n var _a, _b;\r\n if ((_b = (_a = this.moduleOptions) === null || _a === void 0 ? void 0 : _a.compatibleOrigins) === null || _b === void 0 ? void 0 : _b.length) {\r\n const origin = new URL(url).origin.toLowerCase();\r\n return this.moduleOptions.compatibleOrigins.some((compatibleOrigin) => {\r\n let value = compatibleOrigin.value.toLowerCase();\r\n if (value.endsWith('/'))\r\n value = value.substring(0, value.length - 1);\r\n if (compatibleOrigin.strategy === 'exact' && origin === value) {\r\n return true;\r\n }\r\n else if (compatibleOrigin.strategy === 'startsWith' && origin.startsWith(value)) {\r\n return true;\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n handleAuthFailed(error) {\r\n this.performExtraLogging('Auth Failed (455)', error.url, 'Performing log off.');\r\n this.oopsDomService.showOops({ type: _OopsType.Authentication });\r\n }\r\n handleForbidden(error) {\r\n this.performExtraLogging('Forbidden (403)', error.url, 'Navigating to insufficient privileges page.');\r\n window.location.href = this.state.location.baasStatic.url + BAR_CORE_CONSTANTS.PAGES.INSUFFICIENT_PRIVILEGES;\r\n }\r\n get baasContextModus() {\r\n var _a, _b;\r\n return (_b = (_a = this.moduleOptions.auth) === null || _a === void 0 ? void 0 : _a.contextTransportModus) !== null && _b !== void 0 ? _b : BaasContextTransportModus.OnlineCookies;\r\n }\r\n /** Define global variables related to interception */\r\n defineGlobal() {\r\n // make sure the state is available globally for non Angular code\r\n const interception = ensureGlobal('lvflanders.bar.ng.core.interception');\r\n // here we define a global property to be used to turn on/off the fact that we handle auth failed responses\r\n Object.defineProperty(interception, 'handleAuthFailed', {\r\n set: (value) => {\r\n this.handleAuthFailedStatus = value;\r\n },\r\n get: () => {\r\n return this.handleAuthFailedStatus;\r\n }\r\n });\r\n // here we define a global property to be used to turn on/off the fact that we handle auth failed responses\r\n Object.defineProperty(interception, 'handleForbidden', {\r\n set: (value) => {\r\n this.handleForbiddenStatus = value;\r\n },\r\n get: () => {\r\n return this.handleForbiddenStatus;\r\n }\r\n });\r\n }\r\n performExtraLogging(action, url, comment) {\r\n var _a, _b;\r\n let message = `[BarCoreHttpInterceptor] ${action} - ${url}`;\r\n if (comment)\r\n message += ` - ${comment}`;\r\n if ((_a = this.state) === null || _a === void 0 ? void 0 : _a.basiscontext)\r\n message += ` - context: ${JSON.stringify((_b = this.state) === null || _b === void 0 ? void 0 : _b.basiscontext)}`;\r\n this.logging.warn({ message });\r\n }\r\n}\r\nBarCoreHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreHttpInterceptor, deps: [{ token: i0.Injector }, { token: BarCoreStateService }, { token: BarAppInfoService }, { token: BarXdcService }, { token: BarConnectedModuleOptions }, { token: BaasContextService }, { token: BarLoggingService }, { token: BAR_LOCALHOST }, { token: _OopsDomService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarCoreHttpInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreHttpInterceptor });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarCoreHttpInterceptor, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i0.Injector }, { type: BarCoreStateService }, { type: BarAppInfoService }, { type: BarXdcService }, { type: BarConnectedModuleOptions }, { type: BaasContextService }, { type: BarLoggingService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOCALHOST]\r\n }] }, { type: _OopsDomService }];\r\n } });\n\nclass BarPageNotFoundComponent {\r\n}\r\nBarPageNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarPageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nBarPageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.3.0\", type: BarPageNotFoundComponent, isStandalone: true, selector: \"ng-component\", ngImport: i0, template: \"
\\r\\n

\\r\\n {{ 'DOMAIN_BAR_CORE_CONNECTED.PAGE_NOT_FOUND' | translate }}\\r\\n

\\r\\n \\r\\n \\r\\n
\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i1$4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: BarI18nModule }, { kind: \"pipe\", type: i1$2.TranslatePipe, name: \"translate\" }] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarPageNotFoundComponent, decorators: [{\r\n type: Component,\r\n args: [{ standalone: true, imports: [MatIconModule, BarI18nModule, NgIf], template: \"
\\r\\n

\\r\\n {{ 'DOMAIN_BAR_CORE_CONNECTED.PAGE_NOT_FOUND' | translate }}\\r\\n

\\r\\n \\r\\n \\r\\n
\\r\\n\" }]\r\n }] });\n\n/*** Handles hub message to show a push notification. */\r\nclass BarLogOffHubMessageHandler {\r\n constructor(auth) {\r\n this.auth = auth;\r\n this.action = 'LogOff';\r\n }\r\n handle() {\r\n this.auth.logOff().subscribe();\r\n }\r\n}\r\nBarLogOffHubMessageHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLogOffHubMessageHandler, deps: [{ token: BarAuthService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarLogOffHubMessageHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLogOffHubMessageHandler });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarLogOffHubMessageHandler, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarAuthService }]; } });\n\n/** provides the user in offline apps. */\r\nclass BaasUserProvider {\r\n constructor() {\r\n // internal property\r\n this._disabled = false;\r\n }\r\n}\r\nBaasUserProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasUserProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasUserProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasUserProvider });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasUserProvider, decorators: [{\r\n type: Injectable\r\n }] });\n\n/** allows for (offline) apps to set their prefered user without using IDP service */\r\nclass BaasExternalAuthService extends BarAuthService {\r\n constructor(injector, guidProvider) {\r\n super(injector);\r\n this.guidProvider = guidProvider;\r\n }\r\n get authenticated() {\r\n return window.sessionStorage.getItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT) != null;\r\n }\r\n get authenticating() {\r\n return false;\r\n }\r\n authenticate() {\r\n return new Observable((subscriber) => {\r\n this.clearStorage();\r\n if (!this.guidProvider)\r\n throw 'BaasExternalAuthService was called but the injected guidProvider is note defined.';\r\n if (this.guidProvider._disabled)\r\n throw 'BaasExternalAuthService was called but the injected guidProvider is disabled.';\r\n this.guidProvider.provideUser().subscribe((guid) => {\r\n if (guid) {\r\n //TODO: make sound logic to return prefered user\r\n const userHeaderContext = `{\"userTicketGuid\":\"${guid}\"}`; //offline ticket guid\r\n window.sessionStorage.setItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT, userHeaderContext);\r\n subscriber.next(true);\r\n }\r\n else\r\n subscriber.next(null);\r\n }, (err) => {\r\n console.error(err);\r\n subscriber.next(false);\r\n });\r\n });\r\n }\r\n performLogOff() {\r\n this.clearStorage();\r\n return of(undefined);\r\n }\r\n clearStorage() {\r\n window.sessionStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT);\r\n try {\r\n window.localStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT);\r\n }\r\n catch (_a) {\r\n console.debug('BaasExternalAuthService: the process could not clear items in localhost');\r\n }\r\n }\r\n}\r\nBaasExternalAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasExternalAuthService, deps: [{ token: i0.Injector }, { token: BaasUserProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasExternalAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasExternalAuthService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasExternalAuthService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: BaasUserProvider }]; } });\n\n/** Default no operation user provider. */\r\nclass BaasNoopUserProvider extends BaasUserProvider {\r\n constructor() {\r\n super(...arguments);\r\n this._disabled = true;\r\n }\r\n /** Gets */\r\n provideUser() {\r\n return EMPTY;\r\n }\r\n}\r\nBaasNoopUserProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasNoopUserProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\r\nBaasNoopUserProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasNoopUserProvider });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BaasNoopUserProvider, decorators: [{\r\n type: Injectable\r\n }] });\n\n/** Public BAR authentication service using IDP. */\r\nclass BarIdpAuthService extends BarAuthService {\r\n constructor(injector, coreState, coreOptions, idpClient, appInfo, localhost) {\r\n super(injector);\r\n this.coreState = coreState;\r\n this.coreOptions = coreOptions;\r\n this.idpClient = idpClient;\r\n this.appInfo = appInfo;\r\n this.localhost = localhost;\r\n }\r\n get authenticated() {\r\n // being authenticated means having a bar-cookie (if we have the idp client we use this to check whether we are authenticated)\r\n return this.idpClient.authenticated;\r\n }\r\n get authenticating() {\r\n return false;\r\n }\r\n authenticate() {\r\n return new Observable((subscriber) => {\r\n // make sure local storage value impersonate is removed before authentication\r\n window.localStorage.removeItem(BAR_CORE_CONSTANTS.STORAGE_KEYS.IDP_IMPERSONATE);\r\n // NOTE we cannot use the route here because it is before routing takes place\r\n const idpStatus = parseQueryStringValue('idp-status');\r\n if (idpStatus === 'fail') {\r\n // idp returned a fail, just make sure we go to authenticate failed page (to avoid endless loop)\r\n subscriber.next(false);\r\n subscriber.complete();\r\n }\r\n else {\r\n // if we are using @lvflanders/bar we use the idp client\r\n this.idpClient.authenticate(this.coreOptions.auth.config).then(() => {\r\n // make sure processing is stopped because we are doing a full page redirect\r\n subscriber.next(null);\r\n subscriber.complete();\r\n });\r\n }\r\n });\r\n }\r\n /** Processing that occurs after the authentication. Meaning we are authenticated. */\r\n postProcessing() {\r\n if (!this.authenticated)\r\n return;\r\n const impersonateStrQuery = parseQueryStringValue('idp-impersonate');\r\n const impersonateStrStorage = window.localStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEYS.IDP_IMPERSONATE);\r\n let impersonate = false;\r\n if (impersonateStrQuery && (!impersonateStrStorage || impersonateStrStorage === false.toString())) {\r\n impersonate = impersonateStrQuery.toLowerCase() === true.toString();\r\n window.localStorage.setItem(BAR_CORE_CONSTANTS.STORAGE_KEYS.IDP_IMPERSONATE, impersonate.toString());\r\n }\r\n else\r\n impersonate = impersonateStrStorage === true.toString();\r\n const impersonateKey = 'impersonate';\r\n this.coreState.basiscontext[impersonateKey] = impersonate;\r\n }\r\n performLogOff() {\r\n // execute everything within an observable (otherwise it is immediately executed, which we don't want)\r\n return new Observable((subscriber) => {\r\n if (this.localhost) {\r\n // NOTE app info localhost xdc stuff is not yet in @lvflanders/bar\r\n this.appInfo.delete();\r\n }\r\n const target = concatUrl(this.coreState.location.baasStatic.url, BAR_CORE_CONSTANTS.PAGES.LOG_OFF);\r\n this.idpClient.logout(target).then(() => {\r\n subscriber.next();\r\n subscriber.complete();\r\n });\r\n });\r\n }\r\n}\r\nBarIdpAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarIdpAuthService, deps: [{ token: i0.Injector }, { token: BarCoreStateService }, { token: BarConnectedModuleOptions }, { token: i1$3.BarIdpClient }, { token: BarAppInfoService }, { token: BAR_LOCALHOST }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarIdpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarIdpAuthService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarIdpAuthService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i0.Injector }, { type: BarCoreStateService }, { type: BarConnectedModuleOptions }, { type: i1$3.BarIdpClient }, { type: BarAppInfoService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOCALHOST]\r\n }] }];\r\n } });\n\nvar _BarIdpHeaderAuthService_idpClient, _BarIdpHeaderAuthService_options, _BarIdpHeaderAuthService_contextService, _BarIdpHeaderAuthService_coreState;\r\n// TODO Use auth strategy in vnext\r\nclass BarIdpHeaderAuthService extends BarAuthService {\r\n constructor() {\r\n super(...arguments);\r\n _BarIdpHeaderAuthService_idpClient.set(this, inject(BarIdpClient));\r\n _BarIdpHeaderAuthService_options.set(this, inject(BarConnectedModuleOptions));\r\n _BarIdpHeaderAuthService_contextService.set(this, inject(BaasContextService));\r\n _BarIdpHeaderAuthService_coreState.set(this, inject(BarCoreStateService));\r\n }\r\n get authenticated() {\r\n return __classPrivateFieldGet(this, _BarIdpHeaderAuthService_contextService, \"f\").checkBaasContextInStorage();\r\n }\r\n get authenticating() {\r\n // we are coming from IDP meaning we still need to authenticate\r\n return parseQueryStringValue('idp-status') != null;\r\n }\r\n authenticate() {\r\n const idpStatus = parseQueryStringValue('idp-status');\r\n switch (idpStatus) {\r\n case 'success': {\r\n // authentication success\r\n const idpUsr = parseQueryStringValue('idp-usr');\r\n const voorwie = parseQueryStringValue('idp-vw');\r\n const voorwieRolcode = parseQueryStringValue('idp-vwrc');\r\n // NOTE voorwie rolcode is niet verplicht\r\n const userVoorwie = voorwie ? `${voorwie};${voorwieRolcode ? voorwieRolcode.toUpperCase() : 'NULL'}` : undefined;\r\n const hoedanigheid = parseQueryStringValue('idp-hd');\r\n const hoedanigheidRolcode = parseQueryStringValue('idp-hdrc');\r\n // NOTE hoedanigheid rolcode is niet verplicht\r\n const userHoedanigheid = hoedanigheid ? `${hoedanigheid};${hoedanigheidRolcode ? hoedanigheidRolcode.toUpperCase() : 'NULL'}` : undefined;\r\n const state = { userTicketGuid: idpUsr, userVoorwie, userHoedanigheid };\r\n __classPrivateFieldGet(this, _BarIdpHeaderAuthService_contextService, \"f\").saveBaasContextToStorage(state);\r\n return of(true);\r\n }\r\n case 'fail': {\r\n // authentication failed\r\n return of(false);\r\n }\r\n default: {\r\n // authenticating\r\n // go to idp and pass this url as the target\r\n __classPrivateFieldGet(this, _BarIdpHeaderAuthService_idpClient, \"f\").authenticate(__classPrivateFieldGet(this, _BarIdpHeaderAuthService_options, \"f\").auth.config);\r\n return of(undefined);\r\n }\r\n }\r\n }\r\n performLogOff() {\r\n window.sessionStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT);\r\n try {\r\n window.localStorage.removeItem(_BAAS_SHARED_CONSTANTS.STORAGE_KEY.BAAS_STATE_CONTEXT);\r\n }\r\n catch (_a) {\r\n console.debug('BarIdpHeaderAuthService: the process could not clear items in localhost');\r\n }\r\n const target = concatUrl(__classPrivateFieldGet(this, _BarIdpHeaderAuthService_coreState, \"f\").location.baasStatic.url, BAR_CORE_CONSTANTS.PAGES.LOG_OFF);\r\n window.location.replace(target);\r\n return of(undefined);\r\n }\r\n}\r\n_BarIdpHeaderAuthService_idpClient = new WeakMap(), _BarIdpHeaderAuthService_options = new WeakMap(), _BarIdpHeaderAuthService_contextService = new WeakMap(), _BarIdpHeaderAuthService_coreState = new WeakMap();\r\nBarIdpHeaderAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarIdpHeaderAuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\r\nBarIdpHeaderAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarIdpHeaderAuthService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarIdpHeaderAuthService, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass BarAuditService {\r\n constructor(logging, state, auditHttpService) {\r\n this.logging = logging;\r\n this.state = state;\r\n this.auditHttpService = auditHttpService;\r\n // instantiate the queue with session storage\r\n this.queueProcessor = new BarQueueProcessor(window.sessionStorage, BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'auditQueue');\r\n }\r\n /**\r\n * Puts an audit record on the queue.\r\n * @param audit Audit information.\r\n */\r\n log(audit) {\r\n // do not log if disabled or if audit type is excluded\r\n if (this.state.config.audit.enabled !== true ||\r\n (this.state.config.audit.excludedAuditTypes != null && this.state.config.audit.excludedAuditTypes.indexOf(audit.auditType) > -1)) {\r\n return;\r\n }\r\n if (audit.timestamp == null) {\r\n audit.timestamp = new Date();\r\n }\r\n if (audit.sessionId == null) {\r\n audit.sessionId = this.state.sessionId;\r\n }\r\n if (audit.appCode == null && this.state.toepassing != null) {\r\n audit.appCode = this.state.toepassing.code;\r\n }\r\n if (this.state.basiscontext != null) {\r\n audit.hoedanigheid = this.state.basiscontext.hoedanigheid;\r\n audit.hoedanigheidRolcode = this.state.basiscontext.hoedanigheidRolcode;\r\n audit.voorwie = this.state.basiscontext.voorwie;\r\n audit.voorwieRolcode = this.state.basiscontext.voorwieRolcode;\r\n audit.userId = this.state.basiscontext.userId;\r\n }\r\n audit.hostName = location.hostname;\r\n if (!audit.details)\r\n audit.details = {};\r\n if (!audit.details['PGID']) {\r\n audit.details['PGID'] = this.state.pageId;\r\n }\r\n this.queueProcessor.enqueue(audit);\r\n }\r\n /**\r\n * Start to listen to the queue.\r\n */\r\n start() {\r\n // start listening to the audit queue\r\n this.queueProcessor.start(this.state.config.audit.interval, this.state.config.audit.itemCount);\r\n // post items to back-end with interval\r\n this.queueProcessor.execute$.subscribe((auditItems) => {\r\n this.auditHttpService.save(auditItems).subscribe(null, (error) => {\r\n // in case an error occurs just handle in background\r\n console.error(error);\r\n this.logging.error({ error });\r\n });\r\n });\r\n }\r\n}\r\nBarAuditService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditService, deps: [{ token: BarLoggingService }, { token: BarCoreStateService }, { token: BarAuditHttpService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarAuditService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarAuditService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarLoggingService }, { type: BarCoreStateService }, { type: BarAuditHttpService }]; } });\n\n/** Implementation within @lvflanders/bar-ng of the @lvflanders/bar app state contract (interconnection shared & core). */\r\nclass BarSharedAppStateService {\r\n constructor(coreState) {\r\n this.coreState = coreState;\r\n }\r\n get sessionId() {\r\n return this.coreState.sessionId;\r\n }\r\n}\r\nBarSharedAppStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSharedAppStateService, deps: [{ token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarSharedAppStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSharedAppStateService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarSharedAppStateService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: BarCoreStateService }]; } });\n\nclass BarToepassingService {\r\n constructor(appInfo, state) {\r\n this.appInfo = appInfo;\r\n this.state = state;\r\n /** Occurs when the basiscontext changes */\r\n this.basiscontextChanged = new EventEmitter();\r\n }\r\n /**\r\n * Sets the voorwie.\r\n * @param voorwie\r\n * @param voorwieRolcode\r\n */\r\n setVoorwie(voorwie, voorwieRolcode) {\r\n // do not allow null because it can cause null to be written in de cookie as a string causing trouble in the neighbourhood\r\n if (voorwie == null)\r\n voorwie = '';\r\n if (voorwieRolcode == null)\r\n voorwieRolcode = '';\r\n return this.setBasiscontextData((basiscontext) => {\r\n basiscontext.voorwie = voorwie;\r\n basiscontext.voorwieRolcode = voorwieRolcode;\r\n }, 'Set-Voorwie');\r\n }\r\n /**\r\n * Resets the voorwie.\r\n */\r\n resetVoorwie() {\r\n return this.setVoorwie('', '');\r\n }\r\n /**\r\n * Sets the hoedanigheid.\r\n * @param hoedanigheid\r\n * @param hoedanigheidRolcode\r\n */\r\n setHoedanigheid(hoedanigheid, hoedanigheidRolcode) {\r\n // do not allow null because it can cause null to be written in de cookie as a string causing trouble in the neighbourhood\r\n if (hoedanigheid == null)\r\n hoedanigheid = '';\r\n if (hoedanigheidRolcode == null)\r\n hoedanigheidRolcode = '';\r\n return this.setBasiscontextData((basiscontext) => {\r\n basiscontext.hoedanigheid = hoedanigheid;\r\n basiscontext.hoedanigheidRolcode = hoedanigheidRolcode;\r\n }, 'Set-Hoedanigheid');\r\n }\r\n /**\r\n * Resets the hoedanigheid.\r\n */\r\n resetHoedanigheid() {\r\n return this.setHoedanigheid('', '');\r\n }\r\n setBasiscontextData(handler, method) {\r\n const basiscontext = this.state.basiscontext;\r\n if (basiscontext != null) {\r\n handler(basiscontext);\r\n // trick to fill in readonly prop (will give compilation error if property name changes)\r\n // https://stackoverflow.com/questions/48992522/get-name-of-property-or-field-in-object-typed/48992694?noredirect=1#comment84991472_48992694\r\n const basiscontextKey = 'basiscontext';\r\n this.state[basiscontextKey] = basiscontext;\r\n return new Promise((resolve, reject) => {\r\n this.appInfo.persistBasiscontext({ caller: `Toepassing-${method}` }).then(() => {\r\n this.basiscontextChanged.emit(basiscontext);\r\n resolve();\r\n });\r\n });\r\n }\r\n else {\r\n return Promise.resolve();\r\n }\r\n }\r\n}\r\nBarToepassingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarToepassingService, deps: [{ token: BarAppInfoService }, { token: BarCoreStateService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarToepassingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarToepassingService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarToepassingService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BarAppInfoService }, { type: BarCoreStateService }]; } });\n\n/** Public BAR (initialization) service */\r\nclass BarStartupService {\r\n constructor(injector, sharedBootstrapper, audit, translate, state, appInfo, meetpunt, auth, logOff, logging, config, xdc, cacheManager, baasContextService, globalStore, idpClient, commonHttpService, initializedHooks, baseHref, rapUrlHelper, meldingEngine, localhost, oopsDomService) {\r\n this.injector = injector;\r\n this.sharedBootstrapper = sharedBootstrapper;\r\n this.audit = audit;\r\n this.translate = translate;\r\n this.state = state;\r\n this.appInfo = appInfo;\r\n this.meetpunt = meetpunt;\r\n this.auth = auth;\r\n this.logOff = logOff;\r\n this.logging = logging;\r\n this.config = config;\r\n this.xdc = xdc;\r\n this.cacheManager = cacheManager;\r\n this.baasContextService = baasContextService;\r\n this.globalStore = globalStore;\r\n this.idpClient = idpClient;\r\n this.commonHttpService = commonHttpService;\r\n this.initializedHooks = initializedHooks;\r\n this.baseHref = baseHref;\r\n this.rapUrlHelper = rapUrlHelper;\r\n this.meldingEngine = meldingEngine;\r\n this.localhost = localhost;\r\n this.oopsDomService = oopsDomService;\r\n // whether the configuration has been handled and assigned\r\n this.configHandled = false;\r\n }\r\n // avoid cyclic DI error\r\n get router() {\r\n return this.injector.get(Router);\r\n }\r\n load() {\r\n // launch bootstrapping for @lvflanders/bar\r\n this.sharedBootstrapper.launch();\r\n // https://stackoverflow.com/questions/47422095/angular-app-initializer-promise-vs-observable?rq=1\r\n return new Promise((resolve, reject) => {\r\n // assign as variables to avoid passing them through the methods\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n if (this.mustAuthenticate) {\r\n // first we check if the context transport modus has been overridden (local storage)\r\n const contextTransportModusOverride = this.contextTransportModusOverride;\r\n // override default context transport modus if defined\r\n if (contextTransportModusOverride !== undefined)\r\n this.config.auth.contextTransportModus = contextTransportModusOverride;\r\n }\r\n this.configHandled = false;\r\n // clear out request log off\r\n this.logOff.requestLogOff = undefined;\r\n // launch the startup life cycle (pre-init, auth, init, init-local)\r\n this.launchLifeCycle();\r\n });\r\n }\r\n get mustAuthenticate() {\r\n return this.config.auth != null ? this.config.auth.enabled : false;\r\n }\r\n get authFailedUrl() {\r\n return this.state.config.auth.failedUrl;\r\n }\r\n get targetOriginOverride() {\r\n return window.localStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'targetOrigin');\r\n }\r\n set targetOriginOverride(value) {\r\n if (value == null) {\r\n window.localStorage.removeItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'targetOrigin');\r\n }\r\n else {\r\n window.localStorage.setItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'targetOrigin', value);\r\n }\r\n }\r\n set contextTransportModusOverride(value) {\r\n window.localStorage.setItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'context-transport-modus', value.toString());\r\n }\r\n get contextTransportModusOverride() {\r\n const str = window.localStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'context-transport-modus');\r\n if (str && str.length)\r\n return +str;\r\n return undefined;\r\n }\r\n launchLifeCycle() {\r\n this.enhanceRouting();\r\n // generate the page id\r\n const pageIdKey = 'pageId';\r\n this.state[pageIdKey] = generateUuid();\r\n this.defineConnectivity();\r\n const locationKey = 'location';\r\n this.state[locationKey] = {};\r\n const applicationKey = 'application';\r\n this.state.location[applicationKey] = extractUrlParts(this.defineApplicationUrl());\r\n const spaKey = 'spa';\r\n this.state.location[spaKey] = extractUrlParts(this.defineSpaUrl());\r\n const apiRootKey = 'apiRoot';\r\n this.state.location[apiRootKey] = extractUrlParts(this.defineApiUrl());\r\n this.idpClient.options.targetUrl = window.location.href;\r\n // different steps (in case not authenticated):\r\n // 1-a) pre - init local (only in XDC modus)\r\n // 1-b) pre - init (if not authenticated)\r\n // 2) authenticate (if not authenticated)\r\n // 3-a) init\r\n // 3-b) init local (only in XDC modus)\r\n const launch = () => {\r\n // we can define the release state location here because a value depends on the pre-init-local (release domain aka target)\r\n const releaseKey = 'release';\r\n this.state.location[releaseKey] = extractUrlParts(this.defineReleaseOrigin());\r\n const barWebKey = 'barWeb';\r\n this.state.location[barWebKey] = extractUrlParts(this.defineBarWebRootUrl());\r\n const baasStaticKey = 'baasStatic';\r\n this.state.location[baasStaticKey] = extractUrlParts(this.defineBaasStaticRootUrl());\r\n const baasWebKey = 'baasWeb';\r\n this.state.location[baasWebKey] = extractUrlParts(this.defineBaasWebRootUrl());\r\n this.idpClient.options.wwUrl = this.state.location.baasStatic.url;\r\n // if not authenticated we perform the pre-init to retrieve unauthenticated data\r\n if (!this.auth.authenticated)\r\n this.launchPreInit();\r\n else if (this.auth.authenticating && this.mustAuthenticate)\r\n this.launchAuth();\r\n else\r\n this.launchInit(true);\r\n };\r\n if (this.localhost) {\r\n //localhost needs pre-init-local call to function\r\n const core = ensureGlobal('lvflanders.bar.ng.core');\r\n // and here we make a hook to overide the targetOrigin through the console\r\n Object.defineProperty(core, 'targetOrigin', {\r\n get: () => {\r\n return this.targetOriginOverride;\r\n },\r\n set: (value) => {\r\n this.targetOriginOverride = value;\r\n }\r\n });\r\n // use the target origin override (set via developer tools console if defined)\r\n this.targetOrigin = this.targetOriginOverride;\r\n // we don't have a target origin override check if we have it in session storage\r\n if (this.targetOrigin == null) {\r\n // if xdc is enabled we need to define the target origin to which to connect to (BAR, basiscomponenten, iframe).\r\n // we remember this in the session storage to avoid performing the pre-init-local constantly\r\n this.targetOrigin = window.sessionStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'targetOrigin');\r\n }\r\n else {\r\n console.warn(this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.TARGET_ORIGIN_OVERRIDE_WARNING', { targetOrigin: this.targetOrigin }));\r\n }\r\n if (this.targetOrigin != null) {\r\n // we already know the target origin no need to go fetch it\r\n launch();\r\n }\r\n else {\r\n // perform a local api call to get the target origin\r\n this.commonHttpService\r\n .preInitLocal()\r\n .pipe(retry(3))\r\n .subscribe((data) => {\r\n this.targetOrigin = data.targetOrigin || data.TargetOrigin;\r\n if (this.targetOrigin != null) {\r\n window.sessionStorage.setItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'targetOrigin', this.targetOrigin);\r\n }\r\n launch();\r\n }, (error) => {\r\n const msg = this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.PRE_INIT_LOCAL_FAILED');\r\n console.warn(msg);\r\n // launch anyway\r\n launch();\r\n });\r\n }\r\n }\r\n else {\r\n // if not in xdc modus we don't have a target origin and interpret it based on current settings\r\n launch();\r\n }\r\n }\r\n launchPreInit() {\r\n // try get config from session storage first to avoid having to retrieve it (can become larger and larger)\r\n const loadConfig = this.tryLoadConfigFromStorage();\r\n const initRequest = this.getInitRequest(loadConfig);\r\n // get the config from web api without authentication\r\n this.commonHttpService\r\n .preInit(initRequest)\r\n .pipe(retry(3), tap((data) => {\r\n // handle the data\r\n this.handleConfig(data.config, true);\r\n this.handleToepassing(data.toepassing);\r\n }), \r\n // invoke pre initialized hooks\r\n mergeMap(() => this.initialized(true)), tap(() => {\r\n var _a;\r\n // in this tap we check if we have an override for the context transport modus (from baas static configuration)\r\n if (this.mustAuthenticate &&\r\n this.localhost &&\r\n this.contextTransportModusOverride === undefined &&\r\n // no default was given (null or undefined)\r\n this.config.auth._originalContextTransportModus == null &&\r\n this.config.auth.contextTransportModus === BaasContextTransportModus.OnlineHeaders &&\r\n ((_a = this.state.config.baasStatic.auth) === null || _a === void 0 ? void 0 : _a.localhostHeaderTransportModus) === false) {\r\n // put auth back to online cookies if disabled explicitly\r\n this.config.auth.contextTransportModus = BaasContextTransportModus.OnlineCookies;\r\n // remember override\r\n this.contextTransportModusOverride = this.config.auth.contextTransportModus;\r\n }\r\n }))\r\n .subscribe((data) => {\r\n if (this.xdc.enabled) {\r\n // in case xdc is enabled we do a sync to see if we are already authenticated on the remote domain\r\n this.xdc.sync({ caller: 'Startup', step: 'Auth' }).then(() => {\r\n // after the sync we check again if we are not authenticated\r\n if (this.mustAuthenticate && !this.auth.authenticated) {\r\n //when session is filled during (offline modus), IDP call (launchauth) is bypassed!\r\n this.launchAuth();\r\n }\r\n else {\r\n // if we succeeded to authenticate we perform the init straight away\r\n this.launchInit(false);\r\n }\r\n });\r\n }\r\n else {\r\n // we are not working with xdc meaning we should authenticate\r\n if (!this.auth.authenticated && this.mustAuthenticate)\r\n this.launchAuth();\r\n else\r\n this.launchInit(false);\r\n }\r\n }, (err) => this.handleStartupError(err));\r\n }\r\n tryLoadConfigFromStorage() {\r\n let notLoaded = true;\r\n const configStr = window.sessionStorage.getItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'config');\r\n if (configStr != null && configStr.length > 0) {\r\n notLoaded = false;\r\n const config = JSON.parse(configStr);\r\n this.handleConfig(config, false);\r\n }\r\n return notLoaded;\r\n }\r\n // handles the configuration object\r\n handleConfig(config, putInStorage) {\r\n if (this.configHandled) {\r\n return;\r\n }\r\n // configuration data\r\n const configKey = 'config';\r\n // trick to have assignment to readonly prop\r\n this.state[configKey] = config;\r\n if (putInStorage) {\r\n // store config in session storage to avoid retrieving it when switching application\r\n window.sessionStorage.setItem(BAR_CORE_CONSTANTS.STORAGE_KEY_PREFIX + 'config', JSON.stringify(config));\r\n }\r\n const processIdpRootUrl = (origin) => {\r\n let idpRootUrl = origin;\r\n if (!config.idpRootUrl.startsWith('/')) {\r\n idpRootUrl += '/';\r\n }\r\n idpRootUrl += config.idpRootUrl;\r\n config.idpRootUrl = idpRootUrl;\r\n config.idpRootUrl = this.rapUrlHelper.parseUrl(config.idpRootUrl);\r\n };\r\n if (this.localhost) {\r\n // NOTE overschrijven van urls voor de lokale BAR omgeving (deze solution): localhost heeft geen profielbeheer notie\r\n if (this.config.local && !this.config.auth.forceRemote) {\r\n // indien localhost client EN bundle build voor local : via lokale authprovider/IDP\r\n config.auth.url = 'https://localhost:44307/auth?noredirect=1';\r\n config.auth.failedUrl = 'https://localhost:44307/authenticate-failed';\r\n config.logoutUrl = 'https://localhost:44307/auth/logout';\r\n config.errorUrl = 'https://alv-dotnet4-d/startscherm/domain.startscherm.Web/probleemrapport/';\r\n config.idpRootUrl = 'https://alv-dotnet4-d/a/idp/wui';\r\n }\r\n else {\r\n // this will be used in XDC modus\r\n // this.state.location.release.origin;\r\n processIdpRootUrl(this.state.location.release.origin);\r\n }\r\n }\r\n else {\r\n processIdpRootUrl(window.location.origin);\r\n }\r\n // pass the idp root url to the idp client if used\r\n this.idpClient.options.idpUrl = config.idpRootUrl;\r\n this.configHandled = true;\r\n }\r\n launchAuth() {\r\n // authenticate ! when successfull also initialize\r\n this.auth.authenticate().subscribe((authSuccess) => {\r\n if (authSuccess == null) {\r\n // redirect already done\r\n this.reject();\r\n }\r\n else if (authSuccess) {\r\n this.launchInit(true);\r\n }\r\n else {\r\n window.location.href = this.authFailedUrl;\r\n this.reject();\r\n }\r\n }, (err) => {\r\n console.error(err);\r\n window.location.href = this.authFailedUrl;\r\n this.reject();\r\n });\r\n }\r\n // handles startup errors specially because there is no user interface yet\r\n handleStartupError(err) {\r\n console.error(err);\r\n if (this.oopsDomService.checkOopsSupported()) {\r\n this.oopsDomService.showOops({ type: _OopsType.Technical });\r\n }\r\n else {\r\n // @deprecated old mechanism\r\n // fallback error\r\n this.translate.get('DOMAIN_BAR_CORE_CONNECTED.STARTUP_ERROR').subscribe((msg) => {\r\n document.body.innerText = msg;\r\n this.reject(new Error(msg));\r\n });\r\n }\r\n }\r\n // following method is invoked after authenticating\r\n defineBrowserSession() {\r\n return new Promise((resolve) => {\r\n // get session id from cookie\r\n let cookieSessionId = this.appInfo.sessionId;\r\n if (!cookieSessionId) {\r\n // no session cookie, create session cookie and use new uuid\r\n cookieSessionId = generateUuid();\r\n this.appInfo.sessionId = cookieSessionId;\r\n }\r\n // get actual session id being used\r\n this.globalStore.getItem(BAR_CORE_CONSTANTS.STORAGE_KEYS.SESSION_ID).then((sessionId) => {\r\n // this routing is called at the end\r\n const proceed = (clearSession) => {\r\n // use session id in the temp storage generated after successfull authentication\r\n const sessionIdKey = 'sessionId';\r\n // save it in state\r\n this.state[sessionIdKey] = sessionId;\r\n if (this.config.disableCacheInvalidation)\r\n resolve();\r\n else {\r\n // invalidate the cache (if not disabled) and pass flag determining whether we must clear out all session cache entries\r\n this.cacheManager.invalidate(clearSession).then(() => {\r\n resolve();\r\n });\r\n }\r\n };\r\n // if no session id yet or if there is a session but the app info cookie isn't equal we start a new browser session\r\n if (sessionId !== cookieSessionId) {\r\n sessionId = cookieSessionId;\r\n // put the new session id in the global cache store (and keep it there)\r\n this.globalStore.setItem(BAR_CORE_CONSTANTS.STORAGE_KEYS.SESSION_ID, sessionId, { session: false }).then(() => {\r\n proceed(true);\r\n });\r\n }\r\n // re-use session\r\n else {\r\n proceed(false);\r\n }\r\n });\r\n });\r\n }\r\n defineConnectivity() {\r\n const connectivity = 'connectivity';\r\n this.state[connectivity] = this.config.connectivity || BarConnectivity.Online;\r\n }\r\n /** tests baasContextmodus setting to determine if session storage needs to be filled */\r\n get baasHeadersAllowed() {\r\n //below setting can be null when not defined in forroot().\r\n return this.baasContextModus !== BaasContextTransportModus.OnlineCookies;\r\n }\r\n tryRunIdpValidation(ticketId) {\r\n if (this.mustAuthenticate && this.config.auth.validation !== false && this.baasContextModus === BaasContextTransportModus.OnlineCookies) {\r\n // here we launch a web worker asynchronously bound to the idp client\r\n this.idpClient.validate(undefined);\r\n }\r\n }\r\n // following method is always invoked (after authenticating or if already authenticated)\r\n launchInit(preInitSkipped) {\r\n const doInit = () => {\r\n var _a;\r\n if (!this.auth.authenticated &&\r\n ((_a = this.config._noInitPaths) === null || _a === void 0 ? void 0 : _a.some((noInitPath) => {\r\n const fullPath = concatUrl(this.state.location.spa.pathname, noInitPath).toLowerCase();\r\n return window.location.pathname.toLowerCase() === fullPath;\r\n }))) {\r\n this.initializeFinal(undefined, preInitSkipped);\r\n return;\r\n }\r\n // try get config from session storage first to avoid having to retrieve it (can become larger and larger)\r\n const loadConfig = !this.configHandled && this.tryLoadConfigFromStorage();\r\n const initRequest = this.getInitRequest(loadConfig);\r\n initRequest.loadToepassing = this.state.toepassing == null;\r\n this.commonHttpService\r\n .init(initRequest)\r\n .pipe(retry(3), tap((data) => {\r\n if (data.config != null) {\r\n this.handleConfig(data.config, true);\r\n }\r\n const baasVersionKey = 'baasVersion';\r\n this.state[baasVersionKey] = data.baasVersion;\r\n const requestTokenKey = 'requestToken';\r\n this.state[requestTokenKey] = data.requestToken;\r\n if (data.toepassing != null) {\r\n this.handleToepassing(data.toepassing);\r\n }\r\n if (this.baasHeadersAllowed && (data === null || data === void 0 ? void 0 : data.state) !== null && typeof data.state !== 'undefined') {\r\n const currentContext = this.baasContextService.getBaasContextFromStorage();\r\n const updatedContext = Object.assign(Object.assign({}, data.state), { userTicketGuid: currentContext.userTicketGuid });\r\n //will save context of authenticated user in session storage\r\n this.baasContextService.saveBaasContextToStorage(updatedContext);\r\n }\r\n const meetpuntenAutomatischAanmakenKey = 'meetpuntenAutomatischAanmaken';\r\n this.state[meetpuntenAutomatischAanmakenKey] =\r\n data.meetpuntenAutomatischAanmaken == null ? false : data.meetpuntenAutomatischAanmaken;\r\n }))\r\n // post and pass request object\r\n .subscribe((data) => {\r\n // in case localhost we do an extra init on the localhost api\r\n if (this.localhost) {\r\n const doInitLocal = () => {\r\n // extra localhost init for antiforgery\r\n this.commonHttpService.initLocal().subscribe((localData) => {\r\n const localRequestTokenKey = 'localRequestToken';\r\n this.state[localRequestTokenKey] = localData.requestToken;\r\n // end the initialization\r\n this.initializeFinal(data, preInitSkipped);\r\n }, (error) => {\r\n const msg = this.translate.instant('DOMAIN_BAR_CORE_CONNECTED.INIT_LOCAL_FAILED');\r\n console.error(msg);\r\n this.handleStartupError(error);\r\n });\r\n };\r\n if (this.xdc.enabled) {\r\n this.xdc.sync({ caller: 'Startup', step: 'After Init' }).then(() => doInitLocal());\r\n }\r\n else\r\n doInitLocal();\r\n }\r\n // normal situation (on the deployed environment, not localhost)\r\n else {\r\n // end the initialization\r\n this.initializeFinal(data, preInitSkipped);\r\n }\r\n }, (error) => this.handleStartupError(error));\r\n };\r\n if (preInitSkipped && this.xdc.enabled) {\r\n this.xdc.sync({ caller: 'Startup', step: 'Before Init' }).then(() => {\r\n doInit();\r\n });\r\n }\r\n else\r\n doInit();\r\n }\r\n handleToepassing(toepassing) {\r\n if (this.config.appVersion) {\r\n // NOTE use the version from the config as the toepassing versie\r\n // ATM (17-01-2024) there is a bug where BaaS.NET gives a wrong version through the init\r\n const versieKey = 'versie';\r\n toepassing[versieKey] = this.config.appVersion;\r\n }\r\n const toepassingKey = 'toepassing';\r\n this.state[toepassingKey] = toepassing;\r\n // set zone for IDP based on state\r\n this.idpClient.options.zone = this.state.toepassing.zone;\r\n }\r\n initializeFinal(data, preInitSkipped) {\r\n this.defineBrowserSession().then(() => {\r\n var _a;\r\n // audit page (make sure it is after session audit)\r\n const audit = {\r\n auditId: this.state.pageId,\r\n parentAuditId: this.state.sessionId,\r\n auditType: BarAuditType.Page,\r\n appCode: this.config.appCode,\r\n details: {\r\n URL: document.location.href,\r\n 'APP-VERSION': this.config.appVersion\r\n }\r\n };\r\n this.audit.log(audit);\r\n this.addAuditInfoOnDocument(audit);\r\n this.auditDependencies();\r\n // here we put some global stuff\r\n const core = ensureGlobal('lvflanders.bar.ng.core');\r\n // make sure the state is available globally for non Angular code\r\n core.state = this.state;\r\n // put the toepassing service on global scope to open it up for outside user (such as puppeteer and web accessibility)\r\n core.toepassing = this.injector.get(BarToepassingService);\r\n this.appInfo.init(data);\r\n // define audit now because we need to know if audit is enabled (based on config)\r\n this.defineAuditMeetpunten();\r\n // get basiscontext from cookie (cookie is the master)\r\n const basiscontext = this.appInfo.getBasiscontext();\r\n // also set the basiscontext regular variable (non observable)\r\n // trick to fill in readonly prop (will give compilation error if property name changes)\r\n // https://stackoverflow.com/questions/48992522/get-name-of-property-or-field-in-object-typed/48992694?noredirect=1#comment84991472_48992694\r\n const basiscontextKey = 'basiscontext';\r\n this.state[basiscontextKey] = basiscontext;\r\n if (this.auth.postProcessing)\r\n this.auth.postProcessing();\r\n if (this.config.auth.contextTransportModus === BaasContextTransportModus.OnlineCookies) {\r\n // persist basiscontext whenever tab gets focus or we are leaving the tab\r\n // basiscontext can be different per tab but there is only one cookie\r\n document.addEventListener('visibilitychange', (ev) => {\r\n this.appInfo.persistBasiscontext({\r\n caller: 'Startup-VisibilityChange'\r\n });\r\n });\r\n }\r\n // NOTE in ng 18 the user ticket guid is not passed to the validation\r\n // because the idp client internally knows about the user ticket in this case\r\n this.tryRunIdpValidation((_a = data === null || data === void 0 ? void 0 : data.state) === null || _a === void 0 ? void 0 : _a.userTicketGuid);\r\n // go through all lifecycle hooks and call initialized\r\n this.initialized(preInitSkipped ? undefined : false).subscribe(() => {\r\n this.logOff.startListening();\r\n this.resolve();\r\n });\r\n });\r\n }\r\n /** Invoked when BAR is initialized. */\r\n initialized(pre) {\r\n if (this.initializedHooks != null) {\r\n return this.executeInitializedHooks(pre);\r\n }\r\n else {\r\n return of(undefined);\r\n }\r\n }\r\n executeInitializedHooks(pre) {\r\n const hookComparer = (a, b) => {\r\n // first let _framework internal property take precedence\r\n if (a._framework && !b._framework)\r\n return -1;\r\n if (!a._framework && b._framework)\r\n return 1;\r\n // second take into account the order\r\n if (a.order == null && b.order == null)\r\n return 0;\r\n if (a.order != null && b.order == null)\r\n return -1;\r\n if (a.order == null && b.order != null)\r\n return 1;\r\n if (a.order < b.order)\r\n return -1;\r\n if (a.order > b.order)\r\n return 1;\r\n return 0;\r\n };\r\n let initializedHooks = this.initializedHooks;\r\n // only filter if boolean is not undefined\r\n if (pre)\r\n initializedHooks = initializedHooks.filter((hook) => hook._pre === true);\r\n else if (pre === false)\r\n initializedHooks.filter((hook) => hook._pre !== true);\r\n // sort the hooks by order, if no order it goes in the back of the list\r\n const sortedHooks = initializedHooks.sort(hookComparer);\r\n let result$ = null;\r\n // NOTE concat didn't seem to work and forkJoin doesn't preserve the order\r\n // ensure everything is ran sequentially by modifying the observable till we reach the end of the array\r\n for (let i = 0; i < sortedHooks.length; i++) {\r\n const hookOutput$ = sortedHooks[i].run() || of(undefined);\r\n if (!result$)\r\n result$ = hookOutput$;\r\n else\r\n result$ = result$.pipe(mergeMap(() => hookOutput$));\r\n }\r\n return result$;\r\n }\r\n defineAuditMeetpunten() {\r\n var _a, _b, _c, _d;\r\n const perflog = parseQueryStringValue('perflog');\r\n if (perflog != null) {\r\n const appinfo = this.appInfo.get();\r\n if (appinfo != null) {\r\n switch (perflog.toLowerCase()) {\r\n case 'off':\r\n appinfo.ForcePerformanceLog = false;\r\n this.appInfo.save(appinfo);\r\n break;\r\n case 'on':\r\n appinfo.ForcePerformanceLog = true;\r\n this.appInfo.save(appinfo);\r\n break;\r\n }\r\n }\r\n }\r\n if (this.meetpunt.loggingEnabled) {\r\n // here we measure the page load time (duration of loading resources and parsing it)\r\n // https://stackoverflow.com/a/14878493/2174621\r\n const pageLoadTime = window.performance.timing.domContentLoadedEventEnd - window.performance.timing.navigationStart;\r\n this.meetpunt.log({\r\n meetpunt: 'DOM_CONTENT_LOADED_END',\r\n meetpuntDetail: document.location.pathname,\r\n waarde: pageLoadTime,\r\n meetpuntInfo: document.location.href,\r\n auditId: this.state.pageId\r\n });\r\n this.stopwatch = new BarStopwatch();\r\n // navigation start event does not occur the first time\r\n // this means we need to start the stopwatch the frist time\r\n this.stopwatch.start();\r\n }\r\n // here we measure the routing time\r\n this.router.events.subscribe((val) => {\r\n // on navigation start we start the stopwatch\r\n if (val instanceof NavigationStart) {\r\n // first reset the meldingen\r\n this.state.meldingen$.next(undefined);\r\n if (this.stopwatch != null) {\r\n this.stopwatch.start();\r\n }\r\n }\r\n // on navigation end or error we stop the stopwatch + use NavigationEnd to know the end/leaf route for meldingen\r\n else if (val instanceof NavigationEnd) {\r\n // meldingen are still undefined, meaning there was no meldingen guard, retrieve meldingen\r\n if (this.state.meldingen$.getValue() === undefined)\r\n this.retrieveMeldingen(val.urlAfterRedirects || val.url).subscribe();\r\n this.endRouteWatch(val, 'ROUTER_NAVIGATION_END');\r\n }\r\n else if (val instanceof NavigationError) {\r\n this.endRouteWatch(val, 'ROUTER_NAVIGATION_END');\r\n }\r\n });\r\n if (((_b = (_a = this.state.config) === null || _a === void 0 ? void 0 : _a.audit) === null || _b === void 0 ? void 0 : _b.enabled) == true) {\r\n // start listening to the audit queue\r\n this.audit.start();\r\n }\r\n if (this.meetpunt.loggingEnabled) {\r\n // start listening to the meetpunt queue\r\n this.meetpunt.start();\r\n }\r\n // intialize logging (global vars...)\r\n this.logging.init();\r\n if (((_d = (_c = this.state.config) === null || _c === void 0 ? void 0 : _c.log) === null || _d === void 0 ? void 0 : _d.enabled) == true) {\r\n // start listening to the log queue\r\n this.logging.start();\r\n }\r\n }\r\n retrieveMeldingen(routeUrl) {\r\n return this.meldingEngine.retrieveAndProcess(routeUrl).pipe(map(() => undefined));\r\n }\r\n endRouteWatch(val, meetpunt) {\r\n // generate the route id\r\n const routeIdKey = 'routeId';\r\n this.state[routeIdKey] = generateUuid();\r\n // audit this\r\n const audit = {\r\n auditId: this.state.routeId,\r\n parentAuditId: this.state.pageId,\r\n auditType: BarAuditType.Route,\r\n details: {\r\n ROUTE: val.url,\r\n // also log the URL for completeness\r\n URL: document.location.href\r\n }\r\n };\r\n this.audit.log(audit);\r\n this.addAuditInfoOnDocument(audit);\r\n // do it in timeout so we executed meetpunt after (more accurate measurement)\r\n window.setTimeout(() => {\r\n // if no stopwatch it means meetpunten is not enabled\r\n if (this.stopwatch != null) {\r\n this.stopwatch.stop();\r\n this.meetpunt.log({\r\n meetpunt,\r\n meetpuntDetail: val.url,\r\n waarde: this.stopwatch.duration,\r\n meetpuntInfo: val.url,\r\n auditId: this.state.routeId\r\n });\r\n }\r\n }, 0);\r\n }\r\n addAuditInfoOnDocument(audit) {\r\n if (document && audit) {\r\n const htmlEl = document.getElementsByTagName('html');\r\n if (htmlEl.length > 0) {\r\n htmlEl[0].setAttribute(BAR_CORE_CONSTANTS.AUDIT.HTML_ATTRIBUTE_AUDIT_ID, audit.auditId);\r\n htmlEl[0].setAttribute(BAR_CORE_CONSTANTS.AUDIT.HTML_ATTRIBUTE_AUDIT_TYPE, audit.auditType);\r\n }\r\n }\r\n }\r\n auditDependencies() {\r\n const scripts = [];\r\n const scriptTags = document.getElementsByTagName('script');\r\n for (let i = 0; i < scriptTags.length; i++) {\r\n const scriptTag = scriptTags[i];\r\n if (scriptTag.src != null && scriptTag.src.length > 0) {\r\n const script = {\r\n src: scriptTag.src,\r\n type: scriptTag.type\r\n };\r\n scripts.push(script);\r\n }\r\n }\r\n const links = [];\r\n const linkTags = document.getElementsByTagName('link');\r\n for (let i = 0; i < linkTags.length; i++) {\r\n const linkTag = linkTags[i];\r\n if (linkTag.href != null && linkTag.href.length > 0) {\r\n const link = {\r\n href: linkTag.href,\r\n rel: linkTag.rel,\r\n type: linkTag.type\r\n };\r\n links.push(link);\r\n }\r\n }\r\n this.audit.log({\r\n parentAuditId: this.state.pageId,\r\n auditType: BarAuditType.Dependencies,\r\n appCode: this.config.appCode,\r\n details: {\r\n SCRIPTS: JSON.stringify(scripts),\r\n LINKS: JSON.stringify(links)\r\n }\r\n });\r\n }\r\n /** The application url of the current application. This is for example used for defining api url's for the current application */\r\n defineApplicationUrl() {\r\n let url = null;\r\n // if the application url is defined use this\r\n if (this.config.applicationUrl)\r\n url = this.config.applicationUrl;\r\n else if (this.baseHref)\r\n url = this.baseHref;\r\n else {\r\n // by default use the global base href tag\r\n const baseTag = document.getElementsByTagName('base');\r\n // no angular base href defined, use the html base href (set through angular.json baseHref or directly in index.html)\r\n if (baseTag.length && baseTag[0].href)\r\n url = baseTag[0].href;\r\n // if no base href just take the domain\r\n else\r\n url = location.origin;\r\n }\r\n if (!checkUrlAbsolute(url)) {\r\n if (!url.startsWith('/'))\r\n url = '/' + url;\r\n // we make the url absolute\r\n url = location.origin + url;\r\n }\r\n // make it end with a slash\r\n if (!url.endsWith('/'))\r\n url += '/';\r\n return url.toLowerCase();\r\n }\r\n defineApiUrl() {\r\n if (this.config.apiRootUrl)\r\n return this.config.apiRootUrl;\r\n return this.defineApplicationUrl();\r\n }\r\n defineSpaUrl() {\r\n if (this.baseHref) {\r\n if (checkUrlAbsolute(this.baseHref))\r\n return this.baseHref;\r\n const baseHref = this.baseHref.startsWith('/') ? this.baseHref : `/${this.baseHref}`;\r\n return `${this.state.location.application.origin}${baseHref}`;\r\n }\r\n return this.state.location.application.url;\r\n }\r\n // this is the domain where the @lvflanders/bar-ng script is released and from which it is referenced within the application\r\n // we guess this domain by checking the script tags (the localhost application has an absolute reference to the script file (cdn)\r\n // in case a localhost consumer outside BAR is using a script we use the domain of that script to determine where to do api calls or other stuff\r\n /** The domain where @lvflanders BAR is running */\r\n defineReleaseOrigin() {\r\n let result = null;\r\n if (this.targetOrigin != null) {\r\n // here we are in xdc modus and are using a target origin to define to which domain to connect to\r\n // for BAR & basiscomponenten and & XDC iframe\r\n result = this.targetOrigin;\r\n }\r\n else {\r\n let src = null;\r\n // note that scripts property is not a regular array\r\n for (let i = 0; i < document.scripts.length; i++) {\r\n const script = document.scripts[i];\r\n // find script tag with bar-ng\r\n if (script.src != null && script.src.indexOf('lvflanders-bar-ng') > -1) {\r\n src = script.src;\r\n break;\r\n }\r\n }\r\n if (src != null) {\r\n result = extractUrlOrigin(src);\r\n }\r\n else {\r\n // no bar-core bundle meaning everything is probably bundled inline -> just take current origin\r\n result = window.location.origin;\r\n }\r\n }\r\n return result;\r\n }\r\n /** Root url to BAR web (api) (this is the domain + the bar web segment) */\r\n defineBarWebRootUrl() {\r\n let url = null;\r\n if (this.config.connectivity === BarConnectivity.Offline) {\r\n // local means BAR web is in process -> we need to point to url of current application\r\n url = this.state.location.application.url + 'domain.basisarchitectuur.web/';\r\n }\r\n // remote modus (default)\r\n else if (this.localhost) {\r\n // check local: this means we are in the BAR solution: just use the URL of BAR web localhost\r\n if (this.config.local && this.config.rootUrl) {\r\n // NOTE that the bar web process is hosted somewhere else (other localhost) and this is passed through the forRoot options\r\n url = this.config.rootUrl;\r\n if (!url.endsWith('/')) {\r\n url += '/';\r\n }\r\n }\r\n // if localhost client and this bundle is build for DEV\r\n // this means we need to use the DEV url\r\n else {\r\n url = this.state.location.release.origin + BAR_CORE_CONSTANTS.URL_SEGMENT.BAR_WEB;\r\n }\r\n }\r\n // we are on the deployed environment: just use current host name\r\n else {\r\n url = location.origin + BAR_CORE_CONSTANTS.URL_SEGMENT.BAR_WEB;\r\n }\r\n return url;\r\n }\r\n defineBaasWebRootUrl() {\r\n const origin = this.localhost ? this.state.location.release.origin : location.origin;\r\n return concatUrl(origin, this.rapUrlHelper.baasWebSegment);\r\n }\r\n defineBaasStaticRootUrl() {\r\n let url = null;\r\n if (this.config.connectivity === BarConnectivity.Offline) {\r\n // local means BaaS Static is in process -> we need to point to url of current application\r\n url = this.state.location.application.url + 'domain.baas-static.web/';\r\n }\r\n // remote modus (default)\r\n else if (this.localhost) {\r\n // check local: this means we are in the BAR solution: just use the URL of BAR web localhost\r\n if (this.config.local && this.config.staticRootUrl) {\r\n // NOTE that the bar web process is hosted somewhere else (other localhost) and this is passed through the forRoot options\r\n url = this.config.staticRootUrl;\r\n if (!url.endsWith('/')) {\r\n url += '/';\r\n }\r\n }\r\n // if localhost client and this bundle is build for DEV\r\n // this means we need to use the DEV url\r\n else {\r\n url = this.state.location.release.origin + this.rapUrlHelper.baasStaticSegment;\r\n }\r\n }\r\n // we are on the deployed environment: just use current host name\r\n else {\r\n url = location.origin + this.rapUrlHelper.baasStaticSegment;\r\n }\r\n return url;\r\n }\r\n getInitRequest(loadConfig) {\r\n // make request object needed for pre-init or init\r\n return {\r\n appCode: this.config.appCode,\r\n appVersion: this.config.appVersion,\r\n loadConfig,\r\n loadToepassing: false,\r\n meetpuntType: BAR_CORE_CONSTANTS.DEFAULT_MEETPUNT_TYPE\r\n };\r\n }\r\n get baasContextModus() {\r\n var _a, _b, _c;\r\n return (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.auth) === null || _b === void 0 ? void 0 : _b.contextTransportModus) !== null && _c !== void 0 ? _c : BaasContextTransportModus.OnlineCookies;\r\n }\r\n /** Enhances routing of application by adding guards where needed. */\r\n enhanceRouting() {\r\n if (this.router.config) {\r\n this.router.config\r\n // do not handle framework routes\r\n .filter((route) => { var _a; return ((_a = route.data) === null || _a === void 0 ? void 0 : _a._framework) !== true; })\r\n .forEach((route) => {\r\n if (route.children || route.loadChildren) {\r\n if (!route.canActivateChild)\r\n route.canActivateChild = [];\r\n route.canActivateChild.push(_BarMeldingGuard);\r\n }\r\n else if (route.component) {\r\n if (!route.canActivate)\r\n route.canActivate = [];\r\n route.canActivate.push(_BarMeldingGuard);\r\n }\r\n });\r\n }\r\n }\r\n}\r\nBarStartupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarStartupService, deps: [{ token: i0.Injector }, { token: i1$3.BarSharedBootstrapper }, { token: BarAuditService }, { token: i1$2.BarI18nService }, { token: BarCoreStateService }, { token: BarAppInfoService }, { token: BarMeetpuntService }, { token: BarAuthService }, { token: BarLogOffUtilityService }, { token: BarLoggingService }, { token: BarConnectedModuleOptions }, { token: BarXdcService }, { token: i1$3.BarCacheManager }, { token: BaasContextService }, { token: BAR_GLOBAL_CACHE }, { token: i1$3.BarIdpClient }, { token: BarCommonHttpService }, { token: BAR_INITIALIZED, optional: true }, { token: APP_BASE_HREF, optional: true }, { token: _BarRapUrlHelper }, { token: BarMeldingenEngine }, { token: BAR_LOCALHOST }, { token: _OopsDomService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBarStartupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarStartupService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarStartupService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () {\r\n return [{ type: i0.Injector }, { type: i1$3.BarSharedBootstrapper }, { type: BarAuditService }, { type: i1$2.BarI18nService }, { type: BarCoreStateService }, { type: BarAppInfoService }, { type: BarMeetpuntService }, { type: BarAuthService }, { type: BarLogOffUtilityService }, { type: BarLoggingService }, { type: BarConnectedModuleOptions }, { type: BarXdcService }, { type: i1$3.BarCacheManager }, { type: BaasContextService }, { type: i1$3.BarCacheStore, decorators: [{\r\n type: Inject,\r\n args: [BAR_GLOBAL_CACHE]\r\n }] }, { type: i1$3.BarIdpClient }, { type: BarCommonHttpService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_INITIALIZED]\r\n }, {\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [APP_BASE_HREF]\r\n }, {\r\n type: Optional\r\n }] }, { type: _BarRapUrlHelper }, { type: BarMeldingenEngine }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [BAR_LOCALHOST]\r\n }] }, { type: _OopsDomService }];\r\n } });\n\nvar translations = {\r\n PAGE_NOT_FOUND: 'Pagina niet gevonden',\r\n STARTUP_ERROR: 'Er heeft zich een fout voorgedaan bij het opstarten.',\r\n INIT_LOCAL_FAILED: 'Local init has failed. The localhost web api server may not be running or a server-side error has occured.',\r\n PRE_INIT_LOCAL_FAILED: 'Local pre-init has failed. The localhost web api server may not be running or a server-side error has occured. Make sure to reference Domain.BasisArchitectuur.AspNetCore.dll 7.4.3 or higher.',\r\n INSUFFICIENT_PRIVILEGES_FOR_ACTIE: 'Onvoldoende rechten voor actie \"{{actie}}\" (includeVoorWie: {{includeVoorwie}} - includeHoedanigheid: {{includeHoedanigheid}})',\r\n ZONES_NOT_ALLOWED: 'Geen toegang voor zone(s): \"{{zones}}\"',\r\n XDC_ERROR: 'Fout bij het synchroniseren (XDC).',\r\n XDC_SYNC_DISABLED: 'XDC synchronisatie uitgeschakeld.',\r\n TARGET_ORIGIN_OVERRIDE_WARNING: 'Target/release origin has been overridden by \"{{targetOrigin}}\". This can lead to undesired behavior.'\r\n};\n\n// next will be called at application startup\r\nfunction startupServiceFactory(startup) {\r\n // AOT-proof setup: https://github.com/angular/angular-cli/issues/5158\r\n const fn = () => startup.load();\r\n return fn;\r\n}\r\nfunction cacheManagerFactory(sharedAppState) {\r\n // NOTE we use factory because we cannot inject interfaces in a normal way\r\n return new BarCacheManager(sharedAppState);\r\n}\r\n// factory to create a default cache store bound to the application\r\nfunction defaultCacheStoreFactory(cacheManager, options) {\r\n // standaard implementatie (kan overschreden worden door de toepassingen)\r\n if (options.appCode) {\r\n // we have a specific appCode meaning we can create a unique store for the application\r\n return cacheManager.getStore({\r\n storeType: BarCacheStoreType.Application,\r\n appCode: options.appCode\r\n });\r\n }\r\n else {\r\n // no appCode meaning it's a unique application just use the global level\r\n return cacheManager.getStore({ storeType: BarCacheStoreType.Global });\r\n }\r\n}\r\nfunction userCacheStoreFactory(cacheManager, coreState) {\r\n // use lambda for user id because it can change over the lifetime of this application\r\n return cacheManager.getStore({\r\n storeType: BarCacheStoreType.User,\r\n userId: coreState.basiscontext.userId\r\n });\r\n}\r\nfunction globalCacheStoreFactory(cacheManager) {\r\n return cacheManager.getStore({ storeType: BarCacheStoreType.Global });\r\n}\r\nfunction meldingenCacheStoreFactory(cacheManager) {\r\n return cacheManager.getStore({ storeType: BarCacheStoreType.Global, store: 'meldingen' });\r\n}\r\nfunction defaultGvkManagerFactory(gvkStateBridge) {\r\n return new BarGvkManager(gvkStateBridge);\r\n}\r\nfunction authServiceFactory(config, userProvider, idpAuthService, externalAuthService, idpHeaderAuthService) {\r\n if (config.auth.contextTransportModus === BaasContextTransportModus.OnlineHeaders)\r\n return idpHeaderAuthService;\r\n // here we check if we have a user provider\r\n // default we use idp\r\n if (userProvider._disabled)\r\n return idpAuthService;\r\n // user provider defined meaning external authentication is applied\r\n return externalAuthService;\r\n}\r\nfunction idpClientFactory(cfg) {\r\n const result = new BarIdpClient();\r\n if (cfg.auth.contextTransportModus === BaasContextTransportModus.OnlineHeaders)\r\n result.options.formatToken = 'qs';\r\n return result;\r\n}\r\nfunction hubClientFactory(logOffHandler) {\r\n // create the non angular client with its default handlers\r\n const result = new BarHubClient();\r\n // add angular service as a handler\r\n result.addHandler(logOffHandler);\r\n return result;\r\n}\r\nfunction notificationManagerFactory() {\r\n return new BarNotificationManager();\r\n}\r\nclass BarConnectedModule {\r\n constructor(router, translate) {\r\n this.router = router;\r\n this.translate = translate;\r\n // set up translation system\r\n this.translate.addTranslations('DOMAIN_BAR_CORE_CONNECTED', translations);\r\n this.definePageNotFoundRoute();\r\n }\r\n definePageNotFoundRoute() {\r\n this.router.config.push({\r\n path: '**',\r\n canActivate: [BarPageNotFoundGuard],\r\n component: BarPageNotFoundComponent,\r\n data: { _framework: true }\r\n });\r\n }\r\n /** Import through this function in the app root module */\r\n static forRoot(config = {}) {\r\n if (!config)\r\n config = new BarConnectedModuleOptions();\r\n if (config.connectivity == null) {\r\n config.connectivity = BarConnectivity.Online;\r\n }\r\n if (config.auth == null) {\r\n config.auth = new BarAuthOptions();\r\n }\r\n if (config.localhost == null)\r\n config.localhost = checkLocalhost();\r\n config.auth._originalContextTransportModus = config.auth.contextTransportModus;\r\n if (config.auth.contextTransportModus == null) {\r\n // in localhost use online headers instead of cookies (avoid third party cookie issues)\r\n config.auth.contextTransportModus = config.localhost ? BaasContextTransportModus.OnlineHeaders : BaasContextTransportModus.OnlineCookies;\r\n }\r\n return {\r\n ngModule: BarConnectedModule,\r\n providers: [\r\n {\r\n // NOTE use separate token to avoid having to pass all the options through dependency injection\r\n provide: BAR_LOCALHOST,\r\n useValue: config.localhost\r\n },\r\n // https://stackoverflow.com/a/43293449/2174621\r\n {\r\n provide: BarConnectedModuleOptions,\r\n useValue: config\r\n },\r\n BarLoggingService,\r\n // here we register our interceptor\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: BarCoreHttpInterceptor,\r\n multi: true\r\n },\r\n // next registration is the BAR service used at startup\r\n BarStartupService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: startupServiceFactory,\r\n deps: [BarStartupService],\r\n multi: true\r\n },\r\n {\r\n provide: BarAuthService,\r\n useFactory: authServiceFactory,\r\n deps: [BarConnectedModuleOptions, BaasUserProvider, BarIdpAuthService, BaasExternalAuthService, BarIdpHeaderAuthService]\r\n },\r\n BaasExternalAuthService,\r\n BarIdpAuthService,\r\n BarIdpHeaderAuthService,\r\n BarLogOffUtilityService,\r\n BarCoreStateService,\r\n BarAppInfoService,\r\n BaasContextService,\r\n BarAuditService,\r\n BarToepassingService,\r\n BarSecurityService,\r\n BarProfielService,\r\n BarConfigurationService,\r\n BarMeetpuntService,\r\n BarActieAllowedGuard,\r\n BarZoneGuard,\r\n BarXdcService,\r\n BarMeldingService,\r\n BarMeldingGuard,\r\n _BarMeldingGuard,\r\n BarMeldingenEngine,\r\n {\r\n provide: BarIdpClient,\r\n useFactory: idpClientFactory,\r\n deps: [BarConnectedModuleOptions]\r\n },\r\n BarSharedBootstrapper,\r\n {\r\n provide: BarCacheManager,\r\n useFactory: cacheManagerFactory,\r\n deps: [BarSharedAppStateService]\r\n },\r\n {\r\n provide: BarHubClient,\r\n useFactory: hubClientFactory,\r\n deps: [BarLogOffHubMessageHandler]\r\n },\r\n BarLogOffHubMessageHandler,\r\n {\r\n provide: BarNotificationManager,\r\n useFactory: notificationManagerFactory\r\n },\r\n {\r\n // inject default cache store which is for the current app\r\n provide: BarCacheStore,\r\n useFactory: defaultCacheStoreFactory,\r\n deps: [BarCacheManager, BarConnectedModuleOptions]\r\n },\r\n {\r\n // inject current app cache\r\n provide: BAR_APP_CACHE,\r\n useFactory: defaultCacheStoreFactory,\r\n deps: [BarCacheManager, BarConnectedModuleOptions]\r\n },\r\n {\r\n // inject the user cache\r\n provide: BAR_USER_CACHE,\r\n useFactory: userCacheStoreFactory,\r\n deps: [BarCacheManager, BarCoreStateService]\r\n },\r\n {\r\n // inject the global cache\r\n provide: BAR_GLOBAL_CACHE,\r\n useFactory: globalCacheStoreFactory,\r\n deps: [BarCacheManager]\r\n },\r\n {\r\n provide: BAR_MELDINGEN_CACHE,\r\n useFactory: meldingenCacheStoreFactory,\r\n deps: [BarCacheManager]\r\n },\r\n // bridge to link the GVK state to the @lvflanders/bar-ng state\r\n BarGvkStateBridge,\r\n {\r\n provide: BarGvkManager,\r\n useFactory: defaultGvkManagerFactory,\r\n deps: [BarGvkStateBridge]\r\n },\r\n {\r\n provide: BAR_INITIALIZED,\r\n useClass: BarUserDataHook,\r\n multi: true\r\n },\r\n {\r\n provide: BAR_INITIALIZED,\r\n useClass: BaasStaticInitializedHook,\r\n multi: true\r\n },\r\n {\r\n provide: BAR_INITIALIZED,\r\n useClass: BarNotificationInitializedHook,\r\n multi: true\r\n },\r\n _BarRapUrlHelper,\r\n _BarRouteLogger,\r\n {\r\n provide: BaasUserProvider,\r\n useClass: BaasNoopUserProvider\r\n },\r\n BarPageNotFoundGuard\r\n ]\r\n };\r\n }\r\n /** Import through this function in a lazy loaded module (only in case problems occur with interceptors) */\r\n static forChild() {\r\n return {\r\n ngModule: BarConnectedModule,\r\n providers: [\r\n {\r\n // interceptor herdefinieren kan mogelijks probleem zijn in lazy loaded module\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: BarCoreHttpInterceptor,\r\n multi: true\r\n }\r\n ]\r\n };\r\n }\r\n}\r\nBarConnectedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConnectedModule, deps: [{ token: i1.Router }, { token: i1$2.BarI18nService }], target: i0.ɵɵFactoryTarget.NgModule });\r\nBarConnectedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConnectedModule, imports: [CommonModule, BarI18nModule] });\r\nBarConnectedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConnectedModule, imports: [CommonModule, BarI18nModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: BarConnectedModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [CommonModule, BarI18nModule]\r\n }]\r\n }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1$2.BarI18nService }]; } });\n\n/** Creates a validator which compares the given control to another control with a comparison type in case both controls are filled in.\r\n The error key is the comparison type.\r\n */\r\nfunction createComparisonValidator(otherControl, comparison) {\r\n return (control) => {\r\n const otherValue = otherControl.value;\r\n if (control.value && otherValue) {\r\n switch (comparison) {\r\n case 'equal': {\r\n if (control.value != otherValue)\r\n return { equal: true };\r\n break;\r\n }\r\n case 'larger': {\r\n if (control.value <= otherValue)\r\n return { larger: true };\r\n break;\r\n }\r\n case 'largerOrEqual': {\r\n if (control.value < otherValue)\r\n return { largerOrEqual: true };\r\n break;\r\n }\r\n case 'smaller': {\r\n if (control.value >= otherValue)\r\n return { smaller: true };\r\n break;\r\n }\r\n case 'smallerOrEqual': {\r\n if (control.value > otherValue)\r\n return { smallerOrEqual: true };\r\n break;\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n/** @experimental Creates a validator which compares the given date control to another date control with a comparison type in case both controls are filled in.\r\n Date-fns is used internally.\r\n The error key is the comparison type.\r\n */\r\nfunction createDateComparisonValidator(otherControl, comparison) {\r\n return (control) => {\r\n const otherValue = otherControl === null || otherControl === void 0 ? void 0 : otherControl.value;\r\n if ((control === null || control === void 0 ? void 0 : control.value) && otherValue) {\r\n switch (comparison) {\r\n case 'equal': {\r\n if (!isEqual(control.value, otherValue))\r\n return { equal: true };\r\n break;\r\n }\r\n case 'larger': {\r\n if (!isAfter(control.value, otherValue))\r\n return { larger: true };\r\n break;\r\n }\r\n case 'largerOrEqual': {\r\n if (isBefore(control.value, otherValue))\r\n return { largerOrEqual: true };\r\n break;\r\n }\r\n case 'smaller': {\r\n if (!isBefore(control.value, otherValue))\r\n return { smaller: true };\r\n break;\r\n }\r\n case 'smallerOrEqual': {\r\n if (isAfter(control.value, otherValue))\r\n return { smallerOrEqual: true };\r\n break;\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n return null;\r\n };\r\n}\n\n// Public functions\r\n/** Creates a validator with a given error key and callback to check for validity. */\r\nfunction createGenericValidator(errorKey, checkValid) {\r\n return (control) => {\r\n const valid = checkValid(control);\r\n if (valid)\r\n return null;\r\n else {\r\n const result = {};\r\n result[errorKey] = { value: control.value };\r\n return result;\r\n }\r\n };\r\n}\r\nfunction checkTruthy(value, truthyCheckMode) {\r\n switch (truthyCheckMode) {\r\n case 'truthy':\r\n return value; // Default truthy check\r\n case 'notNullOrUndefined':\r\n return value !== null && value !== undefined;\r\n case 'notNull':\r\n return value !== null;\r\n case 'notUndefined':\r\n return value !== undefined;\r\n }\r\n}\r\n/** Creates a validators where the given control value is required in case a given condition is true. */\r\nfunction createRequiredIfValidator(ifCondition, truthyCheckMode = 'truthy') {\r\n const checkValid = (control) => {\r\n return !ifCondition(control) || checkTruthy(control === null || control === void 0 ? void 0 : control.value, truthyCheckMode);\r\n };\r\n return createGenericValidator('required', checkValid);\r\n}\r\n/** Creates a validators where the given control value must be larger than the value of another given control. */\r\nfunction createGreaterThanControlValidator(otherControl) {\r\n return createCompareControlValidator('greaterThan', otherControl, (value, otherValue) => value > otherValue);\r\n}\r\n/** Creates a validators where the given control value must be larger than or equal to the value of another given control. */\r\nfunction createGreaterThanOrEqualControlValidator(otherControl) {\r\n return createCompareControlValidator('greaterThanOrEqual', otherControl, (value, otherValue) => value >= otherValue);\r\n}\r\n/** Creates a validators where the given control value must be smaller than the value of another given control. */\r\nfunction createSmallerThanControlValidator(otherControl) {\r\n return createCompareControlValidator('smallerThan', otherControl, (value, otherValue) => value < otherValue);\r\n}\r\n/** Creates a validators where the given control value must be smaller than or equal the value of another given control. */\r\nfunction createSmallerThanOrEqualControlValidator(otherControl) {\r\n return createCompareControlValidator('smallerThanOrEqual', otherControl, (value, otherValue) => value <= otherValue);\r\n}\r\n// Facade\r\n// NOTE inspired by Validators class from @angular\r\n/** BAR reactive forms validators. */\r\nclass BarValidators {\r\n /** Creates a validators where the given control value is required in case a given condition is true. */\r\n static requiredIf(ifCondition, truthyCheckMode = 'truthy') {\r\n return createRequiredIfValidator(ifCondition, truthyCheckMode);\r\n }\r\n /** Creates a validators where the given control value must be larger than the value of another given control. */\r\n static greaterThanControl(otherControl) {\r\n return createGreaterThanControlValidator(otherControl);\r\n }\r\n /** Creates a validators where the given control value must be larger than or equal to the value of another given control. */\r\n static greaterThanOrEqualControl(otherControl) {\r\n return createGreaterThanOrEqualControlValidator(otherControl);\r\n }\r\n /** Creates a validators where the given control value must be smaller than the value of another given control. */\r\n static smallerThanControl(otherControl) {\r\n return createSmallerThanControlValidator(otherControl);\r\n }\r\n /** Creates a validators where the given control value must be smaller than or equal the value of another given control. */\r\n static smallerThanOrEqualControl(otherControl) {\r\n return createSmallerThanOrEqualControlValidator(otherControl);\r\n }\r\n /** @experimental Creates a validators where the given control date value is compared to to another typed date control using date-fns. */\r\n static dateComparison(otherControl, comparison) {\r\n return createDateComparisonValidator(otherControl, comparison);\r\n }\r\n /** Creates a validators where the given control value is compared to to another control. */\r\n static comparison(otherControl, comparison) {\r\n return createComparisonValidator(otherControl, comparison);\r\n }\r\n}\r\n// Private functions\r\nfunction controlValueDefined(control) {\r\n return (control === null || control === void 0 ? void 0 : control.value) != null;\r\n}\r\nfunction createCompareControlValidator(errorKey, otherControl, comparisonCondition) {\r\n return createGenericValidator(errorKey, (control) => {\r\n // both control values must be defined in able to perform the condition (otherwise it is considered value)\r\n return !controlValueDefined(control) || !controlValueDefined(otherControl) || comparisonCondition(control.value, otherControl.value);\r\n });\r\n}\n\n/*\r\n * Public API Surface of @lvflanders/bar-ng\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { BAR_APP_CACHE, BAR_ERROR_HANDLER, BAR_GLOBAL_CACHE, BAR_INITIALIZED, BAR_LOCALHOST, BAR_LOG_OFF, BAR_MELDINGEN_CACHE, BAR_USER_CACHE, BaasContextTransportModus, BaasCoreModule, BaasModuleOptions, BaasNoopUserProvider, BaasUserProvider, BarActie, BarActieAllowedGuard, BarActieFromContext, BarActionDef, BarAuthGuard, BarAuthService, BarBasiscontext, BarCacheable, BarCacheableOptions, BarConfigurationService, BarConnectedModule, BarConnectedModuleOptions, BarConnectivity, BarCoreModule, BarCoreService, BarCoreStateService, BarDateTimeConversionStrategy, BarHttpParams, BarLogInfo, BarLoggingService, BarMeetpunt, BarMeetpuntService, BarMelding, BarMeldingGuard, BarMeldingService, BarMeldingType, BarProfielService, BarRoutingService, BarSecurityLevel, BarSecurityService, BarToepassingService, BarValidators, BarZoneGuard, _BaasStaticConfigurationApiClient, _OopsDomService, _OopsType, convertToHttpParams, createComparisonValidator, createDateComparisonValidator, createDefaultBaseHrefFactory, createGenericValidator, createGreaterThanControlValidator, createGreaterThanOrEqualControlValidator, createRequiredIfValidator, createSmallerThanControlValidator, createSmallerThanOrEqualControlValidator, resolveValue$ };\n//# sourceMappingURL=lvflanders-bar-ng.mjs.map\n","import * as lvFlandersBarNgCore from '../dist/@lvflanders/bar-ng';\r\n\r\n// global glue variable for externals\r\nif (window['lvflanders'] == null) window['lvflanders'] = {};\r\nif (window['lvflanders'].bar == null) window['lvflanders'].bar = {};\r\nif (window['lvflanders'].bar.ng == null) window['lvflanders'].bar.ng = {};\r\n\r\nwindow['lvflanders'].bar.ng.core = lvFlandersBarNgCore;\r\n\r\nexport { lvFlandersBarNgCore };"],"names":["leafPrototypes","getProto","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","Object","getPrototypeOf","obj","t","value","mode","this","__esModule","then","ns","create","r","def","current","indexOf","getOwnPropertyNames","forEach","key","d","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","ng","core","rxjs","lvflanders","bar","shared","common","http","locales","extra","nl","nlBe","router","i18n","operators","window","__decorate","decorators","target","desc","c","arguments","length","getOwnPropertyDescriptor","Reflect","decorate","i","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","apply","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","SuppressedError","material","icon","BAR_GLOBAL_CACHE","InjectionToken","BAR_USER_CACHE","BAR_APP_CACHE","BAR_MELDINGEN_CACHE","BAR_INITIALIZED","BAR_ERROR_HANDLER","BAR_LOG_OFF","BAR_LOCALHOST","APP_INFO_COOKIE_KEY","PAGES_ROOT_PATH","STORAGE_KEY_PREFIX","BAR_CORE_CONSTANTS","DEFAULT_MEETPUNT_TYPE","STORAGE_KEYS","SESSION_ID","IDP_IMPERSONATE","URL_SEGMENT","BAR_WEB","BAAS_STATIC","BAAS_WEB","AUDIT","HTML_ATTRIBUTE_AUDIT_ID","HTML_ATTRIBUTE_AUDIT_TYPE","COOKIE","APP_INFO","MAIN","SESSION","SECURE","HEADERS","BAAS_BACKEND_HEADER","BAAS_BROWSER_CALLSTACK","PAGES","ONBESCHIKBAAR","SESSION_EXPIRED","INSUFFICIENT_PRIVILEGES","LOG_OFF","BarRoutingService","constructor","navigateByUrlWithReload","url","extras","navigateByUrl","skipLocationChange","catch","reason","navigateWithReload","commands","navigate","minVersion","version","ngImport","type","deps","token","providedIn","Injectable","args","ctorParameters","BarCoreStateService","meldingen$","BehaviorSubject","BarCoreService","appInits","injector","coreState","errorOccurred","EventEmitter","refreshed","customHubMessageReceived","addEventListener","event","emit","detail","Router","routing","refresh","initPromises","appInit","initResult","promise","push","all","navigateHome","invokeHomeAction","navigateAction","location","config","homeUrl","homeAction","navigateRoot","invokeRootAction","ctrlKey","metaKey","openUrl","spa","rootAction","invokeAction","defaultAction","action","defaultBehaviour","routerUrl","resolveValue","routerCommands","routerLink","a","href","APP_INITIALIZER","optional","Inject","Optional","BarLogModel","BarLogLevel","BarConnectivity","BarDateTimeConversionStrategy","BarQueueProcessor","storage","storageKey","started","start","interval","dequeueCount","subject$","Subject","execute$","asObservable","intervalId","setInterval","dequeue","stop","complete","clearInterval","enqueue","item","queueStr","getItem","queue","JSON","parse","stringify","setItem","itemsToSend","slice","removeItem","BarHttpParams","HttpParams","backgroundRequest","ommitInterceptor","options","super","BarLoggingHttpDefaultService","save","logs","post","barWeb","params","BarLoggingHttpService","useClass","BarAuthOptions","enabled","validation","BarConnectedModuleOptions","auth","connectivity","Online","BarLoggingService","loggingHttpService","queueProcessor","sessionStorage","error","log","Error","warn","Warn","critical","Critical","info","Info","init","global","ensureGlobal","failedLogsStr","localStorage","itemCount","pipe","mergeMap","catchError","console","failedLogs","timestamp","Date","of","subscribe","level","_a","model","logLevel","message","exception","stackTrace","stack","toepassing","appCode","code","appVersion","versie","BarErrorHandler","zone","logging","errorHandlerHooks","handleError","run","handled","proceed","hook","BarErrorHandling","handler","handle","getCircularReplacer","seen","WeakSet","add","BarErrorExpressionChangedAfterCheckedHook","startsWith","BarCoreModuleOptions","ISO_8601_REGEX","BarDateTimeHttpInterceptor","moduleOptions","intercept","req","traverseInput","body","tap","HttpResponse","traverseOutput","traverse","checkDateObject","convertToISOString","isIso8601","parseISO","dateTimeInterception","conversionStrategy","IsoGmt","toISOString","Iso","matcher","converter","traverser","Array","isArray","keys","test","BarEmptyComponent","selector","template","isInline","Component","translations$1","GENERIC_ERROR","LowerCaseUrlSerializer","DefaultUrlSerializer","toLowerCase","coreRoutes","path","component","data","_framework","BarCoreModule","translate","addTranslations","forRoot","registerLocaleData","LOCALE","providers","provide","LOCALE_ID","useValue","UrlSerializer","Location","LocationStrategy","PathLocationStrategy","ErrorHandler","multi","HTTP_INTERCEPTORS","ngModule","BarCacheable","descriptor","originalMethod","className","name","cacheKeyPrefix","paramNames","getParamNames","cacheKey","defineCacheKey","cacheStore","store","BarCacheManager","getStore","BarCacheStore","getOrSetItem","originalResult","BarCacheEntryOptions","from","Observable","lastValueFrom","BaasContextTransportModus","BarSecurityLevel","TokenType","__OopsDomService_instances","__OopsDomService_coreStateService","__OopsDomService_mappings","__OopsDomService_oopsActionRefresh","__OopsDomService_oopsActionHome","_OopsType","declarations","imports","BarI18nModule","RouterModule","NgModule","BarAppInfoSecure","BarBasiscontext","UserTicketInfo","BarAppInfo","BaasContextService","saveBaasContextToStorage","baasPersistentStateObject","tokenType","toUpperCase","BarSecTicket","OidcLinkId","jsonObj","_BAAS_SHARED_CONSTANTS","updateAppInfoToStorage","appInfo","_b","_c","_d","_e","_f","checkBaasContextInStorage","getBaasContextFromStorage","vw","ToepVoorwie","vwrc","ToepVoorwieRolcode","hd","ToepHoedanigheid","hdrc","ToepHoedanigheidRolcode","userVoorwie","userHoedanigheid","userID","ToepUser","userTicketGuid","SecurityTicketGuid","userTicketInfo","userCbiUserID","CbiUserId","getBaasContextAsHeaderString","getBaasContextString","getAppInfoFromStorage","appInfoDataFromStorage","appinfo","convertFromBaasState","removeContextFromSession","baas","resp","AuditId","auditID","UserZone","userZone","ForcePerformanceLog","AllowCookieAuth","ExpireTicks","generateDatum2DaysInFutureInticks","Timestamp","toString","getPart","date","setTime","getTime","getfirstPart","input","segments","split","trim","BarAppInfoService","baasContextService","onSyncRequired","sessionId","readCookie","createCookie","baasContextModus","OnlineCookies","koek","decodeURIComponent","deleteCookie","createGuidCookie","setTimestamp","syncContext","OfflineHeaders","secureCookieMissing","secureContent","sync","caller","innerContext","persistBasiscontext","basiscontext","context","voorwie","voorwieRolcode","hoedanigheid","hoedanigheidRolcode","getBasiscontext","toBasiscontext","ToepZone","fullUsername","klantnummer","userId","testProfielKey","substr","impersonateStrStorage","impersonate","nameEQ","ca","document","cookie","charAt","substring","cookieValue","str","encodeURIComponent","securityLevel","Production","contextTransportModus","BarMeetpuntHttpDefaultService","meetpunten","BarMeetpuntHttpService","BarMeetpuntService","meetpuntHttpService","loggingEnabled","meetpunt","meetpuntenAutomatischAanmaken","performance","timing","meetpuntType","BarMeetpunt","ngOnInit","stopwatch","BarStopwatch","ngAfterViewInit","meetpuntDetail","waarde","duration","meetpuntInfo","ACTION_ICON_REFRESH","ACTION_CONTENT_REFRESH","ACTION_INFO_REFRESH","_OopsDomService","set","inject","Technical","title","content","bind","actionIcon","actionContent","actionInfo","Authentication","NotFound","checkOopsSupported","getElementById","showOops","settings","oopsElement","baasStatic","image","imgElement","generateRandomNumber","src","concatUrl","style","display","appRoot","parentElement","removeChild","titleElement","innerText","contentElement","actionElement","actionIconElement","actionContentElement","actionInfoElement","resolveValue$","resolvedValue","convertToHttpParams","val","append","createDefaultBaseHrefFactory","baseHref","comparisonBaseHref","endsWith","pathname","WeakMap","clear","deleteAllIndexedDb","deleteAllCookies","reload","BarActie","actie","BarSecurityHttpDefaultService","checkActieAllowed","getHoedanigheidInfoSet","err","getUserInfo","Offline","map","hoedanigheidInfoSet","cbiUserId","hoedList","contactInfo","alvNr","firstname","firstName","lastname","fullName","fullname","phone","phoneNumber","mobile","mobileNumber","email","mailAddress","BarSecurityHttpService","BarSecurityService","securityHttpService","cacheManager","storeType","BarCacheStoreType","defer","session","checkActieAllowedFromContext","actieObj","includeVoorwie","includeHoedanigheid","flush","BarActieAllowedGuard","security","localhost","canActivate","route","acties","promises","errorMessage","instant","BarProfielModel","BarProfielHttpDefaultService","read","responseType","BarProfielHttpService","BarProfielService","profielHttpService","readNumber","parseFloat","readBoolean","BarConfigurationService","readValue","pathAndKey","replace","STORAGE_KEY","BarLogOffUtilityService","coreOptions","profiel","configuration","globalStore","logOffHooks","startListening","onstorage","requestLogOff","navigateLogOff","invokePreLogOffHooks","logOffObservables","hookResult","forkJoin","cleanup","logOffUrl","BarAuthService","logOffService","_logOffService","postProcessing","logOff","performLogOff","BarAuthGuard","authService","authenticated","authenticate","BarMeldingType","_BarMeldingenEngine_instances","_BarMeldingenEngine_state","_BarMeldingenEngine_meldingService","_BarMeldingenEngine_handleOnbeschikbaar","__BarMeldingGuard_meldingEngine","BarMelding","convert","m","meldingTypeMapping","Opgelost","Informatief","Belangrijk","Onbeschikbaar","Banner","classicBannerProcessing","bannerTitle","bannerUrl","bannerUrlText","bannerImage","readField","field","fields","find","assign","id","meldingId","startDate","validFrom","endDate","validUntil","meldingType","urlPattern","_mtype","meldingText","startDatum","eindDatum","locatie","tekst","BarMeldingHttpDefaultService","getMeldingen","meldingen","melding","hasBlockingMelding","BarMeldingHttpService","BarMeldingService","meldingHttpService","BarMeldingenEngine","retrieveAndProcess","routeUrl","pathnameEndsWithSlash","onbeschikbaarMelding","parsedMeldingen","meldingKey","_BarMeldingGuard","_canActivate","canActivateChild","childRoute","routeConfig","BarMeldingGuard","warningGiven","BarZoneGuard","zones","join","BaasModuleOptions","BarActieFromContext","BarActionDef","BarCacheableOptions","BarLogInfo","BaasHubInitializedHook","hubClient","hub","hubUrl","baasWeb","securityTicketId","BaasAuditHttpService","auditItems","apiRoot","BAAS_VERSION_ENDPOINTS","BaasCommonHttpService","rootUrl","preInitLocal","withCredentials","preInit","request","response","parseToepassing","initLocal","saveEndpoints","endpoints","versionOk","baasVersion","versionCompare","returnVal","parseSecLevelFromString","Development","Test","Unknown","BaasLoggingHttpService","BaasMeetpuntHttpService","warnedNotAvailable","warnNotAvailable","_BaasMeldingHttpService_instances","_BaasMeldingHttpService_getMeldingenV2","_BaasMeldingHttpService_getMeldingenV1","BAAS_VERSION_MELDINGEN_V2","BaasMeldingHttpService","apiVersion","urlPart","encodeURI","apiUrl","myUrl","BaasProfielHttpService","BAAS_VERSION_USER_INFO","BaasSecurityHttpService","voorwieSegment","hoedanigheidSegment","BarAuditHttpDefaultService","BarAuditHttpService","BarCommonHttpDefaultService","headers","HttpHeaders","BarCommonHttpService","BaasCoreModule","BarGvkStateBridge","remoteLocalhostApiEnabled","apiRootUrl","_BarPageNotFoundGuard_oopsDomService","__BaasStaticConfigurationApiClient_instances","__BaasStaticConfigurationApiClient_httpClient","__BaasStaticConfigurationApiClient_coreState","__BaasStaticConfigurationApiClient_logging","__BaasStaticConfigurationApiClient_cacheManager","__BaasStaticConfigurationApiClient_invalidateConfiguration","BarPageNotFoundGuard","CACHE_STORE","CONFIGURATION_KEY","_BaasStaticConfigurationApiClient","HttpClient","getConfiguration","enableChatbot","put","chatbot","checkChatbotEnabled","propDecorators","KEY_ENDPOINTS","_BarRouteLogger","api","appStore","destroyed$","loggedEndpoints$$","ngOnDestroy","general","endpointLoggingEnabled","events","filter","NavigationEnd","switchMap","getValue","loggedEndpoints","endpointsToLog","collect","remember$","concat","takeUntil","routes","parentPath","fullPath","loadChildren","_loadedRoutes","children","endRoute","loadComponent","redirectTo","_baasHandled","application","BaasStaticInitializedHook","order","_pre","apiService","routeLogger","handleConfig","appMenuItems","ami","processAppMenuUrl","urlLocalhost","public","checkUrlAbsolute","release","origin","BarNotificationInitializedHook","notificationManager","notifications","STORAGE_KEY_USER_INFO_PREFIX","BarUserDataHook","hoedanigheidInfoSetKey","userDataKey","userData$","cachedItem","userData","BarAuditType","_BarRapSegment","_BarIdpHeaderAuthService_idpClient","_BarIdpHeaderAuthService_options","_BarIdpHeaderAuthService_contextService","_BarIdpHeaderAuthService_coreState","_BarRapUrlHelper","baasStaticSegment","rapSegment","baasWebSegment","Public","Applicative","parseUrl","BarXdcService","rapUrlHelper","syncDefers","syncDisabled","arg","local","forceRemote","generateUuid","sendMessage","handleMessage","resolveReady","localCookie","resolveSync","localTimestamp","serverTimestamp","ensureIFrame","iframeEl","defineGlobal","createElement","setAttribute","appendChild","bindEvent","iframeReady","element","eventName","eventHandler","attachEvent","msg","contentWindow","postMessage","xdcErrorMsg","xdc","rejectSync","BarCoreHttpInterceptor","oopsDomService","handleAuthFailedStatusCombined","handleAuthFailedStatus","interception","handleAuthFailed","tmp","handleForbiddenStatusCombined","handleForbiddenStatus","handleForbidden","domainRequest","checkDomainRequest","crossDomainRequest","checkCrossDomainRequest","clone","defineHeaders","handleRequest","status","throwError","ev","basiscontextKey","auditId","extractUrlParts","delayWhen","requestToken","localRequestToken","auditType","routeId","Route","pageId","Page","Session","addBaasHeaders","callStack","headerValue","checkCompatibleOrigin","hostname","compatibleOrigins","URL","some","compatibleOrigin","strategy","performExtraLogging","comment","BarPageNotFoundComponent","isStandalone","dependencies","MatIconModule","inputs","exportAs","standalone","NgIf","BarLogOffHubMessageHandler","BaasUserProvider","_disabled","BaasExternalAuthService","guidProvider","authenticating","subscriber","clearStorage","provideUser","guid","userHeaderContext","debug","BaasNoopUserProvider","EMPTY","BarIdpAuthService","idpClient","parseQueryStringValue","impersonateStrQuery","delete","logout","BarIdpHeaderAuthService","BarIdpClient","idpUsr","BarAuditService","auditHttpService","audit","excludedAuditTypes","hostName","details","BarSharedAppStateService","BarToepassingService","basiscontextChanged","setVoorwie","setBasiscontextData","resetVoorwie","setHoedanigheid","resetHoedanigheid","method","BarStartupService","sharedBootstrapper","commonHttpService","initializedHooks","meldingEngine","configHandled","load","launch","mustAuthenticate","contextTransportModusOverride","launchLifeCycle","authFailedUrl","failedUrl","targetOriginOverride","enhanceRouting","defineConnectivity","defineApplicationUrl","defineSpaUrl","defineApiUrl","targetUrl","defineReleaseOrigin","defineBarWebRootUrl","defineBaasStaticRootUrl","defineBaasWebRootUrl","wwUrl","launchAuth","launchInit","launchPreInit","targetOrigin","retry","TargetOrigin","loadConfig","tryLoadConfigFromStorage","initRequest","getInitRequest","handleToepassing","initialized","_originalContextTransportModus","OnlineHeaders","localhostHeaderTransportModus","handleStartupError","notLoaded","configStr","putInStorage","processIdpRootUrl","idpRootUrl","logoutUrl","errorUrl","idpUrl","authSuccess","defineBrowserSession","cookieSessionId","clearSession","disableCacheInvalidation","invalidate","baasHeadersAllowed","tryRunIdpValidation","ticketId","validate","preInitSkipped","doInit","_noInitPaths","noInitPath","initializeFinal","loadToepassing","currentContext","updatedContext","doInitLocal","localData","parentAuditId","addAuditInfoOnDocument","auditDependencies","defineAuditMeetpunten","pre","executeInitializedHooks","sortedHooks","sort","b","result$","hookOutput$","perflog","pageLoadTime","domContentLoadedEventEnd","navigationStart","NavigationStart","retrieveMeldingen","urlAfterRedirects","endRouteWatch","NavigationError","ROUTE","setTimeout","htmlEl","getElementsByTagName","scripts","scriptTags","scriptTag","script","links","linkTags","linkTag","link","rel","Dependencies","SCRIPTS","LINKS","applicationUrl","baseTag","extractUrlOrigin","staticRootUrl","APP_BASE_HREF","translations","PAGE_NOT_FOUND","STARTUP_ERROR","INIT_LOCAL_FAILED","PRE_INIT_LOCAL_FAILED","INSUFFICIENT_PRIVILEGES_FOR_ACTIE","ZONES_NOT_ALLOWED","XDC_ERROR","XDC_SYNC_DISABLED","TARGET_ORIGIN_OVERRIDE_WARNING","startupServiceFactory","startup","cacheManagerFactory","sharedAppState","defaultCacheStoreFactory","userCacheStoreFactory","globalCacheStoreFactory","meldingenCacheStoreFactory","defaultGvkManagerFactory","gvkStateBridge","BarGvkManager","authServiceFactory","userProvider","idpAuthService","externalAuthService","idpHeaderAuthService","idpClientFactory","cfg","formatToken","hubClientFactory","logOffHandler","BarHubClient","addHandler","notificationManagerFactory","BarNotificationManager","BarConnectedModule","definePageNotFoundRoute","checkLocalhost","useFactory","BarSharedBootstrapper","forChild","createComparisonValidator","otherControl","comparison","control","otherValue","equal","larger","largerOrEqual","smaller","smallerOrEqual","createDateComparisonValidator","isEqual","isAfter","isBefore","createGenericValidator","errorKey","checkValid","createRequiredIfValidator","ifCondition","truthyCheckMode","checkTruthy","createGreaterThanControlValidator","createCompareControlValidator","createGreaterThanOrEqualControlValidator","createSmallerThanControlValidator","createSmallerThanOrEqualControlValidator","CommonModule","BarValidators","requiredIf","greaterThanControl","greaterThanOrEqualControl","smallerThanControl","smallerThanOrEqualControl","dateComparison","controlValueDefined","comparisonCondition"],"sourceRoot":""}