@verisoft/store 18.7.0 → 18.8.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.
Files changed (46) hide show
  1. package/README.md +7 -56
  2. package/esm2022/index.mjs +11 -0
  3. package/esm2022/lib/binding-state/binding.actions.mjs +35 -0
  4. package/esm2022/lib/binding-state/binding.effects.mjs +124 -0
  5. package/esm2022/lib/detail-state/detail.actions.mjs +47 -0
  6. package/esm2022/lib/detail-state/detail.effects.mjs +116 -0
  7. package/esm2022/lib/detail-state/detail.models.mjs +12 -0
  8. package/esm2022/lib/detail-state/detail.reducer.mjs +87 -0
  9. package/esm2022/lib/table-state/actions.mjs +50 -0
  10. package/esm2022/lib/table-state/effects.mjs +49 -0
  11. package/esm2022/lib/table-state/models.mjs +12 -0
  12. package/esm2022/lib/table-state/reducers.mjs +80 -0
  13. package/esm2022/verisoft-store.mjs +5 -0
  14. package/fesm2022/verisoft-store.mjs +602 -0
  15. package/fesm2022/verisoft-store.mjs.map +1 -0
  16. package/{src/index.ts → index.d.ts} +10 -12
  17. package/lib/binding-state/binding.actions.d.ts +43 -0
  18. package/lib/binding-state/binding.effects.d.ts +45 -0
  19. package/lib/detail-state/detail.actions.d.ts +52 -0
  20. package/lib/detail-state/detail.effects.d.ts +52 -0
  21. package/lib/detail-state/detail.models.d.ts +27 -0
  22. package/lib/detail-state/detail.reducer.d.ts +4 -0
  23. package/lib/table-state/actions.d.ts +48 -0
  24. package/lib/table-state/effects.d.ts +25 -0
  25. package/lib/table-state/models.d.ts +9 -0
  26. package/lib/table-state/reducers.d.ts +3 -0
  27. package/package.json +28 -13
  28. package/.eslintrc.json +0 -43
  29. package/jest.config.ts +0 -22
  30. package/ng-package.json +0 -7
  31. package/project.json +0 -36
  32. package/src/lib/binding-state/binding.actions.ts +0 -76
  33. package/src/lib/binding-state/binding.effects.ts +0 -472
  34. package/src/lib/detail-state/detail.actions.ts +0 -89
  35. package/src/lib/detail-state/detail.effects.ts +0 -283
  36. package/src/lib/detail-state/detail.models.ts +0 -42
  37. package/src/lib/detail-state/detail.reducer.ts +0 -147
  38. package/src/lib/table-state/actions.ts +0 -93
  39. package/src/lib/table-state/effects.ts +0 -99
  40. package/src/lib/table-state/models.ts +0 -20
  41. package/src/lib/table-state/reducers.ts +0 -126
  42. package/src/test-setup.ts +0 -8
  43. package/tsconfig.json +0 -29
  44. package/tsconfig.lib.json +0 -17
  45. package/tsconfig.lib.prod.json +0 -9
  46. package/tsconfig.spec.json +0 -16
package/README.md CHANGED
@@ -1,56 +1,7 @@
1
- # store
2
-
3
- The `store` library provides state management utilities and shared store logic for the Verisoft Frontend workspace.
4
-
5
- ## Features
6
-
7
- - Centralized state management for applications and libraries
8
- - Shared selectors, actions, and reducers
9
- - Utilities for working with NgRx or other state management solutions
10
-
11
- ## Installation
12
-
13
- This package is intended for internal use within the monorepo. To use it in another library or app, add it as a dependency in your `project.json`:
14
-
15
- ```json
16
- "dependencies": {
17
- "store": "*"
18
- }
19
- ```
20
-
21
- ## Usage
22
-
23
- Import the required modules, services, or utilities from `store`:
24
-
25
- ```typescript
26
- import { StoreModule } from '@verisoft/store';
27
- ```
28
-
29
- ## Development
30
-
31
- ### Building
32
-
33
- Run the following command to build the library:
34
-
35
- ```sh
36
- nx build store
37
- ```
38
-
39
- ### Running Unit Tests
40
-
41
- To execute the unit tests for this library:
42
-
43
- ```sh
44
- nx test store
45
- ```
46
-
47
- ## Contributing
48
-
49
- 1. Fork the repository and create your branch from `master`.
50
- 2. Make your changes and add tests if needed.
51
- 3. Run `nx test store` to ensure all tests pass.
52
- 4. Submit a pull request.
53
-
54
- ## License
55
-
56
- This project is licensed under the MIT License.
1
+ # store
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test store` to execute the unit tests.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXRhaWwtc3RhdGUvZGV0YWlsLnJlZHVjZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV0YWlsLXN0YXRlL2RldGFpbC5lZmZlY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwubW9kZWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUtc3RhdGUvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9yZWR1Y2Vycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9lZmZlY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXN0YXRlL21vZGVscyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2JpbmRpbmctc3RhdGUvYmluZGluZy5hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JpbmRpbmctc3RhdGUvYmluZGluZy5lZmZlY3RzJztcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLFVBQVUsc0JBQXNCLENBQVUsa0JBQTBCO0lBQ3hFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUF3QixDQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBVSxrQkFBMEI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLG9CQUFvQixFQUMxQyxLQUFLLEVBQTJCLENBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQiw0QkFBNEIsQ0FDbkQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQVEsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUFzQixDQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxrQkFBMEI7SUFDdkUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLDRCQUE0QixFQUNsRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLENBQ25ELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGtCQUEwQjtJQUNsRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0Isc0JBQXNCLEVBQzVDLEtBQUssRUFBMkIsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsa0JBQTBCO0lBQ25FLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQix1QkFBdUIsRUFDN0MsS0FBSyxFQUE0QixDQUNsQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxrQkFBMEI7SUFDMUUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLCtCQUErQixFQUNyRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLGtCQUEwQjtJQUMxRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsK0JBQStCLENBQ3RELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdBY3Rpb248VENyZWF0ZT4oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5nc2AsXG4gICAgcHJvcHM8eyBiaW5kaW5nOiBUQ3JlYXRlIH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBBZGQgYmluZGluZ3NgLFxuICAgIHByb3BzPHsgYmluZGluZ3M6IFRDcmVhdGVbXSB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5ncyBmYWlsdXJlYCxcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBBZGQgYmluZGluZ3Mgc3VjY2Vzc2BcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nQWN0aW9uPFRFZGl0PihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRWRpdCBiaW5kaW5nYCxcbiAgICBwcm9wczx7IGJpbmRpbmc6IFRFZGl0IH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRWRpdCBiaW5kaW5nIGZhaWx1cmVgLFxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEVkaXQgYmluZGluZyBzdWNjZXNzYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdgLFxuICAgIHByb3BzPHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdzYCxcbiAgICBwcm9wczx7IGJpbmRpbmdJZHM6IG51bWJlcltdIH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdzIGZhaWx1cmVgLFxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBiaW5kaW5ncyBzdWNjZXNzYFxuICApO1xufVxuXG4iXX0=
@@ -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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UCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFkZEJpbmRpbmdBY3Rpb24sXG4gIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uLFxuICBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUFkZEJpbmRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbixcbiAgY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24sXG4gIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlRGVsZXRlQmluZGluZ3NTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVFZGl0QmluZGluZ0FjdGlvbixcbiAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24sXG59IGZyb20gJy4vYmluZGluZy5hY3Rpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpbmdsZUJpbmRpbmdFZmZlY3RzV2l0aEVkaXQ8XG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcbiAgVENyZWF0ZSxcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1Npbmd1bGFyTmFtZTogc3RyaW5nLFxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxuICBhZGRGdW5jdGlvbjogKFxuICAgIGJpbmRpbmdzOiBUQ3JlYXRlLFxuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgZWRpdEZ1bmN0aW9uOiAoYmluZGluZzogVEVkaXQsIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PixcbiAgZGVsZXRlRnVuY3Rpb246IChcbiAgICBiaW5kaW5nSWRzOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgc25hY2tiYXI6IGFueSxcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxuICB0YWJsZVNlcnZpY2U6IGFueSxcbiAgb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA9IGZhbHNlLFxuKSB7XG4gIGNvbnN0IGFkZEVmZmVjdCA9IGNyZWF0ZUFkZEJpbmRpbmdFZmZlY3QoXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxuICAgIGFjdGlvbnMkLFxuICAgIGRldGFpbCQsXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXG4gICAgYWRkRnVuY3Rpb24sXG4gICAgc25hY2tiYXIsXG4gICAgdHJhbnNsYXRlU2VydmljZSxcbiAgKTtcblxuICBjb25zdCBlZGl0RWZmZWN0ID0gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3QoXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxuICAgIGFjdGlvbnMkLFxuICAgIGRldGFpbCQsXG4gICAgYmluZGluZ1Npbmd1bGFyTmFtZSxcbiAgICBlZGl0RnVuY3Rpb24sXG4gICAgc25hY2tiYXIsXG4gICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICBvdmVycmlkZURldGFpbFdpdGhCaW5kaW5nXG4gICk7XG5cbiAgY29uc3QgZGVsZXRlRWZmZWN0ID0gY3JlYXRlRGVsZXRlQmluZGluZ0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcbiAgICBkZWxldGVGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXG4gICk7XG5cbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgdGFibGVTZXJ2aWNlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBlZGl0RWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ3NFZmZlY3RzV2l0aEVkaXQ8XG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcbiAgVENyZWF0ZSxcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1Npbmd1bGFyTmFtZTogc3RyaW5nLFxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxuICBhZGRGdW5jdGlvbjogKFxuICAgIGJpbmRpbmdzOiBUQ3JlYXRlW10sXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgZWRpdEZ1bmN0aW9uOiAoYmluZGluZzogVEVkaXQsIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PixcbiAgZGVsZXRlRnVuY3Rpb246IChcbiAgICBiaW5kaW5nSWRzOiBudW1iZXJbXSxcbiAgICBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICBzbmFja2JhcjogYW55LFxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXG4gIHRhYmxlU2VydmljZTogYW55LFxuICBvdmVycmlkZURldGFpbFdpdGhCaW5kaW5nID0gZmFsc2UsXG4pIHtcbiAgY29uc3QgYWRkRWZmZWN0ID0gY3JlYXRlQWRkQmluZGluZ3NFZmZlY3QoXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxuICAgIGFjdGlvbnMkLFxuICAgIGRldGFpbCQsXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXG4gICAgYWRkRnVuY3Rpb24sXG4gICAgc25hY2tiYXIsXG4gICAgdHJhbnNsYXRlU2VydmljZVxuICApO1xuXG4gIGNvbnN0IGVkaXRFZmZlY3QgPSBjcmVhdGVFZGl0QmluZGluZ0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nU2luZ3VsYXJOYW1lLFxuICAgIGVkaXRGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLFxuICAgIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmdcbiAgKTtcblxuICBjb25zdCBkZWxldGVFZmZlY3QgPSBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcbiAgICBkZWxldGVGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXG4gICk7XG5cbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgdGFibGVTZXJ2aWNlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBlZGl0RWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ3NFZmZlY3RzPFxuICBUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sXG4gIFRDcmVhdGVcbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcbiAgYWRkRnVuY3Rpb246IChcbiAgICBiaW5kaW5nczogVENyZWF0ZVtdLFxuICAgIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmdcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXG4gICAgYmluZGluZ0lkczogbnVtYmVyW10sXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgc25hY2tiYXI6IGFueSxcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxuICB0YWJsZVNlcnZpY2U6IGFueVxuKSB7XG4gIGNvbnN0IGFkZEVmZmVjdCA9IGNyZWF0ZUFkZEJpbmRpbmdzRWZmZWN0KFxuICAgIGJpbmRpbmdzUmVwb3NpdG9yeSxcbiAgICBhY3Rpb25zJCxcbiAgICBkZXRhaWwkLFxuICAgIGJpbmRpbmdQbHVyYWxOYW1lLFxuICAgIGFkZEZ1bmN0aW9uLFxuICAgIHNuYWNrYmFyLFxuICAgIHRyYW5zbGF0ZVNlcnZpY2VcbiAgKTtcblxuICBjb25zdCBkZWxldGVFZmZlY3QgPSBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcbiAgICBkZWxldGVGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXG4gICk7XG5cbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgdGFibGVTZXJ2aWNlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nRWZmZWN0PFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSwgVENyZWF0ZT4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcbiAgYWRkRnVuY3Rpb246IChcbiAgICBiaW5kaW5nczogVENyZWF0ZSxcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gIHNuYWNrYmFyOiBhbnksXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueSxcbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVBZGRCaW5kaW5nQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmcgfSwgZGV0YWlsXSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUGx1cmFsTmFtZSA9XG4gICAgICAgICAgdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGJpbmRpbmdQbHVyYWxOYW1lKTtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuU1VDQ0VTU19BREQnXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLkZBSUxVUkVfQUREJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuXG4gICAgICAgIHJldHVybiBhZGRGdW5jdGlvbihiaW5kaW5nKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlQWRkQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzRWZmZWN0PFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSwgVENyZWF0ZT4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcbiAgYWRkRnVuY3Rpb246IChcbiAgICBiaW5kaW5nczogVENyZWF0ZVtdLFxuICAgIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmdcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gIHNuYWNrYmFyOiBhbnksXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmdzIH0sIGRldGFpbF0pID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZFBsdXJhbE5hbWUgPVxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfQUREJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5GQUlMVVJFX0FERCdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcblxuICAgICAgICBpZiAoIWRldGFpbD8uaWQpIHtcbiAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKHtcbiAgICAgICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXNzYWdlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFkZEZ1bmN0aW9uKGJpbmRpbmdzLCBkZXRhaWwuaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dTdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVBZGRCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7IGVycm9yIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3Q8XG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1Npbmd1bGFyTmFtZTogc3RyaW5nLFxuICBlZGl0RnVuY3Rpb246IChiaW5kaW5nOiBURWRpdCwgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICBzbmFja2JhcjogYW55LFxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXG4gIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmcgPSBmYWxzZSxcbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVFZGl0QmluZGluZ0FjdGlvbjxURWRpdD4oYmluZGluZ3NSZXBvc2l0b3J5KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShkZXRhaWwkKSxcbiAgICAgIHN3aXRjaE1hcCgoW3sgYmluZGluZyB9LCBkZXRhaWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1Npbmd1bGFyTmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfRURJVCdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcbiAgICAgICAgY29uc3QgZmFpbHVyZU1lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9FRElUJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuXG4gICAgICAgIGNvbnN0IGlkID0gb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA/IGJpbmRpbmc/LmlkIDogZGV0YWlsPy5pZDtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgIHNuYWNrYmFyLnNob3dFcnJvcihmYWlsdXJlTWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoe1xuICAgICAgICAgICAgICBlcnJvcjogZmFpbHVyZU1lc3NhZ2UsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdEZ1bmN0aW9uKGJpbmRpbmcsIGlkKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRWRpdEJpbmRpbmdTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdFZmZlY3Q8VCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PihcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxuICBkZWxldGVGdW5jdGlvbjogKFxuICAgIGJpbmRpbmdJZHM6IHN0cmluZyB8IG51bWJlcixcbiAgICBkZXRhaWxJZDogc3RyaW5nIHwgbnVtYmVyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICBzbmFja2JhcjogYW55LFxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnlcbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVEZWxldGVCaW5kaW5nQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGlkIH0sIGRldGFpbF0pID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZFBsdXJhbE5hbWUgPVxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfREVMRVRFJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5GQUlMVVJFX0RFTEVURSdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcblxuICAgICAgICBpZiAoIWlkICYmICFkZXRhaWw/LmlkKSB7XG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxldGVGdW5jdGlvbihpZCwgaWQgPz8gZGV0YWlsPy5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgc25hY2tiYXIuc2hvd1N1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURlbGV0ZUJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dFcnJvcihmYWlsdXJlTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICAgIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdDxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0+KFxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gIGRldGFpbCQ6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4sXG4gIGJpbmRpbmdQbHVyYWxOYW1lOiBzdHJpbmcsXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXG4gICAgYmluZGluZ0lkczogbnVtYmVyW10sXG4gICAgZGV0YWlsSWQ6IHN0cmluZyB8IG51bWJlclxuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgc25hY2tiYXI6IGFueSxcbiAgdHJhbnNsYXRlU2VydmljZTogYW55XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIGFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShkZXRhaWwkKSxcbiAgICAgIHN3aXRjaE1hcCgoW3sgYmluZGluZ0lkcyB9LCBkZXRhaWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1BsdXJhbE5hbWUpO1xuICAgICAgICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5TVUNDRVNTX0RFTEVURSdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcbiAgICAgICAgY29uc3QgZmFpbHVyZU1lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9ERUxFVEUnXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XG5cbiAgICAgICAgaWYgKCFkZXRhaWw/LmlkKSB7XG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxldGVGdW5jdGlvbihiaW5kaW5nSWRzLCBkZXRhaWwuaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dTdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7IGVycm9yIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICB0YWJsZVNlcnZpY2U6IGFueVxuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShcbiAgICAgICAgICBjcmVhdGVBZGRCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSxcbiAgICAgICAgICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSxcbiAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRhYmxlU2VydmljZS5mb3JjZVJlbG9hZCgpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQixhQUFhLEVBQ2xDLEtBQUssRUFBcUQsQ0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsaUJBQXlCO0lBQ2pFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLGlCQUFpQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGNBQWMsaUJBQWlCLFVBQVUsRUFDOUQsS0FBSyxFQUFlLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGlCQUF5QjtJQUNyRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsY0FBYyxpQkFBaUIsVUFBVSxFQUM5RCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFJLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsZ0JBQWdCLGlCQUFpQixFQUFFLEVBQ3hELEtBQUssRUFBZSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxpQkFBeUI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGtDQUFrQyxpQkFBaUIsRUFBRSxFQUMxRSxLQUFLLEVBQWtCLENBQ3hCLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIseUJBQXlCLEVBQzlDLEtBQUssRUFBNEIsQ0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLG9CQUFvQixDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLDJCQUEyQixFQUNoRCxLQUFLLEVBQWUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsaUJBQXlCO0lBQ3JFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQiwyQkFBMkIsRUFDaEQsS0FBSyxFQUFrQixDQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxpQkFBeUI7SUFDcEUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsc0JBQXNCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGlCQUF5QjtJQUM5RCxPQUFPLFlBQVksQ0FBQyxJQUFJLGlCQUFpQixtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsaUJBQXlCO0lBQ2hFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLHFCQUFxQixDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxpQkFBeUI7SUFDdkUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsNkJBQTZCLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLGlCQUF5QjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsNkJBQTZCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi9kZXRhaWwubW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0gUGFnZV0gSW5pdGAsXG4gICAgcHJvcHM8eyBvYmo6IHN0cmluZyB8IG51bGwgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBhbnkgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5pdE5ld0RldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fSBQYWdlXSBJbml0IE5ld2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb248VD4oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBMb2FkICR7ZGV0YWlsc1JlcG9zaXRvcnl9IFN1Y2Nlc3NgLFxuICAgIHByb3BzPHsgaXRlbTogVCB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIExvYWQgJHtkZXRhaWxzUmVwb3NpdG9yeX0gRmFpbHVyZWAsXG4gICAgcHJvcHM8eyBlcnJvcjogYW55IH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0ZURldGFpbEFjdGlvbjxUPihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSAke2RldGFpbHNSZXBvc2l0b3J5fWAsXG4gICAgcHJvcHM8eyBpdGVtOiBUIH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0ZURldGFpbFNldEVycm9yc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSBWYWxpZGF0aW9uIEVycm9ycyAke2RldGFpbHNSZXBvc2l0b3J5fWAsXG4gICAgcHJvcHM8eyBlcnJvcjogYW55IH0+KClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlRm9ybVN0YXRlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gVXBkYXRlIEZvcm0gU3RhdGVgLFxuICAgIHByb3BzPHsgZm9ybVN0YXRlOiBGb3JtU3RhdGUgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFNhdmUgRGV0YWlsIGApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbFN1Y2Nlc3NBY3Rpb248VD4oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBTYXZlIERldGFpbCBTdWNjZXNzYCxcbiAgICBwcm9wczx7IGl0ZW06IFQgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBTYXZlIERldGFpbCBGYWlsdXJlYCxcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlU2F2ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSBEZXRhaWwgYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXNldFN0YXRlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gUmVzZXQgU3RhdGVgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBEZXRhaWxgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBEZWxldGUgRGV0YWlsIFN1Y2Nlc3NgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBEZWxldGUgRGV0YWlsIEZhaWx1cmVgLFxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXG4gICk7XG59XG4iXX0=
@@ -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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QyxJQUFJLENBQ1gsTUFBTSxDQUFDLCtCQUErQixDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDMUQsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUN6QixNQUFNLENBQUMsWUFBWSxJQUFJLHdCQUF3QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQy9ELENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxFQUNIO1FBQ0UsUUFBUSxFQUFFLEtBQUs7S0FDaEIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsNkJBQTZCLENBQ3BDLElBQU8sRUFDUCxhQUFtQztJQUVuQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLEVBQUU7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEdBQUcsSUFBSSxHQUFHLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEJhc2VIdHRwU2VydmljZSB9IGZyb20gJ0B2ZXJpc29mdC9jb3JlJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIEVNUFRZLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlRGVsZXRlRGV0YWlsQWN0aW9uLFxuICBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVEZWxldGVEZXRhaWxTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVJbml0RGV0YWlsQWN0aW9uLFxuICBjcmVhdGVJbml0TmV3RGV0YWlsQWN0aW9uLFxuICBjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVNhdmVEZXRhaWxBY3Rpb24sXG4gIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVTYXZlRGV0YWlsU3VjY2Vzc0FjdGlvbixcbn0gZnJvbSAnLi9kZXRhaWwuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlSW5pdEZvcm1Db25maWc8VD4ge1xuICBzZXJ2aWNlPzogQmFzZUh0dHBTZXJ2aWNlPFQ+O1xuICBnZXQ/OiAob2JqOiBhbnkpID0+IE9ic2VydmFibGU8VD47XG4gIHNuYWNrYmFyPzogYW55O1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIG5vdEZvdW5kTWVzc2FnZT86IHN0cmluZztcbiAgc3VjY2Vzc01lc3NnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXRhaWxFZmZlY3RDb25maWc8VD4ge1xuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuICBzbmFja2Jhcj86IGFueTtcbiAgcm91dGVyPzogUm91dGVyO1xuICByZWRpcmVjdFBhdGg/OiBzdHJpbmc7XG4gIHVzZUl0ZW1JZD86IGJvb2xlYW47XG4gIG5hdmlnYXRpb25NYXA/OiBNYXA8a2V5b2YgVCwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXREZXRhaWxFZmZlY3Q8VD4oXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICBjb25maWc6IENyZWF0ZUluaXRGb3JtQ29uZmlnPFQ+XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlSW5pdERldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxuICAgICAgc3dpdGNoTWFwKCh7IG9iaiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdldCQ6IE9ic2VydmFibGU8YW55PiA9IChjb25maWc/LnNlcnZpY2U/LmdldChvYmogYXMgYW55KSA/P1xuICAgICAgICAgIGNvbmZpZz8uZ2V0Py4ob2JqKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICAgICAgICBpZiAoIWdldCQpIHJldHVybiBFTVBUWTtcbiAgICAgICAgcmV0dXJuIGdldCQ/LnBpcGUoXG4gICAgICAgICAgbWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgaXRlbSB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihjb25maWc/Lm5vdEZvdW5kTWVzc2FnZSA/PyBlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25maWc/LnNuYWNrYmFyPy5zaG93RXJyb3IoY29uZmlnPy5lcnJvck1lc3NhZ2UgPz8gZXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlTG9hZERldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0TmV3RGV0YWlsRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9uc1xuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZUluaXROZXdEZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2FkRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoeyBpdGVtOiBudWxsIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsRWZmZWN0PFxuICBUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sXG4gIFNFUlZJQ0UgZXh0ZW5kcyBCYXNlSHR0cFNlcnZpY2U8VD5cbj4oXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICBzZXJ2aWNlOiBTRVJWSUNFLFxuICBjb25maWc6IERldGFpbEVmZmVjdENvbmZpZzxUPlxuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVNhdmVEZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGNvbmZpZy5kZXRhaWwkKSxcbiAgICAgIHN3aXRjaE1hcCgoWywgc2F2ZWRJdGVtXSkgPT4ge1xuICAgICAgICBjb25zdCBpc05ldyA9ICFzYXZlZEl0ZW0/LmlkO1xuICAgICAgICBjb25zdCBzYXZlQWN0aW9uID0gaXNOZXdcbiAgICAgICAgICA/IHNlcnZpY2UucG9zdChzYXZlZEl0ZW0gYXMgVClcbiAgICAgICAgICA6IHNlcnZpY2UucHV0KHNhdmVkSXRlbS5pZCwgc2F2ZWRJdGVtKTtcbiAgICAgICAgcmV0dXJuIHNhdmVBY3Rpb24ucGlwZShcbiAgICAgICAgICBtYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc05ldyAmJiBjb25maWc/LnJvdXRlciAmJiBjb25maWc/LnJlZGlyZWN0UGF0aCkge1xuICAgICAgICAgICAgICBjb25zdCBzdWZmaXggPSBjb25maWc/LnVzZUl0ZW1JZCA/ICcvJyArIGl0ZW0uaWQgOiAnJztcbiAgICAgICAgICAgICAgY29uZmlnLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNvbmZpZy5yZWRpcmVjdFBhdGggKyBzdWZmaXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNOZXcgJiYgY29uZmlnPy5yb3V0ZXIgJiYgY29uZmlnPy5uYXZpZ2F0aW9uTWFwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbnN0cnVjdFVybEZyb21OYXZpZ2F0aW9uTWFwKGl0ZW0sIGNvbmZpZy5uYXZpZ2F0aW9uTWFwKVxuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSh7XG4gICAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICAgIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSh7IGVycm9yIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoY3JlYXRlU2F2ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcbiAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25maWc/LnNuYWNrYmFyPy5zaG93U3VjY2VzcyhcbiAgICAgICAgICAgIGNvbmZpZz8uc3VjY2Vzc01lc3NnZSA/PyBgSXRlbSBzdWNjZXNzZnVsbHkgc2F2ZWQuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgb2JqOiBkYXRhLml0ZW0uaWQgfSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsRmFpbHVyZUVmZmVjdChcbiAgZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZyxcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gIGNvbmZpZz86IENyZWF0ZUluaXRGb3JtQ29uZmlnPHVua25vd24+XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXG4gICAgICAgIHRhcCgoeyBlcnJvciB9KSA9PiB7XG4gICAgICAgICAgY29uZmlnPy5zbmFja2Jhcj8uc2hvd0Vycm9yKFxuICAgICAgICAgICAgY29uZmlnLmVycm9yTWVzc2FnZSA/PyBgRXJyb3Igc2F2aW5nIGl0ZW0uICR7ZXJyb3IubWVzc2FnZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAge1xuICAgICAgZGlzcGF0Y2g6IGZhbHNlLFxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEVmZmVjdDxcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxuICBTRVJWSUNFIGV4dGVuZHMgQmFzZUh0dHBTZXJ2aWNlPFQ+XG4+KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgc2VydmljZTogU0VSVklDRSxcbiAgY29uZmlnOiBEZXRhaWxFZmZlY3RDb25maWc8VD4sXG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIGFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShjb25maWcuZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFssIHNhdmVkSXRlbV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBzYXZlZEl0ZW0/LmlkO1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHtcbiAgICAgICAgICAgICAgZXJyb3I6ICdJdGVtIGhhcyBubyBpZCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VydmljZS5kZWxldGUoaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWc/LnJvdXRlciAmJiBjb25maWc/LnJlZGlyZWN0UGF0aCkge1xuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwoYCR7Y29uZmlnLnJlZGlyZWN0UGF0aH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbmZpZz8ucm91dGVyICYmIGNvbmZpZz8ubmF2aWdhdGlvbk1hcCkge1xuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBjb25zdHJ1Y3RVcmxGcm9tTmF2aWdhdGlvbk1hcChzYXZlZEl0ZW0sIGNvbmZpZy5uYXZpZ2F0aW9uTWFwKVxuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURlbGV0ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgY29uZmlnLnNuYWNrYmFyPy5zaG93RXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgaXRlbS4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlRGVsZXRlRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVEZXRhaWxTdWNjZXNzRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dTdWNjZXNzKFxuICAgICAgICAgICAgY29uZmlnLnN1Y2Nlc3NNZXNzZ2UgPz8gYEl0ZW0gc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuYFxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHtcbiAgICAgIGRpc3BhdGNoOiBmYWxzZSxcbiAgICB9XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxuICAgICAgICB0YXAoKHsgZXJyb3IgfSkgPT4ge1xuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihcbiAgICAgICAgICAgIGNvbmZpZy5lcnJvck1lc3NhZ2UgPz8gYEVycm9yIGRlbGV0aW5nIGl0ZW0uICR7ZXJyb3IubWVzc2FnZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAge1xuICAgICAgZGlzcGF0Y2g6IGZhbHNlLFxuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0VXJsRnJvbU5hdmlnYXRpb25NYXA8VCBleHRlbmRzIG9iamVjdD4oXG4gIGl0ZW06IFQsXG4gIG5hdmlnYXRpb25NYXA6IE1hcDxrZXlvZiBULCBzdHJpbmc+KVxuICA6IHN0cmluZyB7XG4gIGxldCB1cmwgPSAnJztcbiAgbmF2aWdhdGlvbk1hcC5mb3JFYWNoKCh1cmxQYXJ0VmFsdWUsIHN1ZmZpeFByb3BlcnR5S2V5KSA9PiB7XG4gICAgY29uc3Qgc3VmZml4ID0gaXRlbVtzdWZmaXhQcm9wZXJ0eUtleV07XG4gICAgaWYgKHN1ZmZpeCkge1xuICAgICAgdXJsICs9IGAke3VybFBhcnRWYWx1ZX0vJHtzdWZmaXh9YDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB1cmw7XG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3N0b3JlL3NyYy9saWIvZGV0YWlsLXN0YXRlL2RldGFpbC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFrQjtJQUNwRCxjQUFjLEVBQUUsS0FBSztDQUN0QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXlCO0lBQzVELElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFxQjtJQUNwRCxNQUFNLEVBQUUsS0FBSztJQUNiLGFBQWEsRUFBRSx1QkFBdUI7SUFDdEMsdUJBQXVCLEVBQUUsRUFBRTtDQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEZXRhaWxTdGF0ZTxUPiB7XG4gIGxvYWRlZDogYm9vbGVhbjtcbiAgaXRlbT86IFQ7XG4gIGZvcm1TdGF0ZT86IEZvcm1TdGF0ZTtcbiAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICBzYXZlSXRlbVN0YXRlOiBTYXZlSXRlbVN0YXRlO1xuICBiYWNrZW5kVmFsaWRhdGlvbkVycm9yczogQmFja2VuZFZhbGlkYXRpb25FcnJvcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmRWYWxpZGF0aW9uRXJyb3Ige1xuICBjb2RlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcGFyYW1ldGVyczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENob3NlblJvd3NTdGF0ZTxUPiB7IFxuICByb3dzOiBBcnJheTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlSXRlbVN0YXRlIHtcbiAgc2F2ZUluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfU0FWRV9JVEVNX1NUQVRFOiBTYXZlSXRlbVN0YXRlID0ge1xuICBzYXZlSW5Qcm9ncmVzczogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9DSE9TRU5fUk9XX1NUQVRFOiBDaG9zZW5Sb3dzU3RhdGU8YW55PiA9IHtcbiAgcm93czogW11cbn1cblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREVUQUlMX1NUQVRFOiBEZXRhaWxTdGF0ZTxhbnk+ID0ge1xuICBsb2FkZWQ6IGZhbHNlLFxuICBzYXZlSXRlbVN0YXRlOiBJTklUSUFMX1NBVkVfSVRFTV9TVEFURSxcbiAgYmFja2VuZFZhbGlkYXRpb25FcnJvcnM6IFtdLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3RhdGUge1xuICBkaXJ0eTogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG59XG4iXX0=