@ngdux/list 1.3.1 → 1.4.0
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/esm2020/index.mjs +10 -8
- package/esm2020/lib/+state/effects.mjs +23 -0
- package/esm2020/lib/+state/state.service.mjs +55 -0
- package/esm2020/lib/models/list.model.mjs +4 -1
- package/esm2020/lib/ngdux-list-state.module.mjs +53 -0
- package/esm2020/lib/services/list-notification-service.mjs +21 -0
- package/esm2020/lib/state-generator/abstract-list-effects.mjs +66 -0
- package/esm2020/lib/state-generator/abstract-list-state.service.mjs +44 -0
- package/esm2020/lib/state-generator/abstract-list.facade.mjs +91 -0
- package/esm2020/lib/state-generator/list-actions.mjs +63 -0
- package/esm2020/lib/state-generator/list-reducer.mjs +104 -0
- package/esm2020/lib/state-generator/list-selectors.mjs +80 -0
- package/esm2020/lib/state-generator/list-state.mjs +18 -0
- package/fesm2015/ngdux-list.mjs +241 -108
- package/fesm2015/ngdux-list.mjs.map +1 -1
- package/fesm2020/ngdux-list.mjs +241 -106
- package/fesm2020/ngdux-list.mjs.map +1 -1
- package/index.d.ts +9 -7
- package/lib/+state/effects.d.ts +14 -0
- package/lib/+state/state.service.d.ts +22 -0
- package/lib/models/list.model.d.ts +18 -6
- package/lib/ngdux-list-state.module.d.ts +23 -0
- package/lib/services/list-notification-service.d.ts +13 -0
- package/lib/{+state → state-generator}/abstract-list-effects.d.ts +9 -11
- package/lib/{+state → state-generator}/abstract-list-state.service.d.ts +7 -7
- package/lib/{+state → state-generator}/abstract-list.facade.d.ts +20 -17
- package/lib/{+state → state-generator}/list-reducer.d.ts +2 -2
- package/lib/state-generator/list-selectors.d.ts +4 -0
- package/lib/{+state → state-generator}/list-state.d.ts +4 -4
- package/package.json +44 -12
- package/esm2020/lib/+state/abstract-list-effects.mjs +0 -71
- package/esm2020/lib/+state/abstract-list-state.service.mjs +0 -44
- package/esm2020/lib/+state/abstract-list.facade.mjs +0 -88
- package/esm2020/lib/+state/list-actions.mjs +0 -60
- package/esm2020/lib/+state/list-reducer.mjs +0 -97
- package/esm2020/lib/+state/list-selectors.mjs +0 -80
- package/esm2020/lib/+state/list-state.mjs +0 -18
- package/lib/+state/list-selectors.d.ts +0 -4
- /package/lib/{+state → state-generator}/list-actions.d.ts +0 -0
package/esm2020/index.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { RequestState } from '@ngdux/data-model-common';
|
|
2
|
-
export
|
|
3
|
-
export * from './lib/+state/abstract-list-state.service';
|
|
4
|
-
export * from './lib/+state/abstract-list.facade';
|
|
5
|
-
export * from './lib/+state/list-actions';
|
|
6
|
-
export * from './lib/+state/list-reducer';
|
|
7
|
-
export * from './lib/+state/list-selectors';
|
|
8
|
-
export * from './lib/+state/list-state';
|
|
2
|
+
export { ListStateService } from './lib/+state/state.service';
|
|
9
3
|
export * from './lib/models/list.model';
|
|
10
|
-
|
|
4
|
+
export * from './lib/ngdux-list-state.module';
|
|
5
|
+
export * from './lib/state-generator/abstract-list-effects';
|
|
6
|
+
export * from './lib/state-generator/abstract-list-state.service';
|
|
7
|
+
export * from './lib/state-generator/abstract-list.facade';
|
|
8
|
+
export * from './lib/state-generator/list-actions';
|
|
9
|
+
export * from './lib/state-generator/list-reducer';
|
|
10
|
+
export * from './lib/state-generator/list-selectors';
|
|
11
|
+
export * from './lib/state-generator/list-state';
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLCBMaXN0U2VydmljZSwgUmVxdWVzdE9wdGlvbnMsIFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmV4cG9ydCB7IExpc3RTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2xpYi8rc3RhdGUvc3RhdGUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9saXN0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdkdXgtbGlzdC1zdGF0ZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZS1nZW5lcmF0b3IvYWJzdHJhY3QtbGlzdC1lZmZlY3RzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUtZ2VuZXJhdG9yL2Fic3RyYWN0LWxpc3Qtc3RhdGUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlLWdlbmVyYXRvci9hYnN0cmFjdC1saXN0LmZhY2FkZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlLWdlbmVyYXRvci9saXN0LWFjdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZS1nZW5lcmF0b3IvbGlzdC1yZWR1Y2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUtZ2VuZXJhdG9yL2xpc3Qtc2VsZWN0b3JzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUtZ2VuZXJhdG9yL2xpc3Qtc3RhdGUnO1xyXG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
+
import { Optional } from '@angular/core';
|
|
3
|
+
import { Actions } from '@ngrx/effects';
|
|
4
|
+
import { Store } from '@ngrx/store';
|
|
5
|
+
import { AbstractListEffects } from '../state-generator/abstract-list-effects';
|
|
6
|
+
import { ListStateService } from './state.service';
|
|
7
|
+
let ListEffects = class ListEffects extends AbstractListEffects {
|
|
8
|
+
constructor(actions$, store, listStateService, featureKey, service, notificationService) {
|
|
9
|
+
super(actions$, store, service, listStateService.getFeatureActions(featureKey), listStateService.getFeatureSelectors(featureKey), notificationService);
|
|
10
|
+
this.featureKey = featureKey;
|
|
11
|
+
}
|
|
12
|
+
ngrxOnIdentifyEffects() {
|
|
13
|
+
return this.featureKey;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
ListEffects = __decorate([
|
|
17
|
+
__param(5, Optional()),
|
|
18
|
+
__metadata("design:paramtypes", [Actions,
|
|
19
|
+
Store,
|
|
20
|
+
ListStateService, String, Object, Object])
|
|
21
|
+
], ListEffects);
|
|
22
|
+
export { ListEffects };
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvK3N0YXRlL2VmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxJQUFNLFdBQVcsR0FBakIsTUFBTSxXQU1YLFNBQVEsbUJBQXdDO0lBR2hELFlBQ0UsUUFBaUIsRUFDakIsS0FBWSxFQUNaLGdCQUF1RCxFQUN0QyxVQUFrQixFQUNuQyxPQUFrQyxFQUN0QixtQkFBb0Q7UUFFaEUsS0FBSyxDQUNILFFBQVEsRUFDUixLQUFLLEVBQ0wsT0FBTyxFQUNQLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUM5QyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFDaEQsbUJBQW1CLENBQ3BCLENBQUM7UUFYZSxlQUFVLEdBQVYsVUFBVSxDQUFRO0lBWXJDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Q0FDRixDQUFBO0FBOUJZLFdBQVc7SUFlbkIsV0FBQSxRQUFRLEVBQUUsQ0FBQTtxQ0FMRCxPQUFPO1FBQ1YsS0FBSztRQUNNLGdCQUFnQjtHQVp6QixXQUFXLENBOEJ2QjtTQTlCWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGlzdE5vdGlmaWNhdGlvblNlcnZpY2UsIExpc3RTZXJ2aWNlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aW9ucywgT25JZGVudGlmeUVmZmVjdHMgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TGlzdEVmZmVjdHMgfSBmcm9tICcuLi9zdGF0ZS1nZW5lcmF0b3IvYWJzdHJhY3QtbGlzdC1lZmZlY3RzJztcclxuaW1wb3J0IHsgTGlzdFN0YXRlU2VydmljZSB9IGZyb20gJy4vc3RhdGUuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdEVmZmVjdHM8XHJcbiAgICBUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIEVycm9yID0gdW5rbm93bixcclxuICAgIFMgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0gVCxcclxuICAgIFBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cclxuICA+XHJcbiAgZXh0ZW5kcyBBYnN0cmFjdExpc3RFZmZlY3RzPFQsIEVycm9yLCBTLCBQYXJhbXM+XHJcbiAgaW1wbGVtZW50cyBPbklkZW50aWZ5RWZmZWN0c1xyXG57XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHN0b3JlOiBTdG9yZSxcclxuICAgIGxpc3RTdGF0ZVNlcnZpY2U6IExpc3RTdGF0ZVNlcnZpY2U8VCwgRXJyb3IsIFMsIFBhcmFtcz4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVLZXk6IHN0cmluZyxcclxuICAgIHNlcnZpY2U6IExpc3RTZXJ2aWNlPFQsIFMsIFBhcmFtcz4sXHJcbiAgICBAT3B0aW9uYWwoKSBub3RpZmljYXRpb25TZXJ2aWNlPzogTGlzdE5vdGlmaWNhdGlvblNlcnZpY2U8RXJyb3I+XHJcbiAgKSB7XHJcbiAgICBzdXBlcihcclxuICAgICAgYWN0aW9ucyQsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBzZXJ2aWNlLFxyXG4gICAgICBsaXN0U3RhdGVTZXJ2aWNlLmdldEZlYXR1cmVBY3Rpb25zKGZlYXR1cmVLZXkpLFxyXG4gICAgICBsaXN0U3RhdGVTZXJ2aWNlLmdldEZlYXR1cmVTZWxlY3RvcnMoZmVhdHVyZUtleSksXHJcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ3J4T25JZGVudGlmeUVmZmVjdHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mZWF0dXJlS2V5O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { ReducerManager, createFeatureSelector } from '@ngrx/store';
|
|
3
|
+
import { LIST_FEATURE_KEYS } from '../models/list.model';
|
|
4
|
+
import { createListActions } from '../state-generator/list-actions';
|
|
5
|
+
import { createListEntityAdapter, createListReducer } from '../state-generator/list-reducer';
|
|
6
|
+
import { createListSelectors } from '../state-generator/list-selectors';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngrx/store";
|
|
9
|
+
export class ListStateService {
|
|
10
|
+
constructor(reducerManager, featureKeys) {
|
|
11
|
+
this.reducerManager = reducerManager;
|
|
12
|
+
this.actions = {};
|
|
13
|
+
this.selectors = {};
|
|
14
|
+
this.entityAdapter = this.getEntityAdapter();
|
|
15
|
+
featureKeys.forEach(featureKey => {
|
|
16
|
+
if (!this.actions[featureKey]) {
|
|
17
|
+
this.actions[featureKey] = this.getActions(featureKey);
|
|
18
|
+
this.addReducer(featureKey, this.actions[featureKey]);
|
|
19
|
+
this.selectors[featureKey] = this.getSelectors(featureKey);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
getActions(featureKey) {
|
|
24
|
+
return createListActions(featureKey);
|
|
25
|
+
}
|
|
26
|
+
getEntityAdapter() {
|
|
27
|
+
return createListEntityAdapter();
|
|
28
|
+
}
|
|
29
|
+
addReducer(featureKey, actions) {
|
|
30
|
+
const currentReducers = Object.keys(this.reducerManager.currentReducers || {});
|
|
31
|
+
if (!currentReducers.includes(featureKey)) {
|
|
32
|
+
const reducer = createListReducer(this.entityAdapter, actions);
|
|
33
|
+
this.reducerManager.addReducer(featureKey, reducer);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getSelectors(featureKey) {
|
|
37
|
+
const getState = createFeatureSelector(featureKey);
|
|
38
|
+
return createListSelectors(this.entityAdapter, getState);
|
|
39
|
+
}
|
|
40
|
+
getFeatureActions(featureKey) {
|
|
41
|
+
return this.actions[featureKey];
|
|
42
|
+
}
|
|
43
|
+
getFeatureSelectors(featureKey) {
|
|
44
|
+
return this.selectors[featureKey];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ListStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ListStateService, deps: [{ token: i1.ReducerManager }, { token: LIST_FEATURE_KEYS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
ListStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ListStateService });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ListStateService, decorators: [{
|
|
50
|
+
type: Injectable
|
|
51
|
+
}], ctorParameters: function () { return [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
52
|
+
type: Inject,
|
|
53
|
+
args: [LIST_FEATURE_KEYS]
|
|
54
|
+
}] }]; } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvK3N0YXRlL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQXlDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQUd4RSxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQTZCLGNBQThCLEVBQTZCLFdBQXFCO1FBQWhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUpqRCxZQUFPLEdBQXFELEVBQUUsQ0FBQztRQUMvRCxjQUFTLEdBQW9ELEVBQUUsQ0FBQztRQUl4RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxVQUFVLENBQUMsVUFBa0I7UUFDckMsT0FBTyxpQkFBaUIsQ0FBc0IsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixPQUFPLHVCQUF1QixFQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVTLFVBQVUsQ0FBQyxVQUFrQixFQUFFLE9BQXlDO1FBQ2hGLE1BQU0sZUFBZSxHQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDekMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQXNCLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVTLFlBQVksQ0FBQyxVQUFrQjtRQUN2QyxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBOEIsVUFBVSxDQUFDLENBQUM7UUFDaEYsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxVQUFrQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQWtCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs2R0FqRFUsZ0JBQWdCLGdEQVUwQyxpQkFBaUI7aUhBVjNFLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkFXcUQsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW50aXR5QWRhcHRlciB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XHJcbmltcG9ydCB7IFJlZHVjZXJNYW5hZ2VyLCBjcmVhdGVGZWF0dXJlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IExJU1RfRkVBVFVSRV9LRVlTLCBMaXN0QWN0aW9ucywgTGlzdFNlbGVjdG9ycywgTGlzdFN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBjcmVhdGVMaXN0QWN0aW9ucyB9IGZyb20gJy4uL3N0YXRlLWdlbmVyYXRvci9saXN0LWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBjcmVhdGVMaXN0RW50aXR5QWRhcHRlciwgY3JlYXRlTGlzdFJlZHVjZXIgfSBmcm9tICcuLi9zdGF0ZS1nZW5lcmF0b3IvbGlzdC1yZWR1Y2VyJztcclxuaW1wb3J0IHsgY3JlYXRlTGlzdFNlbGVjdG9ycyB9IGZyb20gJy4uL3N0YXRlLWdlbmVyYXRvci9saXN0LXNlbGVjdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMaXN0U3RhdGVTZXJ2aWNlPFxyXG4gIFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxyXG4gIEVycm9yID0gdW5rbm93bixcclxuICBTIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IFQsXHJcbiAgUGFyYW1zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4+IHtcclxuICBwcm90ZWN0ZWQgYWN0aW9uczogUmVjb3JkPHN0cmluZywgTGlzdEFjdGlvbnM8VCwgRXJyb3IsIFMsIFBhcmFtcz4+ID0ge307XHJcbiAgcHJvdGVjdGVkIHNlbGVjdG9yczogUmVjb3JkPHN0cmluZywgTGlzdFNlbGVjdG9yczxTLCBFcnJvciwgUGFyYW1zPj4gPSB7fTtcclxuICBwcml2YXRlIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8Uz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVkdWNlck1hbmFnZXI6IFJlZHVjZXJNYW5hZ2VyLCBASW5qZWN0KExJU1RfRkVBVFVSRV9LRVlTKSBmZWF0dXJlS2V5czogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuZW50aXR5QWRhcHRlciA9IHRoaXMuZ2V0RW50aXR5QWRhcHRlcigpO1xyXG4gICAgZmVhdHVyZUtleXMuZm9yRWFjaChmZWF0dXJlS2V5ID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmFjdGlvbnNbZmVhdHVyZUtleV0pIHtcclxuICAgICAgICB0aGlzLmFjdGlvbnNbZmVhdHVyZUtleV0gPSB0aGlzLmdldEFjdGlvbnMoZmVhdHVyZUtleSk7XHJcbiAgICAgICAgdGhpcy5hZGRSZWR1Y2VyKGZlYXR1cmVLZXksIHRoaXMuYWN0aW9uc1tmZWF0dXJlS2V5XSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RvcnNbZmVhdHVyZUtleV0gPSB0aGlzLmdldFNlbGVjdG9ycyhmZWF0dXJlS2V5KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0QWN0aW9ucyhmZWF0dXJlS2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBjcmVhdGVMaXN0QWN0aW9uczxULCBFcnJvciwgUywgUGFyYW1zPihmZWF0dXJlS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXR5QWRhcHRlcigpIHtcclxuICAgIHJldHVybiBjcmVhdGVMaXN0RW50aXR5QWRhcHRlcjxTPigpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZFJlZHVjZXIoZmVhdHVyZUtleTogc3RyaW5nLCBhY3Rpb25zOiBMaXN0QWN0aW9uczxULCBFcnJvciwgUywgUGFyYW1zPikge1xyXG4gICAgY29uc3QgY3VycmVudFJlZHVjZXJzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKHRoaXMucmVkdWNlck1hbmFnZXIuY3VycmVudFJlZHVjZXJzIHx8IHt9KTtcclxuXHJcbiAgICBpZiAoIWN1cnJlbnRSZWR1Y2Vycy5pbmNsdWRlcyhmZWF0dXJlS2V5KSkge1xyXG4gICAgICBjb25zdCByZWR1Y2VyID0gY3JlYXRlTGlzdFJlZHVjZXI8VCwgRXJyb3IsIFMsIFBhcmFtcz4odGhpcy5lbnRpdHlBZGFwdGVyLCBhY3Rpb25zKTtcclxuICAgICAgdGhpcy5yZWR1Y2VyTWFuYWdlci5hZGRSZWR1Y2VyKGZlYXR1cmVLZXksIHJlZHVjZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFNlbGVjdG9ycyhmZWF0dXJlS2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGdldFN0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPExpc3RTdGF0ZTxTLCBFcnJvciwgUGFyYW1zPj4oZmVhdHVyZUtleSk7XHJcbiAgICByZXR1cm4gY3JlYXRlTGlzdFNlbGVjdG9ycyh0aGlzLmVudGl0eUFkYXB0ZXIsIGdldFN0YXRlKTtcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmVBY3Rpb25zKGZlYXR1cmVLZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uc1tmZWF0dXJlS2V5XTtcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmVTZWxlY3RvcnMoZmVhdHVyZUtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvcnNbZmVhdHVyZUtleV07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
2
|
import { InjectionToken } from '@angular/core';
|
|
3
3
|
export const LIST_FEATURE_KEY = new InjectionToken('LIST_FEATURE_KEY');
|
|
4
|
-
|
|
4
|
+
export const LIST_FEATURE_KEYS = new InjectionToken('LIST_FEATURE_KEYS');
|
|
5
|
+
export const LIST_SERVICES = new InjectionToken('LIST_SERVICES');
|
|
6
|
+
export const LIST_NOTIFICATION_SERVICES = new InjectionToken('LIST_NOTIFICATION_SERVICES');
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvbW9kZWxzL2xpc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaURBQWlEO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFnQnJELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFTLGtCQUFrQixDQUFDLENBQUM7QUFDL0UsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQVMsbUJBQW1CLENBQUMsQ0FBQztBQUNqRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQVMsZUFBZSxDQUFDLENBQUM7QUFDekUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQVMsNEJBQTRCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBFcnJvckR0byxcclxuICBGaWx0ZXJpbmdPcHRpb25zLFxyXG4gIExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gIExpc3RTZXJ2aWNlLFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgUmVxdWVzdE9wdGlvbnMsXHJcbiAgUmVxdWVzdFN0YXRlLFxyXG4gIFNvcnRpbmdPcHRpb25zXHJcbn0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHsgQXBpUmVxdWVzdFN0YXRlLCBMb2FkaW5nU3RhdGUgfSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcclxuaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBNZW1vaXplZFNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBUeXBlZEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IExJU1RfRkVBVFVSRV9LRVkgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignTElTVF9GRUFUVVJFX0tFWScpO1xyXG5leHBvcnQgY29uc3QgTElTVF9GRUFUVVJFX0tFWVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignTElTVF9GRUFUVVJFX0tFWVMnKTtcclxuZXhwb3J0IGNvbnN0IExJU1RfU0VSVklDRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignTElTVF9TRVJWSUNFUycpO1xyXG5leHBvcnQgY29uc3QgTElTVF9OT1RJRklDQVRJT05fU0VSVklDRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignTElTVF9OT1RJRklDQVRJT05fU0VSVklDRVMnKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFN0YXRlPFQsIEUgPSB1bmtub3duLCBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PlxyXG4gIGV4dGVuZHMgRW50aXR5U3RhdGU8VD4sXHJcbiAgICBSZXF1ZXN0T3B0aW9uczxQYXJhbXM+LFxyXG4gICAgQXBpUmVxdWVzdFN0YXRlPEU+LFxyXG4gICAgTG9hZGluZ1N0YXRlIHtcclxuICBzZWxlY3RlZFJlc291cmNlSWRzOiBzdHJpbmdbXTtcclxuICBsYXN0UGFnZU51bWJlcj86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaXN0U2VsZWN0b3JzPFQsIEUgPSB1bmtub3duLCBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XHJcbiAgZ2V0QWxsOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgVFtdPjtcclxuICBnZXRSZXF1ZXN0T3B0aW9uczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlcXVlc3RPcHRpb25zPjtcclxuICBpc0xhc3RQYWdlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbiAgZ2V0Q3VycmVudFBhZ2VEYXRhOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgVFtdPjtcclxuICBnZXRQYWdpbmdPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUGFnaW5nT3B0aW9ucz47XHJcbiAgZ2V0U29ydGluZ09wdGlvbnM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBTb3J0aW5nT3B0aW9ucz47XHJcbiAgZ2V0RmlsdGVyaW5nT3B0aW9uczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIEZpbHRlcmluZ09wdGlvbnM+O1xyXG4gIGdldFJlcXVlc3RQYXJhbWV0ZXJzOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUGFyYW1zIHwgdW5kZWZpbmVkPjtcclxuICBnZXRDdXJyZW50UGFnZU51bWJlcjogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIG51bWJlcj47XHJcbiAgZ2V0TGFzdFBhZ2VOdW1iZXI6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBudW1iZXIgfCB1bmRlZmluZWQ+O1xyXG4gIGdldExvYWRpbmdTdGF0ZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlcXVlc3RTdGF0ZT47XHJcbiAgZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIHN0cmluZ1tdPjtcclxuICBnZXRTZWxlY3RlZEl0ZW1zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgVFtdPjtcclxuICBnZXRTZWxlY3Rpb25SZWNvcmQ6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZWNvcmQ8c3RyaW5nLCBUPj47XHJcbiAgZ2V0UmVxdWVzdFN0YXRlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdFN0YXRlPjtcclxuICBnZXRFcnJvcnM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBFIHwgdW5kZWZpbmVkPjtcclxuICBhcmVTZWxlY3RlZFJlYWR5OiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbiAgaXNSZWFkeTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIGJvb2xlYW4+O1xyXG4gIGlzRGVsZXRlRGlzYWJsZWQ6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcclxuICBpc0NvcHlEaXNhYmxlZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIGJvb2xlYW4+O1xyXG4gIGdldFRvdGFsQ291bnQ6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBudW1iZXI+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpc3RBY3Rpb25zPEVudGl0eSwgRXJyb3IgPSB1bmtub3duLCBTdW1tYXJ5ID0gRW50aXR5LCBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBwYWdlIHNpemUgd2l0aG91dCByZWxvYWRpbmcgdGhlIGxpc3RcclxuICAgKi9cclxuICBzZXRQYWdlU2l6ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlU2l6ZTogbnVtYmVyIH0pID0+IHsgcGFnZVNpemU6IG51bWJlciB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBzb3J0aW5nIG9wdGlvbnMgd2l0aG91dCByZWxvYWRpbmcgdGhlIGxpc3RcclxuICAgKi9cclxuICBzZXRTb3J0aW5nOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7IHNvcnRpbmdPcHRpb25zOiBTb3J0aW5nT3B0aW9ucyB9KSA9PiB7IHNvcnRpbmdPcHRpb25zOiBTb3J0aW5nT3B0aW9ucyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBmaWx0ZXJpbmcgb3B0aW9ucyB3aXRob3V0IHJlbG9hZGluZyB0aGUgbGlzdFxyXG4gICAqL1xyXG4gIHNldEZpbHRlcmluZzogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBmaWx0ZXJpbmdPcHRpb25zOiBGaWx0ZXJpbmdPcHRpb25zIH0pID0+IHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMgd2l0aG91dCByZWxvYWRpbmcgdGhlIGxpc3RcclxuICAgKi9cclxuICBzZXRSZXF1ZXN0UGFyYW1zOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHBhcmFtczogUGFyYW1zIH0pID0+IHsgcGFyYW1zOiBQYXJhbXMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG5cclxuICAvKipcclxuICAgKiBDaGFuZ2UgdGhlIHBhZ2luZyBvcHRpb25zIGFuZCByZWxvYWQgdGhlIGxpc3RcclxuICAgKi9cclxuICBjaGFuZ2VQYWdpbmdPcHRpb25zOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSkgPT4geyBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlIHRoZSBwYWdlIG51bWJlciBhbmQgcmVsb2FkIHRoZSBsaXN0XHJcbiAgICovXHJcbiAgY2hhbmdlUGFnZU51bWJlcjogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBwYWdlTnVtYmVyOiBudW1iZXIgfSkgPT4geyBwYWdlTnVtYmVyOiBudW1iZXIgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgcGFnZSBzaXplIGFuZCByZWxvYWQgdGhlIGxpc3RcclxuICAgKi9cclxuICBjaGFuZ2VQYWdlU2l6ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlU2l6ZTogbnVtYmVyIH0pID0+IHsgcGFnZVNpemU6IG51bWJlciB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlIHRoZSBzb3J0aW5nIG9wdGlvbnMgYW5kIHJlbG9hZCB0aGUgbGlzdFxyXG4gICAqL1xyXG4gIGNoYW5nZVNvcnRpbmc6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgc29ydGluZ09wdGlvbnM6IFNvcnRpbmdPcHRpb25zIH0pID0+IHsgc29ydGluZ09wdGlvbnM6IFNvcnRpbmdPcHRpb25zIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICAvKipcclxuICAgKiBDaGFuZ2UgdGhlIGZpbHRlcmluZyBvcHRpb25zIGFuZCByZWxvYWQgdGhlIGxpc3RcclxuICAgKi9cclxuICBjaGFuZ2VGaWx0ZXJpbmc6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9KSA9PiB7IGZpbHRlcmluZ09wdGlvbnM6IEZpbHRlcmluZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzIGFuZCByZWxvYWQgdGhlIGxpc3RcclxuICAgKi9cclxuICBjaGFuZ2VSZXF1ZXN0UGFyYW1zOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHBhcmFtczogUGFyYW1zIH0pID0+IHsgcGFyYW1zOiBQYXJhbXMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG5cclxuICBjaGFuZ2VTZWxlY3RlZFJlc291cmNlczogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBzZWxlY3RlZFJlc291cmNlSWRzOiBzdHJpbmdbXSB9KSA9PiB7IHNlbGVjdGVkUmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBsb2FkUGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGxvYWRQYWdlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczoge1xyXG4gICAgICByZXNvdXJjZXM6IFN1bW1hcnlbXTtcclxuICAgICAgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICAgIH0pID0+IHsgcmVzb3VyY2VzOiBTdW1tYXJ5W107IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG4gIGxvYWRQYWdlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEVycm9yIH0pID0+IHsgZXJyb3JzOiBFcnJvciB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgZGVsZXRlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHJlc291cmNlSWRzOiBzdHJpbmdbXSB9KSA9PiB7IHJlc291cmNlSWRzOiBzdHJpbmdbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgZGVsZXRlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyByZXNvdXJjZUlkczogc3RyaW5nW10gfSkgPT4geyByZXNvdXJjZUlkczogc3RyaW5nW10gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG4gIGRlbGV0ZUZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFcnJvciB9KSA9PiB7IGVycm9yczogRXJyb3IgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIHBhdGNoOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7XHJcbiAgICAgIHJlc291cmNlSWRzOiBzdHJpbmdbXTtcclxuICAgICAgcmVzb3VyY2U6IFBhcnRpYWw8RW50aXR5PjtcclxuICAgIH0pID0+IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdOyByZXNvdXJjZTogUGFydGlhbDxFbnRpdHk+IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBwYXRjaFN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgcmVzb3VyY2VzOiAoRW50aXR5IHwgRXJyb3JEdG8pW10gfSkgPT4geyByZXNvdXJjZXM6IChFbnRpdHkgfCBFcnJvckR0bylbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgcGF0Y2hGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRXJyb3IgfSkgPT4geyBlcnJvcnM6IEVycm9yIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBsb2FkTmV4dFBhZ2U6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBjdXJyZW50IGRhdGEsIHNldCB0aGUgcGFnZSBudW1iZXIgdG8gMSBhbmQgZGVzZWxlY3QgcmVzb3VyY2VzLlxyXG4gICAqIEtlZXAgYWxsIHRoZSByZXN0LCBsaWtlIGZpbHRlcmluZ09wdGlvbnMgYW5kIHNvcnRpbmdPcHRpb25zXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlXHJcbiAgICovXHJcbiAgcmVzZXQ6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBsb2FkUHJldmlvdXNQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZEZpcnN0UGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHRoZSByZXF1ZXN0IHN0YXRlIHRvIGlkbGVcclxuICAgKi9cclxuICByZXNldFJlcXVlc3RTdGF0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFRoZSBtZXRob2Qgd2lsbCBiZSByZW1vdmVkLiBUSGUgQWJzdHJhY3RFZmZlY3Qgd2lsbCBub3QgYmUgcmVzcG9uc2libGUgZm9yIGl0IGFueW1vcmVcclxuICAgKi9cclxuICBzaG93UmVtb3ZhbHNDb25maXJtYXRpb246IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZ2R1eExpc3RTdGF0ZU1vZHVsZUNvbmZpZzxcclxuICBUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICBFLFxyXG4gIFMgPSBULFxyXG4gIFBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cclxuPiB7XHJcbiAgc2VydmljZTogVHlwZTxMaXN0U2VydmljZTxULCBTLCBQYXJhbXM+PjtcclxuICBub3RpZmljYXRpb25TZXJ2aWNlPzogVHlwZTxMaXN0Tm90aWZpY2F0aW9uU2VydmljZTxFPj47XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Inject, NgModule } from '@angular/core';
|
|
2
|
+
import { RegisterEffectsService } from '@ngdux/store-common';
|
|
3
|
+
import { Actions } from '@ngrx/effects';
|
|
4
|
+
import { Store } from '@ngrx/store';
|
|
5
|
+
import { ListEffects } from './+state/effects';
|
|
6
|
+
import { ListStateService } from './+state/state.service';
|
|
7
|
+
import { LIST_FEATURE_KEYS, LIST_NOTIFICATION_SERVICES, LIST_SERVICES } from './models/list.model';
|
|
8
|
+
import { NotificationServicePlaceholder } from './services/list-notification-service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@ngdux/store-common";
|
|
11
|
+
import * as i2 from "@ngrx/effects";
|
|
12
|
+
import * as i3 from "@ngrx/store";
|
|
13
|
+
import * as i4 from "./+state/state.service";
|
|
14
|
+
export class NgduxListStateModule {
|
|
15
|
+
constructor(registerEffectsService, actions$, store, listStateService, featureKeys, services, notificationServices) {
|
|
16
|
+
featureKeys.forEach((featureKey, index) => {
|
|
17
|
+
const listEffects = new ListEffects(actions$, store, listStateService, featureKey, services[index], notificationServices[index]);
|
|
18
|
+
registerEffectsService.registerEffects([listEffects]);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
static config(config) {
|
|
22
|
+
return {
|
|
23
|
+
ngModule: NgduxListStateModule,
|
|
24
|
+
providers: [
|
|
25
|
+
{ provide: LIST_SERVICES, multi: true, useClass: config.service },
|
|
26
|
+
{
|
|
27
|
+
provide: LIST_NOTIFICATION_SERVICES,
|
|
28
|
+
multi: true,
|
|
29
|
+
useClass: config.notificationService || NotificationServicePlaceholder
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
NgduxListStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgduxListStateModule, deps: [{ token: i1.RegisterEffectsService }, { token: i2.Actions }, { token: i3.Store }, { token: i4.ListStateService }, { token: LIST_FEATURE_KEYS }, { token: LIST_SERVICES }, { token: LIST_NOTIFICATION_SERVICES }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
36
|
+
NgduxListStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NgduxListStateModule });
|
|
37
|
+
NgduxListStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgduxListStateModule, providers: [ListStateService] });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgduxListStateModule, decorators: [{
|
|
39
|
+
type: NgModule,
|
|
40
|
+
args: [{
|
|
41
|
+
providers: [ListStateService]
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.RegisterEffectsService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.ListStateService }, { type: undefined, decorators: [{
|
|
44
|
+
type: Inject,
|
|
45
|
+
args: [LIST_FEATURE_KEYS]
|
|
46
|
+
}] }, { type: undefined, decorators: [{
|
|
47
|
+
type: Inject,
|
|
48
|
+
args: [LIST_SERVICES]
|
|
49
|
+
}] }, { type: undefined, decorators: [{
|
|
50
|
+
type: Inject,
|
|
51
|
+
args: [LIST_NOTIFICATION_SERVICES]
|
|
52
|
+
}] }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdkdXgtbGlzdC1zdGF0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvbGliL25nZHV4LWxpc3Qtc3RhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLGFBQWEsRUFFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFLdEYsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUNFLHNCQUE4QyxFQUM5QyxRQUFpQixFQUNqQixLQUFZLEVBQ1osZ0JBQXVELEVBQzVCLFdBQXFCLEVBQ3pCLFFBQXFDLEVBQ3hCLG9CQUFzRDtRQUUxRixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUNqQyxRQUFRLEVBQ1IsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUNmLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUM1QixDQUFDO1lBQ0Ysc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQU1YLE1BQXVEO1FBRXZELE9BQU87WUFDTCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDakU7b0JBQ0UsT0FBTyxFQUFFLDBCQUEwQjtvQkFDbkMsS0FBSyxFQUFFLElBQUk7b0JBQ1gsUUFBUSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSw4QkFBOEI7aUJBQ3ZFO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7aUhBL0NVLG9CQUFvQixvSUFXckIsaUJBQWlCLGFBQ2pCLGFBQWEsYUFDYiwwQkFBMEI7a0hBYnpCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGFBRnBCLENBQUMsZ0JBQWdCLENBQUM7MkZBRWxCLG9CQUFvQjtrQkFIaEMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDOUI7OzBCQVlJLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLCBMaXN0U2VydmljZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IFJlZ2lzdGVyRWZmZWN0c1NlcnZpY2UgfSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgTGlzdEVmZmVjdHMgfSBmcm9tICcuLytzdGF0ZS9lZmZlY3RzJztcclxuaW1wb3J0IHsgTGlzdFN0YXRlU2VydmljZSB9IGZyb20gJy4vK3N0YXRlL3N0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIExJU1RfRkVBVFVSRV9LRVlTLFxyXG4gIExJU1RfTk9USUZJQ0FUSU9OX1NFUlZJQ0VTLFxyXG4gIExJU1RfU0VSVklDRVMsXHJcbiAgTmdkdXhMaXN0U3RhdGVNb2R1bGVDb25maWdcclxufSBmcm9tICcuL21vZGVscy9saXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZVBsYWNlaG9sZGVyIH0gZnJvbSAnLi9zZXJ2aWNlcy9saXN0LW5vdGlmaWNhdGlvbi1zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgcHJvdmlkZXJzOiBbTGlzdFN0YXRlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5nZHV4TGlzdFN0YXRlTW9kdWxlPFxyXG4gIFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxyXG4gIEVycm9yID0gdW5rbm93bixcclxuICBTIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IFQsXHJcbiAgUGFyYW1zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlZ2lzdGVyRWZmZWN0c1NlcnZpY2U6IFJlZ2lzdGVyRWZmZWN0c1NlcnZpY2UsXHJcbiAgICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHN0b3JlOiBTdG9yZSxcclxuICAgIGxpc3RTdGF0ZVNlcnZpY2U6IExpc3RTdGF0ZVNlcnZpY2U8VCwgRXJyb3IsIFMsIFBhcmFtcz4sXHJcbiAgICBASW5qZWN0KExJU1RfRkVBVFVSRV9LRVlTKSBmZWF0dXJlS2V5czogc3RyaW5nW10sXHJcbiAgICBASW5qZWN0KExJU1RfU0VSVklDRVMpIHNlcnZpY2VzOiBMaXN0U2VydmljZTxULCBTLCBQYXJhbXM+W10sXHJcbiAgICBASW5qZWN0KExJU1RfTk9USUZJQ0FUSU9OX1NFUlZJQ0VTKSBub3RpZmljYXRpb25TZXJ2aWNlczogTGlzdE5vdGlmaWNhdGlvblNlcnZpY2U8RXJyb3I+W11cclxuICApIHtcclxuICAgIGZlYXR1cmVLZXlzLmZvckVhY2goKGZlYXR1cmVLZXksIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGxpc3RFZmZlY3RzID0gbmV3IExpc3RFZmZlY3RzKFxyXG4gICAgICAgIGFjdGlvbnMkLFxyXG4gICAgICAgIHN0b3JlLFxyXG4gICAgICAgIGxpc3RTdGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgZmVhdHVyZUtleSxcclxuICAgICAgICBzZXJ2aWNlc1tpbmRleF0sXHJcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZXNbaW5kZXhdXHJcbiAgICAgICk7XHJcbiAgICAgIHJlZ2lzdGVyRWZmZWN0c1NlcnZpY2UucmVnaXN0ZXJFZmZlY3RzKFtsaXN0RWZmZWN0c10pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY29uZmlnPFxyXG4gICAgVCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICBFcnJvciA9IHVua25vd24sXHJcbiAgICBTIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IFQsXHJcbiAgICBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgPihcclxuICAgIGNvbmZpZzogTmdkdXhMaXN0U3RhdGVNb2R1bGVDb25maWc8VCwgRXJyb3IsIFMsIFBhcmFtcz5cclxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nZHV4TGlzdFN0YXRlTW9kdWxlPFQsIEVycm9yLCBTLCBQYXJhbXM+PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogTmdkdXhMaXN0U3RhdGVNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogTElTVF9TRVJWSUNFUywgbXVsdGk6IHRydWUsIHVzZUNsYXNzOiBjb25maWcuc2VydmljZSB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IExJU1RfTk9USUZJQ0FUSU9OX1NFUlZJQ0VTLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgICB1c2VDbGFzczogY29uZmlnLm5vdGlmaWNhdGlvblNlcnZpY2UgfHwgTm90aWZpY2F0aW9uU2VydmljZVBsYWNlaG9sZGVyXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NotificationServicePlaceholder {
|
|
5
|
+
onListErrors(errors) {
|
|
6
|
+
console.error('ERROR', errors);
|
|
7
|
+
}
|
|
8
|
+
onListDelete(ids) {
|
|
9
|
+
console.log(`Resources ${ids.join(', ')} have been deleted.`);
|
|
10
|
+
}
|
|
11
|
+
openConfirmationDialog(data) {
|
|
12
|
+
console.log(data.title, data.message);
|
|
13
|
+
return of(true);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
NotificationServicePlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NotificationServicePlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17
|
+
NotificationServicePlaceholder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NotificationServicePlaceholder });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NotificationServicePlaceholder, decorators: [{
|
|
19
|
+
type: Injectable
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ub3RpZmljYXRpb24tc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvc2VydmljZXMvbGlzdC1ub3RpZmljYXRpb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RDLE1BQU0sT0FBTyw4QkFBOEI7SUFDekMsWUFBWSxDQUFDLE1BQWdCO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBYTtRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBd0M7UUFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDOzsySEFiVSw4QkFBOEI7K0hBQTlCLDhCQUE4QjsyRkFBOUIsOEJBQThCO2tCQUQxQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFcnJvckR0bywgTGlzdE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZVBsYWNlaG9sZGVyIGltcGxlbWVudHMgTGlzdE5vdGlmaWNhdGlvblNlcnZpY2U8RXJyb3JEdG8+IHtcclxuICBvbkxpc3RFcnJvcnMoZXJyb3JzOiBFcnJvckR0byk6IHZvaWQge1xyXG4gICAgY29uc29sZS5lcnJvcignRVJST1InLCBlcnJvcnMpO1xyXG4gIH1cclxuXHJcbiAgb25MaXN0RGVsZXRlKGlkczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKGBSZXNvdXJjZXMgJHtpZHMuam9pbignLCAnKX0gaGF2ZSBiZWVuIGRlbGV0ZWQuYCk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ29uZmlybWF0aW9uRGlhbG9nKGRhdGE6IHsgbWVzc2FnZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnNvbGUubG9nKGRhdGEudGl0bGUsIGRhdGEubWVzc2FnZSk7XHJcblxyXG4gICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { catchError, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
|
|
5
|
+
export class AbstractListEffects {
|
|
6
|
+
constructor(actions$, store, service, listActions, listSelectors, notificationService) {
|
|
7
|
+
this.actions$ = actions$;
|
|
8
|
+
this.store = store;
|
|
9
|
+
this.service = service;
|
|
10
|
+
this.listActions = listActions;
|
|
11
|
+
this.listSelectors = listSelectors;
|
|
12
|
+
this.notificationService = notificationService;
|
|
13
|
+
this.texts = {
|
|
14
|
+
deleteConfirmationTitle: 'Delete resources',
|
|
15
|
+
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
16
|
+
};
|
|
17
|
+
this.reload$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.changePagingOptions, this.listActions.changeRequestParams, this.listActions.initialize, this.listActions.reset, this.listActions.changePageNumber, this.listActions.patchSuccess, this.listActions.deleteSuccess), map(() => this.listActions.loadPage())));
|
|
18
|
+
this.loadFirstPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadFirstPage), map(() => this.listActions.changePageNumber({ pageNumber: 1 }))));
|
|
19
|
+
this.loadPreviousPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPreviousPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, currentPageNumber]) => currentPageNumber > 1), map(([, currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber - 1 }))));
|
|
20
|
+
this.loadNextPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadNextPage), withLatestFrom(this.store.pipe(select(this.listSelectors.isLastPage)), this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, isLastPage]) => !isLastPage), map(([, , currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber + 1 }))));
|
|
21
|
+
this.loadPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions)), this.store.pipe(select(this.listSelectors.getSortingOptions)), this.store.pipe(select(this.listSelectors.getFilteringOptions)), this.store.pipe(select(this.listSelectors.getRequestParameters))), switchMap(([, pagingOptions, sortingOptions, filteringOptions, requestParameters]) => {
|
|
22
|
+
return this.service
|
|
23
|
+
.loadResources({
|
|
24
|
+
pagingOptions,
|
|
25
|
+
sortingOptions,
|
|
26
|
+
filteringOptions,
|
|
27
|
+
requestParameters
|
|
28
|
+
})
|
|
29
|
+
.pipe(map(resources => this.listActions.loadPageSuccess({
|
|
30
|
+
resources,
|
|
31
|
+
pagingOptions
|
|
32
|
+
})), catchError((errors) => of(this.listActions.loadPageFailure({ errors }))));
|
|
33
|
+
})));
|
|
34
|
+
this.patch$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.patch), exhaustMap(action => {
|
|
35
|
+
if (!this.service.patchResources) {
|
|
36
|
+
throw new Error('patchResources not implement in the ListService');
|
|
37
|
+
}
|
|
38
|
+
return this.service.patchResources(action.resourceIds, action.resource).pipe(map(resources => this.listActions.patchSuccess({ resources })), catchError((errors) => of(this.listActions.patchFailure({ errors }))));
|
|
39
|
+
})));
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated The method will be removed. THe AbstractEffect will not be responsible for it anymore
|
|
42
|
+
*/
|
|
43
|
+
this.showRemovalsDialog$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.showRemovalsConfirmation), switchMap(() => {
|
|
44
|
+
if (this.notificationService?.openConfirmationDialog) {
|
|
45
|
+
return this.notificationService.openConfirmationDialog({
|
|
46
|
+
message: this.texts.deleteConfirmationMessage,
|
|
47
|
+
title: this.texts.deleteConfirmationTitle
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return of(true);
|
|
51
|
+
}), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), filter(([, resourceIds]) => !!resourceIds.length), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
|
|
52
|
+
this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => {
|
|
53
|
+
if (!this.service.deleteResources) {
|
|
54
|
+
throw new Error('deleteResources not implement in the ListService');
|
|
55
|
+
}
|
|
56
|
+
return this.service.deleteResources(resourceIds).pipe(map(() => this.listActions.deleteSuccess({ resourceIds })), catchError((errors) => of(this.listActions.deleteFailure({ errors }))));
|
|
57
|
+
})));
|
|
58
|
+
this.deleteSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(({ resourceIds }) => {
|
|
59
|
+
this.notificationService?.onListDelete(resourceIds);
|
|
60
|
+
})), { dispatch: false });
|
|
61
|
+
this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure), tap(({ errors }) => {
|
|
62
|
+
this.notificationService?.onListErrors(errors);
|
|
63
|
+
})), { dispatch: false });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi9zdGF0ZS1nZW5lcmF0b3IvYWJzdHJhY3QtbGlzdC1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBUyxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJckcsTUFBTSxPQUFnQixtQkFBbUI7SUErSnZDLFlBQ3FCLFFBQWlCLEVBQ2pCLEtBQVksRUFDWixPQUFrQyxFQUNsQyxXQUF5QyxFQUN6QyxhQUEwQyxFQUMxQyxtQkFBZ0Q7UUFMaEQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQThCO1FBQ3pDLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTZCO1FBcEtyRSxVQUFLLEdBQUc7WUFDTix1QkFBdUIsRUFBRSxrQkFBa0I7WUFDM0MseUJBQXlCLEVBQUUsZ0RBQWdEO1NBQzVFLENBQUM7UUFFRixZQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUMvQixFQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ3ZDLENBQ0YsQ0FBQztRQUVGLG1CQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQ3RDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDaEUsQ0FDRixDQUFDO1FBRUYsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFDekMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUNoRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQ3hELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDekcsQ0FDRixDQUFDO1FBRUYsa0JBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFDckMsY0FBYyxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FDakUsRUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQ3ZDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxBQUFELEVBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQzNHLENBQ0YsQ0FBQztRQUVGLGNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFDakMsY0FBYyxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FDakUsRUFDRCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUU7WUFDbkYsT0FBTyxJQUFJLENBQUMsT0FBTztpQkFDaEIsYUFBYSxDQUFDO2dCQUNiLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxnQkFBZ0I7Z0JBQ2hCLGlCQUFpQjthQUNsQixDQUFDO2lCQUNELElBQUksQ0FDSCxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDZCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztnQkFDL0IsU0FBUztnQkFDVCxhQUFhO2FBQ2QsQ0FBQyxDQUNILEVBQ0QsVUFBVSxDQUFDLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDNUUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUVGLFdBQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDOUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtnQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQzFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUM5RCxVQUFVLENBQUMsQ0FBQyxNQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN6RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCx3QkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQ3BELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDO29CQUNyRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUI7b0JBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QjtpQkFDMUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFDOUIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUNsRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQ2pELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQ25FLENBQ0YsQ0FBQztRQUVGLFlBQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFDL0IsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2FBQ3JFO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFDMUQsVUFBVSxDQUFDLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDMUUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUVGLG1CQUFjLEdBQUcsWUFBWSxDQUMzQixHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQ3RDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUN2RyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FDSCxFQUNILEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO0lBU0MsQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlzdE5vdGlmaWNhdGlvblNlcnZpY2UsIExpc3RTZXJ2aWNlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcclxuaW1wb3J0IHsgU3RvcmUsIHNlbGVjdCB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZXhoYXVzdE1hcCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0U2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlzdEVmZmVjdHM8VCwgRSA9IHVua25vd24sIFMgPSBULCBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XHJcbiAgdGV4dHMgPSB7XHJcbiAgICBkZWxldGVDb25maXJtYXRpb25UaXRsZTogJ0RlbGV0ZSByZXNvdXJjZXMnLFxyXG4gICAgZGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB0byBkZWxldGUgdGhlIHNlbGVjdGVkIHJlc291cmNlcz8nXHJcbiAgfTtcclxuXHJcbiAgcmVsb2FkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZSxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVNvcnRpbmcsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VGaWx0ZXJpbmcsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdpbmdPcHRpb25zLFxyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmluaXRpYWxpemUsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5yZXNldCxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5wYXRjaFN1Y2Nlc3MsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5kZWxldGVTdWNjZXNzXHJcbiAgICAgICksXHJcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKCkpXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgbG9hZEZpcnN0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZEZpcnN0UGFnZSksXHJcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIoeyBwYWdlTnVtYmVyOiAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQcmV2aW91c1BhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQcmV2aW91c1BhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgZmlsdGVyKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IGN1cnJlbnRQYWdlTnVtYmVyID4gMSksXHJcbiAgICAgIG1hcCgoWywgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIoeyBwYWdlTnVtYmVyOiBjdXJyZW50UGFnZU51bWJlciAtIDEgfSkpXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgbG9hZE5leHRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5sb2FkTmV4dFBhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5pc0xhc3RQYWdlKSksXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIpKVxyXG4gICAgICApLFxyXG4gICAgICBmaWx0ZXIoKFssIGlzTGFzdFBhZ2VdKSA9PiAhaXNMYXN0UGFnZSksXHJcbiAgICAgIG1hcCgoWywgLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnZU51bWJlcih7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyICsgMSB9KSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBsb2FkUGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRQYWdpbmdPcHRpb25zKSksXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0U29ydGluZ09wdGlvbnMpKSxcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRGaWx0ZXJpbmdPcHRpb25zKSksXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0UmVxdWVzdFBhcmFtZXRlcnMpKVxyXG4gICAgICApLFxyXG4gICAgICBzd2l0Y2hNYXAoKFssIHBhZ2luZ09wdGlvbnMsIHNvcnRpbmdPcHRpb25zLCBmaWx0ZXJpbmdPcHRpb25zLCByZXF1ZXN0UGFyYW1ldGVyc10pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlXHJcbiAgICAgICAgICAubG9hZFJlc291cmNlcyh7XHJcbiAgICAgICAgICAgIHBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICAgIHNvcnRpbmdPcHRpb25zLFxyXG4gICAgICAgICAgICBmaWx0ZXJpbmdPcHRpb25zLFxyXG4gICAgICAgICAgICByZXF1ZXN0UGFyYW1ldGVyc1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzb3VyY2VzID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3Moe1xyXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgcGFnaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBwYXRjaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMucGF0Y2gpLFxyXG4gICAgICBleGhhdXN0TWFwKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UucGF0Y2hSZXNvdXJjZXMpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hSZXNvdXJjZXMgbm90IGltcGxlbWVudCBpbiB0aGUgTGlzdFNlcnZpY2UnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UucGF0Y2hSZXNvdXJjZXMoYWN0aW9uLnJlc291cmNlSWRzLCBhY3Rpb24ucmVzb3VyY2UpLnBpcGUoXHJcbiAgICAgICAgICBtYXAocmVzb3VyY2VzID0+IHRoaXMubGlzdEFjdGlvbnMucGF0Y2hTdWNjZXNzKHsgcmVzb3VyY2VzIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5saXN0QWN0aW9ucy5wYXRjaEZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVGhlIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQuIFRIZSBBYnN0cmFjdEVmZmVjdCB3aWxsIG5vdCBiZSByZXNwb25zaWJsZSBmb3IgaXQgYW55bW9yZVxyXG4gICAqL1xyXG4gIHNob3dSZW1vdmFsc0RpYWxvZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uKSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlPy5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm9wZW5Db25maXJtYXRpb25EaWFsb2coe1xyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UsXHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbHRlcihjb25maXJtZWQgPT4gY29uZmlybWVkKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkcykpKSxcclxuICAgICAgZmlsdGVyKChbLCByZXNvdXJjZUlkc10pID0+ICEhcmVzb3VyY2VJZHMubGVuZ3RoKSxcclxuICAgICAgbWFwKChbLCByZXNvdXJjZUlkc10pID0+IHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlKHsgcmVzb3VyY2VJZHMgfSkpXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgZGVsZXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5kZWxldGUpLFxyXG4gICAgICBleGhhdXN0TWFwKCh7IHJlc291cmNlSWRzIH0pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZXMpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGVsZXRlUmVzb3VyY2VzIG5vdCBpbXBsZW1lbnQgaW4gdGhlIExpc3RTZXJ2aWNlJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRlbGV0ZVJlc291cmNlcyhyZXNvdXJjZUlkcykucGlwZShcclxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MoeyByZXNvdXJjZUlkcyB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBkZWxldGVTdWNjZXNzJCA9IGNyZWF0ZUVmZmVjdChcclxuICAgICgpID0+XHJcbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5kZWxldGVTdWNjZXNzKSxcclxuICAgICAgICB0YXAoKHsgcmVzb3VyY2VJZHMgfSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlPy5vbkxpc3REZWxldGUocmVzb3VyY2VJZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlLCB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUsIHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKSxcclxuICAgICAgICB0YXAoKHsgZXJyb3JzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZT8ub25MaXN0RXJyb3JzKGVycm9ycyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cclxuICApO1xyXG5cclxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2U6IExpc3RTZXJ2aWNlPFQsIFMsIFBhcmFtcz4sXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlzdEFjdGlvbnM6IExpc3RBY3Rpb25zPFQsIEUsIFMsIFBhcmFtcz4sXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlzdFNlbGVjdG9yczogTGlzdFNlbGVjdG9yczxTLCBFLCBQYXJhbXM+LFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U/OiBMaXN0Tm90aWZpY2F0aW9uU2VydmljZTxFPlxyXG4gICkge31cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { ReducerManager, createFeatureSelector } from '@ngrx/store';
|
|
3
|
+
import { LIST_FEATURE_KEY } from '../models/list.model';
|
|
4
|
+
import { createListActions } from './list-actions';
|
|
5
|
+
import { createListEntityAdapter, createListReducer } from './list-reducer';
|
|
6
|
+
import { createListSelectors } from './list-selectors';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngrx/store";
|
|
9
|
+
export class AbstractListReducerManager {
|
|
10
|
+
constructor(reducerManager, featureKey) {
|
|
11
|
+
this.reducerManager = reducerManager;
|
|
12
|
+
this.featureKey = featureKey;
|
|
13
|
+
this.actions = this.getActions();
|
|
14
|
+
this.entityAdapter = this.getEntityAdapter();
|
|
15
|
+
this.addReducer();
|
|
16
|
+
this.selectors = this.getSelectors();
|
|
17
|
+
}
|
|
18
|
+
getActions() {
|
|
19
|
+
return createListActions(this.featureKey);
|
|
20
|
+
}
|
|
21
|
+
getEntityAdapter() {
|
|
22
|
+
return createListEntityAdapter();
|
|
23
|
+
}
|
|
24
|
+
addReducer() {
|
|
25
|
+
const currentReducers = Object.keys(this.reducerManager.currentReducers || {});
|
|
26
|
+
if (!currentReducers.includes(this.featureKey)) {
|
|
27
|
+
const reducer = createListReducer(this.entityAdapter, this.actions);
|
|
28
|
+
this.reducerManager.addReducer(this.featureKey, reducer);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
getSelectors() {
|
|
32
|
+
const getState = createFeatureSelector(this.featureKey);
|
|
33
|
+
return createListSelectors(this.entityAdapter, getState);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
AbstractListReducerManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractListReducerManager, deps: [{ token: i1.ReducerManager }, { token: LIST_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
AbstractListReducerManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractListReducerManager });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractListReducerManager, decorators: [{
|
|
39
|
+
type: Injectable
|
|
40
|
+
}], ctorParameters: function () { return [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [LIST_FEATURE_KEY]
|
|
43
|
+
}] }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi9zdGF0ZS1nZW5lcmF0b3IvYWJzdHJhY3QtbGlzdC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUF5QyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFHdkQsTUFBTSxPQUFnQiwwQkFBMEI7SUFVOUMsWUFDbUIsY0FBOEIsRUFDSixVQUFrQjtRQUQ1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRTdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFUyxVQUFVO1FBQ2xCLE9BQU8saUJBQWlCLENBQWtCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE9BQU8sdUJBQXVCLEVBQUssQ0FBQztJQUN0QyxDQUFDO0lBRVMsVUFBVTtRQUNsQixNQUFNLGVBQWUsR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBa0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFUyxZQUFZO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUEwQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakYsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7O3VIQXhDbUIsMEJBQTBCLGdEQVlwQyxnQkFBZ0I7MkhBWk4sMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRC9DLFVBQVU7OzBCQWFOLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eUFkYXB0ZXIgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBSZWR1Y2VyTWFuYWdlciwgY3JlYXRlRmVhdHVyZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBMSVNUX0ZFQVRVUkVfS0VZLCBMaXN0QWN0aW9ucywgTGlzdFNlbGVjdG9ycywgTGlzdFN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBjcmVhdGVMaXN0QWN0aW9ucyB9IGZyb20gJy4vbGlzdC1hY3Rpb25zJztcclxuaW1wb3J0IHsgY3JlYXRlTGlzdEVudGl0eUFkYXB0ZXIsIGNyZWF0ZUxpc3RSZWR1Y2VyIH0gZnJvbSAnLi9saXN0LXJlZHVjZXInO1xyXG5pbXBvcnQgeyBjcmVhdGVMaXN0U2VsZWN0b3JzIH0gZnJvbSAnLi9saXN0LXNlbGVjdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdExpc3RSZWR1Y2VyTWFuYWdlcjxcclxuICBUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICBFLFxyXG4gIFMgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0gVCxcclxuICBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbj4ge1xyXG4gIGFjdGlvbnM6IExpc3RBY3Rpb25zPFQsIEUsIFMsIFBhcmFtcz47XHJcbiAgc2VsZWN0b3JzOiBMaXN0U2VsZWN0b3JzPFMsIEUsIFBhcmFtcz47XHJcbiAgcHJpdmF0ZSBlbnRpdHlBZGFwdGVyOiBFbnRpdHlBZGFwdGVyPFM+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVkdWNlck1hbmFnZXI6IFJlZHVjZXJNYW5hZ2VyLFxyXG4gICAgQEluamVjdChMSVNUX0ZFQVRVUkVfS0VZKSBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVLZXk6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5hY3Rpb25zID0gdGhpcy5nZXRBY3Rpb25zKCk7XHJcbiAgICB0aGlzLmVudGl0eUFkYXB0ZXIgPSB0aGlzLmdldEVudGl0eUFkYXB0ZXIoKTtcclxuICAgIHRoaXMuYWRkUmVkdWNlcigpO1xyXG4gICAgdGhpcy5zZWxlY3RvcnMgPSB0aGlzLmdldFNlbGVjdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEFjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlTGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPih0aGlzLmZlYXR1cmVLZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdHlBZGFwdGVyKCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZUxpc3RFbnRpdHlBZGFwdGVyPFM+KCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWRkUmVkdWNlcigpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRSZWR1Y2Vyczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLnJlZHVjZXJNYW5hZ2VyLmN1cnJlbnRSZWR1Y2VycyB8fCB7fSk7XHJcblxyXG4gICAgaWYgKCFjdXJyZW50UmVkdWNlcnMuaW5jbHVkZXModGhpcy5mZWF0dXJlS2V5KSkge1xyXG4gICAgICBjb25zdCByZWR1Y2VyID0gY3JlYXRlTGlzdFJlZHVjZXI8VCwgRSwgUywgUGFyYW1zPih0aGlzLmVudGl0eUFkYXB0ZXIsIHRoaXMuYWN0aW9ucyk7XHJcbiAgICAgIHRoaXMucmVkdWNlck1hbmFnZXIuYWRkUmVkdWNlcih0aGlzLmZlYXR1cmVLZXksIHJlZHVjZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFNlbGVjdG9ycygpIHtcclxuICAgIGNvbnN0IGdldFN0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+Pih0aGlzLmZlYXR1cmVLZXkpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZUxpc3RTZWxlY3RvcnModGhpcy5lbnRpdHlBZGFwdGVyLCBnZXRTdGF0ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { select } from '@ngrx/store';
|
|
2
|
+
export class AbstractListFacade {
|
|
3
|
+
constructor(store, listActions, listSelectors) {
|
|
4
|
+
this.store = store;
|
|
5
|
+
this.listActions = listActions;
|
|
6
|
+
this.listSelectors = listSelectors;
|
|
7
|
+
this.resources$ = this.store.pipe(select(this.listSelectors.getAll));
|
|
8
|
+
this.loadingState$ = this.store.pipe(select(this.listSelectors.getLoadingState));
|
|
9
|
+
this.requestState$ = this.store.pipe(select(this.listSelectors.getRequestState));
|
|
10
|
+
this.errors$ = this.store.pipe(select(this.listSelectors.getErrors));
|
|
11
|
+
this.isReady$ = this.store.pipe(select(this.listSelectors.isReady));
|
|
12
|
+
this.areSelectedReady$ = this.store.pipe(select(this.listSelectors.areSelectedReady));
|
|
13
|
+
this.currentPageData$ = this.store.pipe(select(this.listSelectors.getCurrentPageData));
|
|
14
|
+
this.currentPageNumber$ = this.store.pipe(select(this.listSelectors.getCurrentPageNumber));
|
|
15
|
+
this.filteringOptions$ = this.store.pipe(select(this.listSelectors.getFilteringOptions));
|
|
16
|
+
this.requestParameters$ = this.store.pipe(select(this.listSelectors.getRequestParameters));
|
|
17
|
+
this.lastPageNumber$ = this.store.pipe(select(this.listSelectors.getLastPageNumber));
|
|
18
|
+
this.pagingOptions$ = this.store.pipe(select(this.listSelectors.getPagingOptions));
|
|
19
|
+
this.requestOptions$ = this.store.pipe(select(this.listSelectors.getRequestOptions));
|
|
20
|
+
this.sortingOptions$ = this.store.pipe(select(this.listSelectors.getSortingOptions));
|
|
21
|
+
this.selectedItems$ = this.store.pipe(select(this.listSelectors.getSelectedItems));
|
|
22
|
+
this.totalCount$ = this.store.pipe(select(this.listSelectors.getTotalCount));
|
|
23
|
+
}
|
|
24
|
+
setPageSize(props) {
|
|
25
|
+
this.store.dispatch(this.listActions.setPageSize(props));
|
|
26
|
+
}
|
|
27
|
+
setFiltering(props) {
|
|
28
|
+
this.store.dispatch(this.listActions.setFiltering(props));
|
|
29
|
+
}
|
|
30
|
+
setSorting(props) {
|
|
31
|
+
this.store.dispatch(this.listActions.setSorting(props));
|
|
32
|
+
}
|
|
33
|
+
setRequestParameters(props) {
|
|
34
|
+
this.store.dispatch(this.listActions.setRequestParams(props));
|
|
35
|
+
}
|
|
36
|
+
changeFiltering(props) {
|
|
37
|
+
this.store.dispatch(this.listActions.changeFiltering(props));
|
|
38
|
+
}
|
|
39
|
+
changePagingOptions(props) {
|
|
40
|
+
this.store.dispatch(this.listActions.changePagingOptions(props));
|
|
41
|
+
}
|
|
42
|
+
changePageSize(props) {
|
|
43
|
+
this.store.dispatch(this.listActions.changePageSize(props));
|
|
44
|
+
}
|
|
45
|
+
changePageNumber(props) {
|
|
46
|
+
this.store.dispatch(this.listActions.changePageNumber(props));
|
|
47
|
+
}
|
|
48
|
+
changeSelectedResources(props) {
|
|
49
|
+
this.store.dispatch(this.listActions.changeSelectedResources(props));
|
|
50
|
+
}
|
|
51
|
+
changeSorting(props) {
|
|
52
|
+
this.store.dispatch(this.listActions.changeSorting(props));
|
|
53
|
+
}
|
|
54
|
+
changeRequestParams(props) {
|
|
55
|
+
this.store.dispatch(this.listActions.changeRequestParams(props));
|
|
56
|
+
}
|
|
57
|
+
loadPage() {
|
|
58
|
+
this.store.dispatch(this.listActions.loadPage());
|
|
59
|
+
}
|
|
60
|
+
loadFirstPage() {
|
|
61
|
+
this.store.dispatch(this.listActions.loadFirstPage());
|
|
62
|
+
}
|
|
63
|
+
loadNextPage() {
|
|
64
|
+
this.store.dispatch(this.listActions.loadNextPage());
|
|
65
|
+
}
|
|
66
|
+
loadPreviousPage() {
|
|
67
|
+
this.store.dispatch(this.listActions.loadPreviousPage());
|
|
68
|
+
}
|
|
69
|
+
patch(props) {
|
|
70
|
+
this.store.dispatch(this.listActions.patch(props));
|
|
71
|
+
}
|
|
72
|
+
delete(props) {
|
|
73
|
+
this.store.dispatch(this.listActions.delete(props));
|
|
74
|
+
}
|
|
75
|
+
initialize() {
|
|
76
|
+
this.store.dispatch(this.listActions.initialize());
|
|
77
|
+
}
|
|
78
|
+
reinitialize() {
|
|
79
|
+
this.store.dispatch(this.listActions.reset());
|
|
80
|
+
}
|
|
81
|
+
resetRequestState() {
|
|
82
|
+
this.store.dispatch(this.listActions.resetRequestState());
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @deprecated The method will be removed. The AbstractFacade will not be responsible for it anymore
|
|
86
|
+
*/
|
|
87
|
+
showRemovalsConfirmation() {
|
|
88
|
+
this.store.dispatch(this.listActions.showRemovalsConfirmation());
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvbGliL3N0YXRlLWdlbmVyYXRvci9hYnN0cmFjdC1saXN0LmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE1BQU0sT0FBZ0Isa0JBQWtCO0lBa0J0QyxZQUNxQixLQUFZLEVBQ2QsV0FBeUMsRUFDekMsYUFBMEM7UUFGeEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUE4QjtRQUN6QyxrQkFBYSxHQUFiLGFBQWEsQ0FBNkI7UUFwQnBELGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUM1RSxrQkFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsWUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsYUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0Qsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLHFCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUNsRix1QkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDdEYsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLHVCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUN0RixvQkFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNoRixtQkFBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNoRixvQkFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNoRixtQkFBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM5RSxnQkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFNOUUsQ0FBQztJQUVKLFdBQVcsQ0FBQyxLQUFpRTtRQUMzRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBa0U7UUFDN0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWdFO1FBQ3pFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQXNFO1FBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXFFO1FBQ25GLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQXlFO1FBQzNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQW9FO1FBQ2pGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQXNFO1FBQ3JGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBNkU7UUFDbkcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBbUU7UUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBeUU7UUFDM0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQTJEO1FBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUE0RDtRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uUGF5bG9hZCB9IGZyb20gJ0BuZ2R1eC9zdG9yZS1jb21tb24nO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBMaXN0QWN0aW9ucywgTGlzdFNlbGVjdG9ycyB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdExpc3RGYWNhZGU8VCwgRSwgUyA9IFQsIFBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcclxuICByZWFkb25seSByZXNvdXJjZXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0QWxsKSk7XHJcbiAgcmVhZG9ubHkgbG9hZGluZ1N0YXRlJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldExvYWRpbmdTdGF0ZSkpO1xyXG4gIHJlYWRvbmx5IHJlcXVlc3RTdGF0ZSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRSZXF1ZXN0U3RhdGUpKTtcclxuICByZWFkb25seSBlcnJvcnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0RXJyb3JzKSk7XHJcbiAgcmVhZG9ubHkgaXNSZWFkeSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5pc1JlYWR5KSk7XHJcbiAgcmVhZG9ubHkgYXJlU2VsZWN0ZWRSZWFkeSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5hcmVTZWxlY3RlZFJlYWR5KSk7XHJcbiAgcmVhZG9ubHkgY3VycmVudFBhZ2VEYXRhJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlRGF0YSkpO1xyXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlTnVtYmVyJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlTnVtYmVyKSk7XHJcbiAgcmVhZG9ubHkgZmlsdGVyaW5nT3B0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRGaWx0ZXJpbmdPcHRpb25zKSk7XHJcbiAgcmVhZG9ubHkgcmVxdWVzdFBhcmFtZXRlcnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0UmVxdWVzdFBhcmFtZXRlcnMpKTtcclxuICByZWFkb25seSBsYXN0UGFnZU51bWJlciQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRMYXN0UGFnZU51bWJlcikpO1xyXG4gIHJlYWRvbmx5IHBhZ2luZ09wdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0UGFnaW5nT3B0aW9ucykpO1xyXG4gIHJlYWRvbmx5IHJlcXVlc3RPcHRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFJlcXVlc3RPcHRpb25zKSk7XHJcbiAgcmVhZG9ubHkgc29ydGluZ09wdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0U29ydGluZ09wdGlvbnMpKTtcclxuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkSXRlbXMpKTtcclxuICByZWFkb25seSB0b3RhbENvdW50JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFRvdGFsQ291bnQpKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0QWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdFNlbGVjdG9yczogTGlzdFNlbGVjdG9yczxTLCBFLCBQYXJhbXM+XHJcbiAgKSB7fVxyXG5cclxuICBzZXRQYWdlU2l6ZShwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+WydzZXRQYWdlU2l6ZSddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnNldFBhZ2VTaXplKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXJpbmcocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPlsnc2V0RmlsdGVyaW5nJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuc2V0RmlsdGVyaW5nKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBzZXRTb3J0aW5nKHByb3BzOiBBY3Rpb25QYXlsb2FkPExpc3RBY3Rpb25zPFQsIEUsIFMsIFBhcmFtcz5bJ3NldFNvcnRpbmcnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5zZXRTb3J0aW5nKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBzZXRSZXF1ZXN0UGFyYW1ldGVycyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+WydzZXRSZXF1ZXN0UGFyYW1zJ10+KSB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuc2V0UmVxdWVzdFBhcmFtcyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRmlsdGVyaW5nKHByb3BzOiBBY3Rpb25QYXlsb2FkPExpc3RBY3Rpb25zPFQsIEUsIFMsIFBhcmFtcz5bJ2NoYW5nZUZpbHRlcmluZyddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZUZpbHRlcmluZyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnaW5nT3B0aW9ucyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+WydjaGFuZ2VQYWdpbmdPcHRpb25zJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnaW5nT3B0aW9ucyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZVNpemUocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPlsnY2hhbmdlUGFnZVNpemUnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZShwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZU51bWJlcihwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+WydjaGFuZ2VQYWdlTnVtYmVyJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnZU51bWJlcihwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU2VsZWN0ZWRSZXNvdXJjZXMocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPlsnY2hhbmdlU2VsZWN0ZWRSZXNvdXJjZXMnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VTZWxlY3RlZFJlc291cmNlcyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU29ydGluZyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+WydjaGFuZ2VTb3J0aW5nJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlU29ydGluZyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUmVxdWVzdFBhcmFtcyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+WydjaGFuZ2VSZXF1ZXN0UGFyYW1zJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUmVxdWVzdFBhcmFtcyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFBhZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2UoKSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRmlyc3RQYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmxvYWRGaXJzdFBhZ2UoKSk7XHJcbiAgfVxyXG5cclxuICBsb2FkTmV4dFBhZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMubG9hZE5leHRQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFByZXZpb3VzUGFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5sb2FkUHJldmlvdXNQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2gocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPlsncGF0Y2gnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5wYXRjaChwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKHByb3BzOiBBY3Rpb25QYXlsb2FkPExpc3RBY3Rpb25zPFQsIEUsIFMsIFBhcmFtcz5bJ2RlbGV0ZSddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZShwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5pbml0aWFsaXplKCkpO1xyXG4gIH1cclxuXHJcbiAgcmVpbml0aWFsaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnJlc2V0KCkpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRSZXF1ZXN0U3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMucmVzZXRSZXF1ZXN0U3RhdGUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZC4gVGhlIEFic3RyYWN0RmFjYWRlIHdpbGwgbm90IGJlIHJlc3BvbnNpYmxlIGZvciBpdCBhbnltb3JlXHJcbiAgICovXHJcbiAgc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbigpKTtcclxuICB9XHJcbn1cclxuIl19
|