ng-simple-state 15.1.4 → 17.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.
- package/esm2022/lib/ng-simple-state-base-store.mjs +192 -0
- package/{esm2020 → esm2022}/lib/ng-simple-state-browser-storage.mjs +71 -71
- package/esm2022/lib/ng-simple-state-dev-tool.mjs +54 -0
- package/{esm2020 → esm2022}/lib/ng-simple-state-local-storage.mjs +15 -15
- package/esm2022/lib/ng-simple-state-models.mjs +6 -0
- package/{esm2020 → esm2022}/lib/ng-simple-state-session-storage.mjs +15 -15
- package/{esm2020 → esm2022}/lib/ng-simple-state.module.mjs +23 -23
- package/{esm2020 → esm2022}/ng-simple-state.mjs +4 -4
- package/{esm2020 → esm2022}/public-api.mjs +9 -9
- package/{fesm2020 → fesm2022}/ng-simple-state.mjs +350 -348
- package/fesm2022/ng-simple-state.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/ng-simple-state-base-store.d.ts +90 -90
- package/lib/ng-simple-state-browser-storage.d.ts +35 -35
- package/lib/ng-simple-state-dev-tool.d.ts +42 -42
- package/lib/ng-simple-state-local-storage.d.ts +7 -7
- package/lib/ng-simple-state-models.d.ts +35 -20
- package/lib/ng-simple-state-session-storage.d.ts +7 -7
- package/lib/ng-simple-state.module.d.ts +9 -9
- package/package.json +7 -13
- package/public-api.d.ts +6 -6
- package/esm2020/lib/ng-simple-state-base-store.mjs +0 -190
- package/esm2020/lib/ng-simple-state-dev-tool.mjs +0 -54
- package/esm2020/lib/ng-simple-state-models.mjs +0 -6
- package/fesm2015/ng-simple-state.mjs +0 -368
- package/fesm2015/ng-simple-state.mjs.map +0 -1
- package/fesm2020/ng-simple-state.mjs.map +0 -1
|
@@ -0,0 +1,192 @@
|
|
|
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
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
export class NgSimpleStateBaseStore {
|
|
11
|
+
/**
|
|
12
|
+
* Return the observable of the state
|
|
13
|
+
* @returns Observable of the state
|
|
14
|
+
*/
|
|
15
|
+
get state() {
|
|
16
|
+
return this.state$;
|
|
17
|
+
}
|
|
18
|
+
constructor(injector) {
|
|
19
|
+
this.devMode = isDevMode();
|
|
20
|
+
const globalConfig = injector.get(NG_SIMPLE_STORE_CONFIG, {});
|
|
21
|
+
const storeConfig = this.storeConfig() || {};
|
|
22
|
+
this.localStoreConfig = { ...globalConfig, ...storeConfig };
|
|
23
|
+
this.localStorageIsEnabled = typeof this.localStoreConfig.enableLocalStorage === 'boolean' ? this.localStoreConfig.enableLocalStorage : false;
|
|
24
|
+
if (this.localStorageIsEnabled) {
|
|
25
|
+
if (this.localStoreConfig.persistentStorage === 'local') {
|
|
26
|
+
this.persistentStorage = injector.get(NgSimpleStateLocalStorage);
|
|
27
|
+
}
|
|
28
|
+
else if (this.localStoreConfig.persistentStorage === 'session') {
|
|
29
|
+
this.persistentStorage = injector.get(NgSimpleStateSessionStorage);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
this.devToolIsEnabled = typeof this.localStoreConfig.enableDevTool === 'boolean' ? this.localStoreConfig.enableDevTool : false;
|
|
33
|
+
if (this.devToolIsEnabled) {
|
|
34
|
+
this.devTool = injector.get(NgSimpleStateDevTool);
|
|
35
|
+
}
|
|
36
|
+
this.storeName = typeof this.localStoreConfig.storeName === 'string' ? this.localStoreConfig.storeName : this.constructor.name;
|
|
37
|
+
if (typeof this.localStoreConfig.comparator === 'function') {
|
|
38
|
+
this.comparator = this.localStoreConfig.comparator;
|
|
39
|
+
}
|
|
40
|
+
if (this.localStorageIsEnabled && this.persistentStorage) {
|
|
41
|
+
const firstState = this.persistentStorage.getItem(this.storeName);
|
|
42
|
+
if (firstState) {
|
|
43
|
+
this.firstState = firstState;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!this.firstState) {
|
|
47
|
+
this.firstState = this.initialState(injector);
|
|
48
|
+
}
|
|
49
|
+
this.devToolSend(this.firstState, `initialState`);
|
|
50
|
+
this.isArray = Array.isArray(this.firstState);
|
|
51
|
+
this.state$ = new BehaviorSubject(Object.assign(this.isArray ? [] : {}, this.firstState));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* When you override this method, you have to call the `super.ngOnDestroy()` method in your `ngOnDestroy()` method.
|
|
55
|
+
*/
|
|
56
|
+
ngOnDestroy() {
|
|
57
|
+
this.devToolSend(undefined, 'ngOnDestroy');
|
|
58
|
+
this.state$.complete();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Reset store to first loaded store state:
|
|
62
|
+
* - the last saved state, if `enableLocalStorage` config is `true`
|
|
63
|
+
* - otherwise the initial state provided from `initialState()` method.
|
|
64
|
+
*/
|
|
65
|
+
resetState() {
|
|
66
|
+
return this.setState(() => this.firstState, 'resetState');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Restart the store to initial state provided from `initialState()` method
|
|
70
|
+
*/
|
|
71
|
+
restartState() {
|
|
72
|
+
return this.setState(() => this.initialState(), 'restartState');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Select a store state
|
|
76
|
+
* @param selectFn State selector (if not provided return full state)
|
|
77
|
+
* @param comparator A function used to compare the previous and current state for equality. Defaults to a `===` check.
|
|
78
|
+
* @returns Observable of the selected state
|
|
79
|
+
*/
|
|
80
|
+
selectState(selectFn, comparator) {
|
|
81
|
+
if (!selectFn) {
|
|
82
|
+
selectFn = (tmpState) => Object.assign(this.isArray ? [] : {}, tmpState);
|
|
83
|
+
}
|
|
84
|
+
if (!comparator && this.comparator) {
|
|
85
|
+
comparator = this.comparator;
|
|
86
|
+
}
|
|
87
|
+
return this.state$.pipe(map(state => selectFn(state)), distinctUntilChanged(comparator), observeOn(asyncScheduler));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Return the current store state (snapshot)
|
|
91
|
+
* @returns The current state
|
|
92
|
+
*/
|
|
93
|
+
getCurrentState() {
|
|
94
|
+
return this.deepFreeze(this.state$.getValue());
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Return the first loaded store state:
|
|
98
|
+
* the last saved state, if `enableLocalStorage` config is `true`;
|
|
99
|
+
* otherwise the initial state provided from `initialState()` method.
|
|
100
|
+
* @returns The first state
|
|
101
|
+
*/
|
|
102
|
+
getFirstState() {
|
|
103
|
+
return this.deepFreeze(this.firstState);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Set a new state
|
|
107
|
+
* @param selectFn State reducer
|
|
108
|
+
* @param actionName The action label into Redux DevTools (default is parent function name)
|
|
109
|
+
* @returns True if the state is changed
|
|
110
|
+
*/
|
|
111
|
+
setState(stateFn, actionName) {
|
|
112
|
+
const currState = this.getCurrentState();
|
|
113
|
+
const newState = stateFn(currState);
|
|
114
|
+
if (currState === newState) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
let state;
|
|
118
|
+
if (this.isArray) {
|
|
119
|
+
state = Object.assign([], newState);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
state = Object.assign({}, currState, newState);
|
|
123
|
+
}
|
|
124
|
+
this.state$.next(state);
|
|
125
|
+
this.devToolSend(state, actionName);
|
|
126
|
+
if (this.localStorageIsEnabled && this.persistentStorage) {
|
|
127
|
+
this.persistentStorage.setItem(this.storeName, state);
|
|
128
|
+
}
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Send to dev tool a new state
|
|
133
|
+
* @param newState new state
|
|
134
|
+
* @param actionName The action name
|
|
135
|
+
* @returns True if dev tools are enabled
|
|
136
|
+
*/
|
|
137
|
+
devToolSend(newState, actionName) {
|
|
138
|
+
if (!this.devToolIsEnabled || !this.devTool) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
if (!actionName) {
|
|
142
|
+
// retrieve the parent (of parent) method into the stack trace
|
|
143
|
+
actionName = new Error().stack
|
|
144
|
+
?.split('\n')[3]
|
|
145
|
+
.trim()
|
|
146
|
+
.split(' ')[1]
|
|
147
|
+
.split('.')[1] || 'unknown';
|
|
148
|
+
}
|
|
149
|
+
if (!this.devTool.send(this.storeName, actionName, newState)) {
|
|
150
|
+
console.log(this.storeName + '.' + actionName, newState);
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Recursively Object.freeze simple Javascript structures consisting of plain objects, arrays, and primitives.
|
|
156
|
+
* Make the data immutable.
|
|
157
|
+
* @returns immutable object
|
|
158
|
+
*/
|
|
159
|
+
deepFreeze(object) {
|
|
160
|
+
// No freezing in production (for better performance).
|
|
161
|
+
if (!this.devMode || !object) {
|
|
162
|
+
return object;
|
|
163
|
+
}
|
|
164
|
+
// When already frozen, we assume its children are frozen (for better performance).
|
|
165
|
+
// This should be true if you always use `deepFreeze` to freeze objects.
|
|
166
|
+
//
|
|
167
|
+
// Note that Object.isFrozen will also return `true` for primitives (numbers,
|
|
168
|
+
// strings, booleans, undefined, null), so there is no need to check for
|
|
169
|
+
// those explicitly.
|
|
170
|
+
if (Object.isFrozen(object)) {
|
|
171
|
+
return object;
|
|
172
|
+
}
|
|
173
|
+
// At this point we know that we're dealing with either an array or plain object, so
|
|
174
|
+
// just freeze it and recurse on its values.
|
|
175
|
+
Object.freeze(object);
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
177
|
+
Object.keys(object).forEach(key => this.deepFreeze(object[key]));
|
|
178
|
+
return object;
|
|
179
|
+
}
|
|
180
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateBaseStore, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
181
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: NgSimpleStateBaseStore, ngImport: i0 }); }
|
|
182
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateBaseStore }); }
|
|
183
|
+
}
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateBaseStore, decorators: [{
|
|
185
|
+
type: Injectable
|
|
186
|
+
}, {
|
|
187
|
+
type: Directive
|
|
188
|
+
}], ctorParameters: () => [{ type: i0.Injector, decorators: [{
|
|
189
|
+
type: Inject,
|
|
190
|
+
args: [Injector]
|
|
191
|
+
}] }] });
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJhc2Utc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtYmFzZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBNEIsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFJaEYsOERBQThEO0FBQzlELE1BQU0sT0FBZ0Isc0JBQXNCO0lBY3hDOzs7T0FHRztJQUNILElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBOEIsUUFBa0I7UUFYeEMsWUFBTyxHQUFZLFNBQVMsRUFBRSxDQUFDO1FBYW5DLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLFdBQVcsRUFBRSxD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ciwgT25EZXN0cm95LCBEaXJlY3RpdmUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG9ic2VydmVPbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtYnJvd3Nlci1zdG9yYWdlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZURldlRvb2wgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1kZXYtdG9vbCc7XHJcbmltcG9ydCB7IE5nU2ltcGxlU3RhdGVMb2NhbFN0b3JhZ2UgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnLCBOR19TSU1QTEVfU1RPUkVfQ09ORklHIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtbW9kZWxzJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtc2Vzc2lvbi1zdG9yYWdlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ1NpbXBsZVN0YXRlQmFzZVN0b3JlPFMgZXh0ZW5kcyBvYmplY3QgfCBBcnJheTxhbnk+PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxTPjtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sITogTmdTaW1wbGVTdGF0ZURldlRvb2w7XHJcbiAgICBwcml2YXRlIHBlcnNpc3RlbnRTdG9yYWdlITogTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlO1xyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JlQ29uZmlnOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWc7XHJcbiAgICBwcml2YXRlIHN0b3JlTmFtZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBmaXJzdFN0YXRlITogUztcclxuICAgIHByaXZhdGUgaXNBcnJheTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgZGV2TW9kZTogYm9vbGVhbiA9IGlzRGV2TW9kZSgpO1xyXG4gICAgcHJpdmF0ZSBjb21wYXJhdG9yITogPEs+KHByZXZpb3VzOiBLLCBjdXJyZW50OiBLKSA9PiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBvYnNlcnZhYmxlIG9mIHRoZSBzdGF0ZVxyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgc3RhdGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBCZWhhdmlvclN1YmplY3Q8Uz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlJDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEluamVjdG9yKSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHJcbiAgICAgICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gaW5qZWN0b3IuZ2V0KE5HX1NJTVBMRV9TVE9SRV9DT05GSUcsIHt9KTtcclxuICAgICAgICBjb25zdCBzdG9yZUNvbmZpZyA9IHRoaXMuc3RvcmVDb25maWcoKSB8fCB7fTtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmVDb25maWcgPSB7IC4uLmdsb2JhbENvbmZpZywgLi4uc3RvcmVDb25maWcgfTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZUxvY2FsU3RvcmFnZSA9PT0gJ2Jvb2xlYW4nID8gdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZUxvY2FsU3RvcmFnZSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubG9jYWxTdG9yZUNvbmZpZy5wZXJzaXN0ZW50U3RvcmFnZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlTG9jYWxTdG9yYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsU3RvcmVDb25maWcucGVyc2lzdGVudFN0b3JhZ2UgPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSA9IGluamVjdG9yLmdldChOZ1NpbXBsZVN0YXRlU2Vzc2lvblN0b3JhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRldlRvb2xJc0VuYWJsZWQgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmVuYWJsZURldlRvb2wgPT09ICdib29sZWFuJyA/IHRoaXMubG9jYWxTdG9yZUNvbmZpZy5lbmFibGVEZXZUb29sIDogZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZGV2VG9vbElzRW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRldlRvb2wgPSBpbmplY3Rvci5nZXQoTmdTaW1wbGVTdGF0ZURldlRvb2wpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zdG9yZU5hbWUgPSB0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLnN0b3JlTmFtZSA9PT0gJ3N0cmluZycgPyB0aGlzLmxvY2FsU3RvcmVDb25maWcuc3RvcmVOYW1lIDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmNvbXBhcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wYXJhdG9yID0gdGhpcy5sb2NhbFN0b3JlQ29uZmlnLmNvbXBhcmF0b3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQgJiYgdGhpcy5wZXJzaXN0ZW50U3RvcmFnZSkge1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdFN0YXRlID0gdGhpcy5wZXJzaXN0ZW50U3RvcmFnZS5nZXRJdGVtPFM+KHRoaXMuc3RvcmVOYW1lKTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0U3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RTdGF0ZSA9IGZpcnN0U3RhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0U3RhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5maXJzdFN0YXRlID0gdGhpcy5pbml0aWFsU3RhdGUoaW5qZWN0b3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kZXZUb29sU2VuZCh0aGlzLmZpcnN0U3RhdGUsIGBpbml0aWFsU3RhdGVgKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSh0aGlzLmZpcnN0U3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTPihPYmplY3QuYXNzaWduKHRoaXMuaXNBcnJheSA/IFtdIDoge30sIHRoaXMuZmlyc3RTdGF0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB5b3Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QsIHlvdSBoYXZlIHRvIGNhbGwgdGhlIGBzdXBlci5uZ09uRGVzdHJveSgpYCBtZXRob2QgaW4geW91ciBgbmdPbkRlc3Ryb3koKWAgbWV0aG9kLlxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRldlRvb2xTZW5kKHVuZGVmaW5lZCwgJ25nT25EZXN0cm95Jyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0IHN0b3JlIHRvIGZpcnN0IGxvYWRlZCBzdG9yZSBzdGF0ZTpcclxuICAgICAqICAtIHRoZSBsYXN0IHNhdmVkIHN0YXRlLCBpZiBgZW5hYmxlTG9jYWxTdG9yYWdlYCBjb25maWcgaXMgYHRydWVgXHJcbiAgICAgKiAgLSBvdGhlcndpc2UgdGhlIGluaXRpYWwgc3RhdGUgcHJvdmlkZWQgZnJvbSBgaW5pdGlhbFN0YXRlKClgIG1ldGhvZC5cclxuICAgICAqL1xyXG4gICAgcmVzZXRTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSgoKSA9PiB0aGlzLmZpcnN0U3RhdGUsICdyZXNldFN0YXRlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0YXJ0IHRoZSBzdG9yZSB0byBpbml0aWFsIHN0YXRlIHByb3ZpZGVkIGZyb20gYGluaXRpYWxTdGF0ZSgpYCBtZXRob2RcclxuICAgICAqL1xyXG4gICAgcmVzdGFydFN0YXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKCgpID0+IHRoaXMuaW5pdGlhbFN0YXRlKCksICdyZXN0YXJ0U3RhdGUnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGZvciBzZXQgYSBzcGVjaWZpYyBjb25maWcgZm9yIHRoZSBzdG9yZVxyXG4gICAgICogQHJldHVybnMgTmdTaW1wbGVTdGF0ZVN0b3JlQ29uZmlnXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzdG9yZUNvbmZpZygpOiBOZ1NpbXBsZVN0YXRlU3RvcmVDb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgaW50byB0aGUgc3RvcmUgdGhlIGluaXRpYWwgc3RhdGVcclxuICAgICAqIEBwYXJhbSBpbmplY3RvciBjdXJyZW50IEluamVjdG9yXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgc3RhdGUgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0aWFsU3RhdGUoaW5qZWN0b3I/OiBJbmplY3Rvcik6IFM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWxlY3QgYSBzdG9yZSBzdGF0ZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdEZuIFN0YXRlIHNlbGVjdG9yIChpZiBub3QgcHJvdmlkZWQgcmV0dXJuIGZ1bGwgc3RhdGUpXHJcbiAgICAgKiBAcGFyYW0gY29tcGFyYXRvciBBIGZ1bmN0aW9uIHVzZWQgdG8gY29tcGFyZSB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgc3RhdGUgZm9yIGVxdWFsaXR5LiBEZWZhdWx0cyB0byBhIGA9PT1gIGNoZWNrLlxyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgc2VsZWN0ZWQgc3RhdGVcclxuICAgICAqL1xyXG4gICAgc2VsZWN0U3RhdGU8Sz4oc2VsZWN0Rm4/OiAoc3RhdGU6IFJlYWRvbmx5PFM+KSA9PiBLLCBjb21wYXJhdG9yPzogKHByZXZpb3VzOiBLLCBjdXJyZW50OiBLKSA9PiBib29sZWFuKTogT2JzZXJ2YWJsZTxLPiB7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RGbikge1xyXG4gICAgICAgICAgICBzZWxlY3RGbiA9ICh0bXBTdGF0ZTogUmVhZG9ubHk8Uz4pID0+IE9iamVjdC5hc3NpZ24odGhpcy5pc0FycmF5ID8gW10gOiB7fSwgdG1wU3RhdGUpIGFzIEs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29tcGFyYXRvciAmJiB0aGlzLmNvbXBhcmF0b3IpIHtcclxuICAgICAgICAgICAgY29tcGFyYXRvciA9IHRoaXMuY29tcGFyYXRvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChzdGF0ZSA9PiAoc2VsZWN0Rm4gYXMgKHN0YXRlOiBSZWFkb25seTxTPikgPT4gSykoc3RhdGUgYXMgUmVhZG9ubHk8Uz4pKSxcclxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoY29tcGFyYXRvciksXHJcbiAgICAgICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlcilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHN0b3JlIHN0YXRlIChzbmFwc2hvdClcclxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldEN1cnJlbnRTdGF0ZSgpOiBSZWFkb25seTxTPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVlcEZyZWV6ZSh0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybiB0aGUgZmlyc3QgbG9hZGVkIHN0b3JlIHN0YXRlOlxyXG4gICAgICogdGhlIGxhc3Qgc2F2ZWQgc3RhdGUsIGlmIGBlbmFibGVMb2NhbFN0b3JhZ2VgIGNvbmZpZyBpcyBgdHJ1ZWA7XHJcbiAgICAgKiBvdGhlcndpc2UgdGhlIGluaXRpYWwgc3RhdGUgcHJvdmlkZWQgZnJvbSBgaW5pdGlhbFN0YXRlKClgIG1ldGhvZC5cclxuICAgICAqIEByZXR1cm5zIFRoZSBmaXJzdCBzdGF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRGaXJzdFN0YXRlKCk6IFJlYWRvbmx5PFM+IHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVlcEZyZWV6ZSh0aGlzLmZpcnN0U3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGEgbmV3IHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0Rm4gU3RhdGUgcmVkdWNlclxyXG4gICAgICogQHBhcmFtIGFjdGlvbk5hbWUgVGhlIGFjdGlvbiBsYWJlbCBpbnRvIFJlZHV4IERldlRvb2xzIChkZWZhdWx0IGlzIHBhcmVudCBmdW5jdGlvbiBuYW1lKVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RhdGUgaXMgY2hhbmdlZFxyXG4gICAgICovXHJcbiAgICBzZXRTdGF0ZShzdGF0ZUZuOiAoY3VycmVudFN0YXRlOiBSZWFkb25seTxTPikgPT4gUGFydGlhbDxTPiwgYWN0aW9uTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJTdGF0ZSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlKCk7XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBzdGF0ZUZuKGN1cnJTdGF0ZSk7XHJcbiAgICAgICAgaWYgKGN1cnJTdGF0ZSA9PT0gbmV3U3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhdGU6IFM7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBcnJheSkge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oW10gYXMgUywgbmV3U3RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY3VyclN0YXRlLCBuZXdTdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuZGV2VG9vbFNlbmQoc3RhdGUsIGFjdGlvbk5hbWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZUlzRW5hYmxlZCAmJiB0aGlzLnBlcnNpc3RlbnRTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVudFN0b3JhZ2Uuc2V0SXRlbTxTPih0aGlzLnN0b3JlTmFtZSwgc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgdG8gZGV2IHRvb2wgYSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBuZXdTdGF0ZSBuZXcgc3RhdGVcclxuICAgICAqIEBwYXJhbSBhY3Rpb25OYW1lIFRoZSBhY3Rpb24gbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZXYgdG9vbHMgYXJlIGVuYWJsZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkZXZUb29sU2VuZChuZXdTdGF0ZTogUyB8IHVuZGVmaW5lZCwgYWN0aW9uTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5kZXZUb29sSXNFbmFibGVkIHx8ICF0aGlzLmRldlRvb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFjdGlvbk5hbWUpIHtcclxuICAgICAgICAgICAgLy8gcmV0cmlldmUgdGhlIHBhcmVudCAob2YgcGFyZW50KSBtZXRob2QgaW50byB0aGUgc3RhY2sgdHJhY2VcclxuICAgICAgICAgICAgYWN0aW9uTmFtZSA9IG5ldyBFcnJvcigpLnN0YWNrXHJcbiAgICAgICAgICAgICAgICA/LnNwbGl0KCdcXG4nKVszXVxyXG4gICAgICAgICAgICAgICAgLnRyaW0oKVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcgJylbMV1cclxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLicpWzFdIHx8ICd1bmtub3duJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmRldlRvb2wuc2VuZCh0aGlzLnN0b3JlTmFtZSwgYWN0aW9uTmFtZSwgbmV3U3RhdGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc3RvcmVOYW1lICsgJy4nICsgYWN0aW9uTmFtZSwgbmV3U3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlY3Vyc2l2ZWx5IE9iamVjdC5mcmVlemUgc2ltcGxlIEphdmFzY3JpcHQgc3RydWN0dXJlcyBjb25zaXN0aW5nIG9mIHBsYWluIG9iamVjdHMsIGFycmF5cywgYW5kIHByaW1pdGl2ZXMuXHJcbiAgICAgKiBNYWtlIHRoZSBkYXRhIGltbXV0YWJsZS5cclxuICAgICAqIEByZXR1cm5zIGltbXV0YWJsZSBvYmplY3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkZWVwRnJlZXplKG9iamVjdDogUyk6IFJlYWRvbmx5PFM+IHtcclxuICAgICAgICAvLyBObyBmcmVlemluZyBpbiBwcm9kdWN0aW9uIChmb3IgYmV0dGVyIHBlcmZvcm1hbmNlKS5cclxuICAgICAgICBpZiAoIXRoaXMuZGV2TW9kZSB8fCAhb2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmplY3QgYXMgUmVhZG9ubHk8Uz47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBXaGVuIGFscmVhZHkgZnJvemVuLCB3ZSBhc3N1bWUgaXRzIGNoaWxkcmVuIGFyZSBmcm96ZW4gKGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UpLlxyXG4gICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIHRydWUgaWYgeW91IGFsd2F5cyB1c2UgYGRlZXBGcmVlemVgIHRvIGZyZWV6ZSBvYmplY3RzLlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gTm90ZSB0aGF0IE9iamVjdC5pc0Zyb3plbiB3aWxsIGFsc28gcmV0dXJuIGB0cnVlYCBmb3IgcHJpbWl0aXZlcyAobnVtYmVycyxcclxuICAgICAgICAvLyBzdHJpbmdzLCBib29sZWFucywgdW5kZWZpbmVkLCBudWxsKSwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3JcclxuICAgICAgICAvLyB0aG9zZSBleHBsaWNpdGx5LlxyXG4gICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4ob2JqZWN0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0IGFzIFJlYWRvbmx5PFM+O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGVpdGhlciBhbiBhcnJheSBvciBwbGFpbiBvYmplY3QsIHNvXHJcbiAgICAgICAgLy8ganVzdCBmcmVlemUgaXQgYW5kIHJlY3Vyc2Ugb24gaXRzIHZhbHVlcy5cclxuICAgICAgICBPYmplY3QuZnJlZXplKG9iamVjdCk7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goa2V5ID0+IHRoaXMuZGVlcEZyZWV6ZSgob2JqZWN0IGFzIGFueSlba2V5XSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2JqZWN0IGFzIFJlYWRvbmx5PFM+O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,71 +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
|
|
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,
|
|
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 value
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWJyb3dzZXItc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1icm93c2VyLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDO0FBRTFDLE1BQU0sT0FBZ0IsMkJBQTJCO0lBSTdDLFlBQW9CLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGNUIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUM1QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFJLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNuRCxJQUFJLEtBQUssRUFBRTtnQkFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDaEM7YUFDSjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQkFTRV9LRVkgPSAnTmdTaW1wbGVTdGF0ZTo6JztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ1NpbXBsZVN0YXRlQnJvd3NlclN0b3JhZ2Uge1xyXG5cclxuICAgIHByaXZhdGUgaXNTdG9yYWdlQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlKSB7XHJcbiAgICAgICAgdGhpcy5pc1N0b3JhZ2VBY3RpdmUgPSAhIXN0b3JhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBzdG9yYWdlIGlzIGFjdGl2ZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBzdG9yYWdlIGlzIGFjdGl2ZVxyXG4gICAgICovXHJcbiAgICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1N0b3JhZ2VBY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgaXRlbSBpbnRvIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkga2V5IG5hbWVcclxuICAgICAqIEBwYXJhbSBzdGF0ZSBzdGF0ZSB2YWx1ZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHN0b3JlZCBpbnRvIHN0b3JhZ2VcclxuICAgICAqL1xyXG4gICAgc2V0SXRlbTxLPihrZXk6IHN0cmluZywgc3RhdGU6IEspOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc1N0b3JhZ2VBY3RpdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oQkFTRV9LRVkgKyBrZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gaXRlbSBmcm9tIHN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkga2V5IG5hbWVcclxuICAgICAqIEByZXR1cm5zIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIGdldEl0ZW08Sz4oa2V5OiBzdHJpbmcpOiBLIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9yYWdlQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oQkFTRV9LRVkgKyBrZXkpO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBpdGVtIGZyb20gc3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBrZXkgbmFtZVxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBpdGVtIGlzIHJlbW92ZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU3RvcmFnZUFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShCQVNFX0tFWSArIGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXkvdmFsdWUgcGFpcnMsIGlmIHRoZXJlIGFyZSBhbnkuXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHN0b3JhZ2UgaXMgY2xlYXJlZFxyXG4gICAgICovXHJcbiAgICBjbGVhcigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc1N0b3JhZ2VBY3RpdmUpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGUgPSB0aGlzLnN0b3JhZ2UubGVuZ3RoOyBpIDwgZTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2Uua2V5KGkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSAmJiBrZXkuc3RhcnRzV2l0aChCQVNFX0tFWSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export 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 active
|
|
28
|
+
* @returns True if dev tool is active
|
|
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: "17.0.8", ngImport: i0, type: NgSimpleStateDevTool, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateDevTool, providedIn: 'root' }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateDevTool, decorators: [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{ providedIn: 'root' }]
|
|
53
|
+
}], ctorParameters: () => [{ type: i0.NgZone }] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWRldi10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctc2ltcGxlLXN0YXRlL3NyYy9saWIvbmctc2ltcGxlLXN0YXRlLWRldi10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBcUJuRCxNQUFNLE9BQU8sb0JBQW9CO0lBUTdCLFlBQVksTUFBYztRQU5sQixtQkFBYyxHQUFhLE1BQU0sQ0FBQyw0QkFBNEIsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFFM0Ysb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsZUFBVSxHQUFHLG1CQUFtQixJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxjQUFTLEdBQTJCLEVBQUUsQ0FBQztRQUczQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsMkVBQTJFO1lBQzNFLHFFQUFxRTtZQUNyRSw2RUFBNkU7WUFDN0UsbUVBQW1FO1lBQ25FLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7b0JBQzVDLElBQUksRUFBRSxlQUFlO29CQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzlCLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDMUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksQ0FBSSxTQUFpQixFQUFFLFVBQWtCLEVBQUUsS0FBUTtRQUNuRCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBSSxHQUFHLFNBQVMsSUFBSSxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2SSxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs4R0FoRFEsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcblxyXG5pbnRlcmZhY2UgRGV2dG9vbHNMb2NhbCB7XHJcbiAgICBpbml0OiAoc3RhdGU6IG9iamVjdCkgPT4gdm9pZDtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBzZW5kOiA8VD4oYWN0aW9uOiBzdHJpbmcsIHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBUPiwgb3B0aW9uczogYW55LCBpbnN0YW5jZUlkOiBzdHJpbmcpID0+IHZvaWQ7XHJcbn1cclxuaW50ZXJmYWNlIERldnRvb2xzIHtcclxuICAgIGNvbm5lY3Qob3B0aW9uczogeyBuYW1lOiBzdHJpbmcsIGluc3RhbmNlSWQ6IHN0cmluZyB9KTogRGV2dG9vbHNMb2NhbDtcclxufVxyXG5cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XHJcbiAgICAgICAgX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXzogRGV2dG9vbHM7XHJcbiAgICAgICAgZGV2VG9vbHNFeHRlbnNpb246IERldnRvb2xzO1xyXG4gICAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTmdTaW1wbGVTdGF0ZURldlRvb2wge1xyXG5cclxuICAgIHByaXZhdGUgZ2xvYmFsRGV2dG9vbHM6IERldnRvb2xzID0gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18gfHwgd2luZG93LmRldlRvb2xzRXh0ZW5zaW9uO1xyXG4gICAgcHJpdmF0ZSBsb2NhbERldlRvb2whOiBEZXZ0b29sc0xvY2FsO1xyXG4gICAgcHJpdmF0ZSBpc0FjdGl2ZURldnRvb2wgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgaW5zdGFuY2VJZCA9IGBuZy1zaW1wbGUtc3RhdGUtJHtEYXRlLm5vdygpfWA7XHJcbiAgICBwcml2YXRlIGJhc2VTdGF0ZTogUmVjb3JkPHN0cmluZywgb2JqZWN0PiA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG5nWm9uZTogTmdab25lKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2xvYmFsRGV2dG9vbHMpIHtcclxuICAgICAgICAgICAgLy8gVGhlIGBjb25uZWN0YCBtZXRob2QgYWRkcyBgbWVzc2FnZWAgZXZlbnQgbGlzdGVuZXIgc2luY2UgaXQgY29tbXVuaWNhdGVzXHJcbiAgICAgICAgICAgIC8vIHdpdGggYW4gZXh0ZW5zaW9uIHRocm91Z2ggYHdpbmRvdy5wb3N0TWVzc2FnZWAgYW5kIG1lc3NhZ2UgZXZlbnRzLlxyXG4gICAgICAgICAgICAvLyBXZSBoYW5kbGUgb25seSAyIGV2ZW50czsgdGh1cywgd2UgZG9uJ3Qgd2FudCB0byBydW4gbWFueSBjaGFuZ2UgZGV0ZWN0aW9uc1xyXG4gICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSBleHRlbnNpb24gc2VuZHMgZXZlbnRzIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUuXHJcbiAgICAgICAgICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsRGV2VG9vbCA9IHRoaXMuZ2xvYmFsRGV2dG9vbHMuY29ubmVjdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ05nU2ltcGxlU3RhdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2VJZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlRGV2dG9vbCA9ICEhdGhpcy5sb2NhbERldlRvb2w7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZURldnRvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsRGV2VG9vbC5pbml0KHRoaXMuYmFzZVN0YXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgZGV2IHRvb2wgaXMgYWN0aXZlXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIGRldiB0b29sIGlzIGFjdGl2ZVxyXG4gICAgICovXHJcbiAgICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGl2ZURldnRvb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kIHRvIGRldiB0b29sIGEgbmV3IHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gc3RvcmVOYW1lIFRoZSBzdG9yZSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uTmFtZSBUaGUgYWN0aW9uIG5hbWVcclxuICAgICAqIEBwYXJhbSBzdGF0ZSB0aGUgc3RhdGVcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZGV2IHRvb2wgaXMgZW5hYmxlZCBhbmQgYWN0aW9uIGlzIHNlbmRcclxuICAgICAqL1xyXG4gICAgc2VuZDxUPihzdG9yZU5hbWU6IHN0cmluZywgYWN0aW9uTmFtZTogc3RyaW5nLCBzdGF0ZTogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlRGV2dG9vbCAmJiB0aGlzLmxvY2FsRGV2VG9vbCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsRGV2VG9vbC5zZW5kPFQ+KGAke3N0b3JlTmFtZX0uJHthY3Rpb25OYW1lfWAsIE9iamVjdC5hc3NpZ24odGhpcy5iYXNlU3RhdGUsIHsgW3N0b3JlTmFtZV06IHN0YXRlIH0pLCBmYWxzZSwgdGhpcy5pbnN0YW5jZUlkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,15 +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 NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(localStorage);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12
|
-
type: Injectable,
|
|
13
|
-
args: [{ providedIn: 'root' }]
|
|
14
|
-
}], ctorParameters:
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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 NgSimpleStateLocalStorage extends NgSimpleStateBrowserStorage {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(localStorage);
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateLocalStorage, providedIn: 'root' }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateLocalStorage, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{ providedIn: 'root' }]
|
|
14
|
+
}], ctorParameters: () => [] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLWxvY2FsLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1zaW1wbGUtc3RhdGUvc3JjL2xpYi9uZy1zaW1wbGUtc3RhdGUtbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUdoRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsMkJBQTJCO0lBQ3RFO1FBQ0ksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7OEdBSFEseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FEWixNQUFNOzsyRkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIH0gZnJvbSAnLi9uZy1zaW1wbGUtc3RhdGUtYnJvd3Nlci1zdG9yYWdlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NpbXBsZVN0YXRlTG9jYWxTdG9yYWdlIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKGxvY2FsU3RvcmFnZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -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
|
|
@@ -1,15 +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
|
-
|
|
10
|
-
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12
|
-
type: Injectable,
|
|
13
|
-
args: [{ providedIn: 'root' }]
|
|
14
|
-
}], ctorParameters:
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateSessionStorage, providedIn: 'root' }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateSessionStorage, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{ providedIn: 'root' }]
|
|
14
|
+
}], ctorParameters: () => [] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLXNlc3Npb24tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS1zZXNzaW9uLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHaEYsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDJCQUEyQjtJQUN4RTtRQUNJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQUhRLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRGQsTUFBTTs7MkZBQ25CLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nU2ltcGxlU3RhdGVCcm93c2VyU3RvcmFnZSB9IGZyb20gJy4vbmctc2ltcGxlLXN0YXRlLWJyb3dzZXItc3RvcmFnZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTmdTaW1wbGVTdGF0ZVNlc3Npb25TdG9yYWdlIGV4dGVuZHMgTmdTaW1wbGVTdGF0ZUJyb3dzZXJTdG9yYWdlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKHNlc3Npb25TdG9yYWdlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,23 +1,23 @@
|
|
|
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
|
-
export class NgSimpleStateModule {
|
|
5
|
-
static forRoot(
|
|
6
|
-
return {
|
|
7
|
-
ngModule: NgSimpleStateModule,
|
|
8
|
-
providers: [
|
|
9
|
-
{
|
|
10
|
-
provide: NG_SIMPLE_STORE_CONFIG,
|
|
11
|
-
useValue:
|
|
12
|
-
},
|
|
13
|
-
],
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
-
type: NgModule
|
|
22
|
-
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
+
export 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: "17.0.8", ngImport: i0, type: NgSimpleStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
17
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateModule }); }
|
|
18
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateModule }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgSimpleStateModule, decorators: [{
|
|
21
|
+
type: NgModule
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2ltcGxlLXN0YXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXNpbXBsZS1zdGF0ZS9zcmMvbGliL25nLXNpbXBsZS1zdGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUF1QixzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUd2RixNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQ1YsbUJBQXlDO1FBRXpDLE9BQU87WUFDSCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO2lCQUNoQzthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7OEdBYlEsbUJBQW1COytHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nU2ltcGxlU3RhdGVDb25maWcsIE5HX1NJTVBMRV9TVE9SRV9DT05GSUcgfSBmcm9tICcuL25nLXNpbXBsZS1zdGF0ZS1tb2RlbHMnO1xyXG5cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIE5nU2ltcGxlU3RhdGVNb2R1bGUge1xyXG4gICAgc3RhdGljIGZvclJvb3QoXHJcbiAgICAgICAgbmdTaW1wbGVTdGF0ZUNvbmZpZz86IE5nU2ltcGxlU3RhdGVDb25maWdcclxuICAgICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmdTaW1wbGVTdGF0ZU1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ1NpbXBsZVN0YXRlTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBOR19TSU1QTEVfU1RPUkVfQ09ORklHLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBuZ1NpbXBsZVN0YXRlQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -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==
|