@ngrx-traits/core 12.1.2 → 13.0.0-beta.2

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 (81) hide show
  1. package/cache/cache.service.d.ts +2 -1
  2. package/esm2020/cache/cache.actions.mjs +6 -0
  3. package/esm2020/cache/cache.models.mjs +30 -0
  4. package/esm2020/cache/cache.module.mjs +18 -0
  5. package/esm2020/cache/cache.reducer.mjs +138 -0
  6. package/esm2020/cache/cache.selectors.mjs +5 -0
  7. package/esm2020/cache/cache.service.mjs +72 -0
  8. package/esm2020/cache/index.mjs +7 -0
  9. package/esm2020/create-entity-feature.mjs +404 -0
  10. package/esm2020/index.mjs +7 -0
  11. package/esm2020/local-store/disable-local-trait-effects.token.mjs +7 -0
  12. package/esm2020/local-store/index.mjs +3 -0
  13. package/esm2020/local-store/traits-local-store.mjs +147 -0
  14. package/esm2020/model.mjs +2 -0
  15. package/esm2020/ngrx-traits-core.mjs +5 -0
  16. package/esm2020/public_api.mjs +2 -0
  17. package/esm2020/testing/index.mjs +2 -0
  18. package/esm2020/testing/ngrx-traits-core-testing.mjs +5 -0
  19. package/esm2020/testing/provide-mock-local-traits.mjs +36 -0
  20. package/esm2020/testing/public_api.mjs +2 -0
  21. package/esm2020/trait-effect.mjs +32 -0
  22. package/esm2020/util.mjs +70 -0
  23. package/fesm2015/{ngrx-traits-core-testing.js → ngrx-traits-core-testing.mjs} +1 -1
  24. package/fesm2015/ngrx-traits-core-testing.mjs.map +1 -0
  25. package/fesm2015/{ngrx-traits-core.js → ngrx-traits-core.mjs} +13 -13
  26. package/fesm2015/ngrx-traits-core.mjs.map +1 -0
  27. package/{esm2015/testing/provide-mock-local-traits.js → fesm2020/ngrx-traits-core-testing.mjs} +12 -8
  28. package/fesm2020/ngrx-traits-core-testing.mjs.map +1 -0
  29. package/fesm2020/ngrx-traits-core.mjs +915 -0
  30. package/fesm2020/ngrx-traits-core.mjs.map +1 -0
  31. package/package.json +36 -14
  32. package/src/lib/cache/README.md +100 -0
  33. package/src/lib/local-store/README.md +172 -0
  34. package/testing/package.json +5 -5
  35. package/bundles/ngrx-traits-core-testing.umd.js +0 -52
  36. package/bundles/ngrx-traits-core-testing.umd.js.map +0 -1
  37. package/bundles/ngrx-traits-core.umd.js +0 -1442
  38. package/bundles/ngrx-traits-core.umd.js.map +0 -1
  39. package/esm2015/cache/cache.actions.js +0 -6
  40. package/esm2015/cache/cache.actions.js.map +0 -1
  41. package/esm2015/cache/cache.models.js +0 -31
  42. package/esm2015/cache/cache.models.js.map +0 -1
  43. package/esm2015/cache/cache.module.js +0 -18
  44. package/esm2015/cache/cache.module.js.map +0 -1
  45. package/esm2015/cache/cache.reducer.js +0 -141
  46. package/esm2015/cache/cache.reducer.js.map +0 -1
  47. package/esm2015/cache/cache.selectors.js +0 -5
  48. package/esm2015/cache/cache.selectors.js.map +0 -1
  49. package/esm2015/cache/cache.service.js +0 -72
  50. package/esm2015/cache/cache.service.js.map +0 -1
  51. package/esm2015/cache/index.js +0 -7
  52. package/esm2015/cache/index.js.map +0 -1
  53. package/esm2015/create-entity-feature.js +0 -409
  54. package/esm2015/create-entity-feature.js.map +0 -1
  55. package/esm2015/index.js +0 -7
  56. package/esm2015/index.js.map +0 -1
  57. package/esm2015/local-store/disable-local-trait-effects.token.js +0 -7
  58. package/esm2015/local-store/disable-local-trait-effects.token.js.map +0 -1
  59. package/esm2015/local-store/index.js +0 -3
  60. package/esm2015/local-store/index.js.map +0 -1
  61. package/esm2015/local-store/traits-local-store.js +0 -148
  62. package/esm2015/local-store/traits-local-store.js.map +0 -1
  63. package/esm2015/model.js +0 -2
  64. package/esm2015/model.js.map +0 -1
  65. package/esm2015/ngrx-traits-core.js +0 -5
  66. package/esm2015/ngrx-traits-core.js.map +0 -1
  67. package/esm2015/public_api.js +0 -2
  68. package/esm2015/public_api.js.map +0 -1
  69. package/esm2015/testing/index.js +0 -2
  70. package/esm2015/testing/index.js.map +0 -1
  71. package/esm2015/testing/ngrx-traits-core-testing.js +0 -5
  72. package/esm2015/testing/ngrx-traits-core-testing.js.map +0 -1
  73. package/esm2015/testing/provide-mock-local-traits.js.map +0 -1
  74. package/esm2015/testing/public_api.js +0 -2
  75. package/esm2015/testing/public_api.js.map +0 -1
  76. package/esm2015/trait-effect.js +0 -32
  77. package/esm2015/trait-effect.js.map +0 -1
  78. package/esm2015/util.js +0 -67
  79. package/esm2015/util.js.map +0 -1
  80. package/fesm2015/ngrx-traits-core-testing.js.map +0 -1
  81. package/fesm2015/ngrx-traits-core.js.map +0 -1
@@ -0,0 +1,147 @@
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { createFeatureSelector, ReducerManager, Store } from '@ngrx/store';
3
+ import { Actions, EffectSources } from '@ngrx/effects';
4
+ import { getDestroyActionName, TraitEffect } from '../trait-effect';
5
+ import { DISABLE_LOCAL_TRAIT_EFFECTS } from './disable-local-trait-effects.token';
6
+ import * as i0 from "@angular/core";
7
+ let id = 0;
8
+ function uniqueComponentId() {
9
+ return id++;
10
+ }
11
+ /**
12
+ * Builds traitFactory and registers effects and reducers with
13
+ * a generated component id, returns build actions and selectors
14
+ * and a destroy method that will unergister the effects and reducers
15
+ * when called, and a addEffect which can be use to register extra effects
16
+ *
17
+ * Used inside TraitsLocalStore, can be used to create your
18
+ * own Component Service without extending TraitsLocalStore
19
+ * @param injector
20
+ * @param componentName
21
+ * @param traitFactory
22
+ */
23
+ export function buildLocalTraits(injector, componentName, traitFactory) {
24
+ const reducers = injector.get(ReducerManager);
25
+ const effects = injector.get(EffectSources);
26
+ const store = injector.get(Store);
27
+ const componentId = `${componentName}_${uniqueComponentId()}`;
28
+ const traits = traitFactory({
29
+ featureSelector: createFeatureSelector(componentId),
30
+ actionsGroupKey: `[${componentId}]`,
31
+ });
32
+ traits.reducer && reducers.addReducer(componentId, traits.reducer);
33
+ const providers = (traits.effects && [...traits.effects.map((e) => ({ provide: e }))]) || [];
34
+ const disableLocalTraitsEffects = injector.get(DISABLE_LOCAL_TRAIT_EFFECTS, false);
35
+ if (!disableLocalTraitsEffects) {
36
+ const i = Injector.create({
37
+ providers: providers,
38
+ parent: injector,
39
+ });
40
+ traits.effects?.forEach((e) => {
41
+ const effect = i.get(e);
42
+ effect.componentId = componentId;
43
+ effects.addEffects(effect);
44
+ });
45
+ }
46
+ function destroy() {
47
+ store.dispatch({ type: getDestroyActionName(componentId) });
48
+ /**
49
+ * A service that extends TraitsLocalStore and other component service are destroyed
50
+ * before the component that depends on them, this causes that any subscriptions
51
+ * to selectors of the TraitsLocalStore could fail because the store state is removed before
52
+ * they are unsubscribe by the onDestroy of the component. Executing reducers.removeReducer
53
+ * inside setTimeout ensures the state is remove after the component onDestroy was called,
54
+ * avoiding the before mentioned possible issues.
55
+ */
56
+ setTimeout(() => reducers.removeReducer(componentId));
57
+ }
58
+ return {
59
+ destroy,
60
+ actions: traits.actions,
61
+ selectors: traits.selectors,
62
+ addEffects(localEffect) {
63
+ localEffect.componentId = componentId;
64
+ effects.addEffects(localEffect);
65
+ },
66
+ };
67
+ }
68
+ /**
69
+ * Class used to create local traits service, receives a trait factory, which will be
70
+ * built and its reducers and effect register using a dynamic id when the service is built
71
+ * and get destroyed when the onDestroy lifecycle method of the service is called, if the service
72
+ * has effects this.traits.addEffects(this) should be call in the constructor
73
+ *
74
+ * @example
75
+ * const productFeatureFactory = createEntityFeatureFactory(
76
+ * { entityName: 'product' },
77
+ * addLoadEntitiesTrait<Product>(),
78
+ * addSelectEntityTrait<Product>(),
79
+ * );
80
+ *
81
+ * Injectable()
82
+ * export class ProductsLocalTraits extends TraitsLocalStore<
83
+ * typeof productFeatureFactory
84
+ * > {
85
+ * loadProducts$ = createEffect(() =>
86
+ * this.actions$.pipe(
87
+ * ofType(this.localActions.loadProducts),
88
+ * switchMap(() =>
89
+ * //call your service to get the products data
90
+ * this.productService.getProducts().pipe(
91
+ * map((res) =>
92
+ * this.localActions.loadProductsSuccess({ entities: res.resultList })
93
+ * ),
94
+ * catchError(() => of(this.localActions.loadProductsFail()))
95
+ * )
96
+ * )
97
+ * )
98
+ * );
99
+ *
100
+ * constructor(injector: Injector, private productService: ProductService) {
101
+ * super(injector);
102
+ * this.traits.addEffects(this); // IMPORTANT! add this line if the service has effects
103
+ * }
104
+ *
105
+ * setup(): LocalTraitsConfig<typeof productFeatureFactory> {
106
+ * return {
107
+ * componentName: 'ProductsPickerComponent',
108
+ * traitsFactory: productFeatureFactory,
109
+ * };
110
+ * }
111
+ * }
112
+ *
113
+ * // use in component later
114
+ *
115
+ * Component({
116
+ * selector: 'some-component',
117
+ * template: `<div> some content</div> `,
118
+ * providers: [ProductsLocalTraits],
119
+ * changeDetection: ChangeDetectionStrategy.OnPush,
120
+ * })
121
+ * export class ProductSelectDialogComponent implements OnInit {
122
+ * constructor(private store: Store, private traits: ProductsLocalTraits) {}
123
+ *
124
+ * ngOnInit() {
125
+ * this.store.dispatch(this.traits.localActions.loadProducts());
126
+ * }
127
+ * }
128
+ */
129
+ export class TraitsLocalStore extends TraitEffect {
130
+ constructor(injector) {
131
+ super(injector.get(Actions), injector.get(Store));
132
+ this.injector = injector;
133
+ const config = this.setup();
134
+ this.traits = buildLocalTraits(this.injector, config.componentName, config.traitsFactory);
135
+ this.localActions = this.traits.actions;
136
+ this.localSelectors = this.traits.selectors;
137
+ }
138
+ ngOnDestroy() {
139
+ this.traits.destroy();
140
+ }
141
+ }
142
+ TraitsLocalStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitsLocalStore, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
143
+ TraitsLocalStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitsLocalStore });
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitsLocalStore, decorators: [{
145
+ type: Injectable
146
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaXRzLWxvY2FsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb3JlL3NyYy9saWIvbG9jYWwtc3RvcmUvdHJhaXRzLWxvY2FsLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFbEYsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ1gsU0FBUyxpQkFBaUI7SUFDeEIsT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FHOUIsUUFBa0IsRUFBRSxhQUFxQixFQUFFLFlBQWU7SUFDMUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsTUFBTSxXQUFXLEdBQUcsR0FBRyxhQUFhLElBQUksaUJBQWlCLEVBQUUsRUFBRSxDQUFDO0lBRTlELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixlQUFlLEVBQUUscUJBQXFCLENBQVEsV0FBVyxDQUFDO1FBQzFELGVBQWUsRUFBRSxJQUFJLFdBQVcsR0FBRztLQUNwQyxDQUFrQixDQUFDO0lBRXBCLE1BQU0sQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5FLE1BQU0sU0FBUyxHQUNiLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFN0UsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUM1QywyQkFBMkIsRUFDM0IsS0FBSyxDQUNOLENBQUM7SUFDRixJQUFJLENBQUMseUJBQXlCLEVBQUU7UUFDOUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUN4QixTQUFTLEVBQUUsU0FBUztZQUNwQixNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFnQixDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELFNBQVMsT0FBTztRQUNkLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVEOzs7Ozs7O1dBT0c7UUFDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTztRQUNQLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsVUFBVSxDQUFDLFdBQXdCO1lBQ2pDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBYUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRERztBQUVILE1BQU0sT0FBZ0IsZ0JBR3BCLFNBQVEsV0FBVztJQWFuQixZQUEwQixRQUFrQjtRQUMxQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFEMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FDNUIsSUFBSSxDQUFDLFFBQVEsRUFDYixNQUFNLENBQUMsYUFBYSxFQUNwQixNQUFNLENBQUMsYUFBYSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFJRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs4R0FoQ21CLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRW50aXR5RmVhdHVyZUZhY3RvcnksIEVudGl0eUZlYXR1cmVGYWN0b3J5IH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlRmVhdHVyZVNlbGVjdG9yLCBSZWR1Y2VyTWFuYWdlciwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBFZmZlY3RTb3VyY2VzIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBnZXREZXN0cm95QWN0aW9uTmFtZSwgVHJhaXRFZmZlY3QgfSBmcm9tICcuLi90cmFpdC1lZmZlY3QnO1xuaW1wb3J0IHsgRElTQUJMRV9MT0NBTF9UUkFJVF9FRkZFQ1RTIH0gZnJvbSAnLi9kaXNhYmxlLWxvY2FsLXRyYWl0LWVmZmVjdHMudG9rZW4nO1xuXG5sZXQgaWQgPSAwO1xuZnVuY3Rpb24gdW5pcXVlQ29tcG9uZW50SWQoKSB7XG4gIHJldHVybiBpZCsrO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0cmFpdEZhY3RvcnkgYW5kIHJlZ2lzdGVycyBlZmZlY3RzIGFuZCByZWR1Y2VycyB3aXRoXG4gKiBhIGdlbmVyYXRlZCBjb21wb25lbnQgaWQsIHJldHVybnMgYnVpbGQgYWN0aW9ucyBhbmQgc2VsZWN0b3JzXG4gKiBhbmQgYSBkZXN0cm95IG1ldGhvZCB0aGF0IHdpbGwgdW5lcmdpc3RlciB0aGUgZWZmZWN0cyBhbmQgcmVkdWNlcnNcbiAqIHdoZW4gY2FsbGVkLCBhbmQgYSBhZGRFZmZlY3Qgd2hpY2ggY2FuIGJlIHVzZSB0byByZWdpc3RlciBleHRyYSBlZmZlY3RzXG4gKlxuICogVXNlZCBpbnNpZGUgVHJhaXRzTG9jYWxTdG9yZSwgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHlvdXJcbiAqIG93biBDb21wb25lbnQgU2VydmljZSB3aXRob3V0IGV4dGVuZGluZyBUcmFpdHNMb2NhbFN0b3JlXG4gKiBAcGFyYW0gaW5qZWN0b3JcbiAqIEBwYXJhbSBjb21wb25lbnROYW1lXG4gKiBAcGFyYW0gdHJhaXRGYWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExvY2FsVHJhaXRzPFxuICBTdGF0ZSxcbiAgRiBleHRlbmRzIEJhc2VFbnRpdHlGZWF0dXJlRmFjdG9yeTxhbnksIGFueSwgYW55PlxuPihpbmplY3RvcjogSW5qZWN0b3IsIGNvbXBvbmVudE5hbWU6IHN0cmluZywgdHJhaXRGYWN0b3J5OiBGKSB7XG4gIGNvbnN0IHJlZHVjZXJzID0gaW5qZWN0b3IuZ2V0KFJlZHVjZXJNYW5hZ2VyKTtcbiAgY29uc3QgZWZmZWN0cyA9IGluamVjdG9yLmdldChFZmZlY3RTb3VyY2VzKTtcbiAgY29uc3Qgc3RvcmUgPSBpbmplY3Rvci5nZXQoU3RvcmUpO1xuICBjb25zdCBjb21wb25lbnRJZCA9IGAke2NvbXBvbmVudE5hbWV9XyR7dW5pcXVlQ29tcG9uZW50SWQoKX1gO1xuXG4gIGNvbnN0IHRyYWl0cyA9IHRyYWl0RmFjdG9yeSh7XG4gICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8U3RhdGU+KGNvbXBvbmVudElkKSxcbiAgICBhY3Rpb25zR3JvdXBLZXk6IGBbJHtjb21wb25lbnRJZH1dYCxcbiAgfSkgYXMgUmV0dXJuVHlwZTxGPjtcblxuICB0cmFpdHMucmVkdWNlciAmJiByZWR1Y2Vycy5hZGRSZWR1Y2VyKGNvbXBvbmVudElkLCB0cmFpdHMucmVkdWNlcik7XG5cbiAgY29uc3QgcHJvdmlkZXJzID1cbiAgICAodHJhaXRzLmVmZmVjdHMgJiYgWy4uLnRyYWl0cy5lZmZlY3RzLm1hcCgoZSkgPT4gKHsgcHJvdmlkZTogZSB9KSldKSB8fCBbXTtcblxuICBjb25zdCBkaXNhYmxlTG9jYWxUcmFpdHNFZmZlY3RzID0gaW5qZWN0b3IuZ2V0KFxuICAgIERJU0FCTEVfTE9DQUxfVFJBSVRfRUZGRUNUUyxcbiAgICBmYWxzZVxuICApO1xuICBpZiAoIWRpc2FibGVMb2NhbFRyYWl0c0VmZmVjdHMpIHtcbiAgICBjb25zdCBpID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogcHJvdmlkZXJzLFxuICAgICAgcGFyZW50OiBpbmplY3RvcixcbiAgICB9KTtcblxuICAgIHRyYWl0cy5lZmZlY3RzPy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBjb25zdCBlZmZlY3QgPSBpLmdldChlKSBhcyBUcmFpdEVmZmVjdDtcbiAgICAgIGVmZmVjdC5jb21wb25lbnRJZCA9IGNvbXBvbmVudElkO1xuICAgICAgZWZmZWN0cy5hZGRFZmZlY3RzKGVmZmVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogZ2V0RGVzdHJveUFjdGlvbk5hbWUoY29tcG9uZW50SWQpIH0pO1xuICAgIC8qKlxuICAgICAqIEEgc2VydmljZSB0aGF0IGV4dGVuZHMgVHJhaXRzTG9jYWxTdG9yZSBhbmQgb3RoZXIgY29tcG9uZW50IHNlcnZpY2UgYXJlIGRlc3Ryb3llZFxuICAgICAqIGJlZm9yZSB0aGUgY29tcG9uZW50IHRoYXQgZGVwZW5kcyBvbiB0aGVtLCB0aGlzIGNhdXNlcyB0aGF0IGFueSBzdWJzY3JpcHRpb25zXG4gICAgICogdG8gc2VsZWN0b3JzIG9mIHRoZSBUcmFpdHNMb2NhbFN0b3JlIGNvdWxkIGZhaWwgYmVjYXVzZSB0aGUgc3RvcmUgc3RhdGUgaXMgcmVtb3ZlZCBiZWZvcmVcbiAgICAgKiB0aGV5IGFyZSB1bnN1YnNjcmliZSBieSB0aGUgb25EZXN0cm95IG9mIHRoZSBjb21wb25lbnQuIEV4ZWN1dGluZyByZWR1Y2Vycy5yZW1vdmVSZWR1Y2VyXG4gICAgICogaW5zaWRlIHNldFRpbWVvdXQgZW5zdXJlcyB0aGUgc3RhdGUgaXMgcmVtb3ZlIGFmdGVyIHRoZSBjb21wb25lbnQgb25EZXN0cm95IHdhcyBjYWxsZWQsXG4gICAgICogYXZvaWRpbmcgdGhlIGJlZm9yZSBtZW50aW9uZWQgcG9zc2libGUgaXNzdWVzLlxuICAgICAqL1xuICAgIHNldFRpbWVvdXQoKCkgPT4gcmVkdWNlcnMucmVtb3ZlUmVkdWNlcihjb21wb25lbnRJZCkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZXN0cm95LFxuICAgIGFjdGlvbnM6IHRyYWl0cy5hY3Rpb25zLFxuICAgIHNlbGVjdG9yczogdHJhaXRzLnNlbGVjdG9ycyxcbiAgICBhZGRFZmZlY3RzKGxvY2FsRWZmZWN0OiBUcmFpdEVmZmVjdCkge1xuICAgICAgbG9jYWxFZmZlY3QuY29tcG9uZW50SWQgPSBjb21wb25lbnRJZDtcbiAgICAgIGVmZmVjdHMuYWRkRWZmZWN0cyhsb2NhbEVmZmVjdCk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlPFQ+IGV4dGVuZHMgRnVuY3Rpb24ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbFRyYWl0c0NvbmZpZzxcbiAgRiBleHRlbmRzIEJhc2VFbnRpdHlGZWF0dXJlRmFjdG9yeTxhbnksIGFueSwgYW55PlxuPiB7XG4gIGNvbXBvbmVudE5hbWU6IHN0cmluZztcbiAgdHJhaXRzRmFjdG9yeTogRjtcbn1cblxuLyoqXG4gKiBDbGFzcyB1c2VkIHRvIGNyZWF0ZSBsb2NhbCB0cmFpdHMgc2VydmljZSwgcmVjZWl2ZXMgYSB0cmFpdCBmYWN0b3J5LCB3aGljaCB3aWxsIGJlXG4gKiBidWlsdCBhbmQgaXRzIHJlZHVjZXJzIGFuZCBlZmZlY3QgcmVnaXN0ZXIgdXNpbmcgYSBkeW5hbWljIGlkIHdoZW4gdGhlIHNlcnZpY2UgaXMgYnVpbHRcbiAqIGFuZCBnZXQgZGVzdHJveWVkIHdoZW4gdGhlIG9uRGVzdHJveSBsaWZlY3ljbGUgbWV0aG9kIG9mIHRoZSBzZXJ2aWNlIGlzIGNhbGxlZCwgaWYgdGhlIHNlcnZpY2VcbiAqIGhhcyBlZmZlY3RzIHRoaXMudHJhaXRzLmFkZEVmZmVjdHModGhpcykgc2hvdWxkIGJlIGNhbGwgaW4gdGhlIGNvbnN0cnVjdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHByb2R1Y3RGZWF0dXJlRmFjdG9yeSA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICB7IGVudGl0eU5hbWU6ICdwcm9kdWN0JyB9LFxuICogICBhZGRMb2FkRW50aXRpZXNUcmFpdDxQcm9kdWN0PigpLFxuICogICBhZGRTZWxlY3RFbnRpdHlUcmFpdDxQcm9kdWN0PigpLFxuICogKTtcbiAqXG4gKiBJbmplY3RhYmxlKClcbiAqIGV4cG9ydCBjbGFzcyBQcm9kdWN0c0xvY2FsVHJhaXRzIGV4dGVuZHMgVHJhaXRzTG9jYWxTdG9yZTxcbiAqICAgdHlwZW9mIHByb2R1Y3RGZWF0dXJlRmFjdG9yeVxuICogPiB7XG4gKiAgIGxvYWRQcm9kdWN0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAqICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gKiAgICAgICBvZlR5cGUodGhpcy5sb2NhbEFjdGlvbnMubG9hZFByb2R1Y3RzKSxcbiAqICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICogICAgICAgICAvL2NhbGwgeW91ciBzZXJ2aWNlIHRvIGdldCB0aGUgcHJvZHVjdHMgZGF0YVxuICogICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFByb2R1Y3RzKCkucGlwZShcbiAqICAgICAgICAgICBtYXAoKHJlcykgPT5cbiAqICAgICAgICAgICAgIHRoaXMubG9jYWxBY3Rpb25zLmxvYWRQcm9kdWN0c1N1Y2Nlc3MoeyBlbnRpdGllczogcmVzLnJlc3VsdExpc3QgfSlcbiAqICAgICAgICAgICApLFxuICogICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YodGhpcy5sb2NhbEFjdGlvbnMubG9hZFByb2R1Y3RzRmFpbCgpKSlcbiAqICAgICAgICAgKVxuICogICAgICAgKVxuICogICAgIClcbiAqICAgKTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UpIHtcbiAqICAgICBzdXBlcihpbmplY3Rvcik7XG4gKiAgICAgdGhpcy50cmFpdHMuYWRkRWZmZWN0cyh0aGlzKTsgLy8gSU1QT1JUQU5UISBhZGQgdGhpcyBsaW5lIGlmIHRoZSBzZXJ2aWNlIGhhcyBlZmZlY3RzXG4gKiAgIH1cbiAqXG4gKiAgIHNldHVwKCk6IExvY2FsVHJhaXRzQ29uZmlnPHR5cGVvZiBwcm9kdWN0RmVhdHVyZUZhY3Rvcnk+IHtcbiAqICAgICByZXR1cm4ge1xuICogICAgICAgY29tcG9uZW50TmFtZTogJ1Byb2R1Y3RzUGlja2VyQ29tcG9uZW50JyxcbiAqICAgICAgIHRyYWl0c0ZhY3Rvcnk6IHByb2R1Y3RGZWF0dXJlRmFjdG9yeSxcbiAqICAgICB9O1xuICogICB9XG4gKiB9XG4gKlxuICogLy8gdXNlIGluIGNvbXBvbmVudCBsYXRlclxuICpcbiAqIENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZS1jb21wb25lbnQnLFxuICogICB0ZW1wbGF0ZTogYDxkaXY+IHNvbWUgY29udGVudDwvZGl2PiBgLFxuICogICBwcm92aWRlcnM6IFtQcm9kdWN0c0xvY2FsVHJhaXRzXSxcbiAqICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFByb2R1Y3RTZWxlY3REaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSB0cmFpdHM6IFByb2R1Y3RzTG9jYWxUcmFpdHMpIHt9XG4gKlxuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMudHJhaXRzLmxvY2FsQWN0aW9ucy5sb2FkUHJvZHVjdHMoKSk7XG4gKiAgIH1cbiAqIH1cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYWl0c0xvY2FsU3RvcmU8XG4gICAgRiBleHRlbmRzIEJhc2VFbnRpdHlGZWF0dXJlRmFjdG9yeTxhbnksIGFueSwgYW55PlxuICA+XG4gIGV4dGVuZHMgVHJhaXRFZmZlY3RcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgdHJhaXRzOiB7XG4gICAgYWN0aW9uczogUmV0dXJuVHlwZTxGPlsnYWN0aW9ucyddO1xuICAgIHNlbGVjdG9yczogUmV0dXJuVHlwZTxGPlsnc2VsZWN0b3JzJ107XG4gICAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgICBhZGRFZmZlY3RzOiAobG9jYWxFZmZlY3Q6IFRyYWl0RWZmZWN0KSA9PiB2b2lkO1xuICB9O1xuXG4gIGxvY2FsQWN0aW9uczogUmV0dXJuVHlwZTxGPlsnYWN0aW9ucyddO1xuICBsb2NhbFNlbGVjdG9yczogUmV0dXJuVHlwZTxGPlsnc2VsZWN0b3JzJ107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvci5nZXQoQWN0aW9ucyksIGluamVjdG9yLmdldChTdG9yZSkpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc2V0dXAoKTtcbiAgICB0aGlzLnRyYWl0cyA9IGJ1aWxkTG9jYWxUcmFpdHMoXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgY29uZmlnLmNvbXBvbmVudE5hbWUsXG4gICAgICBjb25maWcudHJhaXRzRmFjdG9yeVxuICAgICk7XG4gICAgdGhpcy5sb2NhbEFjdGlvbnMgPSB0aGlzLnRyYWl0cy5hY3Rpb25zO1xuICAgIHRoaXMubG9jYWxTZWxlY3RvcnMgPSB0aGlzLnRyYWl0cy5zZWxlY3RvcnM7XG4gIH1cblxuICBhYnN0cmFjdCBzZXR1cCgpOiBMb2NhbFRyYWl0c0NvbmZpZzxGPjtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRyYWl0cy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvcmUvc3JjL2xpYi9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1kZWZpbml0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQWN0aW9uQ3JlYXRvcixcbiAgU2VsZWN0b3IsXG4gIFNlbGVjdG9yV2l0aFByb3BzLFxuICBUeXBlZEFjdGlvbixcbn0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvblR5cGUsIE1lbW9pemVkU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFpdEVmZmVjdCB9IGZyb20gJy4vdHJhaXQtZWZmZWN0JztcblxuZXhwb3J0IHR5cGUgVHJhaXRBY3Rpb25zID0ge1xuICBba2V5OiBzdHJpbmddOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKC4uLmFyZ3M6IGFueVtdKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYWl0U2VsZWN0b3JzPFN0YXRlPiA9IHtcbiAgW2tleTogc3RyaW5nXTpcbiAgICB8IFNlbGVjdG9yPFN0YXRlLCBhbnk+XG4gICAgfCBTZWxlY3RvcldpdGhQcm9wczxTdGF0ZSwgYW55LCBhbnk+XG4gICAgfCBNZW1vaXplZFNlbGVjdG9yPFN0YXRlLCBhbnk+O1xufTtcblxuZXhwb3J0IHR5cGUgVHJhaXRTdGF0ZU11dGF0b3JzPFN0YXRlPiA9IHtcbiAgW2tleTogc3RyaW5nXTogPFMgZXh0ZW5kcyBTdGF0ZT4oLi4uYXJnOiBhbnlbXSkgPT4gUztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUZlYXR1cmVUcmFpdHM8U3RhdGUgPSBhbnksIEEgPSBhbnksIFMgPSBhbnk+IHtcbiAgYWN0aW9uczogQTtcbiAgc2VsZWN0b3JzOiBTO1xuICByZWR1Y2VyOiAoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvblR5cGU8YW55PikgPT4gU3RhdGU7XG4gIGVmZmVjdHM6IFR5cGU8YW55PltdO1xuICBpbml0aWFsU3RhdGU6IFN0YXRlO1xufVxuXG5leHBvcnQgdHlwZSBGZWF0dXJlVHJhaXRzPFxuICBTdGF0ZSxcbiAgQSBleHRlbmRzIFRyYWl0QWN0aW9ucyA9IFRyYWl0QWN0aW9ucyxcbiAgUyBleHRlbmRzIFRyYWl0U2VsZWN0b3JzPFN0YXRlPiA9IFRyYWl0U2VsZWN0b3JzPFN0YXRlPlxuPiA9IEJhc2VGZWF0dXJlVHJhaXRzPFN0YXRlLCBBLCBGZWF0dXJlU2VsZWN0b3JzPFN0YXRlLCBTPj47XG5cbmV4cG9ydCB0eXBlIEJhc2VFbnRpdHlGZWF0dXJlRmFjdG9yeTxTdGF0ZSwgQSwgUz4gPSAoXG4gIGNvbmZpZzogQ29uZmlnPFN0YXRlPlxuKSA9PiBCYXNlRmVhdHVyZVRyYWl0czxTdGF0ZSwgQSwgUz47XG5cbmV4cG9ydCB0eXBlIEVudGl0eUZlYXR1cmVGYWN0b3J5PFxuICBFbnRpdHlOYW1lIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBFbnRpdGllc05hbWUgZXh0ZW5kcyBzdHJpbmcgPSBgJHtFbnRpdHlOYW1lfXNgLFxuICBTdGF0ZSA9IGFueSxcbiAgQSBleHRlbmRzIFRyYWl0QWN0aW9ucyA9IFRyYWl0QWN0aW9ucyxcbiAgUyBleHRlbmRzIFRyYWl0U2VsZWN0b3JzPFN0YXRlPiA9IFRyYWl0U2VsZWN0b3JzPFN0YXRlPlxuPiA9IChcbiAgY29uZmlnOiBDb25maWc8U3RhdGU+XG4pID0+IEZlYXR1cmVUcmFpdHM8XG4gIFN0YXRlLFxuICBFbnRpdHlOYW1lIGV4dGVuZHMgc3RyaW5nXG4gICAgPyBSZXBsYWNlRW50aXR5TmFtZXM8QSwgRW50aXR5TmFtZSwgRW50aXRpZXNOYW1lPlxuICAgIDogQSxcbiAgRW50aXR5TmFtZSBleHRlbmRzIHN0cmluZ1xuICAgID8gUmVwbGFjZUVudGl0eU5hbWVzPFMsIEVudGl0eU5hbWUsIEVudGl0aWVzTmFtZT5cbiAgICA6IFNcbj47XG5cbmV4cG9ydCB0eXBlIENvbmZpZzxcbiAgU3RhdGUsXG4gIEYgZXh0ZW5kcyBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgU3RhdGU+ID0gTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFN0YXRlPlxuPiA9IHtcbiAgYWN0aW9uc0dyb3VwS2V5OiBzdHJpbmc7XG4gIGZlYXR1cmVTZWxlY3RvcjogRiB8IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZlYXR1cmVTZWxlY3RvcnM8U3RhdGUsIFMgZXh0ZW5kcyBUcmFpdFNlbGVjdG9yczxTdGF0ZT4+ID0ge1xuICBba2V5IGluIGtleW9mIFNdOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmV0dXJuVHlwZTxTW2tleV0+LCBTW2tleV0+O1xufTtcblxuLy8gVE9ETyBzZWUgaWYgd2UgY2FuIG1ha2UgQWxsVHJhaXRDb25maWdzIGV4dGVuZHMgb3IgdXNlIEtleWVkQ29uZmlnXG5leHBvcnQgdHlwZSBBbGxUcmFpdENvbmZpZ3MgPSB7XG4gIFtpZDogc3RyaW5nXTogYW55O1xufTtcblxuZXhwb3J0IHR5cGUgVHJhaXRBY3Rpb25zRmFjdG9yeTxcbiAgQSBleHRlbmRzIFRyYWl0QWN0aW9ucyA9IFRyYWl0QWN0aW9ucyxcbiAgQyBleHRlbmRzIEFsbFRyYWl0Q29uZmlncyA9IEFsbFRyYWl0Q29uZmlnc1xuPiA9IChvcHRpb25zOiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnPEM+KSA9PiBBO1xuXG5leHBvcnQgdHlwZSBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnPFxuICBDIGV4dGVuZHMgQWxsVHJhaXRDb25maWdzID0gQWxsVHJhaXRDb25maWdzXG4+ID0ge1xuICBhY3Rpb25zR3JvdXBLZXk6IHN0cmluZztcbiAgZW50aXR5TmFtZTogc3RyaW5nO1xuICBlbnRpdGllc05hbWU6IHN0cmluZztcbiAgYWxsQ29uZmlnczogQztcbn07XG5leHBvcnQgdHlwZSBUcmFpdFNlbGVjdG9yc0ZhY3Rvcnk8XG4gIFN0YXRlID0gdW5rbm93bixcbiAgUyBleHRlbmRzIFRyYWl0U2VsZWN0b3JzPFN0YXRlPiA9IFRyYWl0U2VsZWN0b3JzPFN0YXRlPixcbiAgQyBleHRlbmRzIEFsbFRyYWl0Q29uZmlncyA9IEFsbFRyYWl0Q29uZmlnc1xuPiA9IChvcHRpb25zOiBUcmFpdFNlbGVjdG9yc0ZhY3RvcnlDb25maWc8Qz4pID0+IFM7XG5cbmV4cG9ydCB0eXBlIFRyYWl0U2VsZWN0b3JzRmFjdG9yeUNvbmZpZzxcbiAgQyBleHRlbmRzIEFsbFRyYWl0Q29uZmlncyA9IEFsbFRyYWl0Q29uZmlnc1xuPiA9IHtcbiAgcHJldmlvdXNTZWxlY3RvcnM6IFRyYWl0U2VsZWN0b3JzPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBhbGxDb25maWdzOiBDO1xufTtcbmV4cG9ydCB0eXBlIFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeTxcbiAgU3RhdGUgPSB1bmtub3duLFxuICBDIGV4dGVuZHMgQWxsVHJhaXRDb25maWdzID0gQWxsVHJhaXRDb25maWdzXG4+ID0gKG9wdGlvbnM6IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZzxDPikgPT4gU3RhdGU7XG5cbmV4cG9ydCB0eXBlIFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZzxcbiAgQyBleHRlbmRzIEFsbFRyYWl0Q29uZmlncyA9IEFsbFRyYWl0Q29uZmlnc1xuPiA9IHtcbiAgcHJldmlvdXNJbml0aWFsU3RhdGU6IGFueTtcbiAgYWxsQ29uZmlnczogQztcbn07XG5cbmV4cG9ydCB0eXBlIFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3Rvcnk8XG4gIFN0YXRlID0gdW5rbm93bixcbiAgTSBleHRlbmRzIFRyYWl0U3RhdGVNdXRhdG9yczxTdGF0ZT4gPSBUcmFpdFN0YXRlTXV0YXRvcnM8U3RhdGU+LFxuICBDIGV4dGVuZHMgQWxsVHJhaXRDb25maWdzID0gQWxsVHJhaXRDb25maWdzXG4+ID0gKG9wdGlvbnM6IFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3RvcnlDb25maWc8Qz4pID0+IE07XG5cbmV4cG9ydCB0eXBlIFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3RvcnlDb25maWc8XG4gIEMgZXh0ZW5kcyBBbGxUcmFpdENvbmZpZ3MgPSBBbGxUcmFpdENvbmZpZ3Ncbj4gPSB7XG4gIGFsbFNlbGVjdG9yczogVHJhaXRTZWxlY3RvcnM8YW55PjtcbiAgcHJldmlvdXNNdXRhdG9yczogVHJhaXRTdGF0ZU11dGF0b3JzPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBhbGxDb25maWdzOiBDO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhaXRSZWR1Y2VyRmFjdG9yeTxcbiAgU3RhdGUgPSB1bmtub3duLFxuICBBIGV4dGVuZHMgVHJhaXRBY3Rpb25zID0gVHJhaXRBY3Rpb25zLFxuICBTIGV4dGVuZHMgVHJhaXRTZWxlY3RvcnM8U3RhdGU+ID0gVHJhaXRTZWxlY3RvcnM8U3RhdGU+LFxuICBNIGV4dGVuZHMgVHJhaXRTdGF0ZU11dGF0b3JzPFN0YXRlPiA9IFRyYWl0U3RhdGVNdXRhdG9yczxTdGF0ZT4sXG4gIEMgZXh0ZW5kcyBBbGxUcmFpdENvbmZpZ3MgPSBBbGxUcmFpdENvbmZpZ3Ncbj4gPSAoXG4gIG9wdGlvbnM6IFRyYWl0UmVkdWNlckZhY3RvcnlDb25maWc8U3RhdGUsIEEsIFMsIE0sIEM+XG4pID0+IChpbml0aWFsU3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGU7XG5cbmV4cG9ydCB0eXBlIFRyYWl0UmVkdWNlckZhY3RvcnlDb25maWc8XG4gIFN0YXRlID0gdW5rbm93bixcbiAgQSBleHRlbmRzIFRyYWl0QWN0aW9ucyA9IFRyYWl0QWN0aW9ucyxcbiAgUyBleHRlbmRzIFRyYWl0U2VsZWN0b3JzPFN0YXRlPiA9IFRyYWl0U2VsZWN0b3JzPFN0YXRlPixcbiAgTSBleHRlbmRzIFRyYWl0U3RhdGVNdXRhdG9yczxTdGF0ZT4gPSBUcmFpdFN0YXRlTXV0YXRvcnM8U3RhdGU+LFxuICBDIGV4dGVuZHMgQWxsVHJhaXRDb25maWdzID0gQWxsVHJhaXRDb25maWdzXG4+ID0ge1xuICBpbml0aWFsU3RhdGU6IFN0YXRlO1xuICBhbGxBY3Rpb25zOiBBO1xuICBhbGxTZWxlY3RvcnM6IFM7XG4gIGFsbE11dGF0b3JzOiBNO1xuICBhbGxDb25maWdzOiBDO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhaXRFZmZlY3RzRmFjdG9yeTxcbiAgU3RhdGUgPSB1bmtub3duLFxuICBBIGV4dGVuZHMgVHJhaXRBY3Rpb25zID0gVHJhaXRBY3Rpb25zLFxuICBTIGV4dGVuZHMgVHJhaXRTZWxlY3RvcnM8U3RhdGU+ID0gVHJhaXRTZWxlY3RvcnM8U3RhdGU+LFxuICBDIGV4dGVuZHMgQWxsVHJhaXRDb25maWdzID0gQWxsVHJhaXRDb25maWdzXG4+ID0gKG9wdGlvbnM6IFRyYWl0RWZmZWN0c0ZhY3RvcnlDb25maWc8U3RhdGUsIEEsIFMsIEM+KSA9PiBUeXBlPFRyYWl0RWZmZWN0PltdO1xuXG5leHBvcnQgdHlwZSBUcmFpdEVmZmVjdHNGYWN0b3J5Q29uZmlnPFxuICBTdGF0ZSA9IHVua25vd24sXG4gIEEgZXh0ZW5kcyBUcmFpdEFjdGlvbnMgPSBUcmFpdEFjdGlvbnMsXG4gIFMgZXh0ZW5kcyBUcmFpdFNlbGVjdG9yczxTdGF0ZT4gPSBUcmFpdFNlbGVjdG9yczxTdGF0ZT4sXG4gIEMgZXh0ZW5kcyBBbGxUcmFpdENvbmZpZ3MgPSBBbGxUcmFpdENvbmZpZ3Ncbj4gPSB7XG4gIGFsbEFjdGlvbnM6IEE7XG4gIGFsbFNlbGVjdG9yczogUztcbiAgYWxsQ29uZmlnczogQztcbn07XG5cbmV4cG9ydCB0eXBlIEtleWVkQ29uZmlnPEtFWSBleHRlbmRzIHN0cmluZywgQz4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+ICZcbiAge1xuICAgIFtLIGluIEtFWV0/OiBDO1xuICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWl0RmFjdG9yeTxcbiAgU3RhdGUgPSBhbnksXG4gIEEgZXh0ZW5kcyBUcmFpdEFjdGlvbnMgPSBhbnksXG4gIFMgZXh0ZW5kcyBUcmFpdFNlbGVjdG9yczxTdGF0ZT4gPSBhbnksXG4gIE0gZXh0ZW5kcyBUcmFpdFN0YXRlTXV0YXRvcnM8U3RhdGU+ID0gYW55LFxuICBLRVkgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIEMgPSBhbnksXG4gIEtDID0gS2V5ZWRDb25maWc8S0VZLCBDPlxuPiB7XG4gIGtleTogS0VZO1xuICBjb25maWc/OiBDO1xuICBkZXBlbmRzPzogc3RyaW5nW107XG4gIGFjdGlvbnM6IFRyYWl0QWN0aW9uc0ZhY3Rvcnk8QSwgS0M+O1xuICBzZWxlY3RvcnM6IFRyYWl0U2VsZWN0b3JzRmFjdG9yeTxTdGF0ZSwgUywgS0M+O1xuICBpbml0aWFsU3RhdGU6IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeTxTdGF0ZSwgS0M+O1xuICBtdXRhdG9yczogVHJhaXRTdGF0ZU11dGF0b3JzRmFjdG9yeTxTdGF0ZSwgTSwgS0M+O1xuICByZWR1Y2VyPzogVHJhaXRSZWR1Y2VyRmFjdG9yeTxTdGF0ZSwgQSwgUywgTSwgS0M+O1xuICBlZmZlY3RzPzogVHJhaXRFZmZlY3RzRmFjdG9yeTxTdGF0ZSwgQSwgUywgS0M+O1xufVxudHlwZSBFeHRyYWN0QXJyYXlFbGVtZW50VHlwZXM8WD4gPSBYIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBUPiA/IFQgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxUPiA9IChcbiAgVCBleHRlbmRzIGFueSA/ICh4OiBUKSA9PiBhbnkgOiBuZXZlclxuKSBleHRlbmRzICh4OiBpbmZlciBSKSA9PiBhbnlcbiAgPyBSXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RTdGF0ZVR5cGU8VD4gPSBUIGV4dGVuZHMgVHJhaXRGYWN0b3J5PGluZmVyIFN0YXRlPlxuICA/IFN0YXRlXG4gIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8VHJhaXRGYWN0b3J5PlxuICA/IFVuaW9uVG9JbnRlcnNlY3Rpb248RXh0cmFjdFN0YXRlVHlwZTxFeHRyYWN0QXJyYXlFbGVtZW50VHlwZXM8VD4+PlxuICA6IFQgZXh0ZW5kcyBCYXNlRmVhdHVyZVRyYWl0czxpbmZlciBTdGF0ZT5cbiAgPyBTdGF0ZVxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBFeHRyYWN0QWN0aW9uc1R5cGU8VD4gPSBUIGV4dGVuZHMgVHJhaXRGYWN0b3J5PGFueSwgaW5mZXIgQT5cbiAgPyBBXG4gIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8VHJhaXRGYWN0b3J5PlxuICA/IFVuaW9uVG9JbnRlcnNlY3Rpb248RXh0cmFjdEFjdGlvbnNUeXBlPEV4dHJhY3RBcnJheUVsZW1lbnRUeXBlczxUPj4+XG4gIDogVCBleHRlbmRzIEJhc2VGZWF0dXJlVHJhaXRzPGFueSwgaW5mZXIgQT5cbiAgPyBBXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RTZWxlY3RvcnNUeXBlPFQ+ID0gVCBleHRlbmRzIFRyYWl0RmFjdG9yeTxhbnksIGFueSwgaW5mZXIgUz5cbiAgPyBTXG4gIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8VHJhaXRGYWN0b3J5PlxuICA/IFVuaW9uVG9JbnRlcnNlY3Rpb248RXh0cmFjdFNlbGVjdG9yc1R5cGU8RXh0cmFjdEFycmF5RWxlbWVudFR5cGVzPFQ+Pj5cbiAgOiBUIGV4dGVuZHMgQmFzZUZlYXR1cmVUcmFpdHM8YW55LCBhbnksIGluZmVyIFM+XG4gID8gU1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBFeHRyYWN0TXV0YXRvcnNUeXBlPFQ+ID0gVCBleHRlbmRzIFRyYWl0RmFjdG9yeTxcbiAgYW55LFxuICBhbnksXG4gIGFueSxcbiAgaW5mZXIgTVxuPlxuICA/IE1cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxUcmFpdEZhY3Rvcnk+XG4gID8gVW5pb25Ub0ludGVyc2VjdGlvbjxFeHRyYWN0TXV0YXRvcnNUeXBlPEV4dHJhY3RBcnJheUVsZW1lbnRUeXBlczxUPj4+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RLZXllZENvbmZpZ1R5cGU8VD4gPSBUIGV4dGVuZHMgVHJhaXRGYWN0b3J5PFxuICBhbnksXG4gIGFueSxcbiAgYW55LFxuICBhbnksXG4gIGluZmVyIEtFWSxcbiAgaW5mZXIgQ1xuPlxuICA/IEtleWVkQ29uZmlnPEtFWSwgQz5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxUcmFpdEZhY3Rvcnk+XG4gID8gVW5pb25Ub0ludGVyc2VjdGlvbjxFeHRyYWN0S2V5ZWRDb25maWdUeXBlPEV4dHJhY3RBcnJheUVsZW1lbnRUeXBlczxUPj4+XG4gIDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCB0eXBlIFByZWZpeFByb3BzPFQsIFAgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIGAke1B9JHtDYXBpdGFsaXplPHN0cmluZyAmIEs+fWBdOiBUW0tdO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZXhwb3J0IHR5cGUgUG9zdGZpeFByb3BzPFQsIFAgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIGAke1VuY2FwaXRhbGl6ZTxzdHJpbmcgJiBLPn0ke0NhcGl0YWxpemU8UD59YF06IFRbS107XG59O1xuXG50eXBlIFJlcGxhY2U8XG4gIFRhcmdldCBleHRlbmRzIHN0cmluZyxcbiAgRmluZEtleSBleHRlbmRzIHN0cmluZyxcbiAgUmVwbGFjZUtleSBleHRlbmRzIHN0cmluZ1xuPiA9IFRhcmdldCBleHRlbmRzIGAke2luZmVyIFByZWZpeH0ke0ZpbmRLZXl9JHtpbmZlciBQb3N0Zml4fWBcbiAgPyBgJHtQcmVmaXh9JHtDYXBpdGFsaXplPFJlcGxhY2VLZXk+fSR7UG9zdGZpeH1gXG4gIDogVGFyZ2V0O1xuXG5leHBvcnQgdHlwZSBSZXBsYWNlUHJvcHM8XG4gIFRhcmdldCxcbiAgRmluZEtleSBleHRlbmRzIHN0cmluZyxcbiAgUmVwbGFjZUtleSBleHRlbmRzIHN0cmluZ1xuPiA9IHtcbiAgW1Byb3AgaW4ga2V5b2YgVGFyZ2V0IGFzIFJlcGxhY2U8XG4gICAgc3RyaW5nICYgUHJvcCxcbiAgICBGaW5kS2V5LFxuICAgIFJlcGxhY2VLZXlcbiAgPl06IFRhcmdldFtQcm9wXTtcbn07XG5leHBvcnQgdHlwZSBSZXBsYWNlRW50aXR5TmFtZXM8XG4gIFQsXG4gIEVudGl0eU5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIEVudGl0aWVzTmFtZSBleHRlbmRzIHN0cmluZ1xuPiA9IFJlcGxhY2VQcm9wczxcbiAgUmVwbGFjZVByb3BzPFQsICdFbnRpdGllcycsIEVudGl0aWVzTmFtZT4sXG4gICdFbnRpdHknLFxuICBFbnRpdHlOYW1lXG4+O1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC10cmFpdHMtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS9zcmMvbGliL25ncngtdHJhaXRzLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS9zcmMvbGliL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './provide-mock-local-traits';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvcmUvdGVzdGluZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZS1tb2NrLWxvY2FsLXRyYWl0cyc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC10cmFpdHMtY29yZS10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb3JlL3Rlc3Rpbmcvc3JjL25ncngtdHJhaXRzLWNvcmUtdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -0,0 +1,36 @@
1
+ import { DISABLE_LOCAL_TRAIT_EFFECTS, } from '@ngrx-traits/core';
2
+ import { Injector } from '@angular/core';
3
+ import { EffectSources } from '@ngrx/effects';
4
+ import { MockStore } from '@ngrx/store/testing';
5
+ /*
6
+ * NOTE: provideMockStore({initialState}) initialState will be ignored with local traits store!
7
+ * Override selectors instead
8
+ *
9
+ * You still need to provideMockStore and provideMockActions
10
+ * */
11
+ export function provideMockLocalTraits({ traitFactory, selectors, }) {
12
+ return [
13
+ { provide: DISABLE_LOCAL_TRAIT_EFFECTS, useValue: true },
14
+ {
15
+ provide: EffectSources,
16
+ useValue: {
17
+ addEffects: () => {
18
+ return;
19
+ },
20
+ },
21
+ },
22
+ {
23
+ provide: traitFactory,
24
+ deps: [Injector, MockStore],
25
+ useFactory: (injector, mockStore) => {
26
+ const trait = new traitFactory(injector);
27
+ if (selectors) {
28
+ Object.keys(selectors).forEach((key) => trait.localSelectors?.[key] &&
29
+ mockStore.overrideSelector(trait.localSelectors[key], selectors?.[key]));
30
+ }
31
+ return trait;
32
+ },
33
+ },
34
+ ];
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1tb2NrLWxvY2FsLXRyYWl0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS90ZXN0aW5nL3NyYy9wcm92aWRlLW1vY2stbG9jYWwtdHJhaXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCwyQkFBMkIsR0FDNUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRDs7Ozs7S0FLSztBQUNMLE1BQU0sVUFBVSxzQkFBc0IsQ0FFcEMsRUFDQSxZQUFZLEVBQ1osU0FBUyxHQU1WO0lBQ0MsT0FBTztRQUNMLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDeEQ7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixRQUFRLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLEdBQUcsRUFBRTtvQkFDZixPQUFPO2dCQUNULENBQUM7YUFDRjtTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBQzNCLFVBQVUsRUFBRSxDQUFDLFFBQWtCLEVBQUUsU0FBb0IsRUFBRSxFQUFFO2dCQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQzVCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDO3dCQUMzQixTQUFTLENBQUMsZ0JBQWdCLENBQ3hCLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQ3pCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUNqQixDQUNKLENBQUM7aUJBQ0g7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudGl0eUZlYXR1cmVGYWN0b3J5LFxuICBUcmFpdHNMb2NhbFN0b3JlLFxuICBESVNBQkxFX0xPQ0FMX1RSQUlUX0VGRkVDVFMsXG59IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IEluamVjdG9yLCBQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWZmZWN0U291cmNlcyB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgTW9ja1N0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUvdGVzdGluZyc7XG5cbi8qXG4gKiBOT1RFOiBwcm92aWRlTW9ja1N0b3JlKHtpbml0aWFsU3RhdGV9KSBpbml0aWFsU3RhdGUgd2lsbCBiZSBpZ25vcmVkIHdpdGggbG9jYWwgdHJhaXRzIHN0b3JlIVxuICogT3ZlcnJpZGUgc2VsZWN0b3JzIGluc3RlYWRcbiAqXG4gKiBZb3Ugc3RpbGwgbmVlZCB0byBwcm92aWRlTW9ja1N0b3JlIGFuZCBwcm92aWRlTW9ja0FjdGlvbnNcbiAqICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU1vY2tMb2NhbFRyYWl0czxcbiAgVCBleHRlbmRzIFRyYWl0c0xvY2FsU3RvcmU8RW50aXR5RmVhdHVyZUZhY3Rvcnk8YW55LCBhbnk+PlxuPih7XG4gIHRyYWl0RmFjdG9yeSxcbiAgc2VsZWN0b3JzLFxufToge1xuICB0cmFpdEZhY3Rvcnk6IFR5cGU8VD47XG4gIHNlbGVjdG9ycz86IHtcbiAgICBba2V5IGluIGtleW9mIFRbJ2xvY2FsU2VsZWN0b3JzJ11dPzogUmV0dXJuVHlwZTxUWydsb2NhbFNlbGVjdG9ycyddW2tleV0+O1xuICB9O1xufSk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHsgcHJvdmlkZTogRElTQUJMRV9MT0NBTF9UUkFJVF9FRkZFQ1RTLCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVmZmVjdFNvdXJjZXMsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBhZGRFZmZlY3RzOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IHRyYWl0RmFjdG9yeSxcbiAgICAgIGRlcHM6IFtJbmplY3RvciwgTW9ja1N0b3JlXSxcbiAgICAgIHVzZUZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IsIG1vY2tTdG9yZTogTW9ja1N0b3JlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYWl0ID0gbmV3IHRyYWl0RmFjdG9yeShpbmplY3Rvcik7XG4gICAgICAgIGlmIChzZWxlY3RvcnMpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzZWxlY3RvcnMpLmZvckVhY2goXG4gICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICB0cmFpdC5sb2NhbFNlbGVjdG9ycz8uW2tleV0gJiZcbiAgICAgICAgICAgICAgbW9ja1N0b3JlLm92ZXJyaWRlU2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgdHJhaXQubG9jYWxTZWxlY3RvcnNba2V5XSxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM/LltrZXldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFpdDtcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS90ZXN0aW5nL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { takeUntil } from 'rxjs/operators';
3
+ import { Actions, ofType, } from '@ngrx/effects';
4
+ import { Store } from '@ngrx/store';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ngrx/effects";
7
+ import * as i2 from "@ngrx/store";
8
+ export class TraitEffect {
9
+ constructor(actions$, store) {
10
+ this.actions$ = actions$;
11
+ this.store = store;
12
+ this.name = this.constructor.name;
13
+ this.componentId = '';
14
+ }
15
+ ngrxOnIdentifyEffects() {
16
+ return this.componentId ? this.name + this.componentId : '';
17
+ }
18
+ ngrxOnRunEffects(resolvedEffects$) {
19
+ return this.componentId
20
+ ? resolvedEffects$.pipe(takeUntil(this.actions$.pipe(ofType(getDestroyActionName(this.componentId)))))
21
+ : resolvedEffects$;
22
+ }
23
+ }
24
+ TraitEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitEffect, deps: [{ token: i1.Actions }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable });
25
+ TraitEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitEffect });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitEffect, decorators: [{
27
+ type: Injectable
28
+ }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.Store }]; } });
29
+ export function getDestroyActionName(id) {
30
+ return `[${id}] Destroyed`;
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaXQtZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb3JlL3NyYy9saWIvdHJhaXQtZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFJcEMsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDWSxRQUFpQixFQUNqQixLQUFpQjtRQURqQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFKckIsU0FBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0lBSXJCLENBQUM7SUFFSixxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsZ0JBQWlDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFdBQVc7WUFDckIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDbkIsU0FBUyxDQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNuRSxDQUNGO1lBQ0gsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBQ3ZCLENBQUM7O3lHQXBCVSxXQUFXOzZHQUFYLFdBQVc7NEZBQVgsV0FBVztrQkFEdkIsVUFBVTs7QUF3QlgsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQVU7SUFDN0MsT0FBTyxJQUFJLEVBQUUsYUFBYSxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBY3Rpb25zLFxuICBvZlR5cGUsXG4gIE9uSWRlbnRpZnlFZmZlY3RzLFxuICBPblJ1bkVmZmVjdHMsXG59IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFpdEVmZmVjdCBpbXBsZW1lbnRzIE9uSWRlbnRpZnlFZmZlY3RzLCBPblJ1bkVmZmVjdHMge1xuICBwcml2YXRlIG5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICcnO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PlxuICApIHt9XG5cbiAgbmdyeE9uSWRlbnRpZnlFZmZlY3RzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudElkID8gdGhpcy5uYW1lICsgdGhpcy5jb21wb25lbnRJZCA6ICcnO1xuICB9XG5cbiAgbmdyeE9uUnVuRWZmZWN0cyhyZXNvbHZlZEVmZmVjdHMkOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRJZFxuICAgICAgPyByZXNvbHZlZEVmZmVjdHMkLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKG9mVHlwZShnZXREZXN0cm95QWN0aW9uTmFtZSh0aGlzLmNvbXBvbmVudElkKSkpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IHJlc29sdmVkRWZmZWN0cyQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc3Ryb3lBY3Rpb25OYW1lKGlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBbJHtpZH1dIERlc3Ryb3llZGA7XG59XG4iXX0=
@@ -0,0 +1,70 @@
1
+ export function insertIf(condition, getElement) {
2
+ return condition ? [getElement()] : [];
3
+ }
4
+ export function toMap(a) {
5
+ return a.reduce((acum, value) => {
6
+ acum[value] = true;
7
+ return acum;
8
+ }, {});
9
+ }
10
+ export function capitalize(name) {
11
+ return name.charAt(0).toUpperCase() + name.slice(1);
12
+ }
13
+ export function camelCaseToSentence(text) {
14
+ const result = text.replace(/([A-Z])/g, ' $1');
15
+ return result.charAt(0).toUpperCase() + result.slice(1);
16
+ }
17
+ /**
18
+ * Set propertyReducer in sourceReducer in a property of the source state,
19
+ * @param sourceReducer
20
+ * @param property
21
+ * @param propertyReducer
22
+ *
23
+ * @example
24
+ *
25
+ * const newReducer = setPropertyReducer(productsReducer, 'selectedProduct', selectedProductReducer)
26
+ */
27
+ export function setPropertyReducer(sourceReducer, property, propertyReducer) {
28
+ return function reducer(state, action) {
29
+ const sourceState = sourceReducer(state, action);
30
+ return {
31
+ ...sourceState,
32
+ [property]: propertyReducer(sourceState[property], action),
33
+ };
34
+ };
35
+ }
36
+ /**
37
+ * Set propertyReducers in sourceReducer each in a property of the source state,
38
+ * @param sourceReducer
39
+ * @param property
40
+ * @param propertyReducer
41
+ *
42
+ * @example
43
+ *
44
+ * const newReducer = setPropertyReducer(productsReducer,
45
+ * {
46
+ * selectedProduct: selectedProductReducer
47
+ * favoriteProduct: favoriteProductReducer
48
+ * })
49
+ */
50
+ export function setPropertiesReducer(sourceReducer, propertiesReducers) {
51
+ return function reducer(state, action) {
52
+ const newState = { ...sourceReducer(state, action) };
53
+ for (const property in propertiesReducers) {
54
+ newState[property] = propertiesReducers[property](newState[property], action);
55
+ }
56
+ return newState;
57
+ };
58
+ }
59
+ /**
60
+ * joins two reducers so the work in the same state
61
+ * @param firstReducer
62
+ * @param secondReducer
63
+ */
64
+ export function joinReducers(firstReducer, secondReducer) {
65
+ return function reducer(state, action) {
66
+ const sourceState = firstReducer(state, action);
67
+ return secondReducer(sourceState, action);
68
+ };
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS9zcmMvbGliL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsU0FBYyxFQUNkLFVBQXNEO0lBRXRELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBQ0QsTUFBTSxVQUFVLEtBQUssQ0FBQyxDQUF5QjtJQUM3QyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFnQyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFZO0lBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxhQUErRCxFQUMvRCxRQUFXLEVBQ1gsZUFBdUU7SUFFdkUsT0FBTyxTQUFTLE9BQU8sQ0FBQyxLQUFZLEVBQUUsTUFBdUI7UUFDM0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxPQUFPO1lBQ0wsR0FBRyxXQUFXO1lBQ2QsQ0FBQyxRQUFRLENBQUMsRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztTQUMzRCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLGFBQStELEVBQy9ELGtCQUVDO0lBRUQsT0FBTyxTQUFTLE9BQU8sQ0FBQyxLQUFZLEVBQUUsTUFBdUI7UUFDM0QsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sUUFBUSxJQUFJLGtCQUFrQixFQUFFO1lBQ3pDLFFBQVEsQ0FBQyxRQUFhLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FDcEQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUNsQixNQUFNLENBQ1AsQ0FBQztTQUNIO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixZQUE4RCxFQUM5RCxhQUEyRDtJQUUzRCxPQUFPLFNBQVMsT0FBTyxDQUFDLEtBQVksRUFBRSxNQUF1QjtRQUMzRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE9BQU8sYUFBYSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkdWNlclR5cGVzIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL3JlZHVjZXJfY3JlYXRvcic7XG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0SWY8U3RhdGU+KFxuICBjb25kaXRpb246IGFueSxcbiAgZ2V0RWxlbWVudDogKCkgPT4gUmVkdWNlclR5cGVzPFN0YXRlLCBBY3Rpb25DcmVhdG9yW10+XG4pOiBSZWR1Y2VyVHlwZXM8U3RhdGUsIEFjdGlvbkNyZWF0b3JbXT5bXSB7XG4gIHJldHVybiBjb25kaXRpb24gPyBbZ2V0RWxlbWVudCgpXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvTWFwKGE6IEFycmF5PHN0cmluZyB8IG51bWJlcj4pIHtcbiAgcmV0dXJuIGEucmVkdWNlKChhY3VtOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSwgdmFsdWUpID0+IHtcbiAgICBhY3VtW3ZhbHVlXSA9IHRydWU7XG4gICAgcmV0dXJuIGFjdW07XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcGl0YWxpemUobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsQ2FzZVRvU2VudGVuY2UodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHRleHQucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJyk7XG4gIHJldHVybiByZXN1bHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyByZXN1bHQuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogU2V0IHByb3BlcnR5UmVkdWNlciBpbiBzb3VyY2VSZWR1Y2VyIGluIGEgcHJvcGVydHkgb2YgdGhlIHNvdXJjZSBzdGF0ZSxcbiAqIEBwYXJhbSBzb3VyY2VSZWR1Y2VyXG4gKiBAcGFyYW0gcHJvcGVydHlcbiAqIEBwYXJhbSBwcm9wZXJ0eVJlZHVjZXJcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGNvbnN0IG5ld1JlZHVjZXIgPSBzZXRQcm9wZXJ0eVJlZHVjZXIocHJvZHVjdHNSZWR1Y2VyLCAnc2VsZWN0ZWRQcm9kdWN0Jywgc2VsZWN0ZWRQcm9kdWN0UmVkdWNlcilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5UmVkdWNlcjxTdGF0ZSwgUCBleHRlbmRzIGtleW9mIFN0YXRlPihcbiAgc291cmNlUmVkdWNlcjogKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb25UeXBlPGFueT4pID0+IFN0YXRlLFxuICBwcm9wZXJ0eTogUCxcbiAgcHJvcGVydHlSZWR1Y2VyOiAoc3RhdGU6IFN0YXRlW1BdLCBhY3Rpb246IEFjdGlvblR5cGU8YW55PikgPT4gU3RhdGVbUF1cbik6IChzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uVHlwZTxhbnk+KSA9PiBTdGF0ZSB7XG4gIHJldHVybiBmdW5jdGlvbiByZWR1Y2VyKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb25UeXBlPGFueT4pOiBTdGF0ZSB7XG4gICAgY29uc3Qgc291cmNlU3RhdGUgPSBzb3VyY2VSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zb3VyY2VTdGF0ZSxcbiAgICAgIFtwcm9wZXJ0eV06IHByb3BlcnR5UmVkdWNlcihzb3VyY2VTdGF0ZVtwcm9wZXJ0eV0sIGFjdGlvbiksXG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXQgcHJvcGVydHlSZWR1Y2VycyBpbiBzb3VyY2VSZWR1Y2VyIGVhY2ggaW4gYSBwcm9wZXJ0eSBvZiB0aGUgc291cmNlIHN0YXRlLFxuICogQHBhcmFtIHNvdXJjZVJlZHVjZXJcbiAqIEBwYXJhbSBwcm9wZXJ0eVxuICogQHBhcmFtIHByb3BlcnR5UmVkdWNlclxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogY29uc3QgbmV3UmVkdWNlciA9IHNldFByb3BlcnR5UmVkdWNlcihwcm9kdWN0c1JlZHVjZXIsXG4gKiB7XG4gKiAgICBzZWxlY3RlZFByb2R1Y3Q6IHNlbGVjdGVkUHJvZHVjdFJlZHVjZXJcbiAqICAgIGZhdm9yaXRlUHJvZHVjdDogZmF2b3JpdGVQcm9kdWN0UmVkdWNlclxuICogfSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnRpZXNSZWR1Y2VyPFN0YXRlLCBQIGV4dGVuZHMga2V5b2YgU3RhdGU+KFxuICBzb3VyY2VSZWR1Y2VyOiAoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvblR5cGU8YW55PikgPT4gU3RhdGUsXG4gIHByb3BlcnRpZXNSZWR1Y2Vyczoge1xuICAgIFtrZXkgaW4gUF06IChzdGF0ZTogU3RhdGVbUF0sIGFjdGlvbjogQWN0aW9uVHlwZTxhbnk+KSA9PiBTdGF0ZVtQXTtcbiAgfVxuKTogKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb25UeXBlPGFueT4pID0+IFN0YXRlIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlZHVjZXIoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvblR5cGU8YW55Pik6IFN0YXRlIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc291cmNlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB9O1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gcHJvcGVydGllc1JlZHVjZXJzKSB7XG4gICAgICBuZXdTdGF0ZVtwcm9wZXJ0eSBhcyBQXSA9IHByb3BlcnRpZXNSZWR1Y2Vyc1twcm9wZXJ0eV0oXG4gICAgICAgIG5ld1N0YXRlW3Byb3BlcnR5XSxcbiAgICAgICAgYWN0aW9uXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3U3RhdGU7XG4gIH07XG59XG5cbi8qKlxuICogam9pbnMgdHdvIHJlZHVjZXJzIHNvIHRoZSB3b3JrIGluIHRoZSBzYW1lIHN0YXRlXG4gKiBAcGFyYW0gZmlyc3RSZWR1Y2VyXG4gKiBAcGFyYW0gc2Vjb25kUmVkdWNlclxuICovXG5leHBvcnQgZnVuY3Rpb24gam9pblJlZHVjZXJzPFN0YXRlPihcbiAgZmlyc3RSZWR1Y2VyOiAoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvblR5cGU8YW55PikgPT4gU3RhdGUsXG4gIHNlY29uZFJlZHVjZXI6IChzdGF0ZTogYW55LCBhY3Rpb246IEFjdGlvblR5cGU8YW55PikgPT4gYW55XG4pOiAoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvblR5cGU8YW55PikgPT4gU3RhdGUge1xuICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlcihzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uVHlwZTxhbnk+KTogU3RhdGUge1xuICAgIGNvbnN0IHNvdXJjZVN0YXRlID0gZmlyc3RSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICAgIHJldHVybiBzZWNvbmRSZWR1Y2VyKHNvdXJjZVN0YXRlLCBhY3Rpb24pO1xuICB9O1xufVxuIl19
@@ -43,4 +43,4 @@ function provideMockLocalTraits({ traitFactory, selectors, }) {
43
43
  */
44
44
 
45
45
  export { provideMockLocalTraits };
46
- //# sourceMappingURL=ngrx-traits-core-testing.js.map
46
+ //# sourceMappingURL=ngrx-traits-core-testing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngrx-traits-core-testing.mjs","sources":["../../../../../libs/ngrx-traits/core/testing/src/provide-mock-local-traits.ts","../../../../../libs/ngrx-traits/core/testing/src/ngrx-traits-core-testing.ts"],"sourcesContent":["import {\n EntityFeatureFactory,\n TraitsLocalStore,\n DISABLE_LOCAL_TRAIT_EFFECTS,\n} from '@ngrx-traits/core';\nimport { Injector, Provider, Type } from '@angular/core';\nimport { EffectSources } from '@ngrx/effects';\nimport { MockStore } from '@ngrx/store/testing';\n\n/*\n * NOTE: provideMockStore({initialState}) initialState will be ignored with local traits store!\n * Override selectors instead\n *\n * You still need to provideMockStore and provideMockActions\n * */\nexport function provideMockLocalTraits<\n T extends TraitsLocalStore<EntityFeatureFactory<any, any>>\n>({\n traitFactory,\n selectors,\n}: {\n traitFactory: Type<T>;\n selectors?: {\n [key in keyof T['localSelectors']]?: ReturnType<T['localSelectors'][key]>;\n };\n}): Provider[] {\n return [\n { provide: DISABLE_LOCAL_TRAIT_EFFECTS, useValue: true },\n {\n provide: EffectSources,\n useValue: {\n addEffects: () => {\n return;\n },\n },\n },\n {\n provide: traitFactory,\n deps: [Injector, MockStore],\n useFactory: (injector: Injector, mockStore: MockStore) => {\n const trait = new traitFactory(injector);\n if (selectors) {\n Object.keys(selectors).forEach(\n (key) =>\n trait.localSelectors?.[key] &&\n mockStore.overrideSelector(\n trait.localSelectors[key],\n selectors?.[key]\n )\n );\n }\n return trait;\n },\n },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;AASA;;;;;AAKK;SACW,sBAAsB,CAEpC,EACA,YAAY,EACZ,SAAS,GAMV,EAAA;IACC,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE;AACxD,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,QAAQ,EAAE;gBACR,UAAU,EAAE,MAAK;oBACf,OAAO;iBACR;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;AAC3B,YAAA,UAAU,EAAE,CAAC,QAAkB,EAAE,SAAoB,KAAI;AACvD,gBAAA,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,gBAAA,IAAI,SAAS,EAAE;oBACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAC5B,CAAC,GAAG,KAAI;;AACN,wBAAA,OAAA,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,GAAG,CAAC;AAC3B,4BAAA,SAAS,CAAC,gBAAgB,CACxB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EACzB,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAG,GAAG,CAAC,CACjB,CAAA;AAAA,qBAAA,CACJ,CAAC;AACH,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;aACd;AACF,SAAA;KACF,CAAC;AACJ;;ACvDA;;AAEG;;;;"}
@@ -497,9 +497,9 @@ class TraitEffect {
497
497
  : resolvedEffects$;
498
498
  }
499
499
  }
500
- TraitEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TraitEffect, deps: [{ token: i1.Actions }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable });
501
- TraitEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TraitEffect });
502
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TraitEffect, decorators: [{
500
+ TraitEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitEffect, deps: [{ token: i1.Actions }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable });
501
+ TraitEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitEffect });
502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitEffect, decorators: [{
503
503
  type: Injectable
504
504
  }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.Store }]; } });
505
505
  function getDestroyActionName(id) {
@@ -648,9 +648,9 @@ class TraitsLocalStore extends TraitEffect {
648
648
  this.traits.destroy();
649
649
  }
650
650
  }
651
- TraitsLocalStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TraitsLocalStore, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
652
- TraitsLocalStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TraitsLocalStore });
653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TraitsLocalStore, decorators: [{
651
+ TraitsLocalStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitsLocalStore, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
652
+ TraitsLocalStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitsLocalStore });
653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TraitsLocalStore, decorators: [{
654
654
  type: Injectable
655
655
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
656
656
 
@@ -748,9 +748,9 @@ const deleteCache = createAction('[Cache] Delete Cache', props());
748
748
  * @param options.expires - time to expire the cache valued, if not present is infinite
749
749
  * @param options.maxCacheSize - max number of keys to store , only works if last key is variable
750
750
  */
751
- function cache({ store, key, source, expires, maxCacheSize, }) {
751
+ function cache({ store, key, source, expires, maxCacheSize, skip, }) {
752
752
  const exp = expires !== null && expires !== void 0 ? expires : Infinity;
753
- return store.select(selectCache(key)).pipe(first(), concatMap((cache) => cache && isCacheValid(cache, exp)
753
+ return store.select(selectCache(key)).pipe(first(), concatMap((cache) => cache && !skip && isCacheValid(cache, exp)
754
754
  ? of(cache.value).pipe(tap(() => store.dispatch(hitCache({ key }))))
755
755
  : source.pipe(tap((value) => store.dispatch(cache$1({
756
756
  key,
@@ -900,10 +900,10 @@ function invalidaSubKeys(state) {
900
900
 
901
901
  class CacheModule {
902
902
  }
903
- CacheModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CacheModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
904
- CacheModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CacheModule, imports: [i2.StoreFeatureModule] });
905
- CacheModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CacheModule, providers: [], imports: [[StoreModule.forFeature('cache', cacheReducer)]] });
906
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CacheModule, decorators: [{
903
+ CacheModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CacheModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
904
+ CacheModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CacheModule, imports: [i2.StoreFeatureModule] });
905
+ CacheModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CacheModule, providers: [], imports: [[StoreModule.forFeature('cache', cacheReducer)]] });
906
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CacheModule, decorators: [{
907
907
  type: NgModule,
908
908
  args: [{
909
909
  imports: [StoreModule.forFeature('cache', cacheReducer)],
@@ -919,4 +919,4 @@ const CacheSelectors = { getCache: selectCache };
919
919
  */
920
920
 
921
921
  export { CacheActions, CacheModule, CacheSelectors, DISABLE_LOCAL_TRAIT_EFFECTS, TraitEffect, TraitsLocalStore, addEntityFeaturesProperties, buildLocalTraits, cache, camelCaseToSentence, capitalize, combineEntityFeatures, createEntityFeatureFactory, createTraitFactory, getDestroyActionName, insertIf, joinReducers, mixEntityFeatures, setPropertiesReducer, setPropertyReducer, toMap };
922
- //# sourceMappingURL=ngrx-traits-core.js.map
922
+ //# sourceMappingURL=ngrx-traits-core.mjs.map