@ngxs/storage-plugin 3.7.4 → 3.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/bundles/ngxs-storage-plugin.umd.js +429 -381
- package/bundles/ngxs-storage-plugin.umd.js.map +1 -1
- package/bundles/ngxs-storage-plugin.umd.min.js +1 -1
- package/bundles/ngxs-storage-plugin.umd.min.js.map +1 -1
- package/esm2015/index.js +9 -9
- package/esm2015/ngxs-storage-plugin.js +10 -10
- package/esm2015/src/internals.js +76 -76
- package/esm2015/src/public_api.js +8 -8
- package/esm2015/src/storage.module.js +47 -47
- package/esm2015/src/storage.plugin.js +200 -152
- package/esm2015/src/symbols.js +93 -93
- package/esm5/index.js +9 -9
- package/esm5/ngxs-storage-plugin.js +10 -10
- package/esm5/src/internals.js +77 -77
- package/esm5/src/public_api.js +8 -8
- package/esm5/src/storage.module.js +55 -55
- package/esm5/src/storage.plugin.js +231 -183
- package/esm5/src/symbols.js +93 -93
- package/fesm2015/ngxs-storage-plugin.js +402 -354
- package/fesm2015/ngxs-storage-plugin.js.map +1 -1
- package/fesm5/ngxs-storage-plugin.js +438 -390
- package/fesm5/ngxs-storage-plugin.js.map +1 -1
- package/index.d.ts +4 -4
- package/ngxs-storage-plugin.d.ts +6 -6
- package/ngxs-storage-plugin.metadata.json +1 -1
- package/package.json +3 -3
- package/src/internals.d.ts +15 -15
- package/src/public_api.d.ts +3 -3
- package/src/storage.module.d.ts +6 -6
- package/src/storage.plugin.d.ts +11 -9
- package/src/symbols.d.ts +64 -64
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
export { NgxsStoragePluginModule } from './storage.module';
|
|
6
|
-
export { NgxsStoragePlugin } from './storage.plugin';
|
|
7
|
-
export { NGXS_STORAGE_PLUGIN_OPTIONS, STORAGE_ENGINE } from './symbols';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
export { NgxsStoragePluginModule } from './storage.module';
|
|
6
|
+
export { NgxsStoragePlugin } from './storage.plugin';
|
|
7
|
+
export { NGXS_STORAGE_PLUGIN_OPTIONS, STORAGE_ENGINE } from './symbols';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JhZ2UtcGx1Z2luLyIsInNvdXJjZXMiOlsic3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELDREQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5neHNTdG9yYWdlUGx1Z2luTW9kdWxlIH0gZnJvbSAnLi9zdG9yYWdlLm1vZHVsZSc7XG5leHBvcnQgeyBOZ3hzU3RvcmFnZVBsdWdpbiB9IGZyb20gJy4vc3RvcmFnZS5wbHVnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zeW1ib2xzJztcbiJdfQ==
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { NgModule, PLATFORM_ID, InjectionToken } from '@angular/core';
|
|
6
|
-
import { NGXS_PLUGINS } from '@ngxs/store';
|
|
7
|
-
import { STORAGE_ENGINE, NGXS_STORAGE_PLUGIN_OPTIONS } from './symbols';
|
|
8
|
-
import { NgxsStoragePlugin } from './storage.plugin';
|
|
9
|
-
import { storageOptionsFactory, engineFactory } from './internals';
|
|
10
|
-
/** @type {?} */
|
|
11
|
-
export const USER_OPTIONS = new InjectionToken('USER_OPTIONS');
|
|
12
|
-
export class NgxsStoragePluginModule {
|
|
13
|
-
/**
|
|
14
|
-
* @param {?=} options
|
|
15
|
-
* @return {?}
|
|
16
|
-
*/
|
|
17
|
-
static forRoot(options) {
|
|
18
|
-
return {
|
|
19
|
-
ngModule: NgxsStoragePluginModule,
|
|
20
|
-
providers: [
|
|
21
|
-
{
|
|
22
|
-
provide: NGXS_PLUGINS,
|
|
23
|
-
useClass: NgxsStoragePlugin,
|
|
24
|
-
multi: true
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
provide: USER_OPTIONS,
|
|
28
|
-
useValue: options
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
provide: NGXS_STORAGE_PLUGIN_OPTIONS,
|
|
32
|
-
useFactory: storageOptionsFactory,
|
|
33
|
-
deps: [USER_OPTIONS]
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
provide: STORAGE_ENGINE,
|
|
37
|
-
useFactory: engineFactory,
|
|
38
|
-
deps: [NGXS_STORAGE_PLUGIN_OPTIONS, PLATFORM_ID]
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
NgxsStoragePluginModule.decorators = [
|
|
45
|
-
{ type: NgModule }
|
|
46
|
-
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { NgModule, PLATFORM_ID, InjectionToken } from '@angular/core';
|
|
6
|
+
import { NGXS_PLUGINS } from '@ngxs/store';
|
|
7
|
+
import { STORAGE_ENGINE, NGXS_STORAGE_PLUGIN_OPTIONS } from './symbols';
|
|
8
|
+
import { NgxsStoragePlugin } from './storage.plugin';
|
|
9
|
+
import { storageOptionsFactory, engineFactory } from './internals';
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
export const USER_OPTIONS = new InjectionToken('USER_OPTIONS');
|
|
12
|
+
export class NgxsStoragePluginModule {
|
|
13
|
+
/**
|
|
14
|
+
* @param {?=} options
|
|
15
|
+
* @return {?}
|
|
16
|
+
*/
|
|
17
|
+
static forRoot(options) {
|
|
18
|
+
return {
|
|
19
|
+
ngModule: NgxsStoragePluginModule,
|
|
20
|
+
providers: [
|
|
21
|
+
{
|
|
22
|
+
provide: NGXS_PLUGINS,
|
|
23
|
+
useClass: NgxsStoragePlugin,
|
|
24
|
+
multi: true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
provide: USER_OPTIONS,
|
|
28
|
+
useValue: options
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
provide: NGXS_STORAGE_PLUGIN_OPTIONS,
|
|
32
|
+
useFactory: storageOptionsFactory,
|
|
33
|
+
deps: [USER_OPTIONS]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
provide: STORAGE_ENGINE,
|
|
37
|
+
useFactory: engineFactory,
|
|
38
|
+
deps: [NGXS_STORAGE_PLUGIN_OPTIONS, PLATFORM_ID]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
NgxsStoragePluginModule.decorators = [
|
|
45
|
+
{ type: NgModule }
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yYWdlLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zdG9yYWdlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFFTCxjQUFjLEVBQ2QsMkJBQTJCLEVBQzVCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRW5FLE1BQU0sT0FBTyxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDO0FBRzlELE1BQU0sT0FBTyx1QkFBdUI7Ozs7O0lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQ1osT0FBa0M7UUFFbEMsT0FBTztZQUNMLFFBQVEsRUFBRSx1QkFBdUI7WUFDakMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxZQUFZO29CQUNyQixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxFQUFFLE9BQU87aUJBQ2xCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSwyQkFBMkI7b0JBQ3BDLFVBQVUsRUFBRSxxQkFBcUI7b0JBQ2pDLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDckI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLFVBQVUsRUFBRSxhQUFhO29CQUN6QixJQUFJLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxXQUFXLENBQUM7aUJBQ2pEO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBN0JGLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgUExBVEZPUk1fSUQsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR1hTX1BMVUdJTlMgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7XG4gIE5neHNTdG9yYWdlUGx1Z2luT3B0aW9ucyxcbiAgU1RPUkFHRV9FTkdJTkUsXG4gIE5HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OU1xufSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgTmd4c1N0b3JhZ2VQbHVnaW4gfSBmcm9tICcuL3N0b3JhZ2UucGx1Z2luJztcbmltcG9ydCB7IHN0b3JhZ2VPcHRpb25zRmFjdG9yeSwgZW5naW5lRmFjdG9yeSB9IGZyb20gJy4vaW50ZXJuYWxzJztcblxuZXhwb3J0IGNvbnN0IFVTRVJfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignVVNFUl9PUFRJT05TJyk7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgTmd4c1N0b3JhZ2VQbHVnaW5Nb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBvcHRpb25zPzogTmd4c1N0b3JhZ2VQbHVnaW5PcHRpb25zXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c1N0b3JhZ2VQbHVnaW5Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5neHNTdG9yYWdlUGx1Z2luTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBOR1hTX1BMVUdJTlMsXG4gICAgICAgICAgdXNlQ2xhc3M6IE5neHNTdG9yYWdlUGx1Z2luLFxuICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBVU0VSX09QVElPTlMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OUyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBzdG9yYWdlT3B0aW9uc0ZhY3RvcnksXG4gICAgICAgICAgZGVwczogW1VTRVJfT1BUSU9OU11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNUT1JBR0VfRU5HSU5FLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGVuZ2luZUZhY3RvcnksXG4gICAgICAgICAgZGVwczogW05HWFNfU1RPUkFHRV9QTFVHSU5fT1BUSU9OUywgUExBVEZPUk1fSURdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,152 +1,200 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { PLATFORM_ID, Inject, Injectable } from '@angular/core';
|
|
6
|
-
import { isPlatformServer } from '@angular/common';
|
|
7
|
-
import { setValue, getValue, InitState, UpdateState, actionMatcher } from '@ngxs/store';
|
|
8
|
-
import { tap } from 'rxjs/operators';
|
|
9
|
-
import { STORAGE_ENGINE, NGXS_STORAGE_PLUGIN_OPTIONS } from './symbols';
|
|
10
|
-
import { DEFAULT_STATE_KEY } from './internals';
|
|
11
|
-
export class NgxsStoragePlugin {
|
|
12
|
-
/**
|
|
13
|
-
* @param {?} _options
|
|
14
|
-
* @param {?} _engine
|
|
15
|
-
* @param {?} _platformId
|
|
16
|
-
*/
|
|
17
|
-
constructor(_options, _engine, _platformId) {
|
|
18
|
-
this._options = _options;
|
|
19
|
-
this._engine = _engine;
|
|
20
|
-
this._platformId = _platformId;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
/** @type {?} */
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yYWdlLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zdG9yYWdlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFFTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsYUFBYSxFQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBR0wsY0FBYyxFQUNkLDJCQUEyQixFQUM1QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFTaEQsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7O0lBQzVCLFlBQytDLFFBQWtDLEVBQy9DLE9BQXNCLEVBQ3pCLFdBQW1CO1FBRkgsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDL0MsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUMvQyxDQUFDOzs7Ozs7O0lBRUosTUFBTSxDQUFDLEtBQVUsRUFBRSxLQUFVLEVBQUUsSUFBc0I7UUFDbkQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDL0QsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNCOzs7O2NBSUssSUFBSSxHQUFHLG1CQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFZOztjQUNwQyxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQzs7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TSxHQUFHLG1CQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQUEsR0FBRyxFQUFDLEVBQUUsbUJBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUM5RDtvQkFBQyxPQUFPLENBQUMsRUFBRTt3QkFDViw4RUFBOEU7d0JBQzlFLDBFQUEwRTt3QkFDMUUsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxFQUFFOzRCQUNqRCxPQUFPLENBQUMsS0FBSyxDQUNYLHVDQUF1QyxHQUFHLHNFQUFzRSxFQUNoSCxHQUFHLENBQ0osQ0FBQzt5QkFDSDtxQkFDRjtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OztZQWxHRixVQUFVOzs7OzRDQUdOLE1BQU0sU0FBQywyQkFBMkI7NENBQ2xDLE1BQU0sU0FBQyxjQUFjO3lDQUNyQixNQUFNLFNBQUMsV0FBVzs7Ozs7OztJQUZuQixxQ0FBK0U7Ozs7O0lBQy9FLG9DQUFzRDs7Ozs7SUFDdEQsd0NBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUExBVEZPUk1fSUQsIEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBOZ3hzUGx1Z2luLFxyXG4gIHNldFZhbHVlLFxyXG4gIGdldFZhbHVlLFxyXG4gIEluaXRTdGF0ZSxcclxuICBVcGRhdGVTdGF0ZSxcclxuICBhY3Rpb25NYXRjaGVyLFxyXG4gIE5neHNOZXh0UGx1Z2luRm5cclxufSBmcm9tICdAbmd4cy9zdG9yZSc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU3RvcmFnZUVuZ2luZSxcclxuICBOZ3hzU3RvcmFnZVBsdWdpbk9wdGlvbnMsXHJcbiAgU1RPUkFHRV9FTkdJTkUsXHJcbiAgTkdYU19TVE9SQUdFX1BMVUdJTl9PUFRJT05TXHJcbn0gZnJvbSAnLi9zeW1ib2xzJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFURV9LRVkgfSBmcm9tICcuL2ludGVybmFscyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIFdpbGwgYmUgcHJvdmlkZWQgdGhyb3VnaCBUZXJzZXIgZ2xvYmFsIGRlZmluaXRpb25zIGJ5IEFuZ3VsYXIgQ0xJXHJcbiAqIGR1cmluZyB0aGUgcHJvZHVjdGlvbiBidWlsZC4gVGhpcyBpcyBob3cgQW5ndWxhciBkb2VzIHRyZWUtc2hha2luZyBpbnRlcm5hbGx5LlxyXG4gKi9cclxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW47XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOZ3hzU3RvcmFnZVBsdWdpbiBpbXBsZW1lbnRzIE5neHNQbHVnaW4ge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChOR1hTX1NUT1JBR0VfUExVR0lOX09QVElPTlMpIHByaXZhdGUgX29wdGlvbnM6IE5neHNTdG9yYWdlUGx1Z2luT3B0aW9ucyxcclxuICAgIEBJbmplY3QoU1RPUkFHRV9FTkdJTkUpIHByaXZhdGUgX2VuZ2luZTogU3RvcmFnZUVuZ2luZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgX3BsYXRmb3JtSWQ6IHN0cmluZ1xyXG4gICkge31cclxuXHJcbiAgaGFuZGxlKHN0YXRlOiBhbnksIGV2ZW50OiBhbnksIG5leHQ6IE5neHNOZXh0UGx1Z2luRm4pIHtcclxuICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtSWQpICYmIHRoaXMuX2VuZ2luZSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIGNhc3QgdG8gYHN0cmluZ1tdYCBoZXJlIGFzIHdlJ3JlIHN1cmUgdGhhdCB0aGlzIG9wdGlvbiBoYXMgYmVlblxyXG4gICAgLy8gdHJhbnNmb3JtZWQgYnkgdGhlIGBzdG9yYWdlT3B0aW9uc0ZhY3RvcnlgIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZWQgdG9rZW5cclxuICAgIGNvbnN0IGtleXMgPSB0aGlzLl9vcHRpb25zLmtleSBhcyBzdHJpbmdbXTtcclxuICAgIGNvbnN0IG1hdGNoZXMgPSBhY3Rpb25NYXRjaGVyKGV2ZW50KTtcclxuICAgIGNvbnN0IGlzSW5pdEFjdGlvbiA9IG1hdGNoZXMoSW5pdFN0YXRlKTtcclxuICAgIGNvbnN0IGlzVXBkYXRlQWN0aW9uID0gbWF0Y2hlcyhVcGRhdGVTdGF0ZSk7XHJcbiAgICBjb25zdCBpc0luaXRPclVwZGF0ZUFjdGlvbiA9IGlzSW5pdEFjdGlvbiB8fCBpc1VwZGF0ZUFjdGlvbjtcclxuICAgIGxldCBoYXNNaWdyYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoaXNJbml0T3JVcGRhdGVBY3Rpb24pIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgIC8vIFdlJ3JlIGNoZWNraW5nIHdoYXQgc3RhdGVzIGhhdmUgYmVlbiBhZGRlZCBieSBOR1hTIGFuZCBpZiBhbnkgb2YgdGhlc2Ugc3RhdGVzIHNob3VsZCBiZSBoYW5kbGVkIGJ5XHJcbiAgICAgICAgLy8gdGhlIHN0b3JhZ2UgcGx1Z2luLiBGb3IgaW5zdGFuY2UsIHdlIG9ubHkgd2FudCB0byBkZXNlcmlhbGl6ZSB0aGUgYGF1dGhgIHN0YXRlLCBOR1hTIGhhcyBhZGRlZFxyXG4gICAgICAgIC8vIHRoZSBgdXNlcmAgc3RhdGUsIHRoZSBzdG9yYWdlIHBsdWdpbiB3aWxsIGJlIHJlcnVuIGFuZCB3aWxsIGRvIHJlZHVuZGFudCBkZXNlcmlhbGl6YXRpb24uXHJcbiAgICAgICAgaWYgKGlzVXBkYXRlQWN0aW9uICYmIGV2ZW50LmFkZGVkU3RhdGVzICYmICFldmVudC5hZGRlZFN0YXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGlzTWFzdGVyID0ga2V5ID09PSBERUZBVUxUX1NUQVRFX0tFWTtcclxuICAgICAgICBsZXQgdmFsOiBhbnkgPSB0aGlzLl9lbmdpbmUuZ2V0SXRlbShrZXkhKTtcclxuXHJcbiAgICAgICAgaWYgKHZhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsICE9IG51bGwpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX29wdGlvbnMuZGVzZXJpYWxpemUhKHZhbCk7XHJcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuX29wdGlvbnMuYWZ0ZXJEZXNlcmlhbGl6ZSEobmV3VmFsLCBrZXkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgRXJyb3Igb2N1cnJlZCB3aGlsZSBkZXNlcmlhbGl6aW5nIHRoZSAke2tleX0gc3RvcmUgdmFsdWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBvYmplY3QsIHRoZSB2YWx1ZSBvYnRhaW5lZCBmcm9tIHRoZSBzdG9yZTogYCxcclxuICAgICAgICAgICAgICAgIHZhbFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFsID0ge307XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubWlncmF0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zLm1pZ3JhdGlvbnMuZm9yRWFjaChzdHJhdGVneSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbk1hdGNoID1cclxuICAgICAgICAgICAgICAgIHN0cmF0ZWd5LnZlcnNpb24gPT09IGdldFZhbHVlKHZhbCwgc3RyYXRlZ3kudmVyc2lvbktleSB8fCAndmVyc2lvbicpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGtleU1hdGNoID0gKCFzdHJhdGVneS5rZXkgJiYgaXNNYXN0ZXIpIHx8IHN0cmF0ZWd5LmtleSA9PT0ga2V5O1xyXG4gICAgICAgICAgICAgIGlmICh2ZXJzaW9uTWF0Y2ggJiYga2V5TWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgIHZhbCA9IHN0cmF0ZWd5Lm1pZ3JhdGUodmFsKTtcclxuICAgICAgICAgICAgICAgIGhhc01pZ3JhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIWlzTWFzdGVyKSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0gc2V0VmFsdWUoc3RhdGUsIGtleSEsIHZhbCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IHsgLi4uc3RhdGUsIC4uLnZhbCB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXh0KHN0YXRlLCBldmVudCkucGlwZShcclxuICAgICAgdGFwKG5leHRTdGF0ZSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0luaXRPclVwZGF0ZUFjdGlvbiB8fCAoaXNJbml0T3JVcGRhdGVBY3Rpb24gJiYgaGFzTWlncmF0aW9uKSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gbmV4dFN0YXRlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGtleSAhPT0gREVGQVVMVF9TVEFURV9LRVkpIHtcclxuICAgICAgICAgICAgICB2YWwgPSBnZXRWYWx1ZShuZXh0U3RhdGUsIGtleSEpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX29wdGlvbnMuYmVmb3JlU2VyaWFsaXplISh2YWwsIGtleSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fZW5naW5lLnNldEl0ZW0oa2V5ISwgdGhpcy5fb3B0aW9ucy5zZXJpYWxpemUhKG5ld1ZhbCkpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgLy8gQ2FyZXRha2VyIG5vdGU6IHdlIGhhdmUgc3RpbGwgbGVmdCB0aGUgYHR5cGVvZmAgY29uZGl0aW9uIGluIG9yZGVyIHRvIGF2b2lkXHJcbiAgICAgICAgICAgICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgICBgRXJyb3Igb2N1cnJlZCB3aGlsZSBzZXJpYWxpemluZyB0aGUgJHtrZXl9IHN0b3JlIHZhbHVlLCB2YWx1ZSBub3QgdXBkYXRlZCwgdGhlIHZhbHVlIG9idGFpbmVkIGZyb20gdGhlIHN0b3JlOiBgLFxyXG4gICAgICAgICAgICAgICAgICB2YWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { PLATFORM_ID, Inject, Injectable } from '@angular/core';
|
|
6
|
+
import { isPlatformServer } from '@angular/common';
|
|
7
|
+
import { setValue, getValue, InitState, UpdateState, actionMatcher } from '@ngxs/store';
|
|
8
|
+
import { tap } from 'rxjs/operators';
|
|
9
|
+
import { STORAGE_ENGINE, NGXS_STORAGE_PLUGIN_OPTIONS } from './symbols';
|
|
10
|
+
import { DEFAULT_STATE_KEY } from './internals';
|
|
11
|
+
export class NgxsStoragePlugin {
|
|
12
|
+
/**
|
|
13
|
+
* @param {?} _options
|
|
14
|
+
* @param {?} _engine
|
|
15
|
+
* @param {?} _platformId
|
|
16
|
+
*/
|
|
17
|
+
constructor(_options, _engine, _platformId) {
|
|
18
|
+
this._options = _options;
|
|
19
|
+
this._engine = _engine;
|
|
20
|
+
this._platformId = _platformId;
|
|
21
|
+
// We cast to `string[]` here as we're sure that this option has been
|
|
22
|
+
// transformed by the `storageOptionsFactory` function that provided token.
|
|
23
|
+
this._keys = (/** @type {?} */ (this._options.key));
|
|
24
|
+
// We default to `[DEFAULT_STATE_KEY]` if the user explicitly does not provide the `key` option.
|
|
25
|
+
this._usesDefaultStateKey = this._keys.length === 1 && this._keys[0] === DEFAULT_STATE_KEY;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @param {?} state
|
|
29
|
+
* @param {?} event
|
|
30
|
+
* @param {?} next
|
|
31
|
+
* @return {?}
|
|
32
|
+
*/
|
|
33
|
+
handle(state, event, next) {
|
|
34
|
+
if (isPlatformServer(this._platformId) && this._engine === null) {
|
|
35
|
+
return next(state, event);
|
|
36
|
+
}
|
|
37
|
+
/** @type {?} */
|
|
38
|
+
const matches = actionMatcher(event);
|
|
39
|
+
/** @type {?} */
|
|
40
|
+
const isInitAction = matches(InitState);
|
|
41
|
+
/** @type {?} */
|
|
42
|
+
const isUpdateAction = matches(UpdateState);
|
|
43
|
+
/** @type {?} */
|
|
44
|
+
const isInitOrUpdateAction = isInitAction || isUpdateAction;
|
|
45
|
+
/** @type {?} */
|
|
46
|
+
let hasMigration = false;
|
|
47
|
+
if (isInitOrUpdateAction) {
|
|
48
|
+
/** @type {?} */
|
|
49
|
+
const addedStates = isUpdateAction && event.addedStates;
|
|
50
|
+
for (const key of this._keys) {
|
|
51
|
+
// We're checking what states have been added by NGXS and if any of these states should be handled by
|
|
52
|
+
// the storage plugin. For instance, we only want to deserialize the `auth` state, NGXS has added
|
|
53
|
+
// the `user` state, the storage plugin will be rerun and will do redundant deserialization.
|
|
54
|
+
// `usesDefaultStateKey` is necessary to check since `event.addedStates` never contains `@@STATE`.
|
|
55
|
+
if (!this._usesDefaultStateKey && addedStates && !addedStates.hasOwnProperty(key)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
/** @type {?} */
|
|
59
|
+
let storedValue = this._engine.getItem((/** @type {?} */ (key)));
|
|
60
|
+
if (storedValue !== 'undefined' && storedValue != null) {
|
|
61
|
+
try {
|
|
62
|
+
/** @type {?} */
|
|
63
|
+
const newVal = (/** @type {?} */ (this._options.deserialize))(storedValue);
|
|
64
|
+
storedValue = (/** @type {?} */ (this._options.afterDeserialize))(newVal, key);
|
|
65
|
+
}
|
|
66
|
+
catch (_a) {
|
|
67
|
+
// Caretaker note: we have still left the `typeof` condition in order to avoid
|
|
68
|
+
// creating a breaking change for projects that still use the View Engine.
|
|
69
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
70
|
+
console.error(`Error ocurred while deserializing the ${key} store value, falling back to empty object, the value obtained from the store: `, storedValue);
|
|
71
|
+
}
|
|
72
|
+
storedValue = {};
|
|
73
|
+
}
|
|
74
|
+
if (this._options.migrations) {
|
|
75
|
+
this._options.migrations.forEach((/**
|
|
76
|
+
* @param {?} strategy
|
|
77
|
+
* @return {?}
|
|
78
|
+
*/
|
|
79
|
+
strategy => {
|
|
80
|
+
/** @type {?} */
|
|
81
|
+
const versionMatch = strategy.version === getValue(storedValue, strategy.versionKey || 'version');
|
|
82
|
+
/** @type {?} */
|
|
83
|
+
const keyMatch = (!strategy.key && this._usesDefaultStateKey) || strategy.key === key;
|
|
84
|
+
if (versionMatch && keyMatch) {
|
|
85
|
+
storedValue = strategy.migrate(storedValue);
|
|
86
|
+
hasMigration = true;
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
if (!this._usesDefaultStateKey) {
|
|
91
|
+
state = setValue(state, (/** @type {?} */ (key)), storedValue);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// The `UpdateState` action is dispatched whenever the feature state is added.
|
|
95
|
+
// The below condition is met only when the `UpdateState` is dispatched.
|
|
96
|
+
// Let's assume that we have 2 states `counter` and `@ngxs/router-plugin` state.
|
|
97
|
+
// `CounterState` is provided on the root level when calling `NgxsModule.forRoot()`
|
|
98
|
+
// and `@ngxs/router-plugin` is provided as a feature state.
|
|
99
|
+
// The storage plugin may save the `counter` state value as `10` before.
|
|
100
|
+
// The `CounterState` may implement the `ngxsOnInit` hook and call `ctx.setState(999)`.
|
|
101
|
+
// The storage plugin will re-hydrate the whole state when the `RouterState` is registered,
|
|
102
|
+
// and the `counter` state will again equal `10` (not `999`).
|
|
103
|
+
if (storedValue && addedStates && Object.keys(addedStates).length > 0) {
|
|
104
|
+
storedValue = Object.keys(addedStates).reduce((/**
|
|
105
|
+
* @param {?} accumulator
|
|
106
|
+
* @param {?} addedState
|
|
107
|
+
* @return {?}
|
|
108
|
+
*/
|
|
109
|
+
(accumulator, addedState) => {
|
|
110
|
+
// The `storedValue` may equal the whole state (when the default state key is used).
|
|
111
|
+
// If `addedStates` contains only `router` then we want to merge the state only
|
|
112
|
+
// with the `router` value.
|
|
113
|
+
// Let's assume that the `storedValue` is an object:
|
|
114
|
+
// `{ counter: 10, router: {...} }`
|
|
115
|
+
// This will pick only the `router` object from the `storedValue` and `counter`
|
|
116
|
+
// state will not be re-hydrated unnecessary.
|
|
117
|
+
if (storedValue.hasOwnProperty(addedState)) {
|
|
118
|
+
accumulator[addedState] = storedValue[addedState];
|
|
119
|
+
}
|
|
120
|
+
return accumulator;
|
|
121
|
+
}), (/** @type {?} */ ({})));
|
|
122
|
+
}
|
|
123
|
+
state = Object.assign({}, state, storedValue);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return next(state, event).pipe(tap((/**
|
|
129
|
+
* @param {?} nextState
|
|
130
|
+
* @return {?}
|
|
131
|
+
*/
|
|
132
|
+
nextState => {
|
|
133
|
+
if (!isInitOrUpdateAction || (isInitOrUpdateAction && hasMigration)) {
|
|
134
|
+
for (const key of this._keys) {
|
|
135
|
+
/** @type {?} */
|
|
136
|
+
let val = nextState;
|
|
137
|
+
if (key !== DEFAULT_STATE_KEY) {
|
|
138
|
+
val = getValue(nextState, (/** @type {?} */ (key)));
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
/** @type {?} */
|
|
142
|
+
const newVal = (/** @type {?} */ (this._options.beforeSerialize))(val, key);
|
|
143
|
+
this._engine.setItem((/** @type {?} */ (key)), (/** @type {?} */ (this._options.serialize))(newVal));
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
// Caretaker note: we have still left the `typeof` condition in order to avoid
|
|
147
|
+
// creating a breaking change for projects that still use the View Engine.
|
|
148
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
149
|
+
if (error &&
|
|
150
|
+
(error.name === 'QuotaExceededError' ||
|
|
151
|
+
error.name === 'NS_ERROR_DOM_QUOTA_REACHED')) {
|
|
152
|
+
console.error(`The ${key} store value exceeds the browser storage quota: `, val);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
console.error(`Error ocurred while serializing the ${key} store value, value not updated, the value obtained from the store: `, val);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
})));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
NgxsStoragePlugin.decorators = [
|
|
165
|
+
{ type: Injectable }
|
|
166
|
+
];
|
|
167
|
+
/** @nocollapse */
|
|
168
|
+
NgxsStoragePlugin.ctorParameters = () => [
|
|
169
|
+
{ type: undefined, decorators: [{ type: Inject, args: [NGXS_STORAGE_PLUGIN_OPTIONS,] }] },
|
|
170
|
+
{ type: undefined, decorators: [{ type: Inject, args: [STORAGE_ENGINE,] }] },
|
|
171
|
+
{ type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
172
|
+
];
|
|
173
|
+
if (false) {
|
|
174
|
+
/**
|
|
175
|
+
* @type {?}
|
|
176
|
+
* @private
|
|
177
|
+
*/
|
|
178
|
+
NgxsStoragePlugin.prototype._keys;
|
|
179
|
+
/**
|
|
180
|
+
* @type {?}
|
|
181
|
+
* @private
|
|
182
|
+
*/
|
|
183
|
+
NgxsStoragePlugin.prototype._usesDefaultStateKey;
|
|
184
|
+
/**
|
|
185
|
+
* @type {?}
|
|
186
|
+
* @private
|
|
187
|
+
*/
|
|
188
|
+
NgxsStoragePlugin.prototype._options;
|
|
189
|
+
/**
|
|
190
|
+
* @type {?}
|
|
191
|
+
* @private
|
|
192
|
+
*/
|
|
193
|
+
NgxsStoragePlugin.prototype._engine;
|
|
194
|
+
/**
|
|
195
|
+
* @type {?}
|
|
196
|
+
* @private
|
|
197
|
+
*/
|
|
198
|
+
NgxsStoragePlugin.prototype._platformId;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yYWdlLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9zdG9yYWdlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsYUFBYSxFQUVkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBR0wsY0FBYyxFQUNkLDJCQUEyQixFQUM1QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFTaEQsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7O0lBUTVCLFlBQytDLFFBQWtDLEVBQy9DLE9BQXNCLEVBQ3pCLFdBQW1CO1FBRkgsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDL0MsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTs7O1FBUjFDLFVBQUssR0FBRyxtQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBWSxDQUFDOztRQUV0Qyx5QkFBb0IsR0FDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUM7SUFNOUQsQ0FBQzs7Ozs7OztJQUVKLE1BQU0sQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLElBQXNCO1FBQ25ELElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FB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USxDQUFDLFNBQVMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQzlEO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNkLDhFQUE4RTt3QkFDOUUsMEVBQTBFO3dCQUMxRSxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLEVBQUU7NEJBQ2pELElBQ0UsS0FBSztnQ0FDTCxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssb0JBQW9CO29DQUNsQyxLQUFLLENBQUMsSUFBSSxLQUFLLDRCQUE0QixDQUFDLEVBQzlDO2dDQUNBLE9BQU8sQ0FBQyxLQUFLLENBQ1gsT0FBTyxHQUFHLGtEQUFrRCxFQUM1RCxHQUFHLENBQ0osQ0FBQzs2QkFDSDtpQ0FBTTtnQ0FDTCxPQUFPLENBQUMsS0FBSyxDQUNYLHVDQUF1QyxHQUFHLHNFQUFzRSxFQUNoSCxHQUFHLENBQ0osQ0FBQzs2QkFDSDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OztZQTdJRixVQUFVOzs7OzRDQVVOLE1BQU0sU0FBQywyQkFBMkI7NENBQ2xDLE1BQU0sU0FBQyxjQUFjO3lDQUNyQixNQUFNLFNBQUMsV0FBVzs7Ozs7OztJQVJyQixrQ0FBOEM7Ozs7O0lBRTlDLGlEQUNpRTs7Ozs7SUFHL0QscUNBQStFOzs7OztJQUMvRSxvQ0FBc0Q7Ozs7O0lBQ3RELHdDQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBMQVRGT1JNX0lELCBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGxhaW5PYmplY3QgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuaW1wb3J0IHtcbiAgTmd4c1BsdWdpbixcbiAgc2V0VmFsdWUsXG4gIGdldFZhbHVlLFxuICBJbml0U3RhdGUsXG4gIFVwZGF0ZVN0YXRlLFxuICBhY3Rpb25NYXRjaGVyLFxuICBOZ3hzTmV4dFBsdWdpbkZuXG59IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU3RvcmFnZUVuZ2luZSxcbiAgTmd4c1N0b3JhZ2VQbHVnaW5PcHRpb25zLFxuICBTVE9SQUdFX0VOR0lORSxcbiAgTkdYU19TVE9SQUdFX1BMVUdJTl9PUFRJT05TXG59IGZyb20gJy4vc3ltYm9scyc7XG5pbXBvcnQgeyBERUZBVUxUX1NUQVRFX0tFWSB9IGZyb20gJy4vaW50ZXJuYWxzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gV2lsbCBiZSBwcm92aWRlZCB0aHJvdWdoIFRlcnNlciBnbG9iYWwgZGVmaW5pdGlvbnMgYnkgQW5ndWxhciBDTElcbiAqIGR1cmluZyB0aGUgcHJvZHVjdGlvbiBidWlsZC4gVGhpcyBpcyBob3cgQW5ndWxhciBkb2VzIHRyZWUtc2hha2luZyBpbnRlcm5hbGx5LlxuICovXG5kZWNsYXJlIGNvbnN0IG5nRGV2TW9kZTogYm9vbGVhbjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neHNTdG9yYWdlUGx1Z2luIGltcGxlbWVudHMgTmd4c1BsdWdpbiB7XG4gIC8vIFdlIGNhc3QgdG8gYHN0cmluZ1tdYCBoZXJlIGFzIHdlJ3JlIHN1cmUgdGhhdCB0aGlzIG9wdGlvbiBoYXMgYmVlblxuICAvLyB0cmFuc2Zvcm1lZCBieSB0aGUgYHN0b3JhZ2VPcHRpb25zRmFjdG9yeWAgZnVuY3Rpb24gdGhhdCBwcm92aWRlZCB0b2tlbi5cbiAgcHJpdmF0ZSBfa2V5cyA9IHRoaXMuX29wdGlvbnMua2V5IGFzIHN0cmluZ1tdO1xuICAvLyBXZSBkZWZhdWx0IHRvIGBbREVGQVVMVF9TVEFURV9LRVldYCBpZiB0aGUgdXNlciBleHBsaWNpdGx5IGRvZXMgbm90IHByb3ZpZGUgdGhlIGBrZXlgIG9wdGlvbi5cbiAgcHJpdmF0ZSBfdXNlc0RlZmF1bHRTdGF0ZUtleSA9XG4gICAgdGhpcy5fa2V5cy5sZW5ndGggPT09IDEgJiYgdGhpcy5fa2V5c1swXSA9PT0gREVGQVVMVF9TVEFURV9LRVk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOR1hTX1NUT1JBR0VfUExVR0lOX09QVElPTlMpIHByaXZhdGUgX29wdGlvbnM6IE5neHNTdG9yYWdlUGx1Z2luT3B0aW9ucyxcbiAgICBASW5qZWN0KFNUT1JBR0VfRU5HSU5FKSBwcml2YXRlIF9lbmdpbmU6IFN0b3JhZ2VFbmdpbmUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm1JZDogc3RyaW5nXG4gICkge31cblxuICBoYW5kbGUoc3RhdGU6IGFueSwgZXZlbnQ6IGFueSwgbmV4dDogTmd4c05leHRQbHVnaW5Gbikge1xuICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtSWQpICYmIHRoaXMuX2VuZ2luZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5leHQoc3RhdGUsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaGVzID0gYWN0aW9uTWF0Y2hlcihldmVudCk7XG4gICAgY29uc3QgaXNJbml0QWN0aW9uID0gbWF0Y2hlcyhJbml0U3RhdGUpO1xuICAgIGNvbnN0IGlzVXBkYXRlQWN0aW9uID0gbWF0Y2hlcyhVcGRhdGVTdGF0ZSk7XG4gICAgY29uc3QgaXNJbml0T3JVcGRhdGVBY3Rpb24gPSBpc0luaXRBY3Rpb24gfHwgaXNVcGRhdGVBY3Rpb247XG4gICAgbGV0IGhhc01pZ3JhdGlvbiA9IGZhbHNlO1xuXG4gICAgaWYgKGlzSW5pdE9yVXBkYXRlQWN0aW9uKSB7XG4gICAgICBjb25zdCBhZGRlZFN0YXRlcyA9IGlzVXBkYXRlQWN0aW9uICYmIGV2ZW50LmFkZGVkU3RhdGVzO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLl9rZXlzKSB7XG4gICAgICAgIC8vIFdlJ3JlIGNoZWNraW5nIHdoYXQgc3RhdGVzIGhhdmUgYmVlbiBhZGRlZCBieSBOR1hTIGFuZCBpZiBhbnkgb2YgdGhlc2Ugc3RhdGVzIHNob3VsZCBiZSBoYW5kbGVkIGJ5XG4gICAgICAgIC8vIHRoZSBzdG9yYWdlIHBsdWdpbi4gRm9yIGluc3RhbmNlLCB3ZSBvbmx5IHdhbnQgdG8gZGVzZXJpYWxpemUgdGhlIGBhdXRoYCBzdGF0ZSwgTkdYUyBoYXMgYWRkZWRcbiAgICAgICAgLy8gdGhlIGB1c2VyYCBzdGF0ZSwgdGhlIHN0b3JhZ2UgcGx1Z2luIHdpbGwgYmUgcmVydW4gYW5kIHdpbGwgZG8gcmVkdW5kYW50IGRlc2VyaWFsaXphdGlvbi5cbiAgICAgICAgLy8gYHVzZXNEZWZhdWx0U3RhdGVLZXlgIGlzIG5lY2Vzc2FyeSB0byBjaGVjayBzaW5jZSBgZXZlbnQuYWRkZWRTdGF0ZXNgIG5ldmVyIGNvbnRhaW5zIGBAQFNUQVRFYC5cbiAgICAgICAgaWYgKCF0aGlzLl91c2VzRGVmYXVsdFN0YXRlS2V5ICYmIGFkZGVkU3RhdGVzICYmICFhZGRlZFN0YXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3RvcmVkVmFsdWU6IGFueSA9IHRoaXMuX2VuZ2luZS5nZXRJdGVtKGtleSEpO1xuXG4gICAgICAgIGlmIChzdG9yZWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgc3RvcmVkVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWwgPSB0aGlzLl9vcHRpb25zLmRlc2VyaWFsaXplIShzdG9yZWRWYWx1ZSk7XG4gICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IHRoaXMuX29wdGlvbnMuYWZ0ZXJEZXNlcmlhbGl6ZSEobmV3VmFsLCBrZXkpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gQ2FyZXRha2VyIG5vdGU6IHdlIGhhdmUgc3RpbGwgbGVmdCB0aGUgYHR5cGVvZmAgY29uZGl0aW9uIGluIG9yZGVyIHRvIGF2b2lkXG4gICAgICAgICAgICAvLyBjcmVhdGluZyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgcHJvamVjdHMgdGhhdCBzdGlsbCB1c2UgdGhlIFZpZXcgRW5naW5lLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIGBFcnJvciBvY3VycmVkIHdoaWxlIGRlc2VyaWFsaXppbmcgdGhlICR7a2V5fSBzdG9yZSB2YWx1ZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IG9iamVjdCwgdGhlIHZhbHVlIG9idGFpbmVkIGZyb20gdGhlIHN0b3JlOiBgLFxuICAgICAgICAgICAgICAgIHN0b3JlZFZhbHVlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zLm1pZ3JhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMubWlncmF0aW9ucy5mb3JFYWNoKHN0cmF0ZWd5ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbk1hdGNoID1cbiAgICAgICAgICAgICAgICBzdHJhdGVneS52ZXJzaW9uID09PSBnZXRWYWx1ZShzdG9yZWRWYWx1ZSwgc3RyYXRlZ3kudmVyc2lvbktleSB8fCAndmVyc2lvbicpO1xuICAgICAgICAgICAgICBjb25zdCBrZXlNYXRjaCA9XG4gICAgICAgICAgICAgICAgKCFzdHJhdGVneS5rZXkgJiYgdGhpcy5fdXNlc0RlZmF1bHRTdGF0ZUtleSkgfHwgc3RyYXRlZ3kua2V5ID09PSBrZXk7XG4gICAgICAgICAgICAgIGlmICh2ZXJzaW9uTWF0Y2ggJiYga2V5TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBzdG9yZWRWYWx1ZSA9IHN0cmF0ZWd5Lm1pZ3JhdGUoc3RvcmVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIGhhc01pZ3JhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5fdXNlc0RlZmF1bHRTdGF0ZUtleSkge1xuICAgICAgICAgICAgc3RhdGUgPSBzZXRWYWx1ZShzdGF0ZSwga2V5ISwgc3RvcmVkVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgYFVwZGF0ZVN0YXRlYCBhY3Rpb24gaXMgZGlzcGF0Y2hlZCB3aGVuZXZlciB0aGUgZmVhdHVyZSBzdGF0ZSBpcyBhZGRlZC5cbiAgICAgICAgICAgIC8vIFRoZSBiZWxvdyBjb25kaXRpb24gaXMgbWV0IG9ubHkgd2hlbiB0aGUgYFVwZGF0ZVN0YXRlYCBpcyBkaXNwYXRjaGVkLlxuICAgICAgICAgICAgLy8gTGV0J3MgYXNzdW1lIHRoYXQgd2UgaGF2ZSAyIHN0YXRlcyBgY291bnRlcmAgYW5kIGBAbmd4cy9yb3V0ZXItcGx1Z2luYCBzdGF0ZS5cbiAgICAgICAgICAgIC8vIGBDb3VudGVyU3RhdGVgIGlzIHByb3ZpZGVkIG9uIHRoZSByb290IGxldmVsIHdoZW4gY2FsbGluZyBgTmd4c01vZHVsZS5mb3JSb290KClgXG4gICAgICAgICAgICAvLyBhbmQgYEBuZ3hzL3JvdXRlci1wbHVnaW5gIGlzIHByb3ZpZGVkIGFzIGEgZmVhdHVyZSBzdGF0ZS5cbiAgICAgICAgICAgIC8vIFRoZSBzdG9yYWdlIHBsdWdpbiBtYXkgc2F2ZSB0aGUgYGNvdW50ZXJgIHN0YXRlIHZhbHVlIGFzIGAxMGAgYmVmb3JlLlxuICAgICAgICAgICAgLy8gVGhlIGBDb3VudGVyU3RhdGVgIG1heSBpbXBsZW1lbnQgdGhlIGBuZ3hzT25Jbml0YCBob29rIGFuZCBjYWxsIGBjdHguc2V0U3RhdGUoOTk5KWAuXG4gICAgICAgICAgICAvLyBUaGUgc3RvcmFnZSBwbHVnaW4gd2lsbCByZS1oeWRyYXRlIHRoZSB3aG9sZSBzdGF0ZSB3aGVuIHRoZSBgUm91dGVyU3RhdGVgIGlzIHJlZ2lzdGVyZWQsXG4gICAgICAgICAgICAvLyBhbmQgdGhlIGBjb3VudGVyYCBzdGF0ZSB3aWxsIGFnYWluIGVxdWFsIGAxMGAgKG5vdCBgOTk5YCkuXG4gICAgICAgICAgICBpZiAoc3RvcmVkVmFsdWUgJiYgYWRkZWRTdGF0ZXMgJiYgT2JqZWN0LmtleXMoYWRkZWRTdGF0ZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc3RvcmVkVmFsdWUgPSBPYmplY3Qua2V5cyhhZGRlZFN0YXRlcykucmVkdWNlKChhY2N1bXVsYXRvciwgYWRkZWRTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBgc3RvcmVkVmFsdWVgIG1heSBlcXVhbCB0aGUgd2hvbGUgc3RhdGUgKHdoZW4gdGhlIGRlZmF1bHQgc3RhdGUga2V5IGlzIHVzZWQpLlxuICAgICAgICAgICAgICAgIC8vIElmIGBhZGRlZFN0YXRlc2AgY29udGFpbnMgb25seSBgcm91dGVyYCB0aGVuIHdlIHdhbnQgdG8gbWVyZ2UgdGhlIHN0YXRlIG9ubHlcbiAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBgcm91dGVyYCB2YWx1ZS5cbiAgICAgICAgICAgICAgICAvLyBMZXQncyBhc3N1bWUgdGhhdCB0aGUgYHN0b3JlZFZhbHVlYCBpcyBhbiBvYmplY3Q6XG4gICAgICAgICAgICAgICAgLy8gYHsgY291bnRlcjogMTAsIHJvdXRlcjogey4uLn0gfWBcbiAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcGljayBvbmx5IHRoZSBgcm91dGVyYCBvYmplY3QgZnJvbSB0aGUgYHN0b3JlZFZhbHVlYCBhbmQgYGNvdW50ZXJgXG4gICAgICAgICAgICAgICAgLy8gc3RhdGUgd2lsbCBub3QgYmUgcmUtaHlkcmF0ZWQgdW5uZWNlc3NhcnkuXG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlZFZhbHVlLmhhc093blByb3BlcnR5KGFkZGVkU3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvclthZGRlZFN0YXRlXSA9IHN0b3JlZFZhbHVlW2FkZGVkU3RhdGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICAgICAgICAgIH0sIDxQbGFpbk9iamVjdD57fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgLi4uc3RvcmVkVmFsdWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpLnBpcGUoXG4gICAgICB0YXAobmV4dFN0YXRlID0+IHtcbiAgICAgICAgaWYgKCFpc0luaXRPclVwZGF0ZUFjdGlvbiB8fCAoaXNJbml0T3JVcGRhdGVBY3Rpb24gJiYgaGFzTWlncmF0aW9uKSkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuX2tleXMpIHtcbiAgICAgICAgICAgIGxldCB2YWwgPSBuZXh0U3RhdGU7XG5cbiAgICAgICAgICAgIGlmIChrZXkgIT09IERFRkFVTFRfU1RBVEVfS0VZKSB7XG4gICAgICAgICAgICAgIHZhbCA9IGdldFZhbHVlKG5leHRTdGF0ZSwga2V5ISk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX29wdGlvbnMuYmVmb3JlU2VyaWFsaXplISh2YWwsIGtleSk7XG4gICAgICAgICAgICAgIHRoaXMuX2VuZ2luZS5zZXRJdGVtKGtleSEsIHRoaXMuX29wdGlvbnMuc2VyaWFsaXplIShuZXdWYWwpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIC8vIENhcmV0YWtlciBub3RlOiB3ZSBoYXZlIHN0aWxsIGxlZnQgdGhlIGB0eXBlb2ZgIGNvbmRpdGlvbiBpbiBvcmRlciB0byBhdm9pZFxuICAgICAgICAgICAgICAvLyBjcmVhdGluZyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgcHJvamVjdHMgdGhhdCBzdGlsbCB1c2UgdGhlIFZpZXcgRW5naW5lLlxuICAgICAgICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZXJyb3IgJiZcbiAgICAgICAgICAgICAgICAgIChlcnJvci5uYW1lID09PSAnUXVvdGFFeGNlZWRlZEVycm9yJyB8fFxuICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID09PSAnTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQnKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFRoZSAke2tleX0gc3RvcmUgdmFsdWUgZXhjZWVkcyB0aGUgYnJvd3NlciBzdG9yYWdlIHF1b3RhOiBgLFxuICAgICAgICAgICAgICAgICAgICB2YWxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFcnJvciBvY3VycmVkIHdoaWxlIHNlcmlhbGl6aW5nIHRoZSAke2tleX0gc3RvcmUgdmFsdWUsIHZhbHVlIG5vdCB1cGRhdGVkLCB0aGUgdmFsdWUgb2J0YWluZWQgZnJvbSB0aGUgc3RvcmU6IGAsXG4gICAgICAgICAgICAgICAgICAgIHZhbFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|