@angular-architects/ngrx-toolkit 0.0.6 → 0.1.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 +404 -369
- package/jest.config.ts +22 -0
- package/ng-package.json +7 -0
- package/package.json +3 -16
- package/project.json +37 -0
- package/{index.d.ts → src/index.ts} +4 -2
- package/src/lib/assertions/assertions.ts +9 -0
- package/src/lib/redux-connector/create-redux.ts +94 -0
- package/{lib/redux-connector/index.d.ts → src/lib/redux-connector/index.ts} +1 -0
- package/src/lib/redux-connector/model.ts +67 -0
- package/{lib/redux-connector/rxjs-interop/index.d.ts → src/lib/redux-connector/rxjs-interop/index.ts} +1 -0
- package/src/lib/redux-connector/rxjs-interop/redux-method.ts +61 -0
- package/src/lib/redux-connector/signal-redux-store.ts +54 -0
- package/src/lib/redux-connector/util.ts +22 -0
- package/src/lib/shared/empty.ts +2 -0
- package/src/lib/with-call-state.spec.ts +24 -0
- package/src/lib/with-call-state.ts +136 -0
- package/src/lib/with-data-service.ts +312 -0
- package/src/lib/with-devtools.spec.ts +157 -0
- package/src/lib/with-devtools.ts +128 -0
- package/src/lib/with-redux.spec.ts +100 -0
- package/src/lib/with-redux.ts +261 -0
- package/src/lib/with-storage-sync.spec.ts +237 -0
- package/src/lib/with-storage-sync.ts +160 -0
- package/src/lib/with-undo-redo.ts +184 -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/angular-architects-ngrx-toolkit.mjs +0 -5
- package/esm2022/index.mjs +0 -8
- package/esm2022/lib/assertions/assertions.mjs +0 -6
- package/esm2022/lib/redux-connector/create-redux.mjs +0 -41
- package/esm2022/lib/redux-connector/index.mjs +0 -2
- package/esm2022/lib/redux-connector/model.mjs +0 -2
- package/esm2022/lib/redux-connector/rxjs-interop/index.mjs +0 -2
- package/esm2022/lib/redux-connector/rxjs-interop/redux-method.mjs +0 -22
- package/esm2022/lib/redux-connector/signal-redux-store.mjs +0 -43
- package/esm2022/lib/redux-connector/util.mjs +0 -13
- package/esm2022/lib/shared/empty.mjs +0 -2
- package/esm2022/lib/with-call-state.mjs +0 -58
- package/esm2022/lib/with-data-service.mjs +0 -161
- package/esm2022/lib/with-devtools.mjs +0 -79
- package/esm2022/lib/with-redux.mjs +0 -95
- package/esm2022/lib/with-undo-redo.mjs +0 -93
- package/fesm2022/angular-architects-ngrx-toolkit.mjs +0 -600
- package/fesm2022/angular-architects-ngrx-toolkit.mjs.map +0 -1
- package/lib/assertions/assertions.d.ts +0 -2
- package/lib/redux-connector/create-redux.d.ts +0 -13
- package/lib/redux-connector/model.d.ts +0 -36
- package/lib/redux-connector/rxjs-interop/redux-method.d.ts +0 -11
- package/lib/redux-connector/signal-redux-store.d.ts +0 -11
- package/lib/redux-connector/util.d.ts +0 -5
- package/lib/shared/empty.d.ts +0 -1
- package/lib/with-call-state.d.ts +0 -55
- package/lib/with-data-service.d.ts +0 -115
- package/lib/with-devtools.d.ts +0 -32
- package/lib/with-redux.d.ts +0 -57
- package/lib/with-undo-redo.d.ts +0 -55
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { SignalStoreFeature, patchState, signalStoreFeature, withComputed, withHooks, withMethods } from "@ngrx/signals";
|
|
2
|
+
import { EntityId, EntityMap, EntityState } from "@ngrx/signals/entities";
|
|
3
|
+
import { Signal, effect, signal, untracked, isSignal } from "@angular/core";
|
|
4
|
+
import { EntitySignals, NamedEntitySignals } from "@ngrx/signals/entities/src/models";
|
|
5
|
+
import { Entity, capitalize } from "./with-data-service";
|
|
6
|
+
import { Emtpy } from "./shared/empty";
|
|
7
|
+
|
|
8
|
+
export type StackItem = Record<string, unknown>;
|
|
9
|
+
|
|
10
|
+
export type NormalizedUndoRedoOptions = {
|
|
11
|
+
maxStackSize: number;
|
|
12
|
+
collections?: string[]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const defaultOptions: NormalizedUndoRedoOptions = {
|
|
16
|
+
maxStackSize: 100
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type NamedUndoRedoState<Collection extends string> = {
|
|
20
|
+
[K in Collection as `${K}EntityMap`]: EntityMap<Entity>;
|
|
21
|
+
} & {
|
|
22
|
+
[K in Collection as `${K}Ids`]: EntityId[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type NamedUndoRedoSignals<Collection extends string> = {
|
|
26
|
+
[K in Collection as `${K}Entities`]: Signal<Entity[]>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function getUndoRedoKeys(collections?: string[]): string[] {
|
|
30
|
+
if (collections) {
|
|
31
|
+
return collections.flatMap(c => [`${c}EntityMap`, `${c}Ids`, `selected${capitalize(c)}Ids`, `${c}Filter`])
|
|
32
|
+
}
|
|
33
|
+
return ['entityMap', 'ids', 'selectedIds', 'filter'];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function withUndoRedo<Collection extends string>(options?: { maxStackSize?: number; collections: Collection[] }): SignalStoreFeature<
|
|
37
|
+
{
|
|
38
|
+
state: Emtpy,
|
|
39
|
+
// This alternative breaks type inference:
|
|
40
|
+
// state: NamedEntityState<Entity, Collection>
|
|
41
|
+
signals: NamedEntitySignals<Entity, Collection>,
|
|
42
|
+
methods: Emtpy
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
state: Emtpy,
|
|
46
|
+
signals: {
|
|
47
|
+
canUndo: Signal<boolean>,
|
|
48
|
+
canRedo: Signal<boolean>
|
|
49
|
+
},
|
|
50
|
+
methods: {
|
|
51
|
+
undo: () => void,
|
|
52
|
+
redo: () => void
|
|
53
|
+
}
|
|
54
|
+
}>;
|
|
55
|
+
|
|
56
|
+
export function withUndoRedo(options?: { maxStackSize?: number }): SignalStoreFeature<
|
|
57
|
+
{
|
|
58
|
+
state: EntityState<Entity>,
|
|
59
|
+
signals: EntitySignals<Entity>,
|
|
60
|
+
methods: Emtpy
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
state: Emtpy,
|
|
64
|
+
signals: {
|
|
65
|
+
canUndo: Signal<boolean>,
|
|
66
|
+
canRedo: Signal<boolean>
|
|
67
|
+
},
|
|
68
|
+
methods: {
|
|
69
|
+
undo: () => void,
|
|
70
|
+
redo: () => void
|
|
71
|
+
}
|
|
72
|
+
}>;
|
|
73
|
+
|
|
74
|
+
export function withUndoRedo<Collection extends string>(options: {
|
|
75
|
+
maxStackSize?: number;
|
|
76
|
+
collections?: Collection[]
|
|
77
|
+
} = {}):
|
|
78
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
|
+
SignalStoreFeature<any, any> {
|
|
80
|
+
let previous: StackItem | null = null;
|
|
81
|
+
let skipOnce = false;
|
|
82
|
+
|
|
83
|
+
const normalized = {
|
|
84
|
+
...defaultOptions,
|
|
85
|
+
...options
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
//
|
|
89
|
+
// Design Decision: This feature has its own
|
|
90
|
+
// internal state.
|
|
91
|
+
//
|
|
92
|
+
|
|
93
|
+
const undoStack: StackItem[] = [];
|
|
94
|
+
const redoStack: StackItem[] = [];
|
|
95
|
+
|
|
96
|
+
const canUndo = signal(false);
|
|
97
|
+
const canRedo = signal(false);
|
|
98
|
+
|
|
99
|
+
const updateInternal = () => {
|
|
100
|
+
canUndo.set(undoStack.length !== 0);
|
|
101
|
+
canRedo.set(redoStack.length !== 0);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const keys = getUndoRedoKeys(normalized?.collections);
|
|
105
|
+
|
|
106
|
+
return signalStoreFeature(
|
|
107
|
+
|
|
108
|
+
withComputed(() => ({
|
|
109
|
+
canUndo: canUndo.asReadonly(),
|
|
110
|
+
canRedo: canRedo.asReadonly()
|
|
111
|
+
})),
|
|
112
|
+
withMethods((store) => ({
|
|
113
|
+
undo(): void {
|
|
114
|
+
const item = undoStack.pop();
|
|
115
|
+
|
|
116
|
+
if (item && previous) {
|
|
117
|
+
redoStack.push(previous);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (item) {
|
|
121
|
+
skipOnce = true;
|
|
122
|
+
patchState(store, item);
|
|
123
|
+
previous = item;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
updateInternal();
|
|
127
|
+
},
|
|
128
|
+
redo(): void {
|
|
129
|
+
const item = redoStack.pop();
|
|
130
|
+
|
|
131
|
+
if (item && previous) {
|
|
132
|
+
undoStack.push(previous);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (item) {
|
|
136
|
+
skipOnce = true;
|
|
137
|
+
patchState(store, item);
|
|
138
|
+
previous = item;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
updateInternal();
|
|
142
|
+
}
|
|
143
|
+
})),
|
|
144
|
+
withHooks({
|
|
145
|
+
onInit(store: Record<string, unknown>) {
|
|
146
|
+
effect(() => {
|
|
147
|
+
|
|
148
|
+
const cand = keys.reduce((acc, key) => {
|
|
149
|
+
const s = store[key];
|
|
150
|
+
if (s && isSignal(s)) {
|
|
151
|
+
return {
|
|
152
|
+
...acc,
|
|
153
|
+
[key]: s()
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return acc;
|
|
157
|
+
}, {});
|
|
158
|
+
|
|
159
|
+
if (skipOnce) {
|
|
160
|
+
skipOnce = false;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Clear redoStack after recorded action
|
|
165
|
+
redoStack.splice(0);
|
|
166
|
+
|
|
167
|
+
if (previous) {
|
|
168
|
+
undoStack.push(previous);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (redoStack.length > normalized.maxStackSize) {
|
|
172
|
+
undoStack.unshift();
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
previous = cand;
|
|
176
|
+
|
|
177
|
+
// Don't propogate current reactive context
|
|
178
|
+
untracked(() => updateInternal());
|
|
179
|
+
})
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
)
|
|
184
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hcmNoaXRlY3RzLW5ncngtdG9vbGtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9hbmd1bGFyLWFyY2hpdGVjdHMtbmdyeC10b29sa2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/esm2022/index.mjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { withDevtools, patchState } from './lib/with-devtools';
|
|
2
|
-
export * from './lib/with-redux';
|
|
3
|
-
export * from './lib/with-call-state';
|
|
4
|
-
export * from './lib/with-undo-redo';
|
|
5
|
-
export * from './lib/with-data-service';
|
|
6
|
-
export * from './lib/redux-connector';
|
|
7
|
-
export * from './lib/redux-connector/rxjs-interop';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHdpdGhEZXZ0b29scywgcGF0Y2hTdGF0ZSwgQWN0aW9uIH0gZnJvbSAnLi9saWIvd2l0aC1kZXZ0b29scyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtcmVkdXgnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC1jYWxsLXN0YXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC11bmRvLXJlZG8nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLWRhdGEtc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1eC1jb25uZWN0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1eC1jb25uZWN0b3Ivcnhqcy1pbnRlcm9wJztcclxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export function assertActionFnSpecs(obj) {
|
|
2
|
-
if (!obj || typeof obj !== 'object') {
|
|
3
|
-
throw new Error('%o is not an Action Specification');
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvYXNzZXJ0aW9ucy9hc3NlcnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBWTtJQUVaLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztLQUN0RDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zRm5TcGVjcyB9IGZyb20gJy4uL3dpdGgtcmVkdXgnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFjdGlvbkZuU3BlY3MoXHJcbiAgb2JqOiB1bmtub3duXHJcbik6IGFzc2VydHMgb2JqIGlzIEFjdGlvbnNGblNwZWNzIHtcclxuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCclbyBpcyBub3QgYW4gQWN0aW9uIFNwZWNpZmljYXRpb24nKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from "@angular/core";
|
|
2
|
-
import { SignalReduxStore, injectReduxDispatch } from "./signal-redux-store";
|
|
3
|
-
import { capitalize, isActionCreator } from "./util";
|
|
4
|
-
export function mapAction(...args) {
|
|
5
|
-
let resultMethod = args.pop();
|
|
6
|
-
let storeMethod = args.pop();
|
|
7
|
-
if (isActionCreator(storeMethod)) {
|
|
8
|
-
args.push(storeMethod);
|
|
9
|
-
storeMethod = resultMethod || storeMethod;
|
|
10
|
-
resultMethod = undefined;
|
|
11
|
-
}
|
|
12
|
-
const types = args.map((creator) => creator.type);
|
|
13
|
-
return {
|
|
14
|
-
types,
|
|
15
|
-
storeMethod,
|
|
16
|
-
resultMethod
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export function withActionMappers(...mappers) {
|
|
20
|
-
return mappers;
|
|
21
|
-
}
|
|
22
|
-
export function createReduxState(storeName, signalStore, withActionMappers) {
|
|
23
|
-
const isRootProvider = signalStore?.ɵprov?.providedIn === 'root';
|
|
24
|
-
return {
|
|
25
|
-
[`provide${capitalize(storeName)}Store`]: (connectReduxDevtools = false) => makeEnvironmentProviders([
|
|
26
|
-
isRootProvider ? [] : signalStore,
|
|
27
|
-
{
|
|
28
|
-
provide: ENVIRONMENT_INITIALIZER,
|
|
29
|
-
multi: true,
|
|
30
|
-
useFactory: (signalReduxStore = inject(SignalReduxStore), store = inject(signalStore)) => () => {
|
|
31
|
-
if (connectReduxDevtools) {
|
|
32
|
-
// addStoreToReduxDevtools(store, storeName, false);
|
|
33
|
-
}
|
|
34
|
-
signalReduxStore.connectFeatureStore(withActionMappers(store));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
]),
|
|
38
|
-
[`inject${capitalize(storeName)}Store`]: () => Object.assign(inject(signalStore), { dispatch: injectReduxDispatch() })
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlZHV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9yZWR1eC1jb25uZWN0b3IvY3JlYXRlLXJlZHV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFxQnJELE1BQU0sVUFBVSxTQUFTLENBR3ZCLEdBQUcsSUFJRjtJQUVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQTJELENBQUM7SUFDdkYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBa0UsQ0FBQztJQUU3RixJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLFdBQVcsR0FBRyxZQUFZLElBQUksV0FBVyxDQUFDO1FBQzFDLFlBQVksR0FBRyxTQUFTLENBQUM7S0FDMUI7SUFFRCxNQUFNLEtBQUssR0FBSSxJQUE0QixDQUFDLEdBQUcsQ0FDN0MsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2lCLENBQUM7SUFFN0MsT0FBTztRQUNMLEtBQUs7UUFDTCxXQUFXO1FBQ1gsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixHQUFHLE9BQWlEO0lBRXBELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBSTlCLFNBQW9CLEVBQ3BCLFdBQWtCLEVBQ2xCLGlCQUEyRjtJQUUzRixNQUFNLGNBQWMsR0FBSSxXQUFtQixFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssTUFBTSxDQUFDO0lBQzFFLE9BQU87UUFDTCxDQUFDLFVBQVUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsd0JBQXdCLENBQUM7WUFDbkcsY0FBYyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDaEM7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLENBQ1YsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQzNDLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQzNCLEVBQUUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1IsSUFBSSxvQkFBb0IsRUFBRTt3QkFDeEIsb0RBQW9EO3FCQUNyRDtvQkFDRCxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FDbEMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQ3pCLENBQUM7Z0JBQ0osQ0FBQzthQUNGO1NBQ0YsQ0FBQztRQUNGLENBQUMsU0FBUyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQzFELE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDbkIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxDQUNwQztLQUNvQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBBY3Rpb25UeXBlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlL3NyYy9tb2RlbHNcIjtcclxuaW1wb3J0IHsgQ3JlYXRlUmVkdXhTdGF0ZSwgRXh0cmFjdEFjdGlvblR5cGVzLCBNYXBwZXJUeXBlcywgU3RvcmUgfSBmcm9tIFwiLi9tb2RlbFwiO1xyXG5pbXBvcnQgeyBTaWduYWxSZWR1eFN0b3JlLCBpbmplY3RSZWR1eERpc3BhdGNoIH0gZnJvbSBcIi4vc2lnbmFsLXJlZHV4LXN0b3JlXCI7XHJcbmltcG9ydCB7IGNhcGl0YWxpemUsIGlzQWN0aW9uQ3JlYXRvciB9IGZyb20gXCIuL3V0aWxcIjtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFwQWN0aW9uPFxyXG4gIENyZWF0b3JzIGV4dGVuZHMgcmVhZG9ubHkgQWN0aW9uQ3JlYXRvcltdXHJcbj4oXHJcbiAgLi4uYXJnczogW1xyXG4gICAgLi4uY3JlYXRvcnM6IENyZWF0b3JzLFxyXG4gICAgc3RvcmVNZXRob2Q6IChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4pID0+IHVua25vd25cclxuICBdXHJcbik6IE1hcHBlclR5cGVzPENyZWF0b3JzPjtcclxuZXhwb3J0IGZ1bmN0aW9uIG1hcEFjdGlvbjxcclxuICBDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXSxcclxuICBUXHJcbj4oXHJcbiAgLi4uYXJnczogW1xyXG4gICAgLi4uY3JlYXRvcnM6IENyZWF0b3JzLFxyXG4gICAgc3RvcmVNZXRob2Q6IChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4sIHJlc3VsdE1ldGhvZDogKGlucHV0OiBUKSA9PiB1bmtub3duKSA9PiB1bmtub3duLFxyXG4gICAgcmVzdWx0TWV0aG9kOiAoaW5wdXQ6IFQpID0+IHVua25vd25cclxuICBdXHJcbik6IE1hcHBlclR5cGVzPENyZWF0b3JzPjtcclxuZXhwb3J0IGZ1bmN0aW9uIG1hcEFjdGlvbjxcclxuICBDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXVxyXG4+KFxyXG4gIC4uLmFyZ3M6IFtcclxuICAgIC4uLmNyZWF0b3JzOiBDcmVhdG9ycyxcclxuICAgIHN0b3JlTWV0aG9kOiAoYWN0aW9uOiBBY3Rpb25UeXBlPENyZWF0b3JzW251bWJlcl0+KSA9PiB1bmtub3duLFxyXG4gICAgcmVzdWx0TWV0aG9kPzogKGlucHV0OiB1bmtub3duKSA9PiB1bmtub3duXHJcbiAgXVxyXG4pOiBNYXBwZXJUeXBlczxDcmVhdG9ycz4ge1xyXG4gIGxldCByZXN1bHRNZXRob2QgPSBhcmdzLnBvcCgpIGFzIHVua25vd24gYXMgKChpbnB1dDogdW5rbm93bikgPT4gdW5rbm93biApIHwgdW5kZWZpbmVkO1xyXG4gIGxldCBzdG9yZU1ldGhvZCA9IGFyZ3MucG9wKCkgYXMgdW5rbm93biBhcyAoYWN0aW9uOiBBY3Rpb25UeXBlPENyZWF0b3JzW251bWJlcl0+KSA9PiB1bmtub3duO1xyXG5cclxuICBpZiAoaXNBY3Rpb25DcmVhdG9yKHN0b3JlTWV0aG9kKSkge1xyXG4gICAgYXJncy5wdXNoKHN0b3JlTWV0aG9kKTtcclxuICAgIHN0b3JlTWV0aG9kID0gcmVzdWx0TWV0aG9kIHx8IHN0b3JlTWV0aG9kO1xyXG4gICAgcmVzdWx0TWV0aG9kID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdHlwZXMgPSAoYXJncyBhcyB1bmtub3duIGFzIENyZWF0b3JzKS5tYXAoXHJcbiAgICAoY3JlYXRvcikgPT4gY3JlYXRvci50eXBlXHJcbiAgKSBhcyB1bmtub3duIGFzIEV4dHJhY3RBY3Rpb25UeXBlczxDcmVhdG9ycz47XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICB0eXBlcyxcclxuICAgIHN0b3JlTWV0aG9kLFxyXG4gICAgcmVzdWx0TWV0aG9kXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBY3Rpb25NYXBwZXJzKFxyXG4gIC4uLm1hcHBlcnM6IE1hcHBlclR5cGVzPEFjdGlvbkNyZWF0b3I8YW55LCBhbnk+W10+W11cclxuKTogTWFwcGVyVHlwZXM8QWN0aW9uQ3JlYXRvcjxhbnksIGFueT5bXT5bXSB7XHJcbiAgcmV0dXJuIG1hcHBlcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWR1eFN0YXRlPFxyXG4gIFN0b3JlTmFtZSBleHRlbmRzIHN0cmluZyxcclxuICBTVE9SRSBleHRlbmRzIFN0b3JlXHJcbj4oXHJcbiAgc3RvcmVOYW1lOiBTdG9yZU5hbWUsXHJcbiAgc2lnbmFsU3RvcmU6IFNUT1JFLFxyXG4gIHdpdGhBY3Rpb25NYXBwZXJzOiAoc3RvcmU6IEluc3RhbmNlVHlwZTxTVE9SRT4pID0+IE1hcHBlclR5cGVzPEFjdGlvbkNyZWF0b3I8YW55LCBhbnk+W10+W10sXHJcbik6IENyZWF0ZVJlZHV4U3RhdGU8U3RvcmVOYW1lLCBTVE9SRT4ge1xyXG4gIGNvbnN0IGlzUm9vdFByb3ZpZGVyID0gKHNpZ25hbFN0b3JlIGFzIGFueSk/Lsm1cHJvdj8ucHJvdmlkZWRJbiA9PT0gJ3Jvb3QnO1xyXG4gIHJldHVybiB7XHJcbiAgICBbYHByb3ZpZGUke2NhcGl0YWxpemUoc3RvcmVOYW1lKX1TdG9yZWBdOiAoY29ubmVjdFJlZHV4RGV2dG9vbHMgPSBmYWxzZSkgPT4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcclxuICAgICAgaXNSb290UHJvdmlkZXI/IFtdIDogc2lnbmFsU3RvcmUsXHJcbiAgICAgIHtcclxuICAgICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcclxuICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB1c2VGYWN0b3J5OiAoXHJcbiAgICAgICAgICBzaWduYWxSZWR1eFN0b3JlID0gaW5qZWN0KFNpZ25hbFJlZHV4U3RvcmUpLFxyXG4gICAgICAgICAgc3RvcmUgPSBpbmplY3Qoc2lnbmFsU3RvcmUpXHJcbiAgICAgICAgKSA9PiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29ubmVjdFJlZHV4RGV2dG9vbHMpIHtcclxuICAgICAgICAgICAgLy8gYWRkU3RvcmVUb1JlZHV4RGV2dG9vbHMoc3RvcmUsIHN0b3JlTmFtZSwgZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2lnbmFsUmVkdXhTdG9yZS5jb25uZWN0RmVhdHVyZVN0b3JlKFxyXG4gICAgICAgICAgICB3aXRoQWN0aW9uTWFwcGVycyhzdG9yZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdKSxcclxuICAgIFtgaW5qZWN0JHtjYXBpdGFsaXplKHN0b3JlTmFtZSl9U3RvcmVgXTogKCkgPT4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgaW5qZWN0KHNpZ25hbFN0b3JlKSxcclxuICAgICAgeyBkaXNwYXRjaDogaW5qZWN0UmVkdXhEaXNwYXRjaCgpIH1cclxuICAgIClcclxuICB9IGFzIENyZWF0ZVJlZHV4U3RhdGU8U3RvcmVOYW1lLCBTVE9SRT47XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { createReduxState, mapAction, withActionMappers } from './create-redux';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3JlZHV4LWNvbm5lY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IHsgY3JlYXRlUmVkdXhTdGF0ZSwgbWFwQWN0aW9uLCB3aXRoQWN0aW9uTWFwcGVycyB9IGZyb20gJy4vY3JlYXRlLXJlZHV4JztcclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3JlZHV4LWNvbm5lY3Rvci9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIFNpZ25hbCwgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERlZXBTaWduYWwgfSBmcm9tIFwiQG5ncngvc2lnbmFscy9zcmMvZGVlcC1zaWduYWxcIjtcclxuaW1wb3J0IHsgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0IH0gZnJvbSBcIkBuZ3J4L3NpZ25hbHMvc3JjL3NpZ25hbC1zdG9yZS1tb2RlbHNcIjtcclxuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tIFwiQG5ncngvc2lnbmFscy9zcmMvc3RhdGUtc2lnbmFsXCI7XHJcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uQ3JlYXRvciwgQWN0aW9uVHlwZSwgUHJldHRpZnkgfSBmcm9tIFwiQG5ncngvc3RvcmUvc3JjL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBVbnN1YnNjcmliYWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgSW5jbHVkZVByb3BUeXBlPFQsIFYsIFdpdGhOZXZlcnMgPVxyXG4gIHsgW0sgaW4ga2V5b2YgVF06IEV4Y2x1ZGU8VFtLXSwgdW5kZWZpbmVkPiBleHRlbmRzIFZcclxuICAgID8gVFtLXSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XHJcbiAgICAgID8gSW5jbHVkZVByb3BUeXBlPFRbS10sIFY+XHJcbiAgICAgIDogVFtLXVxyXG4gICAgOiBuZXZlclxyXG4gIH0+ID0gUHJldHRpZnk8XHJcbiAgICBQaWNrPFxyXG4gICAgICBXaXRoTmV2ZXJzLFxyXG4gICAgICB7IFtLIGluIGtleW9mIFdpdGhOZXZlcnNdOiBXaXRoTmV2ZXJzW0tdIGV4dGVuZHMgbmV2ZXJcclxuICAgICAgICA/IG5ldmVyXHJcbiAgICAgICAgOiBLIGV4dGVuZHMgc3RyaW5nXHJcbiAgICAgICAgICA/IEtcclxuICAgICAgICAgIDogbmV2ZXJcclxuICAgICAgfVtrZXlvZiBXaXRoTmV2ZXJzXVxyXG4gICAgPlxyXG4gID47XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZSA9IFR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiBTdGF0ZVNpZ25hbDxTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHRbJ3N0YXRlJ10+PjtcclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZVJlZHV4U3RhdGU8XHJcbiAgU3RvcmVOYW1lIGV4dGVuZHMgc3RyaW5nLFxyXG4gIFNUT1JFIGV4dGVuZHMgU3RvcmVcclxuPiA9IHtcclxuICBbSyBpbiBTdG9yZU5hbWUgYXMgYHByb3ZpZGUke0NhcGl0YWxpemU8Sz59U3RvcmVgXTogKGNvbm5lY3RSZWR1eERldnRvb2xzPzogYm9vbGVhbikgPT4gRW52aXJvbm1lbnRQcm92aWRlcnNcclxufSAmIHtcclxuICBbSyBpbiBTdG9yZU5hbWUgYXMgYGluamVjdCR7Q2FwaXRhbGl6ZTxLPn1TdG9yZWBdOiAoKSA9PiBJbmplY3RhYmxlUmVkdXhTbGljZTxTVE9SRT5cclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIFNlbGVjdG9yczxTVE9SRSBleHRlbmRzIFN0b3JlPiA9IEluY2x1ZGVQcm9wVHlwZTxJbnN0YW5jZVR5cGU8U1RPUkU+LCBTaWduYWw8dW5rbm93bj4gfCBEZWVwU2lnbmFsPHVua25vd24+PjtcclxuZXhwb3J0IHR5cGUgRGlzcGF0Y2ggPSB7IGRpc3BhdGNoOiAoaW5wdXQ6IEFjdGlvbiB8IE9ic2VydmFibGU8QWN0aW9uPiB8IFNpZ25hbDxBY3Rpb24+KSA9PiBVbnN1YnNjcmliYWJsZSB9O1xyXG5leHBvcnQgdHlwZSBJbmplY3RhYmxlUmVkdXhTbGljZTxTVE9SRSBleHRlbmRzIFN0b3JlPiA9IFNlbGVjdG9yczxTVE9SRT4gJiBEaXNwYXRjaDtcclxuXHJcbmV4cG9ydCB0eXBlIEV4dHJhY3RBY3Rpb25UeXBlczxDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXT4gPSB7XHJcbiAgW0tleSBpbiBrZXlvZiBDcmVhdG9yc106IENyZWF0b3JzW0tleV0gZXh0ZW5kcyBBY3Rpb25DcmVhdG9yPGluZmVyIFQ+XHJcbiAgICA/IFRcclxuICAgIDogbmV2ZXI7XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbk1ldGhvZDxULCBWIGV4dGVuZHMgQWN0aW9uID0gQWN0aW9uPiB7XHJcbiAgKGFjdGlvbjogVik6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVNZXRob2Q8XHJcbiAgQ3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW10sXHJcbiAgUmVzdWx0U3RhdGUgPSB1bmtub3duLFxyXG4+IHtcclxuICAoXHJcbiAgICBhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT5cclxuICApOiBSZXN1bHRTdGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBwZXJUeXBlczxcclxuICBDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXVxyXG4+IHtcclxuICB0eXBlczogRXh0cmFjdEFjdGlvblR5cGVzPENyZWF0b3JzPixcclxuICBzdG9yZU1ldGhvZDogU3RvcmVNZXRob2Q8Q3JlYXRvcnM+LFxyXG4gIHJlc3VsdE1ldGhvZD86ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd25cclxufVxyXG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { reduxMethod } from './redux-method';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3JlZHV4LWNvbm5lY3Rvci9yeGpzLWludGVyb3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCB7IHJlZHV4TWV0aG9kIH0gZnJvbSAnLi9yZWR1eC1tZXRob2QnO1xyXG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Injector, inject } from "@angular/core";
|
|
2
|
-
import { rxMethod } from "@ngrx/signals/rxjs-interop";
|
|
3
|
-
import { map, pipe } from "rxjs";
|
|
4
|
-
export function reduxMethod(generator, resultMethodOrConfig, config) {
|
|
5
|
-
const injector = inject(Injector);
|
|
6
|
-
if (typeof resultMethodOrConfig === 'function') {
|
|
7
|
-
let unsubscribable;
|
|
8
|
-
const inputResultFn = ((input, resultMethod = resultMethodOrConfig) => {
|
|
9
|
-
const rxMethodWithResult = rxMethod(pipe(generator, map(resultMethod)), {
|
|
10
|
-
...(config || {}),
|
|
11
|
-
injector: config?.injector || injector
|
|
12
|
-
});
|
|
13
|
-
const rxWithInput = rxMethodWithResult(input);
|
|
14
|
-
unsubscribable = { unsubscribe: rxWithInput.unsubscribe.bind(rxWithInput) };
|
|
15
|
-
return rxWithInput;
|
|
16
|
-
});
|
|
17
|
-
inputResultFn.unsubscribe = () => unsubscribable?.unsubscribe();
|
|
18
|
-
return inputResultFn;
|
|
19
|
-
}
|
|
20
|
-
return rxMethod(generator, resultMethodOrConfig);
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9yZWR1eC1jb25uZWN0b3Ivcnhqcy1pbnRlcm9wL3JlZHV4LW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUE4QixHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBcUI3RCxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFrRSxFQUNsRSxvQkFFQyxFQUNELE1BRUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsSUFBSSxPQUFPLG9CQUFvQixLQUFLLFVBQVUsRUFBRTtRQUM5QyxJQUFJLGNBQThCLENBQUM7UUFDbkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUNyQixLQUEyQixFQUMzQixZQUFZLEdBQUcsb0JBQW9CLEVBQ25DLEVBQUU7WUFFRixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBUSxJQUFJLENBQzdDLFNBQVMsRUFDVCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQ2xCLEVBQUU7Z0JBQ0QsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxJQUFJLFFBQVE7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsY0FBYyxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFFNUUsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUErQyxDQUFDO1FBRWpELGFBQWEsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRWhFLE9BQU8sYUFBYSxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxRQUFRLENBQVEsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBTaWduYWwsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IHJ4TWV0aG9kIH0gZnJvbSBcIkBuZ3J4L3NpZ25hbHMvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFVuc3Vic2NyaWJhYmxlLCBtYXAsIHBpcGUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuXHJcbnR5cGUgUnhNZXRob2RJbnB1dDxJbnB1dD4gPSBJbnB1dCB8IE9ic2VydmFibGU8SW5wdXQ+IHwgU2lnbmFsPElucHV0PjtcclxuXHJcbnR5cGUgUnhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0ID0gSW5wdXQsIE1ldGhvZFJlc3VsdCA9IHVua25vd24+ID0gKChcclxuICBpbnB1dDogUnhNZXRob2RJbnB1dDxJbnB1dD4sXHJcbiAgcmVzdWx0TWV0aG9kOiAoaW5wdXQ6IE1ldGhvZElucHV0KSA9PiBNZXRob2RSZXN1bHRcclxuKSA9PiBVbnN1YnNjcmliYWJsZSkgJiBVbnN1YnNjcmliYWJsZTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWR1eE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQgPSBJbnB1dD4oXHJcbiAgZ2VuZXJhdG9yOiAoc291cmNlJDogT2JzZXJ2YWJsZTxJbnB1dD4pID0+IE9ic2VydmFibGU8TWV0aG9kSW5wdXQ+LFxyXG4gIGNvbmZpZz86IHsgaW5qZWN0b3I/OiBJbmplY3RvciB9XHJcbik6IFJ4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dD47XHJcbmV4cG9ydCBmdW5jdGlvbiByZWR1eE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQgPSBJbnB1dCwgTWV0aG9kUmVzdWx0ID0gdW5rbm93bj4oXHJcbiAgZ2VuZXJhdG9yOiAoc291cmNlJDogT2JzZXJ2YWJsZTxJbnB1dD4pID0+IE9ic2VydmFibGU8TWV0aG9kSW5wdXQ+LFxyXG4gIHJlc3VsdE1ldGhvZDogKGlucHV0OiBNZXRob2RJbnB1dCkgPT4gTWV0aG9kUmVzdWx0LFxyXG4gIGNvbmZpZz86IHtcclxuICAgIGluamVjdG9yPzogSW5qZWN0b3JcclxuICB9XHJcbik6IFJ4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCwgTWV0aG9kUmVzdWx0PjtcclxuZXhwb3J0IGZ1bmN0aW9uIHJlZHV4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCA9IElucHV0LCBNZXRob2RSZXN1bHQgPSB1bmtub3duPihcclxuICBnZW5lcmF0b3I6IChzb3VyY2UkOiBPYnNlcnZhYmxlPElucHV0PikgPT4gT2JzZXJ2YWJsZTxNZXRob2RJbnB1dD4sXHJcbiAgcmVzdWx0TWV0aG9kT3JDb25maWc/OiAoKGlucHV0OiBNZXRob2RJbnB1dCkgPT4gTWV0aG9kUmVzdWx0KSB8IHtcclxuICAgIGluamVjdG9yPzogSW5qZWN0b3JcclxuICB9LFxyXG4gIGNvbmZpZz86IHtcclxuICAgIGluamVjdG9yPzogSW5qZWN0b3JcclxuICB9XHJcbik6IFJ4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCwgTWV0aG9kUmVzdWx0PiAge1xyXG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgaWYgKHR5cGVvZiByZXN1bHRNZXRob2RPckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgbGV0IHVuc3Vic2NyaWJhYmxlOiBVbnN1YnNjcmliYWJsZTtcclxuICAgIGNvbnN0IGlucHV0UmVzdWx0Rm4gPSAoKFxyXG4gICAgICBpbnB1dDogUnhNZXRob2RJbnB1dDxJbnB1dD4sXHJcbiAgICAgIHJlc3VsdE1ldGhvZCA9IHJlc3VsdE1ldGhvZE9yQ29uZmlnXHJcbiAgICApID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHJ4TWV0aG9kV2l0aFJlc3VsdCA9IHJ4TWV0aG9kPElucHV0PihwaXBlKFxyXG4gICAgICAgIGdlbmVyYXRvcixcclxuICAgICAgICBtYXAocmVzdWx0TWV0aG9kKVxyXG4gICAgICApLCB7XHJcbiAgICAgICAgLi4uKGNvbmZpZyB8fCB7fSksXHJcbiAgICAgICAgaW5qZWN0b3I6IGNvbmZpZz8uaW5qZWN0b3IgfHwgaW5qZWN0b3JcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHJ4V2l0aElucHV0ID0gcnhNZXRob2RXaXRoUmVzdWx0KGlucHV0KTtcclxuICAgICAgdW5zdWJzY3JpYmFibGUgPSB7IHVuc3Vic2NyaWJlOiByeFdpdGhJbnB1dC51bnN1YnNjcmliZS5iaW5kKHJ4V2l0aElucHV0KSB9O1xyXG5cclxuICAgICAgcmV0dXJuIHJ4V2l0aElucHV0O1xyXG4gICAgfSkgYXMgUnhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0LCBNZXRob2RSZXN1bHQ+O1xyXG5cclxuICAgIGlucHV0UmVzdWx0Rm4udW5zdWJzY3JpYmUgPSAoKSA9PiB1bnN1YnNjcmliYWJsZT8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICByZXR1cm4gaW5wdXRSZXN1bHRGbjtcclxuICB9XHJcblxyXG4gIHJldHVybiByeE1ldGhvZDxJbnB1dD4oZ2VuZXJhdG9yLCByZXN1bHRNZXRob2RPckNvbmZpZyk7XHJcbn1cclxuIl19
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from "@angular/core";
|
|
2
|
-
import { rxMethod } from "@ngrx/signals/rxjs-interop";
|
|
3
|
-
import { pipe, tap } from "rxjs";
|
|
4
|
-
import { isUnsubscribable } from "./util";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class SignalReduxStore {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.mapperDict = {};
|
|
9
|
-
this.dispatch = rxMethod(pipe(tap((action) => {
|
|
10
|
-
const callbacks = this.mapperDict[action.type];
|
|
11
|
-
if (callbacks?.storeMethod) {
|
|
12
|
-
if (isUnsubscribable(callbacks.storeMethod) &&
|
|
13
|
-
callbacks.resultMethod) {
|
|
14
|
-
return callbacks.storeMethod(action, (a) => {
|
|
15
|
-
const resultAction = callbacks.resultMethod?.(a);
|
|
16
|
-
this.dispatch(resultAction);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
return callbacks?.storeMethod(action);
|
|
20
|
-
}
|
|
21
|
-
return;
|
|
22
|
-
})));
|
|
23
|
-
}
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
-
connectFeatureStore(mappers) {
|
|
26
|
-
mappers.forEach(mapper => mapper.types.forEach(action => this.mapperDict[action] = {
|
|
27
|
-
storeMethod: mapper.storeMethod,
|
|
28
|
-
resultMethod: mapper.resultMethod
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: SignalReduxStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: SignalReduxStore, providedIn: 'root' }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: SignalReduxStore, decorators: [{
|
|
35
|
-
type: Injectable,
|
|
36
|
-
args: [{
|
|
37
|
-
providedIn: 'root'
|
|
38
|
-
}]
|
|
39
|
-
}] });
|
|
40
|
-
export function injectReduxDispatch() {
|
|
41
|
-
return inject(SignalReduxStore).dispatch;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXJlZHV4LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9yZWR1eC1jb25uZWN0b3Ivc2lnbmFsLXJlZHV4LXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBTTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJVSxlQUFVLEdBR2IsRUFBRSxDQUFDO1FBRVIsYUFBUSxHQUFHLFFBQVEsQ0FBUyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksU0FBUyxFQUFFLFdBQVcsRUFBRTtnQkFDMUIsSUFDRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO29CQUN2QyxTQUFTLENBQUMsWUFBWSxFQUN0QjtvQkFDQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUU7d0JBQ2pELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQVcsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsT0FBTyxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsT0FBTztRQUNULENBQUMsQ0FBQyxDQUNILENBQUMsQ0FBQztLQWFKO0lBWEMsOERBQThEO0lBQzlELG1CQUFtQixDQUFDLE9BQWlEO1FBQ25FLE9BQU8sQ0FBQyxPQUFPLENBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDNUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ2xDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7U0FDbEMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDOzhHQXJDVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBeUNELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IHJ4TWV0aG9kIH0gZnJvbSBcIkBuZ3J4L3NpZ25hbHMvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uQ3JlYXRvciB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG5pbXBvcnQgeyBwaXBlLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXBwZXJUeXBlcyB9IGZyb20gXCIuL21vZGVsXCI7XHJcbmltcG9ydCB7IGlzVW5zdWJzY3JpYmFibGUgfSBmcm9tIFwiLi91dGlsXCI7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbmFsUmVkdXhTdG9yZSB7XHJcbiAgcHJpdmF0ZSBtYXBwZXJEaWN0OiBSZWNvcmQ8c3RyaW5nLCB7XHJcbiAgICBzdG9yZU1ldGhvZDogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bixcclxuICAgIHJlc3VsdE1ldGhvZD86ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24sXHJcbiAgfT4gPSB7fTtcclxuXHJcbiAgZGlzcGF0Y2ggPSByeE1ldGhvZDxBY3Rpb24+KHBpcGUoXHJcbiAgICB0YXAoKGFjdGlvbjogQWN0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbGxiYWNrcyA9IHRoaXMubWFwcGVyRGljdFthY3Rpb24udHlwZV07XHJcbiAgICAgIGlmIChjYWxsYmFja3M/LnN0b3JlTWV0aG9kKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaXNVbnN1YnNjcmliYWJsZShjYWxsYmFja3Muc3RvcmVNZXRob2QpICYmXHJcbiAgICAgICAgICBjYWxsYmFja3MucmVzdWx0TWV0aG9kXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2tzLnN0b3JlTWV0aG9kKGFjdGlvbiwgKGE6IEFjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRBY3Rpb24gPSBjYWxsYmFja3MucmVzdWx0TWV0aG9kPy4oYSkgYXMgQWN0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoKHJlc3VsdEFjdGlvbik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjYWxsYmFja3M/LnN0b3JlTWV0aG9kKGFjdGlvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH0pXHJcbiAgKSk7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29ubmVjdEZlYXR1cmVTdG9yZShtYXBwZXJzOiBNYXBwZXJUeXBlczxBY3Rpb25DcmVhdG9yPGFueSwgYW55PltdPltdKTogdm9pZCB7XHJcbiAgICBtYXBwZXJzLmZvckVhY2goXHJcbiAgICAgIG1hcHBlciA9PiBtYXBwZXIudHlwZXMuZm9yRWFjaChcclxuICAgICAgICBhY3Rpb24gPT4gdGhpcy5tYXBwZXJEaWN0W2FjdGlvbl0gPSB7XHJcbiAgICAgICAgICBzdG9yZU1ldGhvZDogbWFwcGVyLnN0b3JlTWV0aG9kLFxyXG4gICAgICAgICAgcmVzdWx0TWV0aG9kOiBtYXBwZXIucmVzdWx0TWV0aG9kXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlZHV4RGlzcGF0Y2goKSB7XHJcbiAgcmV0dXJuIGluamVjdChTaWduYWxSZWR1eFN0b3JlKS5kaXNwYXRjaDtcclxufVxyXG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function isUnsubscribable(fn) {
|
|
2
|
-
return !!fn?.unsubscribe;
|
|
3
|
-
}
|
|
4
|
-
export function capitalize(str) {
|
|
5
|
-
return str ? str[0].toUpperCase() + str.substring(1) : str;
|
|
6
|
-
}
|
|
7
|
-
export function isActionCreator(action) {
|
|
8
|
-
return (typeof action === 'function' &&
|
|
9
|
-
action &&
|
|
10
|
-
action.type &&
|
|
11
|
-
typeof action.type === 'string');
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvcmVkdXgtY29ubmVjdG9yL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixFQUE0QjtJQUU1QixPQUFPLENBQUMsQ0FBRSxFQUFnQyxFQUFFLFdBQVcsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzdELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQVc7SUFDekMsT0FBTyxDQUNMLE9BQU8sTUFBTSxLQUFLLFVBQVU7UUFDNUIsTUFBTTtRQUNOLE1BQU0sQ0FBQyxJQUFJO1FBQ1gsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FDaEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IFVuc3Vic2NyaWJhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5zdWJzY3JpYmFibGU8RiBleHRlbmRzICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24+KFxyXG4gIGZuOiBGIHwgKEYgJiBVbnN1YnNjcmliYWJsZSlcclxuKTogZm4gaXMgRiAmIFVuc3Vic2NyaWJhYmxlIHtcclxuICByZXR1cm4gISEoZm4gYXMgYW55IGFzIEYgJiBVbnN1YnNjcmliYWJsZSk/LnVuc3Vic2NyaWJlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKSA6IHN0cjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uQ3JlYXRvcihhY3Rpb246IGFueSk6IGFjdGlvbiBpcyBBY3Rpb24ge1xyXG4gIHJldHVybiAoXHJcbiAgICB0eXBlb2YgYWN0aW9uID09PSAnZnVuY3Rpb24nICYmXHJcbiAgICBhY3Rpb24gJiZcclxuICAgIGFjdGlvbi50eXBlICYmXHJcbiAgICB0eXBlb2YgYWN0aW9uLnR5cGUgPT09ICdzdHJpbmcnXHJcbiAgKTtcclxufVxyXG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9lbXB0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcclxuZXhwb3J0IHR5cGUgRW10cHkgPSB7fTsiXX0=
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { computed } from '@angular/core';
|
|
2
|
-
import { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';
|
|
3
|
-
export function getCallStateKeys(config) {
|
|
4
|
-
const prop = config?.collection;
|
|
5
|
-
return {
|
|
6
|
-
callStateKey: prop ? `${config.collection}CallState` : 'callState',
|
|
7
|
-
loadingKey: prop ? `${config.collection}Loading` : 'loading',
|
|
8
|
-
loadedKey: prop ? `${config.collection}Loaded` : 'loaded',
|
|
9
|
-
errorKey: prop ? `${config.collection}Error` : 'error',
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
export function withCallState(config) {
|
|
13
|
-
const { callStateKey, errorKey, loadedKey, loadingKey } = getCallStateKeys(config);
|
|
14
|
-
return signalStoreFeature(withState({ [callStateKey]: 'init' }), withComputed((state) => {
|
|
15
|
-
const callState = state[callStateKey];
|
|
16
|
-
return {
|
|
17
|
-
[loadingKey]: computed(() => callState() === 'loading'),
|
|
18
|
-
[loadedKey]: computed(() => callState() === 'loaded'),
|
|
19
|
-
[errorKey]: computed(() => {
|
|
20
|
-
const v = callState();
|
|
21
|
-
return typeof v === 'object' ? v.error : null;
|
|
22
|
-
})
|
|
23
|
-
};
|
|
24
|
-
}));
|
|
25
|
-
}
|
|
26
|
-
export function setLoading(prop) {
|
|
27
|
-
if (prop) {
|
|
28
|
-
return { [`${prop}CallState`]: 'loading' };
|
|
29
|
-
}
|
|
30
|
-
return { callState: 'loading' };
|
|
31
|
-
}
|
|
32
|
-
export function setLoaded(prop) {
|
|
33
|
-
if (prop) {
|
|
34
|
-
return { [`${prop}CallState`]: 'loaded' };
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return { callState: 'loaded' };
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export function setError(error, prop) {
|
|
41
|
-
let errorMessage = '';
|
|
42
|
-
if (!error) {
|
|
43
|
-
errorMessage = '';
|
|
44
|
-
}
|
|
45
|
-
else if (typeof error === 'object' && 'message' in error) {
|
|
46
|
-
errorMessage = String(error.message);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
errorMessage = String(error);
|
|
50
|
-
}
|
|
51
|
-
if (prop) {
|
|
52
|
-
return { [`${prop}CallState`]: { error: errorMessage } };
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return { callState: { error: errorMessage } };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jYWxsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLWNhbGwtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUEyQnZCLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFnQztJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLE9BQU87UUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUNuRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN6RCxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztLQUN2RCxDQUFDO0FBQ0osQ0FBQztBQW9CRCxNQUFNLFVBQVUsYUFBYSxDQUE0QixNQUV4RDtJQUNDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FDckQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0IsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUNyQyxZQUFZLENBQUMsQ0FBQyxLQUFzQyxFQUFFLEVBQUU7UUFFdEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBc0IsQ0FBQztRQUUzRCxPQUFPO1lBQ0wsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssU0FBUyxDQUFDO1lBQ3ZELENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLFFBQVEsQ0FBQztZQUNyRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2hELENBQUMsQ0FBQztTQUNILENBQUE7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQVc7SUFFWCxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQStCLENBQUM7S0FDekU7SUFFRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixJQUFXO0lBR1gsSUFBSSxJQUFJLEVBQUU7UUFDUixPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUErQixDQUFDO0tBQ3hFO1NBQ0k7UUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBRWhDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLEtBQWMsRUFDZCxJQUFXO0lBR1QsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXRCLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixZQUFZLEdBQUcsRUFBRSxDQUFDO0tBQ25CO1NBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksU0FBUyxJQUFJLEtBQUssRUFBRTtRQUN4RCxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN0QztTQUNJO1FBQ0gsWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM5QjtJQUdELElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUErQixDQUFDO0tBQ3ZGO1NBQ0k7UUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUM7S0FDL0M7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcclxuICBzaWduYWxTdG9yZUZlYXR1cmUsXHJcbiAgd2l0aENvbXB1dGVkLFxyXG4gIHdpdGhTdGF0ZSxcclxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcclxuaW1wb3J0IHsgRW10cHkgfSBmcm9tICcuL3NoYXJlZC9lbXB0eSc7XHJcblxyXG5leHBvcnQgdHlwZSBDYWxsU3RhdGUgPSAnaW5pdCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJyB8IHsgZXJyb3I6IHN0cmluZyB9O1xyXG5cclxuZXhwb3J0IHR5cGUgTmFtZWRDYWxsU3RhdGVTbGljZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPiA9IHtcclxuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0t9Q2FsbFN0YXRlYF06IENhbGxTdGF0ZTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIENhbGxTdGF0ZVNsaWNlID0ge1xyXG4gIGNhbGxTdGF0ZTogQ2FsbFN0YXRlXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxQcm9wIGV4dGVuZHMgc3RyaW5nPiA9IHtcclxuICBbSyBpbiBQcm9wIGFzIGAke0t9TG9hZGluZ2BdOiBTaWduYWw8Ym9vbGVhbj47XHJcbn0gJiB7XHJcbiAgICBbSyBpbiBQcm9wIGFzIGAke0t9TG9hZGVkYF06IFNpZ25hbDxib29sZWFuPjtcclxuICB9ICYge1xyXG4gICAgW0sgaW4gUHJvcCBhcyBgJHtLfUVycm9yYF06IFNpZ25hbDxzdHJpbmcgfCBudWxsPjtcclxuICB9IFxyXG5cclxuZXhwb3J0IHR5cGUgQ2FsbFN0YXRlU2lnbmFscyA9IHtcclxuICBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgbG9hZGVkOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgZXJyb3I6IFNpZ25hbDxzdHJpbmcgfCBudWxsPlxyXG59IFxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGxTdGF0ZUtleXMoY29uZmlnPzogeyBjb2xsZWN0aW9uPzogc3RyaW5nIH0pIHtcclxuICBjb25zdCBwcm9wID0gY29uZmlnPy5jb2xsZWN0aW9uO1xyXG4gIHJldHVybiB7XHJcbiAgICBjYWxsU3RhdGVLZXk6IHByb3AgPyAgYCR7Y29uZmlnLmNvbGxlY3Rpb259Q2FsbFN0YXRlYCA6ICdjYWxsU3RhdGUnLFxyXG4gICAgbG9hZGluZ0tleTogcHJvcCA/IGAke2NvbmZpZy5jb2xsZWN0aW9ufUxvYWRpbmdgIDogJ2xvYWRpbmcnLFxyXG4gICAgbG9hZGVkS2V5OiBwcm9wID8gYCR7Y29uZmlnLmNvbGxlY3Rpb259TG9hZGVkYCA6ICdsb2FkZWQnLFxyXG4gICAgZXJyb3JLZXk6IHByb3AgPyBgJHtjb25maWcuY29sbGVjdGlvbn1FcnJvcmAgOiAnZXJyb3InLFxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xyXG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XHJcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmU8XHJcbiAgeyBzdGF0ZTogRW10cHksIHNpZ25hbHM6IEVtdHB5LCBtZXRob2RzOiBFbXRweSB9LFxyXG4gIHtcclxuICAgIHN0YXRlOiBOYW1lZENhbGxTdGF0ZVNsaWNlPENvbGxlY3Rpb24+LFxyXG4gICAgc2lnbmFsczogTmFtZWRDYWxsU3RhdGVTaWduYWxzPENvbGxlY3Rpb24+LFxyXG4gICAgbWV0aG9kczogRW10cHlcclxuICB9XHJcbj47XHJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlKCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcclxuICB7IHN0YXRlOiBFbXRweSwgc2lnbmFsczogRW10cHksIG1ldGhvZHM6IEVtdHB5IH0sXHJcbiAge1xyXG4gICAgc3RhdGU6IENhbGxTdGF0ZVNsaWNlLFxyXG4gICAgc2lnbmFsczogQ2FsbFN0YXRlU2lnbmFscyxcclxuICAgIG1ldGhvZHM6IEVtdHB5XHJcbiAgfVxyXG4+O1xyXG5leHBvcnQgZnVuY3Rpb24gd2l0aENhbGxTdGF0ZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihjb25maWc/OiB7XHJcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcclxufSk6IFNpZ25hbFN0b3JlRmVhdHVyZSB7XHJcbiAgY29uc3QgeyBjYWxsU3RhdGVLZXksIGVycm9yS2V5LCBsb2FkZWRLZXksIGxvYWRpbmdLZXkgfSA9XHJcbiAgICBnZXRDYWxsU3RhdGVLZXlzKGNvbmZpZyk7XHJcblxyXG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcbiAgICB3aXRoU3RhdGUoeyBbY2FsbFN0YXRlS2V5XTogJ2luaXQnIH0pLFxyXG4gICAgd2l0aENvbXB1dGVkKChzdGF0ZTogUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+PikgPT4ge1xyXG5cclxuICAgICAgY29uc3QgY2FsbFN0YXRlID0gc3RhdGVbY2FsbFN0YXRlS2V5XSBhcyBTaWduYWw8Q2FsbFN0YXRlPjtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgW2xvYWRpbmdLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRpbmcnKSxcclxuICAgICAgICBbbG9hZGVkS2V5XTogY29tcHV0ZWQoKCkgPT4gY2FsbFN0YXRlKCkgPT09ICdsb2FkZWQnKSxcclxuICAgICAgICBbZXJyb3JLZXldOiBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2ID0gY2FsbFN0YXRlKCk7XHJcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdi5lcnJvciA6IG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9hZGluZzxQcm9wIGV4dGVuZHMgc3RyaW5nPihcclxuICBwcm9wPzogUHJvcFxyXG4pOiBOYW1lZENhbGxTdGF0ZVNsaWNlPFByb3A+IHwgQ2FsbFN0YXRlU2xpY2Uge1xyXG4gIGlmIChwcm9wKSB7XHJcbiAgICByZXR1cm4geyBbYCR7cHJvcH1DYWxsU3RhdGVgXTogJ2xvYWRpbmcnIH0gYXMgTmFtZWRDYWxsU3RhdGVTbGljZTxQcm9wPjtcclxuICB9XHJcblxyXG4gIHJldHVybiB7IGNhbGxTdGF0ZTogJ2xvYWRpbmcnIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2FkZWQ8UHJvcCBleHRlbmRzIHN0cmluZz4oXHJcbiAgcHJvcD86IFByb3BcclxuKTogTmFtZWRDYWxsU3RhdGVTbGljZTxQcm9wPiB8IENhbGxTdGF0ZVNsaWNlIHtcclxuXHJcbiAgaWYgKHByb3ApIHtcclxuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGVkJyB9IGFzIE5hbWVkQ2FsbFN0YXRlU2xpY2U8UHJvcD47XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgcmV0dXJuIHsgY2FsbFN0YXRlOiAnbG9hZGVkJyB9O1xyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvcjxQcm9wIGV4dGVuZHMgc3RyaW5nPihcclxuICBlcnJvcjogdW5rbm93bixcclxuICBwcm9wPzogUHJvcCxcclxuICApOiBOYW1lZENhbGxTdGF0ZVNsaWNlPFByb3A+IHwgQ2FsbFN0YXRlU2xpY2Uge1xyXG5cclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcclxuXHJcbiAgICBpZiAoIWVycm9yKSB7XHJcbiAgICAgIGVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnbWVzc2FnZScgaW4gZXJyb3IpIHtcclxuICAgICAgZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZyhlcnJvcik7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICBpZiAocHJvcCkge1xyXG4gICAgICByZXR1cm4geyBbYCR7cHJvcH1DYWxsU3RhdGVgXTogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSBhcyBOYW1lZENhbGxTdGF0ZVNsaWNlPFByb3A+O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGNhbGxTdGF0ZTogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfTtcclxuICAgIH1cclxufVxyXG4iXX0=
|