http-request-manager 19.0.0 → 19.2.5
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 +585 -300
- package/fesm2022/http-request-manager.mjs +9434 -3133
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/package.json +7 -9
- package/types/http-request-manager.d.ts +3546 -0
- package/esm2022/http-request-manager.mjs +0 -5
- package/esm2022/lib/http-request-manager.module.mjs +0 -186
- package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +0 -71
- package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +0 -45
- package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +0 -173
- package/esm2022/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.mjs +0 -184
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +0 -80
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +0 -42
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +0 -88
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +0 -11
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +0 -29
- package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +0 -9
- package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +0 -12
- package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +0 -14
- package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +0 -315
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +0 -270
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +0 -67
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.mjs +0 -9
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.mjs +0 -12
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.mjs +0 -14
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.mjs +0 -336
- package/esm2022/lib/index.mjs +0 -4
- package/esm2022/lib/interceptors/credentials.interceptor.mjs +0 -14
- package/esm2022/lib/interceptors/index.mjs +0 -5
- package/esm2022/lib/interceptors/models/error-settings.model.mjs +0 -10
- package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +0 -47
- package/esm2022/lib/interceptors/request-error.interceptor.mjs +0 -49
- package/esm2022/lib/interceptors/request-header.interceptor.mjs +0 -41
- package/esm2022/lib/models/config-http-options.model.mjs +0 -18
- package/esm2022/lib/models/config-local-storage-options.model.mjs +0 -12
- package/esm2022/lib/models/config-options.model.mjs +0 -12
- package/esm2022/lib/models/config-token.model.mjs +0 -8
- package/esm2022/lib/models/data-type.enum.mjs +0 -7
- package/esm2022/lib/models/database-storage.model.mjs +0 -10
- package/esm2022/lib/models/index.mjs +0 -7
- package/esm2022/lib/models/retry-options.model.mjs +0 -10
- package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +0 -119
- package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +0 -143
- package/esm2022/lib/services/database-manager-services/index.mjs +0 -4
- package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +0 -20
- package/esm2022/lib/services/index.mjs +0 -6
- package/esm2022/lib/services/local-storage-manager-service/index.mjs +0 -4
- package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +0 -302
- package/esm2022/lib/services/local-storage-manager-service/local-storage-signals-manager.service.mjs +0 -277
- package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +0 -13
- package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +0 -6
- package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +0 -17
- package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +0 -10
- package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +0 -12
- package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +0 -7
- package/esm2022/lib/services/request-manager-services/http-manager-signals.service.mjs +0 -199
- package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +0 -207
- package/esm2022/lib/services/request-manager-services/index.mjs +0 -6
- package/esm2022/lib/services/request-manager-services/request-signals.service.mjs +0 -170
- package/esm2022/lib/services/request-manager-services/request.service.mjs +0 -191
- package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +0 -9
- package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +0 -10
- package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +0 -5
- package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +0 -33
- package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +0 -19
- package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +0 -360
- package/esm2022/lib/services/request-manager-state-service/index.mjs +0 -3
- package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +0 -21
- package/esm2022/lib/services/request-manager-state-service/models/index.mjs +0 -3
- package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +0 -10
- package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +0 -12
- package/esm2022/lib/services/utils/app.service.mjs +0 -26
- package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +0 -186
- package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +0 -35
- package/esm2022/lib/services/utils/encryption/index.mjs +0 -4
- package/esm2022/lib/services/utils/encryption/random.mjs +0 -52
- package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +0 -77
- package/esm2022/lib/services/utils/headers.service.mjs +0 -21
- package/esm2022/lib/services/utils/index.mjs +0 -6
- package/esm2022/lib/services/utils/object-merger.service.mjs +0 -70
- package/esm2022/lib/services/utils/path-query.service.mjs +0 -54
- package/esm2022/lib/services/utils/utils.service.mjs +0 -155
- package/esm2022/lib/services/ws-manager-service/models/assortment-data.model.mjs +0 -10
- package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
- package/esm2022/public-api.mjs +0 -11
- package/http-request-manager-19.0.0.tgz +0 -0
- package/index.d.ts +0 -5
- package/lib/http-request-manager.module.d.ts +0 -35
- package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +0 -19
- package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +0 -32
- package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +0 -56
- package/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.d.ts +0 -55
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +0 -26
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +0 -13
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +0 -27
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +0 -12
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +0 -16
- package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +0 -8
- package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +0 -107
- package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -122
- package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +0 -15
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.d.ts +0 -8
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.d.ts +0 -106
- package/lib/index.d.ts +0 -3
- package/lib/interceptors/credentials.interceptor.d.ts +0 -8
- package/lib/interceptors/index.d.ts +0 -4
- package/lib/interceptors/models/error-settings.model.d.ts +0 -10
- package/lib/interceptors/proxy-debugger.interceptor.d.ts +0 -12
- package/lib/interceptors/request-error.interceptor.d.ts +0 -10
- package/lib/interceptors/request-header.interceptor.d.ts +0 -15
- package/lib/models/config-http-options.model.d.ts +0 -21
- package/lib/models/config-local-storage-options.model.d.ts +0 -13
- package/lib/models/config-options.model.d.ts +0 -12
- package/lib/models/config-token.model.d.ts +0 -8
- package/lib/models/data-type.enum.d.ts +0 -5
- package/lib/models/database-storage.model.d.ts +0 -10
- package/lib/models/index.d.ts +0 -6
- package/lib/models/retry-options.model.d.ts +0 -10
- package/lib/services/database-manager-services/database.manager.service.d.ts +0 -31
- package/lib/services/database-manager-services/db.storage.service.d.ts +0 -26
- package/lib/services/database-manager-services/index.d.ts +0 -3
- package/lib/services/database-manager-services/models/table-schema.d.ts +0 -11
- package/lib/services/index.d.ts +0 -4
- package/lib/services/local-storage-manager-service/index.d.ts +0 -3
- package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +0 -86
- package/lib/services/local-storage-manager-service/local-storage-signals-manager.service.d.ts +0 -64
- package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +0 -15
- package/lib/services/local-storage-manager-service/models/index.d.ts +0 -5
- package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +0 -15
- package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +0 -10
- package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +0 -13
- package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +0 -5
- package/lib/services/request-manager-services/http-manager-signals.service.d.ts +0 -38
- package/lib/services/request-manager-services/http-manager.service.d.ts +0 -41
- package/lib/services/request-manager-services/index.d.ts +0 -4
- package/lib/services/request-manager-services/request-signals.service.d.ts +0 -26
- package/lib/services/request-manager-services/request.service.d.ts +0 -28
- package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +0 -2
- package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +0 -2
- package/lib/services/request-manager-services/rxjs-operators/index.d.ts +0 -4
- package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +0 -2
- package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +0 -2
- package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +0 -64
- package/lib/services/request-manager-state-service/index.d.ts +0 -2
- package/lib/services/request-manager-state-service/models/api-request.model.d.ts +0 -30
- package/lib/services/request-manager-state-service/models/index.d.ts +0 -2
- package/lib/services/request-manager-state-service/models/request-options.model.d.ts +0 -10
- package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +0 -14
- package/lib/services/utils/app.service.d.ts +0 -8
- package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +0 -17
- package/lib/services/utils/encryption/encryption-test.service.d.ts +0 -10
- package/lib/services/utils/encryption/index.d.ts +0 -3
- package/lib/services/utils/encryption/random.d.ts +0 -7
- package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +0 -14
- package/lib/services/utils/headers.service.d.ts +0 -10
- package/lib/services/utils/index.d.ts +0 -5
- package/lib/services/utils/object-merger.service.d.ts +0 -14
- package/lib/services/utils/path-query.service.d.ts +0 -11
- package/lib/services/utils/utils.service.d.ts +0 -24
- package/lib/services/ws-manager-service/models/assortment-data.model.d.ts +0 -10
- package/lib/services/ws-manager-service/websocket.service.d.ts +0 -21
- package/public-api.d.ts +0 -7
package/esm2022/lib/services/local-storage-manager-service/local-storage-signals-manager.service.mjs
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
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.14", 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.14", ngImport: i0, type: LocalStorageSignalsManagerService, providedIn: 'root' }); }
|
|
267
|
-
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", 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==
|
package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { StorageOption } from "./storage-option.model";
|
|
2
|
-
export class GlobalStoreOptions {
|
|
3
|
-
constructor(encryption = false, expiresIn, expires, stores = []) {
|
|
4
|
-
this.encryption = encryption;
|
|
5
|
-
this.expiresIn = expiresIn;
|
|
6
|
-
this.expires = expires;
|
|
7
|
-
this.stores = stores;
|
|
8
|
-
}
|
|
9
|
-
static adapt(item) {
|
|
10
|
-
return new GlobalStoreOptions((item?.encryption) ? item.encryption : false, (item?.expiresIn) ? item.expiresIn : '', (item?.expires) ? item.expires : 0, (item?.stores) ? item.stores.map((item) => StorageOption.adapt(item)) : []);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXN0b3JlLW9wdGlvbnMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtbWFuYWdlci1zZXJ2aWNlL21vZGVscy9nbG9iYWwtc3RvcmUtb3B0aW9ucy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFTdEQsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUNTLGFBQWEsS0FBSyxFQUNsQixTQUFrQixFQUNsQixPQUFnQixFQUNoQixTQUErQixFQUFFO1FBSGpDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQTJCO0lBQ3ZDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLGtCQUFrQixDQUMzQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUM1QyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUN2QyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNoRixDQUFBO0lBRUgsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmFnZU9wdGlvbiB9IGZyb20gXCIuL3N0b3JhZ2Utb3B0aW9uLm1vZGVsXCJcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxTdG9yZU9wdGlvbnNJbnRlcmZhY2Uge1xuICBlbmNyeXB0aW9uPzogYm9vbGVhblxuICBleHBpcmVzSW4/OiBzdHJpbmdcbiAgZXhwaXJlcz86IG51bWJlclxuICBzdG9yZXM6IFN0b3JhZ2VPcHRpb25bXXxudWxsXG59XG5cbmV4cG9ydCBjbGFzcyBHbG9iYWxTdG9yZU9wdGlvbnMgaW1wbGVtZW50cyBHbG9iYWxTdG9yZU9wdGlvbnNJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbmNyeXB0aW9uID0gZmFsc2UsXG4gICAgcHVibGljIGV4cGlyZXNJbj86IHN0cmluZyxcbiAgICBwdWJsaWMgZXhwaXJlcz86IG51bWJlcixcbiAgICBwdWJsaWMgc3RvcmVzOiBTdG9yYWdlT3B0aW9uW118bnVsbCA9IFtdLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBHbG9iYWxTdG9yZU9wdGlvbnMge1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTdG9yZU9wdGlvbnMoXG4gICAgICAoaXRlbT8uZW5jcnlwdGlvbikgPyBpdGVtLmVuY3J5cHRpb24gOiBmYWxzZSxcbiAgICAgIChpdGVtPy5leHBpcmVzSW4pID8gaXRlbS5leHBpcmVzSW4gOiAnJyxcbiAgICAgIChpdGVtPy5leHBpcmVzKSA/IGl0ZW0uZXhwaXJlcyA6IDAsXG4gICAgICAoaXRlbT8uc3RvcmVzKSA/IGl0ZW0uc3RvcmVzLm1hcCgoaXRlbTogYW55KSA9PiBTdG9yYWdlT3B0aW9uLmFkYXB0KGl0ZW0pKSA6IFtdXG4gICAgKVxuXG4gIH1cblxufVxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from "./global-store-options.model";
|
|
2
|
-
export * from "./setting-options.model";
|
|
3
|
-
export * from "./storage-data.model";
|
|
4
|
-
export * from "./storage-option.model";
|
|
5
|
-
export * from "./storage-type.enum";
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtbWFuYWdlci1zZXJ2aWNlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9nbG9iYWwtc3RvcmUtb3B0aW9ucy5tb2RlbFwiXG5leHBvcnQgKiBmcm9tIFwiLi9zZXR0aW5nLW9wdGlvbnMubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JhZ2UtZGF0YS5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmFnZS1vcHRpb24ubW9kZWxcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmFnZS10eXBlLmVudW1cIjtcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { StorageType } from "./storage-type.enum";
|
|
2
|
-
export class SettingOptions {
|
|
3
|
-
constructor(storage, expires, expiresIn, encrypted) {
|
|
4
|
-
this.storage = storage;
|
|
5
|
-
this.expires = expires;
|
|
6
|
-
this.expiresIn = expiresIn;
|
|
7
|
-
this.encrypted = encrypted;
|
|
8
|
-
}
|
|
9
|
-
static adapt(item) {
|
|
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);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1vcHRpb25zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLW1hbmFnZXItc2VydmljZS9tb2RlbHMvc2V0dGluZy1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQVNqRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLE9BQXFCLEVBQ3JCLE9BQWdCLEVBQ2hCLFNBQWtCLEVBQ2xCLFNBQW1CO1FBSG5CLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM3SCxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsU0FBUyxLQUFLLFdBQVcsSUFBSSxJQUFJLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0csTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUV6SCxPQUFPLElBQUksY0FBYyxDQUN2QixPQUFPLEVBQ1AsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VUeXBlIH0gZnJvbSBcIi4vc3RvcmFnZS10eXBlLmVudW1cIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdPcHRpb25zSW50ZXJmYWNlIHtcbiAgc3RvcmFnZT86IFN0b3JhZ2VUeXBlXG4gIGV4cGlyZXM/OiBudW1iZXJcbiAgZXhwaXJlc0luPzogc3RyaW5nXG4gIGVuY3J5cHRlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNsYXNzIFNldHRpbmdPcHRpb25zIGltcGxlbWVudHMgU2V0dGluZ09wdGlvbnNJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdG9yYWdlPzogU3RvcmFnZVR5cGUsXG4gICAgcHVibGljIGV4cGlyZXM/OiBudW1iZXIsXG4gICAgcHVibGljIGV4cGlyZXNJbj86IHN0cmluZyxcbiAgICBwdWJsaWMgZW5jcnlwdGVkPzogYm9vbGVhbixcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogU2V0dGluZ09wdGlvbnMge1xuXG4gICAgY29uc3Qgc3RvcmFnZSA9ICh0eXBlb2YgaXRlbT8uc3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbT8uc3RvcmFnZSAhPT0gbnVsbCkgPyBOdW1iZXIoaXRlbS5zdG9yYWdlKSA6IFN0b3JhZ2VUeXBlLkdMT0JBTDtcbiAgICBjb25zdCBleHBpcmVzID0gKHR5cGVvZiBpdGVtPy5leHBpcmVzICE9PSAndW5kZWZpbmVkJyAmJiBpdGVtPy5leHBpcmVzICE9PSBudWxsKSA/IE51bWJlcihpdGVtLmV4cGlyZXMpIDogMDtcbiAgICBjb25zdCBleHBpcmVzSW4gPSAodHlwZW9mIGl0ZW0/LmV4cGlyZXNJbiAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbT8uZXhwaXJlc0luICE9PSBudWxsKSA/IGl0ZW0uZXhwaXJlc0luIDogJyc7XG4gICAgY29uc3QgZW5jcnlwdGVkID0gKHR5cGVvZiBpdGVtPy5lbmNyeXB0ZWQgIT09ICd1bmRlZmluZWQnICYmIGl0ZW0/LmVuY3J5cHRlZCAhPT0gbnVsbCkgPyBCb29sZWFuKGl0ZW0uZW5jcnlwdGVkKSA6IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5ldyBTZXR0aW5nT3B0aW9ucyhcbiAgICAgIHN0b3JhZ2UsXG4gICAgICBleHBpcmVzLFxuICAgICAgZXhwaXJlc0luLFxuICAgICAgZW5jcnlwdGVkLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export class StorageData {
|
|
2
|
-
constructor(id, data) {
|
|
3
|
-
this.id = id;
|
|
4
|
-
this.data = data;
|
|
5
|
-
}
|
|
6
|
-
static adapt(item) {
|
|
7
|
-
return new StorageData((item?.id) ? item.id : crypto.randomUUID(), (item?.data) ? item.data : null);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLW1hbmFnZXItc2VydmljZS9tb2RlbHMvc3RvcmFnZS1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1MsRUFBVyxFQUNYLElBQVU7UUFEVixPQUFFLEdBQUYsRUFBRSxDQUFTO1FBQ1gsU0FBSSxHQUFKLElBQUksQ0FBTTtJQUNoQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE9BQU8sSUFBSSxXQUFXLENBQ3BCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQzFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hDLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VEYXRhSW50ZXJmYWNlIHtcbiAgaWQ/OiBzdHJpbmdcbiAgZGF0YT86IGFueVxufVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZURhdGEgaW1wbGVtZW50cyBTdG9yYWdlRGF0YUludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkPzogc3RyaW5nLFxuICAgIHB1YmxpYyBkYXRhPzogYW55LFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBTdG9yYWdlRGF0YSB7XG5cbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VEYXRhKFxuICAgICAgKGl0ZW0/LmlkKSA/IGl0ZW0uaWQgOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgKGl0ZW0/LmRhdGEpID8gaXRlbS5kYXRhIDogbnVsbFxuICAgIClcblxuICB9XG5cbn1cblxuXG4iXX0=
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { SettingOptions } from "./setting-options.model";
|
|
2
|
-
export class StorageOption {
|
|
3
|
-
constructor(id, name = 'untitled', options) {
|
|
4
|
-
this.id = id;
|
|
5
|
-
this.name = name;
|
|
6
|
-
this.options = options;
|
|
7
|
-
}
|
|
8
|
-
static adapt(item) {
|
|
9
|
-
return new StorageOption((item?.id) ? item.id : crypto.randomUUID(), item?.name, (item?.options) ? SettingOptions.adapt(item.options) : SettingOptions.adapt());
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1vcHRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtbWFuYWdlci1zZXJ2aWNlL21vZGVscy9zdG9yYWdlLW9wdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFReEQsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFDUyxFQUFXLEVBQ1gsT0FBTyxVQUFVLEVBQ2pCLE9BQXdCO1FBRnhCLE9BQUUsR0FBRixFQUFFLENBQVM7UUFDWCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWlCO0lBQzlCLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFDMUMsSUFBSSxFQUFFLElBQUksRUFDVixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FDOUUsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSBcIi4vc2V0dGluZy1vcHRpb25zLm1vZGVsXCJcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlT3B0aW9uSW50ZXJmYWNlIHtcbiAgaWQ/OiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIG9wdGlvbnM/OiBTZXR0aW5nT3B0aW9uc1xufVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZU9wdGlvbiBpbXBsZW1lbnRzIFN0b3JhZ2VPcHRpb25JbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpZD86IHN0cmluZyxcbiAgICBwdWJsaWMgbmFtZSA9ICd1bnRpdGxlZCcsXG4gICAgcHVibGljIG9wdGlvbnM/OiBTZXR0aW5nT3B0aW9ucyxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogU3RvcmFnZU9wdGlvbiB7XG5cbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VPcHRpb24oXG4gICAgICAoaXRlbT8uaWQpID8gaXRlbS5pZCA6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICBpdGVtPy5uYW1lLFxuICAgICAgKGl0ZW0/Lm9wdGlvbnMpID8gU2V0dGluZ09wdGlvbnMuYWRhcHQoaXRlbS5vcHRpb25zKSA6IFNldHRpbmdPcHRpb25zLmFkYXB0KCksXG4gICAgKVxuXG4gIH1cblxufVxuXG5cbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export var StorageType;
|
|
2
|
-
(function (StorageType) {
|
|
3
|
-
StorageType[StorageType["GLOBAL"] = 0] = "GLOBAL";
|
|
4
|
-
StorageType[StorageType["SESSION"] = 1] = "SESSION";
|
|
5
|
-
StorageType[StorageType["DB"] = 2] = "DB";
|
|
6
|
-
})(StorageType || (StorageType = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtbWFuYWdlci1zZXJ2aWNlL21vZGVscy9zdG9yYWdlLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLGlEQUFNLENBQUE7SUFDTixtREFBTyxDQUFBO0lBQ1AseUNBQUUsQ0FBQTtBQUNKLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFN0b3JhZ2VUeXBlIHtcbiAgR0xPQkFMLFxuICBTRVNTSU9OLFxuICBEQlxufVxuIl19
|