@eui/core 16.0.0-next.1 → 16.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/docs/dependencies.html +60 -72
- package/docs/js/search/search_index.js +2 -2
- package/docs/properties.html +1 -1
- package/{esm2020 → esm2022}/lib/eui-core.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/interceptors/add-lang-param.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/cache-prevention.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/cors-security.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/csrf-prevention.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/openid/openid-connect.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/openid/openid-connect.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/ux-request-error-model.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/errors/global-error-handler.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/errors/http-error-handler.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/i18n/i18n.loader.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/i18n/i18n.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/i18n/i18n.service.mock.mjs +4 -4
- package/esm2022/lib/services/locale/locale.service.mjs +231 -0
- package/{esm2020 → esm2022}/lib/services/locale/locale.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/log/log.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/services/log/log.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/permission/permission.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/queue/api-queue.service.mjs +4 -4
- package/esm2022/lib/services/storage/local-forage.service.mjs +93 -0
- package/esm2022/lib/services/storage/local-storage.service.mjs +75 -0
- package/esm2022/lib/services/storage/session-storage.service.mjs +75 -0
- package/{esm2020 → esm2022}/lib/services/store/effects/app.effects.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/store/store.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/store/store.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/user/user.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/user/user.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-app-shell.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +4 -4
- package/esm2022/lib/services/ux-timezone.service.mjs +717 -0
- package/{fesm2020 → fesm2022}/eui-core.mjs +106 -105
- package/fesm2022/eui-core.mjs.map +1 -0
- package/lib/services/ux-timezone.service.d.ts.map +1 -1
- package/package.json +5 -11
- package/esm2020/lib/services/locale/locale.service.mjs +0 -231
- package/esm2020/lib/services/storage/local-forage.service.mjs +0 -93
- package/esm2020/lib/services/storage/local-storage.service.mjs +0 -75
- package/esm2020/lib/services/storage/session-storage.service.mjs +0 -75
- package/esm2020/lib/services/ux-timezone.service.mjs +0 -716
- package/fesm2015/eui-core.mjs +0 -4624
- package/fesm2015/eui-core.mjs.map +0 -1
- package/fesm2020/eui-core.mjs.map +0 -1
- /package/{esm2020 → esm2022}/eui-core.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/date-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/dom-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/event-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/form-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/format-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/http-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interceptors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interceptors/openid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interceptors/openid/openid-connect.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/eui-init-app.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/eui-pre-init-app.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/eui-startup.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/factories/log.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/config/defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/config/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/errors/eui.error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/errors/http-error-handler-callback-functions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/errors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/i18n/i18n.resource.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/i18n/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/locale/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/log/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/log/log.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/queue/api-queue.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/queue/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/async-storage.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/async-storage.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/storage.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/storage.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/app.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/i18n.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/locale.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/notifications.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/user.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/effects/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/app.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/core.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/i18n.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/locale.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/meta.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/notifications.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/user.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/user/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/ux-error-feedback/ux-error-handler.operator.mjs +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ux-timezone.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/ux-timezone.service.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ux-timezone.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/ux-timezone.service.ts"],"names":[],"mappings":";AAIA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwPxB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,EAiblC,CAAC;AAGF,qBACa,iBAAiB;IAC1B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAQxB,YAAY,IAAI,QAAQ,EAAE;IAI1B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;yCAvBxB,iBAAiB;6CAAjB,iBAAiB;CA0B7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eui/core",
|
|
3
|
-
"version": "16.0.0-next.
|
|
3
|
+
"version": "16.0.0-next.10",
|
|
4
4
|
"tag": "next",
|
|
5
5
|
"description": "eUI core package - holding UI components for Desktop applications",
|
|
6
6
|
"homepage": "https://eui.ecdevops.eu",
|
|
@@ -15,11 +15,7 @@
|
|
|
15
15
|
"npm": "Please use yarn instead of NPM to install dependencies"
|
|
16
16
|
},
|
|
17
17
|
"license": "EUPL-1.1",
|
|
18
|
-
"module": "
|
|
19
|
-
"es2020": "fesm2020/eui-core.mjs",
|
|
20
|
-
"esm2020": "esm2020/eui-core.mjs",
|
|
21
|
-
"fesm2020": "fesm2020/eui-core.mjs",
|
|
22
|
-
"fesm2015": "fesm2015/eui-core.mjs",
|
|
18
|
+
"module": "fesm2022/eui-core.mjs",
|
|
23
19
|
"typings": "index.d.ts",
|
|
24
20
|
"exports": {
|
|
25
21
|
"./package.json": {
|
|
@@ -27,11 +23,9 @@
|
|
|
27
23
|
},
|
|
28
24
|
".": {
|
|
29
25
|
"types": "./index.d.ts",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"node": "./fesm2015/eui-core.mjs",
|
|
34
|
-
"default": "./fesm2020/eui-core.mjs"
|
|
26
|
+
"esm2022": "./esm2022/eui-core.mjs",
|
|
27
|
+
"esm": "./esm2022/eui-core.mjs",
|
|
28
|
+
"default": "./fesm2022/eui-core.mjs"
|
|
35
29
|
}
|
|
36
30
|
},
|
|
37
31
|
"sideEffects": false,
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Angular is using a gulp task to generate the locales that we dynamically import. This task can be found here
|
|
3
|
-
* https://github.com/angular/angular/blob/master/tools/gulp-tasks/cldr/cldr-data.js
|
|
4
|
-
* That task is utilizing the CLDR library to load and construct the locale for each region. This service is responsible
|
|
5
|
-
* to load those locale dynamically upon request and to update the state of the eUI app.
|
|
6
|
-
*
|
|
7
|
-
* Parts that are handles through configuration:
|
|
8
|
-
* - update of the LOCALE_ID token
|
|
9
|
-
* - initial dynamical load of locales
|
|
10
|
-
* - bind to translation service for locale changes
|
|
11
|
-
*/
|
|
12
|
-
import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';
|
|
13
|
-
import { getLocaleId } from '@angular/common';
|
|
14
|
-
import { EuiService, getLocaleState, getLocaleServiceConfigFromBase, } from '@eui/base';
|
|
15
|
-
import { of, Subject, throwError } from 'rxjs';
|
|
16
|
-
import { catchError, filter, map, switchMap, take, takeUntil, tap } from 'rxjs/operators';
|
|
17
|
-
import { UpdateLocaleStateAction } from '../store';
|
|
18
|
-
import { GLOBAL_CONFIG_TOKEN } from '../config/tokens';
|
|
19
|
-
import { createSelector } from '@ngrx/store';
|
|
20
|
-
import * as i0 from "@angular/core";
|
|
21
|
-
import * as i1 from "../store";
|
|
22
|
-
import * as i2 from "../i18n";
|
|
23
|
-
import * as i3 from "../log";
|
|
24
|
-
export const LOCALE_ID_MAPPER = new InjectionToken('localeIdMapper');
|
|
25
|
-
export class LocaleService extends EuiService {
|
|
26
|
-
constructor(store, baseGlobalConfig, locale_id, localeMapper, i18n, log) {
|
|
27
|
-
super({ id: getLocaleId(locale_id) });
|
|
28
|
-
this.store = store;
|
|
29
|
-
this.baseGlobalConfig = baseGlobalConfig;
|
|
30
|
-
this.locale_id = locale_id;
|
|
31
|
-
this.localeMapper = localeMapper;
|
|
32
|
-
this.i18n = i18n;
|
|
33
|
-
this.log = log;
|
|
34
|
-
this.subNotifier = new Subject();
|
|
35
|
-
if (log) {
|
|
36
|
-
this.logger = log.getLogger('core.LocaleService');
|
|
37
|
-
}
|
|
38
|
-
this.config = getLocaleServiceConfigFromBase(this.baseGlobalConfig);
|
|
39
|
-
// in case no localeMapper provided, set the angular getLocaleId as default
|
|
40
|
-
if (!this.localeMapper) {
|
|
41
|
-
this.localeMapper = getLocaleId;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
this.subNotifier.next(void 0);
|
|
46
|
-
this.subNotifier.complete();
|
|
47
|
-
}
|
|
48
|
-
getState(keyOrMapFn) {
|
|
49
|
-
let selector = getLocaleState;
|
|
50
|
-
if (keyOrMapFn) {
|
|
51
|
-
switch (typeof keyOrMapFn) {
|
|
52
|
-
case 'function':
|
|
53
|
-
selector = createSelector(getLocaleState, keyOrMapFn);
|
|
54
|
-
break;
|
|
55
|
-
case 'string':
|
|
56
|
-
selector = createSelector(getLocaleState, (state) => state[keyOrMapFn]);
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return this.store.select(selector).pipe(takeUntil(this.subNotifier),
|
|
61
|
-
// in case service didn't init fallback to LOCALE_ID token value
|
|
62
|
-
map((state) => (state ? state : this.stateInstance ? this.stateInstance : this.locale_id)));
|
|
63
|
-
}
|
|
64
|
-
init(state) {
|
|
65
|
-
super.initEuiService();
|
|
66
|
-
// bind language changes to locale changes
|
|
67
|
-
if (this.config?.bindWithTranslate) {
|
|
68
|
-
this.bindTranslateServiceLangChangeToState();
|
|
69
|
-
}
|
|
70
|
-
// dynamically load locale based on provided configuration
|
|
71
|
-
const availableLocales = state?.available || this.config?.available || this.getBrowserLocales() || [this.currentLocale];
|
|
72
|
-
return this.loadLocale(availableLocales).pipe(takeUntil(this.subNotifier), tap(() => this.updateState({ id: this.currentLocale })));
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* dynamically load locale and update the state
|
|
76
|
-
*/
|
|
77
|
-
updateState(state) {
|
|
78
|
-
try {
|
|
79
|
-
const id = this.localeMapper(state.id);
|
|
80
|
-
this.store.dispatch(new UpdateLocaleStateAction({ ...state, id }));
|
|
81
|
-
// update global TOKEN ID based on configuration
|
|
82
|
-
if (this.config.affectGlobalLocale) {
|
|
83
|
-
this.locale_id = id;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch (e) {
|
|
87
|
-
const message = `Locale for '${state.id}' is not available.
|
|
88
|
-
Please use addLocale('${state.id}') first`;
|
|
89
|
-
if (this.log) {
|
|
90
|
-
this.logger.info(message, e);
|
|
91
|
-
}
|
|
92
|
-
throw new Error(message);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
addLocale(id) {
|
|
96
|
-
return this.loadLocale(id);
|
|
97
|
-
}
|
|
98
|
-
get previousLocale() {
|
|
99
|
-
return this.prevStateInstance?.id || this.currentLocale;
|
|
100
|
-
}
|
|
101
|
-
get currentLocale() {
|
|
102
|
-
return this.stateInstance?.id;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* load and register locale data dynamically
|
|
106
|
-
*
|
|
107
|
-
* @param locale array of locale to load
|
|
108
|
-
*/
|
|
109
|
-
loadLocale(locale) {
|
|
110
|
-
// locale = Array.isArray(locale) ? locale : [locale];
|
|
111
|
-
// const localeImports: Observable<{ data: any, localeId: string, extraData: any }>[]
|
|
112
|
-
// = this.filterRegisteredLocales(locale).map(this.importDataAndExtraLocale.bind(this));
|
|
113
|
-
//
|
|
114
|
-
// // in case localeImports array is empty because locale exists, Observable still needs to complete
|
|
115
|
-
// if (localeImports.length < 1) {
|
|
116
|
-
// return of({ success: true });
|
|
117
|
-
// }
|
|
118
|
-
//
|
|
119
|
-
// return forkJoin(...localeImports).pipe(
|
|
120
|
-
// takeUntil(this.subNotifier),
|
|
121
|
-
// map(localeData => {
|
|
122
|
-
// // filter out null results and registerLocaleData including extra
|
|
123
|
-
// localeData.filter(({ data }) => data)
|
|
124
|
-
// .forEach(({ data, localeId, extraData }) => registerLocaleData(data, localeId, extraData));
|
|
125
|
-
// return { success: true };
|
|
126
|
-
// }),
|
|
127
|
-
// catchError(error => {
|
|
128
|
-
// if (this.log) {
|
|
129
|
-
// this.logger.debug(`Locale load error: ${error.message}`, error);
|
|
130
|
-
// }
|
|
131
|
-
// return of({ success: false, error: error });
|
|
132
|
-
// })
|
|
133
|
-
// );
|
|
134
|
-
return of({ success: true });
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* listen for language changes and dynamically set locale accordingly. In case of non registered locale register it
|
|
138
|
-
* dynamically.
|
|
139
|
-
*/
|
|
140
|
-
bindTranslateServiceLangChangeToState() {
|
|
141
|
-
if (this.i18n) {
|
|
142
|
-
this.i18n.onStateChange
|
|
143
|
-
.pipe(takeUntil(this.subNotifier),
|
|
144
|
-
// filter out null values
|
|
145
|
-
filter((state) => state?.activeLang !== null && state?.activeLang !== undefined),
|
|
146
|
-
// BEWARE: filter is based on convention that locale id sliced(2) will match activeLang e.g. en-US => en
|
|
147
|
-
// Also, if activeLang is 'en' and locale is 'en-GB' it will not trigger locale change
|
|
148
|
-
filter((state) => state.activeLang.toLowerCase() !== this.stateInstance?.id.slice(0, 2).toLowerCase()),
|
|
149
|
-
// to check if registration of locale otherwise register it
|
|
150
|
-
switchMap((value) => of(value).pipe(
|
|
151
|
-
// getLocaleId may throw Error(`Missing locale data for the locale "${locale}".`);
|
|
152
|
-
switchMap((i18state) => {
|
|
153
|
-
// check if activeLang is null or undefined
|
|
154
|
-
if (!i18state.activeLang) {
|
|
155
|
-
return throwError('Has i18nService initialized? If not make sure i18nService.init().subscribe(..)');
|
|
156
|
-
}
|
|
157
|
-
return of(this.localeMapper(i18state.activeLang));
|
|
158
|
-
}), catchError((error) => {
|
|
159
|
-
if (this.log) {
|
|
160
|
-
this.logger.debug(error);
|
|
161
|
-
}
|
|
162
|
-
return this.loadLocale(value?.activeLang).pipe(filter((s) => s.success), map(() => this.localeMapper(value?.activeLang)), catchError((e) => {
|
|
163
|
-
if (this.log) {
|
|
164
|
-
this.logger.debug('Something went terribly really wrong during locale loading', e.err.message);
|
|
165
|
-
}
|
|
166
|
-
return of(e);
|
|
167
|
-
}));
|
|
168
|
-
}))),
|
|
169
|
-
// update the "available" array attribute with newly registered
|
|
170
|
-
switchMap((id) => this.getState().pipe(take(1), map((state) => {
|
|
171
|
-
const available = state?.available ? state.available : [];
|
|
172
|
-
return { ...state, id, available: Array.from(new Set([...available, id])) };
|
|
173
|
-
}))))
|
|
174
|
-
.subscribe((state) => {
|
|
175
|
-
this.updateState(state);
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* retrieve locales from browser
|
|
181
|
-
*
|
|
182
|
-
* @param options
|
|
183
|
-
*/
|
|
184
|
-
getBrowserLocales() {
|
|
185
|
-
const browserLocales = navigator.languages === undefined ? [navigator.language] : navigator.languages;
|
|
186
|
-
if (!browserLocales) {
|
|
187
|
-
return undefined;
|
|
188
|
-
}
|
|
189
|
-
return browserLocales.map((locale) => locale.trim());
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* if locale is already registered filtered out.
|
|
193
|
-
*
|
|
194
|
-
* @param locales A string array contains all locale id e.g. ["el", "el-CY"]
|
|
195
|
-
*/
|
|
196
|
-
filterRegisteredLocales(locales) {
|
|
197
|
-
return locales.filter((loc) => {
|
|
198
|
-
try {
|
|
199
|
-
getLocaleId(loc);
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
catch (e) {
|
|
203
|
-
return true;
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
/** @nocollapse */ LocaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocaleService, deps: [{ token: i1.StoreService }, { token: GLOBAL_CONFIG_TOKEN }, { token: LOCALE_ID }, { token: LOCALE_ID_MAPPER, optional: true }, { token: i2.I18nService, optional: true }, { token: i3.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
209
|
-
/** @nocollapse */ LocaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocaleService, providedIn: 'root' });
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocaleService, decorators: [{
|
|
211
|
-
type: Injectable,
|
|
212
|
-
args: [{
|
|
213
|
-
providedIn: 'root',
|
|
214
|
-
}]
|
|
215
|
-
}], ctorParameters: function () { return [{ type: i1.StoreService }, { type: undefined, decorators: [{
|
|
216
|
-
type: Inject,
|
|
217
|
-
args: [GLOBAL_CONFIG_TOKEN]
|
|
218
|
-
}] }, { type: undefined, decorators: [{
|
|
219
|
-
type: Inject,
|
|
220
|
-
args: [LOCALE_ID]
|
|
221
|
-
}] }, { type: undefined, decorators: [{
|
|
222
|
-
type: Optional
|
|
223
|
-
}, {
|
|
224
|
-
type: Inject,
|
|
225
|
-
args: [LOCALE_ID_MAPPER]
|
|
226
|
-
}] }, { type: i2.I18nService, decorators: [{
|
|
227
|
-
type: Optional
|
|
228
|
-
}] }, { type: i3.LogService, decorators: [{
|
|
229
|
-
type: Optional
|
|
230
|
-
}] }]; } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxVQUFVLEVBRVYsY0FBYyxFQUNkLDhCQUE4QixHQUtqQyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBZ0IsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFHN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsZ0JBQWdCLENBQUMsQ0FBQztBQUtuRixNQUFNLE9BQU8sYUFBbUQsU0FBUSxVQUEyQjtJQUsvRixZQUNjLEtBQW1CLEVBQ1UsZ0JBQThCLEVBQ3hDLFNBQWlCLEVBQ0EsWUFBMEIsRUFDcEQsSUFBaUIsRUFDakIsR0FBZTtRQUVuQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVA1QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ1UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFjO1FBQ3hDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNwRCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFUL0IsZ0JBQVcsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVk5QyxJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBSUQsUUFBUSxDQUFJLFVBQXVDO1FBQy9DLElBQUksUUFBUSxHQUFRLGNBQWMsQ0FBQztRQUVuQyxJQUFJLFVBQVUsRUFBRTtZQUNaLFFBQVEsT0FBTyxVQUFVLEVBQUU7Z0JBQ3ZCLEtBQUssVUFBVTtvQkFDWCxRQUFRLEdBQUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDdEQsTUFBTTtnQkFDVixLQUFLLFFBQVE7b0JBQ1QsUUFBUSxHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUN4RSxNQUFNO2FBQ2I7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzQixnRUFBZ0U7UUFDaEUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDN0YsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBK0I7UUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLDBDQUEwQztRQUMxQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7U0FDaEQ7UUFFRCwwREFBMEQ7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hILE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FDMUQsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxLQUFrQjtRQUMxQixJQUFJO1lBQ0EsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxnREFBZ0Q7WUFDaEQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzthQUN2QjtTQUNKO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxlQUFlLEtBQUssQ0FBQyxFQUFFO3lDQUNWLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2hDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssVUFBVSxDQUFDLE1BQXlCO1FBQ3hDLHNEQUFzRDtRQUN0RCxxRkFBcUY7UUFDckYsNEZBQTRGO1FBQzVGLEVBQUU7UUFDRixvR0FBb0c7UUFDcEcsa0NBQWtDO1FBQ2xDLG9DQUFvQztRQUNwQyxJQUFJO1FBQ0osRUFBRTtRQUNGLDBDQUEwQztRQUMxQyxtQ0FBbUM7UUFDbkMsMEJBQTBCO1FBQzFCLDRFQUE0RTtRQUM1RSxnREFBZ0Q7UUFDaEQsMEdBQTBHO1FBQzFHLG9DQUFvQztRQUNwQyxVQUFVO1FBQ1YsNEJBQTRCO1FBQzVCLDBCQUEwQjtRQUMxQiwrRUFBK0U7UUFDL0UsWUFBWTtRQUNaLHVEQUF1RDtRQUN2RCxTQUFTO1FBQ1QsS0FBSztRQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHFDQUFxQztRQUN6QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7aUJBQ2xCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMzQix5QkFBeUI7WUFDekIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxLQUFLLElBQUksSUFBSSxLQUFLLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQztZQUNoRix3R0FBd0c7WUFDeEcsc0ZBQXNGO1lBQ3RGLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RHLDJEQUEyRDtZQUMzRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNoQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtZQUNWLGtGQUFrRjtZQUNsRixTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkIsMkNBQTJDO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDdEIsT0FBTyxVQUFVLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztpQkFDdkc7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QjtnQkFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDMUMsTUFBTSxDQUFDLENBQUMsQ0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFDL0MsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDREQUE0RCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ2xHO29CQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixDQUFDLENBQUMsQ0FDTCxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FDSjtZQUNELCtEQUErRDtZQUMvRCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hGLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FDSjtpQkFDQSxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssaUJBQWlCO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUV0RyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHVCQUF1QixDQUFDLE9BQWlCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ2xDLElBQUk7Z0JBQ0EsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O29JQTlOUSxhQUFhLDhDQU9WLG1CQUFtQixhQUNuQixTQUFTLGFBQ0csZ0JBQWdCO3dJQVQvQixhQUFhLGNBRlYsTUFBTTtrR0FFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ25DLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuZ3VsYXIgaXMgdXNpbmcgYSBndWxwIHRhc2sgdG8gZ2VuZXJhdGUgdGhlIGxvY2FsZXMgdGhhdCB3ZSBkeW5hbWljYWxseSBpbXBvcnQuIFRoaXMgdGFzayBjYW4gYmUgZm91bmQgaGVyZVxuICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci90b29scy9ndWxwLXRhc2tzL2NsZHIvY2xkci1kYXRhLmpzXG4gKiBUaGF0IHRhc2sgaXMgdXRpbGl6aW5nIHRoZSBDTERSIGxpYnJhcnkgdG8gbG9hZCBhbmQgY29uc3RydWN0IHRoZSBsb2NhbGUgZm9yIGVhY2ggcmVnaW9uLiBUaGlzIHNlcnZpY2UgaXMgcmVzcG9uc2libGVcbiAqIHRvIGxvYWQgdGhvc2UgbG9jYWxlIGR5bmFtaWNhbGx5IHVwb24gcmVxdWVzdCBhbmQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgZVVJIGFwcC5cbiAqXG4gKiBQYXJ0cyB0aGF0IGFyZSBoYW5kbGVzIHRocm91Z2ggY29uZmlndXJhdGlvbjpcbiAqICAtIHVwZGF0ZSBvZiB0aGUgTE9DQUxFX0lEIHRva2VuXG4gKiAgLSBpbml0aWFsIGR5bmFtaWNhbCBsb2FkIG9mIGxvY2FsZXNcbiAqICAtIGJpbmQgdG8gdHJhbnNsYXRpb24gc2VydmljZSBmb3IgbG9jYWxlIGNoYW5nZXNcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldExvY2FsZUlkIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRXVpU2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldExvY2FsZVN0YXRlLFxuICAgIGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBHbG9iYWxDb25maWcsXG4gICAgTG9jYWxlU2VydmljZUNvbmZpZyxcbiAgICBMb2NhbGVTdGF0ZSxcbiAgICBMb2dnZXIsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UsIFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIExvY2FsZU1hcHBlciA9IChsb2NhbGU6IHN0cmluZykgPT4gYW55O1xuZXhwb3J0IGNvbnN0IExPQ0FMRV9JRF9NQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlTWFwcGVyPignbG9jYWxlSWRNYXBwZXInKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBMb2NhbGVTZXJ2aWNlQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmVTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEdMT0JBTF9DT05GSUdfVE9LRU4pIHByb3RlY3RlZCBiYXNlR2xvYmFsQ29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcm90ZWN0ZWQgbG9jYWxlX2lkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTE9DQUxFX0lEX01BUFBFUikgcHJpdmF0ZSBsb2NhbGVNYXBwZXI6IExvY2FsZU1hcHBlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBpMThuOiBJMThuU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2c6IExvZ1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoeyBpZDogZ2V0TG9jYWxlSWQobG9jYWxlX2lkKSB9KTtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2cuZ2V0TG9nZ2VyKCdjb3JlLkxvY2FsZVNlcnZpY2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnID0gZ2V0TG9jYWxlU2VydmljZUNvbmZpZ0Zyb21CYXNlKHRoaXMuYmFzZUdsb2JhbENvbmZpZyk7XG4gICAgICAgIC8vIGluIGNhc2Ugbm8gbG9jYWxlTWFwcGVyIHByb3ZpZGVkLCBzZXQgdGhlIGFuZ3VsYXIgZ2V0TG9jYWxlSWQgYXMgZGVmYXVsdFxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlTWFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZU1hcHBlciA9IGdldExvY2FsZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIubmV4dCh2b2lkIDApO1xuICAgICAgICB0aGlzLnN1Yk5vdGlmaWVyLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0U3RhdGU8SyA9IFQ+KG1hcEZuPzogKHN0YXRlOiBUKSA9PiBLKTogT2JzZXJ2YWJsZTxLPjtcbiAgICBnZXRTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oa2V5PzogYSk6IE9ic2VydmFibGU8VFthXT47XG4gICAgZ2V0U3RhdGU8Sz4oa2V5T3JNYXBGbj86ICgoc3RhdGU6IFQpID0+IEspIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxLPiB7XG4gICAgICAgIGxldCBzZWxlY3RvcjogYW55ID0gZ2V0TG9jYWxlU3RhdGU7XG5cbiAgICAgICAgaWYgKGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0TG9jYWxlU3RhdGUsIGtleU9yTWFwRm4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldExvY2FsZVN0YXRlLCAoc3RhdGUpID0+IHN0YXRlW2tleU9yTWFwRm5dKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9yKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgLy8gaW4gY2FzZSBzZXJ2aWNlIGRpZG4ndCBpbml0IGZhbGxiYWNrIHRvIExPQ0FMRV9JRCB0b2tlbiB2YWx1ZVxuICAgICAgICAgICAgbWFwKChzdGF0ZSkgPT4gKHN0YXRlID8gc3RhdGUgOiB0aGlzLnN0YXRlSW5zdGFuY2UgPyB0aGlzLnN0YXRlSW5zdGFuY2UgOiB0aGlzLmxvY2FsZV9pZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaW5pdChzdGF0ZT86IExvY2FsZVN0YXRlIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG5cbiAgICAgICAgLy8gYmluZCBsYW5ndWFnZSBjaGFuZ2VzIHRvIGxvY2FsZSBjaGFuZ2VzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uYmluZFdpdGhUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGU/LmF2YWlsYWJsZSB8fCB0aGlzLmNvbmZpZz8uYXZhaWxhYmxlIHx8IHRoaXMuZ2V0QnJvd3NlckxvY2FsZXMoKSB8fCBbdGhpcy5jdXJyZW50TG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShhdmFpbGFibGVMb2NhbGVzKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlU3RhdGUoeyBpZDogdGhpcy5jdXJyZW50TG9jYWxlIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGR5bmFtaWNhbGx5IGxvYWQgbG9jYWxlIGFuZCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICovXG4gICAgdXBkYXRlU3RhdGUoc3RhdGU6IExvY2FsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHRoaXMubG9jYWxlTWFwcGVyKHN0YXRlLmlkKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uKHsgLi4uc3RhdGUsIGlkIH0pKTtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBnbG9iYWwgVE9LRU4gSUQgYmFzZWQgb24gY29uZmlndXJhdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmFmZmVjdEdsb2JhbExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlX2lkID0gaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTG9jYWxlIGZvciAnJHtzdGF0ZS5pZH0nIGlzIG5vdCBhdmFpbGFibGUuXG4gICAgICAgICAgICAgICAgIFBsZWFzZSB1c2UgYWRkTG9jYWxlKCcke3N0YXRlLmlkfScpIGZpcnN0YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8obWVzc2FnZSwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRMb2NhbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXVpU2VydmljZVN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKGlkKTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlvdXNMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldlN0YXRlSW5zdGFuY2U/LmlkIHx8IHRoaXMuY3VycmVudExvY2FsZTtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUluc3RhbmNlPy5pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkIGFuZCByZWdpc3RlciBsb2NhbGUgZGF0YSBkeW5hbWljYWxseVxuICAgICAqXG4gICAgICogQHBhcmFtIGxvY2FsZSBhcnJheSBvZiBsb2NhbGUgdG8gbG9hZFxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIC8vIGxvY2FsZSA9IEFycmF5LmlzQXJyYXkobG9jYWxlKSA/IGxvY2FsZSA6IFtsb2NhbGVdO1xuICAgICAgICAvLyBjb25zdCBsb2NhbGVJbXBvcnRzOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55LCBsb2NhbGVJZDogc3RyaW5nLCBleHRyYURhdGE6IGFueSB9PltdXG4gICAgICAgIC8vICAgICA9IHRoaXMuZmlsdGVyUmVnaXN0ZXJlZExvY2FsZXMobG9jYWxlKS5tYXAodGhpcy5pbXBvcnREYXRhQW5kRXh0cmFMb2NhbGUuYmluZCh0aGlzKSk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGluIGNhc2UgbG9jYWxlSW1wb3J0cyBhcnJheSBpcyBlbXB0eSBiZWNhdXNlIGxvY2FsZSBleGlzdHMsIE9ic2VydmFibGUgc3RpbGwgbmVlZHMgdG8gY29tcGxldGVcbiAgICAgICAgLy8gaWYgKGxvY2FsZUltcG9ydHMubGVuZ3RoIDwgMSkge1xuICAgICAgICAvLyAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICAvLyByZXR1cm4gZm9ya0pvaW4oLi4ubG9jYWxlSW1wb3J0cykucGlwZShcbiAgICAgICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgLy8gICAgIG1hcChsb2NhbGVEYXRhID0+IHtcbiAgICAgICAgLy8gICAgICAgICAvLyBmaWx0ZXIgb3V0IG51bGwgcmVzdWx0cyBhbmQgcmVnaXN0ZXJMb2NhbGVEYXRhIGluY2x1ZGluZyBleHRyYVxuICAgICAgICAvLyAgICAgICAgIGxvY2FsZURhdGEuZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YSlcbiAgICAgICAgLy8gICAgICAgICAgICAgLmZvckVhY2goKHsgZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSB9KSA9PiByZWdpc3RlckxvY2FsZURhdGEoZGF0YSwgbG9jYWxlSWQsIGV4dHJhRGF0YSkpO1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgICAgLy8gICAgIH0pLFxuICAgICAgICAvLyAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBMb2NhbGUgbG9hZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIG9mKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvciB9KTtcbiAgICAgICAgLy8gICAgIH0pXG4gICAgICAgIC8vICk7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbGlzdGVuIGZvciBsYW5ndWFnZSBjaGFuZ2VzIGFuZCBkeW5hbWljYWxseSBzZXQgbG9jYWxlIGFjY29yZGluZ2x5LiBJbiBjYXNlIG9mIG5vbiByZWdpc3RlcmVkIGxvY2FsZSByZWdpc3RlciBpdFxuICAgICAqIGR5bmFtaWNhbGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaTE4bikge1xuICAgICAgICAgICAgdGhpcy5pMThuLm9uU3RhdGVDaGFuZ2VcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgICAgICAgICAvLyBmaWx0ZXIgb3V0IG51bGwgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+IHN0YXRlPy5hY3RpdmVMYW5nICE9PSBudWxsICYmIHN0YXRlPy5hY3RpdmVMYW5nICE9PSB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICAvLyBCRVdBUkU6IGZpbHRlciBpcyBiYXNlZCBvbiBjb252ZW50aW9uIHRoYXQgbG9jYWxlIGlkIHNsaWNlZCgyKSB3aWxsIG1hdGNoIGFjdGl2ZUxhbmcgZS5nLiBlbi1VUyA9PiBlblxuICAgICAgICAgICAgICAgICAgICAvLyBBbHNvLCBpZiBhY3RpdmVMYW5nIGlzICdlbicgYW5kIGxvY2FsZSBpcyAnZW4tR0InIGl0IHdpbGwgbm90IHRyaWdnZXIgbG9jYWxlIGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZS5hY3RpdmVMYW5nLnRvTG93ZXJDYXNlKCkgIT09IHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQuc2xpY2UoMCwgMikudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGNoZWNrIGlmIHJlZ2lzdHJhdGlvbiBvZiBsb2NhbGUgb3RoZXJ3aXNlIHJlZ2lzdGVyIGl0XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvZih2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRMb2NhbGVJZCBtYXkgdGhyb3cgRXJyb3IoYE1pc3NpbmcgbG9jYWxlIGRhdGEgZm9yIHRoZSBsb2NhbGUgXCIke2xvY2FsZX1cIi5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGkxOHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFjdGl2ZUxhbmcgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpMThzdGF0ZS5hY3RpdmVMYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSGFzIGkxOG5TZXJ2aWNlIGluaXRpYWxpemVkPyBJZiBub3QgbWFrZSBzdXJlIGkxOG5TZXJ2aWNlLmluaXQoKS5zdWJzY3JpYmUoLi4pJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9jYWxlTWFwcGVyKGkxOHN0YXRlLmFjdGl2ZUxhbmcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlKHZhbHVlPy5hY3RpdmVMYW5nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzOiBFdWlTZXJ2aWNlU3RhdHVzKSA9PiBzLnN1Y2Nlc3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubG9jYWxlTWFwcGVyKHZhbHVlPy5hY3RpdmVMYW5nKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB0ZXJyaWJseSByZWFsbHkgd3JvbmcgZHVyaW5nIGxvY2FsZSBsb2FkaW5nJywgZS5lcnIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBcImF2YWlsYWJsZVwiIGFycmF5IGF0dHJpYnV0ZSB3aXRoIG5ld2x5IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3RhdGUoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlID0gc3RhdGU/LmF2YWlsYWJsZSA/IHN0YXRlLmF2YWlsYWJsZSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXRyaWV2ZSBsb2NhbGVzIGZyb20gYnJvd3NlclxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEJyb3dzZXJMb2NhbGVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgYnJvd3NlckxvY2FsZXMgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzID09PSB1bmRlZmluZWQgPyBbbmF2aWdhdG9yLmxhbmd1YWdlXSA6IG5hdmlnYXRvci5sYW5ndWFnZXM7XG5cbiAgICAgICAgaWYgKCFicm93c2VyTG9jYWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBicm93c2VyTG9jYWxlcy5tYXAoKGxvY2FsZSkgPT4gbG9jYWxlLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWYgbG9jYWxlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmaWx0ZXJlZCBvdXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlcyBBIHN0cmluZyBhcnJheSBjb250YWlucyBhbGwgbG9jYWxlIGlkIGUuZy4gW1wiZWxcIiwgXCJlbC1DWVwiXVxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVyUmVnaXN0ZXJlZExvY2FsZXMobG9jYWxlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBsb2NhbGVzLmZpbHRlcigobG9jOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZ2V0TG9jYWxlSWQobG9jKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYW4gT2JzZXJ2YWJsZSB3aGljaCBsb2FkcyB0aGUgbG9jYWxlIGJhc2VkIG9uIHByb3ZpZGVkIElEXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGxvY2FsZSBpZCBlLmcuIGVuLCBlbC1DWVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnRMb2NhbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICAgIC8vIGluIGNhc2Ugb2YgYW4gZXJyb3IsIGNhdGNoIGl0IGFuZCByZXR1cm4gbnVsbFxuICAgIC8vICAgICByZXR1cm4gaW1wb3J0KFxuICAgIC8vICAgICAgICAgLyogd2VicGFja0V4Y2x1ZGU6IC9cXC5kXFwudHMkLyAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja01vZGU6IFwibGF6eS1vbmNlXCIgKi9cbiAgICAvLyAgICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwiaTE4bi1iYXNlXCIgKi9cbiAgICAvLyAgICAgICAgIGBALy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21tb24vbG9jYWxlcy8ke2lkfWApXG4gICAgLy8gICAgICAgICAudGhlbihtID0+IG0uZGVmYXVsdClcbiAgICAvLyAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBMb2NhbGUgd2l0aCBJRDogXCIke2lkfVwiIGZhaWxlZCB0byBsb2FkLiBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGEgUHJvbWlzZSB3aGljaCBsb2FkcyB0aGUgbG9jYWxlIGJhc2VkIG9uIHByb3ZpZGVkIElEXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGxvY2FsZSBpZCBlLmcuIGVuLCBlbC1DWVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSBpbXBvcnRFeHRyYUxvY2FsZShpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyAgICAgLy8gaW4gY2FzZSBvZiBhbiBlcnJvciwgY2F0Y2ggaXQgYW5kIHJldHVybiBudWxsXG4gICAgLy8gICAgIHJldHVybiBpbXBvcnQoXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrRXhjbHVkZTogL1xcLmRcXC50cyQvICovXG4gICAgLy8gICAgICAgICAvKiB3ZWJwYWNrTW9kZTogXCJsYXp5LW9uY2VcIiAqL1xuICAgIC8vICAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJpMThuLWV4dHJhXCIgKi9cbiAgICAvLyAgICAgICAgIGBALy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS8ke2lkfWApXG4gICAgLy8gICAgICAgICAudGhlbihtID0+IG0uZGVmYXVsdClcbiAgICAvLyAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFeHRyYSBMb2NhbGUgd2l0aCBJRDogXCIke2lkfVwiIGZhaWxlZCB0byBsb2FkLiBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBvcnRzIExvY2FsZSBhbmQgdGhlbiBFeHRyYS4gSXQgcmV0dXJucyB0aGUgT2JqZWN0IHdoaWNoIHJlZ2lzdGVyTG9jYWxlKC4uLikgZnVuY3Rpb24gbmVlZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbG9jYWxlSWQgVGhlIGlkIG9mIHRoZSBsb2NhbGVcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIC8vIHByaXZhdGUgaW1wb3J0RGF0YUFuZEV4dHJhTG9jYWxlKGxvY2FsZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgZGF0YTogYW55LCBsb2NhbGVJZDogc3RyaW5nLCBleHRyYURhdGE6IGFueSB9PiB7XG4gICAgLy8gICAgIHJldHVybiBmcm9tKHRoaXMuaW1wb3J0TG9jYWxlKGxvY2FsZUlkKSkucGlwZShcbiAgICAvLyAgICAgICAgIG1lcmdlTWFwKChkYXRhKSA9PiBmcm9tKHRoaXMuaW1wb3J0RXh0cmFMb2NhbGUobG9jYWxlSWQpKS5waXBlKG1hcCgoZXh0cmFEYXRhKSA9PlxuICAgIC8vICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCB7IGRhdGEsIGxvY2FsZUlkLCBleHRyYURhdGEgfSkpKSxcbiAgICAvLyAgICAgICAgICAgICAxXG4gICAgLy8gICAgICAgICApKTtcbiAgICAvLyB9XG59XG4iXX0=
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
|
-
import { from } from 'rxjs';
|
|
3
|
-
import { take, tap } from 'rxjs/operators';
|
|
4
|
-
import * as lf from 'localforage';
|
|
5
|
-
import { AsyncStorageService } from './async-storage.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../log/log.service";
|
|
8
|
-
/** @internal */
|
|
9
|
-
export const localForage = 'defineDriver' in lf ? lf : lf['default'];
|
|
10
|
-
export const LOCAL_FORAGE_SERVICE_CONFIG_TOKEN = new InjectionToken('LOCAL_FORAGE_SERVICE_CONFIG');
|
|
11
|
-
/**
|
|
12
|
-
* localforage service, using the localForage javascript library
|
|
13
|
-
* https://localforage.github.io/localForage
|
|
14
|
-
*/
|
|
15
|
-
export class LocalForageService extends AsyncStorageService {
|
|
16
|
-
constructor(config, log) {
|
|
17
|
-
super();
|
|
18
|
-
this.config = config;
|
|
19
|
-
this.log = log;
|
|
20
|
-
// configure localforage, if specified
|
|
21
|
-
if (config) {
|
|
22
|
-
localForage.config(config);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* the name of the storage service
|
|
27
|
-
*/
|
|
28
|
-
name() {
|
|
29
|
-
return LocalForageService.NAME;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* reflects the readiness of the storage
|
|
33
|
-
* @returns one time emission Observable<void>
|
|
34
|
-
*/
|
|
35
|
-
ready() {
|
|
36
|
-
return from(localForage.ready()).pipe(take(1), tap(() => { }, (err) => {
|
|
37
|
-
if (this.log) {
|
|
38
|
-
this.log.error(this.name(), 'ready', err);
|
|
39
|
-
}
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* retrieve an object from localforage
|
|
44
|
-
* @param key the associated key
|
|
45
|
-
* @returns one time emission Observable of value
|
|
46
|
-
*/
|
|
47
|
-
get(key) {
|
|
48
|
-
return from(localForage.getItem(key)).pipe(take(1), tap(() => { }, (err) => {
|
|
49
|
-
if (this.log) {
|
|
50
|
-
this.log.error(this.name(), 'get', err);
|
|
51
|
-
}
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* sets an object in localforage
|
|
56
|
-
* @param key the associated key
|
|
57
|
-
* @param value the value to set
|
|
58
|
-
* @returns one time emission Observable
|
|
59
|
-
*/
|
|
60
|
-
set(key, value) {
|
|
61
|
-
return from(localForage.setItem(key, value)).pipe(take(1), tap(() => { }, (err) => {
|
|
62
|
-
if (this.log) {
|
|
63
|
-
this.log.error(this.name(), 'set', err);
|
|
64
|
-
}
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* removes an object from localforage
|
|
69
|
-
* @param key the associated key
|
|
70
|
-
* @returns one time emission Observable
|
|
71
|
-
*/
|
|
72
|
-
remove(key) {
|
|
73
|
-
return from(localForage.removeItem(key)).pipe(take(1), tap(() => { }, (err) => {
|
|
74
|
-
if (this.log) {
|
|
75
|
-
this.log.error(this.name(), 'remove', err);
|
|
76
|
-
}
|
|
77
|
-
}));
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
LocalForageService.NAME = 'LocalForageService';
|
|
81
|
-
/** @nocollapse */ LocalForageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocalForageService, deps: [{ token: LOCAL_FORAGE_SERVICE_CONFIG_TOKEN, optional: true }, { token: i1.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
-
/** @nocollapse */ LocalForageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocalForageService });
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocalForageService, decorators: [{
|
|
84
|
-
type: Injectable
|
|
85
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
86
|
-
type: Inject,
|
|
87
|
-
args: [LOCAL_FORAGE_SERVICE_CONFIG_TOKEN]
|
|
88
|
-
}, {
|
|
89
|
-
type: Optional
|
|
90
|
-
}] }, { type: i1.LogService, decorators: [{
|
|
91
|
-
type: Optional
|
|
92
|
-
}] }]; } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZm9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2UvbG9jYWwtZm9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUc5RCxnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFRLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLElBQUksY0FBYyxDQUFNLDZCQUE2QixDQUFDLENBQUM7QUFFeEc7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQUd2RCxZQUE2RSxNQUFXLEVBQXdCLEdBQWU7UUFDM0gsS0FBSyxFQUFFLENBQUM7UUFEaUUsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUF3QixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBRTNILHNDQUFzQztRQUN0QyxJQUFJLE1BQU0sRUFBRTtZQUNSLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQ0MsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNSLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM3QztRQUNMLENBQUMsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FDQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQ1IsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNKLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FDQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQ1IsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNKLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN6QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUNDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFDUixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ0osSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs7QUEzRk0sdUJBQUksR0FBRyxvQkFBb0IsQ0FBQzt5SUFEMUIsa0JBQWtCLGtCQUdQLGlDQUFpQzs2SUFINUMsa0JBQWtCO2tHQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQUlNLE1BQU07MkJBQUMsaUNBQWlDOzswQkFBRyxRQUFROzswQkFBMkIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBsZiBmcm9tICdsb2NhbGZvcmFnZSc7XG5pbXBvcnQgeyBBc3luY1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9hc3luYy1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBsb2NhbEZvcmFnZTogYW55ID0gJ2RlZmluZURyaXZlcicgaW4gbGYgPyBsZiA6IGxmWydkZWZhdWx0J107XG5leHBvcnQgY29uc3QgTE9DQUxfRk9SQUdFX1NFUlZJQ0VfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0xPQ0FMX0ZPUkFHRV9TRVJWSUNFX0NPTkZJRycpO1xuXG4vKipcbiAqIGxvY2FsZm9yYWdlIHNlcnZpY2UsIHVzaW5nIHRoZSBsb2NhbEZvcmFnZSBqYXZhc2NyaXB0IGxpYnJhcnlcbiAqIGh0dHBzOi8vbG9jYWxmb3JhZ2UuZ2l0aHViLmlvL2xvY2FsRm9yYWdlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbEZvcmFnZVNlcnZpY2UgZXh0ZW5kcyBBc3luY1N0b3JhZ2VTZXJ2aWNlIHtcbiAgICBzdGF0aWMgTkFNRSA9ICdMb2NhbEZvcmFnZVNlcnZpY2UnO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTF9GT1JBR0VfU0VSVklDRV9DT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByb3RlY3RlZCBjb25maWc6IGFueSwgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGxvZzogTG9nU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvLyBjb25maWd1cmUgbG9jYWxmb3JhZ2UsIGlmIHNwZWNpZmllZFxuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICBsb2NhbEZvcmFnZS5jb25maWcoY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoZSBuYW1lIG9mIHRoZSBzdG9yYWdlIHNlcnZpY2VcbiAgICAgKi9cbiAgICBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBMb2NhbEZvcmFnZVNlcnZpY2UuTkFNRTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWZsZWN0cyB0aGUgcmVhZGluZXNzIG9mIHRoZSBzdG9yYWdlXG4gICAgICogQHJldHVybnMgb25lIHRpbWUgZW1pc3Npb24gT2JzZXJ2YWJsZTx2b2lkPlxuICAgICAqL1xuICAgIHJlYWR5KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBmcm9tKGxvY2FsRm9yYWdlLnJlYWR5KCkpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGFwKFxuICAgICAgICAgICAgICAgICgpID0+IHt9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcih0aGlzLm5hbWUoKSwgJ3JlYWR5JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXRyaWV2ZSBhbiBvYmplY3QgZnJvbSBsb2NhbGZvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHJldHVybnMgb25lIHRpbWUgZW1pc3Npb24gT2JzZXJ2YWJsZSBvZiB2YWx1ZVxuICAgICAqL1xuICAgIGdldChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBmcm9tKGxvY2FsRm9yYWdlLmdldEl0ZW0oa2V5KSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YXAoXG4gICAgICAgICAgICAgICAgKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKHRoaXMubmFtZSgpLCAnZ2V0JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGFuIG9iamVjdCBpbiBsb2NhbGZvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcbiAgICAgKiBAcmV0dXJucyBvbmUgdGltZSBlbWlzc2lvbiBPYnNlcnZhYmxlXG4gICAgICovXG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGZyb20obG9jYWxGb3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YXAoXG4gICAgICAgICAgICAgICAgKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKHRoaXMubmFtZSgpLCAnc2V0JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZW1vdmVzIGFuIG9iamVjdCBmcm9tIGxvY2FsZm9yYWdlXG4gICAgICogQHBhcmFtIGtleSB0aGUgYXNzb2NpYXRlZCBrZXlcbiAgICAgKiBAcmV0dXJucyBvbmUgdGltZSBlbWlzc2lvbiBPYnNlcnZhYmxlXG4gICAgICovXG4gICAgcmVtb3ZlKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGZyb20obG9jYWxGb3JhZ2UucmVtb3ZlSXRlbShrZXkpKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRhcChcbiAgICAgICAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdyZW1vdmUnLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { StorageService } from './storage.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../log/log.service";
|
|
5
|
-
/**
|
|
6
|
-
* localStorage service
|
|
7
|
-
*/
|
|
8
|
-
export class LocalStorageService extends StorageService {
|
|
9
|
-
constructor(log) {
|
|
10
|
-
super();
|
|
11
|
-
this.log = log;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* the name of the storage service
|
|
15
|
-
*/
|
|
16
|
-
name() {
|
|
17
|
-
return LocalStorageService.NAME;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* retrieve an object from local storage
|
|
21
|
-
* @param key the associated key
|
|
22
|
-
* @returns the value or undefined, if case of error
|
|
23
|
-
*/
|
|
24
|
-
get(key) {
|
|
25
|
-
try {
|
|
26
|
-
const serialized = localStorage.getItem(key);
|
|
27
|
-
return serialized && JSON.parse(serialized);
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
if (this.log) {
|
|
31
|
-
this.log.error(this.name(), 'get', err);
|
|
32
|
-
}
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* sets an object in local storage
|
|
38
|
-
* @param key the associated key
|
|
39
|
-
* @param value the value to set
|
|
40
|
-
*/
|
|
41
|
-
set(key, value) {
|
|
42
|
-
try {
|
|
43
|
-
const serialized = JSON.stringify(value);
|
|
44
|
-
localStorage.setItem(key, serialized);
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
if (this.log) {
|
|
48
|
-
this.log.error(this.name(), 'set', err);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* removes an object from local storage
|
|
54
|
-
* @param key the associated key
|
|
55
|
-
*/
|
|
56
|
-
remove(key) {
|
|
57
|
-
try {
|
|
58
|
-
localStorage.removeItem(key);
|
|
59
|
-
}
|
|
60
|
-
catch (err) {
|
|
61
|
-
if (this.log) {
|
|
62
|
-
this.log.error(this.name(), 'remove', err);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
LocalStorageService.NAME = 'LocalStorageService';
|
|
68
|
-
/** @nocollapse */ LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocalStorageService, deps: [{ token: i1.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
-
/** @nocollapse */ LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocalStorageService });
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
71
|
-
type: Injectable
|
|
72
|
-
}], ctorParameters: function () { return [{ type: i1.LogService, decorators: [{
|
|
73
|
-
type: Optional
|
|
74
|
-
}] }]; } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUduRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxjQUFjO0lBR25ELFlBQWtDLEdBQWU7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFEc0IsUUFBRyxHQUFILEdBQUcsQ0FBWTtJQUVqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxHQUFHLENBQUMsR0FBVztRQUNYLElBQUk7WUFDQSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN2QixJQUFJO1lBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUN6QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDM0M7U0FDSjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBVztRQUNkLElBQUk7WUFDQSxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM5QztTQUNKO0lBQ0wsQ0FBQzs7QUExRE0sd0JBQUksR0FBRyxxQkFBcUIsQ0FBQzswSUFEM0IsbUJBQW1COzhJQUFuQixtQkFBbUI7a0dBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBSU0sUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2cvbG9nLnNlcnZpY2UnO1xuXG4vKipcbiAqIGxvY2FsU3RvcmFnZSBzZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIGV4dGVuZHMgU3RvcmFnZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBOQU1FID0gJ0xvY2FsU3RvcmFnZVNlcnZpY2UnO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGxvZzogTG9nU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoZSBuYW1lIG9mIHRoZSBzdG9yYWdlIHNlcnZpY2VcbiAgICAgKi9cbiAgICBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLk5BTUU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0cmlldmUgYW4gb2JqZWN0IGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHJldHVybnMgdGhlIHZhbHVlIG9yIHVuZGVmaW5lZCwgaWYgY2FzZSBvZiBlcnJvclxuICAgICAqL1xuICAgIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVkICYmIEpTT04ucGFyc2Uoc2VyaWFsaXplZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdnZXQnLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgYW4gb2JqZWN0IGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gc2V0XG4gICAgICovXG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBzZXJpYWxpemVkKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcih0aGlzLm5hbWUoKSwgJ3NldCcsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZW1vdmVzIGFuIG9iamVjdCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqL1xuICAgIHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcih0aGlzLm5hbWUoKSwgJ3JlbW92ZScsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { StorageService } from './storage.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../log/log.service";
|
|
5
|
-
/**
|
|
6
|
-
* sessionStorage service
|
|
7
|
-
*/
|
|
8
|
-
export class SessionStorageService extends StorageService {
|
|
9
|
-
constructor(log) {
|
|
10
|
-
super();
|
|
11
|
-
this.log = log;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* the name of the storage service
|
|
15
|
-
*/
|
|
16
|
-
name() {
|
|
17
|
-
return SessionStorageService.NAME;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* retrieve an object from session storage
|
|
21
|
-
* @param key the associated key
|
|
22
|
-
* @returns the value or undefined, if case of error
|
|
23
|
-
*/
|
|
24
|
-
get(key) {
|
|
25
|
-
try {
|
|
26
|
-
const serialized = sessionStorage.getItem(key);
|
|
27
|
-
return serialized && JSON.parse(serialized);
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
if (this.log) {
|
|
31
|
-
this.log.error(this.name(), 'get', err);
|
|
32
|
-
}
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* sets an object in session storage
|
|
38
|
-
* @param key the associated key
|
|
39
|
-
* @param value the value to set
|
|
40
|
-
*/
|
|
41
|
-
set(key, value) {
|
|
42
|
-
try {
|
|
43
|
-
const serialized = JSON.stringify(value);
|
|
44
|
-
sessionStorage.setItem(key, serialized);
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
if (this.log) {
|
|
48
|
-
this.log.error(this.name(), 'set', err);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* removes an object from session storage
|
|
54
|
-
* @param key the associated key
|
|
55
|
-
*/
|
|
56
|
-
remove(key) {
|
|
57
|
-
try {
|
|
58
|
-
sessionStorage.removeItem(key);
|
|
59
|
-
}
|
|
60
|
-
catch (err) {
|
|
61
|
-
if (this.log) {
|
|
62
|
-
this.log.error(this.name(), 'remove', err);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
SessionStorageService.NAME = 'SessionStorageService';
|
|
68
|
-
/** @nocollapse */ SessionStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: SessionStorageService, deps: [{ token: i1.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
-
/** @nocollapse */ SessionStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: SessionStorageService });
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: SessionStorageService, decorators: [{
|
|
71
|
-
type: Injectable
|
|
72
|
-
}], ctorParameters: function () { return [{ type: i1.LogService, decorators: [{
|
|
73
|
-
type: Optional
|
|
74
|
-
}] }]; } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2Uvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFHbkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsY0FBYztJQUdyRCxZQUFrQyxHQUFlO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBRHNCLFFBQUcsR0FBSCxHQUFHLENBQVk7SUFFakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNBLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEdBQVc7UUFDWCxJQUFJO1lBQ0EsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQyxPQUFPLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQy9DO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQzthQUMzQztZQUNELE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDdkIsSUFBSTtZQUNBLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDM0M7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNDO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDZCxJQUFJO1lBQ0EsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDOUM7U0FDSjtJQUNMLENBQUM7O0FBMURNLDBCQUFJLEdBQUcsdUJBQXVCLENBQUM7NElBRDdCLHFCQUFxQjtnSkFBckIscUJBQXFCO2tHQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQUlNLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBzZXNzaW9uU3RvcmFnZSBzZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBTdG9yYWdlU2VydmljZSB7XG4gICAgc3RhdGljIE5BTUUgPSAnU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlJztcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2c6IExvZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBzZXJ2aWNlXG4gICAgICovXG4gICAgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLk5BTUU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0cmlldmUgYW4gb2JqZWN0IGZyb20gc2Vzc2lvbiBzdG9yYWdlXG4gICAgICogQHBhcmFtIGtleSB0aGUgYXNzb2NpYXRlZCBrZXlcbiAgICAgKiBAcmV0dXJucyB0aGUgdmFsdWUgb3IgdW5kZWZpbmVkLCBpZiBjYXNlIG9mIGVycm9yXG4gICAgICovXG4gICAgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplZCAmJiBKU09OLnBhcnNlKHNlcmlhbGl6ZWQpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKHRoaXMubmFtZSgpLCAnZ2V0JywgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGFuIG9iamVjdCBpbiBzZXNzaW9uIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gc2V0XG4gICAgICovXG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIHNlcmlhbGl6ZWQpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKHRoaXMubmFtZSgpLCAnc2V0JywgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlbW92ZXMgYW4gb2JqZWN0IGZyb20gc2Vzc2lvbiBzdG9yYWdlXG4gICAgICogQHBhcmFtIGtleSB0aGUgYXNzb2NpYXRlZCBrZXlcbiAgICAgKi9cbiAgICByZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcih0aGlzLm5hbWUoKSwgJ3JlbW92ZScsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|