@verisoft/store 18.4.0 → 18.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +11 -0
- package/esm2022/lib/binding-state/binding.actions.mjs +35 -0
- package/esm2022/lib/binding-state/binding.effects.mjs +124 -0
- package/esm2022/lib/detail-state/detail.actions.mjs +47 -0
- package/esm2022/lib/detail-state/detail.effects.mjs +116 -0
- package/esm2022/lib/detail-state/detail.models.mjs +12 -0
- package/esm2022/lib/detail-state/detail.reducer.mjs +87 -0
- package/esm2022/lib/table-state/actions.mjs +50 -0
- package/esm2022/lib/table-state/effects.mjs +49 -0
- package/esm2022/lib/table-state/models.mjs +12 -0
- package/esm2022/lib/table-state/reducers.mjs +80 -0
- package/esm2022/verisoft-store.mjs +5 -0
- package/fesm2022/verisoft-store.mjs +602 -0
- package/fesm2022/verisoft-store.mjs.map +1 -0
- package/{src/index.ts → index.d.ts} +10 -12
- package/lib/binding-state/binding.actions.d.ts +43 -0
- package/lib/binding-state/binding.effects.d.ts +45 -0
- package/lib/detail-state/detail.actions.d.ts +52 -0
- package/lib/detail-state/detail.effects.d.ts +52 -0
- package/lib/detail-state/detail.models.d.ts +27 -0
- package/lib/detail-state/detail.reducer.d.ts +4 -0
- package/lib/table-state/actions.d.ts +48 -0
- package/lib/table-state/effects.d.ts +25 -0
- package/lib/table-state/models.d.ts +9 -0
- package/lib/table-state/reducers.d.ts +3 -0
- package/package.json +28 -13
- package/.eslintrc.json +0 -43
- package/jest.config.ts +0 -22
- package/ng-package.json +0 -7
- package/project.json +0 -36
- package/src/lib/binding-state/binding.actions.ts +0 -76
- package/src/lib/binding-state/binding.effects.ts +0 -472
- package/src/lib/detail-state/detail.actions.ts +0 -89
- package/src/lib/detail-state/detail.effects.ts +0 -283
- package/src/lib/detail-state/detail.models.ts +0 -42
- package/src/lib/detail-state/detail.reducer.ts +0 -147
- package/src/lib/table-state/actions.ts +0 -93
- package/src/lib/table-state/effects.ts +0 -100
- package/src/lib/table-state/models.ts +0 -20
- package/src/lib/table-state/reducers.ts +0 -126
- package/src/test-setup.ts +0 -8
- package/tsconfig.json +0 -31
- package/tsconfig.lib.json +0 -17
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -16
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './lib/detail-state/detail.actions';
|
|
2
|
+
export * from './lib/detail-state/detail.reducer';
|
|
3
|
+
export * from './lib/detail-state/detail.effects';
|
|
4
|
+
export * from './lib/detail-state/detail.models';
|
|
5
|
+
export * from './lib/table-state/actions';
|
|
6
|
+
export * from './lib/table-state/reducers';
|
|
7
|
+
export * from './lib/table-state/effects';
|
|
8
|
+
export * from './lib/table-state/models';
|
|
9
|
+
export * from './lib/binding-state/binding.actions';
|
|
10
|
+
export * from './lib/binding-state/binding.effects';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwucmVkdWNlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuZWZmZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwubW9kZWxzJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXN0YXRlL2FjdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9yZWR1Y2Vycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXN0YXRlL2VmZmVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9tb2RlbHMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmluZGluZy1zdGF0ZS9iaW5kaW5nLmFjdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuZWZmZWN0cyc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createAction, props } from '@ngrx/store';
|
|
2
|
+
export function createAddBindingAction(bindingsRepository) {
|
|
3
|
+
return createAction(`[${bindingsRepository}/API] Add bindings`, props());
|
|
4
|
+
}
|
|
5
|
+
export function createAddBindingsAction(bindingsRepository) {
|
|
6
|
+
return createAction(`[${bindingsRepository}/API] Add bindings`, props());
|
|
7
|
+
}
|
|
8
|
+
export function createAddBindingsFailureAction(bindingsRepository) {
|
|
9
|
+
return createAction(`[${bindingsRepository}/API] Add bindings failure`, props());
|
|
10
|
+
}
|
|
11
|
+
export function createAddBindingsSuccessAction(bindingsRepository) {
|
|
12
|
+
return createAction(`[${bindingsRepository}/API] Add bindings success`);
|
|
13
|
+
}
|
|
14
|
+
export function createEditBindingAction(bindingsRepository) {
|
|
15
|
+
return createAction(`[${bindingsRepository}/API] Edit binding`, props());
|
|
16
|
+
}
|
|
17
|
+
export function createEditBindingFailureAction(bindingsRepository) {
|
|
18
|
+
return createAction(`[${bindingsRepository}/API] Edit binding failure`, props());
|
|
19
|
+
}
|
|
20
|
+
export function createEditBindingSuccessAction(bindingsRepository) {
|
|
21
|
+
return createAction(`[${bindingsRepository}/API] Edit binding success`);
|
|
22
|
+
}
|
|
23
|
+
export function createDeleteBindingAction(bindingsRepository) {
|
|
24
|
+
return createAction(`[${bindingsRepository}/API] Delete binding`, props());
|
|
25
|
+
}
|
|
26
|
+
export function createDeleteBindingsAction(bindingsRepository) {
|
|
27
|
+
return createAction(`[${bindingsRepository}/API] Delete bindings`, props());
|
|
28
|
+
}
|
|
29
|
+
export function createDeleteBindingsFailureAction(bindingsRepository) {
|
|
30
|
+
return createAction(`[${bindingsRepository}/API] Delete bindings failure`, props());
|
|
31
|
+
}
|
|
32
|
+
export function createDeleteBindingsSuccessAction(bindingsRepository) {
|
|
33
|
+
return createAction(`[${bindingsRepository}/API] Delete bindings success`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLFVBQVUsc0JBQXNCLENBQVUsa0JBQTBCO0lBQ3hFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUF3QixDQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBVSxrQkFBMEI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLG9CQUFvQixFQUMxQyxLQUFLLEVBQTJCLENBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQiw0QkFBNEIsQ0FDbkQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQVEsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUFzQixDQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxrQkFBMEI7SUFDdkUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLDRCQUE0QixFQUNsRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLENBQ25ELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGtCQUEwQjtJQUNsRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0Isc0JBQXNCLEVBQzVDLEtBQUssRUFBMkIsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsa0JBQTBCO0lBQ25FLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQix1QkFBdUIsRUFDN0MsS0FBSyxFQUE0QixDQUNsQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxrQkFBMEI7SUFDMUUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLCtCQUErQixFQUNyRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLGtCQUEwQjtJQUMxRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsK0JBQStCLENBQ3RELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gQWRkIGJpbmRpbmdzYCxcclxuICAgIHByb3BzPHsgYmluZGluZzogVENyZWF0ZSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gQWRkIGJpbmRpbmdzYCxcclxuICAgIHByb3BzPHsgYmluZGluZ3M6IFRDcmVhdGVbXSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5ncyBmYWlsdXJlYCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5ncyBzdWNjZXNzYFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0QmluZGluZ0FjdGlvbjxURWRpdD4oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBFZGl0IGJpbmRpbmdgLFxyXG4gICAgcHJvcHM8eyBiaW5kaW5nOiBURWRpdCB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEVkaXQgYmluZGluZyBmYWlsdXJlYCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEVkaXQgYmluZGluZyBzdWNjZXNzYFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdgLFxyXG4gICAgcHJvcHM8eyBpZDogbnVtYmVyIHwgc3RyaW5nIH0+KClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBEZWxldGUgYmluZGluZ3NgLFxyXG4gICAgcHJvcHM8eyBiaW5kaW5nSWRzOiBudW1iZXJbXSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBiaW5kaW5ncyBmYWlsdXJlYCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBiaW5kaW5ncyBzdWNjZXNzYFxyXG4gICk7XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
+
import { catchError, map, of, switchMap, tap, withLatestFrom, } from 'rxjs';
|
|
3
|
+
import { createAddBindingAction, createAddBindingsAction, createAddBindingsFailureAction, createAddBindingsSuccessAction, createDeleteBindingAction, createDeleteBindingsAction, createDeleteBindingsFailureAction, createDeleteBindingsSuccessAction, createEditBindingAction, createEditBindingFailureAction, createEditBindingSuccessAction, } from './binding.actions';
|
|
4
|
+
export function createSingleBindingEffectsWithEdit(bindingsRepository, actions$, detail$, bindingSingularName, bindingPluralName, addFunction, editFunction, deleteFunction, snackbar, translateService, tableService, overrideDetailWithBinding = false) {
|
|
5
|
+
const addEffect = createAddBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
|
|
6
|
+
const editEffect = createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding);
|
|
7
|
+
const deleteEffect = createDeleteBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
|
|
8
|
+
const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
|
|
9
|
+
return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };
|
|
10
|
+
}
|
|
11
|
+
export function createBindingsEffectsWithEdit(bindingsRepository, actions$, detail$, bindingSingularName, bindingPluralName, addFunction, editFunction, deleteFunction, snackbar, translateService, tableService, overrideDetailWithBinding = false) {
|
|
12
|
+
const addEffect = createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
|
|
13
|
+
const editEffect = createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding);
|
|
14
|
+
const deleteEffect = createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
|
|
15
|
+
const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
|
|
16
|
+
return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };
|
|
17
|
+
}
|
|
18
|
+
export function createBindingsEffects(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, deleteFunction, snackbar, translateService, tableService) {
|
|
19
|
+
const addEffect = createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
|
|
20
|
+
const deleteEffect = createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
|
|
21
|
+
const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
|
|
22
|
+
return { addEffect, deleteEffect, modifiedSuccessEffect };
|
|
23
|
+
}
|
|
24
|
+
function createAddBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService) {
|
|
25
|
+
return createEffect(() => actions$.pipe(ofType(createAddBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ binding }, detail]) => {
|
|
26
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
27
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_ADD')} ${translatedPluralName}!`;
|
|
28
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_ADD')} ${translatedPluralName}!`;
|
|
29
|
+
return addFunction(binding).pipe(map(() => {
|
|
30
|
+
snackbar.showSuccess(successMessage);
|
|
31
|
+
return createAddBindingsSuccessAction(bindingsRepository)();
|
|
32
|
+
}), catchError((error) => {
|
|
33
|
+
snackbar.showError(failureMessage);
|
|
34
|
+
return of(createAddBindingsFailureAction(bindingsRepository)({ error }));
|
|
35
|
+
}));
|
|
36
|
+
})));
|
|
37
|
+
}
|
|
38
|
+
function createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService) {
|
|
39
|
+
return createEffect(() => actions$.pipe(ofType(createAddBindingsAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ bindings }, detail]) => {
|
|
40
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
41
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_ADD')} ${translatedPluralName}!`;
|
|
42
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_ADD')} ${translatedPluralName}!`;
|
|
43
|
+
if (!detail?.id) {
|
|
44
|
+
snackbar.showError(failureMessage);
|
|
45
|
+
return of(createAddBindingsFailureAction(bindingsRepository)({
|
|
46
|
+
error: failureMessage,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
return addFunction(bindings, detail.id).pipe(map(() => {
|
|
50
|
+
snackbar.showSuccess(successMessage);
|
|
51
|
+
return createAddBindingsSuccessAction(bindingsRepository)();
|
|
52
|
+
}), catchError((error) => {
|
|
53
|
+
snackbar.showError(failureMessage);
|
|
54
|
+
return of(createAddBindingsFailureAction(bindingsRepository)({ error }));
|
|
55
|
+
}));
|
|
56
|
+
})));
|
|
57
|
+
}
|
|
58
|
+
function createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding = false) {
|
|
59
|
+
return createEffect(() => actions$.pipe(ofType(createEditBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ binding }, detail]) => {
|
|
60
|
+
const translatedPluralName = translateService.instant(bindingSingularName);
|
|
61
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_EDIT')} ${translatedPluralName}!`;
|
|
62
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_EDIT')} ${translatedPluralName}!`;
|
|
63
|
+
const id = overrideDetailWithBinding ? binding?.id : detail?.id;
|
|
64
|
+
if (!id) {
|
|
65
|
+
snackbar.showError(failureMessage);
|
|
66
|
+
return of(createEditBindingFailureAction(bindingsRepository)({
|
|
67
|
+
error: failureMessage,
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
return editFunction(binding, id).pipe(map(() => {
|
|
71
|
+
snackbar.showSuccess(successMessage);
|
|
72
|
+
return createEditBindingSuccessAction(bindingsRepository)();
|
|
73
|
+
}), catchError((error) => {
|
|
74
|
+
snackbar.showError(failureMessage);
|
|
75
|
+
return of(createEditBindingFailureAction(bindingsRepository)({ error }));
|
|
76
|
+
}));
|
|
77
|
+
})));
|
|
78
|
+
}
|
|
79
|
+
function createDeleteBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService) {
|
|
80
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ id }, detail]) => {
|
|
81
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
82
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_DELETE')} ${translatedPluralName}!`;
|
|
83
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_DELETE')} ${translatedPluralName}!`;
|
|
84
|
+
if (!id && !detail?.id) {
|
|
85
|
+
snackbar.showError(failureMessage);
|
|
86
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({
|
|
87
|
+
error: failureMessage,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
return deleteFunction(id, id ?? detail?.id).pipe(map(() => {
|
|
91
|
+
snackbar.showSuccess(successMessage);
|
|
92
|
+
return createDeleteBindingsSuccessAction(bindingsRepository)();
|
|
93
|
+
}), catchError((error) => {
|
|
94
|
+
snackbar.showError(failureMessage);
|
|
95
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({ error }));
|
|
96
|
+
}));
|
|
97
|
+
})));
|
|
98
|
+
}
|
|
99
|
+
function createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService) {
|
|
100
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteBindingsAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ bindingIds }, detail]) => {
|
|
101
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
102
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_DELETE')} ${translatedPluralName}!`;
|
|
103
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_DELETE')} ${translatedPluralName}!`;
|
|
104
|
+
if (!detail?.id) {
|
|
105
|
+
snackbar.showError(failureMessage);
|
|
106
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({
|
|
107
|
+
error: failureMessage,
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
return deleteFunction(bindingIds, detail.id).pipe(map(() => {
|
|
111
|
+
snackbar.showSuccess(successMessage);
|
|
112
|
+
return createDeleteBindingsSuccessAction(bindingsRepository)();
|
|
113
|
+
}), catchError((error) => {
|
|
114
|
+
snackbar.showError(failureMessage);
|
|
115
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({ error }));
|
|
116
|
+
}));
|
|
117
|
+
})));
|
|
118
|
+
}
|
|
119
|
+
function createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService) {
|
|
120
|
+
return createEffect(() => actions$.pipe(ofType(createAddBindingsSuccessAction(bindingsRepository), createEditBindingSuccessAction(bindingsRepository), createDeleteBindingsSuccessAction(bindingsRepository)), tap(() => {
|
|
121
|
+
tableService.forceReload();
|
|
122
|
+
})), { dispatch: false });
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLEdBQUcsRUFFSCxFQUFFLEVBQ0YsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLDhCQUE4QixHQUMvQixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sVUFBVSxrQ0FBa0MsQ0FLaEQsa0JBQTBCLEVBQzFCLFFBQWlCLEVBQ2pCLE9BQWtDLEVBQ2xDLG1CQUEyQixFQUMzQixpQkFBeUIsRUFDekIsV0FFb0IsRUFDcEIsWUFBNEUsRUFDNUUsY0FHb0IsRUFDcEIsUUFBYSxFQUNiLGdCQUFxQixFQUNyQixZQUFpQixFQUNqQix5QkFBeUIsR0FBRyxLQUFLO0lBRWpDLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUN0QyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLFFBQVEsRUFDUixnQkFBZ0IsQ0FDakIsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUN4QyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIseUJB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UCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgbWFwLFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbiAgc3dpdGNoTWFwLFxyXG4gIHRhcCxcclxuICB3aXRoTGF0ZXN0RnJvbSxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBjcmVhdGVBZGRCaW5kaW5nQWN0aW9uLFxyXG4gIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uLFxyXG4gIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbixcclxuICBjcmVhdGVBZGRCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24sXHJcbiAgY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbixcclxuICBjcmVhdGVEZWxldGVCaW5kaW5nc0FjdGlvbixcclxuICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24sXHJcbiAgY3JlYXRlRGVsZXRlQmluZGluZ3NTdWNjZXNzQWN0aW9uLFxyXG4gIGNyZWF0ZUVkaXRCaW5kaW5nQWN0aW9uLFxyXG4gIGNyZWF0ZUVkaXRCaW5kaW5nRmFpbHVyZUFjdGlvbixcclxuICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24sXHJcbn0gZnJvbSAnLi9iaW5kaW5nLmFjdGlvbnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpbmdsZUJpbmRpbmdFZmZlY3RzV2l0aEVkaXQ8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRDcmVhdGUsXHJcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cclxuPihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdTaW5ndWxhck5hbWU6IHN0cmluZyxcclxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxyXG4gIGFkZEZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nczogVENyZWF0ZSxcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBlZGl0RnVuY3Rpb246IChiaW5kaW5nOiBURWRpdCwgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nSWRzOiBzdHJpbmcgfCBudW1iZXIsXHJcbiAgICBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nXHJcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgc25hY2tiYXI6IGFueSxcclxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXHJcbiAgdGFibGVTZXJ2aWNlOiBhbnksXHJcbiAgb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA9IGZhbHNlLFxyXG4pIHtcclxuICBjb25zdCBhZGRFZmZlY3QgPSBjcmVhdGVBZGRCaW5kaW5nRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXHJcbiAgICBhZGRGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZSxcclxuICApO1xyXG5cclxuICBjb25zdCBlZGl0RWZmZWN0ID0gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIGRldGFpbCQsXHJcbiAgICBiaW5kaW5nU2luZ3VsYXJOYW1lLFxyXG4gICAgZWRpdEZ1bmN0aW9uLFxyXG4gICAgc25hY2tiYXIsXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZ1xyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRlbGV0ZUVmZmVjdCA9IGNyZWF0ZURlbGV0ZUJpbmRpbmdFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIGRldGFpbCQsXHJcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcclxuICAgIGRlbGV0ZUZ1bmN0aW9uLFxyXG4gICAgc25hY2tiYXIsXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcclxuICAgIGJpbmRpbmdzUmVwb3NpdG9yeSxcclxuICAgIGFjdGlvbnMkLFxyXG4gICAgdGFibGVTZXJ2aWNlXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBlZGl0RWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ3NFZmZlY3RzV2l0aEVkaXQ8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRDcmVhdGUsXHJcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cclxuPihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdTaW5ndWxhck5hbWU6IHN0cmluZyxcclxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxyXG4gIGFkZEZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nczogVENyZWF0ZVtdLFxyXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIGVkaXRGdW5jdGlvbjogKGJpbmRpbmc6IFRFZGl0LCBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgZGVsZXRlRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdJZHM6IG51bWJlcltdLFxyXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIHNuYWNrYmFyOiBhbnksXHJcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxyXG4gIHRhYmxlU2VydmljZTogYW55LFxyXG4gIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmcgPSBmYWxzZSxcclxuKSB7XHJcbiAgY29uc3QgYWRkRWZmZWN0ID0gY3JlYXRlQWRkQmluZGluZ3NFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIGRldGFpbCQsXHJcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcclxuICAgIGFkZEZ1bmN0aW9uLFxyXG4gICAgc25hY2tiYXIsXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgZWRpdEVmZmVjdCA9IGNyZWF0ZUVkaXRCaW5kaW5nRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1Npbmd1bGFyTmFtZSxcclxuICAgIGVkaXRGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZSxcclxuICAgIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmdcclxuICApO1xyXG5cclxuICBjb25zdCBkZWxldGVFZmZlY3QgPSBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdChcclxuICAgIGJpbmRpbmdzUmVwb3NpdG9yeSxcclxuICAgIGFjdGlvbnMkLFxyXG4gICAgZGV0YWlsJCxcclxuICAgIGJpbmRpbmdQbHVyYWxOYW1lLFxyXG4gICAgZGVsZXRlRnVuY3Rpb24sXHJcbiAgICBzbmFja2JhcixcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2VcclxuICApO1xyXG5cclxuICBjb25zdCBtb2RpZmllZFN1Y2Nlc3NFZmZlY3QgPSBjcmVhdGVCaW5kaW5nTW9kaWZpZWRTdWNjZXNzRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICB0YWJsZVNlcnZpY2VcclxuICApO1xyXG5cclxuICByZXR1cm4geyBhZGRFZmZlY3QsIGVkaXRFZmZlY3QsIGRlbGV0ZUVmZmVjdCwgbW9kaWZpZWRTdWNjZXNzRWZmZWN0IH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCaW5kaW5nc0VmZmVjdHM8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRDcmVhdGVcclxuPihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdQbHVyYWxOYW1lOiBzdHJpbmcsXHJcbiAgYWRkRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdzOiBUQ3JlYXRlW10sXHJcbiAgICBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nXHJcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgZGVsZXRlRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdJZHM6IG51bWJlcltdLFxyXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIHNuYWNrYmFyOiBhbnksXHJcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxyXG4gIHRhYmxlU2VydmljZTogYW55XHJcbikge1xyXG4gIGNvbnN0IGFkZEVmZmVjdCA9IGNyZWF0ZUFkZEJpbmRpbmdzRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXHJcbiAgICBhZGRGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRlbGV0ZUVmZmVjdCA9IGNyZWF0ZURlbGV0ZUJpbmRpbmdzRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXHJcbiAgICBkZWxldGVGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCA9IGNyZWF0ZUJpbmRpbmdNb2RpZmllZFN1Y2Nlc3NFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIHRhYmxlU2VydmljZVxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7IGFkZEVmZmVjdCwgZGVsZXRlRWZmZWN0LCBtb2RpZmllZFN1Y2Nlc3NFZmZlY3QgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlQWRkQmluZGluZ0VmZmVjdDxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sIFRDcmVhdGU+KFxyXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gIGRldGFpbCQ6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4sXHJcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcclxuICBhZGRGdW5jdGlvbjogKFxyXG4gICAgYmluZGluZ3M6IFRDcmVhdGUsXHJcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgc25hY2tiYXI6IGFueSxcclxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShjcmVhdGVBZGRCaW5kaW5nQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShkZXRhaWwkKSxcclxuICAgICAgc3dpdGNoTWFwKChbeyBiaW5kaW5nIH0sIGRldGFpbF0pID0+IHtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUGx1cmFsTmFtZSA9XHJcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1BsdXJhbE5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuU1VDQ0VTU19BREQnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLkZBSUxVUkVfQUREJ1xyXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XHJcblxyXG4gICAgICAgIHJldHVybiBhZGRGdW5jdGlvbihiaW5kaW5nKS5waXBlKFxyXG4gICAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgICAgc25hY2tiYXIuc2hvd1N1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICAgIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nc0VmZmVjdDxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sIFRDcmVhdGU+KFxyXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gIGRldGFpbCQ6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4sXHJcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcclxuICBhZGRGdW5jdGlvbjogKFxyXG4gICAgYmluZGluZ3M6IFRDcmVhdGVbXSxcclxuICAgIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmdcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlQWRkQmluZGluZ3NBY3Rpb248VENyZWF0ZT4oYmluZGluZ3NSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGRldGFpbCQpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmdzIH0sIGRldGFpbF0pID0+IHtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUGx1cmFsTmFtZSA9XHJcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1BsdXJhbE5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuU1VDQ0VTU19BREQnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLkZBSUxVUkVfQUREJ1xyXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XHJcblxyXG4gICAgICAgIGlmICghZGV0YWlsPy5pZCkge1xyXG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgY3JlYXRlQWRkQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoe1xyXG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYWRkRnVuY3Rpb24oYmluZGluZ3MsIGRldGFpbC5pZCkucGlwZShcclxuICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dTdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkZEJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKCk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dFcnJvcihmYWlsdXJlTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgICBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7IGVycm9yIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3Q8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRFZGl0IGV4dGVuZHMgeyBpZD86IG51bWJlciB8IHN0cmluZyB9XHJcbj4oXHJcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcclxuICBiaW5kaW5nU2luZ3VsYXJOYW1lOiBzdHJpbmcsXHJcbiAgZWRpdEZ1bmN0aW9uOiAoYmluZGluZzogVEVkaXQsIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueSxcclxuICBvdmVycmlkZURldGFpbFdpdGhCaW5kaW5nID0gZmFsc2UsXHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShjcmVhdGVFZGl0QmluZGluZ0FjdGlvbjxURWRpdD4oYmluZGluZ3NSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGRldGFpbCQpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmcgfSwgZGV0YWlsXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cclxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nU2luZ3VsYXJOYW1lKTtcclxuICAgICAgICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfRURJVCdcclxuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xyXG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9FRElUJ1xyXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XHJcblxyXG4gICAgICAgIGNvbnN0IGlkID0gb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA/IGJpbmRpbmc/LmlkIDogZGV0YWlsPy5pZDtcclxuICAgICAgICBpZiAoIWlkKSB7XHJcbiAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICBjcmVhdGVFZGl0QmluZGluZ0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XHJcbiAgICAgICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXNzYWdlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlZGl0RnVuY3Rpb24oYmluZGluZywgaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdFZmZlY3Q8VCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdQbHVyYWxOYW1lOiBzdHJpbmcsXHJcbiAgZGVsZXRlRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdJZHM6IHN0cmluZyB8IG51bWJlcixcclxuICAgIGRldGFpbElkOiBzdHJpbmcgfCBudW1iZXJcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXHJcbiAgICAgIHN3aXRjaE1hcCgoW3sgaWQgfSwgZGV0YWlsXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cclxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5TVUNDRVNTX0RFTEVURSdcclxuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xyXG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9ERUxFVEUnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuXHJcbiAgICAgICAgaWYgKCFpZCAmJiAhZGV0YWlsPy5pZCkge1xyXG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgY3JlYXRlRGVsZXRlQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoe1xyXG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVsZXRlRnVuY3Rpb24oaWQsIGlkID8/IGRldGFpbD8uaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlRGVsZXRlQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRWZmZWN0PFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfT4oXHJcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcclxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxyXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nSWRzOiBudW1iZXJbXSxcclxuICAgIGRldGFpbElkOiBzdHJpbmcgfCBudW1iZXJcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGRldGFpbCQpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmdJZHMgfSwgZGV0YWlsXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cclxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5TVUNDRVNTX0RFTEVURSdcclxuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xyXG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9ERUxFVEUnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuXHJcbiAgICAgICAgaWYgKCFkZXRhaWw/LmlkKSB7XHJcbiAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XHJcbiAgICAgICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXNzYWdlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkZWxldGVGdW5jdGlvbihiaW5kaW5nSWRzLCBkZXRhaWwuaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlRGVsZXRlQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUJpbmRpbmdNb2RpZmllZFN1Y2Nlc3NFZmZlY3QoXHJcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgdGFibGVTZXJ2aWNlOiBhbnlcclxuKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdChcclxuICAgICgpID0+XHJcbiAgICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKFxyXG4gICAgICAgICAgY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSksXHJcbiAgICAgICAgICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSxcclxuICAgICAgICAgIGNyZWF0ZURlbGV0ZUJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGFibGVTZXJ2aWNlLmZvcmNlUmVsb2FkKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cclxuICApO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createAction, props } from '@ngrx/store';
|
|
2
|
+
export function createInitDetailAction(detailsRepository) {
|
|
3
|
+
return createAction(`[${detailsRepository} Page] Init`, props());
|
|
4
|
+
}
|
|
5
|
+
export function createInitNewDetailAction(detailsRepository) {
|
|
6
|
+
return createAction(`[${detailsRepository} Page] Init New`);
|
|
7
|
+
}
|
|
8
|
+
export function createLoadDetailSuccessAction(detailsRepository) {
|
|
9
|
+
return createAction(`[${detailsRepository}/API] Load ${detailsRepository} Success`, props());
|
|
10
|
+
}
|
|
11
|
+
export function createLoadDetailFailureAction(detailsRepository) {
|
|
12
|
+
return createAction(`[${detailsRepository}/API] Load ${detailsRepository} Failure`, props());
|
|
13
|
+
}
|
|
14
|
+
export function createUpdateDetailAction(detailsRepository) {
|
|
15
|
+
return createAction(`[${detailsRepository}/API] Update ${detailsRepository}`, props());
|
|
16
|
+
}
|
|
17
|
+
export function createUpdateDetailSetErrorsAction(detailsRepository) {
|
|
18
|
+
return createAction(`[${detailsRepository}/API] Update Validation Errors ${detailsRepository}`, props());
|
|
19
|
+
}
|
|
20
|
+
export function createUpdateFormStateAction(detailsRepository) {
|
|
21
|
+
return createAction(`[${detailsRepository}/API] Update Form State`, props());
|
|
22
|
+
}
|
|
23
|
+
export function createSaveDetailAction(detailsRepository) {
|
|
24
|
+
return createAction(`[${detailsRepository}/API] Save Detail `);
|
|
25
|
+
}
|
|
26
|
+
export function createSaveDetailSuccessAction(detailsRepository) {
|
|
27
|
+
return createAction(`[${detailsRepository}/API] Save Detail Success`, props());
|
|
28
|
+
}
|
|
29
|
+
export function createSaveDetailFailureAction(detailsRepository) {
|
|
30
|
+
return createAction(`[${detailsRepository}/API] Save Detail Failure`, props());
|
|
31
|
+
}
|
|
32
|
+
export function createUpdateSaveDetailAction(detailsRepository) {
|
|
33
|
+
return createAction(`[${detailsRepository}/API] Update Detail `);
|
|
34
|
+
}
|
|
35
|
+
export function createResetStateAction(detailsRepository) {
|
|
36
|
+
return createAction(`[${detailsRepository}/API] Reset State`);
|
|
37
|
+
}
|
|
38
|
+
export function createDeleteDetailAction(detailsRepository) {
|
|
39
|
+
return createAction(`[${detailsRepository}/API] Delete Detail`);
|
|
40
|
+
}
|
|
41
|
+
export function createDeleteDetailSuccessAction(detailsRepository) {
|
|
42
|
+
return createAction(`[${detailsRepository}/API] Delete Detail Success`);
|
|
43
|
+
}
|
|
44
|
+
export function createDeleteDetailFailureAction(detailsRepository) {
|
|
45
|
+
return createAction(`[${detailsRepository}/API] Delete Detail Failure`, props());
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQixhQUFhLEVBQ2xDLEtBQUssRUFBcUQsQ0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsaUJBQXlCO0lBQ2pFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLGlCQUFpQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGNBQWMsaUJBQWlCLFVBQVUsRUFDOUQsS0FBSyxFQUFlLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGlCQUF5QjtJQUNyRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsY0FBYyxpQkFBaUIsVUFBVSxFQUM5RCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFJLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsZ0JBQWdCLGlCQUFpQixFQUFFLEVBQ3hELEtBQUssRUFBZSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxpQkFBeUI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGtDQUFrQyxpQkFBaUIsRUFBRSxFQUMxRSxLQUFLLEVBQWtCLENBQ3hCLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIseUJBQXlCLEVBQzlDLEtBQUssRUFBNEIsQ0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLG9CQUFvQixDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLDJCQUEyQixFQUNoRCxLQUFLLEVBQWUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsaUJBQXlCO0lBQ3JFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQiwyQkFBMkIsRUFDaEQsS0FBSyxFQUFrQixDQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxpQkFBeUI7SUFDcEUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsc0JBQXNCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGlCQUF5QjtJQUM5RCxPQUFPLFlBQVksQ0FBQyxJQUFJLGlCQUFpQixtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsaUJBQXlCO0lBQ2hFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLHFCQUFxQixDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxpQkFBeUI7SUFDdkUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsNkJBQTZCLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLGlCQUF5QjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsNkJBQTZCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuL2RldGFpbC5tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9IFBhZ2VdIEluaXRgLFxyXG4gICAgcHJvcHM8eyBvYmo6IHN0cmluZyB8IG51bGwgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBhbnkgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0TmV3RGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0gUGFnZV0gSW5pdCBOZXdgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvYWREZXRhaWxTdWNjZXNzQWN0aW9uPFQ+KGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIExvYWQgJHtkZXRhaWxzUmVwb3NpdG9yeX0gU3VjY2Vzc2AsXHJcbiAgICBwcm9wczx7IGl0ZW06IFQgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBMb2FkICR7ZGV0YWlsc1JlcG9zaXRvcnl9IEZhaWx1cmVgLFxyXG4gICAgcHJvcHM8eyBlcnJvcjogYW55IH0+KClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlRGV0YWlsQWN0aW9uPFQ+KGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSAke2RldGFpbHNSZXBvc2l0b3J5fWAsXHJcbiAgICBwcm9wczx7IGl0ZW06IFQgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGVEZXRhaWxTZXRFcnJvcnNBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gVXBkYXRlIFZhbGlkYXRpb24gRXJyb3JzICR7ZGV0YWlsc1JlcG9zaXRvcnl9YCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlRm9ybVN0YXRlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSBGb3JtIFN0YXRlYCxcclxuICAgIHByb3BzPHsgZm9ybVN0YXRlOiBGb3JtU3RhdGUgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBTYXZlIERldGFpbCBgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uPFQ+KGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFNhdmUgRGV0YWlsIFN1Y2Nlc3NgLFxyXG4gICAgcHJvcHM8eyBpdGVtOiBUIH0+KClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gU2F2ZSBEZXRhaWwgRmFpbHVyZWAsXHJcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGVTYXZlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBVcGRhdGUgRGV0YWlsIGApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVzZXRTdGF0ZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gUmVzZXQgU3RhdGVgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIERldGFpbGApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIERldGFpbCBTdWNjZXNzYCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBEZXRhaWwgRmFpbHVyZWAsXHJcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxyXG4gICk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
+
import { catchError, EMPTY, map, of, switchMap, tap, withLatestFrom, } from 'rxjs';
|
|
3
|
+
import { createDeleteDetailAction, createDeleteDetailFailureAction, createDeleteDetailSuccessAction, createInitDetailAction, createInitNewDetailAction, createLoadDetailFailureAction, createLoadDetailSuccessAction, createSaveDetailAction, createSaveDetailFailureAction, createSaveDetailSuccessAction, } from './detail.actions';
|
|
4
|
+
export function createInitDetailEffect(detailsRepository, actions$, config) {
|
|
5
|
+
return createEffect(() => {
|
|
6
|
+
return actions$.pipe(ofType(createInitDetailAction(detailsRepository)), switchMap(({ obj }) => {
|
|
7
|
+
const get$ = (config?.service?.get(obj) ??
|
|
8
|
+
config?.get?.(obj));
|
|
9
|
+
if (!get$)
|
|
10
|
+
return EMPTY;
|
|
11
|
+
return get$?.pipe(map((item) => {
|
|
12
|
+
return createLoadDetailSuccessAction(detailsRepository)({ item });
|
|
13
|
+
}), catchError((error) => {
|
|
14
|
+
if (error.status === 404) {
|
|
15
|
+
config?.snackbar?.showError(config?.notFoundMessage ?? error);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
config?.snackbar?.showError(config?.errorMessage ?? error);
|
|
19
|
+
}
|
|
20
|
+
console.error('Error', error);
|
|
21
|
+
return of(createLoadDetailFailureAction(detailsRepository)({ error }));
|
|
22
|
+
}));
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export function createInitNewDetailEffect(detailsRepository, actions$) {
|
|
27
|
+
return createEffect(() => actions$.pipe(ofType(createInitNewDetailAction(detailsRepository)), map(() => {
|
|
28
|
+
return createLoadDetailSuccessAction(detailsRepository)({ item: null });
|
|
29
|
+
})));
|
|
30
|
+
}
|
|
31
|
+
export function createSaveDetailEffect(detailsRepository, actions$, service, config) {
|
|
32
|
+
return createEffect(() => actions$.pipe(ofType(createSaveDetailAction(detailsRepository)), withLatestFrom(config.detail$), switchMap(([, savedItem]) => {
|
|
33
|
+
const isNew = !savedItem?.id;
|
|
34
|
+
const saveAction = isNew
|
|
35
|
+
? service.post(savedItem)
|
|
36
|
+
: service.put(savedItem.id, savedItem);
|
|
37
|
+
return saveAction.pipe(map((item) => {
|
|
38
|
+
if (isNew && config?.router && config?.redirectPath) {
|
|
39
|
+
const suffix = config?.useItemId ? '/' + item.id : '';
|
|
40
|
+
config.router.navigateByUrl(config.redirectPath + suffix);
|
|
41
|
+
}
|
|
42
|
+
if (isNew && config?.router && config?.navigationMap) {
|
|
43
|
+
const url = constructUrlFromNavigationMap(item, config.navigationMap);
|
|
44
|
+
config.router.navigateByUrl(url);
|
|
45
|
+
}
|
|
46
|
+
return createSaveDetailSuccessAction(detailsRepository)({
|
|
47
|
+
item: item,
|
|
48
|
+
});
|
|
49
|
+
}), catchError((error) => {
|
|
50
|
+
console.error('Error', error);
|
|
51
|
+
return of(createSaveDetailFailureAction(detailsRepository)({ error }));
|
|
52
|
+
}));
|
|
53
|
+
})));
|
|
54
|
+
}
|
|
55
|
+
export function createSaveDetailSuccessEffect(detailsRepository, actions$, config) {
|
|
56
|
+
return createEffect(() => actions$.pipe(ofType(createSaveDetailSuccessAction(detailsRepository)), map((data) => {
|
|
57
|
+
config?.snackbar?.showSuccess(config?.successMessge ?? `Item successfully saved.`);
|
|
58
|
+
return createInitDetailAction(detailsRepository)({ obj: data.item.id });
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
export function createSaveDetailFailureEffect(detailsRepository, actions$, config) {
|
|
62
|
+
return createEffect(() => actions$.pipe(ofType(createSaveDetailFailureAction(detailsRepository)), tap(({ error }) => {
|
|
63
|
+
config?.snackbar?.showError(config.errorMessage ?? `Error saving item. ${error.message}`);
|
|
64
|
+
})), {
|
|
65
|
+
dispatch: false,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function createDeleteDetailEffect(detailsRepository, actions$, service, config) {
|
|
69
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteDetailAction(detailsRepository)), withLatestFrom(config.detail$), switchMap(([, savedItem]) => {
|
|
70
|
+
const id = savedItem?.id;
|
|
71
|
+
if (!id) {
|
|
72
|
+
return of(createSaveDetailFailureAction(detailsRepository)({
|
|
73
|
+
error: 'Item has no id',
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
return service.delete(id).pipe(map(() => {
|
|
77
|
+
if (config?.router && config?.redirectPath) {
|
|
78
|
+
config.router.navigateByUrl(`${config.redirectPath}`);
|
|
79
|
+
}
|
|
80
|
+
if (config?.router && config?.navigationMap) {
|
|
81
|
+
const url = constructUrlFromNavigationMap(savedItem, config.navigationMap);
|
|
82
|
+
config.router.navigateByUrl(url);
|
|
83
|
+
}
|
|
84
|
+
return createDeleteDetailSuccessAction(detailsRepository)();
|
|
85
|
+
}), catchError((error) => {
|
|
86
|
+
console.error('Error', error);
|
|
87
|
+
config.snackbar?.showError('Failed to delete item.');
|
|
88
|
+
return of(createDeleteDetailFailureAction(detailsRepository)({ error }));
|
|
89
|
+
}));
|
|
90
|
+
})));
|
|
91
|
+
}
|
|
92
|
+
export function createDeleteDetailSuccessEffect(detailsRepository, actions$, config) {
|
|
93
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteDetailSuccessAction(detailsRepository)), tap(() => {
|
|
94
|
+
config?.snackbar?.showSuccess(config.successMessge ?? `Item successfully deleted.`);
|
|
95
|
+
})), {
|
|
96
|
+
dispatch: false,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
export function createDeleteDetailFailureEffect(detailsRepository, actions$, config) {
|
|
100
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteDetailFailureAction(detailsRepository)), tap(({ error }) => {
|
|
101
|
+
config?.snackbar?.showError(config.errorMessage ?? `Error deleting item. ${error.message}`);
|
|
102
|
+
})), {
|
|
103
|
+
dispatch: false,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function constructUrlFromNavigationMap(item, navigationMap) {
|
|
107
|
+
let url = '';
|
|
108
|
+
navigationMap.forEach((urlPartValue, suffixPropertyKey) => {
|
|
109
|
+
const suffix = item[suffixPropertyKey];
|
|
110
|
+
if (suffix) {
|
|
111
|
+
url += `${urlPartValue}/${suffix}`;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
return url;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLDZCQUE2QixHQUM5QixNQUFNLGtCQUFrQixDQUFDO0FBb0IxQixNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGlCQUF5QixFQUN6QixRQUFpQixFQUNqQixNQUErQjtJQUUvQixPQUFPLFlBQVksQ0FBQyxHQUFHLEVBQUU7UUFDdkIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixNQUFNLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUNqRCxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEdBQW9CLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBVSxDQUFDO2dCQUM3RCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQW9CLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDeEIsT0FBTyxJQUFJLEVBQUUsSUFBSSxDQUNmLEdBQUcsQ0FBQyxDQUFDLElB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QyxJQUFJLENBQ1gsTUFBTSxDQUFDLCtCQUErQixDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDMUQsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUN6QixNQUFNLENBQUMsWUFBWSxJQUFJLHdCQUF3QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQy9ELENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxFQUNIO1FBQ0UsUUFBUSxFQUFFLEtBQUs7S0FDaEIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsNkJBQTZCLENBQ3BDLElBQU8sRUFDUCxhQUFtQztJQUVuQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLEVBQUU7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEdBQUcsSUFBSSxHQUFHLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBCYXNlSHR0cFNlcnZpY2UgfSBmcm9tICdAdmVyaXNvZnQvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgY2F0Y2hFcnJvcixcclxuICBFTVBUWSxcclxuICBtYXAsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBvZixcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFwLFxyXG4gIHdpdGhMYXRlc3RGcm9tLFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGNyZWF0ZURlbGV0ZURldGFpbEFjdGlvbixcclxuICBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlQWN0aW9uLFxyXG4gIGNyZWF0ZURlbGV0ZURldGFpbFN1Y2Nlc3NBY3Rpb24sXHJcbiAgY3JlYXRlSW5pdERldGFpbEFjdGlvbixcclxuICBjcmVhdGVJbml0TmV3RGV0YWlsQWN0aW9uLFxyXG4gIGNyZWF0ZUxvYWREZXRhaWxGYWlsdXJlQWN0aW9uLFxyXG4gIGNyZWF0ZUxvYWREZXRhaWxTdWNjZXNzQWN0aW9uLFxyXG4gIGNyZWF0ZVNhdmVEZXRhaWxBY3Rpb24sXHJcbiAgY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24sXHJcbiAgY3JlYXRlU2F2ZURldGFpbFN1Y2Nlc3NBY3Rpb24sXHJcbn0gZnJvbSAnLi9kZXRhaWwuYWN0aW9ucyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUluaXRGb3JtQ29uZmlnPFQ+IHtcclxuICBzZXJ2aWNlPzogQmFzZUh0dHBTZXJ2aWNlPFQ+O1xyXG4gIGdldD86IChvYmo6IGFueSkgPT4gT2JzZXJ2YWJsZTxUPjtcclxuICBzbmFja2Jhcj86IGFueTtcclxuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgbm90Rm91bmRNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHN1Y2Nlc3NNZXNzZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsRWZmZWN0Q29uZmlnPFQ+IHtcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xyXG4gIHNuYWNrYmFyPzogYW55O1xyXG4gIHJvdXRlcj86IFJvdXRlcjtcclxuICByZWRpcmVjdFBhdGg/OiBzdHJpbmc7XHJcbiAgdXNlSXRlbUlkPzogYm9vbGVhbjtcclxuICBuYXZpZ2F0aW9uTWFwPzogTWFwPGtleW9mIFQsIHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0RGV0YWlsRWZmZWN0PFQ+KFxyXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgY29uZmlnOiBDcmVhdGVJbml0Rm9ybUNvbmZpZzxUPlxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+IHtcclxuICAgIHJldHVybiBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlSW5pdERldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxyXG4gICAgICBzd2l0Y2hNYXAoKHsgb2JqIH0pID0+IHtcclxuICAgICAgICBjb25zdCBnZXQkOiBPYnNlcnZhYmxlPGFueT4gPSAoY29uZmlnPy5zZXJ2aWNlPy5nZXQob2JqIGFzIGFueSkgPz9cclxuICAgICAgICAgIGNvbmZpZz8uZ2V0Py4ob2JqKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgICAgIGlmICghZ2V0JCkgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIHJldHVybiBnZXQkPy5waXBlKFxyXG4gICAgICAgICAgbWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2FkRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoeyBpdGVtIH0pO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgICAgICBjb25maWc/LnNuYWNrYmFyPy5zaG93RXJyb3IoY29uZmlnPy5ub3RGb3VuZE1lc3NhZ2UgPz8gZXJyb3IpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihjb25maWc/LmVycm9yTWVzc2FnZSA/PyBlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yJywgZXJyb3IpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlTG9hZERldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0TmV3RGV0YWlsRWZmZWN0KFxyXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnNcclxuKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKGNyZWF0ZUluaXROZXdEZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcclxuICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgaXRlbTogbnVsbCB9KTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEVmZmVjdDxcclxuICBUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sXHJcbiAgU0VSVklDRSBleHRlbmRzIEJhc2VIdHRwU2VydmljZTxUPlxyXG4+KFxyXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgc2VydmljZTogU0VSVklDRSxcclxuICBjb25maWc6IERldGFpbEVmZmVjdENvbmZpZzxUPlxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlU2F2ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShjb25maWcuZGV0YWlsJCksXHJcbiAgICAgIHN3aXRjaE1hcCgoWywgc2F2ZWRJdGVtXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzTmV3ID0gIXNhdmVkSXRlbT8uaWQ7XHJcbiAgICAgICAgY29uc3Qgc2F2ZUFjdGlvbiA9IGlzTmV3XHJcbiAgICAgICAgICA/IHNlcnZpY2UucG9zdChzYXZlZEl0ZW0gYXMgVClcclxuICAgICAgICAgIDogc2VydmljZS5wdXQoc2F2ZWRJdGVtLmlkLCBzYXZlZEl0ZW0pO1xyXG4gICAgICAgIHJldHVybiBzYXZlQWN0aW9uLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzTmV3ICYmIGNvbmZpZz8ucm91dGVyICYmIGNvbmZpZz8ucmVkaXJlY3RQYXRoKSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gY29uZmlnPy51c2VJdGVtSWQgPyAnLycgKyBpdGVtLmlkIDogJyc7XHJcbiAgICAgICAgICAgICAgY29uZmlnLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNvbmZpZy5yZWRpcmVjdFBhdGggKyBzdWZmaXgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNOZXcgJiYgY29uZmlnPy5yb3V0ZXIgJiYgY29uZmlnPy5uYXZpZ2F0aW9uTWFwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gY29uc3RydWN0VXJsRnJvbU5hdmlnYXRpb25NYXAoaXRlbSwgY29uZmlnLm5hdmlnYXRpb25NYXApXHJcbiAgICAgICAgICAgICAgY29uZmlnLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVTYXZlRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoe1xyXG4gICAgICAgICAgICAgIGl0ZW06IGl0ZW0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICAgIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSh7IGVycm9yIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzRWZmZWN0KFxyXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cclxuKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdChcclxuICAgICgpID0+XHJcbiAgICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXHJcbiAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dTdWNjZXNzKFxyXG4gICAgICAgICAgICBjb25maWc/LnN1Y2Nlc3NNZXNzZ2UgPz8gYEl0ZW0gc3VjY2Vzc2Z1bGx5IHNhdmVkLmBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gY3JlYXRlSW5pdERldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoeyBvYmo6IGRhdGEuaXRlbS5pZCB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlRWZmZWN0KFxyXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cclxuKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdChcclxuICAgICgpID0+XHJcbiAgICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXHJcbiAgICAgICAgdGFwKCh7IGVycm9yIH0pID0+IHtcclxuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihcclxuICAgICAgICAgICAgY29uZmlnLmVycm9yTWVzc2FnZSA/PyBgRXJyb3Igc2F2aW5nIGl0ZW0uICR7ZXJyb3IubWVzc2FnZX1gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7XHJcbiAgICAgIGRpc3BhdGNoOiBmYWxzZSxcclxuICAgIH1cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlRGV0YWlsRWZmZWN0PFxyXG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcclxuICBTRVJWSUNFIGV4dGVuZHMgQmFzZUh0dHBTZXJ2aWNlPFQ+XHJcbj4oXHJcbiAgZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBzZXJ2aWNlOiBTRVJWSUNFLFxyXG4gIGNvbmZpZzogRGV0YWlsRWZmZWN0Q29uZmlnPFQ+LFxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGNvbmZpZy5kZXRhaWwkKSxcclxuICAgICAgc3dpdGNoTWFwKChbLCBzYXZlZEl0ZW1dKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBzYXZlZEl0ZW0/LmlkO1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHtcclxuICAgICAgICAgICAgICBlcnJvcjogJ0l0ZW0gaGFzIG5vIGlkJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc2VydmljZS5kZWxldGUoaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnPy5yb3V0ZXIgJiYgY29uZmlnPy5yZWRpcmVjdFBhdGgpIHtcclxuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwoYCR7Y29uZmlnLnJlZGlyZWN0UGF0aH1gKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbmZpZz8ucm91dGVyICYmIGNvbmZpZz8ubmF2aWdhdGlvbk1hcCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbnN0cnVjdFVybEZyb21OYXZpZ2F0aW9uTWFwKHNhdmVkSXRlbSwgY29uZmlnLm5hdmlnYXRpb25NYXApXHJcbiAgICAgICAgICAgICAgY29uZmlnLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVEZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yKTtcclxuICAgICAgICAgICAgY29uZmlnLnNuYWNrYmFyPy5zaG93RXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgaXRlbS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICAgIGNyZWF0ZURlbGV0ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlRGV0YWlsU3VjY2Vzc0VmZmVjdChcclxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gIGNvbmZpZz86IENyZWF0ZUluaXRGb3JtQ29uZmlnPHVua25vd24+XHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICAgIG9mVHlwZShjcmVhdGVEZWxldGVEZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dTdWNjZXNzKFxyXG4gICAgICAgICAgICBjb25maWcuc3VjY2Vzc01lc3NnZSA/PyBgSXRlbSBzdWNjZXNzZnVsbHkgZGVsZXRlZC5gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7XHJcbiAgICAgIGRpc3BhdGNoOiBmYWxzZSxcclxuICAgIH1cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlRGV0YWlsRmFpbHVyZUVmZmVjdChcclxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gIGNvbmZpZz86IENyZWF0ZUluaXRGb3JtQ29uZmlnPHVua25vd24+XHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICAgIG9mVHlwZShjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXHJcbiAgICAgICAgdGFwKCh7IGVycm9yIH0pID0+IHtcclxuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihcclxuICAgICAgICAgICAgY29uZmlnLmVycm9yTWVzc2FnZSA/PyBgRXJyb3IgZGVsZXRpbmcgaXRlbS4gJHtlcnJvci5tZXNzYWdlfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgIHtcclxuICAgICAgZGlzcGF0Y2g6IGZhbHNlLFxyXG4gICAgfVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbnN0cnVjdFVybEZyb21OYXZpZ2F0aW9uTWFwPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gIGl0ZW06IFQsXHJcbiAgbmF2aWdhdGlvbk1hcDogTWFwPGtleW9mIFQsIHN0cmluZz4pXHJcbiAgOiBzdHJpbmcge1xyXG4gIGxldCB1cmwgPSAnJztcclxuICBuYXZpZ2F0aW9uTWFwLmZvckVhY2goKHVybFBhcnRWYWx1ZSwgc3VmZml4UHJvcGVydHlLZXkpID0+IHtcclxuICAgIGNvbnN0IHN1ZmZpeCA9IGl0ZW1bc3VmZml4UHJvcGVydHlLZXldO1xyXG4gICAgaWYgKHN1ZmZpeCkge1xyXG4gICAgICB1cmwgKz0gYCR7dXJsUGFydFZhbHVlfS8ke3N1ZmZpeH1gO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gdXJsO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const INITIAL_SAVE_ITEM_STATE = {
|
|
2
|
+
saveInProgress: false,
|
|
3
|
+
};
|
|
4
|
+
export const INITIAL_CHOSEN_ROW_STATE = {
|
|
5
|
+
rows: []
|
|
6
|
+
};
|
|
7
|
+
export const INITIAL_DETAIL_STATE = {
|
|
8
|
+
loaded: false,
|
|
9
|
+
saveItemState: INITIAL_SAVE_ITEM_STATE,
|
|
10
|
+
backendValidationErrors: [],
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3N0b3JlL3NyYy9saWIvZGV0YWlsLXN0YXRlL2RldGFpbC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFrQjtJQUNwRCxjQUFjLEVBQUUsS0FBSztDQUN0QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXlCO0lBQzVELElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFxQjtJQUNwRCxNQUFNLEVBQUUsS0FBSztJQUNiLGFBQWEsRUFBRSx1QkFBdUI7SUFDdEMsdUJBQXVCLEVBQUUsRUFBRTtDQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEZXRhaWxTdGF0ZTxUPiB7XHJcbiAgbG9hZGVkOiBib29sZWFuO1xyXG4gIGl0ZW0/OiBUO1xyXG4gIGZvcm1TdGF0ZT86IEZvcm1TdGF0ZTtcclxuICBlcnJvcj86IHN0cmluZyB8IG51bGw7XHJcbiAgc2F2ZUl0ZW1TdGF0ZTogU2F2ZUl0ZW1TdGF0ZTtcclxuICBiYWNrZW5kVmFsaWRhdGlvbkVycm9yczogQmFja2VuZFZhbGlkYXRpb25FcnJvcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmRWYWxpZGF0aW9uRXJyb3Ige1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgcGFyYW1ldGVyczogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENob3NlblJvd3NTdGF0ZTxUPiB7IFxyXG4gIHJvd3M6IEFycmF5PFQ+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVJdGVtU3RhdGUge1xyXG4gIHNhdmVJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElOSVRJQUxfU0FWRV9JVEVNX1NUQVRFOiBTYXZlSXRlbVN0YXRlID0ge1xyXG4gIHNhdmVJblByb2dyZXNzOiBmYWxzZSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBJTklUSUFMX0NIT1NFTl9ST1dfU1RBVEU6IENob3NlblJvd3NTdGF0ZTxhbnk+ID0ge1xyXG4gIHJvd3M6IFtdXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJTklUSUFMX0RFVEFJTF9TVEFURTogRGV0YWlsU3RhdGU8YW55PiA9IHtcclxuICBsb2FkZWQ6IGZhbHNlLFxyXG4gIHNhdmVJdGVtU3RhdGU6IElOSVRJQUxfU0FWRV9JVEVNX1NUQVRFLFxyXG4gIGJhY2tlbmRWYWxpZGF0aW9uRXJyb3JzOiBbXSxcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN0YXRlIHtcclxuICBkaXJ0eTogYm9vbGVhbjtcclxuICB2YWxpZDogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { createReducer, on } from '@ngrx/store';
|
|
2
|
+
import { createInitDetailAction, createInitNewDetailAction, createLoadDetailFailureAction, createLoadDetailSuccessAction, createResetStateAction, createSaveDetailAction, createSaveDetailFailureAction, createSaveDetailSuccessAction, createUpdateDetailAction, createUpdateDetailSetErrorsAction, createUpdateFormStateAction, } from './detail.actions';
|
|
3
|
+
import { INITIAL_DETAIL_STATE, INITIAL_SAVE_ITEM_STATE, } from './detail.models';
|
|
4
|
+
export function createDetailReducers(detailRepository, initialState = INITIAL_DETAIL_STATE, ...ons) {
|
|
5
|
+
return createReducer(initialState, on(createInitDetailAction(detailRepository), (state) => {
|
|
6
|
+
return {
|
|
7
|
+
...state,
|
|
8
|
+
loaded: false,
|
|
9
|
+
error: null,
|
|
10
|
+
};
|
|
11
|
+
}), on(createInitNewDetailAction(detailRepository), (state) => {
|
|
12
|
+
return {
|
|
13
|
+
...state,
|
|
14
|
+
loaded: false,
|
|
15
|
+
error: null,
|
|
16
|
+
};
|
|
17
|
+
}), on(createLoadDetailSuccessAction(detailRepository), (state, { item }) => {
|
|
18
|
+
return {
|
|
19
|
+
...state,
|
|
20
|
+
loaded: true,
|
|
21
|
+
item,
|
|
22
|
+
};
|
|
23
|
+
}), on(createLoadDetailFailureAction(detailRepository), (state, { error }) => {
|
|
24
|
+
return {
|
|
25
|
+
...state,
|
|
26
|
+
loaded: true,
|
|
27
|
+
error,
|
|
28
|
+
};
|
|
29
|
+
}), on(createUpdateDetailAction(detailRepository), (state, { item }) => {
|
|
30
|
+
return {
|
|
31
|
+
...state,
|
|
32
|
+
item,
|
|
33
|
+
formState: {
|
|
34
|
+
dirty: true,
|
|
35
|
+
valid: state.formState?.valid ?? true,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}), on(createUpdateDetailSetErrorsAction(detailRepository), (state, { error }) => {
|
|
39
|
+
return {
|
|
40
|
+
...state,
|
|
41
|
+
backendValidationErrors: error
|
|
42
|
+
};
|
|
43
|
+
}), on(createUpdateFormStateAction(detailRepository), (state, { formState }) => {
|
|
44
|
+
return {
|
|
45
|
+
...state,
|
|
46
|
+
formState,
|
|
47
|
+
};
|
|
48
|
+
}), on(createSaveDetailSuccessAction(detailRepository), (state) => {
|
|
49
|
+
return {
|
|
50
|
+
...state,
|
|
51
|
+
formState: {
|
|
52
|
+
dirty: false,
|
|
53
|
+
valid: state.formState?.valid ?? true,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}), on(createResetStateAction(detailRepository), () => {
|
|
57
|
+
return {
|
|
58
|
+
...initialState,
|
|
59
|
+
};
|
|
60
|
+
}), on(createSaveDetailFailureAction(detailRepository), (state, { error }) => {
|
|
61
|
+
return {
|
|
62
|
+
...state,
|
|
63
|
+
backendValidationErrors: error.error
|
|
64
|
+
};
|
|
65
|
+
}), ...ons);
|
|
66
|
+
}
|
|
67
|
+
export function createSaveDetailReducers(detailRepository, initialState = INITIAL_SAVE_ITEM_STATE) {
|
|
68
|
+
return createReducer(initialState, on(createSaveDetailAction(detailRepository), (state) => {
|
|
69
|
+
return {
|
|
70
|
+
...state,
|
|
71
|
+
saveInProgress: true,
|
|
72
|
+
};
|
|
73
|
+
}), on(createSaveDetailSuccessAction(detailRepository), (state, { item }) => {
|
|
74
|
+
return {
|
|
75
|
+
...state,
|
|
76
|
+
item,
|
|
77
|
+
saveInProgress: false,
|
|
78
|
+
};
|
|
79
|
+
}), on(createSaveDetailFailureAction(detailRepository), (state, { error }) => {
|
|
80
|
+
return {
|
|
81
|
+
...state,
|
|
82
|
+
error,
|
|
83
|
+
saveInProgress: false,
|
|
84
|
+
};
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxFQUFFLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsMkJBQTJCLEdBQzVCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLG9CQUFvQixFQUNwQix1QkFBdUIsR0FDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixNQUFNLFVBQVUsb0JBQW9CLENBSWxDLGdCQUF3QixFQUN4QixlQUF1QixvQkFBeUMsRUFDaEUsR0FBRyxHQUFxRDtJQUV4RCxPQUFPLGFBQWEsQ0FDbEIsWUFBWSxFQUNaLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDckQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLE1BQU0sRUFBRSxLQUFLO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO0lBQ0osQ0FBQyxDQUFDLEVBRUYsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN4RCxPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7SUFDSixDQUFDLENBQUMsRUFFRixFQUFFLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLENB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RUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3ZFLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixLQUFLO1lBQ0wsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgY3JlYXRlUmVkdWNlciwgb24sIFJlZHVjZXJUeXBlcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHtcclxuICBjcmVhdGVJbml0RGV0YWlsQWN0aW9uLFxyXG4gIGNyZWF0ZUluaXROZXdEZXRhaWxBY3Rpb24sXHJcbiAgY3JlYXRlTG9hZERldGFpbEZhaWx1cmVBY3Rpb24sXHJcbiAgY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb24sXHJcbiAgY3JlYXRlUmVzZXRTdGF0ZUFjdGlvbixcclxuICBjcmVhdGVTYXZlRGV0YWlsQWN0aW9uLFxyXG4gIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uLFxyXG4gIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uLFxyXG4gIGNyZWF0ZVVwZGF0ZURldGFpbEFjdGlvbixcclxuICBjcmVhdGVVcGRhdGVEZXRhaWxTZXRFcnJvcnNBY3Rpb24sXHJcbiAgY3JlYXRlVXBkYXRlRm9ybVN0YXRlQWN0aW9uLFxyXG59IGZyb20gJy4vZGV0YWlsLmFjdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIERldGFpbFN0YXRlLFxyXG4gIElOSVRJQUxfREVUQUlMX1NUQVRFLFxyXG4gIElOSVRJQUxfU0FWRV9JVEVNX1NUQVRFLFxyXG59IGZyb20gJy4vZGV0YWlsLm1vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGV0YWlsUmVkdWNlcnM8XHJcbiAgVCA9IGFueSxcclxuICBUU3RhdGUgZXh0ZW5kcyBEZXRhaWxTdGF0ZTxUPiA9IERldGFpbFN0YXRlPFQ+XHJcbj4oXHJcbiAgZGV0YWlsUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGluaXRpYWxTdGF0ZTogVFN0YXRlID0gSU5JVElBTF9ERVRBSUxfU1RBVEUgYXMgdW5rbm93biBhcyBUU3RhdGUsXHJcbiAgLi4ub25zOiBSZWR1Y2VyVHlwZXM8VFN0YXRlLCByZWFkb25seSBBY3Rpb25DcmVhdG9yW10+W11cclxuKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZVJlZHVjZXIoXHJcbiAgICBpbml0aWFsU3RhdGUsXHJcbiAgICBvbihjcmVhdGVJbml0RGV0YWlsQWN0aW9uKGRldGFpbFJlcG9zaXRvcnkpLCAoc3RhdGUpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBsb2FkZWQ6IGZhbHNlLFxyXG4gICAgICAgIGVycm9yOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcblxyXG4gICAgb24oY3JlYXRlSW5pdE5ld0RldGFpbEFjdGlvbihkZXRhaWxSZXBvc2l0b3J5KSwgKHN0YXRlKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgbG9hZGVkOiBmYWxzZSxcclxuICAgICAgICBlcnJvcjogbnVsbCxcclxuICAgICAgfTtcclxuICAgIH0pLFxyXG5cclxuICAgIG9uKGNyZWF0ZUxvYWREZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbFJlcG9zaXRvcnkpLCAoc3RhdGUsIHsgaXRlbSB9KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgbG9hZGVkOiB0cnVlLFxyXG4gICAgICAgIGl0ZW0sXHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuXHJcbiAgICBvbihjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxSZXBvc2l0b3J5KSwgKHN0YXRlLCB7IGVycm9yIH0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBsb2FkZWQ6IHRydWUsXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuXHJcbiAgICBvbihjcmVhdGVVcGRhdGVEZXRhaWxBY3Rpb24oZGV0YWlsUmVwb3NpdG9yeSksIChzdGF0ZSwgeyBpdGVtIH0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIGZvcm1TdGF0ZToge1xyXG4gICAgICAgICAgZGlydHk6IHRydWUsXHJcbiAgICAgICAgICB2YWxpZDogc3RhdGUuZm9ybVN0YXRlPy52YWxpZCA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuXHJcbiAgICBvbihjcmVhdGVVcGRhdGVEZXRhaWxTZXRFcnJvcnNBY3Rpb24oZGV0YWlsUmVwb3NpdG9yeSksIChzdGF0ZSwgeyBlcnJvciB9KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgYmFja2VuZFZhbGlkYXRpb25FcnJvcnM6IGVycm9yXHJcbiAgICAgIH1cclxuICAgIH0pLFxyXG5cclxuICAgIG9uKFxyXG4gICAgICBjcmVhdGVVcGRhdGVGb3JtU3RhdGVBY3Rpb24oZGV0YWlsUmVwb3NpdG9yeSksXHJcbiAgICAgIChzdGF0ZSwgeyBmb3JtU3RhdGUgfSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgIGZvcm1TdGF0ZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICApLFxyXG5cclxuICAgIG9uKGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbFJlcG9zaXRvcnkpLCAoc3RhdGUpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBmb3JtU3RhdGU6IHtcclxuICAgICAgICAgIGRpcnR5OiBmYWxzZSxcclxuICAgICAgICAgIHZhbGlkOiBzdGF0ZS5mb3JtU3RhdGU/LnZhbGlkID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH0pLFxyXG4gICAgXHJcbiAgICBvbihjcmVhdGVSZXNldFN0YXRlQWN0aW9uKGRldGFpbFJlcG9zaXRvcnkpLCAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uKGluaXRpYWxTdGF0ZSBhcyBhbnkpLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcbiAgICBcclxuICAgIG9uKGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbFJlcG9zaXRvcnkpLCAoc3RhdGUsIHsgZXJyb3IgfSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIGJhY2tlbmRWYWxpZGF0aW9uRXJyb3JzOiBlcnJvci5lcnJvclxyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgIC4uLm9uc1xyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsUmVkdWNlcnMoXHJcbiAgZGV0YWlsUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGluaXRpYWxTdGF0ZSA9IElOSVRJQUxfU0FWRV9JVEVNX1NUQVRFXHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxyXG4gICAgaW5pdGlhbFN0YXRlLFxyXG5cclxuICAgIG9uKGNyZWF0ZVNhdmVEZXRhaWxBY3Rpb24oZGV0YWlsUmVwb3NpdG9yeSksIChzdGF0ZSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIHNhdmVJblByb2dyZXNzOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcblxyXG4gICAgb24oY3JlYXRlU2F2ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsUmVwb3NpdG9yeSksIChzdGF0ZSwgeyBpdGVtIH0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIHNhdmVJblByb2dyZXNzOiBmYWxzZSxcclxuICAgICAgfTtcclxuICAgIH0pLFxyXG5cclxuICAgIG9uKGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbFJlcG9zaXRvcnkpLCAoc3RhdGUsIHsgZXJyb3IgfSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIGVycm9yLFxyXG4gICAgICAgIHNhdmVJblByb2dyZXNzOiBmYWxzZSxcclxuICAgICAgfTtcclxuICAgIH0pXHJcbiAgKTtcclxufVxyXG4iXX0=
|