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.
Files changed (166) hide show
  1. package/README.md +585 -300
  2. package/fesm2022/http-request-manager.mjs +9434 -3133
  3. package/fesm2022/http-request-manager.mjs.map +1 -1
  4. package/package.json +7 -9
  5. package/types/http-request-manager.d.ts +3546 -0
  6. package/esm2022/http-request-manager.mjs +0 -5
  7. package/esm2022/lib/http-request-manager.module.mjs +0 -186
  8. package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +0 -71
  9. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +0 -45
  10. package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +0 -173
  11. package/esm2022/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.mjs +0 -184
  12. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +0 -80
  13. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +0 -42
  14. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +0 -88
  15. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +0 -11
  16. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +0 -29
  17. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +0 -9
  18. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +0 -12
  19. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +0 -14
  20. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +0 -315
  21. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +0 -270
  22. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +0 -67
  23. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.mjs +0 -9
  24. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.mjs +0 -12
  25. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.mjs +0 -14
  26. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.mjs +0 -336
  27. package/esm2022/lib/index.mjs +0 -4
  28. package/esm2022/lib/interceptors/credentials.interceptor.mjs +0 -14
  29. package/esm2022/lib/interceptors/index.mjs +0 -5
  30. package/esm2022/lib/interceptors/models/error-settings.model.mjs +0 -10
  31. package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +0 -47
  32. package/esm2022/lib/interceptors/request-error.interceptor.mjs +0 -49
  33. package/esm2022/lib/interceptors/request-header.interceptor.mjs +0 -41
  34. package/esm2022/lib/models/config-http-options.model.mjs +0 -18
  35. package/esm2022/lib/models/config-local-storage-options.model.mjs +0 -12
  36. package/esm2022/lib/models/config-options.model.mjs +0 -12
  37. package/esm2022/lib/models/config-token.model.mjs +0 -8
  38. package/esm2022/lib/models/data-type.enum.mjs +0 -7
  39. package/esm2022/lib/models/database-storage.model.mjs +0 -10
  40. package/esm2022/lib/models/index.mjs +0 -7
  41. package/esm2022/lib/models/retry-options.model.mjs +0 -10
  42. package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +0 -119
  43. package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +0 -143
  44. package/esm2022/lib/services/database-manager-services/index.mjs +0 -4
  45. package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +0 -20
  46. package/esm2022/lib/services/index.mjs +0 -6
  47. package/esm2022/lib/services/local-storage-manager-service/index.mjs +0 -4
  48. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +0 -302
  49. package/esm2022/lib/services/local-storage-manager-service/local-storage-signals-manager.service.mjs +0 -277
  50. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +0 -13
  51. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +0 -6
  52. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +0 -17
  53. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +0 -10
  54. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +0 -12
  55. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +0 -7
  56. package/esm2022/lib/services/request-manager-services/http-manager-signals.service.mjs +0 -199
  57. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +0 -207
  58. package/esm2022/lib/services/request-manager-services/index.mjs +0 -6
  59. package/esm2022/lib/services/request-manager-services/request-signals.service.mjs +0 -170
  60. package/esm2022/lib/services/request-manager-services/request.service.mjs +0 -191
  61. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +0 -9
  62. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +0 -10
  63. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +0 -5
  64. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +0 -33
  65. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +0 -19
  66. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +0 -360
  67. package/esm2022/lib/services/request-manager-state-service/index.mjs +0 -3
  68. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +0 -21
  69. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +0 -3
  70. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +0 -10
  71. package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +0 -12
  72. package/esm2022/lib/services/utils/app.service.mjs +0 -26
  73. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +0 -186
  74. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +0 -35
  75. package/esm2022/lib/services/utils/encryption/index.mjs +0 -4
  76. package/esm2022/lib/services/utils/encryption/random.mjs +0 -52
  77. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +0 -77
  78. package/esm2022/lib/services/utils/headers.service.mjs +0 -21
  79. package/esm2022/lib/services/utils/index.mjs +0 -6
  80. package/esm2022/lib/services/utils/object-merger.service.mjs +0 -70
  81. package/esm2022/lib/services/utils/path-query.service.mjs +0 -54
  82. package/esm2022/lib/services/utils/utils.service.mjs +0 -155
  83. package/esm2022/lib/services/ws-manager-service/models/assortment-data.model.mjs +0 -10
  84. package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
  85. package/esm2022/public-api.mjs +0 -11
  86. package/http-request-manager-19.0.0.tgz +0 -0
  87. package/index.d.ts +0 -5
  88. package/lib/http-request-manager.module.d.ts +0 -35
  89. package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +0 -19
  90. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +0 -32
  91. package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +0 -56
  92. package/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.d.ts +0 -55
  93. package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +0 -26
  94. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +0 -13
  95. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +0 -27
  96. package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +0 -12
  97. package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +0 -16
  98. package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +0 -8
  99. package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +0 -14
  100. package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
  101. package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +0 -107
  102. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -122
  103. package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +0 -15
  104. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.d.ts +0 -8
  105. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.d.ts +0 -14
  106. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
  107. package/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.d.ts +0 -106
  108. package/lib/index.d.ts +0 -3
  109. package/lib/interceptors/credentials.interceptor.d.ts +0 -8
  110. package/lib/interceptors/index.d.ts +0 -4
  111. package/lib/interceptors/models/error-settings.model.d.ts +0 -10
  112. package/lib/interceptors/proxy-debugger.interceptor.d.ts +0 -12
  113. package/lib/interceptors/request-error.interceptor.d.ts +0 -10
  114. package/lib/interceptors/request-header.interceptor.d.ts +0 -15
  115. package/lib/models/config-http-options.model.d.ts +0 -21
  116. package/lib/models/config-local-storage-options.model.d.ts +0 -13
  117. package/lib/models/config-options.model.d.ts +0 -12
  118. package/lib/models/config-token.model.d.ts +0 -8
  119. package/lib/models/data-type.enum.d.ts +0 -5
  120. package/lib/models/database-storage.model.d.ts +0 -10
  121. package/lib/models/index.d.ts +0 -6
  122. package/lib/models/retry-options.model.d.ts +0 -10
  123. package/lib/services/database-manager-services/database.manager.service.d.ts +0 -31
  124. package/lib/services/database-manager-services/db.storage.service.d.ts +0 -26
  125. package/lib/services/database-manager-services/index.d.ts +0 -3
  126. package/lib/services/database-manager-services/models/table-schema.d.ts +0 -11
  127. package/lib/services/index.d.ts +0 -4
  128. package/lib/services/local-storage-manager-service/index.d.ts +0 -3
  129. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +0 -86
  130. package/lib/services/local-storage-manager-service/local-storage-signals-manager.service.d.ts +0 -64
  131. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +0 -15
  132. package/lib/services/local-storage-manager-service/models/index.d.ts +0 -5
  133. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +0 -15
  134. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +0 -10
  135. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +0 -13
  136. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +0 -5
  137. package/lib/services/request-manager-services/http-manager-signals.service.d.ts +0 -38
  138. package/lib/services/request-manager-services/http-manager.service.d.ts +0 -41
  139. package/lib/services/request-manager-services/index.d.ts +0 -4
  140. package/lib/services/request-manager-services/request-signals.service.d.ts +0 -26
  141. package/lib/services/request-manager-services/request.service.d.ts +0 -28
  142. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +0 -2
  143. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +0 -2
  144. package/lib/services/request-manager-services/rxjs-operators/index.d.ts +0 -4
  145. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +0 -2
  146. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +0 -2
  147. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +0 -64
  148. package/lib/services/request-manager-state-service/index.d.ts +0 -2
  149. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +0 -30
  150. package/lib/services/request-manager-state-service/models/index.d.ts +0 -2
  151. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +0 -10
  152. package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +0 -14
  153. package/lib/services/utils/app.service.d.ts +0 -8
  154. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +0 -17
  155. package/lib/services/utils/encryption/encryption-test.service.d.ts +0 -10
  156. package/lib/services/utils/encryption/index.d.ts +0 -3
  157. package/lib/services/utils/encryption/random.d.ts +0 -7
  158. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +0 -14
  159. package/lib/services/utils/headers.service.d.ts +0 -10
  160. package/lib/services/utils/index.d.ts +0 -5
  161. package/lib/services/utils/object-merger.service.d.ts +0 -14
  162. package/lib/services/utils/path-query.service.d.ts +0 -11
  163. package/lib/services/utils/utils.service.d.ts +0 -24
  164. package/lib/services/ws-manager-service/models/assortment-data.model.d.ts +0 -10
  165. package/lib/services/ws-manager-service/websocket.service.d.ts +0 -21
  166. package/public-api.d.ts +0 -7
@@ -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==
@@ -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