http-request-manager 18.0.12 → 18.1.1

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.
@@ -0,0 +1,277 @@
1
+ import { Inject, Injectable, Optional, signal, computed, effect, inject } from '@angular/core';
2
+ import { UtilsService } from '../utils/utils.service';
3
+ import { SymmetricalEncryptionService } from '../utils/encryption/symmetrical-encryption.service';
4
+ import { StorageOption, StorageType } from './models';
5
+ import { SettingOptions } from './models/setting-options.model';
6
+ import { EncryptionTestService } from '../utils/encryption/encryption-test.service';
7
+ import { AppService } from '../utils/app.service';
8
+ import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
9
+ import { ObjectMergerService } from '../utils/object-merger.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../request-manager-services";
12
+ const initialState = {
13
+ localStores: [],
14
+ sessionStores: [],
15
+ settings: [],
16
+ };
17
+ export class LocalStorageSignalsManagerService {
18
+ constructor(configOptions) {
19
+ this.configOptions = configOptions;
20
+ this.state = signal(initialState);
21
+ this.storageName = 'storage';
22
+ this.storageSettingsName = 'global-storage';
23
+ this.defaultOptions = SettingOptions.adapt();
24
+ this.stateRetrieved = false;
25
+ this.encrypted = false;
26
+ this.app = inject(AppService);
27
+ this.utils = inject(UtilsService);
28
+ this.objectMergerService = inject(ObjectMergerService);
29
+ this.encryption = inject(SymmetricalEncryptionService);
30
+ this.encryptionTest = inject(EncryptionTestService);
31
+ // --- SELECTORS ---
32
+ this.stores = computed(() => this.state().settings);
33
+ this.storeExists = (store) => computed(() => !!this.state().settings.find(item => item.name === store));
34
+ this.store = (store) => computed(() => {
35
+ const data = this.state();
36
+ const foundStore = data.settings.find(item => item.name === store);
37
+ if (!foundStore)
38
+ return null;
39
+ const options = SettingOptions.adapt(foundStore.options);
40
+ const found = options.storage === StorageType.GLOBAL
41
+ ? data.localStores.find(item => item.id === foundStore.id)
42
+ : data.sessionStores.find(item => item.id === foundStore.id);
43
+ if (!found) {
44
+ this.deleteStore({ name: store });
45
+ return null;
46
+ }
47
+ if (!this.app?.appID) {
48
+ console.warn('No App ID found - AppId not Provided');
49
+ return null;
50
+ }
51
+ const storageData = options.encrypted
52
+ ? this.encryption.decrypt(found.data, this.app.appID)
53
+ : found.data;
54
+ return this.isString(storageData) ? JSON.parse(storageData) : storageData;
55
+ });
56
+ this.settings = computed(() => this.state().settings);
57
+ this.setting = (store) => computed(() => this.state().settings.find(item => item.name === store) ?? null);
58
+ this.storageName = configOptions?.LocalStorageOptions?.storageName || this.storageName;
59
+ this.storageSettingsName = configOptions?.LocalStorageOptions?.storageSettingsName || this.storageSettingsName;
60
+ this.defaultOptions = configOptions?.LocalStorageOptions?.options || this.defaultOptions;
61
+ this.retrieveState();
62
+ // Auto-persist when state changes
63
+ effect(() => {
64
+ if (this.stateRetrieved) {
65
+ this.persistState(this.state());
66
+ }
67
+ });
68
+ // Expiration timer every 3s
69
+ setInterval(() => {
70
+ const state = this.state();
71
+ const expired = this.expired(state);
72
+ if (expired.length > 0) {
73
+ const ids = expired.map(i => i.id);
74
+ const updated = {
75
+ ...state,
76
+ localStores: state.localStores.filter(i => !ids.includes(i.id)),
77
+ sessionStores: state.sessionStores.filter(i => !ids.includes(i.id)),
78
+ settings: state.settings.filter(i => !ids.includes(i.id)),
79
+ };
80
+ this.state.set(updated);
81
+ this.persistState(updated);
82
+ }
83
+ }, 3000);
84
+ }
85
+ // --- STATE MUTATORS ---
86
+ setStore(store) {
87
+ this.state.update(state => {
88
+ const settings = StorageOption.adapt(store);
89
+ settings.options = this.objectMergerService.mergeStorageOptions(settings.options);
90
+ store.name = this.validStoreName(store.name);
91
+ const str = this.encryptionTest.isEncrypted(store.data) ? store.data : JSON.stringify(store.data);
92
+ const dataStr = this.isObjectOrArray(str) && store.options.encrypted
93
+ ? this.encryption.encrypt(str, this.app.appID)
94
+ : store.data;
95
+ const localData = dataStr && settings.options?.storage === StorageType.GLOBAL
96
+ ? [{ data: dataStr, id: settings.id }]
97
+ : [];
98
+ const sessionData = dataStr && settings.options?.storage === StorageType.SESSION
99
+ ? [{ data: dataStr, id: settings.id }]
100
+ : [];
101
+ return {
102
+ ...state,
103
+ localStores: [...state.localStores, ...localData],
104
+ sessionStores: [...state.sessionStores, ...sessionData],
105
+ settings: [...state.settings, settings],
106
+ };
107
+ });
108
+ }
109
+ createStore(store) {
110
+ this.state.update(state => {
111
+ const settings = StorageOption.adapt(store);
112
+ settings.options = this.objectMergerService.mergeStorageOptions(settings.options);
113
+ if (state.settings.some(item => item.name === store.name)) {
114
+ return state;
115
+ }
116
+ if (!this.isObjectOrArray(store.data)) {
117
+ console.warn('Data must be an Object or Array');
118
+ return state;
119
+ }
120
+ const dataStr = store.options.encrypted ? this.encryption.encrypt(store.data, this.app.appID) : store.data;
121
+ const localData = settings.options?.storage === StorageType.GLOBAL ? [{ data: dataStr, id: settings.id }] : [];
122
+ const sessionData = settings.options?.storage === StorageType.SESSION ? [{ data: dataStr, id: settings.id }] : [];
123
+ return {
124
+ ...state,
125
+ localStores: [...state.localStores, ...localData],
126
+ sessionStores: [...state.sessionStores, ...sessionData],
127
+ settings: [...state.settings, settings],
128
+ };
129
+ });
130
+ }
131
+ updateStore(store) {
132
+ this.state.update(state => {
133
+ const settings = state.settings.find(item => item.name === store.name);
134
+ if (!settings)
135
+ return state;
136
+ const dataStr = settings.options?.encrypted
137
+ ? this.encryption.encrypt(store.data, this.app.appID)
138
+ : store.data;
139
+ const localData = settings.options?.storage === StorageType.GLOBAL ? [{ data: dataStr, id: settings.id }] : [];
140
+ const sessionData = settings.options?.storage === StorageType.SESSION ? [{ data: dataStr, id: settings.id }] : [];
141
+ return {
142
+ ...state,
143
+ localStores: [...state.localStores.filter(i => i.id !== settings.id), ...localData],
144
+ sessionStores: [...state.sessionStores.filter(i => i.id !== settings.id), ...sessionData],
145
+ };
146
+ });
147
+ }
148
+ deleteStore(store) {
149
+ this.state.update(state => {
150
+ const id = state.settings.find(item => item.name === store.name)?.id;
151
+ if (!id)
152
+ return state;
153
+ return {
154
+ ...state,
155
+ localStores: state.localStores.filter(i => i.id !== id),
156
+ sessionStores: state.sessionStores.filter(i => i.id !== id),
157
+ settings: state.settings.filter(i => i.id !== id),
158
+ };
159
+ });
160
+ }
161
+ resetStore() {
162
+ const cleared = { localStores: [], sessionStores: [], settings: [] };
163
+ this.state.set(cleared);
164
+ this.persistState(cleared);
165
+ }
166
+ // --- HELPERS ---
167
+ persistState(state) {
168
+ localStorage.setItem(this.storageName, JSON.stringify(state.localStores));
169
+ sessionStorage.setItem(this.storageName, JSON.stringify(state.sessionStores));
170
+ const settingsStr = this.encryption.encrypt(state.settings, this.app.appID);
171
+ localStorage.setItem(this.storageSettingsName, settingsStr || '');
172
+ }
173
+ expired(state) {
174
+ return state.settings.filter(s => (s.options?.expires || 0) > 0 && this.utils.hasExpired(s.options?.expires));
175
+ }
176
+ retrieveState() {
177
+ const str = localStorage.getItem(this.storageSettingsName);
178
+ const localStr = localStorage.getItem(this.storageName);
179
+ const sessionStr = sessionStorage.getItem(this.storageName);
180
+ const localData = localStr ? JSON.parse(localStr) : [];
181
+ const sessionData = sessionStr ? JSON.parse(sessionStr) : [];
182
+ const decryptedStr = str ? this.encryption.decrypt(str, this.app.appID) : null;
183
+ const settings = decryptedStr ? JSON.parse(decryptedStr) : [];
184
+ settings.forEach(store => {
185
+ // normalize options so we compare numbers and compute expires correctly
186
+ const options = SettingOptions.adapt(store.options);
187
+ // if persisted data included expiresIn but not numeric expires, compute it now
188
+ if ((!options.expires || options.expires === 0) && options.expiresIn) {
189
+ try {
190
+ const computed = this.utils.expires(options.expiresIn);
191
+ options.expires = computed || 0;
192
+ }
193
+ catch {
194
+ options.expires = 0;
195
+ }
196
+ }
197
+ const expired = (options.expires || 0) > 0 && this.utils.hasExpired(options.expires || 0);
198
+ if (!expired) {
199
+ const hasStorage = this.hasGlobalStorage(options.storage, store.id || '');
200
+ if (!hasStorage) {
201
+ this.createStore({ id: store.id, name: store.name, data: [], options });
202
+ }
203
+ else {
204
+ const storeData = (options.storage === StorageType.GLOBAL)
205
+ ? localData.find(item => item.id === store.id)
206
+ : sessionData.find(item => item.id === store.id);
207
+ this.setStore({ id: store.id || '', name: store.name, data: storeData?.data, options });
208
+ }
209
+ }
210
+ });
211
+ this.stateRetrieved = true;
212
+ // Ensure all stored settings have numeric expires computed and persisted
213
+ try {
214
+ const current = this.state();
215
+ let changed = false;
216
+ const normalizedSettings = current.settings.map(s => {
217
+ const opts = SettingOptions.adapt(s.options);
218
+ if ((!opts.expires || opts.expires === 0) && opts.expiresIn) {
219
+ const computed = this.utils.expires(opts.expiresIn) || 0;
220
+ if (computed && computed !== opts.expires) {
221
+ opts.expires = computed;
222
+ changed = true;
223
+ }
224
+ }
225
+ return { ...s, options: opts };
226
+ });
227
+ if (changed) {
228
+ const updated = { ...current, settings: normalizedSettings };
229
+ this.state.set(updated);
230
+ this.persistState(updated);
231
+ }
232
+ }
233
+ catch (e) {
234
+ // swallow normalization errors to avoid breaking init
235
+ }
236
+ }
237
+ hasGlobalStorage(type = StorageType.GLOBAL, id) {
238
+ const strData = [];
239
+ if (type === StorageType.GLOBAL) {
240
+ const str = localStorage.getItem(this.storageName);
241
+ strData.push(...(str ? JSON.parse(str) : []));
242
+ }
243
+ else {
244
+ const str = sessionStorage.getItem(this.storageName);
245
+ strData.push(...(str ? JSON.parse(str) : []));
246
+ }
247
+ const found = strData.find(store => store.id === id);
248
+ return !!found;
249
+ }
250
+ isObjectOrArray(obj) {
251
+ try {
252
+ const parsed = typeof obj === 'object' ? obj : JSON.parse(obj);
253
+ return typeof parsed === 'object' && parsed !== null;
254
+ }
255
+ catch {
256
+ return false;
257
+ }
258
+ }
259
+ isString(obj) {
260
+ return Object.prototype.toString.call(obj) === '[object String]';
261
+ }
262
+ validStoreName(str) {
263
+ return str.toLowerCase().replace(/\s+/g, '_').replace(/[^ -~]/g, '');
264
+ }
265
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageSignalsManagerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
266
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageSignalsManagerService, providedIn: 'root' }); }
267
+ }
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageSignalsManagerService, decorators: [{
269
+ type: Injectable,
270
+ args: [{ providedIn: 'root' }]
271
+ }], ctorParameters: () => [{ type: i1.ConfigOptions, decorators: [{
272
+ type: Optional
273
+ }, {
274
+ type: Inject,
275
+ args: [CONFIG_SETTINGS_TOKEN]
276
+ }] }] });
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1zaWduYWxzLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UvbG9jYWwtc3RvcmFnZS1zaWduYWxzLW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWtCLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBUXJFLE1BQU0sWUFBWSxHQUFVO0lBQzFCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsYUFBYSxFQUFFLEVBQUU7SUFDakIsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FBR0YsTUFBTSxPQUFPLGlDQUFpQztJQTBENUMsWUFBK0QsYUFBNkI7UUFBN0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBeERwRixVQUFLLEdBQTBCLE1BQU0s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aUM7a0JBRDdDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkEyRG5CLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgV3JpdGFibGVTaWduYWwsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ltbWV0cmljYWxFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL2VuY3J5cHRpb24vc3ltbWV0cmljYWwtZW5jcnlwdGlvbi5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU3RvcmFnZU9wdGlvbiwgU3RvcmFnZVR5cGUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBTZXR0aW5nT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL3NldHRpbmctb3B0aW9ucy5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yYWdlRGF0YSB9IGZyb20gJy4vbW9kZWxzL3N0b3JhZ2UtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uVGVzdFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9lbmNyeXB0aW9uL2VuY3J5cHRpb24tdGVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMnO1xuaW1wb3J0IHsgT2JqZWN0TWVyZ2VyU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL29iamVjdC1tZXJnZXIuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGUge1xuICBsb2NhbFN0b3JlczogU3RvcmFnZURhdGFbXTtcbiAgc2Vzc2lvblN0b3JlczogU3RvcmFnZURhdGFbXTtcbiAgc2V0dGluZ3M6IFN0b3JhZ2VPcHRpb25bXTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBTdGF0ZSA9IHtcbiAgbG9jYWxTdG9yZXM6IFtdLFxuICBzZXNzaW9uU3RvcmVzOiBbXSxcbiAgc2V0dGluZ3M6IFtdLFxufTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTaWduYWxzTWFuYWdlclNlcnZpY2Uge1xuXG4gIHByaXZhdGUgc3RhdGU6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPiA9IHNpZ25hbChpbml0aWFsU3RhdGUpO1xuXG4gIHN0b3JhZ2VOYW1lID0gJ3N0b3JhZ2UnO1xuICBzdG9yYWdlU2V0dGluZ3NOYW1lID0gJ2dsb2JhbC1zdG9yYWdlJztcbiAgZGVmYXVsdE9wdGlvbnMgPSBTZXR0aW5nT3B0aW9ucy5hZGFwdCgpO1xuXG4gIHN0YXRlUmV0cmlldmVkID0gZmFsc2U7XG4gIGVuY3J5cHRlZCA9IGZhbHNlO1xuXG4gIGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgdXRpbHMgPSBpbmplY3QoVXRpbHNTZXJ2aWNlKTtcbiAgb2JqZWN0TWVyZ2VyU2VydmljZSA9IGluamVjdChPYmplY3RNZXJnZXJTZXJ2aWNlKTtcbiAgZW5jcnlwdGlvbiA9IGluamVjdChTeW1tZXRyaWNhbEVuY3J5cHRpb25TZXJ2aWNlKTtcbiAgZW5jcnlwdGlvblRlc3QgPSBpbmplY3QoRW5jcnlwdGlvblRlc3RTZXJ2aWNlKTtcblxuICAvLyAtLS0gU0VMRUNUT1JTIC0tLVxuXG4gIHJlYWRvbmx5IHN0b3JlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5zZXR0aW5ncyk7XG5cbiAgcmVhZG9ubHkgc3RvcmVFeGlzdHMgPSAoc3RvcmU6IHN0cmluZykgPT5cbiAgICBjb21wdXRlZCgoKSA9PiAhIXRoaXMuc3RhdGUoKS5zZXR0aW5ncy5maW5kKGl0ZW0gPT4gaXRlbS5uYW1lID09PSBzdG9yZSkpO1xuXG4gIHJlYWRvbmx5IHN0b3JlID0gKHN0b3JlOiBzdHJpbmcpID0+XG4gICAgY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc3RhdGUoKTtcbiAgICAgIGNvbnN0IGZvdW5kU3RvcmUgPSBkYXRhLnNldHRpbmdzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHN0b3JlKTtcbiAgICAgIGlmICghZm91bmRTdG9yZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBTZXR0aW5nT3B0aW9ucy5hZGFwdChmb3VuZFN0b3JlLm9wdGlvbnMpO1xuICAgICAgY29uc3QgZm91bmQgPVxuICAgICAgICBvcHRpb25zLnN0b3JhZ2UgPT09IFN0b3JhZ2VUeXBlLkdMT0JBTFxuICAgICAgICAgID8gZGF0YS5sb2NhbFN0b3Jlcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gZm91bmRTdG9yZS5pZClcbiAgICAgICAgICA6IGRhdGEuc2Vzc2lvblN0b3Jlcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gZm91bmRTdG9yZS5pZCk7XG5cbiAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgdGhpcy5kZWxldGVTdG9yZSh7IG5hbWU6IHN0b3JlIH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmFwcD8uYXBwSUQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyBBcHAgSUQgZm91bmQgLSBBcHBJZCBub3QgUHJvdmlkZWQnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0b3JhZ2VEYXRhID0gb3B0aW9ucy5lbmNyeXB0ZWRcbiAgICAgICAgPyB0aGlzLmVuY3J5cHRpb24uZGVjcnlwdChmb3VuZC5kYXRhLCB0aGlzLmFwcC5hcHBJRClcbiAgICAgICAgOiBmb3VuZC5kYXRhO1xuXG4gICAgICByZXR1cm4gdGhpcy5pc1N0cmluZyhzdG9yYWdlRGF0YSkgPyBKU09OLnBhcnNlKHN0b3JhZ2VEYXRhKSA6IHN0b3JhZ2VEYXRhO1xuICAgIH0pO1xuXG4gIHJlYWRvbmx5IHNldHRpbmdzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnNldHRpbmdzKTtcblxuICByZWFkb25seSBzZXR0aW5nID0gKHN0b3JlOiBzdHJpbmcpID0+XG4gICAgY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnNldHRpbmdzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHN0b3JlKSA/PyBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KENPTkZJR19TRVRUSU5HU19UT0tFTikgcHJpdmF0ZSBjb25maWdPcHRpb25zPzogQ29uZmlnT3B0aW9ucykge1xuICAgIHRoaXMuc3RvcmFnZU5hbWUgPSBjb25maWdPcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zPy5zdG9yYWdlTmFtZSB8fCB0aGlzLnN0b3JhZ2VOYW1lO1xuICAgIHRoaXMuc3RvcmFnZVNldHRpbmdzTmFtZSA9IGNvbmZpZ09wdGlvbnM/LkxvY2FsU3RvcmFnZU9wdGlvbnM/LnN0b3JhZ2VTZXR0aW5nc05hbWUgfHwgdGhpcy5zdG9yYWdlU2V0dGluZ3NOYW1lO1xuICAgIHRoaXMuZGVmYXVsdE9wdGlvbnMgPSBjb25maWdPcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zPy5vcHRpb25zIHx8IHRoaXMuZGVmYXVsdE9wdGlvbnM7XG5cbiAgICB0aGlzLnJldHJpZXZlU3RhdGUoKTtcbiAgICAvLyBBdXRvLXBlcnNpc3Qgd2hlbiBzdGF0ZSBjaGFuZ2VzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXRlUmV0cmlldmVkKSB7XG4gICAgICAgIHRoaXMucGVyc2lzdFN0YXRlKHRoaXMuc3RhdGUoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBFeHBpcmF0aW9uIHRpbWVyIGV2ZXJ5IDNzXG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG4gICAgICBjb25zdCBleHBpcmVkID0gdGhpcy5leHBpcmVkKHN0YXRlKTtcbiAgICAgIGlmIChleHBpcmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgaWRzID0gZXhwaXJlZC5tYXAoaSA9PiBpLmlkKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZDogU3RhdGUgPSB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgbG9jYWxTdG9yZXM6IHN0YXRlLmxvY2FsU3RvcmVzLmZpbHRlcihpID0+ICFpZHMuaW5jbHVkZXMoaS5pZCkpLFxuICAgICAgICAgIHNlc3Npb25TdG9yZXM6IHN0YXRlLnNlc3Npb25TdG9yZXMuZmlsdGVyKGkgPT4gIWlkcy5pbmNsdWRlcyhpLmlkKSksXG4gICAgICAgICAgc2V0dGluZ3M6IHN0YXRlLnNldHRpbmdzLmZpbHRlcihpID0+ICFpZHMuaW5jbHVkZXMoaS5pZCkpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnN0YXRlLnNldCh1cGRhdGVkKTtcbiAgICAgICAgdGhpcy5wZXJzaXN0U3RhdGUodXBkYXRlZCk7XG4gICAgICB9XG4gICAgfSwgMzAwMCk7XG4gIH1cblxuICAvLyAtLS0gU1RBVEUgTVVUQVRPUlMgLS0tXG5cbiAgc2V0U3RvcmUoc3RvcmU6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBkYXRhOiBhbnk7IG9wdGlvbnM6IFNldHRpbmdPcHRpb25zIH0pIHtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IFN0b3JhZ2VPcHRpb24uYWRhcHQoc3RvcmUpO1xuICAgICAgc2V0dGluZ3Mub3B0aW9ucyA9IHRoaXMub2JqZWN0TWVyZ2VyU2VydmljZS5tZXJnZVN0b3JhZ2VPcHRpb25zKHNldHRpbmdzLm9wdGlvbnMpO1xuICAgICAgc3RvcmUubmFtZSA9IHRoaXMudmFsaWRTdG9yZU5hbWUoc3RvcmUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHN0ciA9IHRoaXMuZW5jcnlwdGlvblRlc3QuaXNFbmNyeXB0ZWQoc3RvcmUuZGF0YSkgPyBzdG9yZS5kYXRhIDogSlNPTi5zdHJpbmdpZnkoc3RvcmUuZGF0YSk7XG4gICAgICBjb25zdCBkYXRhU3RyID1cbiAgICAgICAgdGhpcy5pc09iamVjdE9yQXJyYXkoc3RyKSAmJiBzdG9yZS5vcHRpb25zLmVuY3J5cHRlZFxuICAgICAgICAgID8gdGhpcy5lbmNyeXB0aW9uLmVuY3J5cHQoc3RyLCB0aGlzLmFwcC5hcHBJRClcbiAgICAgICAgICA6IHN0b3JlLmRhdGE7XG5cbiAgICAgIGNvbnN0IGxvY2FsRGF0YSA9XG4gICAgICAgIGRhdGFTdHIgJiYgc2V0dGluZ3Mub3B0aW9ucz8uc3RvcmFnZSA9PT0gU3RvcmFnZVR5cGUuR0xPQkFMXG4gICAgICAgICAgPyBbeyBkYXRhOiBkYXRhU3RyLCBpZDogc2V0dGluZ3MuaWQgfV1cbiAgICAgICAgICA6IFtdO1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPVxuICAgICAgICBkYXRhU3RyICYmIHNldHRpbmdzLm9wdGlvbnM/LnN0b3JhZ2UgPT09IFN0b3JhZ2VUeXBlLlNFU1NJT05cbiAgICAgICAgICA/IFt7IGRhdGE6IGRhdGFTdHIsIGlkOiBzZXR0aW5ncy5pZCB9XVxuICAgICAgICAgIDogW107XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBsb2NhbFN0b3JlczogWy4uLnN0YXRlLmxvY2FsU3RvcmVzLCAuLi5sb2NhbERhdGFdLFxuICAgICAgICBzZXNzaW9uU3RvcmVzOiBbLi4uc3RhdGUuc2Vzc2lvblN0b3JlcywgLi4uc2Vzc2lvbkRhdGFdLFxuICAgICAgICBzZXR0aW5nczogWy4uLnN0YXRlLnNldHRpbmdzLCBzZXR0aW5nc10sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlU3RvcmUoc3RvcmU6IHsgaWQ/OiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZGF0YTogYW55OyBvcHRpb25zOiBTZXR0aW5nT3B0aW9ucyB9KSB7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoc3RhdGUgPT4ge1xuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBTdG9yYWdlT3B0aW9uLmFkYXB0KHN0b3JlKTtcbiAgICAgIHNldHRpbmdzLm9wdGlvbnMgPSB0aGlzLm9iamVjdE1lcmdlclNlcnZpY2UubWVyZ2VTdG9yYWdlT3B0aW9ucyhzZXR0aW5ncy5vcHRpb25zKTtcblxuICAgICAgaWYgKHN0YXRlLnNldHRpbmdzLnNvbWUoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHN0b3JlLm5hbWUpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmlzT2JqZWN0T3JBcnJheShzdG9yZS5kYXRhKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0RhdGEgbXVzdCBiZSBhbiBPYmplY3Qgb3IgQXJyYXknKTtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhU3RyID1cbiAgICAgICAgc3RvcmUub3B0aW9ucy5lbmNyeXB0ZWQgPyB0aGlzLmVuY3J5cHRpb24uZW5jcnlwdChzdG9yZS5kYXRhLCB0aGlzLmFwcC5hcHBJRCkgOiBzdG9yZS5kYXRhO1xuXG4gICAgICBjb25zdCBsb2NhbERhdGEgPVxuICAgICAgICBzZXR0aW5ncy5vcHRpb25zPy5zdG9yYWdlID09PSBTdG9yYWdlVHlwZS5HTE9CQUwgPyBbeyBkYXRhOiBkYXRhU3RyLCBpZDogc2V0dGluZ3MuaWQgfV0gOiBbXTtcbiAgICAgIGNvbnN0IHNlc3Npb25EYXRhID1cbiAgICAgICAgc2V0dGluZ3Mub3B0aW9ucz8uc3RvcmFnZSA9PT0gU3RvcmFnZVR5cGUuU0VTU0lPTiA/IFt7IGRhdGE6IGRhdGFTdHIsIGlkOiBzZXR0aW5ncy5pZCB9XSA6IFtdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbG9jYWxTdG9yZXM6IFsuLi5zdGF0ZS5sb2NhbFN0b3JlcywgLi4ubG9jYWxEYXRhXSxcbiAgICAgICAgc2Vzc2lvblN0b3JlczogWy4uLnN0YXRlLnNlc3Npb25TdG9yZXMsIC4uLnNlc3Npb25EYXRhXSxcbiAgICAgICAgc2V0dGluZ3M6IFsuLi5zdGF0ZS5zZXR0aW5ncywgc2V0dGluZ3NdLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0b3JlKHN0b3JlOiB7IG5hbWU6IHN0cmluZzsgZGF0YTogYW55IH0pIHtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IHN0YXRlLnNldHRpbmdzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHN0b3JlLm5hbWUpO1xuICAgICAgaWYgKCFzZXR0aW5ncykgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCBkYXRhU3RyID1cbiAgICAgICAgc2V0dGluZ3Mub3B0aW9ucz8uZW5jcnlwdGVkXG4gICAgICAgICAgPyB0aGlzLmVuY3J5cHRpb24uZW5jcnlwdChzdG9yZS5kYXRhLCB0aGlzLmFwcC5hcHBJRClcbiAgICAgICAgICA6IHN0b3JlLmRhdGE7XG5cbiAgICAgIGNvbnN0IGxvY2FsRGF0YSA9XG4gICAgICAgIHNldHRpbmdzLm9wdGlvbnM/LnN0b3JhZ2UgPT09IFN0b3JhZ2VUeXBlLkdMT0JBTCA/IFt7IGRhdGE6IGRhdGFTdHIsIGlkOiBzZXR0aW5ncy5pZCB9XSA6IFtdO1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPVxuICAgICAgICBzZXR0aW5ncy5vcHRpb25zPy5zdG9yYWdlID09PSBTdG9yYWdlVHlwZS5TRVNTSU9OID8gW3sgZGF0YTogZGF0YVN0ciwgaWQ6IHNldHRpbmdzLmlkIH1dIDogW107XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBsb2NhbFN0b3JlczogWy4uLnN0YXRlLmxvY2FsU3RvcmVzLmZpbHRlcihpID0+IGkuaWQgIT09IHNldHRpbmdzLmlkKSwgLi4ubG9jYWxEYXRhXSxcbiAgICAgICAgc2Vzc2lvblN0b3JlczogWy4uLnN0YXRlLnNlc3Npb25TdG9yZXMuZmlsdGVyKGkgPT4gaS5pZCAhPT0gc2V0dGluZ3MuaWQpLCAuLi5zZXNzaW9uRGF0YV0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlU3RvcmUoc3RvcmU6IHsgbmFtZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHN0YXRlLnNldHRpbmdzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHN0b3JlLm5hbWUpPy5pZDtcbiAgICAgIGlmICghaWQpIHJldHVybiBzdGF0ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBsb2NhbFN0b3Jlczogc3RhdGUubG9jYWxTdG9yZXMuZmlsdGVyKGkgPT4gaS5pZCAhPT0gaWQpLFxuICAgICAgICBzZXNzaW9uU3RvcmVzOiBzdGF0ZS5zZXNzaW9uU3RvcmVzLmZpbHRlcihpID0+IGkuaWQgIT09IGlkKSxcbiAgICAgICAgc2V0dGluZ3M6IHN0YXRlLnNldHRpbmdzLmZpbHRlcihpID0+IGkuaWQgIT09IGlkKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICByZXNldFN0b3JlKCkge1xuICAgIGNvbnN0IGNsZWFyZWQ6IFN0YXRlID0geyBsb2NhbFN0b3JlczogW10sIHNlc3Npb25TdG9yZXM6IFtdLCBzZXR0aW5nczogW10gfTtcbiAgICB0aGlzLnN0YXRlLnNldChjbGVhcmVkKTtcbiAgICB0aGlzLnBlcnNpc3RTdGF0ZShjbGVhcmVkKTtcbiAgfVxuXG4gIC8vIC0tLSBIRUxQRVJTIC0tLVxuXG4gIHByaXZhdGUgcGVyc2lzdFN0YXRlKHN0YXRlOiBTdGF0ZSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZU5hbWUsIEpTT04uc3RyaW5naWZ5KHN0YXRlLmxvY2FsU3RvcmVzKSk7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VOYW1lLCBKU09OLnN0cmluZ2lmeShzdGF0ZS5zZXNzaW9uU3RvcmVzKSk7XG4gICAgY29uc3Qgc2V0dGluZ3NTdHIgPSB0aGlzLmVuY3J5cHRpb24uZW5jcnlwdChzdGF0ZS5zZXR0aW5ncywgdGhpcy5hcHAuYXBwSUQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZVNldHRpbmdzTmFtZSwgc2V0dGluZ3NTdHIgfHwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBpcmVkKHN0YXRlOiBTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZS5zZXR0aW5ncy5maWx0ZXIoXG4gICAgICBzID0+IChzLm9wdGlvbnM/LmV4cGlyZXMgfHwgMCkgPiAwICYmIHRoaXMudXRpbHMuaGFzRXhwaXJlZChzLm9wdGlvbnM/LmV4cGlyZXMhKVxuICAgICk7XG4gIH1cblxuICByZXRyaWV2ZVN0YXRlKCkge1xuXG4gICAgY29uc3Qgc3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlU2V0dGluZ3NOYW1lKTtcblxuICAgIGNvbnN0IGxvY2FsU3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlTmFtZSk7XG4gICAgY29uc3Qgc2Vzc2lvblN0ciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlTmFtZSk7XG5cbiAgICBjb25zdCBsb2NhbERhdGE6IFN0b3JhZ2VEYXRhW10gPSBsb2NhbFN0ciA/IEpTT04ucGFyc2UobG9jYWxTdHIpIDogW107XG4gICAgY29uc3Qgc2Vzc2lvbkRhdGE6IFN0b3JhZ2VEYXRhW10gPSBzZXNzaW9uU3RyID8gSlNPTi5wYXJzZShzZXNzaW9uU3RyKSA6IFtdO1xuXG4gICAgY29uc3QgZGVjcnlwdGVkU3RyID0gc3RyID8gdGhpcy5lbmNyeXB0aW9uLmRlY3J5cHQoc3RyLCB0aGlzLmFwcC5hcHBJRCkgOiBudWxsO1xuICAgIGNvbnN0IHNldHRpbmdzOiBTdG9yYWdlT3B0aW9uW10gPSBkZWNyeXB0ZWRTdHIgPyBKU09OLnBhcnNlKGRlY3J5cHRlZFN0cikgOiBbXTtcblxuICAgIHNldHRpbmdzLmZvckVhY2goc3RvcmUgPT4ge1xuXG5cbiAgICAgIC8vIG5vcm1hbGl6ZSBvcHRpb25zIHNvIHdlIGNvbXBhcmUgbnVtYmVycyBhbmQgY29tcHV0ZSBleHBpcmVzIGNvcnJlY3RseVxuICAgICAgY29uc3Qgb3B0aW9ucyA9IFNldHRpbmdPcHRpb25zLmFkYXB0KHN0b3JlLm9wdGlvbnMpO1xuXG4gICAgICAvLyBpZiBwZXJzaXN0ZWQgZGF0YSBpbmNsdWRlZCBleHBpcmVzSW4gYnV0IG5vdCBudW1lcmljIGV4cGlyZXMsIGNvbXB1dGUgaXQgbm93XG4gICAgICBpZiAoKCFvcHRpb25zLmV4cGlyZXMgfHwgb3B0aW9ucy5leHBpcmVzID09PSAwKSAmJiBvcHRpb25zLmV4cGlyZXNJbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbXB1dGVkID0gdGhpcy51dGlscy5leHBpcmVzKG9wdGlvbnMuZXhwaXJlc0luIGFzIHN0cmluZyk7XG4gICAgICAgICAgb3B0aW9ucy5leHBpcmVzID0gY29tcHV0ZWQgfHwgMDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgb3B0aW9ucy5leHBpcmVzID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBleHBpcmVkID0gKG9wdGlvbnMuZXhwaXJlcyB8fCAwKSA+IDAgJiYgdGhpcy51dGlscy5oYXNFeHBpcmVkKG9wdGlvbnMuZXhwaXJlcyB8fCAwKTtcblxuICAgICAgaWYgKCFleHBpcmVkKSB7XG5cbiAgICAgICAgY29uc3QgaGFzU3RvcmFnZSA9IHRoaXMuaGFzR2xvYmFsU3RvcmFnZShvcHRpb25zLnN0b3JhZ2UsIHN0b3JlLmlkIHx8ICcnKTtcblxuICAgICAgICBpZiAoIWhhc1N0b3JhZ2UpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZVN0b3JlKHsgaWQ6IHN0b3JlLmlkLCBuYW1lOiBzdG9yZS5uYW1lLCBkYXRhOiBbXSwgb3B0aW9ucyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzdG9yZURhdGEgPSAob3B0aW9ucy5zdG9yYWdlID09PSBTdG9yYWdlVHlwZS5HTE9CQUwpXG4gICAgICAgICAgICA/IGxvY2FsRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gc3RvcmUuaWQpXG4gICAgICAgICAgICA6IHNlc3Npb25EYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBzdG9yZS5pZCk7XG4gICAgICAgICAgdGhpcy5zZXRTdG9yZSh7IGlkOiBzdG9yZS5pZCB8fCAnJywgbmFtZTogc3RvcmUubmFtZSwgZGF0YTogc3RvcmVEYXRhPy5kYXRhLCBvcHRpb25zIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdGhpcy5zdGF0ZVJldHJpZXZlZCA9IHRydWU7XG5cbiAgICAvLyBFbnN1cmUgYWxsIHN0b3JlZCBzZXR0aW5ncyBoYXZlIG51bWVyaWMgZXhwaXJlcyBjb21wdXRlZCBhbmQgcGVyc2lzdGVkXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnN0YXRlKCk7XG4gICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFNldHRpbmdzID0gY3VycmVudC5zZXR0aW5ncy5tYXAocyA9PiB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBTZXR0aW5nT3B0aW9ucy5hZGFwdChzLm9wdGlvbnMpO1xuICAgICAgICBpZiAoKCFvcHRzLmV4cGlyZXMgfHwgb3B0cy5leHBpcmVzID09PSAwKSAmJiBvcHRzLmV4cGlyZXNJbikge1xuICAgICAgICAgIGNvbnN0IGNvbXB1dGVkID0gdGhpcy51dGlscy5leHBpcmVzKG9wdHMuZXhwaXJlc0luIGFzIHN0cmluZykgfHwgMDtcbiAgICAgICAgICBpZiAoY29tcHV0ZWQgJiYgY29tcHV0ZWQgIT09IG9wdHMuZXhwaXJlcykge1xuICAgICAgICAgICAgb3B0cy5leHBpcmVzID0gY29tcHV0ZWQ7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ucywgb3B0aW9uczogb3B0cyB9IGFzIFN0b3JhZ2VPcHRpb247XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZDogU3RhdGUgPSB7IC4uLmN1cnJlbnQsIHNldHRpbmdzOiBub3JtYWxpemVkU2V0dGluZ3MgfTtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQodXBkYXRlZCk7XG4gICAgICAgIHRoaXMucGVyc2lzdFN0YXRlKHVwZGF0ZWQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHN3YWxsb3cgbm9ybWFsaXphdGlvbiBlcnJvcnMgdG8gYXZvaWQgYnJlYWtpbmcgaW5pdFxuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBoYXNHbG9iYWxTdG9yYWdlKHR5cGU6IFN0b3JhZ2VUeXBlID0gU3RvcmFnZVR5cGUuR0xPQkFMLCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RyRGF0YTogU3RvcmFnZURhdGFbXSA9IFtdO1xuXG4gICAgaWYgKHR5cGUgPT09IFN0b3JhZ2VUeXBlLkdMT0JBTCkge1xuICAgICAgY29uc3Qgc3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlTmFtZSk7XG4gICAgICBzdHJEYXRhLnB1c2goLi4uKHN0ciA/IEpTT04ucGFyc2Uoc3RyKSA6IFtdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0ciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlTmFtZSk7XG4gICAgICBzdHJEYXRhLnB1c2goLi4uKHN0ciA/IEpTT04ucGFyc2Uoc3RyKSA6IFtdKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm91bmQgPSBzdHJEYXRhLmZpbmQoc3RvcmUgPT4gc3RvcmUuaWQgPT09IGlkKTtcbiAgICByZXR1cm4gISFmb3VuZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNPYmplY3RPckFycmF5KG9iajogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHR5cGVvZiBvYmogPT09ICdvYmplY3QnID8gb2JqIDogSlNPTi5wYXJzZShvYmopO1xuICAgICAgcmV0dXJuIHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnICYmIHBhcnNlZCAhPT0gbnVsbDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU3RyaW5nKG9iajogYW55KSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBTdHJpbmddJztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRTdG9yZU5hbWUoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpLnJlcGxhY2UoL1teIC1+XS9nLCAnJyk7XG4gIH1cbn1cbiJdfQ==
@@ -7,7 +7,11 @@ export class SettingOptions {
7
7
  this.encrypted = encrypted;
8
8
  }
9
9
  static adapt(item) {
10
- return new SettingOptions((item?.storage) ? item.storage : StorageType.GLOBAL, (item?.expires) ? item.expires : 0, (item?.expiresIn) ? item.expiresIn : '', (item?.encrypted) ? item?.encrypted : false);
10
+ const storage = (typeof item?.storage !== 'undefined' && item?.storage !== null) ? Number(item.storage) : StorageType.GLOBAL;
11
+ const expires = (typeof item?.expires !== 'undefined' && item?.expires !== null) ? Number(item.expires) : 0;
12
+ const expiresIn = (typeof item?.expiresIn !== 'undefined' && item?.expiresIn !== null) ? item.expiresIn : '';
13
+ const encrypted = (typeof item?.encrypted !== 'undefined' && item?.encrypted !== null) ? Boolean(item.encrypted) : false;
14
+ return new SettingOptions(storage, expires, expiresIn, encrypted);
11
15
  }
12
16
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1vcHRpb25zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLW1hbmFnZXItc2VydmljZS9tb2RlbHMvc2V0dGluZy1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQVNqRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLE9BQXFCLEVBQ3JCLE9BQWdCLEVBQ2hCLFNBQWtCLEVBQ2xCLFNBQW1CO1FBSG5CLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksY0FBYyxDQUN2QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFDbkQsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDdkMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDNUMsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VUeXBlIH0gZnJvbSBcIi4vc3RvcmFnZS10eXBlLmVudW1cIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdPcHRpb25zSW50ZXJmYWNlIHtcbiAgc3RvcmFnZT86IFN0b3JhZ2VUeXBlXG4gIGV4cGlyZXM/OiBudW1iZXJcbiAgZXhwaXJlc0luPzogc3RyaW5nXG4gIGVuY3J5cHRlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNsYXNzIFNldHRpbmdPcHRpb25zIGltcGxlbWVudHMgU2V0dGluZ09wdGlvbnNJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdG9yYWdlPzogU3RvcmFnZVR5cGUsXG4gICAgcHVibGljIGV4cGlyZXM/OiBudW1iZXIsXG4gICAgcHVibGljIGV4cGlyZXNJbj86IHN0cmluZyxcbiAgICBwdWJsaWMgZW5jcnlwdGVkPzogYm9vbGVhbixcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogU2V0dGluZ09wdGlvbnMge1xuXG4gICAgcmV0dXJuIG5ldyBTZXR0aW5nT3B0aW9ucyhcbiAgICAgIChpdGVtPy5zdG9yYWdlKSA/IGl0ZW0uc3RvcmFnZSA6IFN0b3JhZ2VUeXBlLkdMT0JBTCxcbiAgICAgIChpdGVtPy5leHBpcmVzKSA/IGl0ZW0uZXhwaXJlcyA6IDAsXG4gICAgICAoaXRlbT8uZXhwaXJlc0luKSA/IGl0ZW0uZXhwaXJlc0luIDogJycsXG4gICAgICAoaXRlbT8uZW5jcnlwdGVkKSA/IGl0ZW0/LmVuY3J5cHRlZCA6IGZhbHNlLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1vcHRpb25zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLW1hbmFnZXItc2VydmljZS9tb2RlbHMvc2V0dGluZy1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQVNqRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLE9BQXFCLEVBQ3JCLE9BQWdCLEVBQ2hCLFNBQWtCLEVBQ2xCLFNBQW1CO1FBSG5CLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM3SCxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsU0FBUyxLQUFLLFdBQVcsSUFBSSxJQUFJLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0csTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUV6SCxPQUFPLElBQUksY0FBYyxDQUN2QixPQUFPLEVBQ1AsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VUeXBlIH0gZnJvbSBcIi4vc3RvcmFnZS10eXBlLmVudW1cIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdPcHRpb25zSW50ZXJmYWNlIHtcbiAgc3RvcmFnZT86IFN0b3JhZ2VUeXBlXG4gIGV4cGlyZXM/OiBudW1iZXJcbiAgZXhwaXJlc0luPzogc3RyaW5nXG4gIGVuY3J5cHRlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNsYXNzIFNldHRpbmdPcHRpb25zIGltcGxlbWVudHMgU2V0dGluZ09wdGlvbnNJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdG9yYWdlPzogU3RvcmFnZVR5cGUsXG4gICAgcHVibGljIGV4cGlyZXM/OiBudW1iZXIsXG4gICAgcHVibGljIGV4cGlyZXNJbj86IHN0cmluZyxcbiAgICBwdWJsaWMgZW5jcnlwdGVkPzogYm9vbGVhbixcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogU2V0dGluZ09wdGlvbnMge1xuXG4gICAgY29uc3Qgc3RvcmFnZSA9ICh0eXBlb2YgaXRlbT8uc3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbT8uc3RvcmFnZSAhPT0gbnVsbCkgPyBOdW1iZXIoaXRlbS5zdG9yYWdlKSA6IFN0b3JhZ2VUeXBlLkdMT0JBTDtcbiAgICBjb25zdCBleHBpcmVzID0gKHR5cGVvZiBpdGVtPy5leHBpcmVzICE9PSAndW5kZWZpbmVkJyAmJiBpdGVtPy5leHBpcmVzICE9PSBudWxsKSA/IE51bWJlcihpdGVtLmV4cGlyZXMpIDogMDtcbiAgICBjb25zdCBleHBpcmVzSW4gPSAodHlwZW9mIGl0ZW0/LmV4cGlyZXNJbiAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbT8uZXhwaXJlc0luICE9PSBudWxsKSA/IGl0ZW0uZXhwaXJlc0luIDogJyc7XG4gICAgY29uc3QgZW5jcnlwdGVkID0gKHR5cGVvZiBpdGVtPy5lbmNyeXB0ZWQgIT09ICd1bmRlZmluZWQnICYmIGl0ZW0/LmVuY3J5cHRlZCAhPT0gbnVsbCkgPyBCb29sZWFuKGl0ZW0uZW5jcnlwdGVkKSA6IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5ldyBTZXR0aW5nT3B0aW9ucyhcbiAgICAgIHN0b3JhZ2UsXG4gICAgICBleHBpcmVzLFxuICAgICAgZXhwaXJlc0luLFxuICAgICAgZW5jcnlwdGVkLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
@@ -1,14 +1,33 @@
1
1
  import { interval } from 'rxjs';
2
2
  import { mergeMap, startWith, takeUntil, tap } from 'rxjs/operators';
3
- /**
4
- * @param pollInterval
5
- * @param stopCondition$
6
- * @param isPending$
7
- */
8
3
  export function requestPolling(pollInterval, stopCondition$, isPending$) {
9
4
  return (source) => {
10
5
  return interval(pollInterval * 1000)
11
- .pipe(startWith(0), tap(() => isPending$.next(true)), mergeMap(() => source), tap(() => isPending$.next(false)), takeUntil(stopCondition$));
6
+ .pipe(startWith(0), tap(() => {
7
+ try {
8
+ if (isPending$ && typeof isPending$.next === 'function') {
9
+ isPending$.next(true);
10
+ }
11
+ else if (isPending$ && typeof isPending$.set === 'function') {
12
+ isPending$.set(true);
13
+ }
14
+ }
15
+ catch (e) {
16
+ // no-op if setting fails
17
+ }
18
+ }), mergeMap(() => source), tap(() => {
19
+ try {
20
+ if (isPending$ && typeof isPending$.next === 'function') {
21
+ isPending$.next(false);
22
+ }
23
+ else if (isPending$ && typeof isPending$.set === 'function') {
24
+ isPending$.set(false);
25
+ }
26
+ }
27
+ catch (e) {
28
+ // no-op if setting fails
29
+ }
30
+ }), takeUntil(stopCondition$));
12
31
  };
13
32
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRTs7OztHQUlHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FBSSxZQUFvQixFQUFFLGNBQStCLEVBQUUsVUFBb0M7SUFDM0gsT0FBTyxDQUFDLE1BQXFCLEVBQWlCLEVBQUU7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDakMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBwYXJhbSBwb2xsSW50ZXJ2YWxcbiAqIEBwYXJhbSBzdG9wQ29uZGl0aW9uJFxuICogQHBhcmFtIGlzUGVuZGluZyRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFBvbGxpbmc8VD4ocG9sbEludGVydmFsOiBudW1iZXIsIHN0b3BDb25kaXRpb24kOiBPYnNlcnZhYmxlPGFueT4sIGlzUGVuZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHJldHVybiBpbnRlcnZhbChwb2xsSW50ZXJ2YWwgKiAxMDAwKVxuICAgIC5waXBlKFxuICAgICAgc3RhcnRXaXRoKDApLCBcbiAgICAgIHRhcCgoKSA9PiBpc1BlbmRpbmckLm5leHQodHJ1ZSkpLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gc291cmNlKSxcbiAgICAgIHRhcCgoKSA9PiBpc1BlbmRpbmckLm5leHQoZmFsc2UpKSxcbiAgICAgIHRha2VVbnRpbChzdG9wQ29uZGl0aW9uJCksXG4gICAgKTtcbiAgfTtcbn0iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMvcnhqcy1vcGVyYXRvcnMvcmVxdWVzdC1wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE1BQU0sVUFBVSxjQUFjLENBQUksWUFBb0IsRUFBRSxjQUErQixFQUFFLFVBQWU7SUFDdEcsT0FBTyxDQUFDLE1BQXFCLEVBQWlCLEVBQUU7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxVQUFVLElBQUksT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN4RCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixDQUFDO3FCQUFNLElBQUksVUFBVSxJQUFJLE9BQU8sVUFBVSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDOUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLHlCQUF5QjtZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUN0QixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDO2dCQUNILElBQUksVUFBVSxJQUFJLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDeEQsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsQ0FBQztxQkFBTSxJQUFJLFVBQVUsSUFBSSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzlELFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCx5QkFBeUI7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0UG9sbGluZzxUPihwb2xsSW50ZXJ2YWw6IG51bWJlciwgc3RvcENvbmRpdGlvbiQ6IE9ic2VydmFibGU8YW55PiwgaXNQZW5kaW5nJDogYW55KSB7XG4gIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgcmV0dXJuIGludGVydmFsKHBvbGxJbnRlcnZhbCAqIDEwMDApXG4gICAgLnBpcGUoXG4gICAgICBzdGFydFdpdGgoMCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChpc1BlbmRpbmckICYmIHR5cGVvZiBpc1BlbmRpbmckLm5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlzUGVuZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUGVuZGluZyQgJiYgdHlwZW9mIGlzUGVuZGluZyQuc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpc1BlbmRpbmckLnNldCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBuby1vcCBpZiBzZXR0aW5nIGZhaWxzXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gc291cmNlKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKGlzUGVuZGluZyQgJiYgdHlwZW9mIGlzUGVuZGluZyQubmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaXNQZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUGVuZGluZyQgJiYgdHlwZW9mIGlzUGVuZGluZyQuc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpc1BlbmRpbmckLnNldChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gbm8tb3AgaWYgc2V0dGluZyBmYWlsc1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbChzdG9wQ29uZGl0aW9uJCksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
1
+ import { Inject, Injectable, Optional, inject } from '@angular/core';
2
2
  import { ApiRequest } from '../request-manager-state-service/models';
3
3
  import { SettingOptions } from '../local-storage-manager-service';
4
+ import { UtilsService } from '../utils/utils.service';
4
5
  import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
5
6
  import { ConfigHTTPOptions, ConfigOptions, LocalStorageOptions } from '../request-manager-services';
6
7
  import * as i0 from "@angular/core";
@@ -8,6 +9,7 @@ import * as i1 from "../request-manager-services";
8
9
  export class ObjectMergerService {
9
10
  constructor(configOptions) {
10
11
  this.configOptions = configOptions;
12
+ this.utils = inject(UtilsService);
11
13
  if (!this.configOptions)
12
14
  this.configOptions = ConfigOptions.adapt();
13
15
  }
@@ -27,10 +29,28 @@ export class ObjectMergerService {
27
29
  const configForRoot = (this.configOptions?.LocalStorageOptions) ? this.configOptions.LocalStorageOptions : LocalStorageOptions.adapt();
28
30
  const configForRootOptions = configForRoot.options || LocalStorageOptions.adapt().options;
29
31
  const mergedOptions = SettingOptions.adapt(options);
30
- mergedOptions.storage = (options && options.storage === 0) ? configForRootOptions?.storage || 0 : options.storage;
31
- mergedOptions.expires = (options && options.expires === 0) ? configForRootOptions?.expires || 0 : options.expires;
32
- mergedOptions.expiresIn = (options && options.expiresIn === '') ? configForRootOptions?.expiresIn || '' : options.expiresIn;
33
- mergedOptions.encrypted = (options && !options.encrypted) ? configForRootOptions?.encrypted || false : options.encrypted;
32
+ // storage type
33
+ mergedOptions.storage = (options && (typeof options.storage !== 'undefined')) ? options.storage : (configForRootOptions?.storage ?? 0);
34
+ // expires: prefer explicit numeric expires; if not provided, compute from expiresIn string; otherwise use config default
35
+ // if an explicit, non-zero numeric expires is provided, use it
36
+ if (options && (typeof options.expires !== 'undefined') && options.expires !== null && Number(options.expires) > 0) {
37
+ mergedOptions.expires = Number(options.expires);
38
+ }
39
+ else if (options && options.expiresIn) {
40
+ // compute numeric epoch from expiresIn string using UtilsService if available
41
+ try {
42
+ mergedOptions.expires = this.utils ? this.utils.expires(options.expiresIn) : 0;
43
+ }
44
+ catch {
45
+ mergedOptions.expires = 0;
46
+ }
47
+ }
48
+ else {
49
+ mergedOptions.expires = configForRootOptions?.expires ?? 0;
50
+ }
51
+ // keep expiresIn string if explicitly provided, otherwise use config default
52
+ mergedOptions.expiresIn = (options && (typeof options.expiresIn !== 'undefined')) ? options.expiresIn : (configForRootOptions?.expiresIn || '');
53
+ mergedOptions.encrypted = (options && (typeof options.encrypted !== 'undefined')) ? options.encrypted : (configForRootOptions?.encrypted || false);
34
54
  return mergedOptions;
35
55
  }
36
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMergerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -47,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
47
67
  }, {
48
68
  type: Optional
49
69
  }] }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1lcmdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFLcEcsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUErRCxhQUE2QjtRQUE3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdEUsQ0FBQztJQUVGLFlBQVksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRTtRQUV2QyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDbEksTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUvQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO1FBRXhHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsYUFBYSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUUsQ0FBQTtRQUU1RSxhQUFhLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFLENBQUE7UUFFckYsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFakssYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztRQUU1RyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFlBQVksSUFBSSxLQUFLLENBQUM7UUFFOUgsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDO1FBRXRHLE9BQU8sYUFBYSxDQUFDO0lBRXZCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRTtRQUVsRCxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDdEksTUFBTSxvQkFBb0IsR0FBRyxhQUFhLENBQUMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQTtRQUV6RixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRW5ELGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUVqSCxhQUFhLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7UUFFakgsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFBO1FBRTNILGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUE7UUFFeEgsT0FBTyxhQUFhLENBQUM7SUFFdkIsQ0FBQzsrR0E5Q1UsbUJBQW1CLGtCQUVWLHFCQUFxQjttSEFGOUIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdjLE1BQU07MkJBQUMscUJBQXFCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzJztcbmltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ0hUVFBPcHRpb25zLCBDb25maWdPcHRpb25zLCBMb2NhbFN0b3JhZ2VPcHRpb25zIH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXNlcnZpY2VzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TWVyZ2VyU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHtcbiAgICAgIGlmICghdGhpcy5jb25maWdPcHRpb25zKSB0aGlzLmNvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KClcbiAgIH1cblxuICBtZXJnZU9wdGlvbnMob3B0aW9ucyA9IEFwaVJlcXVlc3QuYWRhcHQoKSkge1xuXG4gICAgY29uc3QgY29uZmlnRm9yUm9vdCA9ICh0aGlzLmNvbmZpZ09wdGlvbnM/Lmh0dHBSZXF1ZXN0T3B0aW9ucykgPyB0aGlzLmNvbmZpZ09wdGlvbnMuaHR0cFJlcXVlc3RPcHRpb25zIDogQ29uZmlnSFRUUE9wdGlvbnMuYWRhcHQoKVxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBBcGlSZXF1ZXN0LmFkYXB0KG9wdGlvbnMpXG5cbiAgICBtZXJnZWRPcHRpb25zLnNlcnZlciA9IChvcHRpb25zICYmIG9wdGlvbnMuc2VydmVyID09PSAnJykgPyBjb25maWdGb3JSb290Py5zZXJ2ZXIgfHwgJycgOiBvcHRpb25zLnNlcnZlclxuXG4gICAgbWVyZ2VkT3B0aW9ucy5wYXRoID0gWyAuLi5vcHRpb25zLnBhdGggfHwgW10sIC4uLmNvbmZpZ0ZvclJvb3Q/LnBhdGggfHwgW10gXVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5oZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfHwge30sIC4uLmNvbmZpZ0ZvclJvb3Q/LmhlYWRlcnMgfHwge30gfVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5yZXRyeSA9IChvcHRpb25zICYmIChvcHRpb25zPy5yZXRyeT8udGltZXMgIT09IDAgfHwgb3B0aW9ucz8ucmV0cnk/LmRlbGF5ICE9PSAzKSkgPyBvcHRpb25zLnJldHJ5IDogY29uZmlnRm9yUm9vdD8ucmV0cnkgfHwgeyB0aW1lczogMCwgZGVsYXk6IDMgfTtcblxuICAgIG1lcmdlZE9wdGlvbnMucG9sbGluZyA9IChvcHRpb25zICYmIG9wdGlvbnM/LnBvbGxpbmcgIT09IDApID8gb3B0aW9ucy5wb2xsaW5nIDogY29uZmlnRm9yUm9vdD8ucG9sbGluZyB8fCAwO1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5kaXNwbGF5RXJyb3IgPSAob3B0aW9ucyAmJiBvcHRpb25zPy5kaXNwbGF5RXJyb3IpID8gb3B0aW9ucy5kaXNwbGF5RXJyb3IgOiBjb25maWdGb3JSb290Py5kaXNwbGF5RXJyb3IgfHwgZmFsc2U7XG5cbiAgICBtZXJnZWRPcHRpb25zLnN0cmVhbSA9IChvcHRpb25zICYmIG9wdGlvbnM/LnN0cmVhbSkgPyBvcHRpb25zLnN0cmVhbSA6IGNvbmZpZ0ZvclJvb3Q/LnN0cmVhbSB8fCBmYWxzZTtcblxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xuXG4gIH1cblxuICBtZXJnZVN0b3JhZ2VPcHRpb25zKG9wdGlvbnMgPSBTZXR0aW5nT3B0aW9ucy5hZGFwdCgpKSB7XG5cbiAgICBjb25zdCBjb25maWdGb3JSb290ID0gKHRoaXMuY29uZmlnT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9ucykgPyB0aGlzLmNvbmZpZ09wdGlvbnMuTG9jYWxTdG9yYWdlT3B0aW9ucyA6IExvY2FsU3RvcmFnZU9wdGlvbnMuYWRhcHQoKVxuICAgIGNvbnN0IGNvbmZpZ0ZvclJvb3RPcHRpb25zID0gY29uZmlnRm9yUm9vdC5vcHRpb25zIHx8IExvY2FsU3RvcmFnZU9wdGlvbnMuYWRhcHQoKS5vcHRpb25zXG5cbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gU2V0dGluZ09wdGlvbnMuYWRhcHQob3B0aW9ucylcblxuICAgIG1lcmdlZE9wdGlvbnMuc3RvcmFnZSA9IChvcHRpb25zICYmIG9wdGlvbnMuc3RvcmFnZSA9PT0gMCkgPyBjb25maWdGb3JSb290T3B0aW9ucz8uc3RvcmFnZSB8fCAwIDogb3B0aW9ucy5zdG9yYWdlXG5cbiAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGlyZXMgPT09IDApID8gY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXMgfHwgMCA6IG9wdGlvbnMuZXhwaXJlc1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzSW4gPSAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGlyZXNJbiA9PT0gJycpID8gY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXNJbiB8fCAnJyA6IG9wdGlvbnMuZXhwaXJlc0luXG5cbiAgICBtZXJnZWRPcHRpb25zLmVuY3J5cHRlZCA9IChvcHRpb25zICYmICFvcHRpb25zLmVuY3J5cHRlZCkgPyBjb25maWdGb3JSb290T3B0aW9ucz8uZW5jcnlwdGVkIHx8IGZhbHNlIDogb3B0aW9ucy5lbmNyeXB0ZWRcblxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xuXG4gIH1cblxufVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1lcmdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUtwRyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQStELGFBQTZCO1FBQTdCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUY1RixVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3RFLENBQUM7SUFFRixZQUFZLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFFdkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2xJLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFL0MsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUV4RyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFFLENBQUE7UUFFNUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFBO1FBRXJGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRWpLLGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFFNUcsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMs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b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzJztcbmltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuc2VydmljZSc7XG5cbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnSFRUUE9wdGlvbnMsIENvbmZpZ09wdGlvbnMsIExvY2FsU3RvcmFnZU9wdGlvbnMgfSBmcm9tICcuLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RNZXJnZXJTZXJ2aWNlIHtcblxuICB1dGlscyA9IGluamVjdChVdGlsc1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zKSB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnT3B0aW9ucykgdGhpcy5jb25maWdPcHRpb25zID0gQ29uZmlnT3B0aW9ucy5hZGFwdCgpXG4gICB9XG5cbiAgbWVyZ2VPcHRpb25zKG9wdGlvbnMgPSBBcGlSZXF1ZXN0LmFkYXB0KCkpIHtcblxuICAgIGNvbnN0IGNvbmZpZ0ZvclJvb3QgPSAodGhpcy5jb25maWdPcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnMpID8gdGhpcy5jb25maWdPcHRpb25zLmh0dHBSZXF1ZXN0T3B0aW9ucyA6IENvbmZpZ0hUVFBPcHRpb25zLmFkYXB0KClcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gQXBpUmVxdWVzdC5hZGFwdChvcHRpb25zKVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5zZXJ2ZXIgPSAob3B0aW9ucyAmJiBvcHRpb25zLnNlcnZlciA9PT0gJycpID8gY29uZmlnRm9yUm9vdD8uc2VydmVyIHx8ICcnIDogb3B0aW9ucy5zZXJ2ZXJcblxuICAgIG1lcmdlZE9wdGlvbnMucGF0aCA9IFsgLi4ub3B0aW9ucy5wYXRoIHx8IFtdLCAuLi5jb25maWdGb3JSb290Py5wYXRoIHx8IFtdIF1cblxuICAgIG1lcmdlZE9wdGlvbnMuaGVhZGVycyA9IHsgLi4ub3B0aW9ucy5oZWFkZXJzIHx8IHt9LCAuLi5jb25maWdGb3JSb290Py5oZWFkZXJzIHx8IHt9IH1cblxuICAgIG1lcmdlZE9wdGlvbnMucmV0cnkgPSAob3B0aW9ucyAmJiAob3B0aW9ucz8ucmV0cnk/LnRpbWVzICE9PSAwIHx8IG9wdGlvbnM/LnJldHJ5Py5kZWxheSAhPT0gMykpID8gb3B0aW9ucy5yZXRyeSA6IGNvbmZpZ0ZvclJvb3Q/LnJldHJ5IHx8IHsgdGltZXM6IDAsIGRlbGF5OiAzIH07XG5cbiAgICBtZXJnZWRPcHRpb25zLnBvbGxpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zPy5wb2xsaW5nICE9PSAwKSA/IG9wdGlvbnMucG9sbGluZyA6IGNvbmZpZ0ZvclJvb3Q/LnBvbGxpbmcgfHwgMDtcblxuICAgIG1lcmdlZE9wdGlvbnMuZGlzcGxheUVycm9yID0gKG9wdGlvbnMgJiYgb3B0aW9ucz8uZGlzcGxheUVycm9yKSA/IG9wdGlvbnMuZGlzcGxheUVycm9yIDogY29uZmlnRm9yUm9vdD8uZGlzcGxheUVycm9yIHx8IGZhbHNlO1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5zdHJlYW0gPSAob3B0aW9ucyAmJiBvcHRpb25zPy5zdHJlYW0pID8gb3B0aW9ucy5zdHJlYW0gOiBjb25maWdGb3JSb290Py5zdHJlYW0gfHwgZmFsc2U7XG5cbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcblxuICB9XG5cbiAgbWVyZ2VTdG9yYWdlT3B0aW9ucyhvcHRpb25zID0gU2V0dGluZ09wdGlvbnMuYWRhcHQoKSkge1xuXG4gICAgY29uc3QgY29uZmlnRm9yUm9vdCA9ICh0aGlzLmNvbmZpZ09wdGlvbnM/LkxvY2FsU3RvcmFnZU9wdGlvbnMpID8gdGhpcy5jb25maWdPcHRpb25zLkxvY2FsU3RvcmFnZU9wdGlvbnMgOiBMb2NhbFN0b3JhZ2VPcHRpb25zLmFkYXB0KClcbiAgICBjb25zdCBjb25maWdGb3JSb290T3B0aW9ucyA9IGNvbmZpZ0ZvclJvb3Qub3B0aW9ucyB8fCBMb2NhbFN0b3JhZ2VPcHRpb25zLmFkYXB0KCkub3B0aW9uc1xuXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IFNldHRpbmdPcHRpb25zLmFkYXB0KG9wdGlvbnMpXG5cbiAgICAvLyBzdG9yYWdlIHR5cGVcbiAgICBtZXJnZWRPcHRpb25zLnN0b3JhZ2UgPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuc3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpKSA/IG9wdGlvbnMuc3RvcmFnZSA6IChjb25maWdGb3JSb290T3B0aW9ucz8uc3RvcmFnZSA/PyAwKVxuXG4gICAgLy8gZXhwaXJlczogcHJlZmVyIGV4cGxpY2l0IG51bWVyaWMgZXhwaXJlczsgaWYgbm90IHByb3ZpZGVkLCBjb21wdXRlIGZyb20gZXhwaXJlc0luIHN0cmluZzsgb3RoZXJ3aXNlIHVzZSBjb25maWcgZGVmYXVsdFxuICAgIC8vIGlmIGFuIGV4cGxpY2l0LCBub24temVybyBudW1lcmljIGV4cGlyZXMgaXMgcHJvdmlkZWQsIHVzZSBpdFxuICAgIGlmIChvcHRpb25zICYmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzICE9PSAndW5kZWZpbmVkJykgJiYgb3B0aW9ucy5leHBpcmVzICE9PSBudWxsICYmIE51bWJlcihvcHRpb25zLmV4cGlyZXMpID4gMCkge1xuICAgICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzID0gTnVtYmVyKG9wdGlvbnMuZXhwaXJlcyk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhwaXJlc0luKSB7XG4gICAgICAvLyBjb21wdXRlIG51bWVyaWMgZXBvY2ggZnJvbSBleHBpcmVzSW4gc3RyaW5nIHVzaW5nIFV0aWxzU2VydmljZSBpZiBhdmFpbGFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIG1lcmdlZE9wdGlvbnMuZXhwaXJlcyA9IHRoaXMudXRpbHMgPyB0aGlzLnV0aWxzLmV4cGlyZXMob3B0aW9ucy5leHBpcmVzSW4pIDogMDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSBjb25maWdGb3JSb290T3B0aW9ucz8uZXhwaXJlcyA/PyAwO1xuICAgIH1cblxuICAgIC8vIGtlZXAgZXhwaXJlc0luIHN0cmluZyBpZiBleHBsaWNpdGx5IHByb3ZpZGVkLCBvdGhlcndpc2UgdXNlIGNvbmZpZyBkZWZhdWx0XG4gICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzSW4gPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlc0luICE9PSAndW5kZWZpbmVkJykpID8gb3B0aW9ucy5leHBpcmVzSW4gOiAoY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXNJbiB8fCAnJylcblxuICAgIG1lcmdlZE9wdGlvbnMuZW5jcnlwdGVkID0gKG9wdGlvbnMgJiYgKHR5cGVvZiBvcHRpb25zLmVuY3J5cHRlZCAhPT0gJ3VuZGVmaW5lZCcpKSA/IG9wdGlvbnMuZW5jcnlwdGVkIDogKGNvbmZpZ0ZvclJvb3RPcHRpb25zPy5lbmNyeXB0ZWQgfHwgZmFsc2UpXG5cbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcblxuICB9XG5cbn1cbiJdfQ==