ng-simple-state 13.0.3 → 13.0.6
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 +6 -3
- package/esm2020/lib/ng-simple-state-base-store.mjs +27 -15
- package/esm2020/lib/ng-simple-state-browser-storage.mjs +56 -0
- package/esm2020/lib/ng-simple-state-dev-tool.mjs +7 -7
- package/esm2020/lib/ng-simple-state-local-storage.mjs +10 -55
- package/esm2020/lib/ng-simple-state-models.mjs +1 -1
- package/esm2020/lib/ng-simple-state-session-storage.mjs +15 -0
- package/esm2020/lib/ng-simple-state.module.mjs +12 -12
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/ng-simple-state.mjs +65 -43
- package/fesm2015/ng-simple-state.mjs.map +1 -1
- package/fesm2020/ng-simple-state.mjs +77 -44
- package/fesm2020/ng-simple-state.mjs.map +1 -1
- package/lib/ng-simple-state-base-store.d.ts +2 -2
- package/lib/ng-simple-state-browser-storage.d.ts +30 -0
- package/lib/ng-simple-state-local-storage.d.ts +2 -27
- package/lib/ng-simple-state-models.d.ts +1 -0
- package/lib/ng-simple-state-session-storage.d.ts +7 -0
- package/package.json +5 -8
- package/public-api.d.ts +1 -0
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ npm i ng-simple-state
|
|
|
24
24
|
| -------------------- | ----------------------------------------------------------------------------------------------- | ---------- |
|
|
25
25
|
| *enableDevTool* | if `true` enable `Redux DevTools` browser extension for inspect the state of the store. | `false` |
|
|
26
26
|
| *enableLocalStorage* | if `true` latest state of store is saved in local storage and reloaded on store initialization. | `false` |
|
|
27
|
+
| *persistentStorage* | Set the persistent storage `local` or `session` | `local` |
|
|
27
28
|
|
|
28
29
|
_Side note: each store can be override the global configuration implementing `storeConfig()` method (see "Override global config")._
|
|
29
30
|
|
|
@@ -256,9 +257,10 @@ import { NgSimpleStateStoreConfig } from 'ng-simple-state';
|
|
|
256
257
|
@Injectable()
|
|
257
258
|
export class CounterStore extends NgSimpleStateBaseStore<CounterState> {
|
|
258
259
|
|
|
259
|
-
storeConfig(): NgSimpleStateStoreConfig {
|
|
260
|
+
override storeConfig(): NgSimpleStateStoreConfig {
|
|
260
261
|
return {
|
|
261
|
-
enableLocalStorage: true // enable local storage for this store
|
|
262
|
+
enableLocalStorage: true, // enable local storage for this store
|
|
263
|
+
persistentStorage: 'session', // persistentStorage can be 'session' or 'local' (default is localStorage)
|
|
262
264
|
storeName: 'CounterStore2', // For default the store name is the class name, you can set a specific name for this store (must be be unique)
|
|
263
265
|
}
|
|
264
266
|
}
|
|
@@ -272,6 +274,7 @@ The options are defined by `NgSimpleStateStoreConfig` interface:
|
|
|
272
274
|
| *enableDevTool* | if `true` enable `Redux DevTools` browser extension for inspect the state of the store. | `false` |
|
|
273
275
|
| *enableLocalStorage* | if `true` latest state of store is saved in local storage and reloaded on store initialization. | `false` |
|
|
274
276
|
| *storeName* | The name used into `Redux DevTools` and local storage key. | Class name |
|
|
277
|
+
| *persistentStorage* | Set the persistent storage `local` or `session` | `local` |
|
|
275
278
|
|
|
276
279
|
|
|
277
280
|
## Testing
|
|
@@ -411,6 +414,6 @@ I have published some other Angular libraries, take a look:
|
|
|
411
414
|
- [NgPortal: Component property connection in Angular application](https://www.npmjs.com/package/ng-portal)
|
|
412
415
|
- [NgHttpCaching: Cache for HTTP requests in Angular application](https://www.npmjs.com/package/ng-http-caching)
|
|
413
416
|
- [NgGenericPipe: Generic pipe for Angular application](https://www.npmjs.com/package/ng-generic-pipe)
|
|
414
|
-
- [NgLet: Structural directive for sharing data as local variable into html component template](https://www.npmjs.com/package/ng-
|
|
417
|
+
- [NgLet: Structural directive for sharing data as local variable into html component template](https://www.npmjs.com/package/ng-simple-state)
|
|
415
418
|
- [NgLock: Angular decorator for lock a function and user interface while a task running](https://www.npmjs.com/package/ng-lock)
|
|
416
419
|
- [NgCondition: An alternative to `*ngIf; else` directive for simplify conditions into HTML template for Angular application](https://www.npmjs.com/package/ng-condition)
|
|
@@ -4,19 +4,29 @@ import { map, distinctUntilChanged, observeOn } from 'rxjs/operators';
|
|
|
4
4
|
import { NgSimpleStateDevTool } from './ng-simple-state-dev-tool';
|
|
5
5
|
import { NgSimpleStateLocalStorage } from './ng-simple-state-local-storage';
|
|
6
6
|
import { NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';
|
|
7
|
+
import { NgSimpleStateSessionStorage } from './ng-simple-state-session-storage';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export class NgSimpleStateBaseStore {
|
|
9
10
|
constructor(injector) {
|
|
11
|
+
this.firstState = null;
|
|
10
12
|
this.devTool = injector.get(NgSimpleStateDevTool);
|
|
11
|
-
this.localStorage = injector.get(NgSimpleStateLocalStorage);
|
|
12
13
|
const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});
|
|
13
14
|
const storeConfig = this.storeConfig() || {};
|
|
14
15
|
this.localStoreConfig = { ...globalConfig, ...storeConfig };
|
|
16
|
+
if (this.localStoreConfig.persistentStorage === 'local') {
|
|
17
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
18
|
+
}
|
|
19
|
+
else if (this.localStoreConfig.persistentStorage === 'session') {
|
|
20
|
+
this.persistentStorage = injector.get(NgSimpleStateSessionStorage);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
24
|
+
}
|
|
15
25
|
this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;
|
|
16
26
|
this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;
|
|
17
27
|
this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;
|
|
18
28
|
if (this.localStorageIsEnabled) {
|
|
19
|
-
this.firstState = this.
|
|
29
|
+
this.firstState = this.persistentStorage.getItem(this.storeName);
|
|
20
30
|
}
|
|
21
31
|
if (!this.firstState) {
|
|
22
32
|
this.firstState = this.initialState();
|
|
@@ -43,7 +53,7 @@ export class NgSimpleStateBaseStore {
|
|
|
43
53
|
* Reset store to first loaded store state
|
|
44
54
|
*/
|
|
45
55
|
resetState() {
|
|
46
|
-
this.setState(() =>
|
|
56
|
+
this.setState(() => this.firstState, 'resetState');
|
|
47
57
|
}
|
|
48
58
|
/**
|
|
49
59
|
* Reset store to initial store state
|
|
@@ -63,6 +73,7 @@ export class NgSimpleStateBaseStore {
|
|
|
63
73
|
* @param selectFn State selector (if not provided return full state)
|
|
64
74
|
* @returns Observable of the selected state
|
|
65
75
|
*/
|
|
76
|
+
// eslint-disable-next-line no-unused-vars
|
|
66
77
|
selectState(selectFn) {
|
|
67
78
|
if (!selectFn) {
|
|
68
79
|
selectFn = (tmpState) => Object.assign(this.isArray ? [] : {}, tmpState);
|
|
@@ -81,6 +92,7 @@ export class NgSimpleStateBaseStore {
|
|
|
81
92
|
* @param selectFn State reducer
|
|
82
93
|
* @param actionName The action label into Redux DevTools (default is parent function name)
|
|
83
94
|
*/
|
|
95
|
+
// eslint-disable-next-line no-unused-vars
|
|
84
96
|
setState(stateFn, actionName) {
|
|
85
97
|
const currState = this.getCurrentState();
|
|
86
98
|
const newState = stateFn(currState);
|
|
@@ -93,7 +105,7 @@ export class NgSimpleStateBaseStore {
|
|
|
93
105
|
}
|
|
94
106
|
this.devToolSend(state, actionName);
|
|
95
107
|
if (this.localStorageIsEnabled) {
|
|
96
|
-
this.
|
|
108
|
+
this.persistentStorage.setItem(this.storeName, state);
|
|
97
109
|
}
|
|
98
110
|
this.state$.next(state);
|
|
99
111
|
}
|
|
@@ -110,20 +122,20 @@ export class NgSimpleStateBaseStore {
|
|
|
110
122
|
if (!actionName) {
|
|
111
123
|
// retrive the parent (of parent) method into the stack trace
|
|
112
124
|
actionName = new Error().stack
|
|
113
|
-
|
|
125
|
+
?.split('\n')[3]
|
|
114
126
|
.trim()
|
|
115
127
|
.split(' ')[1]
|
|
116
128
|
.split('.')[1];
|
|
117
129
|
}
|
|
118
|
-
return this.devTool.send(this.storeName, actionName, newState);
|
|
130
|
+
return this.devTool.send(this.storeName, actionName || 'unknown', newState);
|
|
119
131
|
}
|
|
120
132
|
}
|
|
121
|
-
NgSimpleStateBaseStore.ɵfac =
|
|
122
|
-
NgSimpleStateBaseStore.ɵprov =
|
|
123
|
-
(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJhc2Utc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtYmFzZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQTRCLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRTVGLE1BQU0sT0FBZ0Isc0JBQXNCO0lBb0J4QyxZQUE4QixRQUFrQjtRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUU1RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUU1RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxJQUFJLENBQUMsZ0JB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QUMsQ0FBQztTQUN0QjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7NEZBakppQixzQkFBc0IsY0FvQnBCLFFBQVE7NEVBcEJWLHNCQUFzQixXQUF0QixzQkFBc0I7dUZBQXRCLHNCQUFzQjtjQUQzQyxVQUFVOztzQkFxQk0sTUFBTTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgYXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgb2JzZXJ2ZU9uIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlRGV2VG9vbCB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLWRldi10b29sJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUxvY2FsU3RvcmFnZSB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWcsIE5HX1NJTVBMRV9TVE9SRV9DT05GSUcgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1tb2RlbHMnO1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ1NpbXBsZVN0YXRlQmFzZVN0b3JlPFMgZXh0ZW5kcyBvYmplY3QgfCBBcnJheTxhbnk+PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxTPjtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sOiBOZ1NpbXBsZVN0YXRlRGV2VG9vbDtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlOiBOZ1NpbXBsZVN0YXRlTG9jYWxTdG9yYWdlO1xyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JlQ29uZmlnOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWc7XHJcbiAgICBwcml2YXRlIHN0b3JlTmFtZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBmaXJzdFN0YXRlOiBTO1xyXG4gICAgcHJpdmF0ZSBpc0FycmF5OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBvYnNlcnZhYmxlIHN0YXRlXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBzdGF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHN0YXRlKCk6IEJlaGF2aW9yU3ViamVjdDxTPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSW5qZWN0b3IpIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuZGV2VG9vbCA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlRGV2VG9vbCk7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UgPSBpbmplY3Rvci5nZXQoTmdTaW1wbGVTdGF0ZUxvY2FsU3RvcmFnZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGluamVjdG9yLmdldChOR19TSU1QTEVfU1RPUkVfQ09ORklHLCB7fSk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVDb25maWcgPSB0aGlzLnN0b3JlQ29uZmlnKCkgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JlQ29uZmlnID0geyAuLi5nbG9iYWxDb25maWcsIC4uLnN0b3JlQ29uZmlnIH07XHJcblxyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlSXNFbmFibGVkID0gdHlwZW9mIHRoaXMubG9jYWxTdG9yZUNvbmZpZy5lbmFibGVMb2NhbFN0b3JhZ2UgPT09ICdib29sZWFuJyA/IHRoaXMubG9jYWxTdG9yZUNvbmZpZy5lbmFibGVMb2NhbFN0b3JhZ2UgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmRldlRvb2xJc0VuYWJsZWQgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZURldlRvb2wgPT09ICdib29sZWFuJyA/IHRoaXMubG9jYWxTdG9yZUNvbmZpZy5lbmFibGVEZXZUb29sIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdG9yZU5hbWUgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLnN0b3JlTmFtZSA9PT0gJ3N0cmluZycgPyB0aGlzLmxvY2FsU3RvcmVDb25maWcuc3RvcmVOYW1lIDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5maXJzdFN0YXRlID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbTxTPih0aGlzLnN0b3JlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5maXJzdFN0YXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RTdGF0ZSA9IHRoaXMuaW5pdGlhbFN0YXRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRldlRvb2xTZW5kKHRoaXMuZmlyc3RTdGF0ZSwgYGluaXRpYWxTdGF0ZWApO1xyXG5cclxuICAgICAgICB0aGlzLmlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuZmlyc3RTdGF0ZSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFM+KE9iamVjdC5hc3NpZ24odGhpcy5pc0FycmF5ID8gW10gOiB7fSwgdGhpcy5maXJzdFN0YXRlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHlvdSBvdmVycmlkZSB0aGlzIG1ldGhvZCwgeW91IGhhdmUgdG8gY2FsbCB0aGUgYHN1cGVyLm5nT25EZXN0cm95KClgIG1ldGhvZCBpbiB5b3VyIGBuZ09uRGVzdHJveSgpYCBtZXRob2QuXHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGV2VG9vbFNlbmQodW5kZWZpbmVkLCAnbmdPbkRlc3Ryb3knKTtcclxuICAgICAgICB0aGlzLnN0YXRlJC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzZXQgc3RvcmUgdG8gZmlyc3QgbG9hZGVkIHN0b3JlIHN0YXRlXHJcbiAgICAgKi9cclxuICAgIHJlc2V0U3RhdGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSgoKSA9PiAodGhpcy5maXJzdFN0YXRlKSwgJ3Jlc2V0U3RhdGUnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0IHN0b3JlIHRvIGluaXRpYWwgc3RvcmUgc3RhdGVcclxuICAgICAqL1xyXG4gICAgcmVzdGFydFN0YXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoKCkgPT4gKHRoaXMuaW5pdGlhbFN0YXRlKCkpLCAncmVzdGFydFN0YXRlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdmVycmlkZSB0aGlzIG1ldGhvZCBmb3Igc2V0IGEgc3BlY2lmaWMgY29uZmlnIGZvciB0aGUgc3RvcmVcclxuICAgICAqIEByZXR1cm5zIE5nU2ltcGxlU3RhdGVTdG9yZUNvbmZpZ1xyXG4gICAgICovXHJcbiAgICBzdG9yZUNvbmZpZygpOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWcge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGludG8gdGhlIHN0b3JlIHRoZSBpbml0aWFsIHN0YXRlXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgc3RhdGUgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0aWFsU3RhdGUoKTogUztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdCBhIHN0b3JlIHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0Rm4gU3RhdGUgc2VsZWN0b3IgKGlmIG5vdCBwcm92aWRlZCByZXR1cm4gZnVsbCBzdGF0ZSlcclxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHNlbGVjdGVkIHN0YXRlXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdFN0YXRlPEs+KHNlbGVjdEZuPzogKHN0YXRlOiBSZWFkb25seTxTPikgPT4gSyk6IE9ic2VydmFibGU8Sz4ge1xyXG4gICAgICAgIGlmICghc2VsZWN0Rm4pIHtcclxuICAgICAgICAgICAgc2VsZWN0Rm4gPSAodG1wU3RhdGU6IFJlYWRvbmx5PFM+KTogYW55ID0+IE9iamVjdC5hc3NpZ24odGhpcy5pc0FycmF5ID8gW10gOiB7fSwgdG1wU3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgICAgICAgbWFwKHN0YXRlID0+IHNlbGVjdEZuKHN0YXRlIGFzIFJlYWRvbmx5PFM+KSksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlcilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHN0b3JlIHN0YXRlIChzbmFwc2hvdClcclxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldEN1cnJlbnRTdGF0ZSgpOiBTIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQuZ2V0VmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBhIG5ldyBzdGF0ZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdEZuIFN0YXRlIHJlZHVjZXJcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbGFiZWwgaW50byBSZWR1eCBEZXZUb29scyAoZGVmYXVsdCBpcyBwYXJlbnQgZnVuY3Rpb24gbmFtZSlcclxuICAgICAqL1xyXG4gICAgc2V0U3RhdGUoc3RhdGVGbjogKGN1cnJlbnRTdGF0ZTogUmVhZG9ubHk8Uz4pID0+IFBhcnRpYWw8Uz4sIGFjdGlvbk5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjdXJyU3RhdGUgPSB0aGlzLmdldEN1cnJlbnRTdGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0gc3RhdGVGbihjdXJyU3RhdGUpO1xyXG4gICAgICAgIGxldCBzdGF0ZTogUztcclxuICAgICAgICBpZiAodGhpcy5pc0FycmF5KSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0gT2JqZWN0LmFzc2lnbihbXSwgbmV3U3RhdGUpIGFzIGFueTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGN1cnJTdGF0ZSwgbmV3U3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldlRvb2xTZW5kKHN0YXRlLCBhY3Rpb25OYW1lKTtcclxuICAgICAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbTxTPih0aGlzLnN0b3JlTmFtZSwgc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgdG8gZGV2IHRvb2wgYSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBuZXdTdGF0ZSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBmw6xkZXYgdG9vbHMgYXJlIGVuYWJsZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sU2VuZChuZXdTdGF0ZTogUywgYWN0aW9uTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5kZXZUb29sSXNFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhY3Rpb25OYW1lKSB7XHJcbiAgICAgICAgICAgIC8vIHJldHJpdmUgdGhlIHBhcmVudCAob2YgcGFyZW50KSBtZXRob2QgaW50byB0aGUgc3RhY2sgdHJhY2VcclxuICAgICAgICAgICAgYWN0aW9uTmFtZSA9IG5ldyBFcnJvcigpLnN0YWNrXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoJ1xcbicpWzNdXHJcbiAgICAgICAgICAgICAgICAudHJpbSgpXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKVsxXVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcuJylbMV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmRldlRvb2wuc2VuZCh0aGlzLnN0b3JlTmFtZSwgYWN0aW9uTmFtZSwgbmV3U3RhdGUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
133
|
+
NgSimpleStateBaseStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
134
|
+
NgSimpleStateBaseStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore });
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore, decorators: [{
|
|
136
|
+
type: Injectable
|
|
137
|
+
}], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
|
|
138
|
+
type: Inject,
|
|
139
|
+
args: [Injector]
|
|
140
|
+
}] }]; } });
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJhc2Utc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtYmFzZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQTRCLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBRWhGLE1BQU0sT0FBZ0Isc0JBQXNCO0lBb0J4QyxZQUE4QixRQUFrQjtRQVh4QyxlQUFVLEdBQWEsSUFBSSxDQUFDO1FBWWhDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWxELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFp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QUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFdBQVcsQ0FBQyxRQUF1QixFQUFFLFVBQW1CO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsNkRBQTZEO1lBQzdELFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUs7Z0JBQzFCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDZixJQUFJLEVBQUU7aUJBQ04sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEI7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxJQUFJLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDOzttSEExSmlCLHNCQUFzQixrQkFvQnBCLFFBQVE7dUhBcEJWLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUQzQyxVQUFVOzswQkFxQk0sTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgYXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgb2JzZXJ2ZU9uIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlQnJvd3NlclN0b3JhZ2UgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1icm93c2VyLXN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlRGV2VG9vbCB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLWRldi10b29sJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUxvY2FsU3RvcmFnZSB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWcsIE5HX1NJTVBMRV9TVE9SRV9DT05GSUcgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlU2Vzc2lvblN0b3JhZ2UgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1zZXNzaW9uLXN0b3JhZ2UnO1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ1NpbXBsZVN0YXRlQmFzZVN0b3JlPFMgZXh0ZW5kcyBvYmplY3QgfCBBcnJheTxhbnk+PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxTPjtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sOiBOZ1NpbXBsZVN0YXRlRGV2VG9vbDtcclxuICAgIHByaXZhdGUgcGVyc2lzdGVudFN0b3JhZ2U6IE5nU2ltcGxlU3RhdGVCcm93c2VyU3RvcmFnZTtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yZUNvbmZpZzogTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnO1xyXG4gICAgcHJpdmF0ZSBzdG9yZU5hbWU6IHN0cmluZztcclxuICAgIHByaXZhdGUgZmlyc3RTdGF0ZTogUyB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBpc0FycmF5OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBvYnNlcnZhYmxlIHN0YXRlXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBzdGF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHN0YXRlKCk6IEJlaGF2aW9yU3ViamVjdDxTPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSW5qZWN0b3IpIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuZGV2VG9vbCA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlRGV2VG9vbCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGluamVjdG9yLmdldChOR19TSU1QTEVfU1RPUkVfQ09ORklHLCB7fSk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVDb25maWcgPSB0aGlzLnN0b3JlQ29uZmlnKCkgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JlQ29uZmlnID0geyAuLi5nbG9iYWxDb25maWcsIC4uLnN0b3JlQ29uZmlnIH07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmVDb25maWcucGVyc2lzdGVudFN0b3JhZ2UgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlTG9jYWxTdG9yYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxTdG9yZUNvbmZpZy5wZXJzaXN0ZW50U3RvcmFnZSA9PT0gJ3Nlc3Npb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVudFN0b3JhZ2UgPSBpbmplY3Rvci5nZXQoTmdTaW1wbGVTdGF0ZVNlc3Npb25TdG9yYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBlcnNpc3RlbnRTdG9yYWdlID0gaW5qZWN0b3IuZ2V0KE5nU2ltcGxlU3RhdGVMb2NhbFN0b3JhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZUxvY2FsU3RvcmFnZSA9PT0gJ2Jvb2xlYW4nID8gdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZUxvY2FsU3RvcmFnZSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGV2VG9vbElzRW5hYmxlZCA9IHR5cGVvZiB0aGlzLmxvY2FsU3RvcmVDb25maWcuZW5hYmxlRGV2VG9vbCA9PT0gJ2Jvb2xlYW4nID8gdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZURldlRvb2wgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0b3JlTmFtZSA9IHR5cGVvZiB0aGlzLmxvY2FsU3RvcmVDb25maWcuc3RvcmVOYW1lID09PSAnc3RyaW5nJyA/IHRoaXMubG9jYWxTdG9yZUNvbmZpZy5zdG9yZU5hbWUgOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZUlzRW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpcnN0U3RhdGUgPSB0aGlzLnBlcnNpc3RlbnRTdG9yYWdlLmdldEl0ZW08Uz4odGhpcy5zdG9yZU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuZmlyc3RTdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpcnN0U3RhdGUgPSB0aGlzLmluaXRpYWxTdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kZXZUb29sU2VuZCh0aGlzLmZpcnN0U3RhdGUsIGBpbml0aWFsU3RhdGVgKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSh0aGlzLmZpcnN0U3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTPihPYmplY3QuYXNzaWduKHRoaXMuaXNBcnJheSA/IFtdIDoge30sIHRoaXMuZmlyc3RTdGF0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB5b3Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QsIHlvdSBoYXZlIHRvIGNhbGwgdGhlIGBzdXBlci5uZ09uRGVzdHJveSgpYCBtZXRob2QgaW4geW91ciBgbmdPbkRlc3Ryb3koKWAgbWV0aG9kLlxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRldlRvb2xTZW5kKHVuZGVmaW5lZCwgJ25nT25EZXN0cm95Jyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0IHN0b3JlIHRvIGZpcnN0IGxvYWRlZCBzdG9yZSBzdGF0ZVxyXG4gICAgICovXHJcbiAgICByZXNldFN0YXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoKCkgPT4gKHRoaXMuZmlyc3RTdGF0ZSBhcyBTKSwgJ3Jlc2V0U3RhdGUnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0IHN0b3JlIHRvIGluaXRpYWwgc3RvcmUgc3RhdGVcclxuICAgICAqL1xyXG4gICAgcmVzdGFydFN0YXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoKCkgPT4gKHRoaXMuaW5pdGlhbFN0YXRlKCkpLCAncmVzdGFydFN0YXRlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdmVycmlkZSB0aGlzIG1ldGhvZCBmb3Igc2V0IGEgc3BlY2lmaWMgY29uZmlnIGZvciB0aGUgc3RvcmVcclxuICAgICAqIEByZXR1cm5zIE5nU2ltcGxlU3RhdGVTdG9yZUNvbmZpZ1xyXG4gICAgICovXHJcbiAgICBzdG9yZUNvbmZpZygpOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWcgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBpbnRvIHRoZSBzdG9yZSB0aGUgaW5pdGlhbCBzdGF0ZVxyXG4gICAgICogQHJldHVybnMgVGhlIHN0YXRlIG9iamVjdFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5pdGlhbFN0YXRlKCk6IFM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWxlY3QgYSBzdG9yZSBzdGF0ZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdEZuIFN0YXRlIHNlbGVjdG9yIChpZiBub3QgcHJvdmlkZWQgcmV0dXJuIGZ1bGwgc3RhdGUpXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBzZWxlY3RlZCBzdGF0ZVxyXG4gICAgICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHNlbGVjdFN0YXRlPEs+KHNlbGVjdEZuPzogKHN0YXRlOiBSZWFkb25seTxTPikgPT4gSyk6IE9ic2VydmFibGU8Sz4ge1xyXG4gICAgICAgIGlmICghc2VsZWN0Rm4pIHtcclxuICAgICAgICAgICAgc2VsZWN0Rm4gPSAodG1wU3RhdGU6IFJlYWRvbmx5PFM+KTogYW55ID0+IE9iamVjdC5hc3NpZ24odGhpcy5pc0FycmF5ID8gW10gOiB7fSwgdG1wU3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgICAgICAgbWFwKHN0YXRlID0+IChzZWxlY3RGbiBhcyBhbnkpKHN0YXRlIGFzIFJlYWRvbmx5PFM+KSksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlcilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHN0b3JlIHN0YXRlIChzbmFwc2hvdClcclxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldEN1cnJlbnRTdGF0ZSgpOiBTIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQuZ2V0VmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBhIG5ldyBzdGF0ZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdEZuIFN0YXRlIHJlZHVjZXJcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbGFiZWwgaW50byBSZWR1eCBEZXZUb29scyAoZGVmYXVsdCBpcyBwYXJlbnQgZnVuY3Rpb24gbmFtZSlcclxuICAgICAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBzZXRTdGF0ZShzdGF0ZUZuOiAoY3VycmVudFN0YXRlOiBSZWFkb25seTxTPikgPT4gUGFydGlhbDxTPiwgYWN0aW9uTmFtZT86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1cnJTdGF0ZSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlKCk7XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBzdGF0ZUZuKGN1cnJTdGF0ZSk7XHJcbiAgICAgICAgbGV0IHN0YXRlOiBTO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQXJyYXkpIHtcclxuICAgICAgICAgICAgc3RhdGUgPSBPYmplY3QuYXNzaWduKFtdLCBuZXdTdGF0ZSkgYXMgYW55O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY3VyclN0YXRlLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGV2VG9vbFNlbmQoc3RhdGUsIGFjdGlvbk5hbWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZUlzRW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBlcnNpc3RlbnRTdG9yYWdlLnNldEl0ZW08Uz4odGhpcy5zdG9yZU5hbWUsIHN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGF0ZSQubmV4dChzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kIHRvIGRldiB0b29sIGEgbmV3IHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gbmV3U3RhdGUgbmV3IHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uTmFtZSBUaGUgYWN0aW9uIG5hbWVcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZsOsZGV2IHRvb2xzIGFyZSBlbmFibGVkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZGV2VG9vbFNlbmQobmV3U3RhdGU6IFMgfCB1bmRlZmluZWQsIGFjdGlvbk5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGV2VG9vbElzRW5hYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYWN0aW9uTmFtZSkge1xyXG4gICAgICAgICAgICAvLyByZXRyaXZlIHRoZSBwYXJlbnQgKG9mIHBhcmVudCkgbWV0aG9kIGludG8gdGhlIHN0YWNrIHRyYWNlXHJcbiAgICAgICAgICAgIGFjdGlvbk5hbWUgPSBuZXcgRXJyb3IoKS5zdGFja1xyXG4gICAgICAgICAgICAgICAgPy5zcGxpdCgnXFxuJylbM11cclxuICAgICAgICAgICAgICAgIC50cmltKClcclxuICAgICAgICAgICAgICAgIC5zcGxpdCgnICcpWzFdXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoJy4nKVsxXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGV2VG9vbC5zZW5kKHRoaXMuc3RvcmVOYW1lLCBhY3Rpb25OYW1lIHx8ICd1bmtub3duJywgbmV3U3RhdGUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export const BASE_KEY = 'NgSimpleState::';
|
|
2
|
+
export class NgSimpleStateBrowserStorage {
|
|
3
|
+
// eslint-disable-next-line no-unused-vars
|
|
4
|
+
constructor(storage) {
|
|
5
|
+
this.storage = storage;
|
|
6
|
+
this.isStorageActive = false;
|
|
7
|
+
this.isStorageActive = !!localStorage;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Return true if local storage is active
|
|
11
|
+
* @returns True if local storage is active
|
|
12
|
+
*/
|
|
13
|
+
isActive() {
|
|
14
|
+
return this.isStorageActive;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Set item into local storage
|
|
18
|
+
* @param key key name
|
|
19
|
+
* @param state state valie
|
|
20
|
+
* @returns True if item is stored into local storage
|
|
21
|
+
*/
|
|
22
|
+
setItem(key, state) {
|
|
23
|
+
if (this.isStorageActive) {
|
|
24
|
+
this.storage.setItem(BASE_KEY + key, JSON.stringify(state));
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Return item from local storage
|
|
31
|
+
* @param key key name
|
|
32
|
+
* @returns the item
|
|
33
|
+
*/
|
|
34
|
+
getItem(key) {
|
|
35
|
+
if (this.isStorageActive) {
|
|
36
|
+
const state = this.storage.getItem(BASE_KEY + key);
|
|
37
|
+
if (state) {
|
|
38
|
+
return JSON.parse(state);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Remove item from local storage
|
|
45
|
+
* @param key key name
|
|
46
|
+
* @returns True if item is removed
|
|
47
|
+
*/
|
|
48
|
+
removeItem(key) {
|
|
49
|
+
if (this.isStorageActive) {
|
|
50
|
+
this.storage.removeItem(BASE_KEY + key);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJyb3dzZXItc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1icm93c2VyLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDO0FBRTFDLE1BQU0sT0FBZ0IsMkJBQTJCO0lBSTdDLDBDQUEwQztJQUMxQyxZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBSDVCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSTVCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUksR0FBVyxFQUFFLEtBQVE7UUFDNUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBSSxHQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDbkQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBCQVNFX0tFWSA9ICdOZ1NpbXBsZVN0YXRlOjonO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nU2ltcGxlU3RhdGVCcm93c2VyU3RvcmFnZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBpc1N0b3JhZ2VBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSkge1xyXG4gICAgICAgIHRoaXMuaXNTdG9yYWdlQWN0aXZlID0gISFsb2NhbFN0b3JhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBsb2NhbCBzdG9yYWdlIGlzIGFjdGl2ZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBsb2NhbCBzdG9yYWdlIGlzIGFjdGl2ZVxyXG4gICAgICovXHJcbiAgICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1N0b3JhZ2VBY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgaXRlbSBpbnRvIGxvY2FsIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkga2V5IG5hbWVcclxuICAgICAqIEBwYXJhbSBzdGF0ZSBzdGF0ZSB2YWxpZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHN0b3JlZCBpbnRvIGxvY2FsIHN0b3JhZ2VcclxuICAgICAqL1xyXG4gICAgc2V0SXRlbTxLPihrZXk6IHN0cmluZywgc3RhdGU6IEspOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc1N0b3JhZ2VBY3RpdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oQkFTRV9LRVkgKyBrZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gaXRlbSBmcm9tIGxvY2FsIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkga2V5IG5hbWVcclxuICAgICAqIEByZXR1cm5zIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIGdldEl0ZW08Sz4oa2V5OiBzdHJpbmcpOiBLIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9yYWdlQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oQkFTRV9LRVkgKyBrZXkpO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBrZXkgbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHJlbW92ZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU3RvcmFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShCQVNFX0tFWSArIGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -40,10 +40,10 @@ export class NgSimpleStateDevTool {
|
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
NgSimpleStateDevTool.ɵfac =
|
|
44
|
-
NgSimpleStateDevTool.ɵprov =
|
|
45
|
-
(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
NgSimpleStateDevTool.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
NgSimpleStateDevTool.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, providedIn: 'root' });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, decorators: [{
|
|
46
|
+
type: Injectable,
|
|
47
|
+
args: [{ providedIn: 'root' }]
|
|
48
|
+
}], ctorParameters: function () { return []; } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWRldi10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctc2ltcGxlLXN0YXRlL3NyYy9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFTN0I7UUFQQSw4Q0FBOEM7UUFDdEMsbUJBQWMsR0FBUyxNQUFjLENBQUMsOEJBQThCLENBQUMsSUFBSyxNQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU5RyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdDLGNBQVMsR0FBMkIsRUFBRSxDQUFDO1FBRzNDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxJQUFJLEVBQUUsZUFBZTtnQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzlCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUM7U0FDSjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsU0FBaUIsRUFBRSxVQUFrQixFQUFFLEtBQVU7UUFDbEQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BJLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztpSEEzQ1Esb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzJGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5nU2ltcGxlU3RhdGVEZXZUb29sIHtcclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXHJcbiAgICBwcml2YXRlIGdsb2JhbERldnRvb2xzOiBhbnkgPSAod2luZG93IGFzIGFueSlbJ19fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18nXSB8fCAod2luZG93IGFzIGFueSlbJ2RldlRvb2xzRXh0ZW5zaW9uJ107XHJcbiAgICBwcml2YXRlIGxvY2FsRGV2VG9vbDogYW55O1xyXG4gICAgcHJpdmF0ZSBpc0FjdGl2ZURldnRvb2wgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgaW5zdGFuY2VJZCA9IGBuZy1zaW1wbGUtc3RhdGUtJHtEYXRlLm5vdygpfWA7XHJcbiAgICBwcml2YXRlIGJhc2VTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbERldnRvb2xzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYWxEZXZUb29sID0gdGhpcy5nbG9iYWxEZXZ0b29scy5jb25uZWN0KHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdOZ1NpbXBsZVN0YXRlJyxcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2VJZFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZURldnRvb2wgPSAhIXRoaXMubG9jYWxEZXZUb29sO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZURldnRvb2wpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxEZXZUb29sLmluaXQodGhpcy5iYXNlU3RhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgZGV2IHRvb2wgaXMgYWN0dmljZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZXYgdG9vbCBpcyBhY3R2aWNlXHJcbiAgICAgKi9cclxuICAgIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzQWN0aXZlRGV2dG9vbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgdG8gZGV2IHRvb2wgYSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBzdG9yZU5hbWUgVGhlIHN0b3JlIG5hbWVcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbmFtZVxyXG4gICAgICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZXYgdG9vbCBpcyBlbmFibGVkIGFuZCBhY3Rpb24gaXMgc2VuZFxyXG4gICAgICovXHJcbiAgICBzZW5kKHN0b3JlTmFtZTogc3RyaW5nLCBhY3Rpb25OYW1lOiBzdHJpbmcsIHN0YXRlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZURldnRvb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhbERldlRvb2wuc2VuZChgJHtzdG9yZU5hbWV9LiR7YWN0aW9uTmFtZX1gLCBPYmplY3QuYXNzaWduKHRoaXMuYmFzZVN0YXRlLCB7IFtzdG9yZU5hbWVdOiBzdGF0ZSB9KSwgZmFsc2UsIHRoaXMuaW5zdGFuY2VJZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,60 +1,15 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
|
-
export
|
|
4
|
-
export class NgSimpleStateLocalStorage {
|
|
4
|
+
export class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
|
|
5
5
|
constructor() {
|
|
6
|
-
|
|
7
|
-
this.isStorageActive = !!localStorage;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Return true if local storage is active
|
|
11
|
-
* @returns True if local storage is active
|
|
12
|
-
*/
|
|
13
|
-
isActive() {
|
|
14
|
-
return this.isStorageActive;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Set item into local storage
|
|
18
|
-
* @param key key name
|
|
19
|
-
* @param state state valie
|
|
20
|
-
* @returns True if item is stored into local storage
|
|
21
|
-
*/
|
|
22
|
-
setItem(key, state) {
|
|
23
|
-
if (this.isStorageActive) {
|
|
24
|
-
localStorage.setItem(BASE_KEY + key, JSON.stringify(state));
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Return item from local storage
|
|
31
|
-
* @param key key name
|
|
32
|
-
* @returns the item
|
|
33
|
-
*/
|
|
34
|
-
getItem(key) {
|
|
35
|
-
if (this.isStorageActive) {
|
|
36
|
-
const state = localStorage.getItem(BASE_KEY + key);
|
|
37
|
-
return JSON.parse(state);
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Remove item from local storage
|
|
43
|
-
* @param key key name
|
|
44
|
-
* @returns True if item is removed
|
|
45
|
-
*/
|
|
46
|
-
removeItem(key) {
|
|
47
|
-
if (this.isStorageActive) {
|
|
48
|
-
localStorage.removeItem(BASE_KEY + key);
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
return false;
|
|
6
|
+
super(localStorage);
|
|
52
7
|
}
|
|
53
8
|
}
|
|
54
|
-
NgSimpleStateLocalStorage.ɵfac =
|
|
55
|
-
NgSimpleStateLocalStorage.ɵprov =
|
|
56
|
-
(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
NgSimpleStateLocalStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
NgSimpleStateLocalStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, providedIn: 'root' });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{ providedIn: 'root' }]
|
|
14
|
+
}], ctorParameters: function () { return []; } });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUdoRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsMkJBQTJCO0lBQ3RFO1FBQ0ksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7O3NIQUhRLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRFosTUFBTTsyRkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtYnJvd3Nlci1zdG9yYWdlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NpbXBsZVN0YXRlTG9jYWxTdG9yYWdlIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKGxvY2FsU3RvcmFnZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -3,4 +3,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
3
3
|
* NgSimpleState config InjectionToken
|
|
4
4
|
*/
|
|
5
5
|
export const NG_SIMPLE_STORE_CONFIG = new InjectionToken('ng-simple-state.config');
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWtCL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDcEQsd0JBQXdCLENBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIE5nU2ltcGxlU3RhdGUgY29uZmlnIG9wdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ1NpbXBsZVN0YXRlQ29uZmlnIHtcclxuICAgIGVuYWJsZURldlRvb2w/OiBib29sZWFuO1xyXG4gICAgZW5hYmxlTG9jYWxTdG9yYWdlPzogYm9vbGVhbjtcclxuICAgIHBlcnNpc3RlbnRTdG9yYWdlPzogJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxufVxyXG5cclxuLyoqXHJcbiAqIE5nU2ltcGxlU3RhdGUgY29uZmlnIG9wdGlvbiBmb3Igc3RvcmVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUNvbmZpZyB7XHJcbiAgICBzdG9yZU5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBOZ1NpbXBsZVN0YXRlIGNvbmZpZyBJbmplY3Rpb25Ub2tlblxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IE5HX1NJTVBMRV9TVE9SRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdTaW1wbGVTdGF0ZUNvbmZpZz4oXHJcbiAgICAnbmctc2ltcGxlLXN0YXRlLmNvbmZpZydcclxuKTtcclxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(sessionStorage);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
NgSimpleStateSessionStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
NgSimpleStateSessionStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, providedIn: 'root' });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{ providedIn: 'root' }]
|
|
14
|
+
}], ctorParameters: function () { return []; } });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLXNlc3Npb24tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1zZXNzaW9uLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHaEYsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDJCQUEyQjtJQUN4RTtRQUNJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQixDQUFDOzt3SEFIUSwyQkFBMkI7NEhBQTNCLDJCQUEyQixjQURkLE1BQU07MkZBQ25CLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nU2ltcGxlU3RhdGVCcm93c2VyU3RvcmFnZSB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLWJyb3dzZXItc3RvcmFnZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTmdTaW1wbGVTdGF0ZVNlc3Npb25TdG9yYWdlIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKHNlc3Npb25TdG9yYWdlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -14,15 +14,15 @@ export class NgSimpleStateModule {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
NgSimpleStateModule.ɵfac =
|
|
18
|
-
NgSimpleStateModule.ɵmod =
|
|
19
|
-
NgSimpleStateModule.ɵinj =
|
|
20
|
-
(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
NgSimpleStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
NgSimpleStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule });
|
|
19
|
+
NgSimpleStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, imports: [[]] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, decorators: [{
|
|
21
|
+
type: NgModule,
|
|
22
|
+
args: [{
|
|
23
|
+
declarations: [],
|
|
24
|
+
imports: [],
|
|
25
|
+
exports: [],
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUF1QixzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU92RixNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQ1YsbUJBQXlDO1FBRXpDLE9BQU87WUFDSCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO2lCQUNoQzthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7O2dIQWJRLG1CQUFtQjtpSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsWUFIbkIsRUFBRTsyRkFHRixtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUNvbmZpZywgTkdfU0lNUExFX1NUT1JFX0NPTkZJRyB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLW1vZGVscyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbXSxcclxuICAgIGltcG9ydHM6IFtdLFxyXG4gICAgZXhwb3J0czogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NpbXBsZVN0YXRlTW9kdWxlIHtcclxuICAgIHN0YXRpYyBmb3JSb290KFxyXG4gICAgICAgIG5nSHR0cENhY2hpbmdDb25maWc/OiBOZ1NpbXBsZVN0YXRlQ29uZmlnXHJcbiAgICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nU2ltcGxlU3RhdGVNb2R1bGU+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuZ01vZHVsZTogTmdTaW1wbGVTdGF0ZU1vZHVsZSxcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTkdfU0lNUExFX1NUT1JFX0NPTkZJRyxcclxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogbmdIdHRwQ2FjaGluZ0NvbmZpZyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -5,5 +5,6 @@ export * from './lib/ng-simple-state.module';
|
|
|
5
5
|
export * from './lib/ng-simple-state-base-store';
|
|
6
6
|
export * from './lib/ng-simple-state-dev-tool';
|
|
7
7
|
export * from './lib/ng-simple-state-local-storage';
|
|
8
|
+
export * from './lib/ng-simple-state-session-storage';
|
|
8
9
|
export * from './lib/ng-simple-state-models';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nLXNpbXBsZS1zdGF0ZVxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXNpbXBsZS1zdGF0ZS1iYXNlLXN0b3JlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1zaW1wbGUtc3RhdGUtc2Vzc2lvbi1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLW1vZGVscyc7XHJcbiJdfQ==
|
|
@@ -21,19 +21,17 @@ class NgSimpleStateModule {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
NgSimpleStateModule.ɵfac =
|
|
25
|
-
NgSimpleStateModule.ɵmod =
|
|
26
|
-
NgSimpleStateModule.ɵinj =
|
|
27
|
-
(
|
|
28
|
-
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateModule, [{
|
|
24
|
+
NgSimpleStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
+
NgSimpleStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule });
|
|
26
|
+
NgSimpleStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, imports: [[]] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, decorators: [{
|
|
29
28
|
type: NgModule,
|
|
30
29
|
args: [{
|
|
31
30
|
declarations: [],
|
|
32
31
|
imports: [],
|
|
33
32
|
exports: [],
|
|
34
33
|
}]
|
|
35
|
-
}]
|
|
36
|
-
})();
|
|
34
|
+
}] });
|
|
37
35
|
|
|
38
36
|
class NgSimpleStateDevTool {
|
|
39
37
|
constructor() {
|
|
@@ -75,18 +73,18 @@ class NgSimpleStateDevTool {
|
|
|
75
73
|
return false;
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
|
-
NgSimpleStateDevTool.ɵfac =
|
|
79
|
-
NgSimpleStateDevTool.ɵprov =
|
|
80
|
-
(
|
|
81
|
-
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateDevTool, [{
|
|
76
|
+
NgSimpleStateDevTool.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
77
|
+
NgSimpleStateDevTool.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, providedIn: 'root' });
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, decorators: [{
|
|
82
79
|
type: Injectable,
|
|
83
80
|
args: [{ providedIn: 'root' }]
|
|
84
|
-
}], function () { return []; }
|
|
85
|
-
})();
|
|
81
|
+
}], ctorParameters: function () { return []; } });
|
|
86
82
|
|
|
87
83
|
const BASE_KEY = 'NgSimpleState::';
|
|
88
|
-
class
|
|
89
|
-
|
|
84
|
+
class NgSimpleStateBrowserStorage {
|
|
85
|
+
// eslint-disable-next-line no-unused-vars
|
|
86
|
+
constructor(storage) {
|
|
87
|
+
this.storage = storage;
|
|
90
88
|
this.isStorageActive = false;
|
|
91
89
|
this.isStorageActive = !!localStorage;
|
|
92
90
|
}
|
|
@@ -105,7 +103,7 @@ class NgSimpleStateLocalStorage {
|
|
|
105
103
|
*/
|
|
106
104
|
setItem(key, state) {
|
|
107
105
|
if (this.isStorageActive) {
|
|
108
|
-
|
|
106
|
+
this.storage.setItem(BASE_KEY + key, JSON.stringify(state));
|
|
109
107
|
return true;
|
|
110
108
|
}
|
|
111
109
|
return false;
|
|
@@ -117,8 +115,10 @@ class NgSimpleStateLocalStorage {
|
|
|
117
115
|
*/
|
|
118
116
|
getItem(key) {
|
|
119
117
|
if (this.isStorageActive) {
|
|
120
|
-
const state =
|
|
121
|
-
|
|
118
|
+
const state = this.storage.getItem(BASE_KEY + key);
|
|
119
|
+
if (state) {
|
|
120
|
+
return JSON.parse(state);
|
|
121
|
+
}
|
|
122
122
|
}
|
|
123
123
|
return null;
|
|
124
124
|
}
|
|
@@ -129,33 +129,58 @@ class NgSimpleStateLocalStorage {
|
|
|
129
129
|
*/
|
|
130
130
|
removeItem(key) {
|
|
131
131
|
if (this.isStorageActive) {
|
|
132
|
-
|
|
132
|
+
this.storage.removeItem(BASE_KEY + key);
|
|
133
133
|
return true;
|
|
134
134
|
}
|
|
135
135
|
return false;
|
|
136
136
|
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
|
|
140
|
+
constructor() {
|
|
141
|
+
super(localStorage);
|
|
142
|
+
}
|
|
137
143
|
}
|
|
138
|
-
NgSimpleStateLocalStorage.ɵfac =
|
|
139
|
-
NgSimpleStateLocalStorage.ɵprov =
|
|
140
|
-
(
|
|
141
|
-
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateLocalStorage, [{
|
|
144
|
+
NgSimpleStateLocalStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
|
+
NgSimpleStateLocalStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, providedIn: 'root' });
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, decorators: [{
|
|
142
147
|
type: Injectable,
|
|
143
148
|
args: [{ providedIn: 'root' }]
|
|
144
|
-
}], function () { return []; }
|
|
145
|
-
|
|
149
|
+
}], ctorParameters: function () { return []; } });
|
|
150
|
+
|
|
151
|
+
class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {
|
|
152
|
+
constructor() {
|
|
153
|
+
super(sessionStorage);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
NgSimpleStateSessionStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
157
|
+
NgSimpleStateSessionStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, providedIn: 'root' });
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, decorators: [{
|
|
159
|
+
type: Injectable,
|
|
160
|
+
args: [{ providedIn: 'root' }]
|
|
161
|
+
}], ctorParameters: function () { return []; } });
|
|
146
162
|
|
|
147
163
|
class NgSimpleStateBaseStore {
|
|
148
164
|
constructor(injector) {
|
|
165
|
+
this.firstState = null;
|
|
149
166
|
this.devTool = injector.get(NgSimpleStateDevTool);
|
|
150
|
-
this.localStorage = injector.get(NgSimpleStateLocalStorage);
|
|
151
167
|
const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});
|
|
152
168
|
const storeConfig = this.storeConfig() || {};
|
|
153
169
|
this.localStoreConfig = Object.assign(Object.assign({}, globalConfig), storeConfig);
|
|
170
|
+
if (this.localStoreConfig.persistentStorage === 'local') {
|
|
171
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
172
|
+
}
|
|
173
|
+
else if (this.localStoreConfig.persistentStorage === 'session') {
|
|
174
|
+
this.persistentStorage = injector.get(NgSimpleStateSessionStorage);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
178
|
+
}
|
|
154
179
|
this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;
|
|
155
180
|
this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;
|
|
156
181
|
this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;
|
|
157
182
|
if (this.localStorageIsEnabled) {
|
|
158
|
-
this.firstState = this.
|
|
183
|
+
this.firstState = this.persistentStorage.getItem(this.storeName);
|
|
159
184
|
}
|
|
160
185
|
if (!this.firstState) {
|
|
161
186
|
this.firstState = this.initialState();
|
|
@@ -182,7 +207,7 @@ class NgSimpleStateBaseStore {
|
|
|
182
207
|
* Reset store to first loaded store state
|
|
183
208
|
*/
|
|
184
209
|
resetState() {
|
|
185
|
-
this.setState(() =>
|
|
210
|
+
this.setState(() => this.firstState, 'resetState');
|
|
186
211
|
}
|
|
187
212
|
/**
|
|
188
213
|
* Reset store to initial store state
|
|
@@ -202,6 +227,7 @@ class NgSimpleStateBaseStore {
|
|
|
202
227
|
* @param selectFn State selector (if not provided return full state)
|
|
203
228
|
* @returns Observable of the selected state
|
|
204
229
|
*/
|
|
230
|
+
// eslint-disable-next-line no-unused-vars
|
|
205
231
|
selectState(selectFn) {
|
|
206
232
|
if (!selectFn) {
|
|
207
233
|
selectFn = (tmpState) => Object.assign(this.isArray ? [] : {}, tmpState);
|
|
@@ -220,6 +246,7 @@ class NgSimpleStateBaseStore {
|
|
|
220
246
|
* @param selectFn State reducer
|
|
221
247
|
* @param actionName The action label into Redux DevTools (default is parent function name)
|
|
222
248
|
*/
|
|
249
|
+
// eslint-disable-next-line no-unused-vars
|
|
223
250
|
setState(stateFn, actionName) {
|
|
224
251
|
const currState = this.getCurrentState();
|
|
225
252
|
const newState = stateFn(currState);
|
|
@@ -232,7 +259,7 @@ class NgSimpleStateBaseStore {
|
|
|
232
259
|
}
|
|
233
260
|
this.devToolSend(state, actionName);
|
|
234
261
|
if (this.localStorageIsEnabled) {
|
|
235
|
-
this.
|
|
262
|
+
this.persistentStorage.setItem(this.storeName, state);
|
|
236
263
|
}
|
|
237
264
|
this.state$.next(state);
|
|
238
265
|
}
|
|
@@ -243,32 +270,27 @@ class NgSimpleStateBaseStore {
|
|
|
243
270
|
* @returns True if fìdev tools are enabled
|
|
244
271
|
*/
|
|
245
272
|
devToolSend(newState, actionName) {
|
|
273
|
+
var _a;
|
|
246
274
|
if (!this.devToolIsEnabled) {
|
|
247
275
|
return false;
|
|
248
276
|
}
|
|
249
277
|
if (!actionName) {
|
|
250
278
|
// retrive the parent (of parent) method into the stack trace
|
|
251
|
-
actionName = new Error().stack
|
|
252
|
-
.split('\n')[3]
|
|
253
|
-
.trim()
|
|
254
|
-
.split(' ')[1]
|
|
255
|
-
.split('.')[1];
|
|
279
|
+
actionName = (_a = new Error().stack) === null || _a === void 0 ? void 0 : _a.split('\n')[3].trim().split(' ')[1].split('.')[1];
|
|
256
280
|
}
|
|
257
|
-
return this.devTool.send(this.storeName, actionName, newState);
|
|
281
|
+
return this.devTool.send(this.storeName, actionName || 'unknown', newState);
|
|
258
282
|
}
|
|
259
283
|
}
|
|
260
|
-
NgSimpleStateBaseStore.ɵfac =
|
|
261
|
-
NgSimpleStateBaseStore.ɵprov =
|
|
262
|
-
(
|
|
263
|
-
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateBaseStore, [{
|
|
284
|
+
NgSimpleStateBaseStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
285
|
+
NgSimpleStateBaseStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore });
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore, decorators: [{
|
|
264
287
|
type: Injectable
|
|
265
|
-
}], function () {
|
|
288
|
+
}], ctorParameters: function () {
|
|
266
289
|
return [{ type: i0.Injector, decorators: [{
|
|
267
290
|
type: Inject,
|
|
268
291
|
args: [Injector]
|
|
269
292
|
}] }];
|
|
270
|
-
}
|
|
271
|
-
})();
|
|
293
|
+
} });
|
|
272
294
|
|
|
273
295
|
/*
|
|
274
296
|
* Public API Surface of ng-simple-state
|
|
@@ -278,5 +300,5 @@ NgSimpleStateBaseStore.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: N
|
|
|
278
300
|
* Generated bundle index. Do not edit.
|
|
279
301
|
*/
|
|
280
302
|
|
|
281
|
-
export {
|
|
303
|
+
export { NG_SIMPLE_STORE_CONFIG, NgSimpleStateBaseStore, NgSimpleStateDevTool, NgSimpleStateLocalStorage, NgSimpleStateModule, NgSimpleStateSessionStorage };
|
|
282
304
|
//# sourceMappingURL=ng-simple-state.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-simple-state.mjs","sources":["../../../projects/ng-simple-state/src/lib/ng-simple-state-models.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state.module.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-dev-tool.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-local-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-base-store.ts","../../../projects/ng-simple-state/src/public-api.ts","../../../projects/ng-simple-state/src/ng-simple-state.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * NgSimpleState config option\r\n */\r\nexport interface NgSimpleStateConfig {\r\n enableDevTool?: boolean;\r\n enableLocalStorage?: boolean;\r\n}\r\n\r\n/**\r\n * NgSimpleState config option for store\r\n */\r\nexport interface NgSimpleStateStoreConfig extends NgSimpleStateConfig {\r\n storeName?: string;\r\n}\r\n\r\n/**\r\n * NgSimpleState config InjectionToken\r\n */\r\nexport const NG_SIMPLE_STORE_CONFIG = new InjectionToken<NgSimpleStateConfig>(\r\n 'ng-simple-state.config'\r\n);\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgSimpleStateConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class NgSimpleStateModule {\r\n static forRoot(\r\n ngHttpCachingConfig?: NgSimpleStateConfig\r\n ): ModuleWithProviders<NgSimpleStateModule> {\r\n return {\r\n ngModule: NgSimpleStateModule,\r\n providers: [\r\n {\r\n provide: NG_SIMPLE_STORE_CONFIG,\r\n useValue: ngHttpCachingConfig,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateDevTool {\r\n\r\n // tslint:disable-next-line: no-string-literal\r\n private globalDevtools: any = window['__REDUX_DEVTOOLS_EXTENSION__'] || window['devToolsExtension'];\r\n private localDevTool: any;\r\n private isActiveDevtool = false;\r\n private instanceId = `ng-simple-state-${Date.now()}`;\r\n private baseState: { [key: string]: any } = {};\r\n\r\n constructor() {\r\n if (this.globalDevtools) {\r\n this.localDevTool = this.globalDevtools.connect({\r\n name: 'NgSimpleState',\r\n instanceId: this.instanceId\r\n });\r\n this.isActiveDevtool = !!this.localDevTool;\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.init(this.baseState);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return true if dev tool is actvice\r\n * @returns True if dev tool is actvice\r\n */\r\n isActive(): boolean {\r\n return this.isActiveDevtool;\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param storeName The store name\r\n * @param actionName The action name\r\n * @param state the state\r\n * @returns True if dev tool is enabled and action is send\r\n */\r\n send(storeName: string, actionName: string, state: any): boolean {\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.send(`${storeName}.${actionName}`, Object.assign(this.baseState, { [storeName]: state }), false, this.instanceId);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport const BASE_KEY = 'NgSimpleState::';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateLocalStorage {\r\n\r\n private isStorageActive = false;\r\n\r\n constructor() {\r\n this.isStorageActive = !!localStorage;\r\n }\r\n\r\n /**\r\n * Return true if local storage is active\r\n * @returns True if local storage is active\r\n */\r\n isActive(): boolean {\r\n return this.isStorageActive;\r\n }\r\n\r\n /**\r\n * Set item into local storage\r\n * @param key key name\r\n * @param state state valie\r\n * @returns True if item is stored into local storage\r\n */\r\n setItem<K>(key: string, state: K): boolean {\r\n if (this.isStorageActive) {\r\n localStorage.setItem(BASE_KEY + key, JSON.stringify(state));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Return item from local storage\r\n * @param key key name\r\n * @returns the item\r\n */\r\n getItem<K>(key: string): K | null {\r\n if (this.isStorageActive) {\r\n const state = localStorage.getItem(BASE_KEY + key);\r\n return JSON.parse(state);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove item from local storage\r\n * @param key key name\r\n * @returns True if item is removed\r\n */\r\n removeItem(key: string): boolean {\r\n if (this.isStorageActive) {\r\n localStorage.removeItem(BASE_KEY + key);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, asyncScheduler } from 'rxjs';\r\nimport { map, distinctUntilChanged, observeOn } from 'rxjs/operators';\r\nimport { NgSimpleStateDevTool } from './ng-simple-state-dev-tool';\r\nimport { NgSimpleStateLocalStorage } from './ng-simple-state-local-storage';\r\nimport { NgSimpleStateStoreConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\n@Injectable()\r\nexport abstract class NgSimpleStateBaseStore<S extends object | Array<any>> implements OnDestroy {\r\n\r\n private state$: BehaviorSubject<S>;\r\n private localStorageIsEnabled: boolean;\r\n private devToolIsEnabled: boolean;\r\n private devTool: NgSimpleStateDevTool;\r\n private localStorage: NgSimpleStateLocalStorage;\r\n private localStoreConfig: NgSimpleStateStoreConfig;\r\n private storeName: string;\r\n private firstState: S;\r\n private isArray: boolean;\r\n\r\n /**\r\n * Return the observable state\r\n * @returns Observable of the state\r\n */\r\n public get state(): BehaviorSubject<S> {\r\n return this.state$;\r\n }\r\n\r\n constructor(@Inject(Injector) injector: Injector) {\r\n this.devTool = injector.get(NgSimpleStateDevTool);\r\n this.localStorage = injector.get(NgSimpleStateLocalStorage);\r\n\r\n const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});\r\n const storeConfig = this.storeConfig() || {};\r\n this.localStoreConfig = { ...globalConfig, ...storeConfig };\r\n\r\n this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;\r\n this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;\r\n this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;\r\n\r\n if (this.localStorageIsEnabled) {\r\n this.firstState = this.localStorage.getItem<S>(this.storeName);\r\n }\r\n if (!this.firstState) {\r\n this.firstState = this.initialState();\r\n }\r\n\r\n this.devToolSend(this.firstState, `initialState`);\r\n\r\n this.isArray = Array.isArray(this.firstState);\r\n this.state$ = new BehaviorSubject<S>(Object.assign(this.isArray ? [] : {}, this.firstState));\r\n }\r\n\r\n /**\r\n * When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.\r\n */\r\n ngOnDestroy(): void {\r\n this.devToolSend(undefined, 'ngOnDestroy');\r\n this.state$.complete();\r\n }\r\n\r\n /**\r\n * Reset store to first loaded store state\r\n */\r\n resetState(): void {\r\n this.setState(() => (this.firstState), 'resetState');\r\n }\r\n\r\n /**\r\n * Reset store to initial store state\r\n */\r\n restartState(): void {\r\n this.setState(() => (this.initialState()), 'restartState');\r\n }\r\n\r\n /**\r\n * Override this method for set a specific config for the store\r\n * @returns NgSimpleStateStoreConfig\r\n */\r\n storeConfig(): NgSimpleStateStoreConfig {\r\n return null;\r\n }\r\n\r\n /**\r\n * Set into the store the initial state\r\n * @returns The state object\r\n */\r\n protected abstract initialState(): S;\r\n\r\n /**\r\n * Select a store state\r\n * @param selectFn State selector (if not provided return full state)\r\n * @returns Observable of the selected state\r\n */\r\n selectState<K>(selectFn?: (state: Readonly<S>) => K): Observable<K> {\r\n if (!selectFn) {\r\n selectFn = (tmpState: Readonly<S>): any => Object.assign(this.isArray ? [] : {}, tmpState);\r\n }\r\n return this.state$.pipe(\r\n map(state => selectFn(state as Readonly<S>)),\r\n distinctUntilChanged(),\r\n observeOn(asyncScheduler)\r\n );\r\n }\r\n\r\n /**\r\n * Return the current store state (snapshot)\r\n * @returns The current state\r\n */\r\n getCurrentState(): S {\r\n return this.state$.getValue();\r\n }\r\n\r\n /**\r\n * Set a new state\r\n * @param selectFn State reducer\r\n * @param actionName The action label into Redux DevTools (default is parent function name)\r\n */\r\n setState(stateFn: (currentState: Readonly<S>) => Partial<S>, actionName?: string): void {\r\n const currState = this.getCurrentState();\r\n const newState = stateFn(currState);\r\n let state: S;\r\n if (this.isArray) {\r\n state = Object.assign([], newState) as any;\r\n } else {\r\n state = Object.assign({}, currState, newState);\r\n }\r\n this.devToolSend(state, actionName);\r\n if (this.localStorageIsEnabled) {\r\n this.localStorage.setItem<S>(this.storeName, state);\r\n }\r\n this.state$.next(state);\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param newState new state\r\n * @param actionName The action name\r\n * @returns True if fìdev tools are enabled\r\n */\r\n private devToolSend(newState: S, actionName?: string): boolean {\r\n if (!this.devToolIsEnabled) {\r\n return false;\r\n }\r\n if (!actionName) {\r\n // retrive the parent (of parent) method into the stack trace\r\n actionName = new Error().stack\r\n .split('\\n')[3]\r\n .trim()\r\n .split(' ')[1]\r\n .split('.')[1];\r\n }\r\n return this.devTool.send(this.storeName, actionName, newState);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng-simple-state\r\n */\r\nexport * from './lib/ng-simple-state.module';\r\nexport * from './lib/ng-simple-state-base-store';\r\nexport * from './lib/ng-simple-state-dev-tool';\r\nexport * from './lib/ng-simple-state-local-storage';\r\nexport * from './lib/ng-simple-state-models';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-simple-state.mjs","sources":["../../../projects/ng-simple-state/src/lib/ng-simple-state-models.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state.module.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-dev-tool.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-browser-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-local-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-session-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-base-store.ts","../../../projects/ng-simple-state/src/public-api.ts","../../../projects/ng-simple-state/src/ng-simple-state.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * NgSimpleState config option\r\n */\r\nexport interface NgSimpleStateConfig {\r\n enableDevTool?: boolean;\r\n enableLocalStorage?: boolean;\r\n persistentStorage?: 'session' | 'local';\r\n}\r\n\r\n/**\r\n * NgSimpleState config option for store\r\n */\r\nexport interface NgSimpleStateStoreConfig extends NgSimpleStateConfig {\r\n storeName?: string;\r\n}\r\n\r\n/**\r\n * NgSimpleState config InjectionToken\r\n */\r\nexport const NG_SIMPLE_STORE_CONFIG = new InjectionToken<NgSimpleStateConfig>(\r\n 'ng-simple-state.config'\r\n);\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgSimpleStateConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class NgSimpleStateModule {\r\n static forRoot(\r\n ngHttpCachingConfig?: NgSimpleStateConfig\r\n ): ModuleWithProviders<NgSimpleStateModule> {\r\n return {\r\n ngModule: NgSimpleStateModule,\r\n providers: [\r\n {\r\n provide: NG_SIMPLE_STORE_CONFIG,\r\n useValue: ngHttpCachingConfig,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateDevTool {\r\n\r\n // tslint:disable-next-line: no-string-literal\r\n private globalDevtools: any = (window as any)['__REDUX_DEVTOOLS_EXTENSION__'] || (window as any)['devToolsExtension'];\r\n private localDevTool: any;\r\n private isActiveDevtool = false;\r\n private instanceId = `ng-simple-state-${Date.now()}`;\r\n private baseState: { [key: string]: any } = {};\r\n\r\n constructor() {\r\n if (this.globalDevtools) {\r\n this.localDevTool = this.globalDevtools.connect({\r\n name: 'NgSimpleState',\r\n instanceId: this.instanceId\r\n });\r\n this.isActiveDevtool = !!this.localDevTool;\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.init(this.baseState);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return true if dev tool is actvice\r\n * @returns True if dev tool is actvice\r\n */\r\n isActive(): boolean {\r\n return this.isActiveDevtool;\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param storeName The store name\r\n * @param actionName The action name\r\n * @param state the state\r\n * @returns True if dev tool is enabled and action is send\r\n */\r\n send(storeName: string, actionName: string, state: any): boolean {\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.send(`${storeName}.${actionName}`, Object.assign(this.baseState, { [storeName]: state }), false, this.instanceId);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","export const BASE_KEY = 'NgSimpleState::';\r\n\r\nexport abstract class NgSimpleStateBrowserStorage {\r\n\r\n private isStorageActive = false;\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n constructor(private storage: Storage) {\r\n this.isStorageActive = !!localStorage;\r\n }\r\n\r\n /**\r\n * Return true if local storage is active\r\n * @returns True if local storage is active\r\n */\r\n isActive(): boolean {\r\n return this.isStorageActive;\r\n }\r\n\r\n /**\r\n * Set item into local storage\r\n * @param key key name\r\n * @param state state valie\r\n * @returns True if item is stored into local storage\r\n */\r\n setItem<K>(key: string, state: K): boolean {\r\n if (this.isStorageActive) {\r\n this.storage.setItem(BASE_KEY + key, JSON.stringify(state));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Return item from local storage\r\n * @param key key name\r\n * @returns the item\r\n */\r\n getItem<K>(key: string): K | null {\r\n if (this.isStorageActive) {\r\n const state = this.storage.getItem(BASE_KEY + key);\r\n if (state) {\r\n return JSON.parse(state);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove item from local storage\r\n * @param key key name\r\n * @returns True if item is removed\r\n */\r\n removeItem(key: string): boolean {\r\n if (this.isStorageActive) {\r\n this.storage.removeItem(BASE_KEY + key);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {\r\n constructor() {\r\n super(localStorage);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {\r\n constructor() {\r\n super(sessionStorage);\r\n }\r\n}\r\n","import { Inject, Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, asyncScheduler } from 'rxjs';\r\nimport { map, distinctUntilChanged, observeOn } from 'rxjs/operators';\r\nimport { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';\r\nimport { NgSimpleStateDevTool } from './ng-simple-state-dev-tool';\r\nimport { NgSimpleStateLocalStorage } from './ng-simple-state-local-storage';\r\nimport { NgSimpleStateStoreConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\nimport { NgSimpleStateSessionStorage } from './ng-simple-state-session-storage';\r\n@Injectable()\r\nexport abstract class NgSimpleStateBaseStore<S extends object | Array<any>> implements OnDestroy {\r\n\r\n private state$: BehaviorSubject<S>;\r\n private localStorageIsEnabled: boolean;\r\n private devToolIsEnabled: boolean;\r\n private devTool: NgSimpleStateDevTool;\r\n private persistentStorage: NgSimpleStateBrowserStorage;\r\n private localStoreConfig: NgSimpleStateStoreConfig;\r\n private storeName: string;\r\n private firstState: S | null = null;\r\n private isArray: boolean;\r\n\r\n /**\r\n * Return the observable state\r\n * @returns Observable of the state\r\n */\r\n public get state(): BehaviorSubject<S> {\r\n return this.state$;\r\n }\r\n\r\n constructor(@Inject(Injector) injector: Injector) {\r\n this.devTool = injector.get(NgSimpleStateDevTool);\r\n\r\n const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});\r\n const storeConfig = this.storeConfig() || {};\r\n this.localStoreConfig = { ...globalConfig, ...storeConfig };\r\n\r\n if (this.localStoreConfig.persistentStorage === 'local') {\r\n this.persistentStorage = injector.get(NgSimpleStateLocalStorage);\r\n } else if (this.localStoreConfig.persistentStorage === 'session') {\r\n this.persistentStorage = injector.get(NgSimpleStateSessionStorage);\r\n } else {\r\n this.persistentStorage = injector.get(NgSimpleStateLocalStorage);\r\n }\r\n\r\n this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;\r\n this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;\r\n this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;\r\n\r\n if (this.localStorageIsEnabled) {\r\n this.firstState = this.persistentStorage.getItem<S>(this.storeName);\r\n }\r\n if (!this.firstState) {\r\n this.firstState = this.initialState();\r\n }\r\n\r\n this.devToolSend(this.firstState, `initialState`);\r\n\r\n this.isArray = Array.isArray(this.firstState);\r\n this.state$ = new BehaviorSubject<S>(Object.assign(this.isArray ? [] : {}, this.firstState));\r\n }\r\n\r\n /**\r\n * When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.\r\n */\r\n ngOnDestroy(): void {\r\n this.devToolSend(undefined, 'ngOnDestroy');\r\n this.state$.complete();\r\n }\r\n\r\n /**\r\n * Reset store to first loaded store state\r\n */\r\n resetState(): void {\r\n this.setState(() => (this.firstState as S), 'resetState');\r\n }\r\n\r\n /**\r\n * Reset store to initial store state\r\n */\r\n restartState(): void {\r\n this.setState(() => (this.initialState()), 'restartState');\r\n }\r\n\r\n /**\r\n * Override this method for set a specific config for the store\r\n * @returns NgSimpleStateStoreConfig\r\n */\r\n storeConfig(): NgSimpleStateStoreConfig | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * Set into the store the initial state\r\n * @returns The state object\r\n */\r\n protected abstract initialState(): S;\r\n\r\n /**\r\n * Select a store state\r\n * @param selectFn State selector (if not provided return full state)\r\n * @returns Observable of the selected state\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n selectState<K>(selectFn?: (state: Readonly<S>) => K): Observable<K> {\r\n if (!selectFn) {\r\n selectFn = (tmpState: Readonly<S>): any => Object.assign(this.isArray ? [] : {}, tmpState);\r\n }\r\n return this.state$.pipe(\r\n map(state => (selectFn as any)(state as Readonly<S>)),\r\n distinctUntilChanged(),\r\n observeOn(asyncScheduler)\r\n );\r\n }\r\n\r\n /**\r\n * Return the current store state (snapshot)\r\n * @returns The current state\r\n */\r\n getCurrentState(): S {\r\n return this.state$.getValue();\r\n }\r\n\r\n /**\r\n * Set a new state\r\n * @param selectFn State reducer\r\n * @param actionName The action label into Redux DevTools (default is parent function name)\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n setState(stateFn: (currentState: Readonly<S>) => Partial<S>, actionName?: string): void {\r\n const currState = this.getCurrentState();\r\n const newState = stateFn(currState);\r\n let state: S;\r\n if (this.isArray) {\r\n state = Object.assign([], newState) as any;\r\n } else {\r\n state = Object.assign({}, currState, newState);\r\n }\r\n this.devToolSend(state, actionName);\r\n if (this.localStorageIsEnabled) {\r\n this.persistentStorage.setItem<S>(this.storeName, state);\r\n }\r\n this.state$.next(state);\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param newState new state\r\n * @param actionName The action name\r\n * @returns True if fìdev tools are enabled\r\n */\r\n private devToolSend(newState: S | undefined, actionName?: string): boolean {\r\n if (!this.devToolIsEnabled) {\r\n return false;\r\n }\r\n if (!actionName) {\r\n // retrive the parent (of parent) method into the stack trace\r\n actionName = new Error().stack\r\n ?.split('\\n')[3]\r\n .trim()\r\n .split(' ')[1]\r\n .split('.')[1];\r\n }\r\n return this.devTool.send(this.storeName, actionName || 'unknown', newState);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng-simple-state\r\n */\r\nexport * from './lib/ng-simple-state.module';\r\nexport * from './lib/ng-simple-state-base-store';\r\nexport * from './lib/ng-simple-state-dev-tool';\r\nexport * from './lib/ng-simple-state-local-storage';\r\nexport * from './lib/ng-simple-state-session-storage';\r\nexport * from './lib/ng-simple-state-models';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -21,17 +21,17 @@ class NgSimpleStateModule {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
NgSimpleStateModule.ɵfac =
|
|
25
|
-
NgSimpleStateModule.ɵmod =
|
|
26
|
-
NgSimpleStateModule.ɵinj =
|
|
27
|
-
(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
NgSimpleStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
+
NgSimpleStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule });
|
|
26
|
+
NgSimpleStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, imports: [[]] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateModule, decorators: [{
|
|
28
|
+
type: NgModule,
|
|
29
|
+
args: [{
|
|
30
|
+
declarations: [],
|
|
31
|
+
imports: [],
|
|
32
|
+
exports: [],
|
|
33
|
+
}]
|
|
34
|
+
}] });
|
|
35
35
|
|
|
36
36
|
class NgSimpleStateDevTool {
|
|
37
37
|
constructor() {
|
|
@@ -73,16 +73,18 @@ class NgSimpleStateDevTool {
|
|
|
73
73
|
return false;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
NgSimpleStateDevTool.ɵfac =
|
|
77
|
-
NgSimpleStateDevTool.ɵprov =
|
|
78
|
-
(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
NgSimpleStateDevTool.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
77
|
+
NgSimpleStateDevTool.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, providedIn: 'root' });
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateDevTool, decorators: [{
|
|
79
|
+
type: Injectable,
|
|
80
|
+
args: [{ providedIn: 'root' }]
|
|
81
|
+
}], ctorParameters: function () { return []; } });
|
|
82
82
|
|
|
83
83
|
const BASE_KEY = 'NgSimpleState::';
|
|
84
|
-
class
|
|
85
|
-
|
|
84
|
+
class NgSimpleStateBrowserStorage {
|
|
85
|
+
// eslint-disable-next-line no-unused-vars
|
|
86
|
+
constructor(storage) {
|
|
87
|
+
this.storage = storage;
|
|
86
88
|
this.isStorageActive = false;
|
|
87
89
|
this.isStorageActive = !!localStorage;
|
|
88
90
|
}
|
|
@@ -101,7 +103,7 @@ class NgSimpleStateLocalStorage {
|
|
|
101
103
|
*/
|
|
102
104
|
setItem(key, state) {
|
|
103
105
|
if (this.isStorageActive) {
|
|
104
|
-
|
|
106
|
+
this.storage.setItem(BASE_KEY + key, JSON.stringify(state));
|
|
105
107
|
return true;
|
|
106
108
|
}
|
|
107
109
|
return false;
|
|
@@ -113,8 +115,10 @@ class NgSimpleStateLocalStorage {
|
|
|
113
115
|
*/
|
|
114
116
|
getItem(key) {
|
|
115
117
|
if (this.isStorageActive) {
|
|
116
|
-
const state =
|
|
117
|
-
|
|
118
|
+
const state = this.storage.getItem(BASE_KEY + key);
|
|
119
|
+
if (state) {
|
|
120
|
+
return JSON.parse(state);
|
|
121
|
+
}
|
|
118
122
|
}
|
|
119
123
|
return null;
|
|
120
124
|
}
|
|
@@ -125,31 +129,58 @@ class NgSimpleStateLocalStorage {
|
|
|
125
129
|
*/
|
|
126
130
|
removeItem(key) {
|
|
127
131
|
if (this.isStorageActive) {
|
|
128
|
-
|
|
132
|
+
this.storage.removeItem(BASE_KEY + key);
|
|
129
133
|
return true;
|
|
130
134
|
}
|
|
131
135
|
return false;
|
|
132
136
|
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
|
|
140
|
+
constructor() {
|
|
141
|
+
super(localStorage);
|
|
142
|
+
}
|
|
133
143
|
}
|
|
134
|
-
NgSimpleStateLocalStorage.ɵfac =
|
|
135
|
-
NgSimpleStateLocalStorage.ɵprov =
|
|
136
|
-
(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
NgSimpleStateLocalStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
|
+
NgSimpleStateLocalStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, providedIn: 'root' });
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateLocalStorage, decorators: [{
|
|
147
|
+
type: Injectable,
|
|
148
|
+
args: [{ providedIn: 'root' }]
|
|
149
|
+
}], ctorParameters: function () { return []; } });
|
|
150
|
+
|
|
151
|
+
class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {
|
|
152
|
+
constructor() {
|
|
153
|
+
super(sessionStorage);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
NgSimpleStateSessionStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
157
|
+
NgSimpleStateSessionStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, providedIn: 'root' });
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateSessionStorage, decorators: [{
|
|
159
|
+
type: Injectable,
|
|
160
|
+
args: [{ providedIn: 'root' }]
|
|
161
|
+
}], ctorParameters: function () { return []; } });
|
|
140
162
|
|
|
141
163
|
class NgSimpleStateBaseStore {
|
|
142
164
|
constructor(injector) {
|
|
165
|
+
this.firstState = null;
|
|
143
166
|
this.devTool = injector.get(NgSimpleStateDevTool);
|
|
144
|
-
this.localStorage = injector.get(NgSimpleStateLocalStorage);
|
|
145
167
|
const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});
|
|
146
168
|
const storeConfig = this.storeConfig() || {};
|
|
147
169
|
this.localStoreConfig = { ...globalConfig, ...storeConfig };
|
|
170
|
+
if (this.localStoreConfig.persistentStorage === 'local') {
|
|
171
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
172
|
+
}
|
|
173
|
+
else if (this.localStoreConfig.persistentStorage === 'session') {
|
|
174
|
+
this.persistentStorage = injector.get(NgSimpleStateSessionStorage);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
178
|
+
}
|
|
148
179
|
this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;
|
|
149
180
|
this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;
|
|
150
181
|
this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;
|
|
151
182
|
if (this.localStorageIsEnabled) {
|
|
152
|
-
this.firstState = this.
|
|
183
|
+
this.firstState = this.persistentStorage.getItem(this.storeName);
|
|
153
184
|
}
|
|
154
185
|
if (!this.firstState) {
|
|
155
186
|
this.firstState = this.initialState();
|
|
@@ -176,7 +207,7 @@ class NgSimpleStateBaseStore {
|
|
|
176
207
|
* Reset store to first loaded store state
|
|
177
208
|
*/
|
|
178
209
|
resetState() {
|
|
179
|
-
this.setState(() =>
|
|
210
|
+
this.setState(() => this.firstState, 'resetState');
|
|
180
211
|
}
|
|
181
212
|
/**
|
|
182
213
|
* Reset store to initial store state
|
|
@@ -196,6 +227,7 @@ class NgSimpleStateBaseStore {
|
|
|
196
227
|
* @param selectFn State selector (if not provided return full state)
|
|
197
228
|
* @returns Observable of the selected state
|
|
198
229
|
*/
|
|
230
|
+
// eslint-disable-next-line no-unused-vars
|
|
199
231
|
selectState(selectFn) {
|
|
200
232
|
if (!selectFn) {
|
|
201
233
|
selectFn = (tmpState) => Object.assign(this.isArray ? [] : {}, tmpState);
|
|
@@ -214,6 +246,7 @@ class NgSimpleStateBaseStore {
|
|
|
214
246
|
* @param selectFn State reducer
|
|
215
247
|
* @param actionName The action label into Redux DevTools (default is parent function name)
|
|
216
248
|
*/
|
|
249
|
+
// eslint-disable-next-line no-unused-vars
|
|
217
250
|
setState(stateFn, actionName) {
|
|
218
251
|
const currState = this.getCurrentState();
|
|
219
252
|
const newState = stateFn(currState);
|
|
@@ -226,7 +259,7 @@ class NgSimpleStateBaseStore {
|
|
|
226
259
|
}
|
|
227
260
|
this.devToolSend(state, actionName);
|
|
228
261
|
if (this.localStorageIsEnabled) {
|
|
229
|
-
this.
|
|
262
|
+
this.persistentStorage.setItem(this.storeName, state);
|
|
230
263
|
}
|
|
231
264
|
this.state$.next(state);
|
|
232
265
|
}
|
|
@@ -243,22 +276,22 @@ class NgSimpleStateBaseStore {
|
|
|
243
276
|
if (!actionName) {
|
|
244
277
|
// retrive the parent (of parent) method into the stack trace
|
|
245
278
|
actionName = new Error().stack
|
|
246
|
-
|
|
279
|
+
?.split('\n')[3]
|
|
247
280
|
.trim()
|
|
248
281
|
.split(' ')[1]
|
|
249
282
|
.split('.')[1];
|
|
250
283
|
}
|
|
251
|
-
return this.devTool.send(this.storeName, actionName, newState);
|
|
284
|
+
return this.devTool.send(this.storeName, actionName || 'unknown', newState);
|
|
252
285
|
}
|
|
253
286
|
}
|
|
254
|
-
NgSimpleStateBaseStore.ɵfac =
|
|
255
|
-
NgSimpleStateBaseStore.ɵprov =
|
|
256
|
-
(
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
287
|
+
NgSimpleStateBaseStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
288
|
+
NgSimpleStateBaseStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore });
|
|
289
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NgSimpleStateBaseStore, decorators: [{
|
|
290
|
+
type: Injectable
|
|
291
|
+
}], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
|
|
292
|
+
type: Inject,
|
|
293
|
+
args: [Injector]
|
|
294
|
+
}] }]; } });
|
|
262
295
|
|
|
263
296
|
/*
|
|
264
297
|
* Public API Surface of ng-simple-state
|
|
@@ -268,5 +301,5 @@ NgSimpleStateBaseStore.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: N
|
|
|
268
301
|
* Generated bundle index. Do not edit.
|
|
269
302
|
*/
|
|
270
303
|
|
|
271
|
-
export {
|
|
304
|
+
export { NG_SIMPLE_STORE_CONFIG, NgSimpleStateBaseStore, NgSimpleStateDevTool, NgSimpleStateLocalStorage, NgSimpleStateModule, NgSimpleStateSessionStorage };
|
|
272
305
|
//# sourceMappingURL=ng-simple-state.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-simple-state.mjs","sources":["../../../projects/ng-simple-state/src/lib/ng-simple-state-models.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state.module.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-dev-tool.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-local-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-base-store.ts","../../../projects/ng-simple-state/src/public-api.ts","../../../projects/ng-simple-state/src/ng-simple-state.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * NgSimpleState config option\r\n */\r\nexport interface NgSimpleStateConfig {\r\n enableDevTool?: boolean;\r\n enableLocalStorage?: boolean;\r\n}\r\n\r\n/**\r\n * NgSimpleState config option for store\r\n */\r\nexport interface NgSimpleStateStoreConfig extends NgSimpleStateConfig {\r\n storeName?: string;\r\n}\r\n\r\n/**\r\n * NgSimpleState config InjectionToken\r\n */\r\nexport const NG_SIMPLE_STORE_CONFIG = new InjectionToken<NgSimpleStateConfig>(\r\n 'ng-simple-state.config'\r\n);\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgSimpleStateConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class NgSimpleStateModule {\r\n static forRoot(\r\n ngHttpCachingConfig?: NgSimpleStateConfig\r\n ): ModuleWithProviders<NgSimpleStateModule> {\r\n return {\r\n ngModule: NgSimpleStateModule,\r\n providers: [\r\n {\r\n provide: NG_SIMPLE_STORE_CONFIG,\r\n useValue: ngHttpCachingConfig,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateDevTool {\r\n\r\n // tslint:disable-next-line: no-string-literal\r\n private globalDevtools: any = window['__REDUX_DEVTOOLS_EXTENSION__'] || window['devToolsExtension'];\r\n private localDevTool: any;\r\n private isActiveDevtool = false;\r\n private instanceId = `ng-simple-state-${Date.now()}`;\r\n private baseState: { [key: string]: any } = {};\r\n\r\n constructor() {\r\n if (this.globalDevtools) {\r\n this.localDevTool = this.globalDevtools.connect({\r\n name: 'NgSimpleState',\r\n instanceId: this.instanceId\r\n });\r\n this.isActiveDevtool = !!this.localDevTool;\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.init(this.baseState);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return true if dev tool is actvice\r\n * @returns True if dev tool is actvice\r\n */\r\n isActive(): boolean {\r\n return this.isActiveDevtool;\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param storeName The store name\r\n * @param actionName The action name\r\n * @param state the state\r\n * @returns True if dev tool is enabled and action is send\r\n */\r\n send(storeName: string, actionName: string, state: any): boolean {\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.send(`${storeName}.${actionName}`, Object.assign(this.baseState, { [storeName]: state }), false, this.instanceId);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport const BASE_KEY = 'NgSimpleState::';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateLocalStorage {\r\n\r\n private isStorageActive = false;\r\n\r\n constructor() {\r\n this.isStorageActive = !!localStorage;\r\n }\r\n\r\n /**\r\n * Return true if local storage is active\r\n * @returns True if local storage is active\r\n */\r\n isActive(): boolean {\r\n return this.isStorageActive;\r\n }\r\n\r\n /**\r\n * Set item into local storage\r\n * @param key key name\r\n * @param state state valie\r\n * @returns True if item is stored into local storage\r\n */\r\n setItem<K>(key: string, state: K): boolean {\r\n if (this.isStorageActive) {\r\n localStorage.setItem(BASE_KEY + key, JSON.stringify(state));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Return item from local storage\r\n * @param key key name\r\n * @returns the item\r\n */\r\n getItem<K>(key: string): K | null {\r\n if (this.isStorageActive) {\r\n const state = localStorage.getItem(BASE_KEY + key);\r\n return JSON.parse(state);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove item from local storage\r\n * @param key key name\r\n * @returns True if item is removed\r\n */\r\n removeItem(key: string): boolean {\r\n if (this.isStorageActive) {\r\n localStorage.removeItem(BASE_KEY + key);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, asyncScheduler } from 'rxjs';\r\nimport { map, distinctUntilChanged, observeOn } from 'rxjs/operators';\r\nimport { NgSimpleStateDevTool } from './ng-simple-state-dev-tool';\r\nimport { NgSimpleStateLocalStorage } from './ng-simple-state-local-storage';\r\nimport { NgSimpleStateStoreConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\n@Injectable()\r\nexport abstract class NgSimpleStateBaseStore<S extends object | Array<any>> implements OnDestroy {\r\n\r\n private state$: BehaviorSubject<S>;\r\n private localStorageIsEnabled: boolean;\r\n private devToolIsEnabled: boolean;\r\n private devTool: NgSimpleStateDevTool;\r\n private localStorage: NgSimpleStateLocalStorage;\r\n private localStoreConfig: NgSimpleStateStoreConfig;\r\n private storeName: string;\r\n private firstState: S;\r\n private isArray: boolean;\r\n\r\n /**\r\n * Return the observable state\r\n * @returns Observable of the state\r\n */\r\n public get state(): BehaviorSubject<S> {\r\n return this.state$;\r\n }\r\n\r\n constructor(@Inject(Injector) injector: Injector) {\r\n this.devTool = injector.get(NgSimpleStateDevTool);\r\n this.localStorage = injector.get(NgSimpleStateLocalStorage);\r\n\r\n const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});\r\n const storeConfig = this.storeConfig() || {};\r\n this.localStoreConfig = { ...globalConfig, ...storeConfig };\r\n\r\n this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;\r\n this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;\r\n this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;\r\n\r\n if (this.localStorageIsEnabled) {\r\n this.firstState = this.localStorage.getItem<S>(this.storeName);\r\n }\r\n if (!this.firstState) {\r\n this.firstState = this.initialState();\r\n }\r\n\r\n this.devToolSend(this.firstState, `initialState`);\r\n\r\n this.isArray = Array.isArray(this.firstState);\r\n this.state$ = new BehaviorSubject<S>(Object.assign(this.isArray ? [] : {}, this.firstState));\r\n }\r\n\r\n /**\r\n * When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.\r\n */\r\n ngOnDestroy(): void {\r\n this.devToolSend(undefined, 'ngOnDestroy');\r\n this.state$.complete();\r\n }\r\n\r\n /**\r\n * Reset store to first loaded store state\r\n */\r\n resetState(): void {\r\n this.setState(() => (this.firstState), 'resetState');\r\n }\r\n\r\n /**\r\n * Reset store to initial store state\r\n */\r\n restartState(): void {\r\n this.setState(() => (this.initialState()), 'restartState');\r\n }\r\n\r\n /**\r\n * Override this method for set a specific config for the store\r\n * @returns NgSimpleStateStoreConfig\r\n */\r\n storeConfig(): NgSimpleStateStoreConfig {\r\n return null;\r\n }\r\n\r\n /**\r\n * Set into the store the initial state\r\n * @returns The state object\r\n */\r\n protected abstract initialState(): S;\r\n\r\n /**\r\n * Select a store state\r\n * @param selectFn State selector (if not provided return full state)\r\n * @returns Observable of the selected state\r\n */\r\n selectState<K>(selectFn?: (state: Readonly<S>) => K): Observable<K> {\r\n if (!selectFn) {\r\n selectFn = (tmpState: Readonly<S>): any => Object.assign(this.isArray ? [] : {}, tmpState);\r\n }\r\n return this.state$.pipe(\r\n map(state => selectFn(state as Readonly<S>)),\r\n distinctUntilChanged(),\r\n observeOn(asyncScheduler)\r\n );\r\n }\r\n\r\n /**\r\n * Return the current store state (snapshot)\r\n * @returns The current state\r\n */\r\n getCurrentState(): S {\r\n return this.state$.getValue();\r\n }\r\n\r\n /**\r\n * Set a new state\r\n * @param selectFn State reducer\r\n * @param actionName The action label into Redux DevTools (default is parent function name)\r\n */\r\n setState(stateFn: (currentState: Readonly<S>) => Partial<S>, actionName?: string): void {\r\n const currState = this.getCurrentState();\r\n const newState = stateFn(currState);\r\n let state: S;\r\n if (this.isArray) {\r\n state = Object.assign([], newState) as any;\r\n } else {\r\n state = Object.assign({}, currState, newState);\r\n }\r\n this.devToolSend(state, actionName);\r\n if (this.localStorageIsEnabled) {\r\n this.localStorage.setItem<S>(this.storeName, state);\r\n }\r\n this.state$.next(state);\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param newState new state\r\n * @param actionName The action name\r\n * @returns True if fìdev tools are enabled\r\n */\r\n private devToolSend(newState: S, actionName?: string): boolean {\r\n if (!this.devToolIsEnabled) {\r\n return false;\r\n }\r\n if (!actionName) {\r\n // retrive the parent (of parent) method into the stack trace\r\n actionName = new Error().stack\r\n .split('\\n')[3]\r\n .trim()\r\n .split(' ')[1]\r\n .split('.')[1];\r\n }\r\n return this.devTool.send(this.storeName, actionName, newState);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng-simple-state\r\n */\r\nexport * from './lib/ng-simple-state.module';\r\nexport * from './lib/ng-simple-state-base-store';\r\nexport * from './lib/ng-simple-state-dev-tool';\r\nexport * from './lib/ng-simple-state-local-storage';\r\nexport * from './lib/ng-simple-state-models';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-simple-state.mjs","sources":["../../../projects/ng-simple-state/src/lib/ng-simple-state-models.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state.module.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-dev-tool.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-browser-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-local-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-session-storage.ts","../../../projects/ng-simple-state/src/lib/ng-simple-state-base-store.ts","../../../projects/ng-simple-state/src/public-api.ts","../../../projects/ng-simple-state/src/ng-simple-state.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * NgSimpleState config option\r\n */\r\nexport interface NgSimpleStateConfig {\r\n enableDevTool?: boolean;\r\n enableLocalStorage?: boolean;\r\n persistentStorage?: 'session' | 'local';\r\n}\r\n\r\n/**\r\n * NgSimpleState config option for store\r\n */\r\nexport interface NgSimpleStateStoreConfig extends NgSimpleStateConfig {\r\n storeName?: string;\r\n}\r\n\r\n/**\r\n * NgSimpleState config InjectionToken\r\n */\r\nexport const NG_SIMPLE_STORE_CONFIG = new InjectionToken<NgSimpleStateConfig>(\r\n 'ng-simple-state.config'\r\n);\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgSimpleStateConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class NgSimpleStateModule {\r\n static forRoot(\r\n ngHttpCachingConfig?: NgSimpleStateConfig\r\n ): ModuleWithProviders<NgSimpleStateModule> {\r\n return {\r\n ngModule: NgSimpleStateModule,\r\n providers: [\r\n {\r\n provide: NG_SIMPLE_STORE_CONFIG,\r\n useValue: ngHttpCachingConfig,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateDevTool {\r\n\r\n // tslint:disable-next-line: no-string-literal\r\n private globalDevtools: any = (window as any)['__REDUX_DEVTOOLS_EXTENSION__'] || (window as any)['devToolsExtension'];\r\n private localDevTool: any;\r\n private isActiveDevtool = false;\r\n private instanceId = `ng-simple-state-${Date.now()}`;\r\n private baseState: { [key: string]: any } = {};\r\n\r\n constructor() {\r\n if (this.globalDevtools) {\r\n this.localDevTool = this.globalDevtools.connect({\r\n name: 'NgSimpleState',\r\n instanceId: this.instanceId\r\n });\r\n this.isActiveDevtool = !!this.localDevTool;\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.init(this.baseState);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return true if dev tool is actvice\r\n * @returns True if dev tool is actvice\r\n */\r\n isActive(): boolean {\r\n return this.isActiveDevtool;\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param storeName The store name\r\n * @param actionName The action name\r\n * @param state the state\r\n * @returns True if dev tool is enabled and action is send\r\n */\r\n send(storeName: string, actionName: string, state: any): boolean {\r\n if (this.isActiveDevtool) {\r\n this.localDevTool.send(`${storeName}.${actionName}`, Object.assign(this.baseState, { [storeName]: state }), false, this.instanceId);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","export const BASE_KEY = 'NgSimpleState::';\r\n\r\nexport abstract class NgSimpleStateBrowserStorage {\r\n\r\n private isStorageActive = false;\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n constructor(private storage: Storage) {\r\n this.isStorageActive = !!localStorage;\r\n }\r\n\r\n /**\r\n * Return true if local storage is active\r\n * @returns True if local storage is active\r\n */\r\n isActive(): boolean {\r\n return this.isStorageActive;\r\n }\r\n\r\n /**\r\n * Set item into local storage\r\n * @param key key name\r\n * @param state state valie\r\n * @returns True if item is stored into local storage\r\n */\r\n setItem<K>(key: string, state: K): boolean {\r\n if (this.isStorageActive) {\r\n this.storage.setItem(BASE_KEY + key, JSON.stringify(state));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Return item from local storage\r\n * @param key key name\r\n * @returns the item\r\n */\r\n getItem<K>(key: string): K | null {\r\n if (this.isStorageActive) {\r\n const state = this.storage.getItem(BASE_KEY + key);\r\n if (state) {\r\n return JSON.parse(state);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove item from local storage\r\n * @param key key name\r\n * @returns True if item is removed\r\n */\r\n removeItem(key: string): boolean {\r\n if (this.isStorageActive) {\r\n this.storage.removeItem(BASE_KEY + key);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {\r\n constructor() {\r\n super(localStorage);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {\r\n constructor() {\r\n super(sessionStorage);\r\n }\r\n}\r\n","import { Inject, Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, asyncScheduler } from 'rxjs';\r\nimport { map, distinctUntilChanged, observeOn } from 'rxjs/operators';\r\nimport { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';\r\nimport { NgSimpleStateDevTool } from './ng-simple-state-dev-tool';\r\nimport { NgSimpleStateLocalStorage } from './ng-simple-state-local-storage';\r\nimport { NgSimpleStateStoreConfig, NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';\r\nimport { NgSimpleStateSessionStorage } from './ng-simple-state-session-storage';\r\n@Injectable()\r\nexport abstract class NgSimpleStateBaseStore<S extends object | Array<any>> implements OnDestroy {\r\n\r\n private state$: BehaviorSubject<S>;\r\n private localStorageIsEnabled: boolean;\r\n private devToolIsEnabled: boolean;\r\n private devTool: NgSimpleStateDevTool;\r\n private persistentStorage: NgSimpleStateBrowserStorage;\r\n private localStoreConfig: NgSimpleStateStoreConfig;\r\n private storeName: string;\r\n private firstState: S | null = null;\r\n private isArray: boolean;\r\n\r\n /**\r\n * Return the observable state\r\n * @returns Observable of the state\r\n */\r\n public get state(): BehaviorSubject<S> {\r\n return this.state$;\r\n }\r\n\r\n constructor(@Inject(Injector) injector: Injector) {\r\n this.devTool = injector.get(NgSimpleStateDevTool);\r\n\r\n const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});\r\n const storeConfig = this.storeConfig() || {};\r\n this.localStoreConfig = { ...globalConfig, ...storeConfig };\r\n\r\n if (this.localStoreConfig.persistentStorage === 'local') {\r\n this.persistentStorage = injector.get(NgSimpleStateLocalStorage);\r\n } else if (this.localStoreConfig.persistentStorage === 'session') {\r\n this.persistentStorage = injector.get(NgSimpleStateSessionStorage);\r\n } else {\r\n this.persistentStorage = injector.get(NgSimpleStateLocalStorage);\r\n }\r\n\r\n this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;\r\n this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;\r\n this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;\r\n\r\n if (this.localStorageIsEnabled) {\r\n this.firstState = this.persistentStorage.getItem<S>(this.storeName);\r\n }\r\n if (!this.firstState) {\r\n this.firstState = this.initialState();\r\n }\r\n\r\n this.devToolSend(this.firstState, `initialState`);\r\n\r\n this.isArray = Array.isArray(this.firstState);\r\n this.state$ = new BehaviorSubject<S>(Object.assign(this.isArray ? [] : {}, this.firstState));\r\n }\r\n\r\n /**\r\n * When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.\r\n */\r\n ngOnDestroy(): void {\r\n this.devToolSend(undefined, 'ngOnDestroy');\r\n this.state$.complete();\r\n }\r\n\r\n /**\r\n * Reset store to first loaded store state\r\n */\r\n resetState(): void {\r\n this.setState(() => (this.firstState as S), 'resetState');\r\n }\r\n\r\n /**\r\n * Reset store to initial store state\r\n */\r\n restartState(): void {\r\n this.setState(() => (this.initialState()), 'restartState');\r\n }\r\n\r\n /**\r\n * Override this method for set a specific config for the store\r\n * @returns NgSimpleStateStoreConfig\r\n */\r\n storeConfig(): NgSimpleStateStoreConfig | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * Set into the store the initial state\r\n * @returns The state object\r\n */\r\n protected abstract initialState(): S;\r\n\r\n /**\r\n * Select a store state\r\n * @param selectFn State selector (if not provided return full state)\r\n * @returns Observable of the selected state\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n selectState<K>(selectFn?: (state: Readonly<S>) => K): Observable<K> {\r\n if (!selectFn) {\r\n selectFn = (tmpState: Readonly<S>): any => Object.assign(this.isArray ? [] : {}, tmpState);\r\n }\r\n return this.state$.pipe(\r\n map(state => (selectFn as any)(state as Readonly<S>)),\r\n distinctUntilChanged(),\r\n observeOn(asyncScheduler)\r\n );\r\n }\r\n\r\n /**\r\n * Return the current store state (snapshot)\r\n * @returns The current state\r\n */\r\n getCurrentState(): S {\r\n return this.state$.getValue();\r\n }\r\n\r\n /**\r\n * Set a new state\r\n * @param selectFn State reducer\r\n * @param actionName The action label into Redux DevTools (default is parent function name)\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n setState(stateFn: (currentState: Readonly<S>) => Partial<S>, actionName?: string): void {\r\n const currState = this.getCurrentState();\r\n const newState = stateFn(currState);\r\n let state: S;\r\n if (this.isArray) {\r\n state = Object.assign([], newState) as any;\r\n } else {\r\n state = Object.assign({}, currState, newState);\r\n }\r\n this.devToolSend(state, actionName);\r\n if (this.localStorageIsEnabled) {\r\n this.persistentStorage.setItem<S>(this.storeName, state);\r\n }\r\n this.state$.next(state);\r\n }\r\n\r\n /**\r\n * Send to dev tool a new state\r\n * @param newState new state\r\n * @param actionName The action name\r\n * @returns True if fìdev tools are enabled\r\n */\r\n private devToolSend(newState: S | undefined, actionName?: string): boolean {\r\n if (!this.devToolIsEnabled) {\r\n return false;\r\n }\r\n if (!actionName) {\r\n // retrive the parent (of parent) method into the stack trace\r\n actionName = new Error().stack\r\n ?.split('\\n')[3]\r\n .trim()\r\n .split(' ')[1]\r\n .split('.')[1];\r\n }\r\n return this.devTool.send(this.storeName, actionName || 'unknown', newState);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng-simple-state\r\n */\r\nexport * from './lib/ng-simple-state.module';\r\nexport * from './lib/ng-simple-state-base-store';\r\nexport * from './lib/ng-simple-state-dev-tool';\r\nexport * from './lib/ng-simple-state-local-storage';\r\nexport * from './lib/ng-simple-state-session-storage';\r\nexport * from './lib/ng-simple-state-models';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare abstract class NgSimpleStateBaseStore<S extends object | Array<an
|
|
|
7
7
|
private localStorageIsEnabled;
|
|
8
8
|
private devToolIsEnabled;
|
|
9
9
|
private devTool;
|
|
10
|
-
private
|
|
10
|
+
private persistentStorage;
|
|
11
11
|
private localStoreConfig;
|
|
12
12
|
private storeName;
|
|
13
13
|
private firstState;
|
|
@@ -34,7 +34,7 @@ export declare abstract class NgSimpleStateBaseStore<S extends object | Array<an
|
|
|
34
34
|
* Override this method for set a specific config for the store
|
|
35
35
|
* @returns NgSimpleStateStoreConfig
|
|
36
36
|
*/
|
|
37
|
-
storeConfig(): NgSimpleStateStoreConfig;
|
|
37
|
+
storeConfig(): NgSimpleStateStoreConfig | null;
|
|
38
38
|
/**
|
|
39
39
|
* Set into the store the initial state
|
|
40
40
|
* @returns The state object
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const BASE_KEY = "NgSimpleState::";
|
|
2
|
+
export declare abstract class NgSimpleStateBrowserStorage {
|
|
3
|
+
private storage;
|
|
4
|
+
private isStorageActive;
|
|
5
|
+
constructor(storage: Storage);
|
|
6
|
+
/**
|
|
7
|
+
* Return true if local storage is active
|
|
8
|
+
* @returns True if local storage is active
|
|
9
|
+
*/
|
|
10
|
+
isActive(): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Set item into local storage
|
|
13
|
+
* @param key key name
|
|
14
|
+
* @param state state valie
|
|
15
|
+
* @returns True if item is stored into local storage
|
|
16
|
+
*/
|
|
17
|
+
setItem<K>(key: string, state: K): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Return item from local storage
|
|
20
|
+
* @param key key name
|
|
21
|
+
* @returns the item
|
|
22
|
+
*/
|
|
23
|
+
getItem<K>(key: string): K | null;
|
|
24
|
+
/**
|
|
25
|
+
* Remove item from local storage
|
|
26
|
+
* @param key key name
|
|
27
|
+
* @returns True if item is removed
|
|
28
|
+
*/
|
|
29
|
+
removeItem(key: string): boolean;
|
|
30
|
+
}
|
|
@@ -1,32 +1,7 @@
|
|
|
1
|
+
import { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare
|
|
3
|
-
export declare class NgSimpleStateLocalStorage {
|
|
4
|
-
private isStorageActive;
|
|
3
|
+
export declare class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
|
|
5
4
|
constructor();
|
|
6
|
-
/**
|
|
7
|
-
* Return true if local storage is active
|
|
8
|
-
* @returns True if local storage is active
|
|
9
|
-
*/
|
|
10
|
-
isActive(): boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Set item into local storage
|
|
13
|
-
* @param key key name
|
|
14
|
-
* @param state state valie
|
|
15
|
-
* @returns True if item is stored into local storage
|
|
16
|
-
*/
|
|
17
|
-
setItem<K>(key: string, state: K): boolean;
|
|
18
|
-
/**
|
|
19
|
-
* Return item from local storage
|
|
20
|
-
* @param key key name
|
|
21
|
-
* @returns the item
|
|
22
|
-
*/
|
|
23
|
-
getItem<K>(key: string): K | null;
|
|
24
|
-
/**
|
|
25
|
-
* Remove item from local storage
|
|
26
|
-
* @param key key name
|
|
27
|
-
* @returns True if item is removed
|
|
28
|
-
*/
|
|
29
|
-
removeItem(key: string): boolean;
|
|
30
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgSimpleStateLocalStorage, never>;
|
|
31
6
|
static ɵprov: i0.ɵɵInjectableDeclaration<NgSimpleStateLocalStorage>;
|
|
32
7
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {
|
|
4
|
+
constructor();
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgSimpleStateSessionStorage, never>;
|
|
6
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NgSimpleStateSessionStorage>;
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-simple-state",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.6",
|
|
4
4
|
"description": "Simple state management in Angular with only Services and RxJS.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
},
|
|
20
20
|
"homepage": "https://github.com/nigrosimone/ng-simple-state",
|
|
21
21
|
"peerDependencies": {
|
|
22
|
-
"@angular/common": "^
|
|
23
|
-
"@angular/core": "^
|
|
22
|
+
"@angular/common": "^13.0.0",
|
|
23
|
+
"@angular/core": "^13.0.0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"tslib": "^2.
|
|
26
|
+
"tslib": "^2.3.0"
|
|
27
27
|
},
|
|
28
28
|
"module": "fesm2015/ng-simple-state.mjs",
|
|
29
29
|
"es2020": "fesm2020/ng-simple-state.mjs",
|
|
@@ -44,8 +44,5 @@
|
|
|
44
44
|
"default": "./fesm2020/ng-simple-state.mjs"
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
|
-
"sideEffects": false
|
|
48
|
-
"scripts": {
|
|
49
|
-
"prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with Ivy partial compilation mode, before attempting to publish.\\n')\" && exit 1"
|
|
50
|
-
}
|
|
47
|
+
"sideEffects": false
|
|
51
48
|
}
|
package/public-api.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from './lib/ng-simple-state.module';
|
|
|
2
2
|
export * from './lib/ng-simple-state-base-store';
|
|
3
3
|
export * from './lib/ng-simple-state-dev-tool';
|
|
4
4
|
export * from './lib/ng-simple-state-local-storage';
|
|
5
|
+
export * from './lib/ng-simple-state-session-storage';
|
|
5
6
|
export * from './lib/ng-simple-state-models';
|