@ngxs/storage-plugin 3.7.6 → 3.8.0-dev.master-743a236
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/bundles/ngxs-storage-plugin.umd.js +467 -499
- package/bundles/ngxs-storage-plugin.umd.js.map +1 -1
- package/esm2015/index.js +2 -6
- package/esm2015/ngxs-storage-plugin.js +2 -8
- package/esm2015/src/engines.js +10 -0
- package/esm2015/src/internals/final-options.js +16 -0
- package/esm2015/src/internals/storage-key.js +21 -0
- package/esm2015/src/internals.js +9 -58
- package/esm2015/src/public_api.js +3 -6
- package/esm2015/src/storage.module.js +16 -15
- package/esm2015/src/storage.plugin.js +41 -109
- package/esm2015/src/symbols.js +2 -91
- package/fesm2015/ngxs-storage-plugin.js +103 -273
- package/fesm2015/ngxs-storage-plugin.js.map +1 -1
- package/ngxs-storage-plugin.d.ts +1 -2
- package/package.json +5 -8
- package/src/engines.d.ts +4 -0
- package/src/internals/final-options.d.ts +10 -0
- package/src/internals/storage-key.d.ts +17 -0
- package/src/internals.d.ts +3 -9
- package/src/public_api.d.ts +1 -0
- package/src/storage.module.d.ts +5 -1
- package/src/storage.plugin.d.ts +6 -4
- package/src/symbols.d.ts +10 -4
- package/bundles/ngxs-storage-plugin.umd.min.js +0 -16
- package/bundles/ngxs-storage-plugin.umd.min.js.map +0 -1
- package/esm5/index.js +0 -9
- package/esm5/ngxs-storage-plugin.js +0 -11
- package/esm5/src/internals.js +0 -77
- package/esm5/src/public_api.js +0 -8
- package/esm5/src/storage.module.js +0 -55
- package/esm5/src/storage.plugin.js +0 -244
- package/esm5/src/symbols.js +0 -93
- package/fesm5/ngxs-storage-plugin.js +0 -473
- package/fesm5/ngxs-storage-plugin.js.map +0 -1
- package/ngxs-storage-plugin.metadata.json +0 -1
|
@@ -1,53 +1,30 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
1
|
import { PLATFORM_ID, Inject, Injectable } from '@angular/core';
|
|
6
2
|
import { isPlatformServer } from '@angular/common';
|
|
7
3
|
import { setValue, getValue, InitState, UpdateState, actionMatcher } from '@ngxs/store';
|
|
8
4
|
import { tap } from 'rxjs/operators';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
5
|
+
import { DEFAULT_STATE_KEY, getStorageKey } from './internals';
|
|
6
|
+
import { FINAL_NGXS_STORAGE_PLUGIN_OPTIONS } from './internals/final-options';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
11
8
|
export class NgxsStoragePlugin {
|
|
12
|
-
|
|
13
|
-
* @param {?} _options
|
|
14
|
-
* @param {?} _engine
|
|
15
|
-
* @param {?} _platformId
|
|
16
|
-
*/
|
|
17
|
-
constructor(_options, _engine, _platformId) {
|
|
9
|
+
constructor(_options, _platformId) {
|
|
18
10
|
this._options = _options;
|
|
19
|
-
this._engine = _engine;
|
|
20
11
|
this._platformId = _platformId;
|
|
21
|
-
|
|
22
|
-
// transformed by the `storageOptionsFactory` function that provided token.
|
|
23
|
-
this._keys = (/** @type {?} */ (this._options.key));
|
|
12
|
+
this._keysWithEngines = this._options.keysWithEngines;
|
|
24
13
|
// We default to `[DEFAULT_STATE_KEY]` if the user explicitly does not provide the `key` option.
|
|
25
|
-
this._usesDefaultStateKey = this.
|
|
14
|
+
this._usesDefaultStateKey = this._keysWithEngines.length === 1 && this._keysWithEngines[0].key === DEFAULT_STATE_KEY;
|
|
26
15
|
}
|
|
27
|
-
/**
|
|
28
|
-
* @param {?} state
|
|
29
|
-
* @param {?} event
|
|
30
|
-
* @param {?} next
|
|
31
|
-
* @return {?}
|
|
32
|
-
*/
|
|
33
16
|
handle(state, event, next) {
|
|
34
|
-
if (isPlatformServer(this._platformId)
|
|
17
|
+
if (isPlatformServer(this._platformId)) {
|
|
35
18
|
return next(state, event);
|
|
36
19
|
}
|
|
37
|
-
/** @type {?} */
|
|
38
20
|
const matches = actionMatcher(event);
|
|
39
|
-
/** @type {?} */
|
|
40
21
|
const isInitAction = matches(InitState);
|
|
41
|
-
/** @type {?} */
|
|
42
22
|
const isUpdateAction = matches(UpdateState);
|
|
43
|
-
/** @type {?} */
|
|
44
23
|
const isInitOrUpdateAction = isInitAction || isUpdateAction;
|
|
45
|
-
/** @type {?} */
|
|
46
24
|
let hasMigration = false;
|
|
47
25
|
if (isInitOrUpdateAction) {
|
|
48
|
-
/** @type {?} */
|
|
49
26
|
const addedStates = isUpdateAction && event.addedStates;
|
|
50
|
-
for (const key of this.
|
|
27
|
+
for (const { key, engine } of this._keysWithEngines) {
|
|
51
28
|
// We're checking what states have been added by NGXS and if any of these states should be handled by
|
|
52
29
|
// the storage plugin. For instance, we only want to deserialize the `auth` state, NGXS has added
|
|
53
30
|
// the `user` state, the storage plugin will be rerun and will do redundant deserialization.
|
|
@@ -58,48 +35,39 @@ export class NgxsStoragePlugin {
|
|
|
58
35
|
// The state name should always go first. The below code checks if the `key` includes dot
|
|
59
36
|
// notation and extracts the state name out of the key.
|
|
60
37
|
// Given the `key` is `myState.myProperty`, the `addedStates` will only contain `myState`.
|
|
61
|
-
/** @type {?} */
|
|
62
38
|
const dotNotationIndex = key.indexOf(DOT);
|
|
63
|
-
/** @type {?} */
|
|
64
39
|
const stateName = dotNotationIndex > -1 ? key.slice(0, dotNotationIndex) : key;
|
|
65
40
|
if (!addedStates.hasOwnProperty(stateName)) {
|
|
66
41
|
continue;
|
|
67
42
|
}
|
|
68
43
|
}
|
|
69
|
-
|
|
70
|
-
let storedValue =
|
|
44
|
+
const storageKey = getStorageKey(key, this._options);
|
|
45
|
+
let storedValue = engine.getItem(storageKey);
|
|
71
46
|
if (storedValue !== 'undefined' && storedValue != null) {
|
|
72
47
|
try {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
storedValue = (/** @type {?} */ (this._options.afterDeserialize))(newVal, key);
|
|
48
|
+
const newVal = this._options.deserialize(storedValue);
|
|
49
|
+
storedValue = this._options.afterDeserialize(newVal, key);
|
|
76
50
|
}
|
|
77
51
|
catch (_a) {
|
|
78
52
|
// Caretaker note: we have still left the `typeof` condition in order to avoid
|
|
79
53
|
// creating a breaking change for projects that still use the View Engine.
|
|
80
54
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
81
|
-
console.error(`Error ocurred while deserializing the ${
|
|
55
|
+
console.error(`Error ocurred while deserializing the ${storageKey} store value, falling back to empty object, the value obtained from the store: `, storedValue);
|
|
82
56
|
}
|
|
83
57
|
storedValue = {};
|
|
84
58
|
}
|
|
85
59
|
if (this._options.migrations) {
|
|
86
|
-
this._options.migrations.forEach(
|
|
87
|
-
* @param {?} strategy
|
|
88
|
-
* @return {?}
|
|
89
|
-
*/
|
|
90
|
-
strategy => {
|
|
91
|
-
/** @type {?} */
|
|
60
|
+
this._options.migrations.forEach(strategy => {
|
|
92
61
|
const versionMatch = strategy.version === getValue(storedValue, strategy.versionKey || 'version');
|
|
93
|
-
/** @type {?} */
|
|
94
62
|
const keyMatch = (!strategy.key && this._usesDefaultStateKey) || strategy.key === key;
|
|
95
63
|
if (versionMatch && keyMatch) {
|
|
96
64
|
storedValue = strategy.migrate(storedValue);
|
|
97
65
|
hasMigration = true;
|
|
98
66
|
}
|
|
99
|
-
})
|
|
67
|
+
});
|
|
100
68
|
}
|
|
101
69
|
if (!this._usesDefaultStateKey) {
|
|
102
|
-
state = setValue(state,
|
|
70
|
+
state = setValue(state, key, storedValue);
|
|
103
71
|
}
|
|
104
72
|
else {
|
|
105
73
|
// The `UpdateState` action is dispatched whenever the feature state is added.
|
|
@@ -112,12 +80,7 @@ export class NgxsStoragePlugin {
|
|
|
112
80
|
// The storage plugin will re-hydrate the whole state when the `RouterState` is registered,
|
|
113
81
|
// and the `counter` state will again equal `10` (not `999`).
|
|
114
82
|
if (storedValue && addedStates && Object.keys(addedStates).length > 0) {
|
|
115
|
-
storedValue = Object.keys(addedStates).reduce((
|
|
116
|
-
* @param {?} accumulator
|
|
117
|
-
* @param {?} addedState
|
|
118
|
-
* @return {?}
|
|
119
|
-
*/
|
|
120
|
-
(accumulator, addedState) => {
|
|
83
|
+
storedValue = Object.keys(addedStates).reduce((accumulator, addedState) => {
|
|
121
84
|
// The `storedValue` may equal the whole state (when the default state key is used).
|
|
122
85
|
// If `addedStates` contains only `router` then we want to merge the state only
|
|
123
86
|
// with the `router` value.
|
|
@@ -129,29 +92,24 @@ export class NgxsStoragePlugin {
|
|
|
129
92
|
accumulator[addedState] = storedValue[addedState];
|
|
130
93
|
}
|
|
131
94
|
return accumulator;
|
|
132
|
-
}
|
|
95
|
+
}, {});
|
|
133
96
|
}
|
|
134
|
-
state = Object.assign({}, state, storedValue);
|
|
97
|
+
state = Object.assign(Object.assign({}, state), storedValue);
|
|
135
98
|
}
|
|
136
99
|
}
|
|
137
100
|
}
|
|
138
101
|
}
|
|
139
|
-
return next(state, event).pipe(tap(
|
|
140
|
-
* @param {?} nextState
|
|
141
|
-
* @return {?}
|
|
142
|
-
*/
|
|
143
|
-
nextState => {
|
|
102
|
+
return next(state, event).pipe(tap(nextState => {
|
|
144
103
|
if (!isInitOrUpdateAction || (isInitOrUpdateAction && hasMigration)) {
|
|
145
|
-
for (const key of this.
|
|
146
|
-
|
|
147
|
-
|
|
104
|
+
for (const { key, engine } of this._keysWithEngines) {
|
|
105
|
+
let storedValue = nextState;
|
|
106
|
+
const storageKey = getStorageKey(key, this._options);
|
|
148
107
|
if (key !== DEFAULT_STATE_KEY) {
|
|
149
|
-
|
|
108
|
+
storedValue = getValue(nextState, key);
|
|
150
109
|
}
|
|
151
110
|
try {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
this._engine.setItem((/** @type {?} */ (key)), (/** @type {?} */ (this._options.serialize))(newVal));
|
|
111
|
+
const newStoredValue = this._options.beforeSerialize(storedValue, key);
|
|
112
|
+
engine.setItem(storageKey, this._options.serialize(newStoredValue));
|
|
155
113
|
}
|
|
156
114
|
catch (error) {
|
|
157
115
|
// Caretaker note: we have still left the `typeof` condition in order to avoid
|
|
@@ -160,54 +118,28 @@ export class NgxsStoragePlugin {
|
|
|
160
118
|
if (error &&
|
|
161
119
|
(error.name === 'QuotaExceededError' ||
|
|
162
120
|
error.name === 'NS_ERROR_DOM_QUOTA_REACHED')) {
|
|
163
|
-
console.error(`The ${
|
|
121
|
+
console.error(`The ${storageKey} store value exceeds the browser storage quota: `, storedValue);
|
|
164
122
|
}
|
|
165
123
|
else {
|
|
166
|
-
console.error(`Error ocurred while serializing the ${
|
|
124
|
+
console.error(`Error ocurred while serializing the ${storageKey} store value, value not updated, the value obtained from the store: `, storedValue);
|
|
167
125
|
}
|
|
168
126
|
}
|
|
169
127
|
}
|
|
170
128
|
}
|
|
171
129
|
}
|
|
172
|
-
}))
|
|
130
|
+
}));
|
|
173
131
|
}
|
|
174
132
|
}
|
|
175
|
-
NgxsStoragePlugin
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
* @type {?}
|
|
187
|
-
* @private
|
|
188
|
-
*/
|
|
189
|
-
NgxsStoragePlugin.prototype._keys;
|
|
190
|
-
/**
|
|
191
|
-
* @type {?}
|
|
192
|
-
* @private
|
|
193
|
-
*/
|
|
194
|
-
NgxsStoragePlugin.prototype._usesDefaultStateKey;
|
|
195
|
-
/**
|
|
196
|
-
* @type {?}
|
|
197
|
-
* @private
|
|
198
|
-
*/
|
|
199
|
-
NgxsStoragePlugin.prototype._options;
|
|
200
|
-
/**
|
|
201
|
-
* @type {?}
|
|
202
|
-
* @private
|
|
203
|
-
*/
|
|
204
|
-
NgxsStoragePlugin.prototype._engine;
|
|
205
|
-
/**
|
|
206
|
-
* @type {?}
|
|
207
|
-
* @private
|
|
208
|
-
*/
|
|
209
|
-
NgxsStoragePlugin.prototype._platformId;
|
|
210
|
-
}
|
|
211
|
-
/** @type {?} */
|
|
133
|
+
/** @nocollapse */ NgxsStoragePlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsStoragePlugin, deps: [{ token: FINAL_NGXS_STORAGE_PLUGIN_OPTIONS }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
134
|
+
/** @nocollapse */ NgxsStoragePlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsStoragePlugin });
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsStoragePlugin, decorators: [{
|
|
136
|
+
type: Injectable
|
|
137
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
138
|
+
type: Inject,
|
|
139
|
+
args: [FINAL_NGXS_STORAGE_PLUGIN_OPTIONS]
|
|
140
|
+
}] }, { type: undefined, decorators: [{
|
|
141
|
+
type: Inject,
|
|
142
|
+
args: [PLATFORM_ID]
|
|
143
|
+
}] }]; } });
|
|
212
144
|
const DOT = '.';
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yYWdlLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zdG9yYWdlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsYUFBYSxFQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBR0wsY0FBYyxFQUNkLDJCQUEyQixFQUM1QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFTaEQsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7O0lBUTVCLFlBQytDLFFBQWtDLEVBQy9DLE9BQXNCLEVBQ3pCLFdBQW1CO1FBRkgsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDL0MsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTs7O1FBUjFDLFVBQUssR0FBRyxtQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBWSxDQUFDOztRQUV0Qyx5QkFBb0IsR0FDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUM7SUFNOUQsQ0FBQzs7Ozs7OztJQUVKLE1BQU0sQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLElBQXNCO1FBQ25ELElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FB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bSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBsYWluT2JqZWN0IH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcbmltcG9ydCB7XG4gIE5neHNQbHVnaW4sXG4gIHNldFZhbHVlLFxuICBnZXRWYWx1ZSxcbiAgSW5pdFN0YXRlLFxuICBVcGRhdGVTdGF0ZSxcbiAgYWN0aW9uTWF0Y2hlcixcbiAgTmd4c05leHRQbHVnaW5GblxufSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFN0b3JhZ2VFbmdpbmUsXG4gIE5neHNTdG9yYWdlUGx1Z2luT3B0aW9ucyxcbiAgU1RPUkFHRV9FTkdJTkUsXG4gIE5HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OU1xufSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9TVEFURV9LRVkgfSBmcm9tICcuL2ludGVybmFscyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFdpbGwgYmUgcHJvdmlkZWQgdGhyb3VnaCBUZXJzZXIgZ2xvYmFsIGRlZmluaXRpb25zIGJ5IEFuZ3VsYXIgQ0xJXG4gKiBkdXJpbmcgdGhlIHByb2R1Y3Rpb24gYnVpbGQuIFRoaXMgaXMgaG93IEFuZ3VsYXIgZG9lcyB0cmVlLXNoYWtpbmcgaW50ZXJuYWxseS5cbiAqL1xuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hzU3RvcmFnZVBsdWdpbiBpbXBsZW1lbnRzIE5neHNQbHVnaW4ge1xuICAvLyBXZSBjYXN0IHRvIGBzdHJpbmdbXWAgaGVyZSBhcyB3ZSdyZSBzdXJlIHRoYXQgdGhpcyBvcHRpb24gaGFzIGJlZW5cbiAgLy8gdHJhbnNmb3JtZWQgYnkgdGhlIGBzdG9yYWdlT3B0aW9uc0ZhY3RvcnlgIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZWQgdG9rZW4uXG4gIHByaXZhdGUgX2tleXMgPSB0aGlzLl9vcHRpb25zLmtleSBhcyBzdHJpbmdbXTtcbiAgLy8gV2UgZGVmYXVsdCB0byBgW0RFRkFVTFRfU1RBVEVfS0VZXWAgaWYgdGhlIHVzZXIgZXhwbGljaXRseSBkb2VzIG5vdCBwcm92aWRlIHRoZSBga2V5YCBvcHRpb24uXG4gIHByaXZhdGUgX3VzZXNEZWZhdWx0U3RhdGVLZXkgPVxuICAgIHRoaXMuX2tleXMubGVuZ3RoID09PSAxICYmIHRoaXMuX2tleXNbMF0gPT09IERFRkFVTFRfU1RBVEVfS0VZO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTkdYU19TVE9SQUdFX1BMVUdJTl9PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzU3RvcmFnZVBsdWdpbk9wdGlvbnMsXG4gICAgQEluamVjdChTVE9SQUdFX0VOR0lORSkgcHJpdmF0ZSBfZW5naW5lOiBTdG9yYWdlRW5naW5lLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgX3BsYXRmb3JtSWQ6IHN0cmluZ1xuICApIHt9XG5cbiAgaGFuZGxlKHN0YXRlOiBhbnksIGV2ZW50OiBhbnksIG5leHQ6IE5neHNOZXh0UGx1Z2luRm4pIHtcbiAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcih0aGlzLl9wbGF0Zm9ybUlkKSAmJiB0aGlzLl9lbmdpbmUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXh0KHN0YXRlLCBldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlcyA9IGFjdGlvbk1hdGNoZXIoZXZlbnQpO1xuICAgIGNvbnN0IGlzSW5pdEFjdGlvbiA9IG1hdGNoZXMoSW5pdFN0YXRlKTtcbiAgICBjb25zdCBpc1VwZGF0ZUFjdGlvbiA9IG1hdGNoZXMoVXBkYXRlU3RhdGUpO1xuICAgIGNvbnN0IGlzSW5pdE9yVXBkYXRlQWN0aW9uID0gaXNJbml0QWN0aW9uIHx8IGlzVXBkYXRlQWN0aW9uO1xuICAgIGxldCBoYXNNaWdyYXRpb24gPSBmYWxzZTtcblxuICAgIGlmIChpc0luaXRPclVwZGF0ZUFjdGlvbikge1xuICAgICAgY29uc3QgYWRkZWRTdGF0ZXMgPSBpc1VwZGF0ZUFjdGlvbiAmJiBldmVudC5hZGRlZFN0YXRlcztcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5fa2V5cykge1xuICAgICAgICAvLyBXZSdyZSBjaGVja2luZyB3aGF0IHN0YXRlcyBoYXZlIGJlZW4gYWRkZWQgYnkgTkdYUyBhbmQgaWYgYW55IG9mIHRoZXNlIHN0YXRlcyBzaG91bGQgYmUgaGFuZGxlZCBieVxuICAgICAgICAvLyB0aGUgc3RvcmFnZSBwbHVnaW4uIEZvciBpbnN0YW5jZSwgd2Ugb25seSB3YW50IHRvIGRlc2VyaWFsaXplIHRoZSBgYXV0aGAgc3RhdGUsIE5HWFMgaGFzIGFkZGVkXG4gICAgICAgIC8vIHRoZSBgdXNlcmAgc3RhdGUsIHRoZSBzdG9yYWdlIHBsdWdpbiB3aWxsIGJlIHJlcnVuIGFuZCB3aWxsIGRvIHJlZHVuZGFudCBkZXNlcmlhbGl6YXRpb24uXG4gICAgICAgIC8vIGB1c2VzRGVmYXVsdFN0YXRlS2V5YCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgc2luY2UgYGV2ZW50LmFkZGVkU3RhdGVzYCBuZXZlciBjb250YWlucyBgQEBTVEFURWAuXG4gICAgICAgIGlmICghdGhpcy5fdXNlc0RlZmF1bHRTdGF0ZUtleSAmJiBhZGRlZFN0YXRlcykge1xuICAgICAgICAgIC8vIFdlIHN1cHBvcnQgcHJvdmlkaW5nIGtleXMgdGhhdCBjYW4gYmUgZGVlcGx5IG5lc3RlZCB2aWEgZG90IG5vdGF0aW9uLCBmb3IgaW5zdGFuY2UsXG4gICAgICAgICAgLy8gYGtleXM6IFsnbXlTdGF0ZS5teVByb3BlcnR5J11gIGlzIGEgdmFsaWQga2V5LlxuICAgICAgICAgIC8vIFRoZSBzdGF0ZSBuYW1lIHNob3VsZCBhbHdheXMgZ28gZmlyc3QuIFRoZSBiZWxvdyBjb2RlIGNoZWNrcyBpZiB0aGUgYGtleWAgaW5jbHVkZXMgZG90XG4gICAgICAgICAgLy8gbm90YXRpb24gYW5kIGV4dHJhY3RzIHRoZSBzdGF0ZSBuYW1lIG91dCBvZiB0aGUga2V5LlxuICAgICAgICAgIC8vIEdpdmVuIHRoZSBga2V5YCBpcyBgbXlTdGF0ZS5teVByb3BlcnR5YCwgdGhlIGBhZGRlZFN0YXRlc2Agd2lsbCBvbmx5IGNvbnRhaW4gYG15U3RhdGVgLlxuICAgICAgICAgIGNvbnN0IGRvdE5vdGF0aW9uSW5kZXggPSBrZXkuaW5kZXhPZihET1QpO1xuICAgICAgICAgIGNvbnN0IHN0YXRlTmFtZSA9IGRvdE5vdGF0aW9uSW5kZXggPiAtMSA/IGtleS5zbGljZSgwLCBkb3ROb3RhdGlvbkluZGV4KSA6IGtleTtcbiAgICAgICAgICBpZiAoIWFkZGVkU3RhdGVzLmhhc093blByb3BlcnR5KHN0YXRlTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdG9yZWRWYWx1ZTogYW55ID0gdGhpcy5fZW5naW5lLmdldEl0ZW0oa2V5ISk7XG5cbiAgICAgICAgaWYgKHN0b3JlZFZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiBzdG9yZWRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX29wdGlvbnMuZGVzZXJpYWxpemUhKHN0b3JlZFZhbHVlKTtcbiAgICAgICAgICAgIHN0b3JlZFZhbHVlID0gdGhpcy5fb3B0aW9ucy5hZnRlckRlc2VyaWFsaXplIShuZXdWYWwsIGtleSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIGNyZWF0aW5nIGEgYnJlYWtpbmcgY2hhbmdlIGZvciBwcm9qZWN0cyB0aGF0IHN0aWxsIHVzZSB0aGUgVmlldyBFbmdpbmUuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgYEVycm9yIG9jdXJyZWQgd2hpbGUgZGVzZXJpYWxpemluZyB0aGUgJHtrZXl9IHN0b3JlIHZhbHVlLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgb2JqZWN0LCB0aGUgdmFsdWUgb2J0YWluZWQgZnJvbSB0aGUgc3RvcmU6IGAsXG4gICAgICAgICAgICAgICAgc3RvcmVkVmFsdWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlZFZhbHVlID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubWlncmF0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5taWdyYXRpb25zLmZvckVhY2goc3RyYXRlZ3kgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPVxuICAgICAgICAgICAgICAgIHN0cmF0ZWd5LnZlcnNpb24gPT09IGdldFZhbHVlKHN0b3JlZFZhbHVlLCBzdHJhdGVneS52ZXJzaW9uS2V5IHx8ICd2ZXJzaW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGtleU1hdGNoID1cbiAgICAgICAgICAgICAgICAoIXN0cmF0ZWd5LmtleSAmJiB0aGlzLl91c2VzRGVmYXVsdFN0YXRlS2V5KSB8fCBzdHJhdGVneS5rZXkgPT09IGtleTtcbiAgICAgICAgICAgICAgaWYgKHZlcnNpb25NYXRjaCAmJiBrZXlNYXRjaCkge1xuICAgICAgICAgICAgICAgIHN0b3JlZFZhbHVlID0gc3RyYXRlZ3kubWlncmF0ZShzdG9yZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaGFzTWlncmF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLl91c2VzRGVmYXVsdFN0YXRlS2V5KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IHNldFZhbHVlKHN0YXRlLCBrZXkhLCBzdG9yZWRWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoZSBgVXBkYXRlU3RhdGVgIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHdoZW5ldmVyIHRoZSBmZWF0dXJlIHN0YXRlIGlzIGFkZGVkLlxuICAgICAgICAgICAgLy8gVGhlIGJlbG93IGNvbmRpdGlvbiBpcyBtZXQgb25seSB3aGVuIHRoZSBgVXBkYXRlU3RhdGVgIGlzIGRpc3BhdGNoZWQuXG4gICAgICAgICAgICAvLyBMZXQncyBhc3N1bWUgdGhhdCB3ZSBoYXZlIDIgc3RhdGVzIGBjb3VudGVyYCBhbmQgYEBuZ3hzL3JvdXRlci1wbHVnaW5gIHN0YXRlLlxuICAgICAgICAgICAgLy8gYENvdW50ZXJTdGF0ZWAgaXMgcHJvdmlkZWQgb24gdGhlIHJvb3QgbGV2ZWwgd2hlbiBjYWxsaW5nIGBOZ3hzTW9kdWxlLmZvclJvb3QoKWBcbiAgICAgICAgICAgIC8vIGFuZCBgQG5neHMvcm91dGVyLXBsdWdpbmAgaXMgcHJvdmlkZWQgYXMgYSBmZWF0dXJlIHN0YXRlLlxuICAgICAgICAgICAgLy8gVGhlIHN0b3JhZ2UgcGx1Z2luIG1heSBzYXZlIHRoZSBgY291bnRlcmAgc3RhdGUgdmFsdWUgYXMgYDEwYCBiZWZvcmUuXG4gICAgICAgICAgICAvLyBUaGUgYENvdW50ZXJTdGF0ZWAgbWF5IGltcGxlbWVudCB0aGUgYG5neHNPbkluaXRgIGhvb2sgYW5kIGNhbGwgYGN0eC5zZXRTdGF0ZSg5OTkpYC5cbiAgICAgICAgICAgIC8vIFRoZSBzdG9yYWdlIHBsdWdpbiB3aWxsIHJlLWh5ZHJhdGUgdGhlIHdob2xlIHN0YXRlIHdoZW4gdGhlIGBSb3V0ZXJTdGF0ZWAgaXMgcmVnaXN0ZXJlZCxcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgYGNvdW50ZXJgIHN0YXRlIHdpbGwgYWdhaW4gZXF1YWwgYDEwYCAobm90IGA5OTlgKS5cbiAgICAgICAgICAgIGlmIChzdG9yZWRWYWx1ZSAmJiBhZGRlZFN0YXRlcyAmJiBPYmplY3Qua2V5cyhhZGRlZFN0YXRlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IE9iamVjdC5rZXlzKGFkZGVkU3RhdGVzKS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBhZGRlZFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIGBzdG9yZWRWYWx1ZWAgbWF5IGVxdWFsIHRoZSB3aG9sZSBzdGF0ZSAod2hlbiB0aGUgZGVmYXVsdCBzdGF0ZSBrZXkgaXMgdXNlZCkuXG4gICAgICAgICAgICAgICAgLy8gSWYgYGFkZGVkU3RhdGVzYCBjb250YWlucyBvbmx5IGByb3V0ZXJgIHRoZW4gd2Ugd2FudCB0byBtZXJnZSB0aGUgc3RhdGUgb25seVxuICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGByb3V0ZXJgIHZhbHVlLlxuICAgICAgICAgICAgICAgIC8vIExldCdzIGFzc3VtZSB0aGF0IHRoZSBgc3RvcmVkVmFsdWVgIGlzIGFuIG9iamVjdDpcbiAgICAgICAgICAgICAgICAvLyBgeyBjb3VudGVyOiAxMCwgcm91dGVyOiB7Li4ufSB9YFxuICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBwaWNrIG9ubHkgdGhlIGByb3V0ZXJgIG9iamVjdCBmcm9tIHRoZSBgc3RvcmVkVmFsdWVgIGFuZCBgY291bnRlcmBcbiAgICAgICAgICAgICAgICAvLyBzdGF0ZSB3aWxsIG5vdCBiZSByZS1oeWRyYXRlZCB1bm5lY2Vzc2FyeS5cbiAgICAgICAgICAgICAgICBpZiAoc3RvcmVkVmFsdWUuaGFzT3duUHJvcGVydHkoYWRkZWRTdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yW2FkZGVkU3RhdGVdID0gc3RvcmVkVmFsdWVbYWRkZWRTdGF0ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICAgICAgICAgICAgfSwgPFBsYWluT2JqZWN0Pnt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhdGUgPSB7IC4uLnN0YXRlLCAuLi5zdG9yZWRWYWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0KHN0YXRlLCBldmVudCkucGlwZShcbiAgICAgIHRhcChuZXh0U3RhdGUgPT4ge1xuICAgICAgICBpZiAoIWlzSW5pdE9yVXBkYXRlQWN0aW9uIHx8IChpc0luaXRPclVwZGF0ZUFjdGlvbiAmJiBoYXNNaWdyYXRpb24pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5fa2V5cykge1xuICAgICAgICAgICAgbGV0IHZhbCA9IG5leHRTdGF0ZTtcblxuICAgICAgICAgICAgaWYgKGtleSAhPT0gREVGQVVMVF9TVEFURV9LRVkpIHtcbiAgICAgICAgICAgICAgdmFsID0gZ2V0VmFsdWUobmV4dFN0YXRlLCBrZXkhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3VmFsID0gdGhpcy5fb3B0aW9ucy5iZWZvcmVTZXJpYWxpemUhKHZhbCwga2V5KTtcbiAgICAgICAgICAgICAgdGhpcy5fZW5naW5lLnNldEl0ZW0oa2V5ISwgdGhpcy5fb3B0aW9ucy5zZXJpYWxpemUhKG5ld1ZhbCkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gQ2FyZXRha2VyIG5vdGU6IHdlIGhhdmUgc3RpbGwgbGVmdCB0aGUgYHR5cGVvZmAgY29uZGl0aW9uIGluIG9yZGVyIHRvIGF2b2lkXG4gICAgICAgICAgICAgIC8vIGNyZWF0aW5nIGEgYnJlYWtpbmcgY2hhbmdlIGZvciBwcm9qZWN0cyB0aGF0IHN0aWxsIHVzZSB0aGUgVmlldyBFbmdpbmUuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBlcnJvciAmJlxuICAgICAgICAgICAgICAgICAgKGVycm9yLm5hbWUgPT09ICdRdW90YUV4Y2VlZGVkRXJyb3InIHx8XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLm5hbWUgPT09ICdOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRCcpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgVGhlICR7a2V5fSBzdG9yZSB2YWx1ZSBleGNlZWRzIHRoZSBicm93c2VyIHN0b3JhZ2UgcXVvdGE6IGAsXG4gICAgICAgICAgICAgICAgICAgIHZhbFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVycm9yIG9jdXJyZWQgd2hpbGUgc2VyaWFsaXppbmcgdGhlICR7a2V5fSBzdG9yZSB2YWx1ZSwgdmFsdWUgbm90IHVwZGF0ZWQsIHRoZSB2YWx1ZSBvYnRhaW5lZCBmcm9tIHRoZSBzdG9yZTogYCxcbiAgICAgICAgICAgICAgICAgICAgdmFsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IERPVCA9ICcuJztcbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yYWdlLXBsdWdpbi9zcmMvc3RvcmFnZS5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsYUFBYSxFQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFFTCxpQ0FBaUMsRUFDbEMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFTbkMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNxRCxRQUF1QyxFQUM3RCxXQUFtQjtRQURHLGFBQVEsR0FBUixRQUFRLENBQStCO1FBQzdELGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBUDFDLHFCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ3pELGdHQUFnRztRQUN4Rix5QkFBb0IsR0FDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxpQkFBaUIsQ0FBQztJQUt4RixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQVUsRUFBRSxLQUFVLEVBQUUsSUFBc0I7UUFDbkQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtB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VTs7MEJBUU4sTUFBTTsyQkFBQyxpQ0FBaUM7OzBCQUN4QyxNQUFNOzJCQUFDLFdBQVc7O0FBZ0p2QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQTEFURk9STV9JRCwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBsYWluT2JqZWN0IH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcbmltcG9ydCB7XG4gIE5neHNQbHVnaW4sXG4gIHNldFZhbHVlLFxuICBnZXRWYWx1ZSxcbiAgSW5pdFN0YXRlLFxuICBVcGRhdGVTdGF0ZSxcbiAgYWN0aW9uTWF0Y2hlcixcbiAgTmd4c05leHRQbHVnaW5GblxufSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERFRkFVTFRfU1RBVEVfS0VZLCBnZXRTdG9yYWdlS2V5IH0gZnJvbSAnLi9pbnRlcm5hbHMnO1xuaW1wb3J0IHtcbiAgRmluYWxOZ3hzU3RvcmFnZVBsdWdpbk9wdGlvbnMsXG4gIEZJTkFMX05HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OU1xufSBmcm9tICcuL2ludGVybmFscy9maW5hbC1vcHRpb25zJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gV2lsbCBiZSBwcm92aWRlZCB0aHJvdWdoIFRlcnNlciBnbG9iYWwgZGVmaW5pdGlvbnMgYnkgQW5ndWxhciBDTElcbiAqIGR1cmluZyB0aGUgcHJvZHVjdGlvbiBidWlsZC4gVGhpcyBpcyBob3cgQW5ndWxhciBkb2VzIHRyZWUtc2hha2luZyBpbnRlcm5hbGx5LlxuICovXG5kZWNsYXJlIGNvbnN0IG5nRGV2TW9kZTogYm9vbGVhbjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neHNTdG9yYWdlUGx1Z2luIGltcGxlbWVudHMgTmd4c1BsdWdpbiB7XG4gIHByaXZhdGUgX2tleXNXaXRoRW5naW5lcyA9IHRoaXMuX29wdGlvbnMua2V5c1dpdGhFbmdpbmVzO1xuICAvLyBXZSBkZWZhdWx0IHRvIGBbREVGQVVMVF9TVEFURV9LRVldYCBpZiB0aGUgdXNlciBleHBsaWNpdGx5IGRvZXMgbm90IHByb3ZpZGUgdGhlIGBrZXlgIG9wdGlvbi5cbiAgcHJpdmF0ZSBfdXNlc0RlZmF1bHRTdGF0ZUtleSA9XG4gICAgdGhpcy5fa2V5c1dpdGhFbmdpbmVzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLl9rZXlzV2l0aEVuZ2luZXNbMF0ua2V5ID09PSBERUZBVUxUX1NUQVRFX0tFWTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZJTkFMX05HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OUykgcHJpdmF0ZSBfb3B0aW9uczogRmluYWxOZ3hzU3RvcmFnZVBsdWdpbk9wdGlvbnMsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm1JZDogc3RyaW5nXG4gICkge31cblxuICBoYW5kbGUoc3RhdGU6IGFueSwgZXZlbnQ6IGFueSwgbmV4dDogTmd4c05leHRQbHVnaW5Gbikge1xuICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoZXMgPSBhY3Rpb25NYXRjaGVyKGV2ZW50KTtcbiAgICBjb25zdCBpc0luaXRBY3Rpb24gPSBtYXRjaGVzKEluaXRTdGF0ZSk7XG4gICAgY29uc3QgaXNVcGRhdGVBY3Rpb24gPSBtYXRjaGVzKFVwZGF0ZVN0YXRlKTtcbiAgICBjb25zdCBpc0luaXRPclVwZGF0ZUFjdGlvbiA9IGlzSW5pdEFjdGlvbiB8fCBpc1VwZGF0ZUFjdGlvbjtcbiAgICBsZXQgaGFzTWlncmF0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoaXNJbml0T3JVcGRhdGVBY3Rpb24pIHtcbiAgICAgIGNvbnN0IGFkZGVkU3RhdGVzID0gaXNVcGRhdGVBY3Rpb24gJiYgZXZlbnQuYWRkZWRTdGF0ZXM7XG5cbiAgICAgIGZvciAoY29uc3QgeyBrZXksIGVuZ2luZSB9IG9mIHRoaXMuX2tleXNXaXRoRW5naW5lcykge1xuICAgICAgICAvLyBXZSdyZSBjaGVja2luZyB3aGF0IHN0YXRlcyBoYXZlIGJlZW4gYWRkZWQgYnkgTkdYUyBhbmQgaWYgYW55IG9mIHRoZXNlIHN0YXRlcyBzaG91bGQgYmUgaGFuZGxlZCBieVxuICAgICAgICAvLyB0aGUgc3RvcmFnZSBwbHVnaW4uIEZvciBpbnN0YW5jZSwgd2Ugb25seSB3YW50IHRvIGRlc2VyaWFsaXplIHRoZSBgYXV0aGAgc3RhdGUsIE5HWFMgaGFzIGFkZGVkXG4gICAgICAgIC8vIHRoZSBgdXNlcmAgc3RhdGUsIHRoZSBzdG9yYWdlIHBsdWdpbiB3aWxsIGJlIHJlcnVuIGFuZCB3aWxsIGRvIHJlZHVuZGFudCBkZXNlcmlhbGl6YXRpb24uXG4gICAgICAgIC8vIGB1c2VzRGVmYXVsdFN0YXRlS2V5YCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgc2luY2UgYGV2ZW50LmFkZGVkU3RhdGVzYCBuZXZlciBjb250YWlucyBgQEBTVEFURWAuXG4gICAgICAgIGlmICghdGhpcy5fdXNlc0RlZmF1bHRTdGF0ZUtleSAmJiBhZGRlZFN0YXRlcykge1xuICAgICAgICAgIC8vIFdlIHN1cHBvcnQgcHJvdmlkaW5nIGtleXMgdGhhdCBjYW4gYmUgZGVlcGx5IG5lc3RlZCB2aWEgZG90IG5vdGF0aW9uLCBmb3IgaW5zdGFuY2UsXG4gICAgICAgICAgLy8gYGtleXM6IFsnbXlTdGF0ZS5teVByb3BlcnR5J11gIGlzIGEgdmFsaWQga2V5LlxuICAgICAgICAgIC8vIFRoZSBzdGF0ZSBuYW1lIHNob3VsZCBhbHdheXMgZ28gZmlyc3QuIFRoZSBiZWxvdyBjb2RlIGNoZWNrcyBpZiB0aGUgYGtleWAgaW5jbHVkZXMgZG90XG4gICAgICAgICAgLy8gbm90YXRpb24gYW5kIGV4dHJhY3RzIHRoZSBzdGF0ZSBuYW1lIG91dCBvZiB0aGUga2V5LlxuICAgICAgICAgIC8vIEdpdmVuIHRoZSBga2V5YCBpcyBgbXlTdGF0ZS5teVByb3BlcnR5YCwgdGhlIGBhZGRlZFN0YXRlc2Agd2lsbCBvbmx5IGNvbnRhaW4gYG15U3RhdGVgLlxuICAgICAgICAgIGNvbnN0IGRvdE5vdGF0aW9uSW5kZXggPSBrZXkuaW5kZXhPZihET1QpO1xuICAgICAgICAgIGNvbnN0IHN0YXRlTmFtZSA9IGRvdE5vdGF0aW9uSW5kZXggPiAtMSA/IGtleS5zbGljZSgwLCBkb3ROb3RhdGlvbkluZGV4KSA6IGtleTtcbiAgICAgICAgICBpZiAoIWFkZGVkU3RhdGVzLmhhc093blByb3BlcnR5KHN0YXRlTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBnZXRTdG9yYWdlS2V5KGtleSwgdGhpcy5fb3B0aW9ucyk7XG4gICAgICAgIGxldCBzdG9yZWRWYWx1ZTogYW55ID0gZW5naW5lLmdldEl0ZW0oc3RvcmFnZUtleSk7XG5cbiAgICAgICAgaWYgKHN0b3JlZFZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiBzdG9yZWRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX29wdGlvbnMuZGVzZXJpYWxpemUhKHN0b3JlZFZhbHVlKTtcbiAgICAgICAgICAgIHN0b3JlZFZhbHVlID0gdGhpcy5fb3B0aW9ucy5hZnRlckRlc2VyaWFsaXplIShuZXdWYWwsIGtleSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIGNyZWF0aW5nIGEgYnJlYWtpbmcgY2hhbmdlIGZvciBwcm9qZWN0cyB0aGF0IHN0aWxsIHVzZSB0aGUgVmlldyBFbmdpbmUuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgYEVycm9yIG9jdXJyZWQgd2hpbGUgZGVzZXJpYWxpemluZyB0aGUgJHtzdG9yYWdlS2V5fSBzdG9yZSB2YWx1ZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IG9iamVjdCwgdGhlIHZhbHVlIG9idGFpbmVkIGZyb20gdGhlIHN0b3JlOiBgLFxuICAgICAgICAgICAgICAgIHN0b3JlZFZhbHVlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zLm1pZ3JhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMubWlncmF0aW9ucy5mb3JFYWNoKHN0cmF0ZWd5ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbk1hdGNoID1cbiAgICAgICAgICAgICAgICBzdHJhdGVneS52ZXJzaW9uID09PSBnZXRWYWx1ZShzdG9yZWRWYWx1ZSwgc3RyYXRlZ3kudmVyc2lvbktleSB8fCAndmVyc2lvbicpO1xuICAgICAgICAgICAgICBjb25zdCBrZXlNYXRjaCA9XG4gICAgICAgICAgICAgICAgKCFzdHJhdGVneS5rZXkgJiYgdGhpcy5fdXNlc0RlZmF1bHRTdGF0ZUtleSkgfHwgc3RyYXRlZ3kua2V5ID09PSBrZXk7XG4gICAgICAgICAgICAgIGlmICh2ZXJzaW9uTWF0Y2ggJiYga2V5TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IHN0cmF0ZWd5Lm1pZ3JhdGUoc3RvcmVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIGhhc01pZ3JhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5fdXNlc0RlZmF1bHRTdGF0ZUtleSkge1xuICAgICAgICAgICAgc3RhdGUgPSBzZXRWYWx1ZShzdGF0ZSwga2V5LCBzdG9yZWRWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoZSBgVXBkYXRlU3RhdGVgIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHdoZW5ldmVyIHRoZSBmZWF0dXJlIHN0YXRlIGlzIGFkZGVkLlxuICAgICAgICAgICAgLy8gVGhlIGJlbG93IGNvbmRpdGlvbiBpcyBtZXQgb25seSB3aGVuIHRoZSBgVXBkYXRlU3RhdGVgIGlzIGRpc3BhdGNoZWQuXG4gICAgICAgICAgICAvLyBMZXQncyBhc3N1bWUgdGhhdCB3ZSBoYXZlIDIgc3RhdGVzIGBjb3VudGVyYCBhbmQgYEBuZ3hzL3JvdXRlci1wbHVnaW5gIHN0YXRlLlxuICAgICAgICAgICAgLy8gYENvdW50ZXJTdGF0ZWAgaXMgcHJvdmlkZWQgb24gdGhlIHJvb3QgbGV2ZWwgd2hlbiBjYWxsaW5nIGBOZ3hzTW9kdWxlLmZvclJvb3QoKWBcbiAgICAgICAgICAgIC8vIGFuZCBgQG5neHMvcm91dGVyLXBsdWdpbmAgaXMgcHJvdmlkZWQgYXMgYSBmZWF0dXJlIHN0YXRlLlxuICAgICAgICAgICAgLy8gVGhlIHN0b3JhZ2UgcGx1Z2luIG1heSBzYXZlIHRoZSBgY291bnRlcmAgc3RhdGUgdmFsdWUgYXMgYDEwYCBiZWZvcmUuXG4gICAgICAgICAgICAvLyBUaGUgYENvdW50ZXJTdGF0ZWAgbWF5IGltcGxlbWVudCB0aGUgYG5neHNPbkluaXRgIGhvb2sgYW5kIGNhbGwgYGN0eC5zZXRTdGF0ZSg5OTkpYC5cbiAgICAgICAgICAgIC8vIFRoZSBzdG9yYWdlIHBsdWdpbiB3aWxsIHJlLWh5ZHJhdGUgdGhlIHdob2xlIHN0YXRlIHdoZW4gdGhlIGBSb3V0ZXJTdGF0ZWAgaXMgcmVnaXN0ZXJlZCxcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgYGNvdW50ZXJgIHN0YXRlIHdpbGwgYWdhaW4gZXF1YWwgYDEwYCAobm90IGA5OTlgKS5cbiAgICAgICAgICAgIGlmIChzdG9yZWRWYWx1ZSAmJiBhZGRlZFN0YXRlcyAmJiBPYmplY3Qua2V5cyhhZGRlZFN0YXRlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IE9iamVjdC5rZXlzKGFkZGVkU3RhdGVzKS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBhZGRlZFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIGBzdG9yZWRWYWx1ZWAgbWF5IGVxdWFsIHRoZSB3aG9sZSBzdGF0ZSAod2hlbiB0aGUgZGVmYXVsdCBzdGF0ZSBrZXkgaXMgdXNlZCkuXG4gICAgICAgICAgICAgICAgLy8gSWYgYGFkZGVkU3RhdGVzYCBjb250YWlucyBvbmx5IGByb3V0ZXJgIHRoZW4gd2Ugd2FudCB0byBtZXJnZSB0aGUgc3RhdGUgb25seVxuICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGByb3V0ZXJgIHZhbHVlLlxuICAgICAgICAgICAgICAgIC8vIExldCdzIGFzc3VtZSB0aGF0IHRoZSBgc3RvcmVkVmFsdWVgIGlzIGFuIG9iamVjdDpcbiAgICAgICAgICAgICAgICAvLyBgeyBjb3VudGVyOiAxMCwgcm91dGVyOiB7Li4ufSB9YFxuICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBwaWNrIG9ubHkgdGhlIGByb3V0ZXJgIG9iamVjdCBmcm9tIHRoZSBgc3RvcmVkVmFsdWVgIGFuZCBgY291bnRlcmBcbiAgICAgICAgICAgICAgICAvLyBzdGF0ZSB3aWxsIG5vdCBiZSByZS1oeWRyYXRlZCB1bm5lY2Vzc2FyeS5cbiAgICAgICAgICAgICAgICBpZiAoc3RvcmVkVmFsdWUuaGFzT3duUHJvcGVydHkoYWRkZWRTdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yW2FkZGVkU3RhdGVdID0gc3RvcmVkVmFsdWVbYWRkZWRTdGF0ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICAgICAgICAgICAgfSwgPFBsYWluT2JqZWN0Pnt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhdGUgPSB7IC4uLnN0YXRlLCAuLi5zdG9yZWRWYWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0KHN0YXRlLCBldmVudCkucGlwZShcbiAgICAgIHRhcChuZXh0U3RhdGUgPT4ge1xuICAgICAgICBpZiAoIWlzSW5pdE9yVXBkYXRlQWN0aW9uIHx8IChpc0luaXRPclVwZGF0ZUFjdGlvbiAmJiBoYXNNaWdyYXRpb24pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB7IGtleSwgZW5naW5lIH0gb2YgdGhpcy5fa2V5c1dpdGhFbmdpbmVzKSB7XG4gICAgICAgICAgICBsZXQgc3RvcmVkVmFsdWUgPSBuZXh0U3RhdGU7XG5cbiAgICAgICAgICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBnZXRTdG9yYWdlS2V5KGtleSwgdGhpcy5fb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmIChrZXkgIT09IERFRkFVTFRfU1RBVEVfS0VZKSB7XG4gICAgICAgICAgICAgIHN0b3JlZFZhbHVlID0gZ2V0VmFsdWUobmV4dFN0YXRlLCBrZXkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdTdG9yZWRWYWx1ZSA9IHRoaXMuX29wdGlvbnMuYmVmb3JlU2VyaWFsaXplIShzdG9yZWRWYWx1ZSwga2V5KTtcbiAgICAgICAgICAgICAgZW5naW5lLnNldEl0ZW0oc3RvcmFnZUtleSwgdGhpcy5fb3B0aW9ucy5zZXJpYWxpemUhKG5ld1N0b3JlZFZhbHVlKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAgICAgICAgICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIGVycm9yICYmXG4gICAgICAgICAgICAgICAgICAoZXJyb3IubmFtZSA9PT0gJ1F1b3RhRXhjZWVkZWRFcnJvcicgfHxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IubmFtZSA9PT0gJ05TX0VSUk9SX0RPTV9RVU9UQV9SRUFDSEVEJylcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgJHtzdG9yYWdlS2V5fSBzdG9yZSB2YWx1ZSBleGNlZWRzIHRoZSBicm93c2VyIHN0b3JhZ2UgcXVvdGE6IGAsXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlZFZhbHVlXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRXJyb3Igb2N1cnJlZCB3aGlsZSBzZXJpYWxpemluZyB0aGUgJHtzdG9yYWdlS2V5fSBzdG9yZSB2YWx1ZSwgdmFsdWUgbm90IHVwZGF0ZWQsIHRoZSB2YWx1ZSBvYnRhaW5lZCBmcm9tIHRoZSBzdG9yZTogYCxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgRE9UID0gJy4nO1xuIl19
|
package/esm2015/src/symbols.js
CHANGED
|
@@ -1,93 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
1
|
import { InjectionToken } from '@angular/core';
|
|
6
|
-
|
|
7
|
-
const StorageOption = {
|
|
8
|
-
LocalStorage: 0,
|
|
9
|
-
SessionStorage: 1,
|
|
10
|
-
};
|
|
11
|
-
export { StorageOption };
|
|
12
|
-
/**
|
|
13
|
-
* @record
|
|
14
|
-
*/
|
|
15
|
-
export function NgxsStoragePluginOptions() { }
|
|
16
|
-
if (false) {
|
|
17
|
-
/**
|
|
18
|
-
* Key for the state slice to store in the storage engine.
|
|
19
|
-
* @type {?|undefined}
|
|
20
|
-
*/
|
|
21
|
-
NgxsStoragePluginOptions.prototype.key;
|
|
22
|
-
/**
|
|
23
|
-
* Storage engine to use. Deaults to localStorage but can provide
|
|
24
|
-
*
|
|
25
|
-
* sessionStorage or custom implementation of the StorageEngine interface
|
|
26
|
-
* @type {?|undefined}
|
|
27
|
-
*/
|
|
28
|
-
NgxsStoragePluginOptions.prototype.storage;
|
|
29
|
-
/**
|
|
30
|
-
* Migration strategies.
|
|
31
|
-
* @type {?|undefined}
|
|
32
|
-
*/
|
|
33
|
-
NgxsStoragePluginOptions.prototype.migrations;
|
|
34
|
-
/**
|
|
35
|
-
* Serailizer for the object before its pushed into the engine.
|
|
36
|
-
* @param {?} obj
|
|
37
|
-
* @return {?}
|
|
38
|
-
*/
|
|
39
|
-
NgxsStoragePluginOptions.prototype.serialize = function (obj) { };
|
|
40
|
-
/**
|
|
41
|
-
* Deserializer for the object before its pulled out of the engine.
|
|
42
|
-
* @param {?} obj
|
|
43
|
-
* @return {?}
|
|
44
|
-
*/
|
|
45
|
-
NgxsStoragePluginOptions.prototype.deserialize = function (obj) { };
|
|
46
|
-
/**
|
|
47
|
-
* Method to alter object before serialization.
|
|
48
|
-
* @param {?} obj
|
|
49
|
-
* @param {?} key
|
|
50
|
-
* @return {?}
|
|
51
|
-
*/
|
|
52
|
-
NgxsStoragePluginOptions.prototype.beforeSerialize = function (obj, key) { };
|
|
53
|
-
/**
|
|
54
|
-
* Method to alter object after deserialization.
|
|
55
|
-
* @param {?} obj
|
|
56
|
-
* @param {?} key
|
|
57
|
-
* @return {?}
|
|
58
|
-
*/
|
|
59
|
-
NgxsStoragePluginOptions.prototype.afterDeserialize = function (obj, key) { };
|
|
60
|
-
}
|
|
61
|
-
/** @type {?} */
|
|
62
|
-
export const NGXS_STORAGE_PLUGIN_OPTIONS = new InjectionToken('NGXS_STORAGE_PLUGIN_OPTION');
|
|
63
|
-
/** @type {?} */
|
|
2
|
+
export const NGXS_STORAGE_PLUGIN_OPTIONS = new InjectionToken('NGXS_STORAGE_PLUGIN_OPTIONS');
|
|
64
3
|
export const STORAGE_ENGINE = new InjectionToken('STORAGE_ENGINE');
|
|
65
|
-
|
|
66
|
-
* @record
|
|
67
|
-
*/
|
|
68
|
-
export function StorageEngine() { }
|
|
69
|
-
if (false) {
|
|
70
|
-
/** @type {?} */
|
|
71
|
-
StorageEngine.prototype.length;
|
|
72
|
-
/**
|
|
73
|
-
* @param {?} key
|
|
74
|
-
* @return {?}
|
|
75
|
-
*/
|
|
76
|
-
StorageEngine.prototype.getItem = function (key) { };
|
|
77
|
-
/**
|
|
78
|
-
* @param {?} key
|
|
79
|
-
* @param {?} val
|
|
80
|
-
* @return {?}
|
|
81
|
-
*/
|
|
82
|
-
StorageEngine.prototype.setItem = function (key, val) { };
|
|
83
|
-
/**
|
|
84
|
-
* @param {?} key
|
|
85
|
-
* @return {?}
|
|
86
|
-
*/
|
|
87
|
-
StorageEngine.prototype.removeItem = function (key) { };
|
|
88
|
-
/**
|
|
89
|
-
* @return {?}
|
|
90
|
-
*/
|
|
91
|
-
StorageEngine.prototype.clear = function () { };
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JhZ2UtcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7OztJQUs3QyxlQUFZO0lBQ1osaUJBQWM7Ozs7OztBQUdoQiw4Q0F5REM7Ozs7OztJQXJEQyx1Q0FBNkI7Ozs7Ozs7SUFPN0IsMkNBQXdCOzs7OztJQUt4Qiw4Q0FvQkk7Ozs7OztJQUtKLGtFQUE2Qjs7Ozs7O0lBSzdCLG9FQUE0Qjs7Ozs7OztJQUs1Qiw2RUFBNkM7Ozs7Ozs7SUFLN0MsOEVBQThDOzs7QUFHaEQsTUFBTSxPQUFPLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFDLDRCQUE0QixDQUFDOztBQUUzRixNQUFNLE9BQU8sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLGdCQUFnQixDQUFDOzs7O0FBRWxFLG1DQU1DOzs7SUFMQywrQkFBd0I7Ozs7O0lBQ3hCLHFEQUEwQjs7Ozs7O0lBQzFCLDBEQUFxQzs7Ozs7SUFDckMsd0RBQThCOzs7O0lBQzlCLGdEQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJy4vaW50ZXJuYWxzJztcblxuZXhwb3J0IGNvbnN0IGVudW0gU3RvcmFnZU9wdGlvbiB7XG4gIExvY2FsU3RvcmFnZSxcbiAgU2Vzc2lvblN0b3JhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3hzU3RvcmFnZVBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogS2V5IGZvciB0aGUgc3RhdGUgc2xpY2UgdG8gc3RvcmUgaW4gdGhlIHN0b3JhZ2UgZW5naW5lLlxuICAgKi9cbiAga2V5PzogdW5kZWZpbmVkIHwgU3RvcmFnZUtleTtcblxuICAvKipcbiAgICogU3RvcmFnZSBlbmdpbmUgdG8gdXNlLiBEZWF1bHRzIHRvIGxvY2FsU3RvcmFnZSBidXQgY2FuIHByb3ZpZGVcbiAgICpcbiAgICogc2Vzc2lvblN0b3JhZ2Ugb3IgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTdG9yYWdlRW5naW5lIGludGVyZmFjZVxuICAgKi9cbiAgc3RvcmFnZT86IFN0b3JhZ2VPcHRpb247XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGlvbiBzdHJhdGVnaWVzLlxuICAgKi9cbiAgbWlncmF0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBWZXJzaW9uIHRvIGtleSBvZmYuXG4gICAgICovXG4gICAgdmVyc2lvbjogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIG1pZ3JhdGUgdGhlIHByZXZpb3VzIHN0YXRlLlxuICAgICAqL1xuICAgIG1pZ3JhdGU6IChzdGF0ZTogYW55KSA9PiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBLZXkgdG8gbWlncmF0ZS5cbiAgICAgKi9cbiAgICBrZXk/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBLZXkgZm9yIHRoZSB2ZXJzaW9uLiBEZWZhdWx0cyB0byAndmVyc2lvbicuXG4gICAgICovXG4gICAgdmVyc2lvbktleT86IHN0cmluZztcbiAgfVtdO1xuXG4gIC8qKlxuICAgKiBTZXJhaWxpemVyIGZvciB0aGUgb2JqZWN0IGJlZm9yZSBpdHMgcHVzaGVkIGludG8gdGhlIGVuZ2luZS5cbiAgICovXG4gIHNlcmlhbGl6ZT8ob2JqOiBhbnkpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplciBmb3IgdGhlIG9iamVjdCBiZWZvcmUgaXRzIHB1bGxlZCBvdXQgb2YgdGhlIGVuZ2luZS5cbiAgICovXG4gIGRlc2VyaWFsaXplPyhvYmo6IGFueSk6IGFueTtcblxuICAvKipcbiAgICogTWV0aG9kIHRvIGFsdGVyIG9iamVjdCBiZWZvcmUgc2VyaWFsaXphdGlvbi5cbiAgICovXG4gIGJlZm9yZVNlcmlhbGl6ZT8ob2JqOiBhbnksIGtleTogc3RyaW5nKTogYW55O1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gYWx0ZXIgb2JqZWN0IGFmdGVyIGRlc2VyaWFsaXphdGlvbi5cbiAgICovXG4gIGFmdGVyRGVzZXJpYWxpemU/KG9iajogYW55LCBrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IE5HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignTkdYU19TVE9SQUdFX1BMVUdJTl9PUFRJT04nKTtcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfRU5HSU5FID0gbmV3IEluamVjdGlvblRva2VuKCdTVE9SQUdFX0VOR0lORScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VFbmdpbmUge1xuICByZWFkb25seSBsZW5ndGg6IG51bWJlcjtcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IGFueTtcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsOiBhbnkpOiB2b2lkO1xuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZDtcbiAgY2xlYXIoKTogdm9pZDtcbn1cbiJdfQ==
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JhZ2UtcGx1Z2luL3NyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUEyRS9DLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFnQixnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJy4vaW50ZXJuYWxzL3N0b3JhZ2Uta2V5JztcblxuZXhwb3J0IGNvbnN0IGVudW0gU3RvcmFnZU9wdGlvbiB7XG4gIExvY2FsU3RvcmFnZSxcbiAgU2Vzc2lvblN0b3JhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3hzU3RvcmFnZVBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogS2V5IGZvciB0aGUgc3RhdGUgc2xpY2UgdG8gc3RvcmUgaW4gdGhlIHN0b3JhZ2UgZW5naW5lLlxuICAgKi9cbiAga2V5PzogdW5kZWZpbmVkIHwgU3RvcmFnZUtleSB8IFN0b3JhZ2VLZXlbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBpcyB1c2VkIHRvIHByZWZpeCB0aGUga2V5IGZvciB0aGUgc3RhdGUgc2xpY2UuIFRoaXMgaXNcbiAgICogbmVjZXNzYXJ5IHdoZW4gcnVubmluZyBtaWNybyBmcm9udGVuZCBhcHBsaWNhdGlvbnMgd2hpY2ggdXNlIHN0b3JhZ2UgcGx1Z2luLlxuICAgKiBUaGUgbmFtZXNwYWNlIHdpbGwgZWxpbWluYXRlIHRoZSBjb25mbGljdCBiZXR3ZWVuIGtleXMgdGhhdCBtaWdodCBvdmVybGFwLlxuICAgKi9cbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdG9yYWdlIGVuZ2luZSB0byB1c2UuIERlYXVsdHMgdG8gbG9jYWxTdG9yYWdlIGJ1dCBjYW4gcHJvdmlkZVxuICAgKlxuICAgKiBzZXNzaW9uU3RvcmFnZSBvciBjdXN0b20gaW1wbGVtZW50YXRpb24gb2YgdGhlIFN0b3JhZ2VFbmdpbmUgaW50ZXJmYWNlXG4gICAqL1xuICBzdG9yYWdlPzogU3RvcmFnZU9wdGlvbjtcblxuICAvKipcbiAgICogTWlncmF0aW9uIHN0cmF0ZWdpZXMuXG4gICAqL1xuICBtaWdyYXRpb25zPzoge1xuICAgIC8qKlxuICAgICAqIFZlcnNpb24gdG8ga2V5IG9mZi5cbiAgICAgKi9cbiAgICB2ZXJzaW9uOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gbWlncmF0ZSB0aGUgcHJldmlvdXMgc3RhdGUuXG4gICAgICovXG4gICAgbWlncmF0ZTogKHN0YXRlOiBhbnkpID0+IGFueTtcblxuICAgIC8qKlxuICAgICAqIEtleSB0byBtaWdyYXRlLlxuICAgICAqL1xuICAgIGtleT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEtleSBmb3IgdGhlIHZlcnNpb24uIERlZmF1bHRzIHRvICd2ZXJzaW9uJy5cbiAgICAgKi9cbiAgICB2ZXJzaW9uS2V5Pzogc3RyaW5nO1xuICB9W107XG5cbiAgLyoqXG4gICAqIFNlcmFpbGl6ZXIgZm9yIHRoZSBvYmplY3QgYmVmb3JlIGl0cyBwdXNoZWQgaW50byB0aGUgZW5naW5lLlxuICAgKi9cbiAgc2VyaWFsaXplPyhvYmo6IGFueSk6IHN0cmluZztcblxuICAvKipcbiAgICogRGVzZXJpYWxpemVyIGZvciB0aGUgb2JqZWN0IGJlZm9yZSBpdHMgcHVsbGVkIG91dCBvZiB0aGUgZW5naW5lLlxuICAgKi9cbiAgZGVzZXJpYWxpemU/KG9iajogYW55KTogYW55O1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gYWx0ZXIgb2JqZWN0IGJlZm9yZSBzZXJpYWxpemF0aW9uLlxuICAgKi9cbiAgYmVmb3JlU2VyaWFsaXplPyhvYmo6IGFueSwga2V5OiBzdHJpbmcpOiBhbnk7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBhbHRlciBvYmplY3QgYWZ0ZXIgZGVzZXJpYWxpemF0aW9uLlxuICAgKi9cbiAgYWZ0ZXJEZXNlcmlhbGl6ZT8ob2JqOiBhbnksIGtleTogc3RyaW5nKTogYW55O1xufVxuXG5leHBvcnQgY29uc3QgTkdYU19TVE9SQUdFX1BMVUdJTl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdOR1hTX1NUT1JBR0VfUExVR0lOX09QVElPTlMnKTtcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfRU5HSU5FID0gbmV3IEluamVjdGlvblRva2VuPFN0b3JhZ2VFbmdpbmU+KCdTVE9SQUdFX0VOR0lORScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VFbmdpbmUge1xuICByZWFkb25seSBsZW5ndGg6IG51bWJlcjtcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IGFueTtcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsOiBhbnkpOiB2b2lkO1xuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZDtcbiAgY2xlYXIoKTogdm9pZDtcbn1cbiJdfQ==
|