ng-simple-state 15.1.3 → 16.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +79 -0
  2. package/esm2022/lib/ng-simple-state-base-store.mjs +191 -0
  3. package/esm2022/lib/ng-simple-state-browser-storage.mjs +71 -0
  4. package/esm2022/lib/ng-simple-state-dev-tool.mjs +55 -0
  5. package/esm2022/lib/ng-simple-state-local-storage.mjs +16 -0
  6. package/esm2022/lib/ng-simple-state-models.mjs +6 -0
  7. package/esm2022/lib/ng-simple-state-session-storage.mjs +16 -0
  8. package/esm2022/lib/ng-simple-state.module.mjs +24 -0
  9. package/{esm2020 → esm2022}/ng-simple-state.mjs +4 -4
  10. package/{esm2020 → esm2022}/public-api.mjs +9 -9
  11. package/{fesm2020 → fesm2022}/ng-simple-state.mjs +344 -334
  12. package/fesm2022/ng-simple-state.mjs.map +1 -0
  13. package/index.d.ts +5 -5
  14. package/lib/ng-simple-state-base-store.d.ts +90 -90
  15. package/lib/ng-simple-state-browser-storage.d.ts +35 -30
  16. package/lib/ng-simple-state-dev-tool.d.ts +42 -25
  17. package/lib/ng-simple-state-local-storage.d.ts +7 -7
  18. package/lib/ng-simple-state-models.d.ts +35 -20
  19. package/lib/ng-simple-state-session-storage.d.ts +7 -7
  20. package/lib/ng-simple-state.module.d.ts +9 -9
  21. package/package.json +7 -13
  22. package/public-api.d.ts +6 -6
  23. package/esm2020/lib/ng-simple-state-base-store.mjs +0 -190
  24. package/esm2020/lib/ng-simple-state-browser-storage.mjs +0 -55
  25. package/esm2020/lib/ng-simple-state-dev-tool.mjs +0 -55
  26. package/esm2020/lib/ng-simple-state-local-storage.mjs +0 -15
  27. package/esm2020/lib/ng-simple-state-models.mjs +0 -6
  28. package/esm2020/lib/ng-simple-state-session-storage.mjs +0 -15
  29. package/esm2020/lib/ng-simple-state.module.mjs +0 -28
  30. package/fesm2015/ng-simple-state.mjs +0 -358
  31. package/fesm2015/ng-simple-state.mjs.map +0 -1
  32. package/fesm2020/ng-simple-state.mjs.map +0 -1
package/README.md CHANGED
@@ -477,6 +477,85 @@ export class AppComponent {
477
477
  }
478
478
  ```
479
479
 
480
+
481
+ ## NgSimpleStateBaseStore API
482
+
483
+ ```ts
484
+ @Injectable()
485
+ @Directive()
486
+ export abstract class NgSimpleStateBaseStore<S extends object | Array<any>> implements OnDestroy {
487
+
488
+ /**
489
+ * Return the observable of the state
490
+ * @returns Observable of the state
491
+ */
492
+ public get state(): BehaviorSubject<S>;
493
+
494
+ constructor(@Inject(Injector) injector: Injector);
495
+
496
+ /**
497
+ * When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.
498
+ */
499
+ ngOnDestroy(): void;
500
+
501
+ /**
502
+ * Reset store to first loaded store state:
503
+ * - the last saved state, if `enableLocalStorage` config is `true`
504
+ * - otherwise the initial state provided from `initialState()` method.
505
+ */
506
+ resetState(): boolean;
507
+
508
+ /**
509
+ * Restart the store to initial state provided from `initialState()` method
510
+ */
511
+ restartState(): boolean;
512
+
513
+ /**
514
+ * Override this method for set a specific config for the store
515
+ * @returns NgSimpleStateStoreConfig
516
+ */
517
+ storeConfig(): NgSimpleStateStoreConfig;
518
+
519
+ /**
520
+ * Set into the store the initial state
521
+ * @param injector current Injector
522
+ * @returns The state object
523
+ */
524
+ initialState(injector?: Injector): S;
525
+
526
+ /**
527
+ * Select a store state
528
+ * @param selectFn State selector (if not provided return full state)
529
+ * @param comparator A function used to compare the previous and current state for equality. Defaults to a `===` check.
530
+ * @returns Observable of the selected state
531
+ */
532
+ selectState<K>(selectFn?: (state: Readonly<S>) => K, comparator?: (previous: K, current: K) => boolean): Observable<K>;
533
+
534
+ /**
535
+ * Return the current store state (snapshot)
536
+ * @returns The current state
537
+ */
538
+ getCurrentState(): Readonly<S>;
539
+
540
+ /**
541
+ * Return the first loaded store state:
542
+ * the last saved state, if `enableLocalStorage` config is `true`;
543
+ * otherwise the initial state provided from `initialState()` method.
544
+ * @returns The first state
545
+ */
546
+ getFirstState(): Readonly<S> | null;
547
+
548
+ /**
549
+ * Set a new state
550
+ * @param selectFn State reducer
551
+ * @param actionName The action label into Redux DevTools (default is parent function name)
552
+ * @returns True if the state is changed
553
+ */
554
+ setState(stateFn: (currentState: Readonly<S>) => Partial<S>, actionName?: string): boolean;
555
+ }
556
+ ```
557
+
558
+
480
559
  ## Alternatives
481
560
 
482
561
  Aren't you satisfied? there are some valid alternatives:
@@ -0,0 +1,191 @@
1
+ import { Inject, Injectable, Injector, Directive, isDevMode } from '@angular/core';
2
+ import { BehaviorSubject, asyncScheduler } from 'rxjs';
3
+ import { map, distinctUntilChanged, observeOn } from 'rxjs/operators';
4
+ import { NgSimpleStateDevTool } from './ng-simple-state-dev-tool';
5
+ import { NgSimpleStateLocalStorage } from './ng-simple-state-local-storage';
6
+ import { NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';
7
+ import { NgSimpleStateSessionStorage } from './ng-simple-state-session-storage';
8
+ import * as i0 from "@angular/core";
9
+ class NgSimpleStateBaseStore {
10
+ /**
11
+ * Return the observable of the state
12
+ * @returns Observable of the state
13
+ */
14
+ get state() {
15
+ return this.state$;
16
+ }
17
+ constructor(injector) {
18
+ this.devMode = isDevMode();
19
+ const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});
20
+ const storeConfig = this.storeConfig() || {};
21
+ this.localStoreConfig = { ...globalConfig, ...storeConfig };
22
+ this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;
23
+ if (this.localStorageIsEnabled) {
24
+ if (this.localStoreConfig.persistentStorage === 'local') {
25
+ this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
26
+ }
27
+ else if (this.localStoreConfig.persistentStorage === 'session') {
28
+ this.persistentStorage = injector.get(NgSimpleStateSessionStorage);
29
+ }
30
+ }
31
+ this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;
32
+ if (this.devToolIsEnabled) {
33
+ this.devTool = injector.get(NgSimpleStateDevTool);
34
+ }
35
+ this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;
36
+ if (typeof this.localStoreConfig.comparator === 'function') {
37
+ this.comparator = this.localStoreConfig.comparator;
38
+ }
39
+ if (this.localStorageIsEnabled && this.persistentStorage) {
40
+ const firstState = this.persistentStorage.getItem(this.storeName);
41
+ if (firstState) {
42
+ this.firstState = firstState;
43
+ }
44
+ }
45
+ if (!this.firstState) {
46
+ this.firstState = this.initialState(injector);
47
+ }
48
+ this.devToolSend(this.firstState, `initialState`);
49
+ this.isArray = Array.isArray(this.firstState);
50
+ this.state$ = new BehaviorSubject(Object.assign(this.isArray ? [] : {}, this.firstState));
51
+ }
52
+ /**
53
+ * When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.
54
+ */
55
+ ngOnDestroy() {
56
+ this.devToolSend(undefined, 'ngOnDestroy');
57
+ this.state$.complete();
58
+ }
59
+ /**
60
+ * Reset store to first loaded store state:
61
+ * - the last saved state, if `enableLocalStorage` config is `true`
62
+ * - otherwise the initial state provided from `initialState()` method.
63
+ */
64
+ resetState() {
65
+ return this.setState(() => this.firstState, 'resetState');
66
+ }
67
+ /**
68
+ * Restart the store to initial state provided from `initialState()` method
69
+ */
70
+ restartState() {
71
+ return this.setState(() => this.initialState(), 'restartState');
72
+ }
73
+ /**
74
+ * Select a store state
75
+ * @param selectFn State selector (if not provided return full state)
76
+ * @param comparator A function used to compare the previous and current state for equality. Defaults to a `===` check.
77
+ * @returns Observable of the selected state
78
+ */
79
+ selectState(selectFn, comparator) {
80
+ if (!selectFn) {
81
+ selectFn = (tmpState) => Object.assign(this.isArray ? [] : {}, tmpState);
82
+ }
83
+ if (!comparator && this.comparator) {
84
+ comparator = this.comparator;
85
+ }
86
+ return this.state$.pipe(map(state => selectFn(state)), distinctUntilChanged(comparator), observeOn(asyncScheduler));
87
+ }
88
+ /**
89
+ * Return the current store state (snapshot)
90
+ * @returns The current state
91
+ */
92
+ getCurrentState() {
93
+ return this.deepFreeze(this.state$.getValue());
94
+ }
95
+ /**
96
+ * Return the first loaded store state:
97
+ * the last saved state, if `enableLocalStorage` config is `true`;
98
+ * otherwise the initial state provided from `initialState()` method.
99
+ * @returns The first state
100
+ */
101
+ getFirstState() {
102
+ return this.deepFreeze(this.firstState);
103
+ }
104
+ /**
105
+ * Set a new state
106
+ * @param selectFn State reducer
107
+ * @param actionName The action label into Redux DevTools (default is parent function name)
108
+ * @returns True if the state is changed
109
+ */
110
+ setState(stateFn, actionName) {
111
+ const currState = this.getCurrentState();
112
+ const newState = stateFn(currState);
113
+ if (currState === newState) {
114
+ return false;
115
+ }
116
+ let state;
117
+ if (this.isArray) {
118
+ state = Object.assign([], newState);
119
+ }
120
+ else {
121
+ state = Object.assign({}, currState, newState);
122
+ }
123
+ this.state$.next(state);
124
+ this.devToolSend(state, actionName);
125
+ if (this.localStorageIsEnabled && this.persistentStorage) {
126
+ this.persistentStorage.setItem(this.storeName, state);
127
+ }
128
+ return true;
129
+ }
130
+ /**
131
+ * Send to dev tool a new state
132
+ * @param newState new state
133
+ * @param actionName The action name
134
+ * @returns True if fìdev tools are enabled
135
+ */
136
+ devToolSend(newState, actionName) {
137
+ if (!this.devToolIsEnabled || !this.devTool) {
138
+ return false;
139
+ }
140
+ if (!actionName) {
141
+ // retrive the parent (of parent) method into the stack trace
142
+ actionName = new Error().stack
143
+ ?.split('\n')[3]
144
+ .trim()
145
+ .split(' ')[1]
146
+ .split('.')[1] || 'unknown';
147
+ }
148
+ if (!this.devTool.send(this.storeName, actionName, newState)) {
149
+ console.log(this.storeName + '.' + actionName, newState);
150
+ }
151
+ return true;
152
+ }
153
+ /**
154
+ * Recursively Object.freeze simple Javascript structures consisting of plain objects, arrays, and primitives.
155
+ * Make the data immutable.
156
+ * @returns immutable object
157
+ */
158
+ deepFreeze(object) {
159
+ // No freezing in production (for better performance).
160
+ if (!this.devMode || !object) {
161
+ return object;
162
+ }
163
+ // When already frozen, we assume its children are frozen (for better performance).
164
+ // This should be true if you always use `deepFreeze` to freeze objects.
165
+ //
166
+ // Note that Object.isFrozen will also return `true` for primitives (numbers,
167
+ // strings, booleans, undefined, null), so there is no need to check for
168
+ // those explicitly.
169
+ if (Object.isFrozen(object)) {
170
+ return object;
171
+ }
172
+ // At this point we know that we're dealing with either an array or plain object, so
173
+ // just freeze it and recurse on its values.
174
+ Object.freeze(object);
175
+ Object.keys(object).forEach(key => this.deepFreeze(object[key]));
176
+ return object;
177
+ }
178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateBaseStore, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
179
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgSimpleStateBaseStore, ngImport: i0 }); }
180
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateBaseStore }); }
181
+ }
182
+ export { NgSimpleStateBaseStore };
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateBaseStore, decorators: [{
184
+ type: Injectable
185
+ }, {
186
+ type: Directive
187
+ }], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
188
+ type: Inject,
189
+ args: [Injector]
190
+ }] }]; } });
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJhc2Utc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtYmFzZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBNEIsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFFaEYsTUFFc0Isc0JBQXNCO0lBY3hDOzs7T0FHRztJQUNILElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBOEIsUUFBa0I7UUFYeEMsWUFBTyxHQUFZLFNBQVMsRUFBRSxDQUFDO1FBYW5DLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBRTVELElBQUksQ0FB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QUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFVBQVUsQ0FBQyxNQUFTO1FBQ3hCLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMxQixPQUFPLE1BQXFCLENBQUM7U0FDaEM7UUFFRCxtRkFBbUY7UUFDbkYsd0VBQXdFO1FBQ3hFLEVBQUU7UUFDRiw2RUFBNkU7UUFDN0Usd0VBQXdFO1FBQ3hFLG9CQUFvQjtRQUNwQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTyxNQUFxQixDQUFDO1NBQ2hDO1FBRUQsb0ZBQW9GO1FBQ3BGLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxNQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFFLE9BQU8sTUFBcUIsQ0FBQztJQUNqQyxDQUFDOzhHQXhOaUIsc0JBQXNCLGtCQXNCcEIsUUFBUTtrR0F0QlYsc0JBQXNCO2tIQUF0QixzQkFBc0I7O1NBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUYzQyxVQUFVOztrQkFDVixTQUFTOzswQkF1Qk8sTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95LCBEaXJlY3RpdmUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG9ic2VydmVPbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtYnJvd3Nlci1zdG9yYWdlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZURldlRvb2wgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1kZXYtdG9vbCc7XHJcbmltcG9ydCB7IE5nU2ltcGxlU3RhdGVMb2NhbFN0b3JhZ2UgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnLCBOR19TSU1QTEVfU1RPUkVfQ09ORklHIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtbW9kZWxzJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtc2Vzc2lvbi1zdG9yYWdlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ1NpbXBsZVN0YXRlQmFzZVN0b3JlPFMgZXh0ZW5kcyBvYmplY3QgfCBBcnJheTxhbnk+PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxTPjtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sITogTmdTaW1wbGVTdGF0ZURldlRvb2w7XHJcbiAgICBwcml2YXRlIHBlcnNpc3RlbnRTdG9yYWdlITogTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlO1xyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JlQ29uZmlnOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWc7XHJcbiAgICBwcml2YXRlIHN0b3JlTmFtZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBmaXJzdFN0YXRlITogUztcclxuICAgIHByaXZhdGUgaXNBcnJheTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgZGV2TW9kZTogYm9vbGVhbiA9IGlzRGV2TW9kZSgpO1xyXG4gICAgcHJpdmF0ZSBjb21wYXJhdG9yITogPEs+KHByZXZpb3VzOiBLLCBjdXJyZW50OiBLKSA9PiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBvYnNlcnZhYmxlIG9mIHRoZSBzdGF0ZVxyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgc3RhdGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBCZWhhdmlvclN1YmplY3Q8Uz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlJDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEluamVjdG9yKSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHJcbiAgICAgICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gaW5qZWN0b3IuZ2V0KE5HX1NJTVBMRV9TVE9SRV9DT05GSUcsIHt9KTtcclxuICAgICAgICBjb25zdCBzdG9yZUNvbmZpZyA9IHRoaXMuc3RvcmVDb25maWcoKSB8fCB7fTtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmVDb25maWcgPSB7IC4uLmdsb2JhbENvbmZpZywgLi4uc3RvcmVDb25maWcgfTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZUxvY2FsU3RvcmFnZSA9PT0gJ2Jvb2xlYW4nID8gdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZUxvY2FsU3RvcmFnZSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubG9jYWxTdG9yZUNvbmZpZy5wZXJzaXN0ZW50U3RvcmFnZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlTG9jYWxTdG9yYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsU3RvcmVDb25maWcucGVyc2lzdGVudFN0b3JhZ2UgPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlU2Vzc2lvblN0b3JhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRldlRvb2xJc0VuYWJsZWQgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZURldlRvb2wgPT09ICdib29sZWFuJyA/IHRoaXMubG9jYWxTdG9yZUNvbmZpZy5lbmFibGVEZXZUb29sIDogZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZGV2VG9vbElzRW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRldlRvb2wgPSBpbmplY3Rvci5nZXQoTmdTaW1wbGVTdGF0ZURldlRvb2wpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zdG9yZU5hbWUgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLnN0b3JlTmFtZSA9PT0gJ3N0cmluZycgPyB0aGlzLmxvY2FsU3RvcmVDb25maWcuc3RvcmVOYW1lIDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmNvbXBhcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wYXJhdG9yID0gdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmNvbXBhcmF0b3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQgJiYgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSkge1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdFN0YXRlID0gdGhpcy5wZXJzaXN0ZW50U3RvcmFnZS5nZXRJdGVtPFM+KHRoaXMuc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0U3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RTdGF0ZSA9IGZpcnN0U3RhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0U3RhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5maXJzdFN0YXRlID0gdGhpcy5pbml0aWFsU3RhdGUoaW5qZWN0b3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kZXZUb29sU2VuZCh0aGlzLmZpcnN0U3RhdGUsIGBpbml0aWFsU3RhdGVgKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSh0aGlzLmZpcnN0U3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTPihPYmplY3QuYXNzaWduKHRoaXMuaXNBcnJheSA/IFtdIDoge30sIHRoaXMuZmlyc3RTdGF0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB5b3Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QsIHlvdSBoYXZlIHRvIGNhbGwgdGhlIGBzdXBlci5uZ09uRGVzdHJveSgpYCBtZXRob2QgaW4geW91ciBgbmdPbkRlc3Ryb3koKWAgbWV0aG9kLlxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRldlRvb2xTZW5kKHVuZGVmaW5lZCwgJ25nT25EZXN0cm95Jyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0IHN0b3JlIHRvIGZpcnN0IGxvYWRlZCBzdG9yZSBzdGF0ZTpcclxuICAgICAqICAtIHRoZSBsYXN0IHNhdmVkIHN0YXRlLCBpZiBgZW5hYmxlTG9jYWxTdG9yYWdlYCBjb25maWcgaXMgYHRydWVgXHJcbiAgICAgKiAgLSBvdGhlcndpc2UgdGhlIGluaXRpYWwgc3RhdGUgcHJvdmlkZWQgZnJvbSBgaW5pdGlhbFN0YXRlKClgIG1ldGhvZC5cclxuICAgICAqL1xyXG4gICAgcmVzZXRTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSgoKSA9PiB0aGlzLmZpcnN0U3RhdGUsICdyZXNldFN0YXRlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0YXJ0IHRoZSBzdG9yZSB0byBpbml0aWFsIHN0YXRlIHByb3ZpZGVkIGZyb20gYGluaXRpYWxTdGF0ZSgpYCBtZXRob2RcclxuICAgICAqL1xyXG4gICAgcmVzdGFydFN0YXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKCgpID0+IHRoaXMuaW5pdGlhbFN0YXRlKCksICdyZXN0YXJ0U3RhdGUnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGZvciBzZXQgYSBzcGVjaWZpYyBjb25maWcgZm9yIHRoZSBzdG9yZVxyXG4gICAgICogQHJldHVybnMgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzdG9yZUNvbmZpZygpOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgaW50byB0aGUgc3RvcmUgdGhlIGluaXRpYWwgc3RhdGVcclxuICAgICAqIEBwYXJhbSBpbmplY3RvciBjdXJyZW50IEluamVjdG9yXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgc3RhdGUgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0aWFsU3RhdGUoaW5qZWN0b3I/OiBJbmplY3Rvcik6IFM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWxlY3QgYSBzdG9yZSBzdGF0ZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdEZuIFN0YXRlIHNlbGVjdG9yIChpZiBub3QgcHJvdmlkZWQgcmV0dXJuIGZ1bGwgc3RhdGUpXHJcbiAgICAgKiBAcGFyYW0gY29tcGFyYXRvciBBIGZ1bmN0aW9uIHVzZWQgdG8gY29tcGFyZSB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgc3RhdGUgZm9yIGVxdWFsaXR5LiBEZWZhdWx0cyB0byBhIGA9PT1gIGNoZWNrLlxyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgc2VsZWN0ZWQgc3RhdGVcclxuICAgICAqL1xyXG4gICAgc2VsZWN0U3RhdGU8Sz4oc2VsZWN0Rm4/OiAoc3RhdGU6IFJlYWRvbmx5PFM+KSA9PiBLLCBjb21wYXJhdG9yPzogKHByZXZpb3VzOiBLLCBjdXJyZW50OiBLKSA9PiBib29sZWFuKTogT2JzZXJ2YWJsZTxLPiB7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RGbikge1xyXG4gICAgICAgICAgICBzZWxlY3RGbiA9ICh0bXBTdGF0ZTogUmVhZG9ubHk8Uz4pID0+IE9iamVjdC5hc3NpZ24odGhpcy5pc0FycmF5ID8gW10gOiB7fSwgdG1wU3RhdGUpIGFzIEs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29tcGFyYXRvciAmJiB0aGlzLmNvbXBhcmF0b3IpIHtcclxuICAgICAgICAgICAgY29tcGFyYXRvciA9IHRoaXMuY29tcGFyYXRvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChzdGF0ZSA9PiAoc2VsZWN0Rm4gYXMgKHN0YXRlOiBSZWFkb25seTxTPikgPT4gSykoc3RhdGUgYXMgUmVhZG9ubHk8Uz4pKSxcclxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoY29tcGFyYXRvciksXHJcbiAgICAgICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlcilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHN0b3JlIHN0YXRlIChzbmFwc2hvdClcclxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldEN1cnJlbnRTdGF0ZSgpOiBSZWFkb25seTxTPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVlcEZyZWV6ZSh0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybiB0aGUgZmlyc3QgbG9hZGVkIHN0b3JlIHN0YXRlOlxyXG4gICAgICogdGhlIGxhc3Qgc2F2ZWQgc3RhdGUsIGlmIGBlbmFibGVMb2NhbFN0b3JhZ2VgIGNvbmZpZyBpcyBgdHJ1ZWA7XHJcbiAgICAgKiBvdGhlcndpc2UgdGhlIGluaXRpYWwgc3RhdGUgcHJvdmlkZWQgZnJvbSBgaW5pdGlhbFN0YXRlKClgIG1ldGhvZC5cclxuICAgICAqIEByZXR1cm5zIFRoZSBmaXJzdCBzdGF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRGaXJzdFN0YXRlKCk6IFJlYWRvbmx5PFM+IHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVlcEZyZWV6ZSh0aGlzLmZpcnN0U3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGEgbmV3IHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0Rm4gU3RhdGUgcmVkdWNlclxyXG4gICAgICogQHBhcmFtIGFjdGlvbk5hbWUgVGhlIGFjdGlvbiBsYWJlbCBpbnRvIFJlZHV4IERldlRvb2xzIChkZWZhdWx0IGlzIHBhcmVudCBmdW5jdGlvbiBuYW1lKVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RhdGUgaXMgY2hhbmdlZFxyXG4gICAgICovXHJcbiAgICBzZXRTdGF0ZShzdGF0ZUZuOiAoY3VycmVudFN0YXRlOiBSZWFkb25seTxTPikgPT4gUGFydGlhbDxTPiwgYWN0aW9uTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJTdGF0ZSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlKCk7XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBzdGF0ZUZuKGN1cnJTdGF0ZSk7XHJcbiAgICAgICAgaWYgKGN1cnJTdGF0ZSA9PT0gbmV3U3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhdGU6IFM7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBcnJheSkge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oW10gYXMgUywgbmV3U3RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY3VyclN0YXRlLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuZGV2VG9vbFNlbmQoc3RhdGUsIGFjdGlvbk5hbWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZUlzRW5hYmxlZCAmJiB0aGlzLnBlcnNpc3RlbnRTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVudFN0b3JhZ2Uuc2V0SXRlbTxTPih0aGlzLnN0b3JlTmFtZSwgc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgdG8gZGV2IHRvb2wgYSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBuZXdTdGF0ZSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBmw6xkZXYgdG9vbHMgYXJlIGVuYWJsZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sU2VuZChuZXdTdGF0ZTogUyB8IHVuZGVmaW5lZCwgYWN0aW9uTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5kZXZUb29sSXNFbmFibGVkIHx8ICF0aGlzLmRldlRvb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFjdGlvbk5hbWUpIHtcclxuICAgICAgICAgICAgLy8gcmV0cml2ZSB0aGUgcGFyZW50IChvZiBwYXJlbnQpIG1ldGhvZCBpbnRvIHRoZSBzdGFjayB0cmFjZVxyXG4gICAgICAgICAgICBhY3Rpb25OYW1lID0gbmV3IEVycm9yKCkuc3RhY2tcclxuICAgICAgICAgICAgICAgID8uc3BsaXQoJ1xcbicpWzNdXHJcbiAgICAgICAgICAgICAgICAudHJpbSgpXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKVsxXVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcuJylbMV0gfHwgJ3Vua25vd24nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuZGV2VG9vbC5zZW5kKHRoaXMuc3RvcmVOYW1lLCBhY3Rpb25OYW1lLCBuZXdTdGF0ZSkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5zdG9yZU5hbWUgKyAnLicgKyBhY3Rpb25OYW1lLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjdXJzaXZlbHkgT2JqZWN0LmZyZWV6ZSBzaW1wbGUgSmF2YXNjcmlwdCBzdHJ1Y3R1cmVzIGNvbnNpc3Rpbmcgb2YgcGxhaW4gb2JqZWN0cywgYXJyYXlzLCBhbmQgcHJpbWl0aXZlcy5cclxuICAgICAqIE1ha2UgdGhlIGRhdGEgaW1tdXRhYmxlLlxyXG4gICAgICogQHJldHVybnMgaW1tdXRhYmxlIG9iamVjdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRlZXBGcmVlemUob2JqZWN0OiBTKTogUmVhZG9ubHk8Uz4ge1xyXG4gICAgICAgIC8vIE5vIGZyZWV6aW5nIGluIHByb2R1Y3Rpb24gKGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UpLlxyXG4gICAgICAgIGlmICghdGhpcy5kZXZNb2RlIHx8ICFvYmplY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCBhcyBSZWFkb25seTxTPjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFdoZW4gYWxyZWFkeSBmcm96ZW4sIHdlIGFzc3VtZSBpdHMgY2hpbGRyZW4gYXJlIGZyb3plbiAoZm9yIGJldHRlciBwZXJmb3JtYW5jZSkuXHJcbiAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgdHJ1ZSBpZiB5b3UgYWx3YXlzIHVzZSBgZGVlcEZyZWV6ZWAgdG8gZnJlZXplIG9iamVjdHMuXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBOb3RlIHRoYXQgT2JqZWN0LmlzRnJvemVuIHdpbGwgYWxzbyByZXR1cm4gYHRydWVgIGZvciBwcmltaXRpdmVzIChudW1iZXJzLFxyXG4gICAgICAgIC8vIHN0cmluZ3MsIGJvb2xlYW5zLCB1bmRlZmluZWQsIG51bGwpLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGZvclxyXG4gICAgICAgIC8vIHRob3NlIGV4cGxpY2l0bHkuXHJcbiAgICAgICAgaWYgKE9iamVjdC5pc0Zyb3plbihvYmplY3QpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmplY3QgYXMgUmVhZG9ubHk8Uz47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggZWl0aGVyIGFuIGFycmF5IG9yIHBsYWluIG9iamVjdCwgc29cclxuICAgICAgICAvLyBqdXN0IGZyZWV6ZSBpdCBhbmQgcmVjdXJzZSBvbiBpdHMgdmFsdWVzLlxyXG4gICAgICAgIE9iamVjdC5mcmVlemUob2JqZWN0KTtcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goa2V5ID0+IHRoaXMuZGVlcEZyZWV6ZSgob2JqZWN0IGFzIGFueSlba2V5XSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2JqZWN0IGFzIFJlYWRvbmx5PFM+O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,71 @@
1
+ export const BASE_KEY = 'NgSimpleState::';
2
+ export class NgSimpleStateBrowserStorage {
3
+ constructor(storage) {
4
+ this.storage = storage;
5
+ this.isStorageActive = false;
6
+ this.isStorageActive = !!storage;
7
+ }
8
+ /**
9
+ * Return true if storage is active
10
+ * @returns True if storage is active
11
+ */
12
+ isActive() {
13
+ return this.isStorageActive;
14
+ }
15
+ /**
16
+ * Set item into storage
17
+ * @param key key name
18
+ * @param state state valie
19
+ * @returns True if item is stored into storage
20
+ */
21
+ setItem(key, state) {
22
+ if (this.isStorageActive) {
23
+ this.storage.setItem(BASE_KEY + key, JSON.stringify(state));
24
+ return true;
25
+ }
26
+ return false;
27
+ }
28
+ /**
29
+ * Return item from storage
30
+ * @param key key name
31
+ * @returns the item
32
+ */
33
+ getItem(key) {
34
+ if (this.isStorageActive) {
35
+ const state = this.storage.getItem(BASE_KEY + key);
36
+ if (state) {
37
+ return JSON.parse(state);
38
+ }
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Remove item from storage
44
+ * @param key key name
45
+ * @returns True if item is removed
46
+ */
47
+ removeItem(key) {
48
+ if (this.isStorageActive) {
49
+ this.storage.removeItem(BASE_KEY + key);
50
+ return true;
51
+ }
52
+ return false;
53
+ }
54
+ /**
55
+ * Removes all key/value pairs, if there are any.
56
+ * @returns True if storage is cleared
57
+ */
58
+ clear() {
59
+ if (this.isStorageActive) {
60
+ for (let i = 0, e = this.storage.length; i < e; i++) {
61
+ const key = this.storage.key(i);
62
+ if (key && key.startsWith(BASE_KEY)) {
63
+ this.storage.removeItem(key);
64
+ }
65
+ }
66
+ return true;
67
+ }
68
+ return false;
69
+ }
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJyb3dzZXItc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1icm93c2VyLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDO0FBRTFDLE1BQU0sT0FBZ0IsMkJBQTJCO0lBSTdDLFlBQW9CLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGNUIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUM1QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFJLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNuRCxJQUFJLEtBQUssRUFBRTtnQkFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDaEM7YUFDSjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQkFTRV9LRVkgPSAnTmdTaW1wbGVTdGF0ZTo6JztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ1NpbXBsZVN0YXRlQnJvd3NlclN0b3JhZ2Uge1xyXG5cclxuICAgIHByaXZhdGUgaXNTdG9yYWdlQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlKSB7XHJcbiAgICAgICAgdGhpcy5pc1N0b3JhZ2VBY3RpdmUgPSAhIXN0b3JhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBzdG9yYWdlIGlzIGFjdGl2ZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBzdG9yYWdlIGlzIGFjdGl2ZVxyXG4gICAgICovXHJcbiAgICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1N0b3JhZ2VBY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgaXRlbSBpbnRvIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkga2V5IG5hbWVcclxuICAgICAqIEBwYXJhbSBzdGF0ZSBzdGF0ZSB2YWxpZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHN0b3JlZCBpbnRvIHN0b3JhZ2VcclxuICAgICAqL1xyXG4gICAgc2V0SXRlbTxLPihrZXk6IHN0cmluZywgc3RhdGU6IEspOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc1N0b3JhZ2VBY3RpdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oQkFTRV9LRVkgKyBrZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gaXRlbSBmcm9tIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkga2V5IG5hbWVcclxuICAgICAqIEByZXR1cm5zIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIGdldEl0ZW08Sz4oa2V5OiBzdHJpbmcpOiBLIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9yYWdlQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oQkFTRV9LRVkgKyBrZXkpO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBpdGVtIGZyb20gc3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBrZXkgbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHJlbW92ZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU3RvcmFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShCQVNFX0tFWSArIGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXkvdmFsdWUgcGFpcnMsIGlmIHRoZXJlIGFyZSBhbnkuXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHN0b3JhZ2UgaXMgY2xlYXJlZFxyXG4gICAgICovXHJcbiAgICBjbGVhcigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc1N0b3JhZ2VBY3RpdmUpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGUgPSB0aGlzLnN0b3JhZ2UubGVuZ3RoOyBpIDwgZTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2Uua2V5KGkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSAmJiBrZXkuc3RhcnRzV2l0aChCQVNFX0tFWSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,55 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ class NgSimpleStateDevTool {
4
+ constructor(ngZone) {
5
+ this.globalDevtools = window.__REDUX_DEVTOOLS_EXTENSION__ || window.devToolsExtension;
6
+ this.isActiveDevtool = false;
7
+ this.instanceId = `ng-simple-state-${Date.now()}`;
8
+ this.baseState = {};
9
+ if (this.globalDevtools) {
10
+ // The `connect` method adds `message` event listener since it communicates
11
+ // with an extension through `window.postMessage` and message events.
12
+ // We handle only 2 events; thus, we don't want to run many change detections
13
+ // because the extension sends events that we don't have to handle.
14
+ ngZone.runOutsideAngular(() => {
15
+ this.localDevTool = this.globalDevtools.connect({
16
+ name: 'NgSimpleState',
17
+ instanceId: this.instanceId
18
+ });
19
+ this.isActiveDevtool = !!this.localDevTool;
20
+ if (this.isActiveDevtool) {
21
+ this.localDevTool.init(this.baseState);
22
+ }
23
+ });
24
+ }
25
+ }
26
+ /**
27
+ * Return true if dev tool is actvice
28
+ * @returns True if dev tool is actvice
29
+ */
30
+ isActive() {
31
+ return this.isActiveDevtool;
32
+ }
33
+ /**
34
+ * Send to dev tool a new state
35
+ * @param storeName The store name
36
+ * @param actionName The action name
37
+ * @param state the state
38
+ * @returns True if dev tool is enabled and action is send
39
+ */
40
+ send(storeName, actionName, state) {
41
+ if (this.isActiveDevtool && this.localDevTool) {
42
+ this.localDevTool.send(`${storeName}.${actionName}`, Object.assign(this.baseState, { [storeName]: state }), false, this.instanceId);
43
+ return true;
44
+ }
45
+ return false;
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateDevTool, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateDevTool, providedIn: 'root' }); }
49
+ }
50
+ export { NgSimpleStateDevTool };
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateDevTool, decorators: [{
52
+ type: Injectable,
53
+ args: [{ providedIn: 'root' }]
54
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWRldi10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctc2ltcGxlLXN0YXRlL3NyYy9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBbUJuRCxNQUNhLG9CQUFvQjtJQVE3QixZQUFZLE1BQWM7UUFObEIsbUJBQWMsR0FBYSxNQUFNLENBQUMsNEJBQTRCLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBRTNGLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDN0MsY0FBUyxHQUEyQixFQUFFLENBQUM7UUFHM0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLDJFQUEyRTtZQUMzRSxxRUFBcUU7WUFDckUsNkVBQTZFO1lBQzdFLG1FQUFtRTtZQUNuRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO29CQUM1QyxJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUM5QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQzFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUksU0FBaUIsRUFBRSxVQUFrQixFQUFFLEtBQVE7UUFDbkQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUksR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkksT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBaERRLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7U0FDbkIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuXHJcbmludGVyZmFjZSBEZXZ0b29sc0xvY2FsIHtcclxuICAgIGluaXQ6IChzdGF0ZTogb2JqZWN0KSA9PiB2b2lkO1xyXG4gICAgc2VuZDogPFQ+KGFjdGlvbjogc3RyaW5nLCBzdGF0ZTogUmVjb3JkPHN0cmluZywgVD4sIG9wdGlvbnM6IGFueSwgaW5zdGFuY2VJZDogc3RyaW5nKSA9PiB2b2lkO1xyXG59XHJcbmludGVyZmFjZSBEZXZ0b29scyB7XHJcbiAgICBjb25uZWN0KG9wdGlvbnM6IHsgbmFtZTogc3RyaW5nLCBpbnN0YW5jZUlkOiBzdHJpbmcgfSk6IERldnRvb2xzTG9jYWw7XHJcbn1cclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICAgIGludGVyZmFjZSBXaW5kb3cge1xyXG4gICAgICAgIF9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX186IERldnRvb2xzO1xyXG4gICAgICAgIGRldlRvb2xzRXh0ZW5zaW9uOiBEZXZ0b29scztcclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5nU2ltcGxlU3RhdGVEZXZUb29sIHtcclxuXHJcbiAgICBwcml2YXRlIGdsb2JhbERldnRvb2xzOiBEZXZ0b29scyA9IHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fIHx8IHdpbmRvdy5kZXZUb29sc0V4dGVuc2lvbjtcclxuICAgIHByaXZhdGUgbG9jYWxEZXZUb29sITogRGV2dG9vbHNMb2NhbDtcclxuICAgIHByaXZhdGUgaXNBY3RpdmVEZXZ0b29sID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGluc3RhbmNlSWQgPSBgbmctc2ltcGxlLXN0YXRlLSR7RGF0ZS5ub3coKX1gO1xyXG4gICAgcHJpdmF0ZSBiYXNlU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4gPSB7fTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihuZ1pvbmU6IE5nWm9uZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbERldnRvb2xzKSB7XHJcbiAgICAgICAgICAgIC8vIFRoZSBgY29ubmVjdGAgbWV0aG9kIGFkZHMgYG1lc3NhZ2VgIGV2ZW50IGxpc3RlbmVyIHNpbmNlIGl0IGNvbW11bmljYXRlc1xyXG4gICAgICAgICAgICAvLyB3aXRoIGFuIGV4dGVuc2lvbiB0aHJvdWdoIGB3aW5kb3cucG9zdE1lc3NhZ2VgIGFuZCBtZXNzYWdlIGV2ZW50cy5cclxuICAgICAgICAgICAgLy8gV2UgaGFuZGxlIG9ubHkgMiBldmVudHM7IHRodXMsIHdlIGRvbid0IHdhbnQgdG8gcnVuIG1hbnkgY2hhbmdlIGRldGVjdGlvbnNcclxuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIHNlbmRzIGV2ZW50cyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlLlxyXG4gICAgICAgICAgICBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbERldlRvb2wgPSB0aGlzLmdsb2JhbERldnRvb2xzLmNvbm5lY3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdOZ1NpbXBsZVN0YXRlJyxcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUlkOiB0aGlzLmluc3RhbmNlSWRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZURldnRvb2wgPSAhIXRoaXMubG9jYWxEZXZUb29sO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmVEZXZ0b29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbERldlRvb2wuaW5pdCh0aGlzLmJhc2VTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybiB0cnVlIGlmIGRldiB0b29sIGlzIGFjdHZpY2VcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZGV2IHRvb2wgaXMgYWN0dmljZVxyXG4gICAgICovXHJcbiAgICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGl2ZURldnRvb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kIHRvIGRldiB0b29sIGEgbmV3IHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gc3RvcmVOYW1lIFRoZSBzdG9yZSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uTmFtZSBUaGUgYWN0aW9uIG5hbWVcclxuICAgICAqIEBwYXJhbSBzdGF0ZSB0aGUgc3RhdGVcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZGV2IHRvb2wgaXMgZW5hYmxlZCBhbmQgYWN0aW9uIGlzIHNlbmRcclxuICAgICAqL1xyXG4gICAgc2VuZDxUPihzdG9yZU5hbWU6IHN0cmluZywgYWN0aW9uTmFtZTogc3RyaW5nLCBzdGF0ZTogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlRGV2dG9vbCAmJiB0aGlzLmxvY2FsRGV2VG9vbCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsRGV2VG9vbC5zZW5kPFQ+KGAke3N0b3JlTmFtZX0uJHthY3Rpb25OYW1lfWAsIE9iamVjdC5hc3NpZ24odGhpcy5iYXNlU3RhdGUsIHsgW3N0b3JlTmFtZV06IHN0YXRlIH0pLCBmYWxzZSwgdGhpcy5pbnN0YW5jZUlkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';
3
+ import * as i0 from "@angular/core";
4
+ class NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
5
+ constructor() {
6
+ super(localStorage);
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateLocalStorage, providedIn: 'root' }); }
10
+ }
11
+ export { NgSimpleStateLocalStorage };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateLocalStorage, decorators: [{
13
+ type: Injectable,
14
+ args: [{ providedIn: 'root' }]
15
+ }], ctorParameters: function () { return []; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUVoRixNQUNhLHlCQUEwQixTQUFRLDJCQUEyQjtJQUN0RTtRQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQUhRLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRFosTUFBTTs7U0FDbkIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NpbXBsZVN0YXRlQnJvd3NlclN0b3JhZ2UgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1icm93c2VyLXN0b3JhZ2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5nU2ltcGxlU3RhdGVMb2NhbFN0b3JhZ2UgZXh0ZW5kcyBOZ1NpbXBsZVN0YXRlQnJvd3NlclN0b3JhZ2Uge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIobG9jYWxTdG9yYWdlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * NgSimpleState config InjectionToken
4
+ */
5
+ export const NG_SIMPLE_STORE_CONFIG = new InjectionToken('ng-simple-state.config');
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWtDL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDcEQsd0JBQXdCLENBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIE5nU2ltcGxlU3RhdGUgY29uZmlnIG9wdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ1NpbXBsZVN0YXRlQ29uZmlnIHtcclxuICAgIC8qKlxyXG4gICAgICogaWYgYHRydWVgIGVuYWJsZSBgUmVkdXggRGV2VG9vbHNgIGJyb3dzZXIgZXh0ZW5zaW9uIGZvciBpbnNwZWN0IHRoZSBzdGF0ZSBvZiB0aGUgc3RvcmUuXHJcbiAgICAgKi9cclxuICAgIGVuYWJsZURldlRvb2w/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBpZiBgdHJ1ZWAgbGF0ZXN0IHN0YXRlIG9mIHN0b3JlIGlzIHNhdmVkIGluIGxvY2FsIHN0b3JhZ2UgYW5kIHJlbG9hZGVkIG9uIHN0b3JlIGluaXRpYWxpemF0aW9uLlxyXG4gICAgICovXHJcbiAgICBlbmFibGVMb2NhbFN0b3JhZ2U/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgdGhlIHBlcnNpc3RlbnQgc3RvcmFnZSBgbG9jYWxgIG9yIGBzZXNzaW9uYC5cclxuICAgICAqL1xyXG4gICAgcGVyc2lzdGVudFN0b3JhZ2U/OiAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgLyoqXHJcbiAgICAgKiBBIGZ1bmN0aW9uIHVzZWQgdG8gY29tcGFyZSB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgc3RhdGUgZm9yIGVxdWFsaXR5LiBcclxuICAgICAqL1xyXG4gICAgY29tcGFyYXRvcj86IDxLPihwcmV2aW91czogSywgY3VycmVudDogSykgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5nU2ltcGxlU3RhdGUgY29uZmlnIG9wdGlvbiBmb3Igc3RvcmVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUNvbmZpZyB7XHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGUgc3RvcmUgbmFtZSBcclxuICAgICAqL1xyXG4gICAgc3RvcmVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBOZ1NpbXBsZVN0YXRlIGNvbmZpZyBJbmplY3Rpb25Ub2tlblxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IE5HX1NJTVBMRV9TVE9SRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdTaW1wbGVTdGF0ZUNvbmZpZz4oXHJcbiAgICAnbmctc2ltcGxlLXN0YXRlLmNvbmZpZydcclxuKTtcclxuIl19
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NgSimpleStateBrowserStorage } from './ng-simple-state-browser-storage';
3
+ import * as i0 from "@angular/core";
4
+ class NgSimpleStateSessionStorage extends NgSimpleStateBrowserStorage {
5
+ constructor() {
6
+ super(sessionStorage);
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateSessionStorage, providedIn: 'root' }); }
10
+ }
11
+ export { NgSimpleStateSessionStorage };
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateSessionStorage, decorators: [{
13
+ type: Injectable,
14
+ args: [{ providedIn: 'root' }]
15
+ }], ctorParameters: function () { return []; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLXNlc3Npb24tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1zZXNzaW9uLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFFaEYsTUFDYSwyQkFBNEIsU0FBUSwyQkFBMkI7SUFDeEU7UUFDSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUIsQ0FBQzs4R0FIUSwyQkFBMkI7a0hBQTNCLDJCQUEyQixjQURkLE1BQU07O1NBQ25CLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtYnJvd3Nlci1zdG9yYWdlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NpbXBsZVN0YXRlU2Vzc2lvblN0b3JhZ2UgZXh0ZW5kcyBOZ1NpbXBsZVN0YXRlQnJvd3NlclN0b3JhZ2Uge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoc2Vzc2lvblN0b3JhZ2UpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { NG_SIMPLE_STORE_CONFIG } from './ng-simple-state-models';
3
+ import * as i0 from "@angular/core";
4
+ class NgSimpleStateModule {
5
+ static forRoot(ngSimpleStateConfig) {
6
+ return {
7
+ ngModule: NgSimpleStateModule,
8
+ providers: [
9
+ {
10
+ provide: NG_SIMPLE_STORE_CONFIG,
11
+ useValue: ngSimpleStateConfig,
12
+ },
13
+ ],
14
+ };
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateModule }); }
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateModule }); }
19
+ }
20
+ export { NgSimpleStateModule };
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgSimpleStateModule, decorators: [{
22
+ type: NgModule
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUF1QixzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUV2RixNQUNhLG1CQUFtQjtJQUM1QixNQUFNLENBQUMsT0FBTyxDQUNWLG1CQUF5QztRQUV6QyxPQUFPO1lBQ0gsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLHNCQUFzQjtvQkFDL0IsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOzhHQWJRLG1CQUFtQjsrR0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUI7O1NBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUNvbmZpZywgTkdfU0lNUExFX1NUT1JFX0NPTkZJRyB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLW1vZGVscyc7XHJcblxyXG5ATmdNb2R1bGUoKVxyXG5leHBvcnQgY2xhc3MgTmdTaW1wbGVTdGF0ZU1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdChcclxuICAgICAgICBuZ1NpbXBsZVN0YXRlQ29uZmlnPzogTmdTaW1wbGVTdGF0ZUNvbmZpZ1xyXG4gICAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ1NpbXBsZVN0YXRlTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IE5nU2ltcGxlU3RhdGVNb2R1bGUsXHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5HX1NJTVBMRV9TVE9SRV9DT05GSUcsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IG5nU2ltcGxlU3RhdGVDb25maWcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmctc2ltcGxlLXN0YXRlL3NyYy9uZy1zaW1wbGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,10 +1,10 @@
1
- /*
2
- * Public API Surface of ng-simple-state
3
- */
4
- export * from './lib/ng-simple-state.module';
5
- export * from './lib/ng-simple-state-base-store';
6
- export * from './lib/ng-simple-state-dev-tool';
7
- export * from './lib/ng-simple-state-local-storage';
8
- export * from './lib/ng-simple-state-session-storage';
9
- export * from './lib/ng-simple-state-models';
1
+ /*
2
+ * Public API Surface of ng-simple-state
3
+ */
4
+ export * from './lib/ng-simple-state.module';
5
+ export * from './lib/ng-simple-state-base-store';
6
+ export * from './lib/ng-simple-state-dev-tool';
7
+ export * from './lib/ng-simple-state-local-storage';
8
+ export * from './lib/ng-simple-state-session-storage';
9
+ export * from './lib/ng-simple-state-models';
10
10
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nLXNpbXBsZS1zdGF0ZVxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXNpbXBsZS1zdGF0ZS1iYXNlLXN0b3JlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1zaW1wbGUtc3RhdGUtc2Vzc2lvbi1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctc2ltcGxlLXN0YXRlLW1vZGVscyc7XHJcbiJdfQ==