@verisoft/store 18.6.0 → 18.7.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/.eslintrc.json +43 -0
- package/README.md +52 -3
- package/jest.config.ts +22 -0
- package/ng-package.json +7 -0
- package/package.json +13 -28
- package/project.json +36 -0
- package/{index.d.ts → src/index.ts} +12 -10
- package/src/lib/binding-state/binding.actions.ts +76 -0
- package/src/lib/binding-state/binding.effects.ts +472 -0
- package/src/lib/detail-state/detail.actions.ts +89 -0
- package/src/lib/detail-state/detail.effects.ts +283 -0
- package/src/lib/detail-state/detail.models.ts +42 -0
- package/src/lib/detail-state/detail.reducer.ts +147 -0
- package/src/lib/table-state/actions.ts +93 -0
- package/src/lib/table-state/effects.ts +99 -0
- package/src/lib/table-state/models.ts +20 -0
- package/src/lib/table-state/reducers.ts +126 -0
- package/src/test-setup.ts +8 -0
- package/tsconfig.json +29 -0
- package/tsconfig.lib.json +17 -0
- package/tsconfig.lib.prod.json +9 -0
- package/tsconfig.spec.json +16 -0
- package/esm2022/index.mjs +0 -11
- package/esm2022/lib/binding-state/binding.actions.mjs +0 -35
- package/esm2022/lib/binding-state/binding.effects.mjs +0 -124
- package/esm2022/lib/detail-state/detail.actions.mjs +0 -47
- package/esm2022/lib/detail-state/detail.effects.mjs +0 -116
- package/esm2022/lib/detail-state/detail.models.mjs +0 -12
- package/esm2022/lib/detail-state/detail.reducer.mjs +0 -87
- package/esm2022/lib/table-state/actions.mjs +0 -50
- package/esm2022/lib/table-state/effects.mjs +0 -49
- package/esm2022/lib/table-state/models.mjs +0 -12
- package/esm2022/lib/table-state/reducers.mjs +0 -80
- package/esm2022/verisoft-store.mjs +0 -5
- package/fesm2022/verisoft-store.mjs +0 -602
- package/fesm2022/verisoft-store.mjs.map +0 -1
- package/lib/binding-state/binding.actions.d.ts +0 -43
- package/lib/binding-state/binding.effects.d.ts +0 -45
- package/lib/detail-state/detail.actions.d.ts +0 -52
- package/lib/detail-state/detail.effects.d.ts +0 -52
- package/lib/detail-state/detail.models.d.ts +0 -27
- package/lib/detail-state/detail.reducer.d.ts +0 -4
- package/lib/table-state/actions.d.ts +0 -48
- package/lib/table-state/effects.d.ts +0 -25
- package/lib/table-state/models.d.ts +0 -9
- package/lib/table-state/reducers.d.ts +0 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { ActionCreator, ReducerTypes, createReducer, on } from '@ngrx/store';
|
|
3
|
+
import {
|
|
4
|
+
createGetPageTableAction,
|
|
5
|
+
createStaticFilterTableAction,
|
|
6
|
+
createDataLoadSuccessTableAction,
|
|
7
|
+
createDataLoadErrorTableAction,
|
|
8
|
+
createFilterPageTableAction,
|
|
9
|
+
createDestroyTableAction,
|
|
10
|
+
createSelectItemsTableAction,
|
|
11
|
+
createChangePageSizeTableAction,
|
|
12
|
+
createResetTableFilterAction,
|
|
13
|
+
} from './actions';
|
|
14
|
+
import { INITIAL_TABLE_STATE, TableState } from './models';
|
|
15
|
+
|
|
16
|
+
export function createTablePageReducers<
|
|
17
|
+
T = any,
|
|
18
|
+
TState extends TableState<T> = TableState<T>
|
|
19
|
+
>(
|
|
20
|
+
tableRepository: string,
|
|
21
|
+
initialState: TState = INITIAL_TABLE_STATE as unknown as TState,
|
|
22
|
+
...ons: ReducerTypes<TState, readonly ActionCreator[]>[]
|
|
23
|
+
) {
|
|
24
|
+
return createReducer(
|
|
25
|
+
initialState,
|
|
26
|
+
on(
|
|
27
|
+
createGetPageTableAction(tableRepository),
|
|
28
|
+
(state, { page, id, filter, sort }) => {
|
|
29
|
+
return {
|
|
30
|
+
...state,
|
|
31
|
+
requestParams: {
|
|
32
|
+
...state.requestParams,
|
|
33
|
+
filter: filter ?? state.requestParams.filter,
|
|
34
|
+
sort: sort ?? state.requestParams.sort,
|
|
35
|
+
id: id ?? state.requestParams.id,
|
|
36
|
+
page,
|
|
37
|
+
},
|
|
38
|
+
dataLoading: true,
|
|
39
|
+
submitted: true,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
|
|
44
|
+
on(createStaticFilterTableAction(tableRepository), (state, { filter }) => {
|
|
45
|
+
return {
|
|
46
|
+
...state,
|
|
47
|
+
requestParams: {
|
|
48
|
+
...state.requestParams,
|
|
49
|
+
filter: {
|
|
50
|
+
...state.requestParams?.filter,
|
|
51
|
+
filter,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}),
|
|
56
|
+
|
|
57
|
+
on(createResetTableFilterAction(tableRepository), (state) => {
|
|
58
|
+
return {
|
|
59
|
+
...state,
|
|
60
|
+
requestParams: {
|
|
61
|
+
...state.requestParams,
|
|
62
|
+
filter: undefined,
|
|
63
|
+
page: 1
|
|
64
|
+
},
|
|
65
|
+
}
|
|
66
|
+
}),
|
|
67
|
+
|
|
68
|
+
on(
|
|
69
|
+
createDataLoadSuccessTableAction(tableRepository),
|
|
70
|
+
(state, { gPage }) => {
|
|
71
|
+
return {
|
|
72
|
+
...state,
|
|
73
|
+
gPage,
|
|
74
|
+
dataLoading: false,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
|
|
79
|
+
on(createDataLoadErrorTableAction(tableRepository), (state, { error }) => {
|
|
80
|
+
return {
|
|
81
|
+
...state,
|
|
82
|
+
error,
|
|
83
|
+
dataLoading: false,
|
|
84
|
+
};
|
|
85
|
+
}),
|
|
86
|
+
|
|
87
|
+
on(createFilterPageTableAction(tableRepository), (state, { filter }) => {
|
|
88
|
+
return {
|
|
89
|
+
...state,
|
|
90
|
+
requestParams: {
|
|
91
|
+
...state.requestParams,
|
|
92
|
+
filter: filter,
|
|
93
|
+
page: 1,
|
|
94
|
+
},
|
|
95
|
+
dataLoading: true,
|
|
96
|
+
};
|
|
97
|
+
}),
|
|
98
|
+
|
|
99
|
+
on(createDestroyTableAction(tableRepository), () => {
|
|
100
|
+
return {
|
|
101
|
+
...(initialState as any),
|
|
102
|
+
};
|
|
103
|
+
}),
|
|
104
|
+
|
|
105
|
+
on(
|
|
106
|
+
createSelectItemsTableAction(tableRepository),
|
|
107
|
+
(state, { selectedItems }) => {
|
|
108
|
+
return {
|
|
109
|
+
...state,
|
|
110
|
+
selectedItems,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
|
|
115
|
+
on(createChangePageSizeTableAction(tableRepository), (state, { size }) => {
|
|
116
|
+
return {
|
|
117
|
+
...state,
|
|
118
|
+
requestParams: {
|
|
119
|
+
...state.requestParams,
|
|
120
|
+
size,
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}),
|
|
124
|
+
...ons
|
|
125
|
+
);
|
|
126
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// @ts-expect-error https://thymikee.github.io/jest-preset-angular/docs/getting-started/test-environment
|
|
2
|
+
globalThis.ngJest = {
|
|
3
|
+
testEnvironmentOptions: {
|
|
4
|
+
errorOnUnknownElements: true,
|
|
5
|
+
errorOnUnknownProperties: true,
|
|
6
|
+
},
|
|
7
|
+
};
|
|
8
|
+
import 'jest-preset-angular/setup-jest';
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es2022",
|
|
4
|
+
"useDefineForClassFields": false,
|
|
5
|
+
"forceConsistentCasingInFileNames": true,
|
|
6
|
+
"strict": true,
|
|
7
|
+
"noImplicitOverride": true,
|
|
8
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
9
|
+
"noImplicitReturns": true,
|
|
10
|
+
"noFallthroughCasesInSwitch": true
|
|
11
|
+
},
|
|
12
|
+
"files": [],
|
|
13
|
+
"include": [],
|
|
14
|
+
"references": [
|
|
15
|
+
{
|
|
16
|
+
"path": "./tsconfig.lib.json"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "./tsconfig.spec.json"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"extends": "../../../tsconfig.base.json",
|
|
23
|
+
"angularCompilerOptions": {
|
|
24
|
+
"enableI18nLegacyMessageIdFormat": false,
|
|
25
|
+
"strictInjectionParameters": true,
|
|
26
|
+
"strictInputAccessModifiers": true,
|
|
27
|
+
"strictTemplates": true
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "../../../dist/out-tsc",
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"declarationMap": true,
|
|
7
|
+
"inlineSources": true,
|
|
8
|
+
"types": []
|
|
9
|
+
},
|
|
10
|
+
"exclude": [
|
|
11
|
+
"src/**/*.spec.ts",
|
|
12
|
+
"src/test-setup.ts",
|
|
13
|
+
"jest.config.ts",
|
|
14
|
+
"src/**/*.test.ts"
|
|
15
|
+
],
|
|
16
|
+
"include": ["src/**/*.ts"]
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "../../../dist/out-tsc",
|
|
5
|
+
"module": "commonjs",
|
|
6
|
+
"target": "es2016",
|
|
7
|
+
"types": ["jest", "node"]
|
|
8
|
+
},
|
|
9
|
+
"files": ["src/test-setup.ts"],
|
|
10
|
+
"include": [
|
|
11
|
+
"jest.config.ts",
|
|
12
|
+
"src/**/*.test.ts",
|
|
13
|
+
"src/**/*.spec.ts",
|
|
14
|
+
"src/**/*.d.ts"
|
|
15
|
+
]
|
|
16
|
+
}
|
package/esm2022/index.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
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==
|
|
@@ -1,35 +0,0 @@
|
|
|
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==
|
|
@@ -1,124 +0,0 @@
|
|
|
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==
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|