(self["webpackChunkportal"] = self["webpackChunkportal"] || []).push([["main"],{
/***/ 98255:
/*!*******************************************************!*\
!*** ./$_lazy_route_resources/ lazy namespace object ***!
\*******************************************************/
/***/ ((module) => {
function webpackEmptyAsyncContext(req) {
// Here Promise.resolve().then() is used instead of new Promise() to prevent
// uncaught exception popping up in devtools
return Promise.resolve().then(() => {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
});
}
webpackEmptyAsyncContext.keys = () => ([]);
webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
webpackEmptyAsyncContext.id = 98255;
module.exports = webpackEmptyAsyncContext;
/***/ }),
/***/ 90158:
/*!***************************************!*\
!*** ./src/app/app-routing.module.ts ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "AppRoutingModule": () => (/* binding */ AppRoutingModule)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var _core_guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/guards/authenticated.guard */ 48118);
/* harmony import */ var _core_guards_non_authenticated_guard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core/guards/non-authenticated.guard */ 71151);
const routes = [
// user must be authenticated to access any user route
{
path: 'user',
loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_authenticated_authenticated_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./authenticated/authenticated.module */ 59719)).then(m => m.AuthenticatedModule),
canLoad: [_core_guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_0__.AuthenticatedGuard]
},
// all other routes can only be accessed if user is not authenticated
{
path: '',
loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_non-authenticated_non-authenticated_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./non-authenticated/non-authenticated.module */ 18222)).then(m => m.NonAuthenticatedModule),
canLoad: [_core_guards_non_authenticated_guard__WEBPACK_IMPORTED_MODULE_1__.NonAuthenticatedGuard]
},
{
path: 'password-reset/:id',
loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_non-authenticated_non-authenticated_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./non-authenticated/non-authenticated.module */ 18222)).then(m => m.NonAuthenticatedModule),
//routing to correct screen
},
{
path: 'error-screen',
loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_core_components_error-screen_error-screen_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./core/components/error-screen/error-screen.module */ 37936)).then(m => m.ErrorScreenPageModule)
}
];
let AppRoutingModule = class AppRoutingModule {
};
AppRoutingModule = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.NgModule)({
imports: [
_angular_router__WEBPACK_IMPORTED_MODULE_4__.RouterModule.forRoot(routes, {
// This value is required for server-side rendering to work.
initialNavigation: 'enabled',
scrollPositionRestoration: 'enabled',
anchorScrolling: 'enabled'
})
],
exports: [_angular_router__WEBPACK_IMPORTED_MODULE_4__.RouterModule]
})
], AppRoutingModule);
/***/ }),
/***/ 55041:
/*!**********************************!*\
!*** ./src/app/app.component.ts ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "AppComponent": () => (/* binding */ AppComponent)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_app_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./app.component.html */ 75158);
/* harmony import */ var _app_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app.component.scss */ 53040);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @ngx-translate/core */ 70325);
/* harmony import */ var _core_services_history_helper_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core/services/history-helper.service */ 73327);
/* harmony import */ var _capacitor_splash_screen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @capacitor/splash-screen */ 79523);
/* harmony import */ var _capacitor_app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @capacitor/app */ 24371);
/* harmony import */ var _core_services_websocket_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./core/services/websocket.service */ 26239);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/environments/environment */ 92340);
/* harmony import */ var _ng_idle_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @ng-idle/core */ 32073);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @ionic/angular */ 81864);
/* harmony import */ var secure_storage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! secure-storage */ 94579);
let AppComponent = class AppComponent {
constructor(translate, historyHelper, zone, router, websocketService, idleService, platform) {
this.translate = translate;
this.historyHelper = historyHelper;
this.zone = zone;
this.router = router;
this.websocketService = websocketService;
this.idleService = idleService;
this.platform = platform;
/*
* The app component will be loaded after routing is completed. Therefore first the guards will be executed, before
* the app component itself gets loaded!
*/
// Number of seconds until the app times out. 10 mins
this.timeoutTimebox = 60 * 5;
this.idleTimebox = 60 * 5;
this.initializeApp().then();
}
initializeApp() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
// initialise the language
this.setLanguage();
// Hide the splash as soon as app is ready
yield _capacitor_splash_screen__WEBPACK_IMPORTED_MODULE_3__.SplashScreen.hide();
this.addSplashScreenListener();
this.addUniversalLinksListener();
this.setTimeoutListener();
});
}
addUniversalLinksListener() {
_capacitor_app__WEBPACK_IMPORTED_MODULE_4__.App.addListener('appUrlOpen', (event) => {
this.zone.run(() => {
const domain = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.endpoints.portalHost;
const pathArray = event.url.split(domain);
const appPath = pathArray.pop();
this.router.navigateByUrl(appPath, { replaceUrl: true });
});
});
}
addSplashScreenListener() {
// Show splash screen when app is not active - privacy reasons
_capacitor_app__WEBPACK_IMPORTED_MODULE_4__.App.addListener('appStateChange', ({ isActive }) => (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
if (isActive) {
// reopen websocket if needed
this.websocketService.openWebsocket();
yield _capacitor_splash_screen__WEBPACK_IMPORTED_MODULE_3__.SplashScreen.hide();
}
else {
// close websocket connection
this.websocketService.closeWebsocket();
yield _capacitor_splash_screen__WEBPACK_IMPORTED_MODULE_3__.SplashScreen.show({
autoHide: false
});
}
}));
}
setTimeoutListener() {
// sets an idle timeout of 5 seconds, for testing purposes.
this.idleService.setIdle(this.idleTimebox);
// sets a timeout period of 5 seconds. after 10 seconds of inactivity, the user will be considered timed out.
this.idleService.setTimeout(this.timeoutTimebox);
// sets the default interrupts, in this case, things like clicks, scrolls, touches to the document
this.idleService.setInterrupts(_ng_idle_core__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_INTERRUPTSOURCES);
this.idleService.onIdleStart.subscribe(() => {
console.log('idle start');
});
this.idleService.onTimeout.subscribe(() => {
this.logOut();
console.log('timeout');
});
this.idleService.watch();
}
logOut() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
if (this.platform.is('desktop') || this.platform.is('mobileweb') || this.platform.is('electron') || this.platform.is('mobileweb')) {
yield this.desktopLogout();
}
else {
this.mobileLogOut();
}
});
}
desktopLogout() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
});
}
mobileLogOut() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
yield secure_storage__WEBPACK_IMPORTED_MODULE_7__.SecureStorage.clearAllData();
console.log('cleared all data');
});
}
setLanguage() {
//this.translate.addLangs(['de']);
// this language will be used as a fallback when a translation isn't found in the current language
//this.translate.setDefaultLang('de');
// this is to determine the text direction depending on the selected language
// for the purpose of this example we determine that only arabic and hebrew are RTL.
// this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
// this.textDir = (event.lang === 'ar' || event.lang === 'iw') ? 'rtl' : 'ltr';
// });
}
};
AppComponent.ctorParameters = () => [
{ type: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_10__.TranslateService },
{ type: _core_services_history_helper_service__WEBPACK_IMPORTED_MODULE_2__.HistoryHelperService },
{ type: _angular_core__WEBPACK_IMPORTED_MODULE_11__.NgZone },
{ type: _angular_router__WEBPACK_IMPORTED_MODULE_12__.Router },
{ type: _core_services_websocket_service__WEBPACK_IMPORTED_MODULE_5__.WebsocketService },
{ type: _ng_idle_core__WEBPACK_IMPORTED_MODULE_9__.Idle },
{ type: _ionic_angular__WEBPACK_IMPORTED_MODULE_13__.Platform }
];
AppComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_11__.Component)({
selector: 'app-root',
template: _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_app_component_html__WEBPACK_IMPORTED_MODULE_0__.default,
styles: [_app_component_scss__WEBPACK_IMPORTED_MODULE_1__]
})
], AppComponent);
/***/ }),
/***/ 36747:
/*!*******************************!*\
!*** ./src/app/app.module.ts ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "authServiceFactory": () => (/* binding */ authServiceFactory),
/* harmony export */ "networkServiceFactory": () => (/* binding */ networkServiceFactory),
/* harmony export */ "realmServiceFactory": () => (/* binding */ realmServiceFactory),
/* harmony export */ "createTranslateLoader": () => (/* binding */ createTranslateLoader),
/* harmony export */ "AppModule": () => (/* binding */ AppModule)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/platform-browser */ 71570);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @ionic/angular */ 81864);
/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app.component */ 55041);
/* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app-routing.module */ 90158);
/* harmony import */ var _core_core_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core/core.module */ 40294);
/* harmony import */ var _shared_shared_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shared/shared.module */ 44466);
/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @angular/common/http */ 53882);
/* harmony import */ var _ngx_translate_http_loader__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ngx-translate/http-loader */ 49476);
/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @ngx-translate/core */ 70325);
/* harmony import */ var _angular_service_worker__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/service-worker */ 47334);
/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../environments/environment */ 92340);
/* harmony import */ var _core_services_auth_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./core/services/auth.service */ 90263);
/* harmony import */ var _core_services_network_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./core/services/network.service */ 5731);
/* harmony import */ var _core_services_realm_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./core/services/realm.service */ 86248);
/* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @angular/platform-browser/animations */ 20718);
/* harmony import */ var _ng_idle_core__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @ng-idle/core */ 32073);
// https://betterprogramming.pub/how-to-handle-async-providers-in-angular-51884647366
function authServiceFactory(authService) {
return () => authService.initialise();
}
function networkServiceFactory(networkService) {
return () => networkService.initialise();
}
function realmServiceFactory(realmService) {
return () => realmService.initialise();
}
function createTranslateLoader(http) {
return new _ngx_translate_http_loader__WEBPACK_IMPORTED_MODULE_8__.TranslateHttpLoader(http, './assets/i18n/', '.json');
}
let AppModule = class AppModule {
};
AppModule = (0,tslib__WEBPACK_IMPORTED_MODULE_9__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_10__.NgModule)({
declarations: [_app_component__WEBPACK_IMPORTED_MODULE_0__.AppComponent],
entryComponents: [],
imports: [
_angular_platform_browser__WEBPACK_IMPORTED_MODULE_11__.BrowserModule,
_ionic_angular__WEBPACK_IMPORTED_MODULE_12__.IonicModule.forRoot(),
_app_routing_module__WEBPACK_IMPORTED_MODULE_1__.AppRoutingModule,
_angular_common_http__WEBPACK_IMPORTED_MODULE_13__.HttpClientModule,
_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_14__.BrowserAnimationsModule,
_ng_idle_core__WEBPACK_IMPORTED_MODULE_15__.NgIdleModule.forRoot(),
_ngx_translate_core__WEBPACK_IMPORTED_MODULE_16__.TranslateModule.forRoot({
loader: {
provide: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_16__.TranslateLoader,
useFactory: (createTranslateLoader),
deps: [_angular_common_http__WEBPACK_IMPORTED_MODULE_13__.HttpClient]
}
}),
_core_core_module__WEBPACK_IMPORTED_MODULE_2__.CoreModule,
_shared_shared_module__WEBPACK_IMPORTED_MODULE_3__.SharedModule,
_angular_service_worker__WEBPACK_IMPORTED_MODULE_17__.ServiceWorkerModule.register('ngsw-worker.js', {
enabled: _environments_environment__WEBPACK_IMPORTED_MODULE_4__.environment.production,
// Register the ServiceWorker as soon as the app is stable
// or after 30 seconds (whichever comes first).
registrationStrategy: 'registerWhenStable:30000'
})
],
providers: [
{ provide: _angular_router__WEBPACK_IMPORTED_MODULE_18__.RouteReuseStrategy, useClass: _ionic_angular__WEBPACK_IMPORTED_MODULE_12__.IonicRouteStrategy },
{ provide: _angular_core__WEBPACK_IMPORTED_MODULE_10__.APP_INITIALIZER, multi: true, deps: [_core_services_auth_service__WEBPACK_IMPORTED_MODULE_5__.AuthService], useFactory: authServiceFactory },
{ provide: _angular_core__WEBPACK_IMPORTED_MODULE_10__.APP_INITIALIZER, multi: true, deps: [_core_services_network_service__WEBPACK_IMPORTED_MODULE_6__.NetworkService], useFactory: networkServiceFactory },
{ provide: _angular_core__WEBPACK_IMPORTED_MODULE_10__.APP_INITIALIZER, multi: true, deps: [_core_services_realm_service__WEBPACK_IMPORTED_MODULE_7__.RealmService], useFactory: realmServiceFactory }
],
bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_0__.AppComponent],
})
], AppModule);
/***/ }),
/***/ 20612:
/*!*********************************************************!*\
!*** ./src/app/core/classes/query-string-parameters.ts ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "QueryStringParameters": () => (/* binding */ QueryStringParameters)
/* harmony export */ });
class QueryStringParameters {
constructor() {
this.toString = () => this.paramsAndValues.join('&');
this.paramsAndValues = [];
}
push(key, value) {
value = encodeURIComponent(value.toString());
this.paramsAndValues.push([key, value].join('='));
}
}
/***/ }),
/***/ 88018:
/*!*********************************************!*\
!*** ./src/app/core/classes/url-builder.ts ***!
\*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "UrlBuilder": () => (/* binding */ UrlBuilder)
/* harmony export */ });
/* harmony import */ var _query_string_parameters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./query-string-parameters */ 20612);
// Application Classes
class UrlBuilder {
constructor(baseUrl, action, queryString) {
this.baseUrl = baseUrl;
this.action = action;
this.url = [baseUrl, action].join('/');
this.queryString = queryString || new _query_string_parameters__WEBPACK_IMPORTED_MODULE_0__.QueryStringParameters();
}
toString() {
const qs = this.queryString ?
this.queryString.toString() : '';
return qs ? `${this.url}?${qs}` : this.url;
}
}
/***/ }),
/***/ 79648:
/*!************************************************************************************!*\
!*** ./src/app/core/components/show-hide-password/show-hide-password.component.ts ***!
\************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ShowHidePasswordComponent": () => (/* binding */ ShowHidePasswordComponent)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_show_hide_password_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./show-hide-password.component.html */ 79157);
/* harmony import */ var _show_hide_password_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./show-hide-password.component.scss */ 29849);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ionic/angular */ 81864);
let ShowHidePasswordComponent = class ShowHidePasswordComponent {
constructor() {
this.showPassword = false;
}
toggleShow() {
this.showPassword = !this.showPassword;
this.input.type = this.showPassword ? 'text' : 'password';
}
};
ShowHidePasswordComponent.ctorParameters = () => [];
ShowHidePasswordComponent.propDecorators = {
input: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.ContentChild, args: [_ionic_angular__WEBPACK_IMPORTED_MODULE_3__.IonInput,] }]
};
ShowHidePasswordComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Component)({
selector: 'app-show-hide-password',
template: _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_show_hide_password_component_html__WEBPACK_IMPORTED_MODULE_0__.default,
styles: [_show_hide_password_component_scss__WEBPACK_IMPORTED_MODULE_1__]
})
], ShowHidePasswordComponent);
/***/ }),
/***/ 40294:
/*!*************************************!*\
!*** ./src/app/core/core.module.ts ***!
\*************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "CoreModule": () => (/* binding */ CoreModule)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/common */ 54364);
/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/forms */ 1707);
/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/common/http */ 53882);
/* harmony import */ var _components_show_hide_password_show_hide_password_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/show-hide-password/show-hide-password.component */ 79648);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ionic/angular */ 81864);
/* harmony import */ var _interceptors_new_token_interceptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interceptors/new-token.interceptor */ 14668);
/* harmony import */ var _interceptors_token_interceptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interceptors/token.interceptor */ 6747);
/* harmony import */ var _interceptors_reachability_interceptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interceptors/reachability.interceptor */ 46188);
let CoreModule = class CoreModule {
};
CoreModule = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.NgModule)({
declarations: [
_components_show_hide_password_show_hide_password_component__WEBPACK_IMPORTED_MODULE_0__.ShowHidePasswordComponent
],
imports: [
_angular_common__WEBPACK_IMPORTED_MODULE_6__.CommonModule,
_angular_forms__WEBPACK_IMPORTED_MODULE_7__.ReactiveFormsModule,
_ionic_angular__WEBPACK_IMPORTED_MODULE_8__.IonicModule
],
exports: [
_angular_forms__WEBPACK_IMPORTED_MODULE_7__.ReactiveFormsModule,
_components_show_hide_password_show_hide_password_component__WEBPACK_IMPORTED_MODULE_0__.ShowHidePasswordComponent,
_ionic_angular__WEBPACK_IMPORTED_MODULE_8__.IonicModule
],
providers: [
{
provide: Window,
useValue: window
},
{ provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_9__.HTTP_INTERCEPTORS, useClass: _interceptors_token_interceptor__WEBPACK_IMPORTED_MODULE_2__.TokenInterceptor, multi: true },
{ provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_9__.HTTP_INTERCEPTORS, useClass: _interceptors_new_token_interceptor__WEBPACK_IMPORTED_MODULE_1__.NewTokenInterceptor, multi: true },
{ provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_9__.HTTP_INTERCEPTORS, useClass: _interceptors_reachability_interceptor__WEBPACK_IMPORTED_MODULE_3__.ReachabilityInterceptor, multi: true }
]
})
], CoreModule);
/***/ }),
/***/ 48118:
/*!****************************************************!*\
!*** ./src/app/core/guards/authenticated.guard.ts ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "AuthenticatedGuard": () => (/* binding */ AuthenticatedGuard)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var _services_auth_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/auth.service */ 90263);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ 9170);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ 53466);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ 33927);
let AuthenticatedGuard = class AuthenticatedGuard {
constructor(authService, router) {
this.authService = authService;
this.router = router;
}
canLoad(route, segments) {
return this.authService.isAuthenticated.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(val => val !== null), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_2__.take)(1), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)(isAuthenticated => {
if (isAuthenticated) {
return true;
}
else {
this.router.navigate(['/']);
return false;
}
}));
}
};
AuthenticatedGuard.ctorParameters = () => [
{ type: _services_auth_service__WEBPACK_IMPORTED_MODULE_0__.AuthService },
{ type: _angular_router__WEBPACK_IMPORTED_MODULE_4__.Router }
];
AuthenticatedGuard = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_6__.Injectable)({
providedIn: 'root'
})
], AuthenticatedGuard);
/***/ }),
/***/ 71151:
/*!********************************************************!*\
!*** ./src/app/core/guards/non-authenticated.guard.ts ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "NonAuthenticatedGuard": () => (/* binding */ NonAuthenticatedGuard)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var _services_auth_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/auth.service */ 90263);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ 9170);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ 53466);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ 33927);
let NonAuthenticatedGuard = class NonAuthenticatedGuard {
constructor(authService, router) {
this.authService = authService;
this.router = router;
}
canLoad(route, segments) {
return this.authService.isAuthenticated.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.filter)(val => val !== null), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_2__.take)(1), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.map)(isAuthenticated => {
if (!isAuthenticated) {
return true;
}
else {
this.router.navigate(['/user/first-settings/biometrics']);
return false;
}
}));
}
};
NonAuthenticatedGuard.ctorParameters = () => [
{ type: _services_auth_service__WEBPACK_IMPORTED_MODULE_0__.AuthService },
{ type: _angular_router__WEBPACK_IMPORTED_MODULE_4__.Router }
];
NonAuthenticatedGuard = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_6__.Injectable)({
providedIn: 'root'
})
], NonAuthenticatedGuard);
/***/ }),
/***/ 14668:
/*!************************************************************!*\
!*** ./src/app/core/interceptors/new-token.interceptor.ts ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "NewTokenInterceptor": () => (/* binding */ NewTokenInterceptor)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common/http */ 53882);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ 33927);
/* harmony import */ var _services_auth_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/auth.service */ 90263);
let NewTokenInterceptor = class NewTokenInterceptor {
constructor(authService) {
this.authService = authService;
this.newAuthHeader = 'new-authorization';
}
intercept(req, next) {
return next.handle(req).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.map)((event) => {
if (event instanceof _angular_common_http__WEBPACK_IMPORTED_MODULE_2__.HttpResponse && event.status === 200) {
if (event.headers.has(this.newAuthHeader)) {
this.authService.setAccessToken(event.headers.get(this.newAuthHeader));
}
}
return event;
}));
}
};
NewTokenInterceptor.ctorParameters = () => [
{ type: _services_auth_service__WEBPACK_IMPORTED_MODULE_0__.AuthService }
];
NewTokenInterceptor = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable)()
], NewTokenInterceptor);
/***/ }),
/***/ 46188:
/*!***************************************************************!*\
!*** ./src/app/core/interceptors/reachability.interceptor.ts ***!
\***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ReachabilityInterceptor": () => (/* binding */ ReachabilityInterceptor)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common/http */ 53882);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _capacitor_network__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @capacitor/network */ 51573);
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 34361);
let ReachabilityInterceptor = class ReachabilityInterceptor {
intercept(req, next) {
return (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.from)(this.checkOffline(req, next));
}
checkOffline(req, next) {
return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function* () {
const status = yield _capacitor_network__WEBPACK_IMPORTED_MODULE_0__.Network.getStatus();
if (!status.connected) {
throw new _angular_common_http__WEBPACK_IMPORTED_MODULE_3__.HttpErrorResponse({
error: 'Timeout error',
status: -1001,
});
}
return next.handle(req).toPromise();
});
}
};
ReachabilityInterceptor = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable)()
], ReachabilityInterceptor);
/***/ }),
/***/ 6747:
/*!********************************************************!*\
!*** ./src/app/core/interceptors/token.interceptor.ts ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "TokenInterceptor": () => (/* binding */ TokenInterceptor)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! src/environments/environment */ 92340);
/* harmony import */ var _services_auth_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/auth.service */ 90263);
let TokenInterceptor = class TokenInterceptor {
constructor(authService) {
this.authService = authService;
}
intercept(req, next) {
const isApiUrl = (req.url.startsWith(src_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.endpoints.host)) || (req.url.startsWith(src_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.endpoints.newHost));
if (this.authService.isAuthenticated && isApiUrl) {
const request = req.clone({
setHeaders: { Authorization: `Bearer ${this.authService.getCredentials().accessToken}`,
'Refresh-Token': this.authService.getCredentials().refreshToken }
});
return next.handle(request);
}
}
};
TokenInterceptor.ctorParameters = () => [
{ type: _services_auth_service__WEBPACK_IMPORTED_MODULE_1__.AuthService }
];
TokenInterceptor = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Injectable)()
], TokenInterceptor);
/***/ }),
/***/ 54040:
/*!***************************************************************!*\
!*** ./src/app/core/services/api-endpoint-builder.service.ts ***!
\***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ApiEndpointBuilderService": () => (/* binding */ ApiEndpointBuilderService)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _classes_url_builder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../classes/url-builder */ 88018);
let ApiEndpointBuilderService = class ApiEndpointBuilderService {
constructor() { }
// URL
createUrl(host, path) {
const urlBuilder = new _classes_url_builder__WEBPACK_IMPORTED_MODULE_0__.UrlBuilder(host, path);
return urlBuilder.toString();
}
// URL WITH QUERY PARAMS
createUrlWithQueryParameters(host, path, queryStringHandler) {
const urlBuilder = new _classes_url_builder__WEBPACK_IMPORTED_MODULE_0__.UrlBuilder(host, path);
// Push extra query string params
if (queryStringHandler) {
queryStringHandler(urlBuilder.queryString);
}
return urlBuilder.toString();
}
// URL WITH PATH VARIABLES
createUrlWithPathVariables(host, path, pathVariables = []) {
let encodedPathVariablesUrl = '';
// Push extra path variables
for (const pathVariable of pathVariables) {
if (pathVariable !== null) {
encodedPathVariablesUrl +=
`/${encodeURIComponent(pathVariable.toString())}`;
}
}
const urlBuilder = new _classes_url_builder__WEBPACK_IMPORTED_MODULE_0__.UrlBuilder(host, `${path}${encodedPathVariablesUrl}`);
return urlBuilder.toString();
}
};
ApiEndpointBuilderService.ctorParameters = () => [];
ApiEndpointBuilderService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({
providedIn: 'root'
})
], ApiEndpointBuilderService);
/***/ }),
/***/ 84963:
/*!***************************************************!*\
!*** ./src/app/core/services/api-http.service.ts ***!
\***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ApiHttpService": () => (/* binding */ ApiHttpService)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/common/http */ 53882);
let ApiHttpService = class ApiHttpService {
constructor(
// Angular Modules
http) {
this.http = http;
}
get(url, options) {
return this.http.get(url, options);
}
post(url, data, options) {
return this.http.post(url, data, options);
}
put(url, data, options) {
return this.http.put(url, data, options);
}
delete(url, options) {
return this.http.delete(url, options);
}
patch(url, data, options) {
return this.http.patch(url, data, options);
}
};
ApiHttpService.ctorParameters = () => [
{ type: _angular_common_http__WEBPACK_IMPORTED_MODULE_0__.HttpClient }
];
ApiHttpService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({
providedIn: 'root'
})
], ApiHttpService);
/***/ }),
/***/ 90263:
/*!***********************************************!*\
!*** ./src/app/core/services/auth.service.ts ***!
\***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Credentials": () => (/* binding */ Credentials),
/* harmony export */ "AuthService": () => (/* binding */ AuthService)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../environments/environment */ 92340);
/* harmony import */ var secure_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! secure-storage */ 94579);
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs */ 76491);
/* harmony import */ var _auth0_angular_jwt__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @auth0/angular-jwt */ 21055);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var _capacitor_storage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @capacitor/storage */ 89245);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @ionic/angular */ 81864);
/* harmony import */ var realm_db__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! realm-db */ 16099);
/* harmony import */ var _api_endpoint_builder_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./api-endpoint-builder.service */ 54040);
/* harmony import */ var _api_http_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./api-http.service */ 84963);
const helper = new _auth0_angular_jwt__WEBPACK_IMPORTED_MODULE_6__.JwtHelperService();
class Credentials {
}
let AuthService = class AuthService {
constructor(router, plt, endpointBuilder, apiService, window) {
this.router = router;
this.plt = plt;
this.endpointBuilder = endpointBuilder;
this.apiService = apiService;
this.window = window;
// Implementation according following tutorial: https://www.youtube.com/watch?v=ig24euSxR7Q
this.isAuthenticated = new rxjs__WEBPACK_IMPORTED_MODULE_7__.BehaviorSubject(null);
// user identification
this.userId = '';
// biometric authentication allowed
this.biometricAuth = false;
// JWT token set
this.accessToken = '';
this.refreshToken = '';
}
/*
* Stores the access and the refresh token in the secure storage (iOS: keychain)
*/
storeTokens(accessToken, refreshToken) {
var _a;
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
// retrieve user id from access token
const userId = (_a = helper.decodeToken(accessToken)) === null || _a === void 0 ? void 0 : _a.sub;
// check if local user id matches the one from the access token - if not, potential attack detected
if (this.userId !== '' && this.userId !== userId) {
yield this.logout();
return Promise.resolve();
}
else {
// write user id to non-secure storage
yield _capacitor_storage__WEBPACK_IMPORTED_MODULE_2__.Storage.set({ key: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.nonSecure.attributes.userId, value: userId });
}
// only write to keychain when biometric auth is enabled
if (this.biometricAuth) {
console.log('Add update access token ' + accessToken);
// write access token to secure storage
const rspAccessToken = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.addOrUpdateToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken, account: userId, value: accessToken });
console.log('Add update refresh token ' + refreshToken);
// write refresh token to secure storage (biometric authentication enabled for refresh token)
const rspRefreshToken = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.addOrUpdateToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken, account: userId, value: refreshToken });
if (rspAccessToken.status !== 0 || rspRefreshToken.status !== 0) {
/*
* TO DO: @Markus
*
* Write error code to analytics suite, but do not stop processing as user can also use the app without storing
* tokens in secure storage. In that case the user can normally use the app as long as no inactivity is detected
* and no closing of the app happens as the tokens will remain in memory in that case
*/
}
}
// set local variables for access- and refresh token
this.accessToken = accessToken;
this.refreshToken = refreshToken;
// set local variable for the user id
this.userId = userId;
// finally check if user is authenticated or not
if (this.accessToken && this.refreshToken) {
this.isAuthenticated.next(true);
}
else {
this.isAuthenticated.next(false);
}
return Promise.resolve();
});
}
/*
* Store either an access- or a refresh token in secure storage (iOS: Keychain)
*/
storeToken(type, token) {
var _a;
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
if (type === _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken) {
// extract user id from jwt token
const tmpUserId = (_a = helper.decodeToken(token)) === null || _a === void 0 ? void 0 : _a.sub;
// verify if extracted user id matches the already set one - if not, potential attack detected. In that case
// log the user out and clear all credentials
if (tmpUserId !== this.userId && this.userId !== '') {
yield this.logout();
// return in case attack detected
return Promise.resolve({ status: 0 });
}
}
// only write to keychain when biometric auth is enabled
if (this.biometricAuth) {
yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.addOrUpdateToken({ type, account: this.userId, value: token });
}
if (type === _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken) {
this.accessToken = token;
}
else if (type === _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken) {
this.refreshToken = token;
}
return Promise.resolve({ status: 0 });
});
}
/*
* Retrieve an token (either access- or refresh token) from secure storage
*/
getToken(type) {
var _a;
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
// check if user id is set
if (!this.userId) {
throw new Error('User ID not yet set');
}
// check if biometric auth is set
if (!this.biometricAuth) {
throw new Error('Biometric authentication not enabled');
}
switch (type) {
case _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken:
// check if in-memory access token or access token from secure storage should be returned
if (this.accessToken) {
return Promise.resolve({ status: 0, token: this.accessToken });
}
else {
const rsp = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.readToken({ type, account: this.userId });
// extract user id from jwt token
const tmpUserId = (_a = helper.decodeToken(rsp === null || rsp === void 0 ? void 0 : rsp.token)) === null || _a === void 0 ? void 0 : _a.sub;
// verify if extracted user id matches the already set one - if not, potential attack detected. In that case
// log the user out and clear all credentials
if (tmpUserId !== this.userId && this.userId !== '') {
yield this.logout();
// return empty token in case potential attack detected
return Promise.resolve({ status: 0, token: '' });
}
else {
return rsp;
}
}
break;
case _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken:
// check if in-memory refresh token or refresh token from secure storage should be returned
if (this.refreshToken) {
return Promise.resolve({ status: 0, token: this.refreshToken });
}
else {
return yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.readToken({ type, account: this.userId });
}
break;
default:
// return empty token in case no access- nor refresh token should be returned
return Promise.resolve({ status: 0, token: '' });
}
});
}
/*
*
*/
setBiometricAuth(status) {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
// write biometric auth allowed flag to memory
if (status) {
this.biometricAuth = true;
}
else {
this.biometricAuth = false;
}
// write biometric auth allowed flag to non-secure storage
yield _capacitor_storage__WEBPACK_IMPORTED_MODULE_2__.Storage.set({ key: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.nonSecure.attributes.biometricSet, value: this.biometricAuth ? 'true' : 'false' });
// if enabled, write tokens to secure storage
if (status && this.userId && this.accessToken && this.refreshToken) {
// write access token to secure storage
const rspAccessToken = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.addOrUpdateToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken, account: this.userId, value: this.accessToken });
// write refresh token to secure storage (biometric authentication enabled for refresh token)
const rspRefreshToken = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.addOrUpdateToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken, account: this.userId, value: this.refreshToken });
// read access token so that face id is triggered
yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.readToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken, account: this.userId });
}
return Promise.resolve();
});
}
/*
* Performs logout of the app and deletes / resets credentials from secure storage (iOS: keychain) and memory
*/
logout() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
//perform log out call
yield this.logOutCall();
// delete the tokens from the secure storage
yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.deleteToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken, account: this.userId });
yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.deleteToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken, account: this.userId });
// delete the user id from the non-secure storage
yield _capacitor_storage__WEBPACK_IMPORTED_MODULE_2__.Storage.remove({ key: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.nonSecure.attributes.userId });
// delete the tokens from the memory
this.accessToken = '';
this.refreshToken = '';
// delete the user id from the memory
this.userId = '';
// clear data from the realm instance
yield realm_db__WEBPACK_IMPORTED_MODULE_3__.RealmDB.deleteAllObjects();
// set to not authenticated
this.isAuthenticated.next(false);
// route to non-authenticated area and replace the url so that back navigation is disabled in browser
yield this.router.navigate(['/login'], { replaceUrl: true });
});
}
/*
* On app start perform two actions:
* - Load the user id from the non-secure storage (iOS: UserDefaults, Android: SharedPreferences, PWA: Local Storage)
* - Load the access- and the refresh token from the secure storage (iOS: keychain)
*/
initialise() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
console.log('Initialise Auth Service');
// wait for platform readiness
yield this.plt.ready();
console.log('Initialise Auth Service 1');
// retrieve the user id from the non-secure storage
const respUserId = yield _capacitor_storage__WEBPACK_IMPORTED_MODULE_2__.Storage.get({ key: 'USER_ID' });
this.userId = respUserId.value !== null ? respUserId.value : '';
console.log('Test 1' + respUserId.value);
// retrieve the allowed biometric authentication from non-secure storage
const respBiometricAuth = yield _capacitor_storage__WEBPACK_IMPORTED_MODULE_2__.Storage.get({ key: 'BIOMETRIC_AUTH_ALLOWED' });
this.biometricAuth = respBiometricAuth.value === 'true' ? true : false;
console.log('Load User ID: ' + this.userId);
// check if user id is set - if not return directly
if (this.userId !== '' && this.biometricAuth) {
// retrieve the access token
const accessTokenRsp = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.readToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken, account: this.userId });
if (accessTokenRsp && accessTokenRsp.token) {
this.accessToken = accessTokenRsp.token;
}
console.log('Load User ID: ' + this.userId);
console.log('Load access token [Status]: ' + accessTokenRsp.status);
console.log('Load refresh token Before Call [Type]: ' + _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken);
console.log('Load refresh token Before Call [Account]: ' + this.userId);
// retrieve the refresh token (secured via biometric authentication)
// eslint-disable-next-line max-len
const refreshTokenRsp = yield secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.readToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.refreshToken, account: this.userId });
if (refreshTokenRsp && refreshTokenRsp.token) {
this.refreshToken = refreshTokenRsp.token;
}
console.log('Load refresh token [Status]: ' + refreshTokenRsp.status);
if (this.accessToken && this.refreshToken) {
console.log(this.getCredentials());
this.isAuthenticated.next(true);
}
else {
console.log(this.getCredentials());
this.isAuthenticated.next(true);
}
}
else {
console.log(this.getCredentials());
console.log('test');
this.isAuthenticated.next(false);
}
console.log('Started Auth Service');
// return empty promise
return Promise.resolve();
});
}
setAuthenticated() {
this.isAuthenticated.next(true);
}
getUserId() {
return this.userId;
}
setAccessToken(accessToken) {
this.accessToken = accessToken;
secure_storage__WEBPACK_IMPORTED_MODULE_1__.SecureStorage.addOrUpdateToken({ type: _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.storage.secure.attributes.accessToken,
account: this.userId,
value: accessToken });
}
getCredentials() {
const credentials = new Credentials();
credentials.userID = this.userId;
credentials.accessToken = this.accessToken;
credentials.refreshToken = this.refreshToken;
credentials.biometricAuth = this.biometricAuth;
credentials.authenticated = this.isAuthenticated.value;
console.log(credentials);
return credentials;
}
logOutCall() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__awaiter)(this, void 0, void 0, function* () {
const endpoint = this.endpointBuilder.createUrl(_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.endpoints.newHost, _environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.endpoints.account.access.path);
return this.apiService.post(endpoint, JSON.stringify(''));
});
}
};
AuthService.ctorParameters = () => [
{ type: _angular_router__WEBPACK_IMPORTED_MODULE_9__.Router },
{ type: _ionic_angular__WEBPACK_IMPORTED_MODULE_10__.Platform },
{ type: _api_endpoint_builder_service__WEBPACK_IMPORTED_MODULE_4__.ApiEndpointBuilderService },
{ type: _api_http_service__WEBPACK_IMPORTED_MODULE_5__.ApiHttpService },
{ type: Window }
];
AuthService = (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_11__.Injectable)({
providedIn: 'root'
})
], AuthService);
/***/ }),
/***/ 73327:
/*!*********************************************************!*\
!*** ./src/app/core/services/history-helper.service.ts ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "HistoryHelperService": () => (/* binding */ HistoryHelperService)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/router */ 71258);
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs/operators */ 9170);
let HistoryHelperService = class HistoryHelperService {
constructor(router) {
this.router = router;
this.router.events
.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_0__.filter)(event => event instanceof _angular_router__WEBPACK_IMPORTED_MODULE_1__.NavigationEnd))
.subscribe(({ urlAfterRedirects }) => {
// console.log('previous URL', this.previousUrl);
this.previousUrl = urlAfterRedirects;
// console.log('NEW previous URL', this.previousUrl);
});
}
};
HistoryHelperService.ctorParameters = () => [
{ type: _angular_router__WEBPACK_IMPORTED_MODULE_1__.Router }
];
HistoryHelperService = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Injectable)({
providedIn: 'root'
})
], HistoryHelperService);
/***/ }),
/***/ 5731:
/*!**************************************************!*\
!*** ./src/app/core/services/network.service.ts ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "NetworkService": () => (/* binding */ NetworkService)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 76491);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ionic/angular */ 81864);
/* harmony import */ var _capacitor_network__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @capacitor/network */ 51573);
let NetworkService = class NetworkService {
constructor(plt) {
this.plt = plt;
this.connection = new rxjs__WEBPACK_IMPORTED_MODULE_1__.BehaviorSubject(null);
}
initialise() {
return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function* () {
yield this.plt.ready();
_capacitor_network__WEBPACK_IMPORTED_MODULE_0__.Network.addListener('networkStatusChange', networkStatus => {
this.connection.next(networkStatus.connected);
this.isConnected = networkStatus.connected;
});
const status = yield _capacitor_network__WEBPACK_IMPORTED_MODULE_0__.Network.getStatus();
this.connection.next(status.connected);
this.isConnected = status.connected;
console.log('Network1: ' + this.isConnected);
console.log('Started Network');
return Promise.resolve();
});
}
connectionAvailable() {
return this.isConnected;
}
};
NetworkService.ctorParameters = () => [
{ type: _ionic_angular__WEBPACK_IMPORTED_MODULE_3__.Platform }
];
NetworkService = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable)({
providedIn: 'root'
})
], NetworkService);
/***/ }),
/***/ 86248:
/*!************************************************!*\
!*** ./src/app/core/services/realm.service.ts ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "RealmService": () => (/* binding */ RealmService)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _auth_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./auth.service */ 90263);
/* harmony import */ var realm_db__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! realm-db */ 16099);
let RealmService = class RealmService {
constructor(authService) {
this.authService = authService;
}
initialise() {
// listen for successful authentication - unlock REALM DB in that case
this.authService.isAuthenticated.subscribe((value) => (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function* () {
if (value === true) {
//console.log('Realm Init: ' + this.authService.getUserId());
yield realm_db__WEBPACK_IMPORTED_MODULE_1__.RealmDB.createOrUnlockDB({ userId: this.authService.getUserId() });
}
}));
}
};
RealmService.ctorParameters = () => [
{ type: _auth_service__WEBPACK_IMPORTED_MODULE_0__.AuthService }
];
RealmService = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Injectable)({
providedIn: 'root'
})
], RealmService);
/***/ }),
/***/ 26239:
/*!****************************************************!*\
!*** ./src/app/core/services/websocket.service.ts ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "WebsocketService": () => (/* binding */ WebsocketService),
/* harmony export */ "WebsocketEvents": () => (/* binding */ WebsocketEvents)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ 76491);
/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! src/environments/environment */ 92340);
/* harmony import */ var _auth_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./auth.service */ 90263);
let WebsocketService = class WebsocketService {
constructor(authService) {
this.authService = authService;
// Exposed properties
this.websocketEventEmitter = new rxjs__WEBPACK_IMPORTED_MODULE_2__.BehaviorSubject(undefined);
// Private properties
this.webSocket = new WebSocket(src_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.endpoints.websocketEndpoint.path);
this.hasRefreshedToken = false;
// TODO: - Add listener for network connection
// listen to auth service to know when the log in is successful
this.subscribeToAuthService();
}
/// creates a new websocket if none exists
openWebsocket() {
if (this.webSocket.readyState === WebSocket.CLOSED) {
this.webSocket = new WebSocket(src_environments_environment__WEBPACK_IMPORTED_MODULE_0__.environment.endpoints.websocketEndpoint.path);
this.addWebsocketListeners();
}
}
/// close a websocket if one exists
closeWebsocket() {
console.log('Close websocket' + this.webSocket.readyState);
if (this.webSocket.readyState === WebSocket.OPEN) {
this.webSocket.close();
}
}
send(message) {
this.webSocket.send(message);
}
/// Subscribes to the AuthService to know when the access token is available
/// to be able to establish the websocket connection
subscribeToAuthService() {
this.authService.isAuthenticated.subscribe(isAuthenticated => {
if (isAuthenticated) {
this.addWebsocketListeners();
}
});
}
/// Add handling for the websocket events and pass them to the event emitter
addWebsocketListeners() {
this.webSocket.onopen = (event) => {
// send the access token once connection is established
const accessToken = this.authService.getCredentials().accessToken;
this.webSocket.send('Bearer: ' + accessToken);
this.websocketEventEmitter.next({ event: WebsocketEvents.open, message: undefined });
};
this.webSocket.onclose = (closeEvent) => {
this.websocketEventEmitter.next({ event: WebsocketEvents.close, message: undefined });
};
this.webSocket.onerror = (errorEv) => {
this.websocketEventEmitter.next({ event: WebsocketEvents.error, message: undefined });
console.log(errorEv);
};
this.webSocket.onmessage = (message) => {
console.log(message.data);
const jsonObj = JSON.parse(message.data);
// handle token invalid error
if (this.isError(jsonObj)) {
console.log('Received error');
this.handleError(jsonObj);
}
else {
const messageString = jsonObj.message;
this.websocketEventEmitter.next({ event: WebsocketEvents.message, message: messageString });
}
};
}
;
isError(json) {
return json.error !== undefined;
}
handleError(object) {
if (object.error === Errors.invalidToken) {
console.log('should refresh token');
if (this.hasRefreshedToken) {
this.webSocket.close();
}
else {
// refresh token and send the new one
this.hasRefreshedToken = true;
}
}
}
};
WebsocketService.ctorParameters = () => [
{ type: _auth_service__WEBPACK_IMPORTED_MODULE_1__.AuthService }
];
WebsocketService = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable)({
providedIn: 'root'
})
], WebsocketService);
var WebsocketEvents;
(function (WebsocketEvents) {
WebsocketEvents[WebsocketEvents["open"] = 0] = "open";
WebsocketEvents[WebsocketEvents["close"] = 1] = "close";
WebsocketEvents[WebsocketEvents["message"] = 2] = "message";
WebsocketEvents[WebsocketEvents["error"] = 3] = "error";
})(WebsocketEvents || (WebsocketEvents = {}));
var Errors;
(function (Errors) {
Errors["invalidToken"] = "TOKEN_INVALID";
})(Errors || (Errors = {}));
/***/ }),
/***/ 46870:
/*!****************************************************************************!*\
!*** ./src/app/shared/components/privacy-modal/privacy-modal.component.ts ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "PrivacyModalComponent": () => (/* binding */ PrivacyModalComponent)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_privacy_modal_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./privacy-modal.component.html */ 44901);
/* harmony import */ var _privacy_modal_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./privacy-modal.component.scss */ 97246);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ionic/angular */ 81864);
let PrivacyModalComponent = class PrivacyModalComponent {
constructor(modalController) {
this.modalController = modalController;
}
ngOnInit() { }
closeModal() {
this.modalController.dismiss({
'dismissed': true
});
}
};
PrivacyModalComponent.ctorParameters = () => [
{ type: _ionic_angular__WEBPACK_IMPORTED_MODULE_2__.ModalController }
];
PrivacyModalComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({
selector: 'app-privacy-modal',
template: _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_privacy_modal_component_html__WEBPACK_IMPORTED_MODULE_0__.default,
styles: [_privacy_modal_component_scss__WEBPACK_IMPORTED_MODULE_1__]
})
], PrivacyModalComponent);
/***/ }),
/***/ 88632:
/*!**************************************************************************!*\
!*** ./src/app/shared/components/progress-bar/progress-bar.component.ts ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ProgressBarComponent": () => (/* binding */ ProgressBarComponent)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_progress_bar_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./progress-bar.component.html */ 92042);
/* harmony import */ var _progress_bar_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./progress-bar.component.scss */ 15578);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_animations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/animations */ 97175);
const animationDuration = '1s';
let ProgressBarComponent = class ProgressBarComponent {
constructor() {
this.showContent = new _angular_core__WEBPACK_IMPORTED_MODULE_2__.EventEmitter();
this.stateVar = 'notFilled';
this.hidden = true;
}
ngOnInit() {
this.stateVar = 'filled';
setTimeout(() => {
this.showContent.emit(true);
}, 1000);
}
createRange(count) {
return new Array(count);
}
};
ProgressBarComponent.ctorParameters = () => [];
ProgressBarComponent.propDecorators = {
backgroundColor: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input }],
color: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input }],
numSections: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input }],
activeSection: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input }],
showContent: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Output }]
};
ProgressBarComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Component)({
selector: 'app-progress-bar',
template: _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_progress_bar_component_html__WEBPACK_IMPORTED_MODULE_0__.default,
animations: [
(0,_angular_animations__WEBPACK_IMPORTED_MODULE_4__.trigger)('onLoad', [
(0,_angular_animations__WEBPACK_IMPORTED_MODULE_4__.state)('filled', (0,_angular_animations__WEBPACK_IMPORTED_MODULE_4__.style)({
opacity: 1,
backgroundColor: '#0f41f0'
})),
(0,_angular_animations__WEBPACK_IMPORTED_MODULE_4__.transition)('* => filled', [
(0,_angular_animations__WEBPACK_IMPORTED_MODULE_4__.animate)(animationDuration)
]),
])
],
styles: [_progress_bar_component_scss__WEBPACK_IMPORTED_MODULE_1__]
})
], ProgressBarComponent);
/***/ }),
/***/ 67391:
/*!************************************************************************!*\
!*** ./src/app/shared/components/terms-modal/terms-modal.component.ts ***!
\************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "TermsModalComponent": () => (/* binding */ TermsModalComponent)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_terms_modal_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./terms-modal.component.html */ 94762);
/* harmony import */ var _terms_modal_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./terms-modal.component.scss */ 12778);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ionic/angular */ 81864);
let TermsModalComponent = class TermsModalComponent {
constructor(modalController) {
this.modalController = modalController;
}
ngOnInit() { }
closeModal() {
this.modalController.dismiss({
'dismissed': true
});
}
};
TermsModalComponent.ctorParameters = () => [
{ type: _ionic_angular__WEBPACK_IMPORTED_MODULE_2__.ModalController }
];
TermsModalComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({
selector: 'app-terms-modal',
template: _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_terms_modal_component_html__WEBPACK_IMPORTED_MODULE_0__.default,
styles: [_terms_modal_component_scss__WEBPACK_IMPORTED_MODULE_1__]
})
], TermsModalComponent);
/***/ }),
/***/ 34342:
/*!******************************************************************************!*\
!*** ./src/app/shared/components/uc-header-blue/uc-header-blue.component.ts ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "UcHeaderBlueComponent": () => (/* binding */ UcHeaderBlueComponent)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_uc_header_blue_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./uc-header-blue.component.html */ 9406);
/* harmony import */ var _uc_header_blue_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uc-header-blue.component.scss */ 47740);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ 71258);
let UcHeaderBlueComponent = class UcHeaderBlueComponent {
constructor(router) {
this.router = router;
this.headline = 'Unknown';
}
ngOnInit() { }
goToProfile() {
this.router.navigate(['/user/profile']);
}
};
UcHeaderBlueComponent.ctorParameters = () => [
{ type: _angular_router__WEBPACK_IMPORTED_MODULE_2__.Router }
];
UcHeaderBlueComponent.propDecorators = {
headline: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input }]
};
UcHeaderBlueComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Component)({
selector: 'uc-header-blue',
template: _C_Users_manue_ucura_code_smart_care_assistant_web_apps_portal_node_modules_ngtools_webpack_src_loaders_direct_resource_js_uc_header_blue_component_html__WEBPACK_IMPORTED_MODULE_0__.default,
styles: [_uc_header_blue_component_scss__WEBPACK_IMPORTED_MODULE_1__]
})
], UcHeaderBlueComponent);
/***/ }),
/***/ 44466:
/*!*****************************************!*\
!*** ./src/app/shared/shared.module.ts ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "SharedModule": () => (/* binding */ SharedModule)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 3786);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/common */ 54364);
/* harmony import */ var _components_privacy_modal_privacy_modal_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/privacy-modal/privacy-modal.component */ 46870);
/* harmony import */ var _components_terms_modal_terms_modal_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/terms-modal/terms-modal.component */ 67391);
/* harmony import */ var _components_uc_header_blue_uc_header_blue_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/uc-header-blue/uc-header-blue.component */ 34342);
/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @ionic/angular */ 81864);
/* harmony import */ var _components_progress_bar_progress_bar_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/progress-bar/progress-bar.component */ 88632);
let SharedModule = class SharedModule {
};
SharedModule = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([
(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.NgModule)({
declarations: [_components_privacy_modal_privacy_modal_component__WEBPACK_IMPORTED_MODULE_0__.PrivacyModalComponent, _components_terms_modal_terms_modal_component__WEBPACK_IMPORTED_MODULE_1__.TermsModalComponent, _components_uc_header_blue_uc_header_blue_component__WEBPACK_IMPORTED_MODULE_2__.UcHeaderBlueComponent, _components_progress_bar_progress_bar_component__WEBPACK_IMPORTED_MODULE_3__.ProgressBarComponent],
exports: [
_components_uc_header_blue_uc_header_blue_component__WEBPACK_IMPORTED_MODULE_2__.UcHeaderBlueComponent,
_components_progress_bar_progress_bar_component__WEBPACK_IMPORTED_MODULE_3__.ProgressBarComponent
],
imports: [
_angular_common__WEBPACK_IMPORTED_MODULE_6__.CommonModule,
_ionic_angular__WEBPACK_IMPORTED_MODULE_7__.IonicModule
]
})
], SharedModule);
/***/ }),
/***/ 92340:
/*!*****************************************!*\
!*** ./src/environments/environment.ts ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "environment": () => (/* binding */ environment)
/* harmony export */ });
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
const environment = {
production: false,
storage: {
// key-value pair storages (iOS: UserDefaults, Android: SharedPreferences, PWA: Local Storage)
nonSecure: {
attributes: {
agbAccepted: 'AGB_ACCEPTED',
userId: 'USER_ID',
biometricSet: 'BIOMETRIC_AUTH_ALLOWED',
pushNotificationsSet: 'PUSH_NOTIFICATIONS_ALLOWED',
privacyStatementAccepted: 'PRIVACY_STATEMENT_ACCEPTED',
}
},
// key-value pair storages (iOS: keychain, Android: Encrypted Shared Preferences, PWA: Local Storage)
secure: {
attributes: {
accessToken: 'ACCESS_TOKEN',
refreshToken: 'REFRESH_TOKEN'
}
}
},
endpoints: {
host: 'https://dev.api.smart-care-assistant.ucura.com',
newHost: 'https://new.dev.api.smart-care-assistant.ucura.com',
portalHost: 'https://dev.portal-v2.deinepflege.de',
account: {
loginEndpoint: {
path: 'api/v1/login',
},
registrationEndpoint: {
path: 'api/v1/account'
},
passwordResetEndpoint: {
path: 'api/v1/account/forgot-password',
},
access: {
path: 'api/v1/account/access-check',
},
passwordEndpoint: {
path: 'api/v1/account/password',
},
logout: {
path: 'api/v1/logout',
}
},
onboardingEndpoint: {
path: 'api/v1/onboarding',
mocked: true
},
onboardingRealEndpoint: {
path: 'api/v1/onboardings'
},
websocketEndpoint: {
path: 'wss://new.dev.api.smart-care-assistant.ucura.com/api/v1/ws'
}
}
};
/*
* For easier debugging in development mode, you can import the following file
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
*
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
// import 'zone.js/dist/zone-error'; // Included with Angular CLI.
/***/ }),
/***/ 14431:
/*!*********************!*\
!*** ./src/main.ts ***!
\*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 2316);
/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ 61882);
/* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/app.module */ 36747);
/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environments/environment */ 92340);
if (_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.production) {
(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.enableProdMode)();
}
(0,_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__.platformBrowserDynamic)().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_0__.AppModule)
.catch(err => console.log(err));
/***/ }),
/***/ 50863:
/*!******************************************************************************************************************************************!*\
!*** ./node_modules/@ionic/core/dist/esm/ lazy ^\.\/.*\.entry\.js$ include: \.entry\.js$ exclude: \.system\.entry\.js$ namespace object ***!
\******************************************************************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var map = {
"./ion-accordion_2.entry.js": [
83750,
"common",
"node_modules_ionic_core_dist_esm_ion-accordion_2_entry_js"
],
"./ion-action-sheet.entry.js": [
90733,
"node_modules_ionic_core_dist_esm_ion-action-sheet_entry_js"
],
"./ion-alert.entry.js": [
20985,
"node_modules_ionic_core_dist_esm_ion-alert_entry_js"
],
"./ion-app_8.entry.js": [
93899,
"node_modules_ionic_core_dist_esm_ion-app_8_entry_js"
],
"./ion-avatar_3.entry.js": [
5121,
"node_modules_ionic_core_dist_esm_ion-avatar_3_entry_js"
],
"./ion-back-button.entry.js": [
52960,
"common",
"node_modules_ionic_core_dist_esm_ion-back-button_entry_js"
],
"./ion-backdrop.entry.js": [
45473,
"node_modules_ionic_core_dist_esm_ion-backdrop_entry_js"
],
"./ion-breadcrumb_2.entry.js": [
57951,
"common",
"node_modules_ionic_core_dist_esm_ion-breadcrumb_2_entry_js"
],
"./ion-button_2.entry.js": [
19787,
"node_modules_ionic_core_dist_esm_ion-button_2_entry_js"
],
"./ion-card_5.entry.js": [
66165,
"node_modules_ionic_core_dist_esm_ion-card_5_entry_js"
],
"./ion-checkbox.entry.js": [
69569,
"node_modules_ionic_core_dist_esm_ion-checkbox_entry_js"
],
"./ion-chip.entry.js": [
35119,
"node_modules_ionic_core_dist_esm_ion-chip_entry_js"
],
"./ion-col_3.entry.js": [
90799,
"node_modules_ionic_core_dist_esm_ion-col_3_entry_js"
],
"./ion-datetime_3.entry.js": [
68918,
"common",
"node_modules_ionic_core_dist_esm_ion-datetime_3_entry_js"
],
"./ion-fab_3.entry.js": [
94028,
"common",
"node_modules_ionic_core_dist_esm_ion-fab_3_entry_js"
],
"./ion-img.entry.js": [
98107,
"node_modules_ionic_core_dist_esm_ion-img_entry_js"
],
"./ion-infinite-scroll_2.entry.js": [
72178,
"node_modules_ionic_core_dist_esm_ion-infinite-scroll_2_entry_js"
],
"./ion-input.entry.js": [
20123,
"node_modules_ionic_core_dist_esm_ion-input_entry_js"
],
"./ion-item-option_3.entry.js": [
18706,
"node_modules_ionic_core_dist_esm_ion-item-option_3_entry_js"
],
"./ion-item_8.entry.js": [
12099,
"common",
"node_modules_ionic_core_dist_esm_ion-item_8_entry_js"
],
"./ion-loading.entry.js": [
84868,
"node_modules_ionic_core_dist_esm_ion-loading_entry_js"
],
"./ion-menu_3.entry.js": [
54377,
"common",
"node_modules_ionic_core_dist_esm_ion-menu_3_entry_js"
],
"./ion-modal.entry.js": [
15678,
"node_modules_ionic_core_dist_esm_ion-modal_entry_js"
],
"./ion-nav_2.entry.js": [
16735,
"node_modules_ionic_core_dist_esm_ion-nav_2_entry_js"
],
"./ion-picker-column-internal.entry.js": [
42322,
"node_modules_ionic_core_dist_esm_ion-picker-column-internal_entry_js"
],
"./ion-picker-internal.entry.js": [
57754,
"node_modules_ionic_core_dist_esm_ion-picker-internal_entry_js"
],
"./ion-popover.entry.js": [
87686,
"node_modules_ionic_core_dist_esm_ion-popover_entry_js"
],
"./ion-progress-bar.entry.js": [
48555,
"node_modules_ionic_core_dist_esm_ion-progress-bar_entry_js"
],
"./ion-radio_2.entry.js": [
30568,
"node_modules_ionic_core_dist_esm_ion-radio_2_entry_js"
],
"./ion-range.entry.js": [
6231,
"common",
"node_modules_ionic_core_dist_esm_ion-range_entry_js"
],
"./ion-refresher_2.entry.js": [
45772,
"common",
"node_modules_ionic_core_dist_esm_ion-refresher_2_entry_js"
],
"./ion-reorder_2.entry.js": [
14977,
"common",
"node_modules_ionic_core_dist_esm_ion-reorder_2_entry_js"
],
"./ion-ripple-effect.entry.js": [
42886,
"node_modules_ionic_core_dist_esm_ion-ripple-effect_entry_js"
],
"./ion-route_4.entry.js": [
54990,
"node_modules_ionic_core_dist_esm_ion-route_4_entry_js"
],
"./ion-searchbar.entry.js": [
13810,
"common",
"node_modules_ionic_core_dist_esm_ion-searchbar_entry_js"
],
"./ion-segment_2.entry.js": [
2446,
"common",
"node_modules_ionic_core_dist_esm_ion-segment_2_entry_js"
],
"./ion-select_3.entry.js": [
47619,
"node_modules_ionic_core_dist_esm_ion-select_3_entry_js"
],
"./ion-slide_2.entry.js": [
28393,
"node_modules_ionic_core_dist_esm_ion-slide_2_entry_js"
],
"./ion-spinner.entry.js": [
56281,
"node_modules_ionic_core_dist_esm_ion-spinner_entry_js"
],
"./ion-split-pane.entry.js": [
35932,
"node_modules_ionic_core_dist_esm_ion-split-pane_entry_js"
],
"./ion-tab-bar_2.entry.js": [
57970,
"node_modules_ionic_core_dist_esm_ion-tab-bar_2_entry_js"
],
"./ion-tab_2.entry.js": [
80298,
"node_modules_ionic_core_dist_esm_ion-tab_2_entry_js"
],
"./ion-text.entry.js": [
71006,
"node_modules_ionic_core_dist_esm_ion-text_entry_js"
],
"./ion-textarea.entry.js": [
74783,
"node_modules_ionic_core_dist_esm_ion-textarea_entry_js"
],
"./ion-toast.entry.js": [
62749,
"node_modules_ionic_core_dist_esm_ion-toast_entry_js"
],
"./ion-toggle.entry.js": [
55404,
"common",
"node_modules_ionic_core_dist_esm_ion-toggle_entry_js"
],
"./ion-virtual-scroll.entry.js": [
39043,
"node_modules_ionic_core_dist_esm_ion-virtual-scroll_entry_js"
]
};
function webpackAsyncContext(req) {
if(!__webpack_require__.o(map, req)) {
return Promise.resolve().then(() => {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
});
}
var ids = map[req], id = ids[0];
return Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {
return __webpack_require__(id);
});
}
webpackAsyncContext.keys = () => (Object.keys(map));
webpackAsyncContext.id = 50863;
module.exports = webpackAsyncContext;
/***/ }),
/***/ 75158:
/*!***************************************************************************************************!*\
!*** ./node_modules/@ngtools/webpack/src/loaders/direct-resource.js!./src/app/app.component.html ***!
\***************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("