ngrx-entity-crud 12.0.6-beta.2
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 +259 -0
- package/bundles/ngrx-entity-crud.umd.js +1829 -0
- package/bundles/ngrx-entity-crud.umd.js.map +1 -0
- package/esm2015/lib/actions.js +88 -0
- package/esm2015/lib/base-crud-gql.service.js +71 -0
- package/esm2015/lib/base-crud.service.js +136 -0
- package/esm2015/lib/create_adapter.js +14 -0
- package/esm2015/lib/effect.js +467 -0
- package/esm2015/lib/entity_state.js +23 -0
- package/esm2015/lib/ibase-crud-service.js +2 -0
- package/esm2015/lib/j-ngrx-filter.js +133 -0
- package/esm2015/lib/models.js +17 -0
- package/esm2015/lib/reducer.js +353 -0
- package/esm2015/lib/state_selectors.js +56 -0
- package/esm2015/lib/utils.js +19 -0
- package/esm2015/ngrx-entity-crud.js +5 -0
- package/esm2015/public-api.js +7 -0
- package/fesm2015/ngrx-entity-crud.js +1367 -0
- package/fesm2015/ngrx-entity-crud.js.map +1 -0
- package/lib/actions.d.ts +5 -0
- package/lib/actions.d.ts.map +1 -0
- package/lib/base-crud-gql.service.d.ts +19 -0
- package/lib/base-crud-gql.service.d.ts.map +1 -0
- package/lib/base-crud.service.d.ts +34 -0
- package/lib/base-crud.service.d.ts.map +1 -0
- package/lib/create_adapter.d.ts +6 -0
- package/lib/create_adapter.d.ts.map +1 -0
- package/lib/effect.d.ts +132 -0
- package/lib/effect.d.ts.map +1 -0
- package/lib/entity_state.d.ts +9 -0
- package/lib/entity_state.d.ts.map +1 -0
- package/lib/ibase-crud-service.d.ts +13 -0
- package/lib/ibase-crud-service.d.ts.map +1 -0
- package/lib/j-ngrx-filter.d.ts +14 -0
- package/lib/j-ngrx-filter.d.ts.map +1 -0
- package/lib/models.d.ts +494 -0
- package/lib/models.d.ts.map +1 -0
- package/lib/reducer.d.ts +11 -0
- package/lib/reducer.d.ts.map +1 -0
- package/lib/state_selectors.d.ts +5 -0
- package/lib/state_selectors.d.ts.map +1 -0
- package/lib/utils.d.ts +8 -0
- package/lib/utils.d.ts.map +1 -0
- package/ngrx-entity-crud.d.ts +5 -0
- package/ngrx-entity-crud.d.ts.map +1 -0
- package/ngrx-entity-crud.metadata.json +1 -0
- package/package.json +41 -0
- package/public-api.d.ts +7 -0
- package/public-api.d.ts.map +1 -0
- package/schematics/auth/files/model/auth.ts +17 -0
- package/schematics/auth/files/store/auth-store/actions.ts +30 -0
- package/schematics/auth/files/store/auth-store/auth-mock.service.ts +95 -0
- package/schematics/auth/files/store/auth-store/auth-store.module.ts +34 -0
- package/schematics/auth/files/store/auth-store/auth.guard.ts +44 -0
- package/schematics/auth/files/store/auth-store/auth.service.ts +28 -0
- package/schematics/auth/files/store/auth-store/conf.ts +2 -0
- package/schematics/auth/files/store/auth-store/effects.ts +53 -0
- package/schematics/auth/files/store/auth-store/index.d.ts +13 -0
- package/schematics/auth/files/store/auth-store/index.ts +13 -0
- package/schematics/auth/files/store/auth-store/names.ts +3 -0
- package/schematics/auth/files/store/auth-store/reducer.ts +16 -0
- package/schematics/auth/files/store/auth-store/selectors.ts +51 -0
- package/schematics/auth/files/store/auth-store/state.ts +16 -0
- package/schematics/auth/files/views/login/components/logout-button/logout-button.component.ts +49 -0
- package/schematics/auth/files/views/login/login-main/login-main.component.html +25 -0
- package/schematics/auth/files/views/login/login-main/login-main.component.ts +57 -0
- package/schematics/auth/files/views/login/login-routing.module.ts +30 -0
- package/schematics/auth/files/views/login/login.module.ts +30 -0
- package/schematics/auth/index.d.ts +2 -0
- package/schematics/auth/index.js +77 -0
- package/schematics/auth/index.js.map +1 -0
- package/schematics/auth/schema.json +21 -0
- package/schematics/auth0/files/store/auth-store/actions.ts +21 -0
- package/schematics/auth0/files/store/auth-store/auth-store.module.ts +32 -0
- package/schematics/auth0/files/store/auth-store/auth.guard.ts +44 -0
- package/schematics/auth0/files/store/auth-store/authentication.service.ts +32 -0
- package/schematics/auth0/files/store/auth-store/conf.ts +2 -0
- package/schematics/auth0/files/store/auth-store/effects.ts +59 -0
- package/schematics/auth0/files/store/auth-store/index.d.ts +13 -0
- package/schematics/auth0/files/store/auth-store/index.ts +13 -0
- package/schematics/auth0/files/store/auth-store/login.component.ts +75 -0
- package/schematics/auth0/files/store/auth-store/names.ts +3 -0
- package/schematics/auth0/files/store/auth-store/profile.ts +12 -0
- package/schematics/auth0/files/store/auth-store/reducer.ts +23 -0
- package/schematics/auth0/files/store/auth-store/selectors.ts +24 -0
- package/schematics/auth0/files/store/auth-store/state.ts +11 -0
- package/schematics/auth0/index.d.ts +2 -0
- package/schematics/auth0/index.js +67 -0
- package/schematics/auth0/index.js.map +1 -0
- package/schematics/auth0/schema.json +21 -0
- package/schematics/collection.json +30 -0
- package/schematics/my-utility.d.ts +58 -0
- package/schematics/my-utility.js +257 -0
- package/schematics/my-utility.js.map +1 -0
- package/schematics/ng-add/files/root-store/index.d.ts +8 -0
- package/schematics/ng-add/files/root-store/index.ts +8 -0
- package/schematics/ng-add/files/root-store/root-reducer.ts +11 -0
- package/schematics/ng-add/files/root-store/root-store.module.ts +29 -0
- package/schematics/ng-add/files/root-store/router-store/actions.ts +27 -0
- package/schematics/ng-add/files/root-store/router-store/effects.ts +65 -0
- package/schematics/ng-add/files/root-store/router-store/index.d.ts +11 -0
- package/schematics/ng-add/files/root-store/router-store/index.ts +11 -0
- package/schematics/ng-add/files/root-store/router-store/pop-up-base.component.ts +83 -0
- package/schematics/ng-add/files/root-store/router-store/pop-up-base.module.ts +24 -0
- package/schematics/ng-add/files/root-store/router-store/reducer.ts +31 -0
- package/schematics/ng-add/files/root-store/router-store/router-store.module.ts +30 -0
- package/schematics/ng-add/files/root-store/router-store/selectors.ts +63 -0
- package/schematics/ng-add/files/root-store/router-store/state.ts +18 -0
- package/schematics/ng-add/files/root-store/selectors.ts +20 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/actions.ts +11 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/effects.ts +10 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/index.d.ts +13 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/index.ts +13 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/names.ts +3 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/operators.ts +24 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/reducer.ts +8 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/selectors.ts +41 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/slide-menu-store.module.ts +27 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/state.ts +14 -0
- package/schematics/ng-add/files/root-store/state.ts +5 -0
- package/schematics/ng-add/index.d.ts +2 -0
- package/schematics/ng-add/index.js +78 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.json +22 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +52 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +57 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +7 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +50 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +15 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +23 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +36 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__.module.ts +33 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +1 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +16 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +1 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +27 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +1 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +18 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +36 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__.module.ts +26 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +38 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +50 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +30 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +101 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +12 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +21 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +37 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__.module.ts +49 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-create-many-test-__clazz@dasherize__.component.ts +46 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-delete-__clazz@dasherize__.component.ts +35 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-edit-many-test-__clazz@dasherize__.component.ts +45 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-new-__clazz@dasherize__.component.ts +45 -0
- package/schematics/section/index.d.ts +2 -0
- package/schematics/section/index.js +56 -0
- package/schematics/section/index.js.map +1 -0
- package/schematics/section/schema.json +39 -0
- package/schematics/store/files/base-model/__clazz@dasherize__.ts +8 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__-store.module.ts +26 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.actions.ts +9 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.effects.ts +11 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.names.ts +3 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.reducer.ts +8 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.selectors.ts +18 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.state.ts +6 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/index.d.ts +13 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/index.ts +13 -0
- package/schematics/store/files/crud-graphql/__clazz@dasherize__-store/__clazz@dasherize__.criteria.ts +39 -0
- package/schematics/store/files/crud-graphql/__clazz@dasherize__-store/__clazz@dasherize__.graphql +34 -0
- package/schematics/store/files/crud-model/__clazz@dasherize__.ts +8 -0
- package/schematics/store/files/crud-service/__clazz@dasherize__.service.ts +11 -0
- package/schematics/store/files/crud-service-graphql/__clazz@dasherize__.service.ts +16 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__-store.module.ts +26 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.actions.ts +55 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.effects.ts +90 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.names.ts +3 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.reducer.ts +103 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.selectors.ts +26 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.state.ts +11 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/index.d.ts +15 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/index.ts +15 -0
- package/schematics/store/index.d.ts +2 -0
- package/schematics/store/index.js +100 -0
- package/schematics/store/index.js.map +1 -0
- package/schematics/store/schema.json +45 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { map, mergeMap } from 'rxjs/operators';
|
|
4
|
+
import { of } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
export class BaseCrudService {
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.service = '';
|
|
11
|
+
this.id = 'id';
|
|
12
|
+
this.debug = false;
|
|
13
|
+
this.httpOptions = () => {
|
|
14
|
+
return {
|
|
15
|
+
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
this.searchMap = res => res;
|
|
19
|
+
this.getId = (value) => value[this.id];
|
|
20
|
+
}
|
|
21
|
+
debugMode() {
|
|
22
|
+
this.debug = true;
|
|
23
|
+
}
|
|
24
|
+
create(opt) {
|
|
25
|
+
if (typeof (console) !== 'undefined' && this.debug) {
|
|
26
|
+
console.log('%c BaseCrudService.create()', 'color: #777777');
|
|
27
|
+
console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
|
|
28
|
+
}
|
|
29
|
+
const path = !!opt && !!opt.path ? opt.path : null;
|
|
30
|
+
return this.http.post(`${this.getUrl(path)}`, opt.mutationParams, this.httpOptions());
|
|
31
|
+
}
|
|
32
|
+
createMany(opt) {
|
|
33
|
+
this.checkOptRequest(opt);
|
|
34
|
+
const result = opt.mutationParams.map(mutationParams => {
|
|
35
|
+
const optB = Object.assign(Object.assign({}, opt), { mutationParams });
|
|
36
|
+
return this.create(optB).pipe(map(value => (Object.assign(Object.assign({}, value), { data: [value.data] }))) // trasformo la singola risposta da {data:T} in {data:T[]}
|
|
37
|
+
);
|
|
38
|
+
});
|
|
39
|
+
return of(...result).pipe(mergeMap(value => value));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* metodo introdotto per la verifica di OptRequest
|
|
43
|
+
* nella nuova versione è stato sostituito opt.item e opt.items con opt.mutationParams
|
|
44
|
+
* in modo da renderlo compatibile come nomenclatura a graphql
|
|
45
|
+
* @param opt
|
|
46
|
+
*/
|
|
47
|
+
checkOptRequest(opt) {
|
|
48
|
+
if (opt && opt.hasOwnProperty('item') && !!opt.item) {
|
|
49
|
+
throw new Error('Error, in new versions of the library the "items" or "item" attribute have been replaced by "mutationParams". all project attributes must be renamed.');
|
|
50
|
+
}
|
|
51
|
+
if (opt && opt.hasOwnProperty('items') && !!opt.items) {
|
|
52
|
+
throw new Error('Error, in new versions of the library the "items" or "item" attribute have been replaced by "mutationParams". all project attributes must be renamed.');
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
search(value) {
|
|
57
|
+
if (typeof (console) !== 'undefined' && this.debug) {
|
|
58
|
+
console.log('BaseCrudService.search()');
|
|
59
|
+
console.log('Extended from: ' + this.constructor.name);
|
|
60
|
+
}
|
|
61
|
+
const url = value && value.hasOwnProperty('path') && !!value.path ? value.path.join('/') : '';
|
|
62
|
+
let httpOptions = this.httpOptions();
|
|
63
|
+
if (value && value.hasOwnProperty('queryParams') && !!value.queryParams) {
|
|
64
|
+
httpOptions = (Object.assign(Object.assign({}, httpOptions), { params: value.queryParams }));
|
|
65
|
+
}
|
|
66
|
+
return this.http.get(this.getUrl() + url, httpOptions).pipe(map(this.searchMap));
|
|
67
|
+
}
|
|
68
|
+
select(opt) {
|
|
69
|
+
if (typeof (console) !== 'undefined' && this.debug) {
|
|
70
|
+
console.log('%c BaseCrudService.select()', 'color: #777777');
|
|
71
|
+
console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
|
|
72
|
+
}
|
|
73
|
+
const id = this.getId(opt.queryParams);
|
|
74
|
+
const path = !!opt && !!opt.path ? opt.path : null;
|
|
75
|
+
return this
|
|
76
|
+
.http
|
|
77
|
+
.get(`${this.getUrl(path)}/${id}`, this.httpOptions());
|
|
78
|
+
}
|
|
79
|
+
update(opt) {
|
|
80
|
+
this.checkOptRequest(opt);
|
|
81
|
+
if (typeof (console) !== 'undefined' && this.debug) {
|
|
82
|
+
console.log('%c BaseCrudService.update()', 'color: #777777');
|
|
83
|
+
console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
|
|
84
|
+
}
|
|
85
|
+
const id = this.getId(opt.mutationParams);
|
|
86
|
+
const path = !!opt && !!opt.path ? opt.path : null;
|
|
87
|
+
return this.http.put(`${this.getUrl(path)}/${id}`, opt.mutationParams, this.httpOptions());
|
|
88
|
+
}
|
|
89
|
+
updateMany(opt) {
|
|
90
|
+
this.checkOptRequest(opt);
|
|
91
|
+
const result = opt.mutationParams.map(mutationParams => {
|
|
92
|
+
const optB = Object.assign(Object.assign({}, opt), { mutationParams });
|
|
93
|
+
return this.update(optB).pipe(map(value => (Object.assign(Object.assign({}, value), { data: [value.data] }))) // trasformo la singola risposta da {data:T} in {data:T[]}
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
return of(...result).pipe(mergeMap(value => value));
|
|
97
|
+
}
|
|
98
|
+
delete(opt) {
|
|
99
|
+
this.checkOptRequest(opt);
|
|
100
|
+
if (typeof (console) !== 'undefined' && this.debug) {
|
|
101
|
+
console.log('%c BaseCrudService.delete()', 'color: #777777');
|
|
102
|
+
console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
|
|
103
|
+
}
|
|
104
|
+
const id = this.getId(opt.mutationParams);
|
|
105
|
+
const path = !!opt && !!opt.path ? opt.path : null;
|
|
106
|
+
return this.http.delete(`${this.getUrl(path)}/${id}`, this.httpOptions());
|
|
107
|
+
}
|
|
108
|
+
deleteMany(opt) {
|
|
109
|
+
this.checkOptRequest(opt);
|
|
110
|
+
const result = opt.mutationParams.map(mutationParams => {
|
|
111
|
+
const optB = Object.assign(Object.assign({}, opt), { mutationParams });
|
|
112
|
+
return this.delete(optB);
|
|
113
|
+
});
|
|
114
|
+
return of(...result).pipe(mergeMap(value => value));
|
|
115
|
+
}
|
|
116
|
+
getUrl(path) {
|
|
117
|
+
const result = !!path ? `${this.service}/${path.join('/')}` : this.service;
|
|
118
|
+
if (typeof (console) !== 'undefined' && this.debug) {
|
|
119
|
+
console.log('%c BaseCrudService.getUrl(path?:string[]): string', 'color: #777777');
|
|
120
|
+
console.log('%c path: ' + path, 'color: #777777');
|
|
121
|
+
console.log('%c Extended from: ' + this.constructor.name, 'color: #777777');
|
|
122
|
+
console.log('%c result: ' + result, 'color: #777777');
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
BaseCrudService.ɵprov = i0.ɵɵdefineInjectable({ factory: function BaseCrudService_Factory() { return new BaseCrudService(i0.ɵɵinject(i1.HttpClient)); }, token: BaseCrudService, providedIn: "root" });
|
|
128
|
+
BaseCrudService.decorators = [
|
|
129
|
+
{ type: Injectable, args: [{
|
|
130
|
+
providedIn: 'root'
|
|
131
|
+
},] }
|
|
132
|
+
];
|
|
133
|
+
BaseCrudService.ctorParameters = () => [
|
|
134
|
+
{ type: HttpClient }
|
|
135
|
+
];
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3J4LWVudGl0eS1jcnVkL3NyYy9saWIvYmFzZS1jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBTXBDLE1BQU0sT0FBTyxlQUFlO0lBVTFCLFlBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFSbkMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQUUsR0FBRyxJQUFJLENBQUM7UUFDVixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBU2QsZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDakIsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQzthQUMvRCxDQUFDO1FBQ0osQ0FBQyxDQUFBO1FBeURELGNBQVMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQTZEdkIsVUFBSyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBNUhsQyxDQUFDO0lBTEQsU0FBUztRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFXRCxNQUFNLENBQUMsR0FBa0I7UUFDdkIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFD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QUMsSUFBSSxDQUN2QixRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFJRCxNQUFNLENBQUMsSUFBZTtRQUNwQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzNFLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsbURBQW1ELEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNuRixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDdkQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7O1lBckpGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUk8sVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21hcCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SUNyaXRlcmlhLCBPcHRSZXF1ZXN0LCBSZXNwb25zZX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0lCYXNlQ3J1ZFNlcnZpY2V9IGZyb20gJy4vaWJhc2UtY3J1ZC1zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNydWRTZXJ2aWNlPFQ+IGltcGxlbWVudHMgSUJhc2VDcnVkU2VydmljZTxUPiB7XG5cbiAgc2VydmljZSA9ICcnO1xuICBpZCA9ICdpZCc7XG4gIGRlYnVnID0gZmFsc2U7XG5cbiAgZGVidWdNb2RlKCkge1xuICAgIHRoaXMuZGVidWcgPSB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgfVxuXG4gIGh0dHBPcHRpb25zID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9KVxuICAgIH07XG4gIH1cblxuICBjcmVhdGUob3B0OiBPcHRSZXF1ZXN0PFQ+KTogT2JzZXJ2YWJsZTxSZXNwb25zZTxUPj4ge1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLmNyZWF0ZSgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIGNvbnN0IHBhdGggPSAhIW9wdCAmJiAhIW9wdC5wYXRoID8gb3B0LnBhdGggOiBudWxsO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxSZXNwb25zZTxUPj4oYCR7dGhpcy5nZXRVcmwocGF0aCl9YCwgb3B0Lm11dGF0aW9uUGFyYW1zLCB0aGlzLmh0dHBPcHRpb25zKCkpO1xuICB9XG5cbiAgY3JlYXRlTWFueShvcHQ6IE9wdFJlcXVlc3Q8VFtdIHwgVD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFRbXT4+IHtcbiAgICB0aGlzLmNoZWNrT3B0UmVxdWVzdChvcHQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IChvcHQubXV0YXRpb25QYXJhbXMgYXMgVFtdKS5tYXAobXV0YXRpb25QYXJhbXMgPT4ge1xuICAgICAgY29uc3Qgb3B0QjogT3B0UmVxdWVzdDxUPiA9IHsuLi5vcHQsIG11dGF0aW9uUGFyYW1zfTtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZShvcHRCKS5waXBlKFxuICAgICAgICBtYXAodmFsdWUgPT4gKHsuLi52YWx1ZSwgZGF0YTogW3ZhbHVlLmRhdGFdfSkpIC8vIHRyYXNmb3JtbyBsYSBzaW5nb2xhIHJpc3Bvc3RhIGRhIHtkYXRhOlR9IGluIHtkYXRhOlRbXX1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9mKC4uLnJlc3VsdCkucGlwZShcbiAgICAgIG1lcmdlTWFwKHZhbHVlID0+IHZhbHVlKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogbWV0b2RvIGludHJvZG90dG8gcGVyIGxhIHZlcmlmaWNhIGRpIE9wdFJlcXVlc3RcbiAgICogbmVsbGEgbnVvdmEgdmVyc2lvbmUgw6ggc3RhdG8gc29zdGl0dWl0byBvcHQuaXRlbSBlIG9wdC5pdGVtcyBjb24gb3B0Lm11dGF0aW9uUGFyYW1zXG4gICAqIGluIG1vZG8gZGEgcmVuZGVybG8gY29tcGF0aWJpbGUgY29tZSBub21lbmNsYXR1cmEgYSBncmFwaHFsXG4gICAqIEBwYXJhbSBvcHRcbiAgICovXG4gIGNoZWNrT3B0UmVxdWVzdChvcHQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChvcHQgJiYgb3B0Lmhhc093blByb3BlcnR5KCdpdGVtJykgJiYgISFvcHQuaXRlbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciwgaW4gbmV3IHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHRoZSBcIml0ZW1zXCIgb3IgXCJpdGVtXCIgYXR0cmlidXRlIGhhdmUgYmVlbiByZXBsYWNlZCBieSBcIm11dGF0aW9uUGFyYW1zXCIuIGFsbCBwcm9qZWN0IGF0dHJpYnV0ZXMgbXVzdCBiZSByZW5hbWVkLicpXG4gICAgfVxuICAgIGlmIChvcHQgJiYgb3B0Lmhhc093blByb3BlcnR5KCdpdGVtcycpICYmICEhb3B0Lml0ZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yLCBpbiBuZXcgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgdGhlIFwiaXRlbXNcIiBvciBcIml0ZW1cIiBhdHRyaWJ1dGUgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IFwibXV0YXRpb25QYXJhbXNcIi4gYWxsIHByb2plY3QgYXR0cmlidXRlcyBtdXN0IGJlIHJlbmFtZWQuJylcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZWFyY2godmFsdWU/OiBJQ3JpdGVyaWEpOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFRbXT4+IHtcbiAgICBpZiAodHlwZW9mIChjb25zb2xlKSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coJ0Jhc2VDcnVkU2VydmljZS5zZWFyY2goKScpO1xuICAgICAgY29uc29sZS5sb2coJ0V4dGVuZGVkIGZyb206ICcgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB2YWx1ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgncGF0aCcpICYmICEhdmFsdWUucGF0aCA/IHZhbHVlLnBhdGguam9pbignLycpIDogJyc7XG4gICAgbGV0IGh0dHBPcHRpb25zID0gdGhpcy5odHRwT3B0aW9ucygpO1xuXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCdxdWVyeVBhcmFtcycpICYmICEhdmFsdWUucXVlcnlQYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zID0gKHsuLi5odHRwT3B0aW9ucywgLi4ue3BhcmFtczogdmFsdWUucXVlcnlQYXJhbXN9fSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0VXJsKCkgKyB1cmwsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgbWFwKHRoaXMuc2VhcmNoTWFwKSxcbiAgICApIGFzIE9ic2VydmFibGU8UmVzcG9uc2U8VFtdPj47XG5cbiAgfVxuXG4gIHNlYXJjaE1hcCA9IHJlcyA9PiByZXM7XG5cbiAgc2VsZWN0KG9wdDogSUNyaXRlcmlhKTogT2JzZXJ2YWJsZTxSZXNwb25zZTxUPj4ge1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLnNlbGVjdCgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLmdldElkKG9wdC5xdWVyeVBhcmFtcyk7XG4gICAgY29uc3QgcGF0aCA9ICEhb3B0ICYmICEhb3B0LnBhdGggPyBvcHQucGF0aCA6IG51bGw7XG4gICAgcmV0dXJuIHRoaXNcbiAgICAgIC5odHRwXG4gICAgICAuZ2V0PFJlc3BvbnNlPFQ+PihgJHt0aGlzLmdldFVybChwYXRoKX0vJHtpZH1gLCB0aGlzLmh0dHBPcHRpb25zKCkpO1xuICB9XG5cbiAgdXBkYXRlKG9wdDogT3B0UmVxdWVzdDxUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8VD4+IHtcbiAgICB0aGlzLmNoZWNrT3B0UmVxdWVzdChvcHQpO1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLnVwZGF0ZSgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChvcHQubXV0YXRpb25QYXJhbXMpO1xuICAgIGNvbnN0IHBhdGggPSAhIW9wdCAmJiAhIW9wdC5wYXRoID8gb3B0LnBhdGggOiBudWxsO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFJlc3BvbnNlPFQ+PihgJHt0aGlzLmdldFVybChwYXRoKX0vJHtpZH1gLCBvcHQubXV0YXRpb25QYXJhbXMsIHRoaXMuaHR0cE9wdGlvbnMoKSk7XG4gIH1cblxuICB1cGRhdGVNYW55KG9wdDogT3B0UmVxdWVzdDxUW10gfCBUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8VFtdPj4ge1xuICAgIHRoaXMuY2hlY2tPcHRSZXF1ZXN0KG9wdCk7XG4gICAgY29uc3QgcmVzdWx0ID0gKG9wdC5tdXRhdGlvblBhcmFtcyBhcyBUW10pLm1hcChtdXRhdGlvblBhcmFtcyA9PiB7XG4gICAgICBjb25zdCBvcHRCOiBPcHRSZXF1ZXN0PFQ+ID0gey4uLm9wdCwgbXV0YXRpb25QYXJhbXN9O1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKG9wdEIpLnBpcGUoXG4gICAgICAgIG1hcCh2YWx1ZSA9PiAoey4uLnZhbHVlLCBkYXRhOiBbdmFsdWUuZGF0YV19KSkgLy8gdHJhc2Zvcm1vIGxhIHNpbmdvbGEgcmlzcG9zdGEgZGEge2RhdGE6VH0gaW4ge2RhdGE6VFtdfVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2YoLi4ucmVzdWx0KS5waXBlKFxuICAgICAgbWVyZ2VNYXAodmFsdWUgPT4gdmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShvcHQ6IE9wdFJlcXVlc3Q8VD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPHN0cmluZz4+IHtcbiAgICB0aGlzLmNoZWNrT3B0UmVxdWVzdChvcHQpO1xuICAgIGlmICh0eXBlb2YgKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJWMgQmFzZUNydWRTZXJ2aWNlLmRlbGV0ZSgpJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgRXh0ZW5kZWQgZnJvbTogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChvcHQubXV0YXRpb25QYXJhbXMpO1xuICAgIGNvbnN0IHBhdGggPSAhIW9wdCAmJiAhIW9wdC5wYXRoID8gb3B0LnBhdGggOiBudWxsO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFJlc3BvbnNlPHN0cmluZz4+KGAke3RoaXMuZ2V0VXJsKHBhdGgpfS8ke2lkfWAsIHRoaXMuaHR0cE9wdGlvbnMoKSk7XG4gIH1cblxuICBkZWxldGVNYW55KG9wdDogT3B0UmVxdWVzdDxUW10gfCBUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8c3RyaW5nW10+PiB7XG4gICAgdGhpcy5jaGVja09wdFJlcXVlc3Qob3B0KTtcbiAgICBjb25zdCByZXN1bHQgPSAob3B0Lm11dGF0aW9uUGFyYW1zIGFzIFRbXSkubWFwKG11dGF0aW9uUGFyYW1zID0+IHtcbiAgICAgIGNvbnN0IG9wdEI6IE9wdFJlcXVlc3Q8VD4gPSB7Li4ub3B0LCBtdXRhdGlvblBhcmFtc307XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGUob3B0Qik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9mKC4uLnJlc3VsdCkucGlwZShcbiAgICAgIG1lcmdlTWFwKHZhbHVlID0+IHZhbHVlKVxuICAgICk7XG4gIH1cblxuICBnZXRJZCA9ICh2YWx1ZSkgPT4gdmFsdWVbdGhpcy5pZF07XG5cbiAgZ2V0VXJsKHBhdGg/OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gISFwYXRoID8gYCR7dGhpcy5zZXJ2aWNlfS8ke3BhdGguam9pbignLycpfWAgOiB0aGlzLnNlcnZpY2U7XG4gICAgaWYgKHR5cGVvZiAoY29uc29sZSkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKCclYyBCYXNlQ3J1ZFNlcnZpY2UuZ2V0VXJsKHBhdGg/OnN0cmluZ1tdKTogc3RyaW5nJywgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgICBjb25zb2xlLmxvZygnJWMgcGF0aDogJyArIHBhdGgsICdjb2xvcjogIzc3Nzc3NycpO1xuICAgICAgY29uc29sZS5sb2coJyVjIEV4dGVuZGVkIGZyb206ICcgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUsICdjb2xvcjogIzc3Nzc3NycpO1xuICAgICAgY29uc29sZS5sb2coJyVjIHJlc3VsdDogJyArIHJlc3VsdCwgJ2NvbG9yOiAjNzc3Nzc3Jyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createEntityAdapter } from '@ngrx/entity';
|
|
2
|
+
import { createInitialCrudStateFactory } from './entity_state';
|
|
3
|
+
import { createCrudSelectorsFactory } from './state_selectors';
|
|
4
|
+
import { createCrudActionsFactory } from './actions';
|
|
5
|
+
import { createCrudReducerFactory } from './reducer';
|
|
6
|
+
export function createCrudEntityAdapter(options) {
|
|
7
|
+
const adapter = createEntityAdapter(options);
|
|
8
|
+
const stateFactory = createInitialCrudStateFactory();
|
|
9
|
+
const selectorsFactory = createCrudSelectorsFactory(adapter);
|
|
10
|
+
const actionsFactory = createCrudActionsFactory();
|
|
11
|
+
const reducerFactory = createCrudReducerFactory(adapter);
|
|
12
|
+
return Object.assign({}, adapter, stateFactory, selectorsFactory, actionsFactory, reducerFactory);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3J4LWVudGl0eS1jcnVkL3NyYy9saWIvY3JlYXRlX2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFPbkQsTUFBTSxVQUFVLHVCQUF1QixDQUFJLE9BRzFDO0lBRUMsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUksT0FBTyxDQUFDLENBQUM7SUFDaEQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLEVBQUssQ0FBQztJQUN4RCxNQUFNLGdCQUFnQixHQUFHLDBCQUEwQixDQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sY0FBYyxHQUFHLHdCQUF3QixFQUFLLENBQUM7SUFDckQsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUksT0FBTyxDQUFDLENBQUM7SUFFNUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixFQUFFLEVBQ0YsT0FBTyxFQUNQLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsQ0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcGFyZXIsIEVudGl0eUNydWRBZGFwdGVyLCBJZFNlbGVjdG9yfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge2NyZWF0ZUVudGl0eUFkYXB0ZXJ9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5pbXBvcnQge2NyZWF0ZUluaXRpYWxDcnVkU3RhdGVGYWN0b3J5fSBmcm9tICcuL2VudGl0eV9zdGF0ZSc7XG5pbXBvcnQge2NyZWF0ZUNydWRTZWxlY3RvcnNGYWN0b3J5fSBmcm9tICcuL3N0YXRlX3NlbGVjdG9ycyc7XG5pbXBvcnQge2NyZWF0ZUNydWRBY3Rpb25zRmFjdG9yeX0gZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB7Y3JlYXRlQ3J1ZFJlZHVjZXJGYWN0b3J5fSBmcm9tICcuL3JlZHVjZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3J1ZEVudGl0eUFkYXB0ZXI8VD4ob3B0aW9ucz86IHtcbiAgc2VsZWN0SWQ/OiBJZFNlbGVjdG9yPFQ+O1xuICBzb3J0Q29tcGFyZXI/OiBmYWxzZSB8IENvbXBhcmVyPFQ+O1xufSk6IEVudGl0eUNydWRBZGFwdGVyPFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3J1ZEVudGl0eUFkYXB0ZXI8VD4ob3B0aW9ucz86IHtcbiAgc2VsZWN0SWQ/OiBJZFNlbGVjdG9yPFQ+O1xuICBzb3J0Q29tcGFyZXI/OiBmYWxzZSB8IENvbXBhcmVyPFQ+O1xufSk6IEVudGl0eUNydWRBZGFwdGVyPFQ+IHtcblxuICBjb25zdCBhZGFwdGVyID0gY3JlYXRlRW50aXR5QWRhcHRlcjxUPihvcHRpb25zKTtcbiAgY29uc3Qgc3RhdGVGYWN0b3J5ID0gY3JlYXRlSW5pdGlhbENydWRTdGF0ZUZhY3Rvcnk8VD4oKTtcbiAgY29uc3Qgc2VsZWN0b3JzRmFjdG9yeSA9IGNyZWF0ZUNydWRTZWxlY3RvcnNGYWN0b3J5PFQ+KGFkYXB0ZXIpO1xuICBjb25zdCBhY3Rpb25zRmFjdG9yeSA9IGNyZWF0ZUNydWRBY3Rpb25zRmFjdG9yeTxUPigpO1xuICBjb25zdCByZWR1Y2VyRmFjdG9yeSA9IGNyZWF0ZUNydWRSZWR1Y2VyRmFjdG9yeTxUPihhZGFwdGVyKTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICB7fSxcbiAgICBhZGFwdGVyLFxuICAgIHN0YXRlRmFjdG9yeSxcbiAgICBzZWxlY3RvcnNGYWN0b3J5LFxuICAgIGFjdGlvbnNGYWN0b3J5LFxuICAgIHJlZHVjZXJGYWN0b3J5XG4gICk7XG59XG4iXX0=
|