@angular-architects/ngrx-toolkit 18.0.0 → 18.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +1 -428
  2. package/esm2022/index.mjs +1 -3
  3. package/esm2022/lib/with-undo-redo.mjs +10 -4
  4. package/esm2022/redux-connector/angular-architects-ngrx-toolkit-redux-connector.mjs +5 -0
  5. package/esm2022/redux-connector/index.mjs +3 -0
  6. package/esm2022/redux-connector/src/lib/create-redux.mjs +41 -0
  7. package/esm2022/redux-connector/src/lib/model.mjs +2 -0
  8. package/esm2022/redux-connector/src/lib/rxjs-interop/redux-method.mjs +22 -0
  9. package/esm2022/redux-connector/src/lib/signal-redux-store.mjs +43 -0
  10. package/esm2022/redux-connector/src/lib/util.mjs +13 -0
  11. package/fesm2022/angular-architects-ngrx-toolkit-redux-connector.mjs +119 -0
  12. package/fesm2022/angular-architects-ngrx-toolkit-redux-connector.mjs.map +1 -0
  13. package/fesm2022/angular-architects-ngrx-toolkit.mjs +34 -138
  14. package/fesm2022/angular-architects-ngrx-toolkit.mjs.map +1 -1
  15. package/index.d.ts +0 -2
  16. package/lib/with-undo-redo.d.ts +14 -25
  17. package/package.json +14 -2
  18. package/redux-connector/index.d.ts +2 -0
  19. package/esm2022/lib/redux-connector/create-redux.mjs +0 -41
  20. package/esm2022/lib/redux-connector/index.mjs +0 -2
  21. package/esm2022/lib/redux-connector/model.mjs +0 -2
  22. package/esm2022/lib/redux-connector/rxjs-interop/index.mjs +0 -2
  23. package/esm2022/lib/redux-connector/rxjs-interop/redux-method.mjs +0 -22
  24. package/esm2022/lib/redux-connector/signal-redux-store.mjs +0 -43
  25. package/esm2022/lib/redux-connector/util.mjs +0 -13
  26. package/lib/redux-connector/index.d.ts +0 -1
  27. package/lib/redux-connector/rxjs-interop/index.d.ts +0 -1
  28. /package/{lib/redux-connector → redux-connector/src/lib}/create-redux.d.ts +0 -0
  29. /package/{lib/redux-connector → redux-connector/src/lib}/model.d.ts +0 -0
  30. /package/{lib/redux-connector → redux-connector/src/lib}/rxjs-interop/redux-method.d.ts +0 -0
  31. /package/{lib/redux-connector → redux-connector/src/lib}/signal-redux-store.d.ts +0 -0
  32. /package/{lib/redux-connector → redux-connector/src/lib}/util.d.ts +0 -0
package/README.md CHANGED
@@ -19,431 +19,4 @@ To install it, run
19
19
  npm i @angular-architects/ngrx-toolkit
20
20
  ```
21
21
 
22
- Starting with 18.0.0-rc.2, we have a [strict version dependency](#why-is-the-version-range-to-the-ngrxsignals-dependency-so-strict) to `@ngrx/signals`:
23
-
24
- | @ngrx/signals | @angular-architects/ngrx-toolkit |
25
- |----------------|----------------------------------|
26
- | <= 18.0.0-rc.1 | 0.0.4 |
27
- | 18.0.0-rc.2 | 18.0.0-rc.2.x |
28
-
29
- To install it, run
30
-
31
- ```shell
32
- npm i @angular-architects/ngrx-toolkit
33
- ```
34
-
35
-
36
- - [NgRx Toolkit](#ngrx-toolkit)
37
- - [Devtools: `withDevtools()`](#devtools-withdevtools)
38
- - [Redux: `withRedux()`](#redux-withredux)
39
- - [DataService `withDataService()`](#dataservice-withdataservice)
40
- - [DataService with Dynamic Properties](#dataservice-with-dynamic-properties)
41
- - [Storage Sync `withStorageSync`](#storage-sync-withstoragesync)
42
- - [Redux Connector for the NgRx Signal Store `createReduxState()`](#redux-connector-for-the-ngrx-signal-store-createreduxstate)
43
- - [Use a present Signal Store](#use-a-present-signal-store)
44
- - [Use well-known NgRx Store Actions](#use-well-known-ngrx-store-actions)
45
- - [Map Actions to Methods](#map-actions-to-methods)
46
- - [Register an Angular Dependency Injection Provider](#register-an-angular-dependency-injection-provider)
47
- - [Use the Store in your Component](#use-the-store-in-your-component)
48
- - [FAQ](#faq)
49
- - [Why is the version range to the `@ngrx/signals` dependency so strict?](#why-is-the-version-range-to-the-ngrxsignals-dependency-so-strict)
50
- - [I have an idea for a new extension, can I contribute?](#i-have-an-idea-for-a-new-extension-can-i-contribute)
51
- - [I require a feature that is not available in a lower version. What should I do?](#i-require-a-feature-that-is-not-available-in-a-lower-version-what-should-i-do)
52
-
53
-
54
- ## Devtools: `withDevtools()`
55
-
56
- This extension is very easy to use. Just add it to a `signalStore`. Example:
57
-
58
- ```typescript
59
- export const FlightStore = signalStore(
60
- { providedIn: 'root' },
61
- withDevtools('flights'), // <-- add this
62
- withState({ flights: [] as Flight[] })
63
- // ...
64
- );
65
- ```
66
-
67
- ## Redux: `withRedux()`
68
-
69
- `withRedux()` bring back the Redux pattern into the Signal Store.
70
-
71
- It can be combined with any other extension of the Signal Store.
72
-
73
- Example:
74
-
75
- ```typescript
76
- export const FlightStore = signalStore(
77
- { providedIn: 'root' },
78
- withState({ flights: [] as Flight[] }),
79
- withRedux({
80
- actions: {
81
- public: {
82
- load: payload<{ from: string; to: string }>(),
83
- },
84
- private: {
85
- loaded: payload<{ flights: Flight[] }>(),
86
- },
87
- },
88
- reducer(actions, on) {
89
- on(actions.loaded, ({ flights }, state) => {
90
- patchState(state, 'flights loaded', { flights });
91
- });
92
- },
93
- effects(actions, create) {
94
- const httpClient = inject(HttpClient);
95
- return {
96
- load$: create(actions.load).pipe(
97
- switchMap(({ from, to }) =>
98
- httpClient.get<Flight[]>('https://demo.angulararchitects.io/api/flight', {
99
- params: new HttpParams().set('from', from).set('to', to),
100
- })
101
- ),
102
- tap((flights) => actions.loaded({ flights }))
103
- ),
104
- };
105
- },
106
- })
107
- );
108
- ```
109
-
110
- ## DataService `withDataService()`
111
-
112
- `withDataService()` allows to connect a Data Service to the store:
113
-
114
- This gives you a store for a CRUD use case:
115
-
116
- ```typescript
117
- export const SimpleFlightBookingStore = signalStore(
118
- { providedIn: 'root' },
119
- withCallState(),
120
- withEntities<Flight>(),
121
- withDataService({
122
- dataServiceType: FlightService,
123
- filter: { from: 'Paris', to: 'New York' },
124
- }),
125
- withUndoRedo()
126
- );
127
- ```
128
-
129
- The features `withCallState` and `withUndoRedo` are optional, but when present, they enrich each other.
130
-
131
- The Data Service needs to implement the `DataService` interface:
132
-
133
- ```typescript
134
- @Injectable({
135
- providedIn: 'root'
136
- })
137
- export class FlightService implements DataService<Flight, FlightFilter> {
138
- loadById(id: EntityId): Promise<Flight> { ... }
139
- load(filter: FlightFilter): Promise<Flight[]> { ... }
140
-
141
- create(entity: Flight): Promise<Flight> { ... }
142
- update(entity: Flight): Promise<Flight> { ... }
143
- delete(entity: Flight): Promise<void> { ... }
144
- [...]
145
- }
146
- ```
147
-
148
- Once the store is defined, it gives its consumers numerous signals and methods they just need to delegate to:
149
-
150
- ```typescript
151
- @Component(...)
152
- export class FlightSearchSimpleComponent {
153
- private store = inject(SimpleFlightBookingStore);
154
-
155
- from = this.store.filter.from;
156
- to = this.store.filter.to;
157
- flights = this.store.entities;
158
- selected = this.store.selectedEntities;
159
- selectedIds = this.store.selectedIds;
160
-
161
- loading = this.store.loading;
162
-
163
- canUndo = this.store.canUndo;
164
- canRedo = this.store.canRedo;
165
-
166
- async search() {
167
- this.store.load();
168
- }
169
-
170
- undo(): void {
171
- this.store.undo();
172
- }
173
-
174
- redo(): void {
175
- this.store.redo();
176
- }
177
-
178
- updateCriteria(from: string, to: string): void {
179
- this.store.updateFilter({ from, to });
180
- }
181
-
182
- updateBasket(id: number, selected: boolean): void {
183
- this.store.updateSelected(id, selected);
184
- }
185
-
186
- }
187
- ```
188
-
189
- ## DataService with Dynamic Properties
190
-
191
- To avoid naming conflicts, the properties set up by `withDataService` and the connected features can be configured in a typesafe way:
192
-
193
- ```typescript
194
- export const FlightBookingStore = signalStore(
195
- { providedIn: 'root' },
196
- withCallState({
197
- collection: 'flight',
198
- }),
199
- withEntities({
200
- entity: type<Flight>(),
201
- collection: 'flight',
202
- }),
203
- withDataService({
204
- dataServiceType: FlightService,
205
- filter: { from: 'Graz', to: 'Hamburg' },
206
- collection: 'flight',
207
- }),
208
- withUndoRedo({
209
- collections: ['flight'],
210
- })
211
- );
212
- ```
213
-
214
- 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:
215
-
216
- ```typescript
217
- @Component(...)
218
- export class FlightSearchDynamicComponent {
219
- private store = inject(FlightBookingStore);
220
-
221
- from = this.store.flightFilter.from;
222
- to = this.store.flightFilter.to;
223
- flights = this.store.flightEntities;
224
- selected = this.store.selectedFlightEntities;
225
- selectedIds = this.store.selectedFlightIds;
226
-
227
- loading = this.store.flightLoading;
228
-
229
- canUndo = this.store.canUndo;
230
- canRedo = this.store.canRedo;
231
-
232
- async search() {
233
- this.store.loadFlightEntities();
234
- }
235
-
236
- undo(): void {
237
- this.store.undo();
238
- }
239
-
240
- redo(): void {
241
- this.store.redo();
242
- }
243
-
244
- updateCriteria(from: string, to: string): void {
245
- this.store.updateFlightFilter({ from, to });
246
- }
247
-
248
- updateBasket(id: number, selected: boolean): void {
249
- this.store.updateSelectedFlightEntities(id, selected);
250
- }
251
-
252
- }
253
- ```
254
-
255
- ## Storage Sync `withStorageSync()`
256
-
257
- `withStorageSync` adds automatic or manual synchronization with Web Storage (`localstorage`/`sessionstorage`).
258
-
259
- > [!WARNING]
260
- > As Web Storage only works in browser environments it will fallback to a stub implementation on server environments.
261
-
262
- Example:
263
-
264
- ```ts
265
- const SyncStore = signalStore(
266
- withStorageSync<User>({
267
- key: 'synced', // key used when writing to/reading from storage
268
- autoSync: false, // read from storage on init and write on state changes - `true` by default
269
- select: (state: User) => Partial<User>, // projection to keep specific slices in sync
270
- parse: (stateString: string) => State, // custom parsing from storage - `JSON.parse` by default
271
- stringify: (state: User) => string, // custom stringification - `JSON.stringify` by default
272
- storage: () => sessionstorage, // factory to select storage to sync with
273
- })
274
- );
275
- ```
276
-
277
- ```ts
278
- @Component(...)
279
- public class SyncedStoreComponent {
280
- private syncStore = inject(SyncStore);
281
-
282
- updateFromStorage(): void {
283
- this.syncStore.readFromStorage(); // reads the stored item from storage and patches the state
284
- }
285
-
286
- updateStorage(): void {
287
- this.syncStore.writeToStorage(); // writes the current state to storage
288
- }
289
-
290
- clearStorage(): void {
291
- this.syncStore.clearStorage(); // clears the stored item in storage
292
- }
293
- }
294
- ```
295
-
296
- ## Redux Connector for the NgRx Signal Store `createReduxState()`
297
-
298
- The Redux Connector turns any `signalStore()` into a Gobal State Management Slice following the Redux pattern.
299
-
300
- It supports:
301
-
302
- ✅ Well-known NgRx Store Actions \
303
- ✅ Global Action `dispatch()` \
304
- ✅ Angular Lazy Loading \
305
- ✅ Auto-generated `provideNamedStore()` & `injectNamedStore()` Functions \
306
- ✅ Global Action to Store Method Mappers \
307
-
308
-
309
- ### Use a present Signal Store
310
-
311
- ```typescript
312
- export const FlightStore = signalStore(
313
- // State
314
- withEntities({ entity: type<Flight>(), collection: 'flight' }),
315
- withEntities({ entity: type<number>(), collection: 'hide' }),
316
- // Selectors
317
- withComputed(({ flightEntities, hideEntities }) => ({
318
- filteredFlights: computed(() => flightEntities()
319
- .filter(flight => !hideEntities().includes(flight.id))),
320
- flightCount: computed(() => flightEntities().length),
321
- })),
322
- // Updater
323
- withMethods(store => ({
324
- setFlights: (state: { flights: Flight[] }) => patchState(store,
325
- setAllEntities(state.flights, { collection: 'flight' })),
326
- updateFlight: (state: { flight: Flight }) => patchState(store,
327
- updateEntity({ id: state.flight.id, changes: state.flight }, { collection: 'flight' })),
328
- clearFlights: () => patchState(store,
329
- removeAllEntities({ collection: 'flight' })),
330
- })),
331
- // Effects
332
- withMethods((store, flightService = inject(FlightService)) => ({
333
- loadFlights: reduxMethod<FlightFilter, { flights: Flight[] }>(pipe(
334
- switchMap(filter => from(
335
- flightService.load({ from: filter.from, to: filter.to })
336
- )),
337
- map(flights => ({ flights })),
338
- ), store.setFlights),
339
- })),
340
- );
341
- ```
342
-
343
- ### Use well-known NgRx Store Actions
344
-
345
- ```typescript
346
- export const ticketActions = createActionGroup({
347
- source: 'tickets',
348
- events: {
349
- 'flights load': props<FlightFilter>(),
350
- 'flights loaded': props<{ flights: Flight[] }>(),
351
- 'flights loaded by passenger': props<{ flights: Flight[] }>(),
352
- 'flight update': props<{ flight: Flight }>(),
353
- 'flights clear': emptyProps()
354
- }
355
- });
356
- ```
357
-
358
- ### Map Actions to Methods
359
-
360
- ```typescript
361
- export const { provideFlightStore, injectFlightStore } =
362
- createReduxState('flight', FlightStore, store => withActionMappers(
363
- mapAction(
364
- // Filtered Action
365
- ticketActions.flightsLoad,
366
- // Side-Effect
367
- store.loadFlights,
368
- // Result Action
369
- ticketActions.flightsLoaded),
370
- mapAction(
371
- // Filtered Actions
372
- ticketActions.flightsLoaded, ticketActions.flightsLoadedByPassenger,
373
- // State Updater Method (like Reducers)
374
- store.setFlights
375
- ),
376
- mapAction(ticketActions.flightUpdate, store.updateFlight),
377
- mapAction(ticketActions.flightsClear, store.clearFlights),
378
- )
379
- );
380
- ```
381
-
382
- ### Register an Angular Dependency Injection Provider
383
-
384
- ```typescript
385
- export const appRoutes: Route[] = [
386
- {
387
- path: 'flight-search-redux-connector',
388
- providers: [provideFlightStore()],
389
- component: FlightSearchReducConnectorComponent
390
- },
391
- ];
392
- ```
393
-
394
- ### Use the Store in your Component
395
-
396
- ```typescript
397
- @Component({
398
- standalone: true,
399
- imports: [
400
- JsonPipe,
401
- RouterLink,
402
- FormsModule,
403
- FlightCardComponent
404
- ],
405
- selector: 'demo-flight-search-redux-connector',
406
- templateUrl: './flight-search.component.html',
407
- })
408
- export class FlightSearchReducConnectorComponent {
409
- private store = injectFlightStore();
410
-
411
- protected flights = this.store.flightEntities;
412
-
413
- protected search() {
414
- this.store.dispatch(
415
- ticketActions.flightsLoad({
416
- from: this.localState.filter.from(),
417
- to: this.localState.filter.to()
418
- })
419
- );
420
- }
421
-
422
- protected reset(): void {
423
- this.store.dispatch(ticketActions.flightsClear());
424
- }
425
- }
426
- ```
427
- ## FAQ
428
-
429
- ### Why is the version range to the `@ngrx/signals` dependency so strict?
430
-
431
- The strict version range for @ngrx/signals is necessary because some of our features rely on encapsulated types, which can change even in a patch release.
432
-
433
- To ensure stability, we clone these internal types and run integration tests for each release. This rigorous testing means we may need to update our version, even for a patch release, to maintain compatibility and stability.
434
-
435
- ### I have an idea for a new extension, can I contribute?
436
-
437
- Yes, please! We are always looking for new ideas and contributions.
438
-
439
- Since we don't want to bloat the library, we are very selective about new features. You also have to provide the following:
440
- - Good test coverage so that we can update it properly and don't have to call you 😉.
441
- - A use case showing the feature in action in the demo app of the repository.
442
- - An entry to the README.md.
443
-
444
- This project uses [pnpm](https://pnpm.io/) to manage dependencies and run tasks (for local development and CI).
445
-
446
- ### I require a feature that is not available in a lower version. What should I do?
447
-
448
- Please create an issue. Very likely, we are able to cherry-pick the feature into the lower version.
449
-
22
+ For more information, see the [NgRx Toolkit Documentation](https://github.com/angular-architects/ngrx-toolkit/blob/main/README.md/).
package/esm2022/index.mjs CHANGED
@@ -5,6 +5,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
7
  export * from './lib/with-pagination';
8
- export * from './lib/redux-connector';
9
- export * from './lib/redux-connector/rxjs-interop';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxHQUVaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICB3aXRoRGV2dG9vbHMsXG4gIHBhdGNoU3RhdGUsXG4gIHVwZGF0ZVN0YXRlLFxuICBBY3Rpb24sXG59IGZyb20gJy4vbGliL3dpdGgtZGV2dG9vbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC1yZWR1eCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtY2FsbC1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLXVuZG8tcmVkbyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLWRhdGEtc2VydmljZSc7XG5leHBvcnQgeyB3aXRoU3RvcmFnZVN5bmMsIFN5bmNDb25maWcgfSBmcm9tICcuL2xpYi93aXRoLXN0b3JhZ2Utc3luYyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLXBhZ2luYXRpb24nO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1eC1jb25uZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVkdXgtY29ubmVjdG9yL3J4anMtaW50ZXJvcCc7XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxHQUVaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIHdpdGhEZXZ0b29scyxcbiAgcGF0Y2hTdGF0ZSxcbiAgdXBkYXRlU3RhdGUsXG4gIEFjdGlvbixcbn0gZnJvbSAnLi9saWIvd2l0aC1kZXZ0b29scyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXRoLXJlZHV4JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l0aC1jYWxsLXN0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtdW5kby1yZWRvJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtZGF0YS1zZXJ2aWNlJztcbmV4cG9ydCB7IHdpdGhTdG9yYWdlU3luYywgU3luY0NvbmZpZyB9IGZyb20gJy4vbGliL3dpdGgtc3RvcmFnZS1zeW5jJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpdGgtcGFnaW5hdGlvbic7XG4iXX0=
@@ -1,8 +1,10 @@
1
- import { patchState, signalStoreFeature, withComputed, withHooks, withMethods, } from '@ngrx/signals';
1
+ import { patchState, signalStoreFeature, withComputed, withHooks, withMethods } from '@ngrx/signals';
2
2
  import { effect, signal, untracked, isSignal } from '@angular/core';
3
3
  import { capitalize } from './with-data-service';
4
4
  const defaultOptions = {
5
5
  maxStackSize: 100,
6
+ keys: [],
7
+ skip: 0,
6
8
  };
7
9
  export function getUndoRedoKeys(collections) {
8
10
  if (collections) {
@@ -15,7 +17,7 @@ export function getUndoRedoKeys(collections) {
15
17
  }
16
18
  return ['entityMap', 'ids', 'selectedIds', 'filter'];
17
19
  }
18
- export function withUndoRedo(options = {}) {
20
+ export function withUndoRedo(options) {
19
21
  let previous = null;
20
22
  let skipOnce = false;
21
23
  const normalized = {
@@ -34,7 +36,7 @@ export function withUndoRedo(options = {}) {
34
36
  canUndo.set(undoStack.length !== 0);
35
37
  canRedo.set(redoStack.length !== 0);
36
38
  };
37
- const keys = getUndoRedoKeys(normalized?.collections);
39
+ const keys = [...getUndoRedoKeys(normalized.collections), ...normalized.keys];
38
40
  return signalStoreFeature(withComputed(() => ({
39
41
  canUndo: canUndo.asReadonly(),
40
42
  canRedo: canRedo.asReadonly(),
@@ -76,6 +78,10 @@ export function withUndoRedo(options = {}) {
76
78
  }
77
79
  return acc;
78
80
  }, {});
81
+ if (normalized.skip > 0) {
82
+ normalized.skip--;
83
+ return;
84
+ }
79
85
  if (skipOnce) {
80
86
  skipOnce = false;
81
87
  return;
@@ -104,4 +110,4 @@ export function withUndoRedo(options = {}) {
104
110
  },
105
111
  }));
106
112
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11bmRvLXJlZG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtdW5kby1yZWRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBYXpELE1BQU0sY0FBYyxHQUE4QjtJQUNoRCxZQUFZLEVBQUUsR0FBRztDQUNsQixDQUFDO0FBRUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxXQUFzQjtJQUNwRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEMsR0FBRyxDQUFDLFdBQVc7WUFDZixHQUFHLENBQUMsS0FBSztZQUNULFdBQVcsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQzdCLEdBQUcsQ0FBQyxRQUFRO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBd0NELE1BQU0sVUFBVSxZQUFZLENBQzFCLFVBR0ksRUFBRTtJQUdOLElBQUksUUFBUSxHQUFxQixJQUFJLENBQUM7SUFDdEMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXJCLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEdBQUcsY0FBYztRQUNqQixHQUFHLE9BQU87S0FDWCxDQUFDO0lBRUYsRUFBRTtJQUNGLDRDQUE0QztJQUM1Qyxr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UUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsT0FBTztnQkFDVCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2dCQUVELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQy9DLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztnQkFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUVoQiwyQ0FBMkM7Z0JBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgcGF0Y2hTdGF0ZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhIb29rcyxcbiAgd2l0aE1ldGhvZHMsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBFbnRpdHlJZCwgRW50aXR5TWFwLCBFbnRpdHlTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMvZW50aXRpZXMnO1xuaW1wb3J0IHsgU2lnbmFsLCBlZmZlY3QsIHNpZ25hbCwgdW50cmFja2VkLCBpc1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5LCBjYXBpdGFsaXplIH0gZnJvbSAnLi93aXRoLWRhdGEtc2VydmljZSc7XG5pbXBvcnQge1xuICBFbnRpdHlDb21wdXRlZCxcbiAgTmFtZWRFbnRpdHlDb21wdXRlZCxcbn0gZnJvbSAnLi9zaGFyZWQvc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5cbmV4cG9ydCB0eXBlIFN0YWNrSXRlbSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IG51bWJlcjtcbiAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IDEwMCxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmRvUmVkb0tleXMoY29sbGVjdGlvbnM/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgaWYgKGNvbGxlY3Rpb25zKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25zLmZsYXRNYXAoKGMpID0+IFtcbiAgICAgIGAke2N9RW50aXR5TWFwYCxcbiAgICAgIGAke2N9SWRzYCxcbiAgICAgIGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShjKX1JZHNgLFxuICAgICAgYCR7Y31GaWx0ZXJgLFxuICAgIF0pO1xuICB9XG4gIHJldHVybiBbJ2VudGl0eU1hcCcsICdpZHMnLCAnc2VsZWN0ZWRJZHMnLCAnZmlsdGVyJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVW5kb1JlZG88Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4ob3B0aW9ucz86IHtcbiAgbWF4U3RhY2tTaXplPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uczogQ29sbGVjdGlvbltdO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIGNvbXB1dGVkOiBOYW1lZEVudGl0eUNvbXB1dGVkPEVudGl0eSwgQ29sbGVjdGlvbj47XG4gIH0sXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBjb21wdXRlZDoge1xuICAgICAgY2FuVW5kbzogU2lnbmFsPGJvb2xlYW4+O1xuICAgICAgY2FuUmVkbzogU2lnbmFsPGJvb2xlYW4+O1xuICAgIH07XG4gICAgbWV0aG9kczoge1xuICAgICAgdW5kbzogKCkgPT4gdm9pZDtcbiAgICAgIHJlZG86ICgpID0+IHZvaWQ7XG4gICAgfTtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbyhvcHRpb25zPzoge1xuICBtYXhTdGFja1NpemU/OiBudW1iZXI7XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IEVudGl0eVN0YXRlPEVudGl0eT47XG4gICAgY29tcHV0ZWQ6IEVudGl0eUNvbXB1dGVkPEVudGl0eT47XG4gIH0sXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBjb21wdXRlZDoge1xuICAgICAgY2FuVW5kbzogU2lnbmFsPGJvb2xlYW4+O1xuICAgICAgY2FuUmVkbzogU2lnbmFsPGJvb2xlYW4+O1xuICAgIH07XG4gICAgbWV0aG9kczoge1xuICAgICAgdW5kbzogKCkgPT4gdm9pZDtcbiAgICAgIHJlZG86ICgpID0+IHZvaWQ7XG4gICAgfTtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbzxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgb3B0aW9uczoge1xuICAgIG1heFN0YWNrU2l6ZT86IG51bWJlcjtcbiAgICBjb2xsZWN0aW9ucz86IENvbGxlY3Rpb25bXTtcbiAgfSA9IHt9XG4pOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuU2lnbmFsU3RvcmVGZWF0dXJlPGFueSwgYW55PiB7XG4gIGxldCBwcmV2aW91czogU3RhY2tJdGVtIHwgbnVsbCA9IG51bGw7XG4gIGxldCBza2lwT25jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICAvL1xuICAvLyBEZXNpZ24gRGVjaXNpb246IFRoaXMgZmVhdHVyZSBoYXMgaXRzIG93blxuICAvLyBpbnRlcm5hbCBzdGF0ZS5cbiAgLy9cblxuICBjb25zdCB1bmRvU3RhY2s6IFN0YWNrSXRlbVtdID0gW107XG4gIGNvbnN0IHJlZG9TdGFjazogU3RhY2tJdGVtW10gPSBbXTtcblxuICBjb25zdCBjYW5VbmRvID0gc2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgY2FuUmVkbyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgdXBkYXRlSW50ZXJuYWwgPSAoKSA9PiB7XG4gICAgY2FuVW5kby5zZXQodW5kb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gICAgY2FuUmVkby5zZXQocmVkb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gIH07XG5cbiAgY29uc3Qga2V5cyA9IGdldFVuZG9SZWRvS2V5cyhub3JtYWxpemVkPy5jb2xsZWN0aW9ucyk7XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoQ29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGNhblVuZG86IGNhblVuZG8uYXNSZWFkb25seSgpLFxuICAgICAgY2FuUmVkbzogY2FuUmVkby5hc1JlYWRvbmx5KCksXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB1bmRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICByZWRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIHJlZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZWRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICB9KSksXG4gICAgd2l0aEhvb2tzKHtcbiAgICAgIG9uSW5pdChzdG9yZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjYW5kID0ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzID0gc3RvcmVba2V5XTtcbiAgICAgICAgICAgIGlmIChzICYmIGlzU2lnbmFsKHMpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiBzKCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgIGlmIChza2lwT25jZSkge1xuICAgICAgICAgICAgc2tpcE9uY2UgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIERlZXAgQ29tcGFyaXNvbiB0byBwcmV2ZW50IGR1cGxpY2F0ZWQgZW50cmllc1xuICAgICAgICAgIC8vIG9uIHRoZSBzdGFjay4gVGhpcyBjYW4gZS5nLiBoYXBwZW4gYWZ0ZXIgYW4gdW5kb1xuICAgICAgICAgIC8vIGlmIHRoZSBjb21wb25lbnQgc2VuZHMgYmFjayB0aGUgdW5kb25lIGZpbHRlclxuICAgICAgICAgIC8vIHRvIHRoZSBzdG9yZS5cbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShjYW5kKSA9PT0gSlNPTi5zdHJpbmdpZnkocHJldmlvdXMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2xlYXIgcmVkb1N0YWNrIGFmdGVyIHJlY29yZGVkIGFjdGlvblxuICAgICAgICAgIHJlZG9TdGFjay5zcGxpY2UoMCk7XG5cbiAgICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICAgIHVuZG9TdGFjay5wdXNoKHByZXZpb3VzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVkb1N0YWNrLmxlbmd0aCA+IG5vcm1hbGl6ZWQubWF4U3RhY2tTaXplKSB7XG4gICAgICAgICAgICB1bmRvU3RhY2sudW5zaGlmdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHByZXZpb3VzID0gY2FuZDtcblxuICAgICAgICAgIC8vIERvbid0IHByb3BvZ2F0ZSBjdXJyZW50IHJlYWN0aXZlIGNvbnRleHRcbiAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdXBkYXRlSW50ZXJuYWwoKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KVxuICApO1xufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11bmRvLXJlZG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtdW5kby1yZWRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE1BQU0sY0FBYyxHQUE4QjtJQUNoRCxZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsRUFBRTtJQUNSLElBQUksRUFBRSxDQUFDO0NBQ1IsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBc0I7SUFDcEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxXQUFXO1lBQ2YsR0FBRyxDQUFDLEtBQUs7WUFDVCxXQUFXLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUM3QixHQUFHLENBQUMsUUFBUTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQWVELE1BQU0sVUFBVSxZQUFZLENBQ1EsT0FBZ0M7SUFhbEUsSUFBSSxRQUFRLEdBQXFCLElBQUksQ0FBQztJQUN0QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFckIsTUFBTSxVQUFVLEdBQUc7UUFDakIsR0FBRyxjQUFjO1FBQ2pCLEdBQUcsT0FBTztLQUNY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QUssQ0FBQztvQkFDakIsT0FBTztnQkFDVCxDQUFDO2dCQUVELEVBQUU7Z0JBQ0YsZ0RBQWdEO2dCQUNoRCxtREFBbUQ7Z0JBQ25ELGdEQUFnRDtnQkFDaEQsZ0JBQWdCO2dCQUNoQixFQUFFO2dCQUNGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3RELE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCx3Q0FBd0M7Z0JBQ3hDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXBCLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztnQkFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUMvQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLENBQUM7Z0JBRUQsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFFaEIsMkNBQTJDO2dCQUMzQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIHBhdGNoU3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgd2l0aENvbXB1dGVkLFxuICB3aXRoSG9va3MsXG4gIHdpdGhNZXRob2RzLFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFNpZ25hbCwgZWZmZWN0LCBzaWduYWwsIHVudHJhY2tlZCwgaXNTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICcuL3dpdGgtZGF0YS1zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgU3RhY2tJdGVtID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWRVbmRvUmVkb09wdGlvbnMgPSB7XG4gIG1heFN0YWNrU2l6ZTogbnVtYmVyO1xuICBjb2xsZWN0aW9ucz86IHN0cmluZ1tdO1xuICBrZXlzOiBzdHJpbmdbXTtcbiAgc2tpcDogbnVtYmVyLFxufTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5vcm1hbGl6ZWRVbmRvUmVkb09wdGlvbnMgPSB7XG4gIG1heFN0YWNrU2l6ZTogMTAwLFxuICBrZXlzOiBbXSxcbiAgc2tpcDogMCxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmRvUmVkb0tleXMoY29sbGVjdGlvbnM/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgaWYgKGNvbGxlY3Rpb25zKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25zLmZsYXRNYXAoKGMpID0+IFtcbiAgICAgIGAke2N9RW50aXR5TWFwYCxcbiAgICAgIGAke2N9SWRzYCxcbiAgICAgIGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShjKX1JZHNgLFxuICAgICAgYCR7Y31GaWx0ZXJgLFxuICAgIF0pO1xuICB9XG4gIHJldHVybiBbJ2VudGl0eU1hcCcsICdpZHMnLCAnc2VsZWN0ZWRJZHMnLCAnZmlsdGVyJ107XG59XG5cbnR5cGUgTm9uTmV2ZXI8VD4gPSBUIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IFQ7XG5cbnR5cGUgRXh0cmFjdEVudGl0eUNvbGxlY3Rpb248VD4gPSBUIGV4dGVuZHMgYCR7aW5mZXIgVX1FbnRpdGllc2AgPyBVIDogbmV2ZXI7XG5cbnR5cGUgRXh0cmFjdEVudGl0eUNvbGxlY3Rpb25zPFN0b3JlIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IE5vbk5ldmVyPHtcbiAgW0sgaW4ga2V5b2YgU3RvcmVbJ2NvbXB1dGVkJ11dOiBFeHRyYWN0RW50aXR5Q29sbGVjdGlvbjxLPjtcbn1ba2V5b2YgU3RvcmVbJ2NvbXB1dGVkJ11dPjtcblxudHlwZSBPcHRpb25zRm9yU3RhdGU8U3RvcmUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+ID0gUGFydGlhbDxPbWl0PE5vcm1hbGl6ZWRVbmRvUmVkb09wdGlvbnMsICdjb2xsZWN0aW9ucycgfCAna2V5cyc+PiAmIHtcbiAgY29sbGVjdGlvbnM/OiBFeHRyYWN0RW50aXR5Q29sbGVjdGlvbnM8U3RvcmU+W107XG4gIGtleXM/OiAoa2V5b2YgU3RvcmVbJ3N0YXRlJ10pW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFVuZG9SZWRvPFxuICBJbnB1dCBleHRlbmRzIEVtcHR5RmVhdHVyZVJlc3VsdD4ob3B0aW9ucz86IE9wdGlvbnNGb3JTdGF0ZTxJbnB1dD4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIElucHV0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gIGNvbXB1dGVkOiB7XG4gICAgY2FuVW5kbzogU2lnbmFsPGJvb2xlYW4+O1xuICAgIGNhblJlZG86IFNpZ25hbDxib29sZWFuPjtcbiAgfTtcbiAgbWV0aG9kczoge1xuICAgIHVuZG86ICgpID0+IHZvaWQ7XG4gICAgcmVkbzogKCkgPT4gdm9pZDtcbiAgfTtcbn1cbj4ge1xuICBsZXQgcHJldmlvdXM6IFN0YWNrSXRlbSB8IG51bGwgPSBudWxsO1xuICBsZXQgc2tpcE9uY2UgPSBmYWxzZTtcblxuICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG5cbiAgLy9cbiAgLy8gRGVzaWduIERlY2lzaW9uOiBUaGlzIGZlYXR1cmUgaGFzIGl0cyBvd25cbiAgLy8gaW50ZXJuYWwgc3RhdGUuXG4gIC8vXG5cbiAgY29uc3QgdW5kb1N0YWNrOiBTdGFja0l0ZW1bXSA9IFtdO1xuICBjb25zdCByZWRvU3RhY2s6IFN0YWNrSXRlbVtdID0gW107XG5cbiAgY29uc3QgY2FuVW5kbyA9IHNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IGNhblJlZG8gPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0IHVwZGF0ZUludGVybmFsID0gKCkgPT4ge1xuICAgIGNhblVuZG8uc2V0KHVuZG9TdGFjay5sZW5ndGggIT09IDApO1xuICAgIGNhblJlZG8uc2V0KHJlZG9TdGFjay5sZW5ndGggIT09IDApO1xuICB9O1xuXG4gIGNvbnN0IGtleXMgPSBbLi4uZ2V0VW5kb1JlZG9LZXlzKG5vcm1hbGl6ZWQuY29sbGVjdGlvbnMpLCAuLi5ub3JtYWxpemVkLmtleXNdO1xuXG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aENvbXB1dGVkKCgpID0+ICh7XG4gICAgICBjYW5VbmRvOiBjYW5VbmRvLmFzUmVhZG9ubHkoKSxcbiAgICAgIGNhblJlZG86IGNhblJlZG8uYXNSZWFkb25seSgpLFxuICAgIH0pKSxcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUpID0+ICh7XG4gICAgICB1bmRvKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gdW5kb1N0YWNrLnBvcCgpO1xuXG4gICAgICAgIGlmIChpdGVtICYmIHByZXZpb3VzKSB7XG4gICAgICAgICAgcmVkb1N0YWNrLnB1c2gocHJldmlvdXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICBza2lwT25jZSA9IHRydWU7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgaXRlbSk7XG4gICAgICAgICAgcHJldmlvdXMgPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlSW50ZXJuYWwoKTtcbiAgICAgIH0sXG4gICAgICByZWRvKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gcmVkb1N0YWNrLnBvcCgpO1xuXG4gICAgICAgIGlmIChpdGVtICYmIHByZXZpb3VzKSB7XG4gICAgICAgICAgdW5kb1N0YWNrLnB1c2gocHJldmlvdXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICBza2lwT25jZSA9IHRydWU7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgaXRlbSk7XG4gICAgICAgICAgcHJldmlvdXMgPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlSW50ZXJuYWwoKTtcbiAgICAgIH0sXG4gICAgfSkpLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBvbkluaXQoc3RvcmUpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjYW5kID0ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzID0gKHN0b3JlIGFzIFJlY29yZDxzdHJpbmcgfCBrZXlvZiBJbnB1dFsnc3RhdGUnXSwgdW5rbm93bj4pW2tleV07XG4gICAgICAgICAgICBpZiAocyAmJiBpc1NpZ25hbChzKSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBba2V5XTogcygpLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgICBpZiAobm9ybWFsaXplZC5za2lwID4gMCkge1xuICAgICAgICAgICAgbm9ybWFsaXplZC5za2lwLS07XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNraXBPbmNlKSB7XG4gICAgICAgICAgICBza2lwT25jZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gRGVlcCBDb21wYXJpc29uIHRvIHByZXZlbnQgZHVwbGljYXRlZCBlbnRyaWVzXG4gICAgICAgICAgLy8gb24gdGhlIHN0YWNrLiBUaGlzIGNhbiBlLmcuIGhhcHBlbiBhZnRlciBhbiB1bmRvXG4gICAgICAgICAgLy8gaWYgdGhlIGNvbXBvbmVudCBzZW5kcyBiYWNrIHRoZSB1bmRvbmUgZmlsdGVyXG4gICAgICAgICAgLy8gdG8gdGhlIHN0b3JlLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGNhbmQpID09PSBKU09OLnN0cmluZ2lmeShwcmV2aW91cykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDbGVhciByZWRvU3RhY2sgYWZ0ZXIgcmVjb3JkZWQgYWN0aW9uXG4gICAgICAgICAgcmVkb1N0YWNrLnNwbGljZSgwKTtcblxuICAgICAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICAgICAgdW5kb1N0YWNrLnB1c2gocHJldmlvdXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZWRvU3RhY2subGVuZ3RoID4gbm9ybWFsaXplZC5tYXhTdGFja1NpemUpIHtcbiAgICAgICAgICAgIHVuZG9TdGFjay51bnNoaWZ0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHJldmlvdXMgPSBjYW5kO1xuXG4gICAgICAgICAgLy8gRG9uJ3QgcHJvcG9nYXRlIGN1cnJlbnQgcmVhY3RpdmUgY29udGV4dFxuICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB1cGRhdGVJbnRlcm5hbCgpKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hcmNoaXRlY3RzLW5ncngtdG9vbGtpdC1yZWR1eC1jb25uZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9yZWR1eC1jb25uZWN0b3IvYW5ndWxhci1hcmNoaXRlY3RzLW5ncngtdG9vbGtpdC1yZWR1eC1jb25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { createReduxState, mapAction, withActionMappers, } from './src/lib/create-redux';
2
+ export { reduxMethod } from './src/lib/rxjs-interop/redux-method';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9yZWR1eC1jb25uZWN0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgY3JlYXRlUmVkdXhTdGF0ZSxcbiAgbWFwQWN0aW9uLFxuICB3aXRoQWN0aW9uTWFwcGVycyxcbn0gZnJvbSAnLi9zcmMvbGliL2NyZWF0ZS1yZWR1eCc7XG5leHBvcnQgeyByZWR1eE1ldGhvZCB9IGZyb20gJy4vc3JjL2xpYi9yeGpzLWludGVyb3AvcmVkdXgtbWV0aG9kJztcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlZHV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvcmVkdXgtY29ubmVjdG9yL3NyYy9saWIvY3JlYXRlLXJlZHV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFxQnJELE1BQU0sVUFBVSxTQUFTLENBR3ZCLEdBQUcsSUFJRjtJQUVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQTJELENBQUM7SUFDdkYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBa0UsQ0FBQztJQUU3RixJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkIsV0FBVyxHQUFHLFlBQVksSUFBSSxXQUFXLENBQUM7UUFDMUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUksSUFBNEIsQ0FBQyxHQUFHLENBQzdDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNpQixDQUFDO0lBRTdDLE9BQU87UUFDTCxLQUFLO1FBQ0wsV0FBVztRQUNYLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBRyxPQUFpRDtJQUVwRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUk5QixTQUFvQixFQUNwQixXQUFrQixFQUNsQixpQkFBMkY7SUFFM0YsTUFBTSxjQUFjLEdBQUksV0FBbUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxLQUFLLE1BQU0sQ0FBQztJQUMxRSxPQUFPO1FBQ0wsQ0FBQyxVQUFVLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1lBQ25HLGNBQWMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ2hDO2dCQUNFLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLEtBQUssRUFBRSxJQUFJO2dCQUNYLFVBQVUsRUFBRSxDQUNWLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUMzQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUMzQixFQUFFLENBQUMsR0FBRyxFQUFFO29CQUNSLElBQUksb0JBQW9CLEVBQUUsQ0FBQzt3QkFDekIsb0RBQW9EO29CQUN0RCxDQUFDO29CQUNELGdCQUFnQixDQUFDLG1CQUFtQixDQUNsQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FDekIsQ0FBQztnQkFDSixDQUFDO2FBQ0Y7U0FDRixDQUFDO1FBQ0YsQ0FBQyxTQUFTLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDMUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUNuQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLENBQ3BDO0tBQ29DLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBpbmplY3QsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBBY3Rpb25UeXBlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlL3NyYy9tb2RlbHNcIjtcbmltcG9ydCB7IENyZWF0ZVJlZHV4U3RhdGUsIEV4dHJhY3RBY3Rpb25UeXBlcywgTWFwcGVyVHlwZXMsIFN0b3JlIH0gZnJvbSBcIi4vbW9kZWxcIjtcbmltcG9ydCB7IFNpZ25hbFJlZHV4U3RvcmUsIGluamVjdFJlZHV4RGlzcGF0Y2ggfSBmcm9tIFwiLi9zaWduYWwtcmVkdXgtc3RvcmVcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIGlzQWN0aW9uQ3JlYXRvciB9IGZyb20gXCIuL3V0aWxcIjtcblxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQWN0aW9uPFxuICBDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXVxuPihcbiAgLi4uYXJnczogW1xuICAgIC4uLmNyZWF0b3JzOiBDcmVhdG9ycyxcbiAgICBzdG9yZU1ldGhvZDogKGFjdGlvbjogQWN0aW9uVHlwZTxDcmVhdG9yc1tudW1iZXJdPikgPT4gdW5rbm93blxuICBdXG4pOiBNYXBwZXJUeXBlczxDcmVhdG9ycz47XG5leHBvcnQgZnVuY3Rpb24gbWFwQWN0aW9uPFxuICBDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXSxcbiAgVFxuPihcbiAgLi4uYXJnczogW1xuICAgIC4uLmNyZWF0b3JzOiBDcmVhdG9ycyxcbiAgICBzdG9yZU1ldGhvZDogKGFjdGlvbjogQWN0aW9uVHlwZTxDcmVhdG9yc1tudW1iZXJdPiwgcmVzdWx0TWV0aG9kOiAoaW5wdXQ6IFQpID0+IHVua25vd24pID0+IHVua25vd24sXG4gICAgcmVzdWx0TWV0aG9kOiAoaW5wdXQ6IFQpID0+IHVua25vd25cbiAgXVxuKTogTWFwcGVyVHlwZXM8Q3JlYXRvcnM+O1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEFjdGlvbjxcbiAgQ3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW11cbj4oXG4gIC4uLmFyZ3M6IFtcbiAgICAuLi5jcmVhdG9yczogQ3JlYXRvcnMsXG4gICAgc3RvcmVNZXRob2Q6IChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4pID0+IHVua25vd24sXG4gICAgcmVzdWx0TWV0aG9kPzogKGlucHV0OiB1bmtub3duKSA9PiB1bmtub3duXG4gIF1cbik6IE1hcHBlclR5cGVzPENyZWF0b3JzPiB7XG4gIGxldCByZXN1bHRNZXRob2QgPSBhcmdzLnBvcCgpIGFzIHVua25vd24gYXMgKChpbnB1dDogdW5rbm93bikgPT4gdW5rbm93biApIHwgdW5kZWZpbmVkO1xuICBsZXQgc3RvcmVNZXRob2QgPSBhcmdzLnBvcCgpIGFzIHVua25vd24gYXMgKGFjdGlvbjogQWN0aW9uVHlwZTxDcmVhdG9yc1tudW1iZXJdPikgPT4gdW5rbm93bjtcblxuICBpZiAoaXNBY3Rpb25DcmVhdG9yKHN0b3JlTWV0aG9kKSkge1xuICAgIGFyZ3MucHVzaChzdG9yZU1ldGhvZCk7XG4gICAgc3RvcmVNZXRob2QgPSByZXN1bHRNZXRob2QgfHwgc3RvcmVNZXRob2Q7XG4gICAgcmVzdWx0TWV0aG9kID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgdHlwZXMgPSAoYXJncyBhcyB1bmtub3duIGFzIENyZWF0b3JzKS5tYXAoXG4gICAgKGNyZWF0b3IpID0+IGNyZWF0b3IudHlwZVxuICApIGFzIHVua25vd24gYXMgRXh0cmFjdEFjdGlvblR5cGVzPENyZWF0b3JzPjtcblxuICByZXR1cm4ge1xuICAgIHR5cGVzLFxuICAgIHN0b3JlTWV0aG9kLFxuICAgIHJlc3VsdE1ldGhvZFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFjdGlvbk1hcHBlcnMoXG4gIC4uLm1hcHBlcnM6IE1hcHBlclR5cGVzPEFjdGlvbkNyZWF0b3I8YW55LCBhbnk+W10+W11cbik6IE1hcHBlclR5cGVzPEFjdGlvbkNyZWF0b3I8YW55LCBhbnk+W10+W10ge1xuICByZXR1cm4gbWFwcGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZHV4U3RhdGU8XG4gIFN0b3JlTmFtZSBleHRlbmRzIHN0cmluZyxcbiAgU1RPUkUgZXh0ZW5kcyBTdG9yZVxuPihcbiAgc3RvcmVOYW1lOiBTdG9yZU5hbWUsXG4gIHNpZ25hbFN0b3JlOiBTVE9SRSxcbiAgd2l0aEFjdGlvbk1hcHBlcnM6IChzdG9yZTogSW5zdGFuY2VUeXBlPFNUT1JFPikgPT4gTWFwcGVyVHlwZXM8QWN0aW9uQ3JlYXRvcjxhbnksIGFueT5bXT5bXSxcbik6IENyZWF0ZVJlZHV4U3RhdGU8U3RvcmVOYW1lLCBTVE9SRT4ge1xuICBjb25zdCBpc1Jvb3RQcm92aWRlciA9IChzaWduYWxTdG9yZSBhcyBhbnkpPy7JtXByb3Y/LnByb3ZpZGVkSW4gPT09ICdyb290JztcbiAgcmV0dXJuIHtcbiAgICBbYHByb3ZpZGUke2NhcGl0YWxpemUoc3RvcmVOYW1lKX1TdG9yZWBdOiAoY29ubmVjdFJlZHV4RGV2dG9vbHMgPSBmYWxzZSkgPT4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICAgIGlzUm9vdFByb3ZpZGVyPyBbXSA6IHNpZ25hbFN0b3JlLFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgICBzaWduYWxSZWR1eFN0b3JlID0gaW5qZWN0KFNpZ25hbFJlZHV4U3RvcmUpLFxuICAgICAgICAgIHN0b3JlID0gaW5qZWN0KHNpZ25hbFN0b3JlKVxuICAgICAgICApID0+ICgpID0+IHtcbiAgICAgICAgICBpZiAoY29ubmVjdFJlZHV4RGV2dG9vbHMpIHtcbiAgICAgICAgICAgIC8vIGFkZFN0b3JlVG9SZWR1eERldnRvb2xzKHN0b3JlLCBzdG9yZU5hbWUsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsUmVkdXhTdG9yZS5jb25uZWN0RmVhdHVyZVN0b3JlKFxuICAgICAgICAgICAgd2l0aEFjdGlvbk1hcHBlcnMoc3RvcmUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0pLFxuICAgIFtgaW5qZWN0JHtjYXBpdGFsaXplKHN0b3JlTmFtZSl9U3RvcmVgXTogKCkgPT4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGluamVjdChzaWduYWxTdG9yZSksXG4gICAgICB7IGRpc3BhdGNoOiBpbmplY3RSZWR1eERpc3BhdGNoKCkgfVxuICAgIClcbiAgfSBhcyBDcmVhdGVSZWR1eFN0YXRlPFN0b3JlTmFtZSwgU1RPUkU+O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9yZWR1eC1jb25uZWN0b3Ivc3JjL2xpYi9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIFNpZ25hbCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVlcFNpZ25hbCB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMvc3JjL2RlZXAtc2lnbmFsJztcbmltcG9ydCB7XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVTaWduYWxzLFxufSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUtbW9kZWxzJztcbmltcG9ydCB7XG4gIEFjdGlvbixcbiAgQWN0aW9uQ3JlYXRvcixcbiAgQWN0aW9uVHlwZSxcbiAgUHJldHRpZnksXG59IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgVW5zdWJzY3JpYmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgSW5jbHVkZVByb3BUeXBlPFxuICBULFxuICBWLFxuICBXaXRoTmV2ZXJzID0ge1xuICAgIFtLIGluIGtleW9mIFRdOiBFeGNsdWRlPFRbS10sIHVuZGVmaW5lZD4gZXh0ZW5kcyBWXG4gICAgICA/IFRbS10gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICA/IEluY2x1ZGVQcm9wVHlwZTxUW0tdLCBWPlxuICAgICAgICA6IFRbS11cbiAgICAgIDogbmV2ZXI7XG4gIH1cbj4gPSBQcmV0dGlmeTxcbiAgUGljazxcbiAgICBXaXRoTmV2ZXJzLFxuICAgIHtcbiAgICAgIFtLIGluIGtleW9mIFdpdGhOZXZlcnNdOiBXaXRoTmV2ZXJzW0tdIGV4dGVuZHMgbmV2ZXJcbiAgICAgICAgPyBuZXZlclxuICAgICAgICA6IEsgZXh0ZW5kcyBzdHJpbmdcbiAgICAgICAgPyBLXG4gICAgICAgIDogbmV2ZXI7XG4gICAgfVtrZXlvZiBXaXRoTmV2ZXJzXVxuICA+XG4+O1xuXG5leHBvcnQgdHlwZSBTdG9yZSA9IFR5cGU8XG4gIFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgU3RhdGVTaWduYWxzPFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdFsnc3RhdGUnXT5cbj47XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVJlZHV4U3RhdGU8U3RvcmVOYW1lIGV4dGVuZHMgc3RyaW5nLCBTVE9SRSBleHRlbmRzIFN0b3JlPiA9IHtcbiAgW0sgaW4gU3RvcmVOYW1lIGFzIGBwcm92aWRlJHtDYXBpdGFsaXplPEs+fVN0b3JlYF06IChcbiAgICBjb25uZWN0UmVkdXhEZXZ0b29scz86IGJvb2xlYW5cbiAgKSA9PiBFbnZpcm9ubWVudFByb3ZpZGVycztcbn0gJiB7XG4gIFtLIGluIFN0b3JlTmFtZSBhcyBgaW5qZWN0JHtDYXBpdGFsaXplPEs+fVN0b3JlYF06ICgpID0+IEluamVjdGFibGVSZWR1eFNsaWNlPFNUT1JFPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdG9yczxTVE9SRSBleHRlbmRzIFN0b3JlPiA9IEluY2x1ZGVQcm9wVHlwZTxcbiAgSW5zdGFuY2VUeXBlPFNUT1JFPixcbiAgU2lnbmFsPHVua25vd24+IHwgRGVlcFNpZ25hbDx1bmtub3duPlxuPjtcbmV4cG9ydCB0eXBlIERpc3BhdGNoID0ge1xuICBkaXNwYXRjaDogKFxuICAgIGlucHV0OiBBY3Rpb24gfCBPYnNlcnZhYmxlPEFjdGlvbj4gfCBTaWduYWw8QWN0aW9uPlxuICApID0+IFVuc3Vic2NyaWJhYmxlO1xufTtcbmV4cG9ydCB0eXBlIEluamVjdGFibGVSZWR1eFNsaWNlPFNUT1JFIGV4dGVuZHMgU3RvcmU+ID0gU2VsZWN0b3JzPFNUT1JFPiAmXG4gIERpc3BhdGNoO1xuXG5leHBvcnQgdHlwZSBFeHRyYWN0QWN0aW9uVHlwZXM8Q3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW10+ID0ge1xuICBbS2V5IGluIGtleW9mIENyZWF0b3JzXTogQ3JlYXRvcnNbS2V5XSBleHRlbmRzIEFjdGlvbkNyZWF0b3I8aW5mZXIgVD5cbiAgICA/IFRcbiAgICA6IG5ldmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25NZXRob2Q8VCwgViBleHRlbmRzIEFjdGlvbiA9IEFjdGlvbj4ge1xuICAoYWN0aW9uOiBWKTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZU1ldGhvZDxcbiAgQ3JlYXRvcnMgZXh0ZW5kcyByZWFkb25seSBBY3Rpb25DcmVhdG9yW10sXG4gIFJlc3VsdFN0YXRlID0gdW5rbm93blxuPiB7XG4gIChhY3Rpb246IEFjdGlvblR5cGU8Q3JlYXRvcnNbbnVtYmVyXT4pOiBSZXN1bHRTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBwZXJUeXBlczxDcmVhdG9ycyBleHRlbmRzIHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXT4ge1xuICB0eXBlczogRXh0cmFjdEFjdGlvblR5cGVzPENyZWF0b3JzPjtcbiAgc3RvcmVNZXRob2Q6IFN0b3JlTWV0aG9kPENyZWF0b3JzPjtcbiAgcmVzdWx0TWV0aG9kPzogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bjtcbn1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvcmVkdXgtY29ubmVjdG9yL3NyYy9saWIvcnhqcy1pbnRlcm9wL3JlZHV4LW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUE4QixHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBcUI3RCxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFrRSxFQUNsRSxvQkFFQyxFQUNELE1BRUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsSUFBSSxPQUFPLG9CQUFvQixLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQy9DLElBQUksY0FBOEIsQ0FBQztRQUNuQyxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQ3JCLEtBQTJCLEVBQzNCLFlBQVksR0FBRyxvQkFBb0IsRUFDbkMsRUFBRTtZQUVGLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFRLElBQUksQ0FDN0MsU0FBUyxFQUNULEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FDbEIsRUFBRTtnQkFDRCxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLElBQUksUUFBUTthQUN2QyxDQUFDLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxjQUFjLEdBQUcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUU1RSxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQStDLENBQUM7UUFFakQsYUFBYSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFaEUsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFRLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgU2lnbmFsLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgcnhNZXRob2QgfSBmcm9tIFwiQG5ncngvc2lnbmFscy9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFVuc3Vic2NyaWJhYmxlLCBtYXAsIHBpcGUgfSBmcm9tIFwicnhqc1wiO1xuXG5cbnR5cGUgUnhNZXRob2RJbnB1dDxJbnB1dD4gPSBJbnB1dCB8IE9ic2VydmFibGU8SW5wdXQ+IHwgU2lnbmFsPElucHV0PjtcblxudHlwZSBSeE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQgPSBJbnB1dCwgTWV0aG9kUmVzdWx0ID0gdW5rbm93bj4gPSAoKFxuICBpbnB1dDogUnhNZXRob2RJbnB1dDxJbnB1dD4sXG4gIHJlc3VsdE1ldGhvZDogKGlucHV0OiBNZXRob2RJbnB1dCkgPT4gTWV0aG9kUmVzdWx0XG4pID0+IFVuc3Vic2NyaWJhYmxlKSAmIFVuc3Vic2NyaWJhYmxlO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVkdXhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0ID0gSW5wdXQ+KFxuICBnZW5lcmF0b3I6IChzb3VyY2UkOiBPYnNlcnZhYmxlPElucHV0PikgPT4gT2JzZXJ2YWJsZTxNZXRob2RJbnB1dD4sXG4gIGNvbmZpZz86IHsgaW5qZWN0b3I/OiBJbmplY3RvciB9XG4pOiBSeE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHJlZHV4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCA9IElucHV0LCBNZXRob2RSZXN1bHQgPSB1bmtub3duPihcbiAgZ2VuZXJhdG9yOiAoc291cmNlJDogT2JzZXJ2YWJsZTxJbnB1dD4pID0+IE9ic2VydmFibGU8TWV0aG9kSW5wdXQ+LFxuICByZXN1bHRNZXRob2Q6IChpbnB1dDogTWV0aG9kSW5wdXQpID0+IE1ldGhvZFJlc3VsdCxcbiAgY29uZmlnPzoge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3JcbiAgfVxuKTogUnhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0LCBNZXRob2RSZXN1bHQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHJlZHV4TWV0aG9kPElucHV0LCBNZXRob2RJbnB1dCA9IElucHV0LCBNZXRob2RSZXN1bHQgPSB1bmtub3duPihcbiAgZ2VuZXJhdG9yOiAoc291cmNlJDogT2JzZXJ2YWJsZTxJbnB1dD4pID0+IE9ic2VydmFibGU8TWV0aG9kSW5wdXQ+LFxuICByZXN1bHRNZXRob2RPckNvbmZpZz86ICgoaW5wdXQ6IE1ldGhvZElucHV0KSA9PiBNZXRob2RSZXN1bHQpIHwge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3JcbiAgfSxcbiAgY29uZmlnPzoge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3JcbiAgfVxuKTogUnhNZXRob2Q8SW5wdXQsIE1ldGhvZElucHV0LCBNZXRob2RSZXN1bHQ+ICB7XG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBpZiAodHlwZW9mIHJlc3VsdE1ldGhvZE9yQ29uZmlnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbGV0IHVuc3Vic2NyaWJhYmxlOiBVbnN1YnNjcmliYWJsZTtcbiAgICBjb25zdCBpbnB1dFJlc3VsdEZuID0gKChcbiAgICAgIGlucHV0OiBSeE1ldGhvZElucHV0PElucHV0PixcbiAgICAgIHJlc3VsdE1ldGhvZCA9IHJlc3VsdE1ldGhvZE9yQ29uZmlnXG4gICAgKSA9PiB7XG5cbiAgICAgIGNvbnN0IHJ4TWV0aG9kV2l0aFJlc3VsdCA9IHJ4TWV0aG9kPElucHV0PihwaXBlKFxuICAgICAgICBnZW5lcmF0b3IsXG4gICAgICAgIG1hcChyZXN1bHRNZXRob2QpXG4gICAgICApLCB7XG4gICAgICAgIC4uLihjb25maWcgfHwge30pLFxuICAgICAgICBpbmplY3RvcjogY29uZmlnPy5pbmplY3RvciB8fCBpbmplY3RvclxuICAgICAgfSk7XG4gICAgICBjb25zdCByeFdpdGhJbnB1dCA9IHJ4TWV0aG9kV2l0aFJlc3VsdChpbnB1dCk7XG4gICAgICB1bnN1YnNjcmliYWJsZSA9IHsgdW5zdWJzY3JpYmU6IHJ4V2l0aElucHV0LnVuc3Vic2NyaWJlLmJpbmQocnhXaXRoSW5wdXQpIH07XG5cbiAgICAgIHJldHVybiByeFdpdGhJbnB1dDtcbiAgICB9KSBhcyBSeE1ldGhvZDxJbnB1dCwgTWV0aG9kSW5wdXQsIE1ldGhvZFJlc3VsdD47XG5cbiAgICBpbnB1dFJlc3VsdEZuLnVuc3Vic2NyaWJlID0gKCkgPT4gdW5zdWJzY3JpYmFibGU/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gaW5wdXRSZXN1bHRGbjtcbiAgfVxuXG4gIHJldHVybiByeE1ldGhvZDxJbnB1dD4oZ2VuZXJhdG9yLCByZXN1bHRNZXRob2RPckNvbmZpZyk7XG59XG4iXX0=