@angular-architects/ngrx-toolkit 0.0.4 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +208 -24
- package/esm2022/index.mjs +4 -1
- package/esm2022/lib/redux-connector/create-redux.mjs +41 -0
- package/esm2022/lib/redux-connector/index.mjs +2 -0
- package/esm2022/lib/redux-connector/model.mjs +2 -0
- package/esm2022/lib/redux-connector/rxjs-interop/index.mjs +2 -0
- package/esm2022/lib/redux-connector/rxjs-interop/redux-method.mjs +22 -0
- package/esm2022/lib/redux-connector/signal-redux-store.mjs +43 -0
- package/esm2022/lib/redux-connector/util.mjs +13 -0
- package/esm2022/lib/with-call-state.mjs +1 -1
- package/esm2022/lib/with-redux.mjs +2 -2
- package/esm2022/lib/with-storage-sync.mjs +56 -0
- package/fesm2022/angular-architects-ngrx-toolkit.mjs +182 -19
- package/fesm2022/angular-architects-ngrx-toolkit.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/redux-connector/create-redux.d.ts +13 -0
- package/lib/redux-connector/index.d.ts +1 -0
- package/lib/redux-connector/model.d.ts +36 -0
- package/lib/redux-connector/rxjs-interop/index.d.ts +1 -0
- package/lib/redux-connector/rxjs-interop/redux-method.d.ts +11 -0
- package/lib/redux-connector/signal-redux-store.d.ts +11 -0
- package/lib/redux-connector/util.d.ts +5 -0
- package/lib/with-call-state.d.ts +4 -3
- package/lib/with-redux.d.ts +2 -2
- package/lib/with-storage-sync.d.ts +58 -0
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# NgRx Toolkit
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/%40angular-architects%2Fngrx-toolkit)
|
|
4
|
+
|
|
3
5
|
<p align="center">
|
|
4
6
|
<img src="https://raw.githubusercontent.com/angular-architects/ngrx-toolkit/main/logo.png" width="320" style="text-align: center">
|
|
5
7
|
</p>
|
|
@@ -8,6 +10,7 @@ NgRx Toolkit is an extension to the NgRx Signals Store. **It is still in beta**
|
|
|
8
10
|
|
|
9
11
|
- Devtools: Integration into Redux Devtools
|
|
10
12
|
- Redux: Possibility to use the Redux Pattern (Reducer, Actions, Effects)
|
|
13
|
+
- Redux Connector: Map NgRx Store Actions to a present Signal Store
|
|
11
14
|
|
|
12
15
|
To install it, run
|
|
13
16
|
|
|
@@ -15,6 +18,20 @@ To install it, run
|
|
|
15
18
|
npm i @angular-architects/ngrx-toolkit
|
|
16
19
|
```
|
|
17
20
|
|
|
21
|
+
|
|
22
|
+
- [NgRx Toolkit](#ngrx-toolkit)
|
|
23
|
+
- [Devtools: `withDevtools()`](#devtools-withdevtools)
|
|
24
|
+
- [Redux: `withRedux()`](#redux-withredux)
|
|
25
|
+
- [DataService `withDataService()`](#dataservice-withdataservice)
|
|
26
|
+
- [DataService with Dynamic Properties](#dataservice-with-dynamic-properties)
|
|
27
|
+
- [Redux Connector for the NgRx Signal Store `createReduxState()`](#redux-connector-for-the-ngrx-signal-store-createreduxstate)
|
|
28
|
+
- [Use a present Signal Store](#use-a-present-signal-store)
|
|
29
|
+
- [Use well-known NgRx Store Actions](#use-well-known-ngrx-store-actions)
|
|
30
|
+
- [Map Actions to Methods](#map-actions-to-methods)
|
|
31
|
+
- [Register an Angular Dependency Injection Provider](#register-an-angular-dependency-injection-provider)
|
|
32
|
+
- [Use the Store in your Component](#use-the-store-in-your-component)
|
|
33
|
+
|
|
34
|
+
|
|
18
35
|
## Devtools: `withDevtools()`
|
|
19
36
|
|
|
20
37
|
This extension is very easy to use. Just add it to a `signalStore`. Example:
|
|
@@ -23,7 +40,7 @@ This extension is very easy to use. Just add it to a `signalStore`. Example:
|
|
|
23
40
|
export const FlightStore = signalStore(
|
|
24
41
|
{ providedIn: 'root' },
|
|
25
42
|
withDevtools('flights'), // <-- add this
|
|
26
|
-
withState({ flights: [] as Flight[] })
|
|
43
|
+
withState({ flights: [] as Flight[] })
|
|
27
44
|
// ...
|
|
28
45
|
);
|
|
29
46
|
```
|
|
@@ -59,18 +76,15 @@ export const FlightStore = signalStore(
|
|
|
59
76
|
return {
|
|
60
77
|
load$: create(actions.load).pipe(
|
|
61
78
|
switchMap(({ from, to }) =>
|
|
62
|
-
httpClient.get<Flight[]>(
|
|
63
|
-
'
|
|
64
|
-
|
|
65
|
-
params: new HttpParams().set('from', from).set('to', to),
|
|
66
|
-
},
|
|
67
|
-
),
|
|
79
|
+
httpClient.get<Flight[]>('https://demo.angulararchitects.io/api/flight', {
|
|
80
|
+
params: new HttpParams().set('from', from).set('to', to),
|
|
81
|
+
})
|
|
68
82
|
),
|
|
69
|
-
tap((flights) => actions.loaded({ flights }))
|
|
83
|
+
tap((flights) => actions.loaded({ flights }))
|
|
70
84
|
),
|
|
71
85
|
};
|
|
72
86
|
},
|
|
73
|
-
})
|
|
87
|
+
})
|
|
74
88
|
);
|
|
75
89
|
```
|
|
76
90
|
|
|
@@ -86,18 +100,18 @@ export const SimpleFlightBookingStore = signalStore(
|
|
|
86
100
|
withCallState(),
|
|
87
101
|
withEntities<Flight>(),
|
|
88
102
|
withDataService({
|
|
89
|
-
dataServiceType: FlightService,
|
|
103
|
+
dataServiceType: FlightService,
|
|
90
104
|
filter: { from: 'Paris', to: 'New York' },
|
|
91
105
|
}),
|
|
92
|
-
withUndoRedo()
|
|
106
|
+
withUndoRedo()
|
|
93
107
|
);
|
|
94
108
|
```
|
|
95
109
|
|
|
96
|
-
The features
|
|
110
|
+
The features `withCallState` and `withUndoRedo` are optional, but when present, they enrich each other.
|
|
97
111
|
|
|
98
|
-
The Data Service needs to implement the
|
|
112
|
+
The Data Service needs to implement the `DataService` interface:
|
|
99
113
|
|
|
100
|
-
```typescript
|
|
114
|
+
```typescript
|
|
101
115
|
@Injectable({
|
|
102
116
|
providedIn: 'root'
|
|
103
117
|
})
|
|
@@ -155,30 +169,30 @@ export class FlightSearchSimpleComponent {
|
|
|
155
169
|
|
|
156
170
|
## DataService with Dynamic Properties
|
|
157
171
|
|
|
158
|
-
To avoid naming conflicts, the properties set up by
|
|
172
|
+
To avoid naming conflicts, the properties set up by `withDataService` and the connected features can be configured in a typesafe way:
|
|
159
173
|
|
|
160
174
|
```typescript
|
|
161
175
|
export const FlightBookingStore = signalStore(
|
|
162
176
|
{ providedIn: 'root' },
|
|
163
177
|
withCallState({
|
|
164
|
-
collection: 'flight'
|
|
178
|
+
collection: 'flight',
|
|
165
179
|
}),
|
|
166
|
-
withEntities({
|
|
167
|
-
entity: type<Flight>(),
|
|
168
|
-
collection: 'flight'
|
|
180
|
+
withEntities({
|
|
181
|
+
entity: type<Flight>(),
|
|
182
|
+
collection: 'flight',
|
|
169
183
|
}),
|
|
170
184
|
withDataService({
|
|
171
|
-
dataServiceType: FlightService,
|
|
185
|
+
dataServiceType: FlightService,
|
|
172
186
|
filter: { from: 'Graz', to: 'Hamburg' },
|
|
173
|
-
collection: 'flight'
|
|
187
|
+
collection: 'flight',
|
|
174
188
|
}),
|
|
175
189
|
withUndoRedo({
|
|
176
190
|
collections: ['flight'],
|
|
177
|
-
})
|
|
191
|
+
})
|
|
178
192
|
);
|
|
179
193
|
```
|
|
180
194
|
|
|
181
|
-
This setup makes them use
|
|
195
|
+
This setup makes them use `flight` as part of the used property names. As these implementations respect the Type Script type system, the compiler will make sure these properties are used in a typesafe way:
|
|
182
196
|
|
|
183
197
|
```typescript
|
|
184
198
|
@Component(...)
|
|
@@ -217,4 +231,174 @@ export class FlightSearchDynamicComponent {
|
|
|
217
231
|
}
|
|
218
232
|
|
|
219
233
|
}
|
|
220
|
-
```
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Storage Sync `withStorageSync()`
|
|
237
|
+
|
|
238
|
+
`withStorageSync` adds automatic or manual synchronization with Web Storage (`localstorage`/`sessionstorage`).
|
|
239
|
+
|
|
240
|
+
> [!WARNING]
|
|
241
|
+
> As Web Storage only works in browser environments it will fallback to a stub implementation on server environments.
|
|
242
|
+
|
|
243
|
+
Example:
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
const SyncStore = signalStore(
|
|
247
|
+
withStorageSync<User>({
|
|
248
|
+
key: 'synced', // key used when writing to/reading from storage
|
|
249
|
+
autoSync: false, // read from storage on init and write on state changes - `true` by default
|
|
250
|
+
select: (state: User) => Partial<User>, // projection to keep specific slices in sync
|
|
251
|
+
parse: (stateString: string) => State, // custom parsing from storage - `JSON.parse` by default
|
|
252
|
+
stringify: (state: User) => string, // custom stringification - `JSON.stringify` by default
|
|
253
|
+
storage: () => sessionstorage, // factory to select storage to sync with
|
|
254
|
+
})
|
|
255
|
+
);
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
```ts
|
|
259
|
+
@Component(...)
|
|
260
|
+
public class SyncedStoreComponent {
|
|
261
|
+
private syncStore = inject(SyncStore);
|
|
262
|
+
|
|
263
|
+
updateFromStorage(): void {
|
|
264
|
+
this.syncStore.readFromStorage(); // reads the stored item from storage and patches the state
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
updateStorage(): void {
|
|
268
|
+
this.syncStore.writeToStorage(); // writes the current state to storage
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
clearStorage(): void {
|
|
272
|
+
this.syncStore.clearStorage(); // clears the stored item in storage
|
|
273
|
+
|
|
274
|
+
## Redux Connector for the NgRx Signal Store `createReduxState()`
|
|
275
|
+
|
|
276
|
+
The Redux Connector turns any `signalStore()` into a Gobal State Management Slice following the Redux pattern.
|
|
277
|
+
|
|
278
|
+
It supports:
|
|
279
|
+
|
|
280
|
+
✅ Well-known NgRx Store Actions \
|
|
281
|
+
✅ Global Action `dispatch()` \
|
|
282
|
+
✅ Angular Lazy Loading \
|
|
283
|
+
✅ Auto-generated `provideNamedStore()` & `injectNamedStore()` Functions \
|
|
284
|
+
✅ Global Action to Store Method Mappers \
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
### Use a present Signal Store
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
export const FlightStore = signalStore(
|
|
291
|
+
// State
|
|
292
|
+
withEntities({ entity: type<Flight>(), collection: 'flight' }),
|
|
293
|
+
withEntities({ entity: type<number>(), collection: 'hide' }),
|
|
294
|
+
// Selectors
|
|
295
|
+
withComputed(({ flightEntities, hideEntities }) => ({
|
|
296
|
+
filteredFlights: computed(() => flightEntities()
|
|
297
|
+
.filter(flight => !hideEntities().includes(flight.id))),
|
|
298
|
+
flightCount: computed(() => flightEntities().length),
|
|
299
|
+
})),
|
|
300
|
+
// Updater
|
|
301
|
+
withMethods(store => ({
|
|
302
|
+
setFlights: (state: { flights: Flight[] }) => patchState(store,
|
|
303
|
+
setAllEntities(state.flights, { collection: 'flight' })),
|
|
304
|
+
updateFlight: (state: { flight: Flight }) => patchState(store,
|
|
305
|
+
updateEntity({ id: state.flight.id, changes: state.flight }, { collection: 'flight' })),
|
|
306
|
+
clearFlights: () => patchState(store,
|
|
307
|
+
removeAllEntities({ collection: 'flight' })),
|
|
308
|
+
})),
|
|
309
|
+
// Effects
|
|
310
|
+
withMethods((store, flightService = inject(FlightService)) => ({
|
|
311
|
+
loadFlights: reduxMethod<FlightFilter, { flights: Flight[] }>(pipe(
|
|
312
|
+
switchMap(filter => from(
|
|
313
|
+
flightService.load({ from: filter.from, to: filter.to })
|
|
314
|
+
)),
|
|
315
|
+
map(flights => ({ flights })),
|
|
316
|
+
), store.setFlights),
|
|
317
|
+
})),
|
|
318
|
+
);
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Use well-known NgRx Store Actions
|
|
322
|
+
|
|
323
|
+
```typescript
|
|
324
|
+
export const ticketActions = createActionGroup({
|
|
325
|
+
source: 'tickets',
|
|
326
|
+
events: {
|
|
327
|
+
'flights load': props<FlightFilter>(),
|
|
328
|
+
'flights loaded': props<{ flights: Flight[] }>(),
|
|
329
|
+
'flights loaded by passenger': props<{ flights: Flight[] }>(),
|
|
330
|
+
'flight update': props<{ flight: Flight }>(),
|
|
331
|
+
'flights clear': emptyProps()
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Map Actions to Methods
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
export const { provideFlightStore, injectFlightStore } =
|
|
340
|
+
createReduxState('flight', FlightStore, store => withActionMappers(
|
|
341
|
+
mapAction(
|
|
342
|
+
// Filtered Action
|
|
343
|
+
ticketActions.flightsLoad,
|
|
344
|
+
// Side-Effect
|
|
345
|
+
store.loadFlights,
|
|
346
|
+
// Result Action
|
|
347
|
+
ticketActions.flightsLoaded),
|
|
348
|
+
mapAction(
|
|
349
|
+
// Filtered Actions
|
|
350
|
+
ticketActions.flightsLoaded, ticketActions.flightsLoadedByPassenger,
|
|
351
|
+
// State Updater Method (like Reducers)
|
|
352
|
+
store.setFlights
|
|
353
|
+
),
|
|
354
|
+
mapAction(ticketActions.flightUpdate, store.updateFlight),
|
|
355
|
+
mapAction(ticketActions.flightsClear, store.clearFlights),
|
|
356
|
+
)
|
|
357
|
+
);
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Register an Angular Dependency Injection Provider
|
|
361
|
+
|
|
362
|
+
```typescript
|
|
363
|
+
export const appRoutes: Route[] = [
|
|
364
|
+
{
|
|
365
|
+
path: 'flight-search-redux-connector',
|
|
366
|
+
providers: [provideFlightStore()],
|
|
367
|
+
component: FlightSearchReducConnectorComponent
|
|
368
|
+
},
|
|
369
|
+
];
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Use the Store in your Component
|
|
373
|
+
|
|
374
|
+
```typescript
|
|
375
|
+
@Component({
|
|
376
|
+
standalone: true,
|
|
377
|
+
imports: [
|
|
378
|
+
JsonPipe,
|
|
379
|
+
RouterLink,
|
|
380
|
+
FormsModule,
|
|
381
|
+
FlightCardComponent
|
|
382
|
+
],
|
|
383
|
+
selector: 'demo-flight-search-redux-connector',
|
|
384
|
+
templateUrl: './flight-search.component.html',
|
|
385
|
+
})
|
|
386
|
+
export class FlightSearchReducConnectorComponent {
|
|
387
|
+
private store = injectFlightStore();
|
|
388
|
+
|
|
389
|
+
protected flights = this.store.flightEntities;
|
|
390
|
+
|
|
391
|
+
protected search() {
|
|
392
|
+
this.store.dispatch(
|
|
393
|
+
ticketActions.flightsLoad({
|
|
394
|
+
from: this.localState.filter.from(),
|
|
395
|
+
to: this.localState.filter.to()
|
|
396
|
+
})
|
|
397
|
+
);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
protected reset(): void {
|
|
401
|
+
this.store.dispatch(ticketActions.flightsClear());
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
```
|
package/esm2022/index.mjs
CHANGED
|
@@ -3,4 +3,7 @@ export * from './lib/with-redux';
|
|
|
3
3
|
export * from './lib/with-call-state';
|
|
4
4
|
export * from './lib/with-undo-redo';
|
|
5
5
|
export * from './lib/with-data-service';
|
|
6
|
-
|
|
6
|
+
export { withStorageSync } from './lib/with-storage-sync';
|
|
7
|
+
export * from './lib/redux-connector';
|
|
8
|
+
export * from './lib/redux-connector/rxjs-interop';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB3aXRoRGV2dG9vbHMsIHBhdGNoU3RhdGUsIEFjdGlvbiB9IGZyb20gJy4vbGliL3dpdGgtZGV2dG9vbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC1yZWR1eCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtY2FsbC1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLXVuZG8tcmVkbyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLWRhdGEtc2VydmljZSdcbmV4cG9ydCB7IHdpdGhTdG9yYWdlU3luYywgU3luY0NvbmZpZyB9IGZyb20gJy4vbGliL3dpdGgtc3RvcmFnZS1zeW5jJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlZHV4LWNvbm5lY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1eC1jb25uZWN0b3Ivcnhqcy1pbnRlcm9wJzsiXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlZHV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9yZWR1eC1jb25uZWN0b3IvY3JlYXRlLXJlZHV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFxQnJELE1BQU0sVUFBVSxTQUFTLENBR3ZCLEdBQUcsSUFJRjtJQUVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQTJELENBQUM7SUFDdkYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBa0UsQ0FBQztJQUU3RixJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLFdBQVcsR0FBRyxZQUFZLElBQUksV0FBVyxDQUFDO1FBQzFDLFlBQVksR0FBRyxTQUFTLENBQUM7S0FDMUI7SUFFRCxNQUFNLEtBQUssR0FBSSxJQUE0QixDQUFDLEdBQUcsQ0FDN0MsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2lCLENBQUM7SUFFN0MsT0FBTztRQUNMLEtBQUs7UUFDTCxXQUFXO1FBQ1gsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixHQUFHLE9BQWlEO0lBRXBELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBSTlCLFNBQW9CLEVBQ3BCLFdBQWtCLEVBQ2xCLGlCQUEyRjtJQUUzRixNQUFNLGNBQWMsR0FBSSxXQUFtQixFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssTUFBTSxDQUFDO0lBQzFFLE9BQU87UUFDTCxDQUFDLFVBQVUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsd0JBQXdCLENBQUM7WUFDbkcsY0FBYyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDaEM7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLENBQ1YsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQzNDLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQzNCLEVBQUUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1IsSUFBSSxvQkFBb0IsRUFBRTt3QkFDeEIsb0RBQW9EO3FCQUNyRDtvQkFDRCxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FDbEMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQ3pCLENBQUM7Z0JBQ0osQ0FBQzthQUNGO1NBQ0YsQ0FBQztRQUNGLENBQUMsU0FBUyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQzFELE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDbkIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxDQUNwQztLQUNvQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgQWN0aW9uVHlwZSB9IGZyb20gXCJAbmdyeC9zdG9yZS9zcmMvbW9kZWxzXCI7XG5pbXBvcnQgeyBDcmVhdGVSZWR1eFN0YXRlLCBFeHRyYWN0QWN0aW9uVHlwZXMsIE1hcHBlclR5cGVzLCBTdG9yZSB9IGZyb20gXCIuL21vZGVsXCI7XG5pbXBvcnQgeyBTaWduYWxSZWR1eFN0b3JlLCBpbmplY3RSZWR1eERpc3BhdGNoIH0gZnJvbSBcIi4vc2lnbmFsLXJlZHV4LXN0b3JlXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplLCBpc0FjdGlvbkNyZWF0b3IgfSBmcm9tIFwiLi91dGlsXCI7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcEFjdGlvbjxcbiAgQ3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW11cbj4oXG4gIC4uLmFyZ3M6IFtcbiAgICAuLi5jcmVhdG9yczogQ3JlYXRvcnMsXG4gICAgc3RvcmVNZXRob2Q6IChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4pID0+IHVua25vd25cbiAgXVxuKTogTWFwcGVyVHlwZXM8Q3JlYXRvcnM+O1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEFjdGlvbjxcbiAgQ3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW10sXG4gIFRcbj4oXG4gIC4uLmFyZ3M6IFtcbiAgICAuLi5jcmVhdG9yczogQ3JlYXRvcnMsXG4gICAgc3RvcmVNZXRob2Q6IChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4sIHJlc3VsdE1ldGhvZDogKGlucHV0OiBUKSA9PiB1bmtub3duKSA9PiB1bmtub3duLFxuICAgIHJlc3VsdE1ldGhvZDogKGlucHV0OiBUKSA9PiB1bmtub3duXG4gIF1cbik6IE1hcHBlclR5cGVzPENyZWF0b3JzPjtcbmV4cG9ydCBmdW5jdGlvbiBtYXBBY3Rpb248XG4gIENyZWF0b3JzIGV4dGVuZHMgcmVhZG9ubHkgQWN0aW9uQ3JlYXRvcltdXG4+KFxuICAuLi5hcmdzOiBbXG4gICAgLi4uY3JlYXRvcnM6IENyZWF0b3JzLFxuICAgIHN0b3JlTWV0aG9kOiAoYWN0aW9uOiBBY3Rpb25UeXBlPENyZWF0b3JzW251bWJlcl0+KSA9PiB1bmtub3duLFxuICAgIHJlc3VsdE1ldGhvZD86IChpbnB1dDogdW5rbm93bikgPT4gdW5rbm93blxuICBdXG4pOiBNYXBwZXJUeXBlczxDcmVhdG9ycz4ge1xuICBsZXQgcmVzdWx0TWV0aG9kID0gYXJncy5wb3AoKSBhcyB1bmtub3duIGFzICgoaW5wdXQ6IHVua25vd24pID0+IHVua25vd24gKSB8IHVuZGVmaW5lZDtcbiAgbGV0IHN0b3JlTWV0aG9kID0gYXJncy5wb3AoKSBhcyB1bmtub3duIGFzIChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4pID0+IHVua25vd247XG5cbiAgaWYgKGlzQWN0aW9uQ3JlYXRvcihzdG9yZU1ldGhvZCkpIHtcbiAgICBhcmdzLnB1c2goc3RvcmVNZXRob2QpO1xuICAgIHN0b3JlTWV0aG9kID0gcmVzdWx0TWV0aG9kIHx8IHN0b3JlTWV0aG9kO1xuICAgIHJlc3VsdE1ldGhvZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVzID0gKGFyZ3MgYXMgdW5rbm93biBhcyBDcmVhdG9ycykubWFwKFxuICAgIChjcmVhdG9yKSA9PiBjcmVhdG9yLnR5cGVcbiAgKSBhcyB1bmtub3duIGFzIEV4dHJhY3RBY3Rpb25UeXBlczxDcmVhdG9ycz47XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlcyxcbiAgICBzdG9yZU1ldGhvZCxcbiAgICByZXN1bHRNZXRob2RcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBY3Rpb25NYXBwZXJzKFxuICAuLi5tYXBwZXJzOiBNYXBwZXJUeXBlczxBY3Rpb25DcmVhdG9yPGFueSwgYW55PltdPltdXG4pOiBNYXBwZXJUeXBlczxBY3Rpb25DcmVhdG9yPGFueSwgYW55PltdPltdIHtcbiAgcmV0dXJuIG1hcHBlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWR1eFN0YXRlPFxuICBTdG9yZU5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFNUT1JFIGV4dGVuZHMgU3RvcmVcbj4oXG4gIHN0b3JlTmFtZTogU3RvcmVOYW1lLFxuICBzaWduYWxTdG9yZTogU1RPUkUsXG4gIHdpdGhBY3Rpb25NYXBwZXJzOiAoc3RvcmU6IEluc3RhbmNlVHlwZTxTVE9SRT4pID0+IE1hcHBlclR5cGVzPEFjdGlvbkNyZWF0b3I8YW55LCBhbnk+W10+W10sXG4pOiBDcmVhdGVSZWR1eFN0YXRlPFN0b3JlTmFtZSwgU1RPUkU+IHtcbiAgY29uc3QgaXNSb290UHJvdmlkZXIgPSAoc2lnbmFsU3RvcmUgYXMgYW55KT8uybVwcm92Py5wcm92aWRlZEluID09PSAncm9vdCc7XG4gIHJldHVybiB7XG4gICAgW2Bwcm92aWRlJHtjYXBpdGFsaXplKHN0b3JlTmFtZSl9U3RvcmVgXTogKGNvbm5lY3RSZWR1eERldnRvb2xzID0gZmFsc2UpID0+IG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgICBpc1Jvb3RQcm92aWRlcj8gW10gOiBzaWduYWxTdG9yZSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgICAgc2lnbmFsUmVkdXhTdG9yZSA9IGluamVjdChTaWduYWxSZWR1eFN0b3JlKSxcbiAgICAgICAgICBzdG9yZSA9IGluamVjdChzaWduYWxTdG9yZSlcbiAgICAgICAgKSA9PiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbm5lY3RSZWR1eERldnRvb2xzKSB7XG4gICAgICAgICAgICAvLyBhZGRTdG9yZVRvUmVkdXhEZXZ0b29scyhzdG9yZSwgc3RvcmVOYW1lLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZ25hbFJlZHV4U3RvcmUuY29ubmVjdEZlYXR1cmVTdG9yZShcbiAgICAgICAgICAgIHdpdGhBY3Rpb25NYXBwZXJzKHN0b3JlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdKSxcbiAgICBbYGluamVjdCR7Y2FwaXRhbGl6ZShzdG9yZU5hbWUpfVN0b3JlYF06ICgpID0+IE9iamVjdC5hc3NpZ24oXG4gICAgICBpbmplY3Qoc2lnbmFsU3RvcmUpLFxuICAgICAgeyBkaXNwYXRjaDogaW5qZWN0UmVkdXhEaXNwYXRjaCgpIH1cbiAgICApXG4gIH0gYXMgQ3JlYXRlUmVkdXhTdGF0ZTxTdG9yZU5hbWUsIFNUT1JFPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { createReduxState, mapAction, withActionMappers } from './create-redux';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3JlZHV4LWNvbm5lY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCB7IGNyZWF0ZVJlZHV4U3RhdGUsIG1hcEFjdGlvbiwgd2l0aEFjdGlvbk1hcHBlcnMgfSBmcm9tICcuL2NyZWF0ZS1yZWR1eCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3JlZHV4LWNvbm5lY3Rvci9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIFNpZ25hbCwgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEZWVwU2lnbmFsIH0gZnJvbSBcIkBuZ3J4L3NpZ25hbHMvc3JjL2RlZXAtc2lnbmFsXCI7XG5pbXBvcnQgeyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgfSBmcm9tIFwiQG5ncngvc2lnbmFscy9zcmMvc2lnbmFsLXN0b3JlLW1vZGVsc1wiO1xuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tIFwiQG5ncngvc2lnbmFscy9zcmMvc3RhdGUtc2lnbmFsXCI7XG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvbkNyZWF0b3IsIEFjdGlvblR5cGUsIFByZXR0aWZ5IH0gZnJvbSBcIkBuZ3J4L3N0b3JlL3NyYy9tb2RlbHNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFVuc3Vic2NyaWJhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuXG5leHBvcnQgdHlwZSBJbmNsdWRlUHJvcFR5cGU8VCwgViwgV2l0aE5ldmVycyA9XG4gIHsgW0sgaW4ga2V5b2YgVF06IEV4Y2x1ZGU8VFtLXSwgdW5kZWZpbmVkPiBleHRlbmRzIFZcbiAgICA/IFRbS10gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgPyBJbmNsdWRlUHJvcFR5cGU8VFtLXSwgVj5cbiAgICAgIDogVFtLXVxuICAgIDogbmV2ZXJcbiAgfT4gPSBQcmV0dGlmeTxcbiAgICBQaWNrPFxuICAgICAgV2l0aE5ldmVycyxcbiAgICAgIHsgW0sgaW4ga2V5b2YgV2l0aE5ldmVyc106IFdpdGhOZXZlcnNbS10gZXh0ZW5kcyBuZXZlclxuICAgICAgICA/IG5ldmVyXG4gICAgICAgIDogSyBleHRlbmRzIHN0cmluZ1xuICAgICAgICAgID8gS1xuICAgICAgICAgIDogbmV2ZXJcbiAgICAgIH1ba2V5b2YgV2l0aE5ldmVyc11cbiAgICA+XG4gID47XG5cbmV4cG9ydCB0eXBlIFN0b3JlID0gVHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIFN0YXRlU2lnbmFsPFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdFsnc3RhdGUnXT4+O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSZWR1eFN0YXRlPFxuICBTdG9yZU5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFNUT1JFIGV4dGVuZHMgU3RvcmVcbj4gPSB7XG4gIFtLIGluIFN0b3JlTmFtZSBhcyBgcHJvdmlkZSR7Q2FwaXRhbGl6ZTxLPn1TdG9yZWBdOiAoY29ubmVjdFJlZHV4RGV2dG9vbHM/OiBib29sZWFuKSA9PiBFbnZpcm9ubWVudFByb3ZpZGVyc1xufSAmIHtcbiAgW0sgaW4gU3RvcmVOYW1lIGFzIGBpbmplY3Qke0NhcGl0YWxpemU8Sz59U3RvcmVgXTogKCkgPT4gSW5qZWN0YWJsZVJlZHV4U2xpY2U8U1RPUkU+XG59O1xuXG5leHBvcnQgdHlwZSBTZWxlY3RvcnM8U1RPUkUgZXh0ZW5kcyBTdG9yZT4gPSBJbmNsdWRlUHJvcFR5cGU8SW5zdGFuY2VUeXBlPFNUT1JFPiwgU2lnbmFsPHVua25vd24+IHwgRGVlcFNpZ25hbDx1bmtub3duPj47XG5leHBvcnQgdHlwZSBEaXNwYXRjaCA9IHsgZGlzcGF0Y2g6IChpbnB1dDogQWN0aW9uIHwgT2JzZXJ2YWJsZTxBY3Rpb24+IHwgU2lnbmFsPEFjdGlvbj4pID0+IFVuc3Vic2NyaWJhYmxlIH07XG5leHBvcnQgdHlwZSBJbmplY3RhYmxlUmVkdXhTbGljZTxTVE9SRSBleHRlbmRzIFN0b3JlPiA9IFNlbGVjdG9yczxTVE9SRT4gJiBEaXNwYXRjaDtcblxuZXhwb3J0IHR5cGUgRXh0cmFjdEFjdGlvblR5cGVzPENyZWF0b3JzIGV4dGVuZHMgcmVhZG9ubHkgQWN0aW9uQ3JlYXRvcltdPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBDcmVhdG9yc106IENyZWF0b3JzW0tleV0gZXh0ZW5kcyBBY3Rpb25DcmVhdG9yPGluZmVyIFQ+XG4gICAgPyBUXG4gICAgOiBuZXZlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uTWV0aG9kPFQsIFYgZXh0ZW5kcyBBY3Rpb24gPSBBY3Rpb24+IHtcbiAgKGFjdGlvbjogVik6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVNZXRob2Q8XG4gIENyZWF0b3JzIGV4dGVuZHMgcmVhZG9ubHkgQWN0aW9uQ3JlYXRvcltdLFxuICBSZXN1bHRTdGF0ZSA9IHVua25vd24sXG4+IHtcbiAgKFxuICAgIGFjdGlvbjogQWN0aW9uVHlwZTxDcmVhdG9yc1tudW1iZXJdPlxuICApOiBSZXN1bHRTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBwZXJUeXBlczxcbiAgQ3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW11cbj4ge1xuICB0eXBlczogRXh0cmFjdEFjdGlvblR5cGVzPENyZWF0b3JzPixcbiAgc3RvcmVNZXRob2Q6IFN0b3JlTWV0aG9kPENyZWF0b3JzPixcbiAgcmVzdWx0TWV0aG9kPzogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93blxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { reduxMethod } from './redux-method';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3JlZHV4LWNvbm5lY3Rvci9yeGpzLWludGVyb3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgeyByZWR1eE1ldGhvZCB9IGZyb20gJy4vcmVkdXgtbWV0aG9kJztcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9yZWR1eC1jb25uZWN0b3Ivcnhqcy1pbnRlcm9wL3JlZHV4LW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUE4QixHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBcUI3RCxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFrRSxFQUNsRSxvQkFFQyxFQUNELE1BRUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsSUFBSSxPQUFPLG9CQUFvQixLQUFLLFVBQVUsRUFBRTtRQUM5QyxJQUFJLGNBQThCLENBQUM7UUFDbkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUNyQixLQUEyQixFQUMzQixZQUFZLEdBQUcsb0JBQW9CLEVBQ25DLEVBQUU7WUFFRixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBUSxJQUFJLENBQzdDLFNBQVMsRUFDVCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQ2xCLEVBQUU7Z0JBQ0QsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxJQUFJLFFBQVE7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsY0FBYyxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFFNUUsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUErQyxDQUFDO1FBRWpELGFBQWEsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRWhFLE9BQU8sYUFBYSxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxRQUFRLENBQVEsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBTaWduYWwsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyByeE1ldGhvZCB9IGZyb20gXCJAbmdyeC9zaWduYWxzL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgVW5zdWJzY3JpYmFibGUsIG1hcCwgcGlwZSB9IGZyb20gXCJyeGpzXCI7XG5cblxudHlwZSBSeE1ldGhvZElucHV0PElucHV0PiA9IElucHV0IHwgT2JzZXJ2YWJsZTxJbnB1dD4gfCBTaWduYWw8SW5wdXQ+O1xuXG50eXBlIFJ4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCA9IElucHV0LCBNZXRob2RSZXN1bHQgPSB1bmtub3duPiA9ICgoXG4gIGlucHV0OiBSeE1ldGhvZElucHV0PElucHV0PixcbiAgcmVzdWx0TWV0aG9kOiAoaW5wdXQ6IE1ldGhvZElucHV0KSA9PiBNZXRob2RSZXN1bHRcbikgPT4gVW5zdWJzY3JpYmFibGUpICYgVW5zdWJzY3JpYmFibGU7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1eE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQgPSBJbnB1dD4oXG4gIGdlbmVyYXRvcjogKHNvdXJjZSQ6IE9ic2VydmFibGU8SW5wdXQ+KSA9PiBPYnNlcnZhYmxlPE1ldGhvZElucHV0PixcbiAgY29uZmlnPzogeyBpbmplY3Rvcj86IEluamVjdG9yIH1cbik6IFJ4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dD47XG5leHBvcnQgZnVuY3Rpb24gcmVkdXhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0ID0gSW5wdXQsIE1ldGhvZFJlc3VsdCA9IHVua25vd24+KFxuICBnZW5lcmF0b3I6IChzb3VyY2UkOiBPYnNlcnZhYmxlPElucHV0PikgPT4gT2JzZXJ2YWJsZTxNZXRob2RJbnB1dD4sXG4gIHJlc3VsdE1ldGhvZDogKGlucHV0OiBNZXRob2RJbnB1dCkgPT4gTWV0aG9kUmVzdWx0LFxuICBjb25maWc/OiB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvclxuICB9XG4pOiBSeE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQsIE1ldGhvZFJlc3VsdD47XG5leHBvcnQgZnVuY3Rpb24gcmVkdXhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0ID0gSW5wdXQsIE1ldGhvZFJlc3VsdCA9IHVua25vd24+KFxuICBnZW5lcmF0b3I6IChzb3VyY2UkOiBPYnNlcnZhYmxlPElucHV0PikgPT4gT2JzZXJ2YWJsZTxNZXRob2RJbnB1dD4sXG4gIHJlc3VsdE1ldGhvZE9yQ29uZmlnPzogKChpbnB1dDogTWV0aG9kSW5wdXQpID0+IE1ldGhvZFJlc3VsdCkgfCB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvclxuICB9LFxuICBjb25maWc/OiB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvclxuICB9XG4pOiBSeE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQsIE1ldGhvZFJlc3VsdD4gIHtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGlmICh0eXBlb2YgcmVzdWx0TWV0aG9kT3JDb25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsZXQgdW5zdWJzY3JpYmFibGU6IFVuc3Vic2NyaWJhYmxlO1xuICAgIGNvbnN0IGlucHV0UmVzdWx0Rm4gPSAoKFxuICAgICAgaW5wdXQ6IFJ4TWV0aG9kSW5wdXQ8SW5wdXQ+LFxuICAgICAgcmVzdWx0TWV0aG9kID0gcmVzdWx0TWV0aG9kT3JDb25maWdcbiAgICApID0+IHtcblxuICAgICAgY29uc3QgcnhNZXRob2RXaXRoUmVzdWx0ID0gcnhNZXRob2Q8SW5wdXQ+KHBpcGUoXG4gICAgICAgIGdlbmVyYXRvcixcbiAgICAgICAgbWFwKHJlc3VsdE1ldGhvZClcbiAgICAgICksIHtcbiAgICAgICAgLi4uKGNvbmZpZyB8fCB7fSksXG4gICAgICAgIGluamVjdG9yOiBjb25maWc/LmluamVjdG9yIHx8IGluamVjdG9yXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJ4V2l0aElucHV0ID0gcnhNZXRob2RXaXRoUmVzdWx0KGlucHV0KTtcbiAgICAgIHVuc3Vic2NyaWJhYmxlID0geyB1bnN1YnNjcmliZTogcnhXaXRoSW5wdXQudW5zdWJzY3JpYmUuYmluZChyeFdpdGhJbnB1dCkgfTtcblxuICAgICAgcmV0dXJuIHJ4V2l0aElucHV0O1xuICAgIH0pIGFzIFJ4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCwgTWV0aG9kUmVzdWx0PjtcblxuICAgIGlucHV0UmVzdWx0Rm4udW5zdWJzY3JpYmUgPSAoKSA9PiB1bnN1YnNjcmliYWJsZT8udW5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiBpbnB1dFJlc3VsdEZuO1xuICB9XG5cbiAgcmV0dXJuIHJ4TWV0aG9kPElucHV0PihnZW5lcmF0b3IsIHJlc3VsdE1ldGhvZE9yQ29uZmlnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXJlZHV4LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9yZWR1eC1jb25uZWN0b3Ivc2lnbmFsLXJlZHV4LXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBTTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJVSxlQUFVLEdBR2IsRUFBRSxDQUFDO1FBRVIsYUFBUSxHQUFHLFFBQVEsQ0FBUyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksU0FBUyxFQUFFLFdBQVcsRUFBRTtnQkFDMUIsSUFDRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO29CQUN2QyxTQUFTLENBQUMsWUFBWSxFQUN0QjtvQkFDQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUU7d0JBQ2pELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQVcsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsT0FBTyxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsT0FBTztRQUNULENBQUMsQ0FBQyxDQUNILENBQUMsQ0FBQztLQWFKO0lBWEMsOERBQThEO0lBQzlELG1CQUFtQixDQUFDLE9BQWlEO1FBQ25FLE9BQU8sQ0FBQyxPQUFPLENBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDNUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ2xDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7U0FDbEMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDOzhHQXJDVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBeUNELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyByeE1ldGhvZCB9IGZyb20gXCJAbmdyeC9zaWduYWxzL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgQWN0aW9uLCBBY3Rpb25DcmVhdG9yIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XG5pbXBvcnQgeyBwaXBlLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTWFwcGVyVHlwZXMgfSBmcm9tIFwiLi9tb2RlbFwiO1xuaW1wb3J0IHsgaXNVbnN1YnNjcmliYWJsZSB9IGZyb20gXCIuL3V0aWxcIjtcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTaWduYWxSZWR1eFN0b3JlIHtcbiAgcHJpdmF0ZSBtYXBwZXJEaWN0OiBSZWNvcmQ8c3RyaW5nLCB7XG4gICAgc3RvcmVNZXRob2Q6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24sXG4gICAgcmVzdWx0TWV0aG9kPzogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bixcbiAgfT4gPSB7fTtcblxuICBkaXNwYXRjaCA9IHJ4TWV0aG9kPEFjdGlvbj4ocGlwZShcbiAgICB0YXAoKGFjdGlvbjogQWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFja3MgPSB0aGlzLm1hcHBlckRpY3RbYWN0aW9uLnR5cGVdO1xuICAgICAgaWYgKGNhbGxiYWNrcz8uc3RvcmVNZXRob2QpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzVW5zdWJzY3JpYmFibGUoY2FsbGJhY2tzLnN0b3JlTWV0aG9kKSAmJlxuICAgICAgICAgIGNhbGxiYWNrcy5yZXN1bHRNZXRob2RcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrcy5zdG9yZU1ldGhvZChhY3Rpb24sIChhOiBBY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdEFjdGlvbiA9IGNhbGxiYWNrcy5yZXN1bHRNZXRob2Q/LihhKSBhcyBBY3Rpb247XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoKHJlc3VsdEFjdGlvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FsbGJhY2tzPy5zdG9yZU1ldGhvZChhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfSlcbiAgKSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29ubmVjdEZlYXR1cmVTdG9yZShtYXBwZXJzOiBNYXBwZXJUeXBlczxBY3Rpb25DcmVhdG9yPGFueSwgYW55PltdPltdKTogdm9pZCB7XG4gICAgbWFwcGVycy5mb3JFYWNoKFxuICAgICAgbWFwcGVyID0+IG1hcHBlci50eXBlcy5mb3JFYWNoKFxuICAgICAgICBhY3Rpb24gPT4gdGhpcy5tYXBwZXJEaWN0W2FjdGlvbl0gPSB7XG4gICAgICAgICAgc3RvcmVNZXRob2Q6IG1hcHBlci5zdG9yZU1ldGhvZCxcbiAgICAgICAgICByZXN1bHRNZXRob2Q6IG1hcHBlci5yZXN1bHRNZXRob2RcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlZHV4RGlzcGF0Y2goKSB7XG4gIHJldHVybiBpbmplY3QoU2lnbmFsUmVkdXhTdG9yZSkuZGlzcGF0Y2g7XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvcmVkdXgtY29ubmVjdG9yL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixFQUE0QjtJQUU1QixPQUFPLENBQUMsQ0FBRSxFQUFnQyxFQUFFLFdBQVcsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzdELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQVc7SUFDekMsT0FBTyxDQUNMLE9BQU8sTUFBTSxLQUFLLFVBQVU7UUFDNUIsTUFBTTtRQUNOLE1BQU0sQ0FBQyxJQUFJO1FBQ1gsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FDaEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBVbnN1YnNjcmliYWJsZSB9IGZyb20gJ3J4anMnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Vuc3Vic2NyaWJhYmxlPEYgZXh0ZW5kcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duPihcbiAgZm46IEYgfCAoRiAmIFVuc3Vic2NyaWJhYmxlKVxuKTogZm4gaXMgRiAmIFVuc3Vic2NyaWJhYmxlIHtcbiAgcmV0dXJuICEhKGZuIGFzIGFueSBhcyBGICYgVW5zdWJzY3JpYmFibGUpPy51bnN1YnNjcmliZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyID8gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc3Vic3RyaW5nKDEpIDogc3RyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25DcmVhdG9yKGFjdGlvbjogYW55KTogYWN0aW9uIGlzIEFjdGlvbiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIGFjdGlvbiAmJlxuICAgIGFjdGlvbi50eXBlICYmXG4gICAgdHlwZW9mIGFjdGlvbi50eXBlID09PSAnc3RyaW5nJ1xuICApO1xufVxuIl19
|
|
@@ -55,4 +55,4 @@ export function setError(error, prop) {
|
|
|
55
55
|
return { callState: { error: errorMessage } };
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jYWxsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLWNhbGwtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUErQnZCLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFnQztJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDO0lBQ2hDLE9BQU87UUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUNuRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN6RCxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztLQUN2RCxDQUFDO0FBQ0osQ0FBQztBQW9CRCxNQUFNLFVBQVUsYUFBYSxDQUE0QixNQUV4RDtJQUNDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FDckQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0IsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUNyQyxZQUFZLENBQUMsQ0FBQyxLQUFzQyxFQUFFLEVBQUU7UUFFdEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBc0IsQ0FBQztRQUUzRCxPQUFPO1lBQ0wsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssU0FBUyxDQUFDO1lBQ3ZELENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLFFBQVEsQ0FBQztZQUNyRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2hELENBQUMsQ0FBQztTQUNILENBQUE7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQVc7SUFFWCxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQXdCLENBQUM7S0FDbEU7SUFFRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBd0IsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsSUFBVztJQUdYLElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBd0IsQ0FBQztLQUNqRTtTQUNJO1FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXdCLENBQUM7S0FDdEQ7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsS0FBYyxFQUNkLElBQVc7SUFHVCxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFdEIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLFlBQVksR0FBRyxFQUFFLENBQUM7S0FDbkI7U0FDSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFO1FBQ3hELFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO1NBQ0k7UUFDSCxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0lBR0QsSUFBSSxJQUFJLEVBQUU7UUFDUixPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7S0FDaEY7U0FDSTtRQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7S0FDckU7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IEVtdHB5IH0gZnJvbSAnLi9zaGFyZWQvZW1wdHknO1xuXG5leHBvcnQgdHlwZSBDYWxsU3RhdGUgPSAnaW5pdCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJyB8IHsgZXJyb3I6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBOYW1lZENhbGxTdGF0ZVNsaWNlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0t9Q2FsbFN0YXRlYF06IENhbGxTdGF0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZVNsaWNlID0ge1xuICBjYWxsU3RhdGU6IENhbGxTdGF0ZVxufVxuXG5leHBvcnQgdHlwZSBOYW1lZENhbGxTdGF0ZVNpZ25hbHM8UHJvcCBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIFByb3AgYXMgYCR7S31Mb2FkaW5nYF06IFNpZ25hbDxib29sZWFuPjtcbn0gJiB7XG4gICAgW0sgaW4gUHJvcCBhcyBgJHtLfUxvYWRlZGBdOiBTaWduYWw8Ym9vbGVhbj47XG4gIH0gJiB7XG4gICAgW0sgaW4gUHJvcCBhcyBgJHtLfUVycm9yYF06IFNpZ25hbDxzdHJpbmcgfCBudWxsPjtcbiAgfVxuXG5leHBvcnQgdHlwZSBDYWxsU3RhdGVTaWduYWxzID0ge1xuICBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj47XG4gIGxvYWRlZDogU2lnbmFsPGJvb2xlYW4+O1xuICBlcnJvcjogU2lnbmFsPHN0cmluZyB8IG51bGw+XG59XG5cbmV4cG9ydCB0eXBlIFNldENhbGxTdGF0ZTxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IFByb3AgZXh0ZW5kcyBzdHJpbmdcbiAgPyBOYW1lZENhbGxTdGF0ZVNsaWNlPFByb3A+XG4gIDogQ2FsbFN0YXRlU2xpY2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxsU3RhdGVLZXlzKGNvbmZpZz86IHsgY29sbGVjdGlvbj86IHN0cmluZyB9KSB7XG4gIGNvbnN0IHByb3AgPSBjb25maWc/LmNvbGxlY3Rpb247XG4gIHJldHVybiB7XG4gICAgY2FsbFN0YXRlS2V5OiBwcm9wID8gIGAke2NvbmZpZy5jb2xsZWN0aW9ufUNhbGxTdGF0ZWAgOiAnY2FsbFN0YXRlJyxcbiAgICBsb2FkaW5nS2V5OiBwcm9wID8gYCR7Y29uZmlnLmNvbGxlY3Rpb259TG9hZGluZ2AgOiAnbG9hZGluZycsXG4gICAgbG9hZGVkS2V5OiBwcm9wID8gYCR7Y29uZmlnLmNvbGxlY3Rpb259TG9hZGVkYCA6ICdsb2FkZWQnLFxuICAgIGVycm9yS2V5OiBwcm9wID8gYCR7Y29uZmlnLmNvbGxlY3Rpb259RXJyb3JgIDogJ2Vycm9yJyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDYWxsU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oY29uZmlnOiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICB7IHN0YXRlOiBFbXRweSwgc2lnbmFsczogRW10cHksIG1ldGhvZHM6IEVtdHB5IH0sXG4gIHtcbiAgICBzdGF0ZTogTmFtZWRDYWxsU3RhdGVTbGljZTxDb2xsZWN0aW9uPixcbiAgICBzaWduYWxzOiBOYW1lZENhbGxTdGF0ZVNpZ25hbHM8Q29sbGVjdGlvbj4sXG4gICAgbWV0aG9kczogRW10cHlcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlKCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgeyBzdGF0ZTogRW10cHksIHNpZ25hbHM6IEVtdHB5LCBtZXRob2RzOiBFbXRweSB9LFxuICB7XG4gICAgc3RhdGU6IENhbGxTdGF0ZVNsaWNlLFxuICAgIHNpZ25hbHM6IENhbGxTdGF0ZVNpZ25hbHMsXG4gICAgbWV0aG9kczogRW10cHlcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZz86IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmUge1xuICBjb25zdCB7IGNhbGxTdGF0ZUtleSwgZXJyb3JLZXksIGxvYWRlZEtleSwgbG9hZGluZ0tleSB9ID1cbiAgICBnZXRDYWxsU3RhdGVLZXlzKGNvbmZpZyk7XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoeyBbY2FsbFN0YXRlS2V5XTogJ2luaXQnIH0pLFxuICAgIHdpdGhDb21wdXRlZCgoc3RhdGU6IFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4pID0+IHtcblxuICAgICAgY29uc3QgY2FsbFN0YXRlID0gc3RhdGVbY2FsbFN0YXRlS2V5XSBhcyBTaWduYWw8Q2FsbFN0YXRlPjtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2xvYWRpbmdLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRpbmcnKSxcbiAgICAgICAgW2xvYWRlZEtleV06IGNvbXB1dGVkKCgpID0+IGNhbGxTdGF0ZSgpID09PSAnbG9hZGVkJyksXG4gICAgICAgIFtlcnJvcktleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ID0gY2FsbFN0YXRlKCk7XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiB2ID09PSAnb2JqZWN0JyA/IHYuZXJyb3IgOiBudWxsO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2FkaW5nPFByb3AgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICBwcm9wPzogUHJvcFxuKTogU2V0Q2FsbFN0YXRlPFByb3A+IHtcbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4geyBbYCR7cHJvcH1DYWxsU3RhdGVgXTogJ2xvYWRpbmcnIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9XG5cbiAgcmV0dXJuIHsgY2FsbFN0YXRlOiAnbG9hZGluZycgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2FkZWQ8UHJvcCBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gIHByb3A/OiBQcm9wXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuXG4gIGlmIChwcm9wKSB7XG4gICAgcmV0dXJuIHsgW2Ake3Byb3B9Q2FsbFN0YXRlYF06ICdsb2FkZWQnIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiB7IGNhbGxTdGF0ZTogJ2xvYWRlZCcgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yPFByb3AgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICBlcnJvcjogdW5rbm93bixcbiAgcHJvcD86IFByb3AsXG4gICk6IFNldENhbGxTdGF0ZTxQcm9wPiB7XG5cbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICBpZiAoIWVycm9yKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnbWVzc2FnZScgaW4gZXJyb3IpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZyhlcnJvci5tZXNzYWdlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoZXJyb3IpO1xuICAgIH1cbiAgICBcblxuICAgIGlmIChwcm9wKSB7XG4gICAgICByZXR1cm4geyBbYCR7cHJvcH1DYWxsU3RhdGVgXTogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIHsgY2FsbFN0YXRlOiB7IGVycm9yOiBlcnJvck1lc3NhZ2UgfSB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -11,7 +11,7 @@ function createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state)
|
|
|
11
11
|
const fullPayload = { ...payload, type };
|
|
12
12
|
const reducer = reducerRegistry[type];
|
|
13
13
|
if (reducer) {
|
|
14
|
-
reducer(
|
|
14
|
+
reducer(state, fullPayload);
|
|
15
15
|
}
|
|
16
16
|
const effectSubject = effectsRegistry[type];
|
|
17
17
|
if (effectSubject) {
|
|
@@ -92,4 +92,4 @@ export function withRedux(redux) {
|
|
|
92
92
|
};
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQU96RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXlDOUQsTUFBTSxVQUFVLE9BQU87SUFDckIsT0FBTyxFQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUEwQjVCLFNBQVMsZUFBZSxDQUN0QixhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBa0UsRUFDbEUsS0FBYztJQUVkLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1YsT0FBc0QsQ0FDckQsV0FBc0IsRUFDdEIsS0FBSyxDQUNOLENBQUM7YUFDSDtZQUNELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLGFBQWEsRUFBRTtnQkFDaEIsYUFBNkMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbEU7WUFDRCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcs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QUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNMLE9BQU8sRUFBRSxnQkFBOEI7UUFDdkMsYUFBYSxFQUFFLGFBQWE7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUt2QixLQUlEO0lBSUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxZQUFZLENBQzdDLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE9BQTZDLEVBQ25ELEtBQUssQ0FBQyxPQUFvQyxFQUMxQyxLQUFLLENBQ04sQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpZ25hbFN0b3JlRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMvc3JjL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zdGF0ZS1zaWduYWwnO1xuaW1wb3J0IHsgYXNzZXJ0QWN0aW9uRm5TcGVjcyB9IGZyb20gJy4vYXNzZXJ0aW9ucy9hc3NlcnRpb25zJztcbmltcG9ydCB7IGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogQWN0aW9ucyAqKi9cblxudHlwZSBQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgQWN0aW9uRm48XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIEFjdGlvblBheWxvYWQgZXh0ZW5kcyBQYXlsb2FkID0gUGF5bG9hZFxuPiA9ICgocGF5bG9hZDogQWN0aW9uUGF5bG9hZCkgPT4gQWN0aW9uUGF5bG9hZCAmIHsgdHlwZTogVHlwZSB9KSAmIHtcbiAgdHlwZTogVHlwZTtcbn07XG5cbnR5cGUgQWN0aW9uRm5zID0gUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25zRm5TcGVjcyA9IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xuXG50eXBlIEFjdGlvbkZuQ3JlYXRvcjxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0ge1xuICBbQWN0aW9uTmFtZSBpbiBrZXlvZiBTcGVjXTogKChcbiAgICBwYXlsb2FkOiBTcGVjW0FjdGlvbk5hbWVdXG4gICkgPT4gU3BlY1tBY3Rpb25OYW1lXSAmIHsgdHlwZTogQWN0aW9uTmFtZSB9KSAmIHsgdHlwZTogQWN0aW9uTmFtZSAmIHN0cmluZyB9O1xufTtcblxudHlwZSBBY3Rpb25GblBheWxvYWQ8QWN0aW9uPiA9IEFjdGlvbiBleHRlbmRzIChwYXlsb2FkOiBpbmZlciBQYXlsb2FkKSA9PiB2b2lkXG4gID8gUGF5bG9hZFxuICA6IG5ldmVyO1xuXG50eXBlIEFjdGlvbkZuc0NyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IFNwZWMgZXh0ZW5kcyB7XG4gIHByaXZhdGU6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xuICBwdWJsaWM6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xufVxuICA/IEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwcml2YXRlJ10+ICYgQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3B1YmxpYyddPlxuICA6IEFjdGlvbkZuQ3JlYXRvcjxTcGVjPjtcblxudHlwZSBQdWJsaWNBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IFNwZWMgZXh0ZW5kcyB7XG4gIHB1YmxpYzogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG59XG4gID8gQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3B1YmxpYyddPlxuICA6IEFjdGlvbkZuQ3JlYXRvcjxTcGVjPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBheWxvYWQ8VHlwZSBleHRlbmRzIFBheWxvYWQ+KCk6IFR5cGUge1xuICByZXR1cm4ge30gYXMgVHlwZTtcbn1cblxuZXhwb3J0IGNvbnN0IG5vUGF5bG9hZCA9IHt9O1xuXG4vKiogUmVkdWNlciAqKi9cblxudHlwZSBSZWR1Y2VyRnVuY3Rpb248UmVkdWNlckFjdGlvbiwgU3RhdGU+ID0gKFxuICBhY3Rpb246IEFjdGlvbkZuUGF5bG9hZDxSZWR1Y2VyQWN0aW9uPixcbiAgc3RhdGU6IFN0YXRlXG4pID0+IHZvaWQ7XG5cbnR5cGUgUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnMsIFN0YXRlPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIG9uOiA8UmVkdWNlckFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogUmVkdWNlckFjdGlvbixcbiAgICByZWR1Y2VyRm46IFJlZHVjZXJGdW5jdGlvbjxBY3Rpb25GblBheWxvYWQ8UmVkdWNlckFjdGlvbj4sIFN0YXRlPlxuICApID0+IHZvaWRcbikgPT4gdm9pZDtcblxuLyoqIEVmZmVjdCAqKi9cblxudHlwZSBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucyBleHRlbmRzIEFjdGlvbkZucz4gPSAoXG4gIGFjdGlvbnM6IFN0YXRlQWN0aW9uRm5zLFxuICBjcmVhdGU6IDxFZmZlY3RBY3Rpb24gZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PihcbiAgICBhY3Rpb246IEVmZmVjdEFjdGlvblxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+XG4pID0+IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8dW5rbm93bj4+O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PixcbiAgc3RhdGU6IHVua25vd25cbikge1xuICBjb25zdCBhY3Rpb25GbnM6IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgdHlwZSBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgYWN0aW9uRm4gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgZnVsbFBheWxvYWQgPSB7IC4uLnBheWxvYWQsIHR5cGUgfTtcbiAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAocmVkdWNlcikge1xuICAgICAgICAocmVkdWNlciBhcyAocGF5bG9hZDogdW5rbm93biwgc3RhdGU6IHVua25vd24pID0+IHZvaWQpKFxuICAgICAgICAgIGZ1bGxQYXlsb2FkIGFzIHVua25vd24sXG4gICAgICAgICAgc3RhdGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVmZmVjdFN1YmplY3QgPSBlZmZlY3RzUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAoZWZmZWN0U3ViamVjdCkge1xuICAgICAgICAoZWZmZWN0U3ViamVjdCBhcyB1bmtub3duIGFzIFN1YmplY3Q8dW5rbm93bj4pLm5leHQoZnVsbFBheWxvYWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bGxQYXlsb2FkO1xuICAgIH07XG4gICAgYWN0aW9uRm4udHlwZSA9IHR5cGUudG9TdHJpbmcoKTtcbiAgICBhY3Rpb25GbnNbdHlwZV0gPSBhY3Rpb25GbjtcbiAgfVxuXG4gIHJldHVybiBhY3Rpb25GbnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVB1YmxpY0FuZEFsbEFjdGlvbnNGbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PixcbiAgc3RhdGU6IHVua25vd25cbik6IHsgYWxsOiBBY3Rpb25GbnM7IHB1YmxpY3M6IEFjdGlvbkZucyB9IHtcbiAgaWYgKCdwdWJsaWMnIGluIGFjdGlvbkZuU3BlY3MgfHwgJ3ByaXZhdGUnIGluIGFjdGlvbkZuU3BlY3MpIHtcbiAgICBjb25zdCBwcml2YXRlcyA9IGFjdGlvbkZuU3BlY3NbJ3ByaXZhdGUnXSB8fCB7fTtcbiAgICBjb25zdCBwdWJsaWNzID0gYWN0aW9uRm5TcGVjc1sncHVibGljJ10gfHwge307XG5cbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHByaXZhdGVzKTtcbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHB1YmxpY3MpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUFjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICAgIHByaXZhdGVzLFxuICAgICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgICAgc3RhdGVcbiAgICApO1xuICAgIGNvbnN0IHB1YmxpY0FjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICAgIHB1YmxpY3MsXG4gICAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgICBzdGF0ZVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsOiB7IC4uLnByaXZhdGVBY3Rpb25GbnMsIC4uLnB1YmxpY0FjdGlvbkZucyB9LFxuICAgICAgcHVibGljczogcHVibGljQWN0aW9uRm5zLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgYWN0aW9uRm5TcGVjcyxcbiAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgIHN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWxsOiBhY3Rpb25GbnMsIHB1YmxpY3M6IGFjdGlvbkZucyB9O1xufVxuXG5mdW5jdGlvbiBmaWxsUmVkdWNlclJlZ2lzdHJ5KFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXG4gID5cbikge1xuICBmdW5jdGlvbiBvbihcbiAgICBhY3Rpb246IHsgdHlwZTogc3RyaW5nIH0sXG4gICAgcmVkdWNlckZuOiAocGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+LCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZFxuICApIHtcbiAgICByZWR1Y2VyUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gcmVkdWNlckZuO1xuICB9XG5cbiAgcmVkdWNlcihhY3Rpb25GbnMsIG9uKTtcblxuICByZXR1cm4gcmVkdWNlclJlZ2lzdHJ5O1xufVxuXG5mdW5jdGlvbiBmaWxsRWZmZWN0cyhcbiAgZWZmZWN0czogRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PiA9IHt9XG4pOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICBmdW5jdGlvbiBjcmVhdGUoYWN0aW9uOiB7IHR5cGU6IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4oKTtcbiAgICBlZmZlY3RzUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gc3ViamVjdDtcbiAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZWZmZWN0cyhhY3Rpb25GbnMsIGNyZWF0ZSk7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGVmZmVjdE9ic2VydmFibGVzKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRTdWJzY3JpcHRpb25zKG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10pIHtcbiAgcmV0dXJuIG9ic2VydmFibGVzLm1hcCgob2JzZXJ2YWJsZSkgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoKSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWR1eDxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3MsIFJldHVyblR5cGU+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBzdG9yZTogdW5rbm93blxuKSB7XG4gIGNvbnN0IHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAocGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+LCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZFxuICA+ID0ge307XG4gIGNvbnN0IGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PiA9IHt9O1xuICBjb25zdCBhY3Rpb25zTWFwID0gY3JlYXRlUHVibGljQW5kQWxsQWN0aW9uc0ZucyhcbiAgICBhY3Rpb25GblNwZWNzLFxuICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgc3RvcmVcbiAgKTtcbiAgY29uc3QgYWN0aW9uRm5zID0gYWN0aW9uc01hcC5hbGw7XG4gIGNvbnN0IHB1YmxpY0FjdGlvbnNGbnMgPSBhY3Rpb25zTWFwLnB1YmxpY3M7XG5cbiAgZmlsbFJlZHVjZXJSZWdpc3RyeShyZWR1Y2VyLCBhY3Rpb25GbnMsIHJlZHVjZXJSZWdpc3RyeSk7XG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZmlsbEVmZmVjdHMoZWZmZWN0cywgYWN0aW9uRm5zLCBlZmZlY3RzUmVnaXN0cnkpO1xuICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3RhcnRTdWJzY3JpcHRpb25zKGVmZmVjdE9ic2VydmFibGVzKTtcblxuICByZXR1cm4ge1xuICAgIG1ldGhvZHM6IHB1YmxpY0FjdGlvbnNGbnMgYXMgUmV0dXJuVHlwZSxcbiAgICBzdWJzY3JpcHRpb25zOiBzdWJzY3JpcHRpb25zLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWR1eCByZWR1eFxuICpcbiAqIHByb3BlcnRpZXMgZG8gbm90IHN0YXJ0IHdpdGggYHdpdGhgIHNpbmNlIHRoZXkgYXJlIG5vdCBleHRlbnNpb24gZnVuY3Rpb25zIG9uIHRoZWlyIG93bi5cbiAqXG4gKiBubyBkZXBlbmRlbmN5IHRvIE5nUnhcbiAqXG4gKiBhY3Rpb25zIGFyZSBwYXNzZWQgdG8gcmVkdWNlciBhbmQgZWZmZWN0cywgYnV0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIG90aGVyIGFjdGlvbnMuXG4gKiBlZmZlY3RzIHByb3ZpZGUgZm9yQWN0aW9uIGFuZCBkbyBub3QgcmV0dXJuIGFueXRoaW5nLiB0aGF0IGlzIGltcG9ydGFudCBiZWNhdXNlIGVmZmVjdHMgc2hvdWxkIHN0YXkgaW5hY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVkdXg8XG4gIFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPiA9IEFjdGlvbkZuc0NyZWF0b3I8U3BlYz4sXG4gIFB1YmxpY1N0b3JlQWN0aW9uRm5zIGV4dGVuZHMgUHVibGljQWN0aW9uRm5zPFNwZWM+ID0gUHVibGljQWN0aW9uRm5zPFNwZWM+XG4+KHJlZHV4OiB7XG4gIGFjdGlvbnM6IFNwZWM7XG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PFN0YXRlQWN0aW9uRm5zLCBTdGF0ZVNpZ25hbDxJbnB1dFsnc3RhdGUnXT4+O1xuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucz47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBtZXRob2RzOiBQdWJsaWNTdG9yZUFjdGlvbkZucyB9XG4+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHsgbWV0aG9kcywgc3Vic2NyaXB0aW9ucyB9ID0gcHJvY2Vzc1JlZHV4PFNwZWMsIFB1YmxpY1N0b3JlQWN0aW9uRm5zPihcbiAgICAgIHJlZHV4LmFjdGlvbnMsXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gICAgICByZWR1eC5lZmZlY3RzIGFzIEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gICAgICBzdG9yZVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgbWV0aG9kcyxcbiAgICB9O1xuICB9O1xufVxuIl19
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBd0M5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQTBCNUIsU0FBUyxlQUFlLENBQ3RCLGFBQW1CLEVBQ25CLGVBR0MsRUFDRCxlQUFrRSxFQUNsRSxLQUFjO0lBRWQsTUFBTSxTQUFTLEdBQTZCLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE9BQU8sRUFBRTtnQkFDVixPQUFzRCxDQUNyRCxLQUFLLEVBQ0wsV0FBc0IsQ0FDdkIsQ0FBQzthQUNIO1lBQ0QsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksYUFBYSxFQUFFO2dCQUNoQixhQUE2QyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsRTtZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxR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QU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDM0UsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU1RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLGdCQUE4QjtRQUN2QyxhQUFhLEVBQUUsYUFBYTtLQUM3QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxTQUFTLENBS3ZCLEtBSUQ7SUFJQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLFlBQVksQ0FDN0MsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsT0FBNkMsRUFDbkQsS0FBSyxDQUFDLE9BQW9DLEVBQzFDLEtBQUssQ0FDTixDQUFDO1FBQ0YsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpZ25hbFN0b3JlRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMvc3JjL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zdGF0ZS1zaWduYWwnO1xuaW1wb3J0IHsgYXNzZXJ0QWN0aW9uRm5TcGVjcyB9IGZyb20gJy4vYXNzZXJ0aW9ucy9hc3NlcnRpb25zJztcblxuLyoqIEFjdGlvbnMgKiovXG5cbnR5cGUgUGF5bG9hZCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG50eXBlIEFjdGlvbkZuPFxuICBUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBBY3Rpb25QYXlsb2FkIGV4dGVuZHMgUGF5bG9hZCA9IFBheWxvYWRcbj4gPSAoKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IEFjdGlvblBheWxvYWQgJiB7IHR5cGU6IFR5cGUgfSkgJiB7XG4gIHR5cGU6IFR5cGU7XG59O1xuXG50eXBlIEFjdGlvbkZucyA9IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uc0ZuU3BlY3MgPSBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcblxudHlwZSBBY3Rpb25GbkNyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IHtcbiAgW0FjdGlvbk5hbWUgaW4ga2V5b2YgU3BlY106ICgoXG4gICAgcGF5bG9hZDogU3BlY1tBY3Rpb25OYW1lXVxuICApID0+IFNwZWNbQWN0aW9uTmFtZV0gJiB7IHR5cGU6IEFjdGlvbk5hbWUgfSkgJiB7IHR5cGU6IEFjdGlvbk5hbWUgJiBzdHJpbmcgfTtcbn07XG5cbnR5cGUgQWN0aW9uRm5QYXlsb2FkPEFjdGlvbj4gPSBBY3Rpb24gZXh0ZW5kcyAocGF5bG9hZDogaW5mZXIgUGF5bG9hZCkgPT4gdm9pZFxuICA/IFBheWxvYWRcbiAgOiBuZXZlcjtcblxudHlwZSBBY3Rpb25GbnNDcmVhdG9yPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xuICBwcml2YXRlOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbn1cbiAgPyBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHJpdmF0ZSddPiAmIEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwdWJsaWMnXT5cbiAgOiBBY3Rpb25GbkNyZWF0b3I8U3BlYz47XG5cbnR5cGUgUHVibGljQWN0aW9uRm5zPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xuICBwdWJsaWM6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xufVxuICA/IEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwdWJsaWMnXT5cbiAgOiBBY3Rpb25GbkNyZWF0b3I8U3BlYz47XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXlsb2FkPFR5cGUgZXh0ZW5kcyBQYXlsb2FkPigpOiBUeXBlIHtcbiAgcmV0dXJuIHt9IGFzIFR5cGU7XG59XG5cbmV4cG9ydCBjb25zdCBub1BheWxvYWQgPSB7fTtcblxuLyoqIFJlZHVjZXIgKiovXG5cbnR5cGUgUmVkdWNlckZ1bmN0aW9uPFJlZHVjZXJBY3Rpb24sIFN0YXRlPiA9IChcbiAgc3RhdGU6IFN0YXRlLFxuICBhY3Rpb246IEFjdGlvbkZuUGF5bG9hZDxSZWR1Y2VyQWN0aW9uPlxuKSA9PiB2b2lkO1xuXG50eXBlIFJlZHVjZXJGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zLCBTdGF0ZT4gPSAoXG4gIGFjdGlvbnM6IFN0YXRlQWN0aW9uRm5zLFxuICBvbjogPFJlZHVjZXJBY3Rpb24gZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PihcbiAgICBhY3Rpb246IFJlZHVjZXJBY3Rpb24sXG4gICAgcmVkdWNlckZuOiBSZWR1Y2VyRnVuY3Rpb248UmVkdWNlckFjdGlvbiwgU3RhdGU+XG4gICkgPT4gdm9pZFxuKSA9PiB2b2lkO1xuXG4vKiogRWZmZWN0ICoqL1xuXG50eXBlIEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogRWZmZWN0QWN0aW9uXG4gICkgPT4gT2JzZXJ2YWJsZTxBY3Rpb25GblBheWxvYWQ8RWZmZWN0QWN0aW9uPj5cbikgPT4gUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTx1bmtub3duPj47XG5cbmZ1bmN0aW9uIGNyZWF0ZUFjdGlvbkZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPixcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+LFxuICBzdGF0ZTogdW5rbm93blxuKSB7XG4gIGNvbnN0IGFjdGlvbkZuczogUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+ID0ge307XG5cbiAgZm9yIChjb25zdCB0eXBlIGluIGFjdGlvbkZuU3BlY3MpIHtcbiAgICBjb25zdCBhY3Rpb25GbiA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHsgLi4ucGF5bG9hZCwgdHlwZSB9O1xuICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChyZWR1Y2VyKSB7XG4gICAgICAgIChyZWR1Y2VyIGFzIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogdW5rbm93bikgPT4gdm9pZCkoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZnVsbFBheWxvYWQgYXMgdW5rbm93blxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZWZmZWN0U3ViamVjdCA9IGVmZmVjdHNSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChlZmZlY3RTdWJqZWN0KSB7XG4gICAgICAgIChlZmZlY3RTdWJqZWN0IGFzIHVua25vd24gYXMgU3ViamVjdDx1bmtub3duPikubmV4dChmdWxsUGF5bG9hZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVsbFBheWxvYWQ7XG4gICAgfTtcbiAgICBhY3Rpb25Gbi50eXBlID0gdHlwZS50b1N0cmluZygpO1xuICAgIGFjdGlvbkZuc1t0eXBlXSA9IGFjdGlvbkZuO1xuICB9XG5cbiAgcmV0dXJuIGFjdGlvbkZucztcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHVibGljQW5kQWxsQWN0aW9uc0ZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPixcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+LFxuICBzdGF0ZTogdW5rbm93blxuKTogeyBhbGw6IEFjdGlvbkZuczsgcHVibGljczogQWN0aW9uRm5zIH0ge1xuICBpZiAoJ3B1YmxpYycgaW4gYWN0aW9uRm5TcGVjcyB8fCAncHJpdmF0ZScgaW4gYWN0aW9uRm5TcGVjcykge1xuICAgIGNvbnN0IHByaXZhdGVzID0gYWN0aW9uRm5TcGVjc1sncHJpdmF0ZSddIHx8IHt9O1xuICAgIGNvbnN0IHB1YmxpY3MgPSBhY3Rpb25GblNwZWNzWydwdWJsaWMnXSB8fCB7fTtcblxuICAgIGFzc2VydEFjdGlvbkZuU3BlY3MocHJpdmF0ZXMpO1xuICAgIGFzc2VydEFjdGlvbkZuU3BlY3MocHVibGljcyk7XG5cbiAgICBjb25zdCBwcml2YXRlQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHJpdmF0ZXMsXG4gICAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgICBzdGF0ZVxuICAgICk7XG4gICAgY29uc3QgcHVibGljQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHVibGljcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhbGw6IHsgLi4ucHJpdmF0ZUFjdGlvbkZucywgLi4ucHVibGljQWN0aW9uRm5zIH0sXG4gICAgICBwdWJsaWNzOiBwdWJsaWNBY3Rpb25GbnMsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGFjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICBhY3Rpb25GblNwZWNzLFxuICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgc3RhdGVcbiAgKTtcblxuICByZXR1cm4geyBhbGw6IGFjdGlvbkZucywgcHVibGljczogYWN0aW9uRm5zIH07XG59XG5cbmZ1bmN0aW9uIGZpbGxSZWR1Y2VyUmVnaXN0cnkoXG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gIGFjdGlvbkZuczogQWN0aW9uRm5zLFxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPlxuKSB7XG4gIGZ1bmN0aW9uIG9uKFxuICAgIGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSxcbiAgICByZWR1Y2VyRm46IChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gICkge1xuICAgIHJlZHVjZXJSZWdpc3RyeVthY3Rpb24udHlwZV0gPSByZWR1Y2VyRm47XG4gIH1cblxuICByZWR1Y2VyKGFjdGlvbkZucywgb24pO1xuXG4gIHJldHVybiByZWR1Y2VyUmVnaXN0cnk7XG59XG5cbmZ1bmN0aW9uIGZpbGxFZmZlY3RzKFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+ID0ge31cbik6IE9ic2VydmFibGU8dW5rbm93bj5bXSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShhY3Rpb246IHsgdHlwZTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+PigpO1xuICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0gPSBzdWJqZWN0O1xuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBlZmZlY3RzKGFjdGlvbkZucywgY3JlYXRlKTtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZWZmZWN0T2JzZXJ2YWJsZXMpO1xufVxuXG5mdW5jdGlvbiBzdGFydFN1YnNjcmlwdGlvbnMob2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8dW5rbm93bj5bXSkge1xuICByZXR1cm4gb2JzZXJ2YWJsZXMubWFwKChvYnNlcnZhYmxlKSA9PiBvYnNlcnZhYmxlLnN1YnNjcmliZSgpKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZHV4PFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcywgUmV0dXJuVHlwZT4oXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gIHN0b3JlOiB1bmtub3duXG4pIHtcbiAgY29uc3QgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4gPSB7fTtcbiAgY29uc3QgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+ID0ge307XG4gIGNvbnN0IGFjdGlvbnNNYXAgPSBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zKFxuICAgIGFjdGlvbkZuU3BlY3MsXG4gICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICBzdG9yZVxuICApO1xuICBjb25zdCBhY3Rpb25GbnMgPSBhY3Rpb25zTWFwLmFsbDtcbiAgY29uc3QgcHVibGljQWN0aW9uc0ZucyA9IGFjdGlvbnNNYXAucHVibGljcztcblxuICBmaWxsUmVkdWNlclJlZ2lzdHJ5KHJlZHVjZXIsIGFjdGlvbkZucywgcmVkdWNlclJlZ2lzdHJ5KTtcbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBmaWxsRWZmZWN0cyhlZmZlY3RzLCBhY3Rpb25GbnMsIGVmZmVjdHNSZWdpc3RyeSk7XG4gIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBzdGFydFN1YnNjcmlwdGlvbnMoZWZmZWN0T2JzZXJ2YWJsZXMpO1xuXG4gIHJldHVybiB7XG4gICAgbWV0aG9kczogcHVibGljQWN0aW9uc0ZucyBhcyBSZXR1cm5UeXBlLFxuICAgIHN1YnNjcmlwdGlvbnM6IHN1YnNjcmlwdGlvbnMsXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHJlZHV4IHJlZHV4XG4gKlxuICogcHJvcGVydGllcyBkbyBub3Qgc3RhcnQgd2l0aCBgd2l0aGAgc2luY2UgdGhleSBhcmUgbm90IGV4dGVuc2lvbiBmdW5jdGlvbnMgb24gdGhlaXIgb3duLlxuICpcbiAqIG5vIGRlcGVuZGVuY3kgdG8gTmdSeFxuICpcbiAqIGFjdGlvbnMgYXJlIHBhc3NlZCB0byByZWR1Y2VyIGFuZCBlZmZlY3RzLCBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgYWN0aW9ucy5cbiAqIGVmZmVjdHMgcHJvdmlkZSBmb3JBY3Rpb24gYW5kIGRvIG5vdCByZXR1cm4gYW55dGhpbmcuIHRoYXQgaXMgaW1wb3J0YW50IGJlY2F1c2UgZWZmZWN0cyBzaG91bGQgc3RheSBpbmFjY2Vzc2libGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZWR1eDxcbiAgU3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzLFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnNDcmVhdG9yPFNwZWM+ID0gQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPixcbiAgUHVibGljU3RvcmVBY3Rpb25GbnMgZXh0ZW5kcyBQdWJsaWNBY3Rpb25GbnM8U3BlYz4gPSBQdWJsaWNBY3Rpb25GbnM8U3BlYz5cbj4ocmVkdXg6IHtcbiAgYWN0aW9uczogU3BlYztcbiAgcmVkdWNlcjogUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMsIFN0YXRlU2lnbmFsPElucHV0WydzdGF0ZSddPj47XG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zPjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIElucHV0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7IG1ldGhvZHM6IFB1YmxpY1N0b3JlQWN0aW9uRm5zIH1cbj4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3QgeyBtZXRob2RzLCBzdWJzY3JpcHRpb25zIH0gPSBwcm9jZXNzUmVkdXg8U3BlYywgUHVibGljU3RvcmVBY3Rpb25GbnM+KFxuICAgICAgcmVkdXguYWN0aW9ucyxcbiAgICAgIHJlZHV4LnJlZHVjZXIgYXMgUmVkdWNlckZhY3Rvcnk8QWN0aW9uRm5zLCB1bmtub3duPixcbiAgICAgIHJlZHV4LmVmZmVjdHMgYXMgRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgICAgIHN0b3JlXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBtZXRob2RzLFxuICAgIH07XG4gIH07XG59XG4iXX0=
|