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 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-let)
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.localStorage.getItem(this.storeName);
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(() => (this.firstState), 'resetState');
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.localStorage.setItem(this.storeName, state);
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
- .split('\n')[3]
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 = function NgSimpleStateBaseStore_Factory(t) { return new (t || NgSimpleStateBaseStore)(i0.ɵɵinject(Injector)); };
122
- NgSimpleStateBaseStore.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateBaseStore, factory: NgSimpleStateBaseStore.ɵfac });
123
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateBaseStore, [{
124
- type: Injectable
125
- }], function () { return [{ type: i0.Injector, decorators: [{
126
- type: Inject,
127
- args: [Injector]
128
- }] }]; }, null); })();
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 = function NgSimpleStateDevTool_Factory(t) { return new (t || NgSimpleStateDevTool)(); };
44
- NgSimpleStateDevTool.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateDevTool, factory: NgSimpleStateDevTool.ɵfac, providedIn: 'root' });
45
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateDevTool, [{
46
- type: Injectable,
47
- args: [{ providedIn: 'root' }]
48
- }], function () { return []; }, null); })();
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWRldi10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctc2ltcGxlLXN0YXRlL3NyYy9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFTN0I7UUFQQSw4Q0FBOEM7UUFDdEMsbUJBQWMsR0FBUSxNQUFNLENBQUMsOEJBQThCLENBQUMsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU1RixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdDLGNBQVMsR0FBMkIsRUFBRSxDQUFDO1FBRzNDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxJQUFJLEVBQUUsZUFBZTtnQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzlCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUM7U0FDSjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsU0FBaUIsRUFBRSxVQUFrQixFQUFFLEtBQVU7UUFDbEQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BJLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzt3RkEzQ1Esb0JBQW9COzBFQUFwQixvQkFBb0IsV0FBcEIsb0JBQW9CLG1CQURQLE1BQU07dUZBQ25CLG9CQUFvQjtjQURoQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5nU2ltcGxlU3RhdGVEZXZUb29sIHtcclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXHJcbiAgICBwcml2YXRlIGdsb2JhbERldnRvb2xzOiBhbnkgPSB3aW5kb3dbJ19fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18nXSB8fCB3aW5kb3dbJ2RldlRvb2xzRXh0ZW5zaW9uJ107XHJcbiAgICBwcml2YXRlIGxvY2FsRGV2VG9vbDogYW55O1xyXG4gICAgcHJpdmF0ZSBpc0FjdGl2ZURldnRvb2wgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgaW5zdGFuY2VJZCA9IGBuZy1zaW1wbGUtc3RhdGUtJHtEYXRlLm5vdygpfWA7XHJcbiAgICBwcml2YXRlIGJhc2VTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbERldnRvb2xzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYWxEZXZUb29sID0gdGhpcy5nbG9iYWxEZXZ0b29scy5jb25uZWN0KHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdOZ1NpbXBsZVN0YXRlJyxcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2VJZFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZURldnRvb2wgPSAhIXRoaXMubG9jYWxEZXZUb29sO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZURldnRvb2wpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxEZXZUb29sLmluaXQodGhpcy5iYXNlU3RhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgZGV2IHRvb2wgaXMgYWN0dmljZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZXYgdG9vbCBpcyBhY3R2aWNlXHJcbiAgICAgKi9cclxuICAgIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzQWN0aXZlRGV2dG9vbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgdG8gZGV2IHRvb2wgYSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBzdG9yZU5hbWUgVGhlIHN0b3JlIG5hbWVcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbmFtZVxyXG4gICAgICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZXYgdG9vbCBpcyBlbmFibGVkIGFuZCBhY3Rpb24gaXMgc2VuZFxyXG4gICAgICovXHJcbiAgICBzZW5kKHN0b3JlTmFtZTogc3RyaW5nLCBhY3Rpb25OYW1lOiBzdHJpbmcsIHN0YXRlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZURldnRvb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhbERldlRvb2wuc2VuZChgJHtzdG9yZU5hbWV9LiR7YWN0aW9uTmFtZX1gLCBPYmplY3QuYXNzaWduKHRoaXMuYmFzZVN0YXRlLCB7IFtzdG9yZU5hbWVdOiBzdGF0ZSB9KSwgZmFsc2UsIHRoaXMuaW5zdGFuY2VJZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
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 const BASE_KEY = 'NgSimpleState::';
4
- export class NgSimpleStateLocalStorage {
4
+ export class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
5
5
  constructor() {
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
- 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 = function NgSimpleStateLocalStorage_Factory(t) { return new (t || NgSimpleStateLocalStorage)(); };
55
- NgSimpleStateLocalStorage.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateLocalStorage, factory: NgSimpleStateLocalStorage.ɵfac, providedIn: 'root' });
56
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateLocalStorage, [{
57
- type: Injectable,
58
- args: [{ providedIn: 'root' }]
59
- }], function () { return []; }, null); })();
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUM7QUFHMUMsTUFBTSxPQUFPLHlCQUF5QjtJQUlsQztRQUZRLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUksR0FBVyxFQUFFLEtBQVE7UUFDNUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFJLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztrR0F0RFEseUJBQXlCOytFQUF6Qix5QkFBeUIsV0FBekIseUJBQXlCLG1CQURaLE1BQU07dUZBQ25CLHlCQUF5QjtjQURyQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJBU0VfS0VZID0gJ05nU2ltcGxlU3RhdGU6Oic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTmdTaW1wbGVTdGF0ZUxvY2FsU3RvcmFnZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBpc1N0b3JhZ2VBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmlzU3RvcmFnZUFjdGl2ZSA9ICEhbG9jYWxTdG9yYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgbG9jYWwgc3RvcmFnZSBpcyBhY3RpdmVcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgbG9jYWwgc3RvcmFnZSBpcyBhY3RpdmVcclxuICAgICAqL1xyXG4gICAgaXNBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTdG9yYWdlQWN0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGl0ZW0gaW50byBsb2NhbCBzdG9yYWdlXHJcbiAgICAgKiBAcGFyYW0ga2V5IGtleSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gc3RhdGUgc3RhdGUgdmFsaWVcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgaXRlbSBpcyBzdG9yZWQgaW50byBsb2NhbCBzdG9yYWdlXHJcbiAgICAgKi9cclxuICAgIHNldEl0ZW08Sz4oa2V5OiBzdHJpbmcsIHN0YXRlOiBLKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9yYWdlQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKEJBU0VfS0VZICsga2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIGl0ZW0gZnJvbSBsb2NhbCBzdG9yYWdlXHJcbiAgICAgKiBAcGFyYW0ga2V5IGtleSBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgaXRlbVxyXG4gICAgICovXHJcbiAgICBnZXRJdGVtPEs+KGtleTogc3RyaW5nKTogSyB8IG51bGwge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU3RvcmFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEJBU0VfS0VZICsga2V5KTtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBrZXkgbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHJlbW92ZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU3RvcmFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShCQVNFX0tFWSArIGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlCL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDcEQsd0JBQXdCLENBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIE5nU2ltcGxlU3RhdGUgY29uZmlnIG9wdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ1NpbXBsZVN0YXRlQ29uZmlnIHtcclxuICAgIGVuYWJsZURldlRvb2w/OiBib29sZWFuO1xyXG4gICAgZW5hYmxlTG9jYWxTdG9yYWdlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5nU2ltcGxlU3RhdGUgY29uZmlnIG9wdGlvbiBmb3Igc3RvcmVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUNvbmZpZyB7XHJcbiAgICBzdG9yZU5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBOZ1NpbXBsZVN0YXRlIGNvbmZpZyBJbmplY3Rpb25Ub2tlblxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IE5HX1NJTVBMRV9TVE9SRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdTaW1wbGVTdGF0ZUNvbmZpZz4oXHJcbiAgICAnbmctc2ltcGxlLXN0YXRlLmNvbmZpZydcclxuKTtcclxuIl19
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 = function NgSimpleStateModule_Factory(t) { return new (t || NgSimpleStateModule)(); };
18
- NgSimpleStateModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: NgSimpleStateModule });
19
- NgSimpleStateModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[]] });
20
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateModule, [{
21
- type: NgModule,
22
- args: [{
23
- declarations: [],
24
- imports: [],
25
- exports: [],
26
- }]
27
- }], null, null); })();
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUF1QixzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU92RixNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQ1YsbUJBQXlDO1FBRXpDLE9BQU87WUFDSCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO2lCQUNoQzthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7O3NGQWJRLG1CQUFtQjtxRUFBbkIsbUJBQW1CO3lFQUhuQixFQUFFO3VGQUdGLG1CQUFtQjtjQUwvQixRQUFRO2VBQUM7Z0JBQ04sWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLE9BQU8sRUFBRSxFQUFFO2FBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlQ29uZmlnLCBOR19TSU1QTEVfU1RPUkVfQ09ORklHIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtbW9kZWxzJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gICAgaW1wb3J0czogW10sXHJcbiAgICBleHBvcnRzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nU2ltcGxlU3RhdGVNb2R1bGUge1xyXG4gICAgc3RhdGljIGZvclJvb3QoXHJcbiAgICAgICAgbmdIdHRwQ2FjaGluZ0NvbmZpZz86IE5nU2ltcGxlU3RhdGVDb25maWdcclxuICAgICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmdTaW1wbGVTdGF0ZU1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ1NpbXBsZVN0YXRlTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBOR19TSU1QTEVfU1RPUkVfQ09ORklHLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBuZ0h0dHBDYWNoaW5nQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
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=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZy1zaW1wbGUtc3RhdGVcclxuICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXNpbXBsZS1zdGF0ZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1zaW1wbGUtc3RhdGUtYmFzZS1zdG9yZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXNpbXBsZS1zdGF0ZS1kZXYtdG9vbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXNpbXBsZS1zdGF0ZS1sb2NhbC1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLW1vZGVscyc7XHJcbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nLXNpbXBsZS1zdGF0ZVxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXNpbXBsZS1zdGF0ZS1iYXNlLXN0b3JlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1zaW1wbGUtc3RhdGUtc2Vzc2lvbi1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLW1vZGVscyc7XHJcbiJdfQ==
@@ -21,19 +21,17 @@ class NgSimpleStateModule {
21
21
  };
22
22
  }
23
23
  }
24
- NgSimpleStateModule.ɵfac = function NgSimpleStateModule_Factory(t) { return new (t || NgSimpleStateModule)(); };
25
- NgSimpleStateModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: NgSimpleStateModule });
26
- NgSimpleStateModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[]] });
27
- (function () {
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
- }], null, null);
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 = function NgSimpleStateDevTool_Factory(t) { return new (t || NgSimpleStateDevTool)(); };
79
- NgSimpleStateDevTool.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateDevTool, factory: NgSimpleStateDevTool.ɵfac, providedIn: 'root' });
80
- (function () {
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 []; }, null);
85
- })();
81
+ }], ctorParameters: function () { return []; } });
86
82
 
87
83
  const BASE_KEY = 'NgSimpleState::';
88
- class NgSimpleStateLocalStorage {
89
- constructor() {
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
- localStorage.setItem(BASE_KEY + key, JSON.stringify(state));
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 = localStorage.getItem(BASE_KEY + key);
121
- return JSON.parse(state);
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
- localStorage.removeItem(BASE_KEY + key);
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 = function NgSimpleStateLocalStorage_Factory(t) { return new (t || NgSimpleStateLocalStorage)(); };
139
- NgSimpleStateLocalStorage.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateLocalStorage, factory: NgSimpleStateLocalStorage.ɵfac, providedIn: 'root' });
140
- (function () {
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 []; }, null);
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.localStorage.getItem(this.storeName);
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(() => (this.firstState), 'resetState');
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.localStorage.setItem(this.storeName, state);
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 = function NgSimpleStateBaseStore_Factory(t) { return new (t || NgSimpleStateBaseStore)(i0.ɵɵinject(Injector)); };
261
- NgSimpleStateBaseStore.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateBaseStore, factory: NgSimpleStateBaseStore.ɵfac });
262
- (function () {
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
- }, null);
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 { BASE_KEY, NG_SIMPLE_STORE_CONFIG, NgSimpleStateBaseStore, NgSimpleStateDevTool, NgSimpleStateLocalStorage, NgSimpleStateModule };
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 = function NgSimpleStateModule_Factory(t) { return new (t || NgSimpleStateModule)(); };
25
- NgSimpleStateModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: NgSimpleStateModule });
26
- NgSimpleStateModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[]] });
27
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateModule, [{
28
- type: NgModule,
29
- args: [{
30
- declarations: [],
31
- imports: [],
32
- exports: [],
33
- }]
34
- }], null, null); })();
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 = function NgSimpleStateDevTool_Factory(t) { return new (t || NgSimpleStateDevTool)(); };
77
- NgSimpleStateDevTool.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateDevTool, factory: NgSimpleStateDevTool.ɵfac, providedIn: 'root' });
78
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateDevTool, [{
79
- type: Injectable,
80
- args: [{ providedIn: 'root' }]
81
- }], function () { return []; }, null); })();
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 NgSimpleStateLocalStorage {
85
- constructor() {
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
- localStorage.setItem(BASE_KEY + key, JSON.stringify(state));
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 = localStorage.getItem(BASE_KEY + key);
117
- return JSON.parse(state);
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
- localStorage.removeItem(BASE_KEY + key);
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 = function NgSimpleStateLocalStorage_Factory(t) { return new (t || NgSimpleStateLocalStorage)(); };
135
- NgSimpleStateLocalStorage.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateLocalStorage, factory: NgSimpleStateLocalStorage.ɵfac, providedIn: 'root' });
136
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateLocalStorage, [{
137
- type: Injectable,
138
- args: [{ providedIn: 'root' }]
139
- }], function () { return []; }, null); })();
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.localStorage.getItem(this.storeName);
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(() => (this.firstState), 'resetState');
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.localStorage.setItem(this.storeName, state);
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
- .split('\n')[3]
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 = function NgSimpleStateBaseStore_Factory(t) { return new (t || NgSimpleStateBaseStore)(i0.ɵɵinject(Injector)); };
255
- NgSimpleStateBaseStore.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NgSimpleStateBaseStore, factory: NgSimpleStateBaseStore.ɵfac });
256
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgSimpleStateBaseStore, [{
257
- type: Injectable
258
- }], function () { return [{ type: i0.Injector, decorators: [{
259
- type: Inject,
260
- args: [Injector]
261
- }] }]; }, null); })();
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 { BASE_KEY, NG_SIMPLE_STORE_CONFIG, NgSimpleStateBaseStore, NgSimpleStateDevTool, NgSimpleStateLocalStorage, NgSimpleStateModule };
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 localStorage;
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 const BASE_KEY = "NgSimpleState::";
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
  }
@@ -5,6 +5,7 @@ import { InjectionToken } from '@angular/core';
5
5
  export interface NgSimpleStateConfig {
6
6
  enableDevTool?: boolean;
7
7
  enableLocalStorage?: boolean;
8
+ persistentStorage?: 'session' | 'local';
8
9
  }
9
10
  /**
10
11
  * NgSimpleState config option for store
@@ -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",
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": "^10.0.6",
23
- "@angular/core": "^10.0.6"
22
+ "@angular/common": "^13.0.0",
23
+ "@angular/core": "^13.0.0"
24
24
  },
25
25
  "dependencies": {
26
- "tslib": "^2.0.0"
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';