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,467 @@
|
|
|
1
|
+
import { ofType } from '@ngrx/effects';
|
|
2
|
+
import { from } from 'rxjs';
|
|
3
|
+
import { catchError, concatMap, map, repeat, switchMap } from 'rxjs/operators';
|
|
4
|
+
export const searchCall = (service) => {
|
|
5
|
+
return input$ => input$.pipe(switchMap(payload => service.search(payload).pipe(map((response) => ({ response, payload })))));
|
|
6
|
+
};
|
|
7
|
+
export const searchResponse = (actions, optEffect) => {
|
|
8
|
+
return input$ => input$.pipe(switchMap(({ response, payload }) => {
|
|
9
|
+
const result = [];
|
|
10
|
+
if (response.hasError) {
|
|
11
|
+
result.push(actions.SearchFailure({ error: response.message }));
|
|
12
|
+
if (payload.onFault) {
|
|
13
|
+
result.push(...payload.onFault);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
result.push(actions.SearchSuccess({ items: response.data, request: payload }));
|
|
18
|
+
result.push(actions.Filters({ filters: {} }));
|
|
19
|
+
if (payload.onResult) {
|
|
20
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
21
|
+
result.push(...onResults);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
25
|
+
result.push(actions.Response({
|
|
26
|
+
actionType: payload.type,
|
|
27
|
+
request: payload,
|
|
28
|
+
response
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
export const searchCatchError = (actions) => {
|
|
35
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
36
|
+
const response = [];
|
|
37
|
+
response.push(actions.SearchFailure({ error }));
|
|
38
|
+
response.push(actions.Response({
|
|
39
|
+
actionType: 'Failure',
|
|
40
|
+
request: null,
|
|
41
|
+
response: { hasError: true, message: error.message, data: null }
|
|
42
|
+
}));
|
|
43
|
+
return from(response);
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
export const searchRequest = (actions, service, optEffect) => {
|
|
47
|
+
return input$ => input$.pipe(ofType(actions.SearchRequest), searchCall(service), searchResponse(actions, optEffect), searchCatchError(actions), repeat());
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated use:
|
|
51
|
+
*
|
|
52
|
+
* actions$.pipe(
|
|
53
|
+
* searchRequest(actions, service, clazz, optEffect)
|
|
54
|
+
* );
|
|
55
|
+
*
|
|
56
|
+
* or:
|
|
57
|
+
*
|
|
58
|
+
* actions$.pipe(
|
|
59
|
+
* ofType(actions.SearchRequest),
|
|
60
|
+
* searchCall(service),
|
|
61
|
+
* searchResponse(actions, optEffect),
|
|
62
|
+
* searchCatchError(actions),
|
|
63
|
+
* repeat()
|
|
64
|
+
* );
|
|
65
|
+
*
|
|
66
|
+
*/
|
|
67
|
+
export const searchRequestEffect = (actions$, actions, service, optEffect) => actions$.pipe(searchRequest(actions, service, optEffect));
|
|
68
|
+
export const deleteCall = (service) => {
|
|
69
|
+
return input$ => input$.pipe(concatMap(payload => service.delete(payload).pipe(map((response) => ({ response, payload })))));
|
|
70
|
+
};
|
|
71
|
+
export const deleteResponse = (actions, clazz, optEffect) => {
|
|
72
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
73
|
+
const result = [];
|
|
74
|
+
if (response.hasError) {
|
|
75
|
+
result.push(actions.DeleteFailure({ error: response.message }));
|
|
76
|
+
if (payload.onFault) {
|
|
77
|
+
result.push(...payload.onFault);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
if (!clazz.selectId) {
|
|
82
|
+
throw Error('the selectId method is not present in the managed entity.');
|
|
83
|
+
}
|
|
84
|
+
const id = clazz.selectId(payload.mutationParams);
|
|
85
|
+
result.push(actions.DeleteSuccess({ id }));
|
|
86
|
+
if (payload.onResult) {
|
|
87
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
88
|
+
result.push(...onResults);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
92
|
+
result.push(actions.Response({
|
|
93
|
+
actionType: payload.type,
|
|
94
|
+
request: payload,
|
|
95
|
+
response
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}));
|
|
100
|
+
};
|
|
101
|
+
export const deleteCatchError = (actions) => {
|
|
102
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
103
|
+
const response = [];
|
|
104
|
+
response.push(actions.EditFailure({ error }));
|
|
105
|
+
response.push(actions.Response({
|
|
106
|
+
actionType: 'Failure',
|
|
107
|
+
request: null,
|
|
108
|
+
response: { hasError: true, message: error.message, data: null }
|
|
109
|
+
}));
|
|
110
|
+
return from(response);
|
|
111
|
+
}));
|
|
112
|
+
};
|
|
113
|
+
export const deleteRequest = (actions, service, clazz, optEffect) => {
|
|
114
|
+
return input$ => input$.pipe(ofType(actions.DeleteRequest), deleteCall(service), deleteResponse(actions, clazz, optEffect), deleteCatchError(actions), repeat());
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated use:
|
|
118
|
+
*
|
|
119
|
+
* actions$.pipe(
|
|
120
|
+
* deleteRequest(actions, service, clazz, optEffect)
|
|
121
|
+
* );
|
|
122
|
+
*
|
|
123
|
+
* or:
|
|
124
|
+
*
|
|
125
|
+
* actions$.pipe(
|
|
126
|
+
* ofType(actions.DeleteRequest),
|
|
127
|
+
* deleteCall(service),
|
|
128
|
+
* deleteResponse(actions, clazz, optEffect),
|
|
129
|
+
* deleteCatchError(actions),
|
|
130
|
+
* repeat()
|
|
131
|
+
* );
|
|
132
|
+
*
|
|
133
|
+
*/
|
|
134
|
+
export const deleteRequestEffect = (actions$, actions, service, clazz, optEffect) => actions$.pipe(deleteRequest(actions, service, clazz, optEffect));
|
|
135
|
+
export const deleteManyCall = (service) => {
|
|
136
|
+
return input$ => input$.pipe(concatMap(payload => service.deleteMany((payload)).pipe(map((response) => ({ response, payload })))));
|
|
137
|
+
};
|
|
138
|
+
export const deleteManyResponse = (actions, clazz, optEffect) => {
|
|
139
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
140
|
+
const result = [];
|
|
141
|
+
if (response.hasError) {
|
|
142
|
+
result.push(actions.DeleteManyFailure({ error: response.message }));
|
|
143
|
+
if (payload.onFault) {
|
|
144
|
+
result.push(...payload.onFault);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
if (!clazz.selectId) {
|
|
149
|
+
throw Error('the selectId method is not present in the managed entity.');
|
|
150
|
+
}
|
|
151
|
+
const ids = payload.mutationParams.map(id => clazz.selectId(id));
|
|
152
|
+
result.push(actions.DeleteManySuccess({ ids }));
|
|
153
|
+
if (payload.onResult) {
|
|
154
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
155
|
+
result.push(...onResults);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
159
|
+
result.push(actions.Response({
|
|
160
|
+
actionType: payload.type,
|
|
161
|
+
request: payload,
|
|
162
|
+
response
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
return result;
|
|
166
|
+
}));
|
|
167
|
+
};
|
|
168
|
+
export const deleteManyCatchError = (actions) => {
|
|
169
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
170
|
+
const response = [];
|
|
171
|
+
response.push(actions.DeleteManyFailure({ error }));
|
|
172
|
+
response.push(actions.Response({
|
|
173
|
+
actionType: 'Failure',
|
|
174
|
+
request: null,
|
|
175
|
+
response: { hasError: true, message: error.message, data: null }
|
|
176
|
+
}));
|
|
177
|
+
return from(response);
|
|
178
|
+
}));
|
|
179
|
+
};
|
|
180
|
+
export const deleteManyRequest = (actions, service, clazz, optEffect) => {
|
|
181
|
+
return input$ => input$.pipe(ofType(actions.DeleteManyRequest), deleteManyCall(service), deleteManyResponse(actions, clazz, optEffect), deleteManyCatchError(actions), repeat());
|
|
182
|
+
};
|
|
183
|
+
export const createCall = (service) => {
|
|
184
|
+
return input$ => input$.pipe(concatMap(payload => service.create(payload).pipe(map((response) => ({ response, payload })))));
|
|
185
|
+
};
|
|
186
|
+
export const createResponse = (actions, optEffect) => {
|
|
187
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
188
|
+
const result = [];
|
|
189
|
+
if (response.hasError) {
|
|
190
|
+
result.push(actions.CreateFailure({ error: response.message }));
|
|
191
|
+
if (payload.onFault) {
|
|
192
|
+
result.push(...payload.onFault);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
const item = response.data;
|
|
197
|
+
result.push(actions.CreateSuccess({ item }));
|
|
198
|
+
if (payload.onResult) {
|
|
199
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
200
|
+
result.push(...onResults);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
204
|
+
result.push(actions.Response({
|
|
205
|
+
actionType: payload.type,
|
|
206
|
+
request: payload,
|
|
207
|
+
response
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
return result;
|
|
211
|
+
}));
|
|
212
|
+
};
|
|
213
|
+
export const createCatchError = (actions) => {
|
|
214
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
215
|
+
const response = [];
|
|
216
|
+
response.push(actions.CreateFailure({ error }));
|
|
217
|
+
response.push(actions.Response({
|
|
218
|
+
actionType: 'Failure',
|
|
219
|
+
request: null,
|
|
220
|
+
response: { hasError: true, message: error.message, data: null }
|
|
221
|
+
}));
|
|
222
|
+
return from(response);
|
|
223
|
+
}));
|
|
224
|
+
};
|
|
225
|
+
export const createRequest = (actions, service, optEffect) => {
|
|
226
|
+
return input$ => input$.pipe(ofType(actions.CreateRequest), createCall(service), createResponse(actions, optEffect), createCatchError(actions), repeat());
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* @deprecated use:
|
|
230
|
+
*
|
|
231
|
+
* actions$.pipe(
|
|
232
|
+
* createRequest(actions, service, optEffect)
|
|
233
|
+
* );
|
|
234
|
+
*
|
|
235
|
+
* or:
|
|
236
|
+
*
|
|
237
|
+
* actions$.pipe(
|
|
238
|
+
* ofType(actions.DeleteRequest),
|
|
239
|
+
* createCall(service),
|
|
240
|
+
* createResponse(actions, optEffect),
|
|
241
|
+
* createCatchError(actions),
|
|
242
|
+
* repeat()
|
|
243
|
+
* );
|
|
244
|
+
*
|
|
245
|
+
*/
|
|
246
|
+
export const createRequestEffect = (actions$, actions, service, optEffect) => actions$.pipe(createRequest(actions, service, optEffect));
|
|
247
|
+
export const createManyCall = (service) => {
|
|
248
|
+
return input$ => input$.pipe(concatMap(payload => service.createMany(payload).pipe(map((response) => ({ response, payload })))));
|
|
249
|
+
};
|
|
250
|
+
export const createManyResponse = (actions, optEffect) => {
|
|
251
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
252
|
+
const result = [];
|
|
253
|
+
if (response.hasError) {
|
|
254
|
+
result.push(actions.CreateManyFailure({ error: response.message }));
|
|
255
|
+
if (payload.onFault) {
|
|
256
|
+
result.push(...payload.onFault);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
const items = response.data;
|
|
261
|
+
result.push(actions.CreateManySuccess({ items }));
|
|
262
|
+
if (payload.onResult) {
|
|
263
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
264
|
+
result.push(...onResults);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
268
|
+
result.push(actions.Response({
|
|
269
|
+
actionType: payload.type,
|
|
270
|
+
request: payload,
|
|
271
|
+
response
|
|
272
|
+
}));
|
|
273
|
+
}
|
|
274
|
+
return result;
|
|
275
|
+
}));
|
|
276
|
+
};
|
|
277
|
+
export const createManyCatchError = (actions) => {
|
|
278
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
279
|
+
const response = [];
|
|
280
|
+
response.push(actions.EditManyFailure({ error }));
|
|
281
|
+
response.push(actions.Response({
|
|
282
|
+
actionType: 'Failure',
|
|
283
|
+
request: null,
|
|
284
|
+
response: { hasError: true, message: error.message, data: null }
|
|
285
|
+
}));
|
|
286
|
+
return from(response);
|
|
287
|
+
}));
|
|
288
|
+
};
|
|
289
|
+
export const createManyRequest = (actions, service, optEffect) => {
|
|
290
|
+
return input$ => input$.pipe(ofType(actions.CreateManyRequest), createManyCall(service), createManyResponse(actions, optEffect), createManyCatchError(actions), repeat());
|
|
291
|
+
};
|
|
292
|
+
export const editCall = (service) => {
|
|
293
|
+
return input$ => input$.pipe(concatMap(payload => service.update(payload).pipe(map((response) => ({ response, payload })))));
|
|
294
|
+
};
|
|
295
|
+
export const editResponse = (actions, optEffect) => {
|
|
296
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
297
|
+
const result = [];
|
|
298
|
+
if (response.hasError) {
|
|
299
|
+
result.push(actions.EditFailure({ error: response.message }));
|
|
300
|
+
if (payload.onFault) {
|
|
301
|
+
result.push(...payload.onFault);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
const item = response.data;
|
|
306
|
+
result.push(actions.EditSuccess({ item }));
|
|
307
|
+
if (payload.onResult) {
|
|
308
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
309
|
+
result.push(...onResults);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
313
|
+
result.push(actions.Response({
|
|
314
|
+
actionType: payload.type,
|
|
315
|
+
request: payload,
|
|
316
|
+
response
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
319
|
+
return result;
|
|
320
|
+
}));
|
|
321
|
+
};
|
|
322
|
+
export const editCatchError = (actions) => {
|
|
323
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
324
|
+
const response = [];
|
|
325
|
+
response.push(actions.EditFailure({ error }));
|
|
326
|
+
response.push(actions.Response({
|
|
327
|
+
actionType: 'Failure',
|
|
328
|
+
request: null,
|
|
329
|
+
response: { hasError: true, message: error.message, data: null }
|
|
330
|
+
}));
|
|
331
|
+
return from(response);
|
|
332
|
+
}));
|
|
333
|
+
};
|
|
334
|
+
export const editRequest = (actions, service, optEffect) => {
|
|
335
|
+
return input$ => input$.pipe(ofType(actions.EditRequest), editCall(service), editResponse(actions, optEffect), editCatchError(actions), repeat());
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* @deprecated use:
|
|
339
|
+
*
|
|
340
|
+
* actions$.pipe(
|
|
341
|
+
* editRequest(actions, service, optEffect)
|
|
342
|
+
* );
|
|
343
|
+
*
|
|
344
|
+
* or:
|
|
345
|
+
*
|
|
346
|
+
* actions$.pipe(
|
|
347
|
+
* ofType(actions.EditRequest),
|
|
348
|
+
* editCall(service),
|
|
349
|
+
* editResponse(actions, optEffect),
|
|
350
|
+
* editCatchError(actions),
|
|
351
|
+
* repeat()
|
|
352
|
+
* );
|
|
353
|
+
*
|
|
354
|
+
*/
|
|
355
|
+
export const editRequestEffect = (actions$, actions, service, optEffect) => actions$.pipe(editRequest(actions, service, optEffect));
|
|
356
|
+
export const editManyCall = (service) => {
|
|
357
|
+
return input$ => input$.pipe(concatMap(payload => service.updateMany(payload).pipe(map((response) => ({ response, payload })))));
|
|
358
|
+
};
|
|
359
|
+
export const editManyResponse = (actions, optEffect) => {
|
|
360
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
361
|
+
const result = [];
|
|
362
|
+
if (response.hasError) {
|
|
363
|
+
result.push(actions.EditManyFailure({ error: response.message }));
|
|
364
|
+
if (payload.onFault) {
|
|
365
|
+
result.push(...payload.onFault);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
const items = response.data;
|
|
370
|
+
result.push(actions.EditManySuccess({ items }));
|
|
371
|
+
if (payload.onResult) {
|
|
372
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
373
|
+
result.push(...onResults);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
377
|
+
result.push(actions.Response({
|
|
378
|
+
actionType: payload.type,
|
|
379
|
+
request: payload,
|
|
380
|
+
response
|
|
381
|
+
}));
|
|
382
|
+
}
|
|
383
|
+
return result;
|
|
384
|
+
}));
|
|
385
|
+
};
|
|
386
|
+
export const editManyCatchError = (actions) => {
|
|
387
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
388
|
+
const response = [];
|
|
389
|
+
response.push(actions.EditManyFailure({ error }));
|
|
390
|
+
response.push(actions.Response({
|
|
391
|
+
actionType: 'Failure',
|
|
392
|
+
request: null,
|
|
393
|
+
response: { hasError: true, message: error.message, data: null }
|
|
394
|
+
}));
|
|
395
|
+
return from(response);
|
|
396
|
+
}));
|
|
397
|
+
};
|
|
398
|
+
export const editManyRequest = (actions, service, optEffect) => {
|
|
399
|
+
return input$ => input$.pipe(ofType(actions.EditManyRequest), editManyCall(service), editManyResponse(actions, optEffect), editManyCatchError(actions), repeat());
|
|
400
|
+
};
|
|
401
|
+
export const selectCall = (service) => {
|
|
402
|
+
return input$ => input$.pipe(concatMap(payload => service.select(payload).pipe(
|
|
403
|
+
// @ts-ignore
|
|
404
|
+
map((response) => ({ response, payload })))));
|
|
405
|
+
};
|
|
406
|
+
export const selectResponse = (actions, optEffect) => {
|
|
407
|
+
return input$ => input$.pipe(concatMap(({ response, payload }) => {
|
|
408
|
+
const result = [];
|
|
409
|
+
if (response.hasError) {
|
|
410
|
+
result.push(actions.SelectFailure({ error: response.message }));
|
|
411
|
+
if (payload.onFault) {
|
|
412
|
+
result.push(...payload.onFault);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
const item = response.data;
|
|
417
|
+
result.push(actions.SelectSuccess({ item }));
|
|
418
|
+
if (payload.onResult) {
|
|
419
|
+
const onResults = payload.onResult.map(a => a.newAction ? a.newAction(response, payload) : a);
|
|
420
|
+
result.push(...onResults);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if ((optEffect || {}).dispatchResponse || payload.dispatchResponse) {
|
|
424
|
+
result.push(actions.Response({
|
|
425
|
+
actionType: payload.type,
|
|
426
|
+
request: payload,
|
|
427
|
+
response
|
|
428
|
+
}));
|
|
429
|
+
}
|
|
430
|
+
return result;
|
|
431
|
+
}));
|
|
432
|
+
};
|
|
433
|
+
export const selectCatchError = (actions) => {
|
|
434
|
+
return input$ => input$.pipe(catchError((error, caught) => {
|
|
435
|
+
const response = [];
|
|
436
|
+
response.push(actions.EditFailure({ error }));
|
|
437
|
+
response.push(actions.Response({
|
|
438
|
+
actionType: 'Failure',
|
|
439
|
+
request: null,
|
|
440
|
+
response: { hasError: true, message: error.message, data: null }
|
|
441
|
+
}));
|
|
442
|
+
return from(response);
|
|
443
|
+
}));
|
|
444
|
+
};
|
|
445
|
+
export const selectRequest = (actions, service, optEffect) => {
|
|
446
|
+
return input$ => input$.pipe(ofType(actions.SelectRequest), selectCall(service), selectResponse(actions, optEffect), selectCatchError(actions), repeat());
|
|
447
|
+
};
|
|
448
|
+
/**
|
|
449
|
+
* @deprecated use:
|
|
450
|
+
*
|
|
451
|
+
* actions$.pipe(
|
|
452
|
+
* selectRequest(actions, service, clazz, optEffect)
|
|
453
|
+
* );
|
|
454
|
+
*
|
|
455
|
+
* or:
|
|
456
|
+
*
|
|
457
|
+
* actions$.pipe(
|
|
458
|
+
* ofType(actions.SelectRequest),
|
|
459
|
+
* selectCall(service),
|
|
460
|
+
* selectResponse(actions, optEffect),
|
|
461
|
+
* selectCatchError(actions),
|
|
462
|
+
* repeat()
|
|
463
|
+
* );
|
|
464
|
+
*
|
|
465
|
+
*/
|
|
466
|
+
export const selectRequestEffect = (actions$, actions, service, optEffect) => actions$.pipe(selectRequest(actions, service, optEffect));
|
|
467
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdyeC1lbnRpdHktY3J1ZC9zcmMvbGliL2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxJQUFJLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUksT0FBNEIsRUFBaUMsRUFBRTtJQUMzRixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQy9DLEdBQUcsQ0FBQyxDQUFDLFFBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUN4RCxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFJLE9BQW1CLEVBQUUsU0FBcUIsRUFBaUMsRUFBRTtJQUM3RyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUIsU0FBUyxDQUFDLENBQUMsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLEVBQUUsRUFBRTtRQUM5QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsT0FB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QUMsRUFDbkIsY0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFDbEMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQ3pCLE1BQU0sRUFBRSxDQUNULENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFJLFFBQVEsRUFBRSxPQUFtQixFQUFFLE9BQTRCLEVBQUUsU0FBcUIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDekksYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mVHlwZX0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XHJcbmltcG9ydCB7QWN0aW9ucywgSUNyaXRlcmlhLCBPcHRFZmZlY3QsIE9wdFJlcXVlc3QsIFJlc3BvbnNlfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7ZnJvbSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtBY3Rpb259IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBjb25jYXRNYXAsIG1hcCwgcmVwZWF0LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtJQmFzZUNydWRTZXJ2aWNlfSBmcm9tICcuL2liYXNlLWNydWQtc2VydmljZSc7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VhcmNoQ2FsbCA9IDxUPihzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgc3dpdGNoTWFwKHBheWxvYWQgPT4gc2VydmljZS5zZWFyY2gocGF5bG9hZCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogUmVzcG9uc2U8VFtdPikgPT4gKHtyZXNwb25zZSwgcGF5bG9hZH0pKVxyXG4gICAgKSlcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlYXJjaFJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIHN3aXRjaE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogQWN0aW9uW10gPSBbXTtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaGFzRXJyb3IpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuU2VhcmNoRmFpbHVyZSh7ZXJyb3I6IHJlc3BvbnNlLm1lc3NhZ2V9KSk7XHJcbiAgICAgICAgICBpZiAocGF5bG9hZC5vbkZhdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnBheWxvYWQub25GYXVsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuU2VhcmNoU3VjY2Vzcyh7aXRlbXM6IHJlc3BvbnNlLmRhdGEsIHJlcXVlc3Q6IHBheWxvYWR9KSk7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLkZpbHRlcnMoe2ZpbHRlcnM6IHt9fSkpO1xyXG4gICAgICAgICAgaWYgKHBheWxvYWQub25SZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3Qgb25SZXN1bHRzID0gKHBheWxvYWQub25SZXN1bHQgYXMgQWN0aW9uW10pLm1hcChhID0+IChhIGFzIGFueSkubmV3QWN0aW9uID8gKGEgYXMgYW55KS5uZXdBY3Rpb24ocmVzcG9uc2UsIHBheWxvYWQpIDogYSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLm9uUmVzdWx0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKG9wdEVmZmVjdCB8fCB7fSkuZGlzcGF0Y2hSZXNwb25zZSB8fCBwYXlsb2FkLmRpc3BhdGNoUmVzcG9uc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuUmVzcG9uc2Uoe1xyXG4gICAgICAgICAgICBhY3Rpb25UeXBlOiBwYXlsb2FkLnR5cGUsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IHBheWxvYWQsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWFyY2hDYXRjaEVycm9yID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4pOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9PiB7IC8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgY2F0Y2hFcnJvcigoZXJyb3IsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gW107XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLlNlYXJjaEZhaWx1cmUoe2Vycm9yfSkpO1xyXG4gICAgICAgIHJlc3BvbnNlLnB1c2goYWN0aW9ucy5SZXNwb25zZSh7XHJcbiAgICAgICAgICBhY3Rpb25UeXBlOiAnRmFpbHVyZScsXHJcbiAgICAgICAgICByZXF1ZXN0OiBudWxsLFxyXG4gICAgICAgICAgcmVzcG9uc2U6IHtoYXNFcnJvcjogdHJ1ZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgZGF0YTogbnVsbH1cclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgcmV0dXJuIGZyb20ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICApLFxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc2VhcmNoUmVxdWVzdCA9IDxUPihhY3Rpb25zOiBBY3Rpb25zPFQ+LCBzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+LCBvcHRFZmZlY3Q/OiBPcHRFZmZlY3QpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248QWN0aW9uPiA9PiB7XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIG9mVHlwZShhY3Rpb25zLlNlYXJjaFJlcXVlc3QpLFxyXG4gICAgc2VhcmNoQ2FsbChzZXJ2aWNlKSxcclxuICAgIHNlYXJjaFJlc3BvbnNlKGFjdGlvbnMsIG9wdEVmZmVjdCksXHJcbiAgICBzZWFyY2hDYXRjaEVycm9yKGFjdGlvbnMpLFxyXG4gICAgcmVwZWF0KClcclxuICApO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIHVzZTpcclxuICpcclxuICogYWN0aW9ucyQucGlwZShcclxuICogICBzZWFyY2hSZXF1ZXN0KGFjdGlvbnMsIHNlcnZpY2UsIGNsYXp6LCBvcHRFZmZlY3QpXHJcbiAqICk7XHJcbiAqXHJcbiAqIG9yOlxyXG4gKlxyXG4gKiBhY3Rpb25zJC5waXBlKFxyXG4gKiAgb2ZUeXBlKGFjdGlvbnMuU2VhcmNoUmVxdWVzdCksXHJcbiAqICBzZWFyY2hDYWxsKHNlcnZpY2UpLFxyXG4gKiAgc2VhcmNoUmVzcG9uc2UoYWN0aW9ucywgb3B0RWZmZWN0KSxcclxuICogIHNlYXJjaENhdGNoRXJyb3IoYWN0aW9ucyksXHJcbiAqICByZXBlYXQoKVxyXG4gKiAgKTtcclxuICpcclxuICovXHJcblxyXG5leHBvcnQgY29uc3Qgc2VhcmNoUmVxdWVzdEVmZmVjdCA9IDxUPihhY3Rpb25zJCwgYWN0aW9uczogQWN0aW9uczxUPiwgc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPiwgb3B0RWZmZWN0PzogT3B0RWZmZWN0KSA9PiBhY3Rpb25zJC5waXBlKFxyXG4gIHNlYXJjaFJlcXVlc3QoYWN0aW9ucywgc2VydmljZSwgb3B0RWZmZWN0KVxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNhbGwgPSA8VD4oc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcChwYXlsb2FkID0+IHNlcnZpY2UuZGVsZXRlKChwYXlsb2FkIGFzIE9wdFJlcXVlc3Q8VD4pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZTxzdHJpbmc+KSA9PiAoe3Jlc3BvbnNlLCBwYXlsb2FkfSkpXHJcbiAgICApKSxcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZVJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIGNsYXp6OiBhbnksIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5EZWxldGVGYWlsdXJlKHtlcnJvcjogcmVzcG9uc2UubWVzc2FnZX0pKTtcclxuICAgICAgICAgIGlmIChwYXlsb2FkLm9uRmF1bHQpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ucGF5bG9hZC5vbkZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFjbGF6ei5zZWxlY3RJZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcigndGhlIHNlbGVjdElkIG1ldGhvZCBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWFuYWdlZCBlbnRpdHkuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpZCA9IGNsYXp6LnNlbGVjdElkKHBheWxvYWQubXV0YXRpb25QYXJhbXMpO1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5EZWxldGVTdWNjZXNzKHtpZH0pKTtcclxuICAgICAgICAgIGlmIChwYXlsb2FkLm9uUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9uUmVzdWx0cyA9IChwYXlsb2FkLm9uUmVzdWx0IGFzIEFjdGlvbltdKS5tYXAoYSA9PiAoYSBhcyBhbnkpLm5ld0FjdGlvbiA/IChhIGFzIGFueSkubmV3QWN0aW9uKHJlc3BvbnNlLCBwYXlsb2FkKSA6IGEpO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5vblJlc3VsdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKChvcHRFZmZlY3QgfHwge30pLmRpc3BhdGNoUmVzcG9uc2UgfHwgcGF5bG9hZC5kaXNwYXRjaFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLlJlc3BvbnNlKHtcclxuICAgICAgICAgICAgYWN0aW9uVHlwZTogcGF5bG9hZC50eXBlLFxyXG4gICAgICAgICAgICByZXF1ZXN0OiBwYXlsb2FkLFxyXG4gICAgICAgICAgICByZXNwb25zZVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgKSxcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNhdGNoRXJyb3IgPSA8VD4oYWN0aW9uczogQWN0aW9uczxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNhdGNoRXJyb3IoKGVycm9yLCBjYXVnaHQpID0+IHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IFtdO1xyXG4gICAgICAgIHJlc3BvbnNlLnB1c2goYWN0aW9ucy5FZGl0RmFpbHVyZSh7ZXJyb3J9KSk7XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLlJlc3BvbnNlKHtcclxuICAgICAgICAgIGFjdGlvblR5cGU6ICdGYWlsdXJlJyxcclxuICAgICAgICAgIHJlcXVlc3Q6IG51bGwsXHJcbiAgICAgICAgICByZXNwb25zZToge2hhc0Vycm9yOiB0cnVlLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBkYXRhOiBudWxsfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICByZXR1cm4gZnJvbShyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZVJlcXVlc3QgPSA8VD4oYWN0aW9uczogQWN0aW9uczxUPiwgc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPiwgY2xheno6IGFueSwgb3B0RWZmZWN0PzogT3B0RWZmZWN0KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgb2ZUeXBlKGFjdGlvbnMuRGVsZXRlUmVxdWVzdCksXHJcbiAgICBkZWxldGVDYWxsKHNlcnZpY2UpLFxyXG4gICAgZGVsZXRlUmVzcG9uc2UoYWN0aW9ucywgY2xhenosIG9wdEVmZmVjdCksXHJcbiAgICBkZWxldGVDYXRjaEVycm9yKGFjdGlvbnMpLFxyXG4gICAgcmVwZWF0KClcclxuICApO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIHVzZTpcclxuICpcclxuICogYWN0aW9ucyQucGlwZShcclxuICogICBkZWxldGVSZXF1ZXN0KGFjdGlvbnMsIHNlcnZpY2UsIGNsYXp6LCBvcHRFZmZlY3QpXHJcbiAqICk7XHJcbiAqXHJcbiAqIG9yOlxyXG4gKlxyXG4gKiBhY3Rpb25zJC5waXBlKFxyXG4gKiAgb2ZUeXBlKGFjdGlvbnMuRGVsZXRlUmVxdWVzdCksXHJcbiAqICBkZWxldGVDYWxsKHNlcnZpY2UpLFxyXG4gKiAgZGVsZXRlUmVzcG9uc2UoYWN0aW9ucywgY2xhenosIG9wdEVmZmVjdCksXHJcbiAqICBkZWxldGVDYXRjaEVycm9yKGFjdGlvbnMpLFxyXG4gKiAgcmVwZWF0KClcclxuICogICk7XHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVsZXRlUmVxdWVzdEVmZmVjdCA9IDxUPihhY3Rpb25zJCwgYWN0aW9uczogQWN0aW9uczxUPiwgc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPiwgY2xheno6IGFueSwgb3B0RWZmZWN0PzogT3B0RWZmZWN0KSA9PiBhY3Rpb25zJC5waXBlKFxyXG4gIGRlbGV0ZVJlcXVlc3QoYWN0aW9ucywgc2VydmljZSwgY2xhenosIG9wdEVmZmVjdClcclxuKTtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgZGVsZXRlTWFueUNhbGwgPSA8VD4oc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcChwYXlsb2FkID0+IHNlcnZpY2UuZGVsZXRlTWFueSgocGF5bG9hZCkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlPHN0cmluZz4pID0+ICh7cmVzcG9uc2UsIHBheWxvYWR9KSlcclxuICAgICkpLFxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZGVsZXRlTWFueVJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIGNsYXp6OiBhbnksIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5EZWxldGVNYW55RmFpbHVyZSh7ZXJyb3I6IHJlc3BvbnNlLm1lc3NhZ2V9KSk7XHJcbiAgICAgICAgICBpZiAocGF5bG9hZC5vbkZhdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnBheWxvYWQub25GYXVsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghY2xhenouc2VsZWN0SWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ3RoZSBzZWxlY3RJZCBtZXRob2QgaXMgbm90IHByZXNlbnQgaW4gdGhlIG1hbmFnZWQgZW50aXR5LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaWRzID0gKHBheWxvYWQgYXMgT3B0UmVxdWVzdDxUW10+KS5tdXRhdGlvblBhcmFtcy5tYXAoaWQgPT4gY2xhenouc2VsZWN0SWQoaWQpKTtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuRGVsZXRlTWFueVN1Y2Nlc3Moe2lkc30pKTtcclxuICAgICAgICAgIGlmIChwYXlsb2FkLm9uUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9uUmVzdWx0cyA9IChwYXlsb2FkLm9uUmVzdWx0IGFzIEFjdGlvbltdKS5tYXAoYSA9PiAoYSBhcyBhbnkpLm5ld0FjdGlvbiA/IChhIGFzIGFueSkubmV3QWN0aW9uKHJlc3BvbnNlLCBwYXlsb2FkKSA6IGEpO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5vblJlc3VsdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKChvcHRFZmZlY3QgfHwge30pLmRpc3BhdGNoUmVzcG9uc2UgfHwgcGF5bG9hZC5kaXNwYXRjaFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLlJlc3BvbnNlKHtcclxuICAgICAgICAgICAgYWN0aW9uVHlwZTogcGF5bG9hZC50eXBlLFxyXG4gICAgICAgICAgICByZXF1ZXN0OiBwYXlsb2FkLFxyXG4gICAgICAgICAgICByZXNwb25zZVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgKSxcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZU1hbnlDYXRjaEVycm9yID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4pOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9PiB7Ly8gVE9ETzogdGlwaXp6YXJlIGFueVxyXG4gIHJldHVybiBpbnB1dCQgPT4gaW5wdXQkLnBpcGUoXHJcbiAgICBjYXRjaEVycm9yKChlcnJvciwgY2F1Z2h0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBbXTtcclxuICAgICAgICByZXNwb25zZS5wdXNoKGFjdGlvbnMuRGVsZXRlTWFueUZhaWx1cmUoe2Vycm9yfSkpO1xyXG4gICAgICAgIHJlc3BvbnNlLnB1c2goYWN0aW9ucy5SZXNwb25zZSh7XHJcbiAgICAgICAgICBhY3Rpb25UeXBlOiAnRmFpbHVyZScsXHJcbiAgICAgICAgICByZXF1ZXN0OiBudWxsLFxyXG4gICAgICAgICAgcmVzcG9uc2U6IHtoYXNFcnJvcjogdHJ1ZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgZGF0YTogbnVsbH1cclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgcmV0dXJuIGZyb20ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWxldGVNYW55UmVxdWVzdCA9IDxUPihhY3Rpb25zOiBBY3Rpb25zPFQ+LCBzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+LCBjbGF6ejogYW55LCBvcHRFZmZlY3Q/OiBPcHRFZmZlY3QpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9PiB7Ly8gVE9ETzogdGlwaXp6YXJlIGFueVxyXG4gIHJldHVybiBpbnB1dCQgPT4gaW5wdXQkLnBpcGUoXHJcbiAgICBvZlR5cGUoYWN0aW9ucy5EZWxldGVNYW55UmVxdWVzdCksXHJcbiAgICBkZWxldGVNYW55Q2FsbChzZXJ2aWNlKSxcclxuICAgIGRlbGV0ZU1hbnlSZXNwb25zZShhY3Rpb25zLCBjbGF6eiwgb3B0RWZmZWN0KSxcclxuICAgIGRlbGV0ZU1hbnlDYXRjaEVycm9yKGFjdGlvbnMpLFxyXG4gICAgcmVwZWF0KClcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNhbGwgPSA8VD4oc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcChwYXlsb2FkID0+IHNlcnZpY2UuY3JlYXRlKChwYXlsb2FkIGFzIE9wdFJlcXVlc3Q8VD4pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZTxUPikgPT4gKHtyZXNwb25zZSwgcGF5bG9hZH0pKVxyXG4gICAgKSlcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5DcmVhdGVGYWlsdXJlKHtlcnJvcjogcmVzcG9uc2UubWVzc2FnZX0pKTtcclxuICAgICAgICAgIGlmIChwYXlsb2FkLm9uRmF1bHQpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ucGF5bG9hZC5vbkZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLkNyZWF0ZVN1Y2Nlc3Moe2l0ZW19KSk7XHJcbiAgICAgICAgICBpZiAocGF5bG9hZC5vblJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCBvblJlc3VsdHMgPSAocGF5bG9hZC5vblJlc3VsdCBhcyBBY3Rpb25bXSkubWFwKGEgPT4gKGEgYXMgYW55KS5uZXdBY3Rpb24gPyAoYSBhcyBhbnkpLm5ld0FjdGlvbihyZXNwb25zZSwgcGF5bG9hZCkgOiBhKTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ub25SZXN1bHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgob3B0RWZmZWN0IHx8IHt9KS5kaXNwYXRjaFJlc3BvbnNlIHx8IHBheWxvYWQuZGlzcGF0Y2hSZXNwb25zZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5SZXNwb25zZSh7XHJcbiAgICAgICAgICAgIGFjdGlvblR5cGU6IHBheWxvYWQudHlwZSxcclxuICAgICAgICAgICAgcmVxdWVzdDogcGF5bG9hZCxcclxuICAgICAgICAgICAgcmVzcG9uc2VcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNhdGNoRXJyb3IgPSA8VD4oYWN0aW9uczogQWN0aW9uczxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNhdGNoRXJyb3IoKGVycm9yLCBjYXVnaHQpID0+IHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IFtdO1xyXG4gICAgICAgIHJlc3BvbnNlLnB1c2goYWN0aW9ucy5DcmVhdGVGYWlsdXJlKHtlcnJvcn0pKTtcclxuICAgICAgICByZXNwb25zZS5wdXNoKGFjdGlvbnMuUmVzcG9uc2Uoe1xyXG4gICAgICAgICAgYWN0aW9uVHlwZTogJ0ZhaWx1cmUnLFxyXG4gICAgICAgICAgcmVxdWVzdDogbnVsbCxcclxuICAgICAgICAgIHJlc3BvbnNlOiB7aGFzRXJyb3I6IHRydWUsIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIGRhdGE6IG51bGx9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHJldHVybiBmcm9tKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUmVxdWVzdCA9IDxUPihhY3Rpb25zOiBBY3Rpb25zPFQ+LCBzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+LCBvcHRFZmZlY3Q/OiBPcHRFZmZlY3QpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9PiB7Ly8gVE9ETzogdGlwaXp6YXJlIGFueVxyXG4gIHJldHVybiBpbnB1dCQgPT4gaW5wdXQkLnBpcGUoXHJcbiAgICBvZlR5cGUoYWN0aW9ucy5DcmVhdGVSZXF1ZXN0KSxcclxuICAgIGNyZWF0ZUNhbGwoc2VydmljZSksXHJcbiAgICBjcmVhdGVSZXNwb25zZShhY3Rpb25zLCBvcHRFZmZlY3QpLFxyXG4gICAgY3JlYXRlQ2F0Y2hFcnJvcihhY3Rpb25zKSxcclxuICAgIHJlcGVhdCgpXHJcbiAgKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCB1c2U6XHJcbiAqXHJcbiAqIGFjdGlvbnMkLnBpcGUoXHJcbiAqICAgY3JlYXRlUmVxdWVzdChhY3Rpb25zLCBzZXJ2aWNlLCBvcHRFZmZlY3QpXHJcbiAqICk7XHJcbiAqXHJcbiAqIG9yOlxyXG4gKlxyXG4gKiBhY3Rpb25zJC5waXBlKFxyXG4gKiAgb2ZUeXBlKGFjdGlvbnMuRGVsZXRlUmVxdWVzdCksXHJcbiAqICBjcmVhdGVDYWxsKHNlcnZpY2UpLFxyXG4gKiAgY3JlYXRlUmVzcG9uc2UoYWN0aW9ucywgb3B0RWZmZWN0KSxcclxuICogIGNyZWF0ZUNhdGNoRXJyb3IoYWN0aW9ucyksXHJcbiAqICByZXBlYXQoKVxyXG4gKiAgKTtcclxuICpcclxuICovXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVSZXF1ZXN0RWZmZWN0ID0gPFQ+KGFjdGlvbnMkLCBhY3Rpb25zOiBBY3Rpb25zPFQ+LCBzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+LCBvcHRFZmZlY3Q/OiBPcHRFZmZlY3QpID0+IGFjdGlvbnMkLnBpcGUoXHJcbiAgY3JlYXRlUmVxdWVzdChhY3Rpb25zLCBzZXJ2aWNlLCBvcHRFZmZlY3QpXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTWFueUNhbGwgPSA8VD4oc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcChwYXlsb2FkID0+IHNlcnZpY2UuY3JlYXRlTWFueSgocGF5bG9hZCBhcyBPcHRSZXF1ZXN0PFRbXT4pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZTxUW10+KSA9PiAoe3Jlc3BvbnNlLCBwYXlsb2FkfSkpXHJcbiAgICApKVxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTWFueVJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5DcmVhdGVNYW55RmFpbHVyZSh7ZXJyb3I6IHJlc3BvbnNlLm1lc3NhZ2V9KSk7XHJcbiAgICAgICAgICBpZiAocGF5bG9hZC5vbkZhdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnBheWxvYWQub25GYXVsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuQ3JlYXRlTWFueVN1Y2Nlc3Moe2l0ZW1zfSkpO1xyXG4gICAgICAgICAgaWYgKHBheWxvYWQub25SZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3Qgb25SZXN1bHRzID0gKHBheWxvYWQub25SZXN1bHQgYXMgQWN0aW9uW10pLm1hcChhID0+IChhIGFzIGFueSkubmV3QWN0aW9uID8gKGEgYXMgYW55KS5uZXdBY3Rpb24ocmVzcG9uc2UsIHBheWxvYWQpIDogYSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLm9uUmVzdWx0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKG9wdEVmZmVjdCB8fCB7fSkuZGlzcGF0Y2hSZXNwb25zZSB8fCBwYXlsb2FkLmRpc3BhdGNoUmVzcG9uc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuUmVzcG9uc2Uoe1xyXG4gICAgICAgICAgICBhY3Rpb25UeXBlOiBwYXlsb2FkLnR5cGUsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IHBheWxvYWQsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVNYW55Q2F0Y2hFcnJvciA9IDxUPihhY3Rpb25zOiBBY3Rpb25zPFQ+KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgY2F0Y2hFcnJvcigoZXJyb3IsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gW107XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLkVkaXRNYW55RmFpbHVyZSh7ZXJyb3J9KSk7XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLlJlc3BvbnNlKHtcclxuICAgICAgICAgIGFjdGlvblR5cGU6ICdGYWlsdXJlJyxcclxuICAgICAgICAgIHJlcXVlc3Q6IG51bGwsXHJcbiAgICAgICAgICByZXNwb25zZToge2hhc0Vycm9yOiB0cnVlLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBkYXRhOiBudWxsfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICByZXR1cm4gZnJvbShyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hbnlSZXF1ZXN0ID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIHNlcnZpY2U6IElCYXNlQ3J1ZFNlcnZpY2U8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIG9mVHlwZShhY3Rpb25zLkNyZWF0ZU1hbnlSZXF1ZXN0KSxcclxuICAgIGNyZWF0ZU1hbnlDYWxsKHNlcnZpY2UpLFxyXG4gICAgY3JlYXRlTWFueVJlc3BvbnNlKGFjdGlvbnMsIG9wdEVmZmVjdCksXHJcbiAgICBjcmVhdGVNYW55Q2F0Y2hFcnJvcihhY3Rpb25zKSxcclxuICAgIHJlcGVhdCgpXHJcbiAgKTtcclxufTtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgZWRpdENhbGwgPSA8VD4oc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcChwYXlsb2FkID0+IHNlcnZpY2UudXBkYXRlKChwYXlsb2FkIGFzIE9wdFJlcXVlc3Q8VD4pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZTxUPikgPT4gKHtyZXNwb25zZSwgcGF5bG9hZH0pKVxyXG4gICAgKSksXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBlZGl0UmVzcG9uc2UgPSA8VD4oYWN0aW9uczogQWN0aW9uczxUPiwgb3B0RWZmZWN0PzogT3B0RWZmZWN0KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgY29uY2F0TWFwKCh7cmVzcG9uc2UsIHBheWxvYWR9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmhhc0Vycm9yKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLkVkaXRGYWlsdXJlKHtlcnJvcjogcmVzcG9uc2UubWVzc2FnZX0pKTtcclxuICAgICAgICAgIGlmIChwYXlsb2FkLm9uRmF1bHQpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ucGF5bG9hZC5vbkZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLkVkaXRTdWNjZXNzKHtpdGVtfSkpO1xyXG4gICAgICAgICAgaWYgKHBheWxvYWQub25SZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3Qgb25SZXN1bHRzID0gKHBheWxvYWQub25SZXN1bHQgYXMgQWN0aW9uW10pLm1hcChhID0+IChhIGFzIGFueSkubmV3QWN0aW9uID8gKGEgYXMgYW55KS5uZXdBY3Rpb24ocmVzcG9uc2UsIHBheWxvYWQpIDogYSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLm9uUmVzdWx0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKG9wdEVmZmVjdCB8fCB7fSkuZGlzcGF0Y2hSZXNwb25zZSB8fCBwYXlsb2FkLmRpc3BhdGNoUmVzcG9uc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGFjdGlvbnMuUmVzcG9uc2Uoe1xyXG4gICAgICAgICAgICBhY3Rpb25UeXBlOiBwYXlsb2FkLnR5cGUsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IHBheWxvYWQsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBlZGl0Q2F0Y2hFcnJvciA9IDxUPihhY3Rpb25zOiBBY3Rpb25zPFQ+KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgY2F0Y2hFcnJvcigoZXJyb3IsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gW107XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLkVkaXRGYWlsdXJlKHtlcnJvcn0pKTtcclxuICAgICAgICByZXNwb25zZS5wdXNoKGFjdGlvbnMuUmVzcG9uc2Uoe1xyXG4gICAgICAgICAgYWN0aW9uVHlwZTogJ0ZhaWx1cmUnLFxyXG4gICAgICAgICAgcmVxdWVzdDogbnVsbCxcclxuICAgICAgICAgIHJlc3BvbnNlOiB7aGFzRXJyb3I6IHRydWUsIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIGRhdGE6IG51bGx9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHJldHVybiBmcm9tKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgKSxcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGVkaXRSZXF1ZXN0ID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIHNlcnZpY2U6IElCYXNlQ3J1ZFNlcnZpY2U8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIG9mVHlwZShhY3Rpb25zLkVkaXRSZXF1ZXN0KSxcclxuICAgIGVkaXRDYWxsKHNlcnZpY2UpLFxyXG4gICAgZWRpdFJlc3BvbnNlKGFjdGlvbnMsIG9wdEVmZmVjdCksXHJcbiAgICBlZGl0Q2F0Y2hFcnJvcihhY3Rpb25zKSxcclxuICAgIHJlcGVhdCgpXHJcbiAgKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCB1c2U6XHJcbiAqXHJcbiAqIGFjdGlvbnMkLnBpcGUoXHJcbiAqICAgZWRpdFJlcXVlc3QoYWN0aW9ucywgc2VydmljZSwgb3B0RWZmZWN0KVxyXG4gKiApO1xyXG4gKlxyXG4gKiBvcjpcclxuICpcclxuICogYWN0aW9ucyQucGlwZShcclxuICogIG9mVHlwZShhY3Rpb25zLkVkaXRSZXF1ZXN0KSxcclxuICogIGVkaXRDYWxsKHNlcnZpY2UpLFxyXG4gKiAgZWRpdFJlc3BvbnNlKGFjdGlvbnMsIG9wdEVmZmVjdCksXHJcbiAqICBlZGl0Q2F0Y2hFcnJvcihhY3Rpb25zKSxcclxuICogIHJlcGVhdCgpXHJcbiAqICApO1xyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGVkaXRSZXF1ZXN0RWZmZWN0ID0gPFQ+KGFjdGlvbnMkLCBhY3Rpb25zOiBBY3Rpb25zPFQ+LCBzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+LCBvcHRFZmZlY3Q/OiBPcHRFZmZlY3QpID0+IGFjdGlvbnMkLnBpcGUoXHJcbiAgZWRpdFJlcXVlc3QoYWN0aW9ucywgc2VydmljZSwgb3B0RWZmZWN0KVxyXG4pO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBlZGl0TWFueUNhbGwgPSA8VD4oc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcChwYXlsb2FkID0+IHNlcnZpY2UudXBkYXRlTWFueSgocGF5bG9hZCBhcyBPcHRSZXF1ZXN0PFRbXT4pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZTxUPikgPT4gKHtyZXNwb25zZSwgcGF5bG9hZH0pKVxyXG4gICAgKSksXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBlZGl0TWFueVJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5FZGl0TWFueUZhaWx1cmUoe2Vycm9yOiByZXNwb25zZS5tZXNzYWdlfSkpO1xyXG4gICAgICAgICAgaWYgKHBheWxvYWQub25GYXVsdCkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5wYXlsb2FkLm9uRmF1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLkVkaXRNYW55U3VjY2Vzcyh7aXRlbXN9KSk7XHJcbiAgICAgICAgICBpZiAocGF5bG9hZC5vblJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCBvblJlc3VsdHMgPSAocGF5bG9hZC5vblJlc3VsdCBhcyBBY3Rpb25bXSkubWFwKGEgPT4gKGEgYXMgYW55KS5uZXdBY3Rpb24gPyAoYSBhcyBhbnkpLm5ld0FjdGlvbihyZXNwb25zZSwgcGF5bG9hZCkgOiBhKTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ub25SZXN1bHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgob3B0RWZmZWN0IHx8IHt9KS5kaXNwYXRjaFJlc3BvbnNlIHx8IHBheWxvYWQuZGlzcGF0Y2hSZXNwb25zZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5SZXNwb25zZSh7XHJcbiAgICAgICAgICAgIGFjdGlvblR5cGU6IHBheWxvYWQudHlwZSxcclxuICAgICAgICAgICAgcmVxdWVzdDogcGF5bG9hZCxcclxuICAgICAgICAgICAgcmVzcG9uc2VcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGVkaXRNYW55Q2F0Y2hFcnJvciA9IDxUPihhY3Rpb25zOiBBY3Rpb25zPFQ+KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgY2F0Y2hFcnJvcigoZXJyb3IsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gW107XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLkVkaXRNYW55RmFpbHVyZSh7ZXJyb3J9KSk7XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLlJlc3BvbnNlKHtcclxuICAgICAgICAgIGFjdGlvblR5cGU6ICdGYWlsdXJlJyxcclxuICAgICAgICAgIHJlcXVlc3Q6IG51bGwsXHJcbiAgICAgICAgICByZXNwb25zZToge2hhc0Vycm9yOiB0cnVlLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBkYXRhOiBudWxsfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICByZXR1cm4gZnJvbShyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgICksXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBlZGl0TWFueVJlcXVlc3QgPSA8VD4oYWN0aW9uczogQWN0aW9uczxUPiwgc2VydmljZTogSUJhc2VDcnVkU2VydmljZTxUPiwgb3B0RWZmZWN0PzogT3B0RWZmZWN0KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgb2ZUeXBlKGFjdGlvbnMuRWRpdE1hbnlSZXF1ZXN0KSxcclxuICAgIGVkaXRNYW55Q2FsbChzZXJ2aWNlKSxcclxuICAgIGVkaXRNYW55UmVzcG9uc2UoYWN0aW9ucywgb3B0RWZmZWN0KSxcclxuICAgIGVkaXRNYW55Q2F0Y2hFcnJvcihhY3Rpb25zKSxcclxuICAgIHJlcGVhdCgpXHJcbiAgKTtcclxufTtcclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0Q2FsbCA9IDxUPihzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPT4gey8vIFRPRE86IHRpcGl6emFyZSBhbnlcclxuICByZXR1cm4gaW5wdXQkID0+IGlucHV0JC5waXBlKFxyXG4gICAgY29uY2F0TWFwKHBheWxvYWQgPT4gc2VydmljZS5zZWxlY3QoKHBheWxvYWQgYXMgSUNyaXRlcmlhKSkucGlwZShcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZTxUPikgPT4gKHtyZXNwb25zZSwgcGF5bG9hZH0pKVxyXG4gICAgKSlcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFJlc3BvbnNlID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNvbmNhdE1hcCgoe3Jlc3BvbnNlLCBwYXlsb2FkfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5TZWxlY3RGYWlsdXJlKHtlcnJvcjogcmVzcG9uc2UubWVzc2FnZX0pKTtcclxuICAgICAgICAgIGlmIChwYXlsb2FkLm9uRmF1bHQpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ucGF5bG9hZC5vbkZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChhY3Rpb25zLlNlbGVjdFN1Y2Nlc3Moe2l0ZW19KSk7XHJcbiAgICAgICAgICBpZiAocGF5bG9hZC5vblJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCBvblJlc3VsdHMgPSAocGF5bG9hZC5vblJlc3VsdCBhcyBBY3Rpb25bXSkubWFwKGEgPT4gKGEgYXMgYW55KS5uZXdBY3Rpb24gPyAoYSBhcyBhbnkpLm5ld0FjdGlvbihyZXNwb25zZSwgcGF5bG9hZCkgOiBhKTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4ub25SZXN1bHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgob3B0RWZmZWN0IHx8IHt9KS5kaXNwYXRjaFJlc3BvbnNlIHx8IHBheWxvYWQuZGlzcGF0Y2hSZXNwb25zZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goYWN0aW9ucy5SZXNwb25zZSh7XHJcbiAgICAgICAgICAgIGFjdGlvblR5cGU6IHBheWxvYWQudHlwZSxcclxuICAgICAgICAgICAgcmVxdWVzdDogcGF5bG9hZCxcclxuICAgICAgICAgICAgcmVzcG9uc2VcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdENhdGNoRXJyb3IgPSA8VD4oYWN0aW9uczogQWN0aW9uczxUPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIGNhdGNoRXJyb3IoKGVycm9yLCBjYXVnaHQpID0+IHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IFtdO1xyXG4gICAgICAgIHJlc3BvbnNlLnB1c2goYWN0aW9ucy5FZGl0RmFpbHVyZSh7ZXJyb3J9KSk7XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChhY3Rpb25zLlJlc3BvbnNlKHtcclxuICAgICAgICAgIGFjdGlvblR5cGU6ICdGYWlsdXJlJyxcclxuICAgICAgICAgIHJlcXVlc3Q6IG51bGwsXHJcbiAgICAgICAgICByZXNwb25zZToge2hhc0Vycm9yOiB0cnVlLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBkYXRhOiBudWxsfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICByZXR1cm4gZnJvbShyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgICksXHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RSZXF1ZXN0ID0gPFQ+KGFjdGlvbnM6IEFjdGlvbnM8VD4sIHNlcnZpY2U6IElCYXNlQ3J1ZFNlcnZpY2U8VD4sIG9wdEVmZmVjdD86IE9wdEVmZmVjdCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxhbnk+ID0+IHsvLyBUT0RPOiB0aXBpenphcmUgYW55XHJcbiAgcmV0dXJuIGlucHV0JCA9PiBpbnB1dCQucGlwZShcclxuICAgIG9mVHlwZShhY3Rpb25zLlNlbGVjdFJlcXVlc3QpLFxyXG4gICAgc2VsZWN0Q2FsbChzZXJ2aWNlKSxcclxuICAgIHNlbGVjdFJlc3BvbnNlKGFjdGlvbnMsIG9wdEVmZmVjdCksXHJcbiAgICBzZWxlY3RDYXRjaEVycm9yKGFjdGlvbnMpLFxyXG4gICAgcmVwZWF0KClcclxuICApO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIHVzZTpcclxuICpcclxuICogYWN0aW9ucyQucGlwZShcclxuICogICBzZWxlY3RSZXF1ZXN0KGFjdGlvbnMsIHNlcnZpY2UsIGNsYXp6LCBvcHRFZmZlY3QpXHJcbiAqICk7XHJcbiAqXHJcbiAqIG9yOlxyXG4gKlxyXG4gKiBhY3Rpb25zJC5waXBlKFxyXG4gKiAgb2ZUeXBlKGFjdGlvbnMuU2VsZWN0UmVxdWVzdCksXHJcbiAqICBzZWxlY3RDYWxsKHNlcnZpY2UpLFxyXG4gKiAgc2VsZWN0UmVzcG9uc2UoYWN0aW9ucywgb3B0RWZmZWN0KSxcclxuICogIHNlbGVjdENhdGNoRXJyb3IoYWN0aW9ucyksXHJcbiAqICByZXBlYXQoKVxyXG4gKiAgKTtcclxuICpcclxuICovXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RSZXF1ZXN0RWZmZWN0ID0gPFQ+KGFjdGlvbnMkLCBhY3Rpb25zOiBBY3Rpb25zPFQ+LCBzZXJ2aWNlOiBJQmFzZUNydWRTZXJ2aWNlPFQ+LCBvcHRFZmZlY3Q/OiBPcHRFZmZlY3QpID0+IGFjdGlvbnMkLnBpcGUoXHJcbiAgc2VsZWN0UmVxdWVzdChhY3Rpb25zLCBzZXJ2aWNlLCBvcHRFZmZlY3QpXHJcbik7XHJcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function getInitialEntityCrudState() {
|
|
2
|
+
return {
|
|
3
|
+
ids: [],
|
|
4
|
+
entities: {},
|
|
5
|
+
isLoading: false,
|
|
6
|
+
isLoaded: false,
|
|
7
|
+
error: null,
|
|
8
|
+
filters: {},
|
|
9
|
+
lastCriteria: null,
|
|
10
|
+
entitiesSelected: {},
|
|
11
|
+
idsSelected: [],
|
|
12
|
+
itemSelected: null,
|
|
13
|
+
idSelected: null,
|
|
14
|
+
responses: []
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function createInitialCrudStateFactory() {
|
|
18
|
+
function getInitialCrudState(additionalState = {}) {
|
|
19
|
+
return Object.assign(getInitialEntityCrudState(), additionalState);
|
|
20
|
+
}
|
|
21
|
+
return { getInitialCrudState };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5X3N0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdyeC1lbnRpdHktY3J1ZC9zcmMvbGliL2VudGl0eV9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU87UUFDTCxHQUFHLEVBQUUsRUFBRTtRQUNQLFFBQVEsRUFBRSxFQUFFO1FBQ1osU0FBUyxFQUFFLEtBQUs7UUFDaEIsUUFBUSxFQUFFLEtBQUs7UUFDZixLQUFLLEVBQUUsSUFBSTtRQUNYLE9BQU8sRUFBRSxFQUFFO1FBQ1gsWUFBWSxFQUFFLElBQUk7UUFDbEIsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixXQUFXLEVBQUUsRUFBRTtRQUNmLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCO0lBSzNDLFNBQVMsbUJBQW1CLENBQUMsa0JBQXVCLEVBQUU7UUFDcEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VudGl0eUNydWRTdGF0ZX0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5pdGlhbEVudGl0eUNydWRTdGF0ZTxWPigpOiBFbnRpdHlDcnVkU3RhdGU8Vj4ge1xuICByZXR1cm4ge1xuICAgIGlkczogW10sXG4gICAgZW50aXRpZXM6IHt9LFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNMb2FkZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGZpbHRlcnM6IHt9LFxuICAgIGxhc3RDcml0ZXJpYTogbnVsbCxcbiAgICBlbnRpdGllc1NlbGVjdGVkOiB7fSxcbiAgICBpZHNTZWxlY3RlZDogW10sXG4gICAgaXRlbVNlbGVjdGVkOiBudWxsLFxuICAgIGlkU2VsZWN0ZWQ6IG51bGwsXG4gICAgcmVzcG9uc2VzOiBbXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbENydWRTdGF0ZUZhY3Rvcnk8Vj4oKSB7XG4gIGZ1bmN0aW9uIGdldEluaXRpYWxDcnVkU3RhdGUoKTogRW50aXR5Q3J1ZFN0YXRlPFY+O1xuICBmdW5jdGlvbiBnZXRJbml0aWFsQ3J1ZFN0YXRlPFMgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGFkZGl0aW9uYWxTdGF0ZTogU1xuICApOiBFbnRpdHlDcnVkU3RhdGU8Vj4gJiBTO1xuICBmdW5jdGlvbiBnZXRJbml0aWFsQ3J1ZFN0YXRlKGFkZGl0aW9uYWxTdGF0ZTogYW55ID0ge30pOiBhbnkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGdldEluaXRpYWxFbnRpdHlDcnVkU3RhdGUoKSwgYWRkaXRpb25hbFN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiB7Z2V0SW5pdGlhbENydWRTdGF0ZX07XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhc2UtY3J1ZC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdyeC1lbnRpdHktY3J1ZC9zcmMvbGliL2liYXNlLWNydWQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQ3JpdGVyaWEsIE9wdFJlcXVlc3QsIFJlc3BvbnNlfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlQ3J1ZFNlcnZpY2U8VD4ge1xuXG4gIGNyZWF0ZShvcHQ6IE9wdFJlcXVlc3Q8VD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFQ+PjtcblxuICBjcmVhdGVNYW55KG9wdDogT3B0UmVxdWVzdDxUW10gfCBUPik6IE9ic2VydmFibGU8UmVzcG9uc2U8VFtdPj47XG5cbiAgc2VhcmNoKHZhbHVlPzogSUNyaXRlcmlhKTogT2JzZXJ2YWJsZTxSZXNwb25zZTxUW10+PjtcblxuICBzZWxlY3Qob3B0OiBJQ3JpdGVyaWEpOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFQ+PjtcblxuICB1cGRhdGUob3B0OiBPcHRSZXF1ZXN0PFQ+KTogT2JzZXJ2YWJsZTxSZXNwb25zZTxUPj47XG5cbiAgdXBkYXRlTWFueShvcHQ6IE9wdFJlcXVlc3Q8VFtdIHwgVD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPFRbXT4+O1xuXG4gIGRlbGV0ZShvcHQ6IE9wdFJlcXVlc3Q8VD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPHN0cmluZ1tdPj47XG5cbiAgZGVsZXRlTWFueShvcHQ6IE9wdFJlcXVlc3Q8VFtdIHwgVD4pOiBPYnNlcnZhYmxlPFJlc3BvbnNlPHN0cmluZ1tdPj47XG5cbn1cbiJdfQ==
|