@microphi/store 0.2.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/esm2020/lib/effect/effect.mjs +75 -0
  2. package/esm2020/lib/list/list.mjs +75 -0
  3. package/esm2020/lib/reduce/reduce.mjs +26 -0
  4. package/esm2020/lib/store/store.mjs +101 -0
  5. package/esm2020/lib/utilities/scan-instance.mjs +19 -0
  6. package/{esm2015/microphi-store.js → esm2020/microphi-store.mjs} +0 -0
  7. package/esm2020/public-api.mjs +8 -0
  8. package/fesm2015/microphi-store.mjs +305 -0
  9. package/fesm2015/microphi-store.mjs.map +1 -0
  10. package/fesm2020/microphi-store.mjs +303 -0
  11. package/fesm2020/microphi-store.mjs.map +1 -0
  12. package/index.d.ts +6 -0
  13. package/lib/effect/effect.d.ts +62 -0
  14. package/lib/effect/effect.d.ts.map +1 -0
  15. package/lib/list/list.d.ts +2 -1
  16. package/lib/list/list.d.ts.map +1 -0
  17. package/lib/reduce/reduce.d.ts +12 -0
  18. package/lib/reduce/reduce.d.ts.map +1 -0
  19. package/lib/store/store.d.ts +39 -0
  20. package/lib/store/store.d.ts.map +1 -0
  21. package/lib/utilities/scan-instance.d.ts +3 -0
  22. package/lib/utilities/scan-instance.d.ts.map +1 -0
  23. package/microphi-store.d.ts.map +1 -0
  24. package/package.json +22 -12
  25. package/public-api.d.ts +4 -8
  26. package/public-api.d.ts.map +1 -0
  27. package/bundles/microphi-store.umd.js +0 -1108
  28. package/bundles/microphi-store.umd.js.map +0 -1
  29. package/bundles/microphi-store.umd.min.js +0 -17
  30. package/bundles/microphi-store.umd.min.js.map +0 -1
  31. package/esm2015/lib/actions.js +0 -105
  32. package/esm2015/lib/base-store.js +0 -156
  33. package/esm2015/lib/effect.js +0 -11
  34. package/esm2015/lib/http-status/http-status.interceptor.js +0 -29
  35. package/esm2015/lib/http-status/http-status.store.js +0 -65
  36. package/esm2015/lib/list/list.js +0 -80
  37. package/esm2015/lib/observable-list/observable-list.js +0 -119
  38. package/esm2015/lib/reduce.js +0 -15
  39. package/esm2015/lib/store.js +0 -13
  40. package/esm2015/public-api.js +0 -13
  41. package/fesm2015/microphi-store.js +0 -588
  42. package/fesm2015/microphi-store.js.map +0 -1
  43. package/lib/actions.d.ts +0 -77
  44. package/lib/base-store.d.ts +0 -31
  45. package/lib/effect.d.ts +0 -2
  46. package/lib/http-status/http-status.interceptor.d.ts +0 -7
  47. package/lib/http-status/http-status.store.d.ts +0 -17
  48. package/lib/observable-list/observable-list.d.ts +0 -29
  49. package/lib/reduce.d.ts +0 -7
  50. package/lib/store.d.ts +0 -9
  51. package/microphi-store.d.ts +0 -4
  52. package/microphi-store.metadata.json +0 -1
@@ -1,156 +0,0 @@
1
- import { getDebugger } from '@microgamma/loggator';
2
- import { BehaviorSubject, Observable, Subject, throwError } from 'rxjs';
3
- import { getStoreMetadata } from './store';
4
- import { Actions, REQUEST_SUFFIX, RESPONSE_SUFFIX } from './actions';
5
- import { getReduceMetadata } from './reduce';
6
- import { catchError, takeUntil, tap } from 'rxjs/operators';
7
- export class BaseStore {
8
- constructor() {
9
- this.logger = getDebugger(`microphi:BaseStore:${this.constructor.name}`);
10
- this.actions$ = new Subject();
11
- this._loading$ = new Subject();
12
- this._error$ = new Subject();
13
- this.destroy$ = new Subject();
14
- this.storeMetadata = getStoreMetadata(this);
15
- this.logger('@Store', this.storeMetadata);
16
- this._store$ = new BehaviorSubject(this.storeMetadata.initialState);
17
- // dereference initial state so that is does not leak between instances
18
- this._state = Object.assign({}, this.storeMetadata.initialState);
19
- this.logger('InitialState', this.state);
20
- this.actionsMetadata = new Actions(this.storeMetadata.actions);
21
- const reducerMetadata = getReduceMetadata(this);
22
- this.logger('Reducers', reducerMetadata);
23
- const remappedReducers = this.parseReducers(reducerMetadata);
24
- this.logger('remapped reducers', remappedReducers);
25
- const effectsMetadata = Reflect.getMetadata('@Effect', this) || {};
26
- this.logger('Effects', effectsMetadata);
27
- const remappedEffects = this.remapEffects(effectsMetadata);
28
- this.logger('remapped effects', remappedEffects);
29
- this.actions$.pipe(tap((action) => {
30
- this._loading$.next({
31
- type: action.type,
32
- code: this.actionsMetadata.getActionCodeFromChild(action.type),
33
- payload: action.payload,
34
- status: action.type.endsWith('_REQUEST')
35
- });
36
- }), takeUntil(this.destroy$)).subscribe((action) => {
37
- this.logger('got type', action);
38
- const type = action.type;
39
- // effects are associated with requests
40
- if (type.endsWith(REQUEST_SUFFIX)) {
41
- if (remappedEffects.hasOwnProperty(type)) {
42
- const effectName = remappedEffects[type];
43
- this.logger('should call', effectName);
44
- if (this[effectName] instanceof Function) {
45
- const retValue = this[effectName](action.payload);
46
- if (retValue instanceof Observable) {
47
- retValue.pipe(catchError((err) => {
48
- console.error(`@Effect: ${effectName} thrown the following error`);
49
- console.error(err);
50
- this._loading$.next({
51
- status: false,
52
- payload: action.payload,
53
- code: this.actionsMetadata.getActionCodeFromChild(action.type),
54
- type: action.type,
55
- });
56
- this._error$.next({ action: this.actionsMetadata.getActionCodeFromChild(action.type), error: err });
57
- return throwError(err);
58
- }), takeUntil(this.destroy$)).subscribe((value) => {
59
- this.logger('got data', value);
60
- this.actions$.next({
61
- type: remappedEffects[effectName],
62
- payload: value
63
- });
64
- });
65
- }
66
- }
67
- }
68
- else {
69
- // if there is no effect associated with this action then we can proceed calling the reducer associated
70
- this.actions$.next({
71
- type: type.replace(REQUEST_SUFFIX, RESPONSE_SUFFIX),
72
- payload: action.payload
73
- });
74
- }
75
- }
76
- else if (type.endsWith(RESPONSE_SUFFIX)) {
77
- const fn = remappedReducers[action.type];
78
- this.logger('should call fn', fn);
79
- if (this[remappedReducers[action.type]]) {
80
- try {
81
- this.state = this[remappedReducers[action.type]](this.state, action.payload);
82
- }
83
- catch (e) {
84
- // we don't need to stop loading here at it has already been stopped
85
- console.error(`@Reduce ${fn} thrown an error`, e);
86
- this._error$.next({ action: this.actionsMetadata.getActionCodeFromChild(action.type), error: e });
87
- }
88
- }
89
- }
90
- }, (err) => {
91
- this.logger('got error', err);
92
- // TODO should handle the error or should we change loading$ to a more generic status$ so we can pass altogether
93
- // loadings and errors events?
94
- this._error$.next(err);
95
- console.error(err);
96
- });
97
- }
98
- get state() {
99
- return this._state;
100
- }
101
- set state(value) {
102
- this.logger('setting new state', value);
103
- this._state = value;
104
- this._store$.next(value);
105
- if (this.storeMetadata.useLocalStorage) {
106
- this.logger('saving on localStorage');
107
- localStorage.setItem(this.storeMetadata.name, JSON.stringify(value));
108
- }
109
- }
110
- get store$() {
111
- return this._store$.asObservable();
112
- }
113
- get loading$() {
114
- return this._loading$.asObservable();
115
- }
116
- get error$() {
117
- return this._error$.asObservable();
118
- }
119
- dispatch(type, payload) {
120
- const requestAction = this.actionsMetadata.getActionsByCode(type).request;
121
- this.logger('dispatching type', requestAction);
122
- this.actions$.next({ type: requestAction, payload });
123
- }
124
- parseReducers(reducers) {
125
- const remappedReducers = {};
126
- Object.keys(reducers).forEach((action) => {
127
- if (+action >= 0) {
128
- const _action = Number(action);
129
- // this.logger('remapping', type, 'to');
130
- const realAction = this.actionsMetadata.getActionsByCode(_action).response;
131
- // this.logger('real type to map to', realAction);
132
- remappedReducers[realAction] = reducers[action];
133
- }
134
- });
135
- return remappedReducers;
136
- }
137
- remapEffects(effectsMetadata) {
138
- const remappedEffects = {};
139
- Object.keys(effectsMetadata).forEach((action) => {
140
- // effects should react to REQUEST events
141
- if (+action >= 0) {
142
- const _action = Number(action);
143
- const realAction = this.actionsMetadata.getActionsByCode(_action).request;
144
- remappedEffects[realAction] = effectsMetadata[action];
145
- // mapping the effect function so that it can return a response type
146
- remappedEffects[effectsMetadata[action]] = this.actionsMetadata.getActionsByCode(_action).response;
147
- }
148
- });
149
- return remappedEffects;
150
- }
151
- ngOnDestroy() {
152
- this.destroy$.next();
153
- this.destroy$.complete();
154
- }
155
- }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlL3NyYy9saWIvYmFzZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLE1BQU0sU0FBUyxDQUFDO0FBQ3pELE9BQU8sRUFBVSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUQsTUFBTSxPQUFnQixTQUFTO0lBc0Q3QjtRQXBEUSxXQUFNLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUF5QnBFLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFHMUIsQ0FBQztRQUVHLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFLM0IsQ0FBQztRQU1HLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFHekIsQ0FBQztRQU1HLGFBQVEsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUlsRCxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7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J0BtaWNyb2dhbW1hL2xvZ2dhdG9yJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0U3RvcmVNZXRhZGF0YSwgU3RvcmVPcHRpb25zIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvbnMsIFJFUVVFU1RfU1VGRklYLCBSRVNQT05TRV9TVUZGSVggfSBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHsgZ2V0UmVkdWNlTWV0YWRhdGEgfSBmcm9tICcuL3JlZHVjZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN0b3JlPFQgZXh0ZW5kcyB7fT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgbG9nZ2VyID0gZ2V0RGVidWdnZXIoYG1pY3JvcGhpOkJhc2VTdG9yZToke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlTWV0YWRhdGE6IFN0b3JlT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zTWV0YWRhdGE6IEFjdGlvbnM8YW55PjtcblxuICBwcml2YXRlIF9zdGF0ZTogVDtcbiAgcHJpdmF0ZSBnZXQgc3RhdGUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG4gIHByaXZhdGUgc2V0IHN0YXRlKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5sb2dnZXIoJ3NldHRpbmcgbmV3IHN0YXRlJywgdmFsdWUpO1xuICAgIHRoaXMuX3N0YXRlID0gdmFsdWU7XG4gICAgdGhpcy5fc3RvcmUkLm5leHQodmFsdWUpO1xuICAgIGlmICh0aGlzLnN0b3JlTWV0YWRhdGEudXNlTG9jYWxTdG9yYWdlKSB7XG4gICAgICB0aGlzLmxvZ2dlcignc2F2aW5nIG9uIGxvY2FsU3RvcmFnZScpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yZU1ldGFkYXRhLm5hbWUsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3RvcmUkOiBCZWhhdmlvclN1YmplY3Q8VD47XG5cbiAgcHVibGljIGdldCBzdG9yZSQoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aW9ucyQgPSBuZXcgU3ViamVjdDx7XG4gICAgdHlwZTogc3RyaW5nLFxuICAgIHBheWxvYWQ6IGFueVxuICB9PigpO1xuXG4gIHByaXZhdGUgX2xvYWRpbmckID0gbmV3IFN1YmplY3Q8e1xuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjb2RlPzogbnVtYmVyLFxuICAgIHBheWxvYWQ6IGFueSxcbiAgICBzdGF0dXM6IGJvb2xlYW5cbiAgfT4oKTtcblxuICBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTx7IHR5cGU6IHN0cmluZzsgY29kZT86IG51bWJlcjsgcGF5bG9hZDogYW55OyBzdGF0dXM6IGJvb2xlYW4gfT4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Vycm9yJCA9IG5ldyBTdWJqZWN0PHtcbiAgICBhY3Rpb246IG51bWJlcixcbiAgICBlcnJvcjogYW55XG4gIH0+KCk7XG5cbiAgZ2V0IGVycm9yJCgpOiBPYnNlcnZhYmxlPHsgYWN0aW9uOiBudW1iZXI7IGVycm9yOiBhbnkgfT4ge1xuICAgIHJldHVybiB0aGlzLl9lcnJvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB0aGlzLnN0b3JlTWV0YWRhdGEgPSBnZXRTdG9yZU1ldGFkYXRhKHRoaXMpO1xuICAgIHRoaXMubG9nZ2VyKCdAU3RvcmUnLCB0aGlzLnN0b3JlTWV0YWRhdGEpO1xuXG4gICAgdGhpcy5fc3RvcmUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnN0b3JlTWV0YWRhdGEuaW5pdGlhbFN0YXRlKTtcbiAgICAvLyBkZXJlZmVyZW5jZSBpbml0aWFsIHN0YXRlIHNvIHRoYXQgaXMgZG9lcyBub3QgbGVhayBiZXR3ZWVuIGluc3RhbmNlc1xuICAgIHRoaXMuX3N0YXRlID0gT2JqZWN0LmFzc2lnbigge30sICB0aGlzLnN0b3JlTWV0YWRhdGEuaW5pdGlhbFN0YXRlKTtcbiAgICB0aGlzLmxvZ2dlcignSW5pdGlhbFN0YXRlJywgdGhpcy5zdGF0ZSk7XG5cbiAgICB0aGlzLmFjdGlvbnNNZXRhZGF0YSA9IG5ldyBBY3Rpb25zKHRoaXMuc3RvcmVNZXRhZGF0YS5hY3Rpb25zKTtcblxuICAgIGNvbnN0IHJlZHVjZXJNZXRhZGF0YSA9IGdldFJlZHVjZU1ldGFkYXRhKHRoaXMpO1xuICAgIHRoaXMubG9nZ2VyKCdSZWR1Y2VycycsIHJlZHVjZXJNZXRhZGF0YSk7XG4gICAgY29uc3QgcmVtYXBwZWRSZWR1Y2VycyA9IHRoaXMucGFyc2VSZWR1Y2VycyhyZWR1Y2VyTWV0YWRhdGEpO1xuICAgIHRoaXMubG9nZ2VyKCdyZW1hcHBlZCByZWR1Y2VycycsIHJlbWFwcGVkUmVkdWNlcnMpO1xuXG5cbiAgICBjb25zdCBlZmZlY3RzTWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdARWZmZWN0JywgdGhpcykgfHwge307XG4gICAgdGhpcy5sb2dnZXIoJ0VmZmVjdHMnLCBlZmZlY3RzTWV0YWRhdGEpO1xuICAgIGNvbnN0IHJlbWFwcGVkRWZmZWN0cyA9IHRoaXMucmVtYXBFZmZlY3RzKGVmZmVjdHNNZXRhZGF0YSk7XG4gICAgdGhpcy5sb2dnZXIoJ3JlbWFwcGVkIGVmZmVjdHMnLCByZW1hcHBlZEVmZmVjdHMpO1xuXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgdGFwKChhY3Rpb246IEFjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBhY3Rpb24udHlwZSxcbiAgICAgICAgICBjb2RlOiB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25Db2RlRnJvbUNoaWxkKGFjdGlvbi50eXBlKSxcbiAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICBzdGF0dXM6IGFjdGlvbi50eXBlLmVuZHNXaXRoKCdfUkVRVUVTVCcpXG4gICAgICAgIH0pO1xuXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICApLnN1YnNjcmliZSggKGFjdGlvbjogQWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlcignZ290IHR5cGUnLCBhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eXBlID0gYWN0aW9uLnR5cGU7XG5cbiAgICAgIC8vIGVmZmVjdHMgYXJlIGFzc29jaWF0ZWQgd2l0aCByZXF1ZXN0c1xuICAgICAgaWYgKHR5cGUuZW5kc1dpdGgoUkVRVUVTVF9TVUZGSVgpKSB7XG4gICAgICAgIGlmIChyZW1hcHBlZEVmZmVjdHMuaGFzT3duUHJvcGVydHkodHlwZSkpIHtcblxuICAgICAgICAgIGNvbnN0IGVmZmVjdE5hbWUgPSByZW1hcHBlZEVmZmVjdHNbdHlwZV07XG4gICAgICAgICAgdGhpcy5sb2dnZXIoJ3Nob3VsZCBjYWxsJywgZWZmZWN0TmFtZSk7XG5cblxuICAgICAgICAgIGlmICh0aGlzW2VmZmVjdE5hbWVdIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblxuICAgICAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB0aGlzW2VmZmVjdE5hbWVdKGFjdGlvbi5wYXlsb2FkKSBhcyBPYnNlcnZhYmxlPGFueT47XG5cbiAgICAgICAgICAgIGlmIChyZXRWYWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgICAgcmV0VmFsdWUucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEBFZmZlY3Q6ICR7ZWZmZWN0TmFtZX0gdGhyb3duIHRoZSBmb2xsb3dpbmcgZXJyb3JgKTtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogdGhpcy5hY3Rpb25zTWV0YWRhdGEuZ2V0QWN0aW9uQ29kZUZyb21DaGlsZChhY3Rpb24udHlwZSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9lcnJvciQubmV4dCh7YWN0aW9uOiB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25Db2RlRnJvbUNoaWxkKGFjdGlvbi50eXBlKSwgZXJyb3I6IGVycn0pO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIoJ2dvdCBkYXRhJywgdmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zJC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IHJlbWFwcGVkRWZmZWN0c1tlZmZlY3ROYW1lXSxcbiAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZWZmZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjdGlvbiB0aGVuIHdlIGNhbiBwcm9jZWVkIGNhbGxpbmcgdGhlIHJlZHVjZXIgYXNzb2NpYXRlZFxuICAgICAgICAgIHRoaXMuYWN0aW9ucyQubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLnJlcGxhY2UoUkVRVUVTVF9TVUZGSVgsIFJFU1BPTlNFX1NVRkZJWCksXG4gICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZS5lbmRzV2l0aChSRVNQT05TRV9TVUZGSVgpKSB7XG5cbiAgICAgICAgY29uc3QgZm4gPSByZW1hcHBlZFJlZHVjZXJzW2FjdGlvbi50eXBlXTtcbiAgICAgICAgdGhpcy5sb2dnZXIoJ3Nob3VsZCBjYWxsIGZuJywgZm4pO1xuXG4gICAgICAgIGlmICh0aGlzW3JlbWFwcGVkUmVkdWNlcnNbYWN0aW9uLnR5cGVdXSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpc1tyZW1hcHBlZFJlZHVjZXJzW2FjdGlvbi50eXBlXV0odGhpcy5zdGF0ZSwgYWN0aW9uLnBheWxvYWQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcblxuICAgICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBzdG9wIGxvYWRpbmcgaGVyZSBhdCBpdCBoYXMgYWxyZWFkeSBiZWVuIHN0b3BwZWRcblxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQFJlZHVjZSAke2ZufSB0aHJvd24gYW4gZXJyb3JgLCBlKTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yJC5uZXh0KHthY3Rpb246IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbkNvZGVGcm9tQ2hpbGQoYWN0aW9uLnR5cGUpLCBlcnJvcjogZX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlcignZ290IGVycm9yJywgZXJyKTtcbiAgICAgIC8vIFRPRE8gc2hvdWxkIGhhbmRsZSB0aGUgZXJyb3Igb3Igc2hvdWxkIHdlIGNoYW5nZSBsb2FkaW5nJCB0byBhIG1vcmUgZ2VuZXJpYyBzdGF0dXMkIHNvIHdlIGNhbiBwYXNzIGFsdG9nZXRoZXJcbiAgICAgIC8vIGxvYWRpbmdzIGFuZCBlcnJvcnMgZXZlbnRzP1xuICAgICAgdGhpcy5fZXJyb3IkLm5leHQoZXJyKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIGRpc3BhdGNoKHR5cGU6IG51bWJlciwgcGF5bG9hZD86IGFueSkge1xuXG4gICAgY29uc3QgcmVxdWVzdEFjdGlvbiA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUodHlwZSkucmVxdWVzdDtcbiAgICB0aGlzLmxvZ2dlcignZGlzcGF0Y2hpbmcgdHlwZScsIHJlcXVlc3RBY3Rpb24pO1xuXG4gICAgdGhpcy5hY3Rpb25zJC5uZXh0KHt0eXBlOiByZXF1ZXN0QWN0aW9uLCBwYXlsb2FkfSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUmVkdWNlcnMocmVkdWNlcnMpIHtcbiAgICBjb25zdCByZW1hcHBlZFJlZHVjZXJzID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhyZWR1Y2VycykuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoK2FjdGlvbiA+PSAwKSB7XG4gICAgICAgIGNvbnN0IF9hY3Rpb246IG51bWJlciA9IE51bWJlcihhY3Rpb24pO1xuICAgICAgICAvLyB0aGlzLmxvZ2dlcigncmVtYXBwaW5nJywgdHlwZSwgJ3RvJyk7XG4gICAgICAgIGNvbnN0IHJlYWxBY3Rpb24gPSB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25zQnlDb2RlKF9hY3Rpb24pLnJlc3BvbnNlO1xuICAgICAgICAvLyB0aGlzLmxvZ2dlcigncmVhbCB0eXBlIHRvIG1hcCB0bycsIHJlYWxBY3Rpb24pO1xuICAgICAgICByZW1hcHBlZFJlZHVjZXJzW3JlYWxBY3Rpb25dID0gcmVkdWNlcnNbYWN0aW9uXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZW1hcHBlZFJlZHVjZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1hcEVmZmVjdHMoZWZmZWN0c01ldGFkYXRhOiB7fSkge1xuICAgIGNvbnN0IHJlbWFwcGVkRWZmZWN0cyA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoZWZmZWN0c01ldGFkYXRhKS5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgIC8vIGVmZmVjdHMgc2hvdWxkIHJlYWN0IHRvIFJFUVVFU1QgZXZlbnRzXG5cbiAgICAgIGlmICgrYWN0aW9uID49IDApIHtcbiAgICAgICAgY29uc3QgX2FjdGlvbiA9IE51bWJlcihhY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHJlYWxBY3Rpb24gPSB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25zQnlDb2RlKF9hY3Rpb24pLnJlcXVlc3Q7XG5cbiAgICAgICAgcmVtYXBwZWRFZmZlY3RzW3JlYWxBY3Rpb25dID0gZWZmZWN0c01ldGFkYXRhW2FjdGlvbl07XG4gICAgICAgIC8vIG1hcHBpbmcgdGhlIGVmZmVjdCBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiByZXR1cm4gYSByZXNwb25zZSB0eXBlXG4gICAgICAgIHJlbWFwcGVkRWZmZWN0c1tlZmZlY3RzTWV0YWRhdGFbYWN0aW9uXV0gPSB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25zQnlDb2RlKF9hY3Rpb24pLnJlc3BvbnNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlbWFwcGVkRWZmZWN0cztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIl19
@@ -1,11 +0,0 @@
1
- import { getDebugger } from '@microgamma/loggator';
2
- export function Effect(onAction) {
3
- return (target, key) => {
4
- const d = getDebugger(`microphi:@Effect:${target.constructor.name}`);
5
- d('decorating', key, 'with type', onAction);
6
- const effects = Reflect.getMetadata('@Effect', target) || {};
7
- effects[onAction] = key;
8
- return Reflect.defineMetadata('@Effect', effects, target);
9
- };
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmUvc3JjL2xpYi9lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE1BQU0sVUFBVSxNQUFNLENBQUMsUUFBZ0I7SUFFckMsT0FBTyxDQUErQixNQUFhLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFFbEUsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFckUsQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU3RCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRXhCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJ0BtaWNyb2dhbW1hL2xvZ2dhdG9yJztcbmltcG9ydCB7IEJhc2VTdG9yZSB9IGZyb20gJy4vYmFzZS1zdG9yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZlY3Qob25BY3Rpb246IG51bWJlcikge1xuXG4gIHJldHVybiA8U3RvcmUgZXh0ZW5kcyBCYXNlU3RvcmU8YW55Pj4odGFyZ2V0OiBTdG9yZSwga2V5OiBzdHJpbmcpID0+IHtcblxuICAgIGNvbnN0IGQgPSBnZXREZWJ1Z2dlcihgbWljcm9waGk6QEVmZmVjdDoke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuXG4gICAgZCgnZGVjb3JhdGluZycsIGtleSwgJ3dpdGggdHlwZScsIG9uQWN0aW9uKTtcblxuICAgIGNvbnN0IGVmZmVjdHMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdARWZmZWN0JywgdGFyZ2V0KSB8fCB7fTtcblxuICAgIGVmZmVjdHNbb25BY3Rpb25dID0ga2V5O1xuXG4gICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ0BFZmZlY3QnLCBlZmZlY3RzLCB0YXJnZXQpO1xuICB9O1xufVxuIl19
@@ -1,29 +0,0 @@
1
- import { delay, tap } from 'rxjs/operators';
2
- import { Injectable } from '@angular/core';
3
- import { HttpActions, HttpStatusStore } from './http-status.store';
4
- export class HttpStatusInterceptor {
5
- constructor(httpStatusStore) {
6
- this.httpStatusStore = httpStatusStore;
7
- }
8
- intercept(req, next) {
9
- this.httpStatusStore.dispatch(HttpActions.REQUEST);
10
- // extend server response observable with logging
11
- return next.handle(req)
12
- .pipe(delay(100), tap(
13
- // Succeeds when there is a response; ignore other events
14
- () => {
15
- this.httpStatusStore.dispatch(HttpActions.RESPONSE);
16
- },
17
- // Operation failed; error is an HttpErrorResponse
18
- (error) => {
19
- this.httpStatusStore.dispatch(HttpActions.ERROR, error);
20
- }));
21
- }
22
- }
23
- HttpStatusInterceptor.decorators = [
24
- { type: Injectable }
25
- ];
26
- HttpStatusInterceptor.ctorParameters = () => [
27
- { type: HttpStatusStore }
28
- ];
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zdGF0dXMuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZS9zcmMvbGliL2h0dHAtc3RhdHVzL2h0dHAtc3RhdHVzLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR25FLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUV4RCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUVoRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQsaURBQWlEO1FBQ2pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDcEIsSUFBSSxDQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDVixHQUFHO1FBQ0QseURBQXlEO1FBQ3pELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RCxDQUFDO1FBQ0Qsa0RBQWtEO1FBQ2xELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FDRixDQUNGLENBQUM7SUFDTixDQUFDOzs7WUF4QkYsVUFBVTs7O1lBRlcsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEh0dHBBY3Rpb25zLCBIdHRwU3RhdHVzU3RvcmUgfSBmcm9tICcuL2h0dHAtc3RhdHVzLnN0b3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBTdGF0dXNJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFN0YXR1c1N0b3JlOiBIdHRwU3RhdHVzU3RvcmUpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcblxuICAgIHRoaXMuaHR0cFN0YXR1c1N0b3JlLmRpc3BhdGNoKEh0dHBBY3Rpb25zLlJFUVVFU1QpO1xuXG4gICAgLy8gZXh0ZW5kIHNlcnZlciByZXNwb25zZSBvYnNlcnZhYmxlIHdpdGggbG9nZ2luZ1xuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMTAwKSxcbiAgICAgICAgdGFwKFxuICAgICAgICAgIC8vIFN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgYSByZXNwb25zZTsgaWdub3JlIG90aGVyIGV2ZW50c1xuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaHR0cFN0YXR1c1N0b3JlLmRpc3BhdGNoKEh0dHBBY3Rpb25zLlJFU1BPTlNFKTtcblxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gT3BlcmF0aW9uIGZhaWxlZDsgZXJyb3IgaXMgYW4gSHR0cEVycm9yUmVzcG9uc2VcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaHR0cFN0YXR1c1N0b3JlLmRpc3BhdGNoKEh0dHBBY3Rpb25zLkVSUk9SLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -1,65 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { map } from 'rxjs/operators';
3
- import { Injectable } from '@angular/core';
4
- import { Store } from '../store';
5
- import { BaseStore } from '../base-store';
6
- import { Reduce } from '../reduce';
7
- import * as i0 from "@angular/core";
8
- export var HttpActions;
9
- (function (HttpActions) {
10
- HttpActions[HttpActions["REQUEST"] = 0] = "REQUEST";
11
- HttpActions[HttpActions["RESPONSE"] = 1] = "RESPONSE";
12
- HttpActions[HttpActions["ERROR"] = 2] = "ERROR";
13
- })(HttpActions || (HttpActions = {}));
14
- let HttpStatusStore = class HttpStatusStore extends BaseStore {
15
- constructor() {
16
- super(...arguments);
17
- // TODO: add explicit constructor
18
- this.isLoading$ = this.store$.pipe(map((state) => {
19
- return state.isLoading;
20
- }));
21
- }
22
- onRequest() {
23
- return {
24
- isLoading: true
25
- };
26
- }
27
- onResponse() {
28
- return {
29
- isLoading: false
30
- };
31
- }
32
- onError(state, err) {
33
- return {
34
- isLoading: false,
35
- error: err
36
- };
37
- }
38
- };
39
- HttpStatusStore.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpStatusStore_Factory() { return new HttpStatusStore(); }, token: HttpStatusStore, providedIn: "root" });
40
- HttpStatusStore.decorators = [
41
- { type: Injectable, args: [{
42
- providedIn: 'root'
43
- },] }
44
- ];
45
- __decorate([
46
- Reduce(HttpActions.REQUEST)
47
- ], HttpStatusStore.prototype, "onRequest", null);
48
- __decorate([
49
- Reduce(HttpActions.RESPONSE)
50
- ], HttpStatusStore.prototype, "onResponse", null);
51
- __decorate([
52
- Reduce(HttpActions.ERROR)
53
- ], HttpStatusStore.prototype, "onError", null);
54
- HttpStatusStore = __decorate([
55
- Store({
56
- name: 'httpStatusStore',
57
- initialState: {
58
- isLoading: false,
59
- error: null
60
- },
61
- actions: HttpActions
62
- })
63
- ], HttpStatusStore);
64
- export { HttpStatusStore };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zdGF0dXMuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZS9zcmMvbGliL2h0dHAtc3RhdHVzL2h0dHAtc3RhdHVzLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFPbkMsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQixtREFBTyxDQUFBO0lBQ1AscURBQVEsQ0FBQTtJQUNSLCtDQUFLLENBQUE7QUFDUCxDQUFDLEVBSlcsV0FBVyxLQUFYLFdBQVcsUUFJdEI7SUFhWSxlQUFlLFNBQWYsZUFBZ0IsU0FBUSxTQUFvQjs7O1FBQ3ZELGlDQUFpQztRQUkxQixlQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNILENBQUM7S0F5Qkg7SUFyQlMsU0FBUztRQUNmLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUdPLFVBQVU7UUFDaEIsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBR00sT0FBTyxDQUFDLEtBQWdCLEVBQUUsR0FBRztRQUNsQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLEdBQUc7U0FDWCxDQUFDO0lBQ0osQ0FBQztDQUVGLENBQUE7OztZQXJDQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O0FBY0M7SUFEQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztnREFLM0I7QUFHRDtJQURDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2lEQUs1QjtBQUdEO0lBREMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7OENBTXpCO0FBaENVLGVBQWU7SUFYM0IsS0FBSyxDQUFDO1FBQ0wsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixZQUFZLEVBQUU7WUFDWixTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0QsT0FBTyxFQUFFLFdBQVc7S0FDckIsQ0FBQztHQUlXLGVBQWUsQ0FrQzNCO1NBbENZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgQmFzZVN0b3JlIH0gZnJvbSAnLi4vYmFzZS1zdG9yZSc7XG5pbXBvcnQgeyBSZWR1Y2UgfSBmcm9tICcuLi9yZWR1Y2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBTdGF0ZSB7XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZTtcbn1cblxuZXhwb3J0IGVudW0gSHR0cEFjdGlvbnMge1xuICBSRVFVRVNULFxuICBSRVNQT05TRSxcbiAgRVJST1Jcbn1cblxuQFN0b3JlKHtcbiAgbmFtZTogJ2h0dHBTdGF0dXNTdG9yZScsXG4gIGluaXRpYWxTdGF0ZToge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGxcbiAgfSxcbiAgYWN0aW9uczogSHR0cEFjdGlvbnNcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIdHRwU3RhdHVzU3RvcmUgZXh0ZW5kcyBCYXNlU3RvcmU8SHR0cFN0YXRlPiB7XG4gIC8vIFRPRE86IGFkZCBleHBsaWNpdCBjb25zdHJ1Y3RvclxuXG5cblxuICBwdWJsaWMgaXNMb2FkaW5nJCA9IHRoaXMuc3RvcmUkLnBpcGUoXG4gICAgbWFwKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHN0YXRlLmlzTG9hZGluZztcbiAgICB9KVxuICApO1xuXG5cbiAgQFJlZHVjZShIdHRwQWN0aW9ucy5SRVFVRVNUKVxuICBwcml2YXRlIG9uUmVxdWVzdCgpOiBIdHRwU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBpc0xvYWRpbmc6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgQFJlZHVjZShIdHRwQWN0aW9ucy5SRVNQT05TRSlcbiAgcHJpdmF0ZSBvblJlc3BvbnNlKCk6IEh0dHBTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgQFJlZHVjZShIdHRwQWN0aW9ucy5FUlJPUilcbiAgcHVibGljIG9uRXJyb3Ioc3RhdGU6IEh0dHBTdGF0ZSwgZXJyKTogSHR0cFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGVycm9yOiBlcnJcbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
@@ -1,80 +0,0 @@
1
- export class List {
2
- constructor(entities, IDField) {
3
- this.IDField = IDField;
4
- this.entities = new Map();
5
- /**
6
- * maps entities position from the original array to their ids
7
- */
8
- this.ids = [];
9
- this.ids = entities.map((e) => this.getId(e));
10
- entities
11
- .forEach((item, idx) => {
12
- const id = item[IDField];
13
- this.entities.set(id, item);
14
- });
15
- }
16
- get size() {
17
- if (this.ids.length !== this.entities.size) {
18
- throw new Error(`Size Mismatch ${this.ids.length} !== ${this.entities.size}`);
19
- }
20
- return this.entities.size;
21
- }
22
- get(id) {
23
- return this.entities.get(id);
24
- }
25
- getId(entity) {
26
- return entity[this.IDField];
27
- }
28
- *[Symbol.iterator]() {
29
- // tslint:disable-next-line:forin
30
- for (const idx in this.ids) {
31
- const id = this.ids[idx];
32
- yield this.entities.get(id);
33
- }
34
- }
35
- upsert(...entities) {
36
- entities.forEach((e) => {
37
- const id = this.getId(e);
38
- if (!this.entities.has(id)) {
39
- this.ids.push(id);
40
- }
41
- this.entities.set(id, e);
42
- });
43
- }
44
- prepend(...entities) {
45
- entities.reverse().forEach((e) => {
46
- const id = this.getId(e);
47
- if (this.entities.has(id)) {
48
- console.warn(`Entity with id '${id}' already exists, moving to the top of the list. Entity will be updated`);
49
- this.delete(e);
50
- }
51
- this.ids.unshift(id);
52
- this.entities.set(id, e);
53
- });
54
- }
55
- delete(...entities) {
56
- entities.forEach((e) => {
57
- const id = this.getId(e);
58
- const indexOfId = this.ids.findIndex((_id) => _id === id);
59
- if (indexOfId < 0) {
60
- console.warn(`Cannot find id: ${id}`);
61
- }
62
- else {
63
- this.ids.splice(indexOfId, 1);
64
- this.entities.delete(id);
65
- }
66
- });
67
- }
68
- append(...entities) {
69
- entities.forEach((e) => {
70
- const id = this.getId(e);
71
- if (this.entities.has(id)) {
72
- console.warn(`Entity with id '${id}' already exists, moving to the end of the list. Entity will be updated.`);
73
- this.delete(e);
74
- }
75
- this.ids.push(id);
76
- this.entities.set(id, e);
77
- });
78
- }
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlL3NyYy9saWIvbGlzdC9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxJQUFJO0lBeUJmLFlBQVksUUFBc0IsRUFBVSxPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQXZCdEQsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBRXREOztXQUVHO1FBQ2MsUUFBRyxHQUFVLEVBQUUsQ0FBQztRQW9CL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUMsUUFBUTthQUNMLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNyQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQXpCRCxJQUFXLElBQUk7UUFDYixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBRTFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMvRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLEdBQUcsQ0FBQyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFF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QUUsMEVBQTBFLENBQUMsQ0FBQztnQkFDOUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICRLZXlzIH0gZnJvbSAndXRpbGl0eS10eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBMaXN0PEVudGl0eVR5cGUgZXh0ZW5kcyB7fT4gaW1wbGVtZW50cyBJdGVyYWJsZTxFbnRpdHlUeXBlPiB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVudGl0aWVzID0gbmV3IE1hcDxhbnksIEVudGl0eVR5cGU+KCk7XG5cbiAgLyoqXG4gICAqIG1hcHMgZW50aXRpZXMgcG9zaXRpb24gZnJvbSB0aGUgb3JpZ2luYWwgYXJyYXkgdG8gdGhlaXIgaWRzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGlkczogYW55W10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgaWYgKHRoaXMuaWRzLmxlbmd0aCAhPT0gdGhpcy5lbnRpdGllcy5zaXplKSB7XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2l6ZSBNaXNtYXRjaCAke3RoaXMuaWRzLmxlbmd0aH0gIT09ICR7dGhpcy5lbnRpdGllcy5zaXplfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVudGl0aWVzLnNpemU7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXRpZXMuZ2V0KGlkKTtcbiAgfVxuICBwcml2YXRlIGdldElkKGVudGl0eTogRW50aXR5VHlwZSkge1xuICAgIHJldHVybiBlbnRpdHlbdGhpcy5JREZpZWxkXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudGl0aWVzOiBFbnRpdHlUeXBlW10sIHByaXZhdGUgSURGaWVsZDogJEtleXM8RW50aXR5VHlwZT4pIHtcblxuICAgIHRoaXMuaWRzID0gZW50aXRpZXMubWFwKChlKSA9PiB0aGlzLmdldElkKGUpKTtcblxuICAgIGVudGl0aWVzXG4gICAgICAuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gaXRlbVtJREZpZWxkXTtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5zZXQoaWQsIGl0ZW0pO1xuICAgICAgfSk7XG4gIH1cblxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxFbnRpdHlUeXBlPiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXG4gICAgZm9yIChjb25zdCBpZHggaW4gdGhpcy5pZHMpIHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5pZHNbaWR4XTtcbiAgICAgIHlpZWxkIHRoaXMuZW50aXRpZXMuZ2V0KGlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBzZXJ0KC4uLmVudGl0aWVzOiBFbnRpdHlUeXBlW10pIHtcbiAgICBlbnRpdGllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuZ2V0SWQoZSk7XG5cbiAgICAgIGlmICghdGhpcy5lbnRpdGllcy5oYXMoaWQpKSB7XG4gICAgICAgIHRoaXMuaWRzLnB1c2goaWQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVudGl0aWVzLnNldChpZCwgZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcHJlcGVuZCguLi5lbnRpdGllczogRW50aXR5VHlwZVtdKSB7XG4gICAgZW50aXRpZXMucmV2ZXJzZSgpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChlKTtcblxuICAgICAgaWYgKHRoaXMuZW50aXRpZXMuaGFzKGlkKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEVudGl0eSB3aXRoIGlkICcke2lkfScgYWxyZWFkeSBleGlzdHMsIG1vdmluZyB0byB0aGUgdG9wIG9mIHRoZSBsaXN0LiBFbnRpdHkgd2lsbCBiZSB1cGRhdGVkYCk7XG4gICAgICAgIHRoaXMuZGVsZXRlKGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlkcy51bnNoaWZ0KGlkKTtcblxuICAgICAgdGhpcy5lbnRpdGllcy5zZXQoaWQsIGUpO1xuXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKC4uLmVudGl0aWVzOiBFbnRpdHlUeXBlW10pIHtcbiAgICBlbnRpdGllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuZ2V0SWQoZSk7XG4gICAgICBjb25zdCBpbmRleE9mSWQgPSB0aGlzLmlkcy5maW5kSW5kZXgoKF9pZCkgPT4gX2lkID09PSBpZCk7XG5cbiAgICAgIGlmIChpbmRleE9mSWQgPCAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ2Fubm90IGZpbmQgaWQ6ICR7aWR9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlkcy5zcGxpY2UoaW5kZXhPZklkLCAxKTtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5kZWxldGUoaWQpO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXBwZW5kKC4uLmVudGl0aWVzOiBFbnRpdHlUeXBlW10pIHtcbiAgICBlbnRpdGllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuZ2V0SWQoZSk7XG4gICAgICBpZiAodGhpcy5lbnRpdGllcy5oYXMoaWQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRW50aXR5IHdpdGggaWQgJyR7aWR9JyBhbHJlYWR5IGV4aXN0cywgbW92aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuIEVudGl0eSB3aWxsIGJlIHVwZGF0ZWQuYCk7XG4gICAgICAgIHRoaXMuZGVsZXRlKGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlkcy5wdXNoKGlkKTtcbiAgICAgIHRoaXMuZW50aXRpZXMuc2V0KGlkLCBlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,119 +0,0 @@
1
- import { BehaviorSubject } from 'rxjs';
2
- export class ObservableList {
3
- constructor(items, idFieldName = 'id') {
4
- this.idFieldName = idFieldName;
5
- this.ids = new Set();
6
- this.data = new Map();
7
- const ids = items.map((i) => i[this.idFieldName]);
8
- this.ids = new Set(ids);
9
- for (const id of ids) {
10
- this.data.set(id, new BehaviorSubject(items[id]));
11
- }
12
- }
13
- static difference(setA, setB) {
14
- const _difference = new Set(setA);
15
- for (const elem of setB) {
16
- _difference.delete(elem);
17
- }
18
- return _difference;
19
- }
20
- static intersection(setA, setB) {
21
- const _intersection = new Set();
22
- for (const elem of setB) {
23
- if (setA.has(elem)) {
24
- _intersection.add(elem);
25
- }
26
- }
27
- return _intersection;
28
- }
29
- static symmetricDifference(setA, setB) {
30
- const _difference = new Set(setA);
31
- for (const elem of setB) {
32
- if (_difference.has(elem)) {
33
- _difference.delete(elem);
34
- }
35
- else {
36
- _difference.add(elem);
37
- }
38
- }
39
- return _difference;
40
- }
41
- *[Symbol.iterator]() {
42
- // tslint:disable-next-line:forin
43
- for (const id of this.ids.values()) {
44
- yield this.data.get(id);
45
- // yield this.data[id];
46
- }
47
- }
48
- push(...items) {
49
- const id = this.idFieldName;
50
- for (const item of items) {
51
- if (this.data.has(item[id])) {
52
- // check whether the item changed;
53
- const storedItem = this.data.get(item[id]).getValue();
54
- const shouldUpdate = Object.keys(storedItem).some((key) => {
55
- return storedItem[key] !== item[key];
56
- });
57
- if (shouldUpdate) {
58
- this.data.get(item[id]).next(item);
59
- }
60
- }
61
- else {
62
- this.ids.add(item[id]);
63
- this.data.set(item[id], new BehaviorSubject(item));
64
- }
65
- }
66
- }
67
- updateOne(item) {
68
- if (this.data.has(item[this.idFieldName])) {
69
- this.data.get(item[this.idFieldName]).next(item);
70
- }
71
- else {
72
- console.warn('item not found', item);
73
- }
74
- }
75
- toJSON() {
76
- const data = [];
77
- this.data.forEach((value) => {
78
- data.push(value.getValue());
79
- });
80
- return data;
81
- }
82
- /**
83
- * Will update items that are already present only if they need to be updated and remove items that are not present.
84
- * @param items items of the list
85
- */
86
- set(...items) {
87
- const newIds = items.map((i) => i[this.idFieldName]);
88
- const intersection = ObservableList.intersection(this.ids, newIds);
89
- for (const id of intersection) {
90
- this.updateOne(items[id]);
91
- }
92
- const itemsToRemove = ObservableList.difference(this.ids, newIds);
93
- for (const id of itemsToRemove) {
94
- this.removeItem(id);
95
- }
96
- const itemsToAdd = ObservableList.difference(newIds, this.ids);
97
- for (const id of itemsToAdd) {
98
- this.addItem(items[id]);
99
- }
100
- }
101
- /**
102
- * Remove an item from the list given its id
103
- * @param id id of the item to remove
104
- */
105
- removeItem(id) {
106
- this.ids.delete(id);
107
- this.data.delete(id);
108
- }
109
- /**
110
- * Adds an new item to the list
111
- * @param item the item to be added
112
- */
113
- addItem(item) {
114
- const id = item[this.idFieldName];
115
- this.ids.add(id);
116
- this.data.set(id, new BehaviorSubject(item));
117
- }
118
- }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmUvc3JjL2xpYi9vYnNlcnZhYmxlLWxpc3Qvb2JzZXJ2YWJsZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsTUFBTSxPQUFPLGNBQWM7SUFrQ3pCLFlBQVksS0FBVSxFQUFVLGNBQWMsSUFBSTtRQUFsQixnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQWpDakMsUUFBRyxHQUFnQixJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQzlDLFNBQUksR0FBb0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWlDeEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7SUFHSCxDQUFDO0lBdENPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUk7UUFDbEMsTUFBTSxXQUFXLEdBQWdCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVks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QUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLE9BQU8sQ0FBQyxJQUFPO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBPYnNlcnZhYmxlTGlzdDxUIGV4dGVuZHMge30+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpZHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgZGF0YTogTWFwPHN0cmluZywgQmVoYXZpb3JTdWJqZWN0PFQ+PiA9IG5ldyBNYXAoKTtcblxuICBwcml2YXRlIHN0YXRpYyBkaWZmZXJlbmNlKHNldEEsIHNldEIpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgX2RpZmZlcmVuY2U6IFNldDxzdHJpbmc+ID0gbmV3IFNldChzZXRBKTtcbiAgICBmb3IgKGNvbnN0IGVsZW0gb2Ygc2V0Qikge1xuICAgICAgX2RpZmZlcmVuY2UuZGVsZXRlKGVsZW0pO1xuICAgIH1cbiAgICByZXR1cm4gX2RpZmZlcmVuY2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpbnRlcnNlY3Rpb24oc2V0QSwgc2V0Qik6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCBfaW50ZXJzZWN0aW9uOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGNvbnN0IGVsZW0gb2Ygc2V0Qikge1xuICAgICAgaWYgKHNldEEuaGFzKGVsZW0pKSB7XG4gICAgICAgIF9pbnRlcnNlY3Rpb24uYWRkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX2ludGVyc2VjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHN5bW1ldHJpY0RpZmZlcmVuY2Uoc2V0QSwgc2V0Qik6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCBfZGlmZmVyZW5jZTogU2V0PHN0cmluZz4gPSBuZXcgU2V0KHNldEEpO1xuICAgIGZvciAoY29uc3QgZWxlbSBvZiBzZXRCKSB7XG4gICAgICBpZiAoX2RpZmZlcmVuY2UuaGFzKGVsZW0pKSB7XG4gICAgICAgIF9kaWZmZXJlbmNlLmRlbGV0ZShlbGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9kaWZmZXJlbmNlLmFkZChlbGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9kaWZmZXJlbmNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoaXRlbXM6IFRbXSwgcHJpdmF0ZSBpZEZpZWxkTmFtZSA9ICdpZCcpIHtcbiAgICBjb25zdCBpZHMgPSBpdGVtcy5tYXAoKGkpID0+IGlbdGhpcy5pZEZpZWxkTmFtZV0pO1xuICAgIHRoaXMuaWRzID0gbmV3IFNldChpZHMpO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICB0aGlzLmRhdGEuc2V0KGlkLCBuZXcgQmVoYXZpb3JTdWJqZWN0KGl0ZW1zW2lkXSkpO1xuICAgIH1cblxuXG4gIH1cblxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxCZWhhdmlvclN1YmplY3Q8VD4+IHtcblxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXG4gICAgZm9yIChjb25zdCBpZCBvZiB0aGlzLmlkcy52YWx1ZXMoKSkge1xuICAgICAgeWllbGQgdGhpcy5kYXRhLmdldChpZCk7XG4gICAgICAvLyB5aWVsZCB0aGlzLmRhdGFbaWRdO1xuICAgIH1cblxuICB9XG5cbiAgcHVibGljIHB1c2goLi4uaXRlbXM6IFRbXSkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5pZEZpZWxkTmFtZTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuXG4gICAgICBpZiAodGhpcy5kYXRhLmhhcyhpdGVtW2lkXSkpIHtcbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciB0aGUgaXRlbSBjaGFuZ2VkO1xuXG4gICAgICAgIGNvbnN0IHN0b3JlZEl0ZW0gPSB0aGlzLmRhdGEuZ2V0KGl0ZW1baWRdKS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzaG91bGRVcGRhdGUgPSBPYmplY3Qua2V5cyhzdG9yZWRJdGVtKS5zb21lKChrZXkpID0+IHtcbiAgICAgICAgICByZXR1cm4gc3RvcmVkSXRlbVtrZXldICE9PSBpdGVtW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzaG91bGRVcGRhdGUpIHtcbiAgICAgICAgICB0aGlzLmRhdGEuZ2V0KGl0ZW1baWRdKS5uZXh0KGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlkcy5hZGQoaXRlbVtpZF0pO1xuICAgICAgICB0aGlzLmRhdGEuc2V0KGl0ZW1baWRdLCBuZXcgQmVoYXZpb3JTdWJqZWN0KGl0ZW0pKTtcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9uZShpdGVtOiBUKSB7XG4gICAgaWYgKHRoaXMuZGF0YS5oYXMoaXRlbVt0aGlzLmlkRmllbGROYW1lXSkpIHtcblxuICAgICAgdGhpcy5kYXRhLmdldChpdGVtW3RoaXMuaWRGaWVsZE5hbWVdKS5uZXh0KGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2l0ZW0gbm90IGZvdW5kJywgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvSlNPTigpIHtcblxuICAgIGNvbnN0IGRhdGEgPSBbXTtcblxuICAgIHRoaXMuZGF0YS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgZGF0YS5wdXNoKHZhbHVlLmdldFZhbHVlKCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogV2lsbCB1cGRhdGUgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBwcmVzZW50IG9ubHkgaWYgdGhleSBuZWVkIHRvIGJlIHVwZGF0ZWQgYW5kIHJlbW92ZSBpdGVtcyB0aGF0IGFyZSBub3QgcHJlc2VudC5cbiAgICogQHBhcmFtIGl0ZW1zIGl0ZW1zIG9mIHRoZSBsaXN0XG4gICAqL1xuICBwdWJsaWMgc2V0KC4uLml0ZW1zOiBUW10pOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJZHM6IHN0cmluZ1tdID0gaXRlbXMubWFwKChpKSA9PiBpW3RoaXMuaWRGaWVsZE5hbWVdKTtcblxuICAgIGNvbnN0IGludGVyc2VjdGlvbjogU2V0PHN0cmluZz4gPSBPYnNlcnZhYmxlTGlzdC5pbnRlcnNlY3Rpb24odGhpcy5pZHMsIG5ld0lkcyk7XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGludGVyc2VjdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVPbmUoaXRlbXNbaWRdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtc1RvUmVtb3ZlOiBTZXQ8c3RyaW5nPiA9IE9ic2VydmFibGVMaXN0LmRpZmZlcmVuY2UodGhpcy5pZHMsIG5ld0lkcyk7XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGl0ZW1zVG9SZW1vdmUpIHtcbiAgICAgIHRoaXMucmVtb3ZlSXRlbShpZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXNUb0FkZDogU2V0PHN0cmluZz4gPSBPYnNlcnZhYmxlTGlzdC5kaWZmZXJlbmNlKG5ld0lkcywgdGhpcy5pZHMpO1xuXG4gICAgZm9yIChjb25zdCBpZCBvZiBpdGVtc1RvQWRkKSB7XG4gICAgICB0aGlzLmFkZEl0ZW0oaXRlbXNbaWRdKTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGdpdmVuIGl0cyBpZFxuICAgKiBAcGFyYW0gaWQgaWQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlSXRlbShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pZHMuZGVsZXRlKGlkKTtcbiAgICB0aGlzLmRhdGEuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIG5ldyBpdGVtIHRvIHRoZSBsaXN0XG4gICAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIGJlIGFkZGVkXG4gICAqL1xuICBwcml2YXRlIGFkZEl0ZW0oaXRlbTogVCkge1xuICAgIGNvbnN0IGlkID0gaXRlbVt0aGlzLmlkRmllbGROYW1lXTtcbiAgICB0aGlzLmlkcy5hZGQoaWQpO1xuICAgIHRoaXMuZGF0YS5zZXQoaWQsIG5ldyBCZWhhdmlvclN1YmplY3QoaXRlbSkpO1xuXG4gIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { getDebugger } from '@microgamma/loggator';
2
- export const ReduceMetadata = '@Reduce';
3
- export function Reduce(onAction) {
4
- return (target, key) => {
5
- const d = getDebugger(`microphi:@Reduce:${target.constructor.name}`);
6
- const reducer = Reflect.getMetadata(ReduceMetadata, target) || {};
7
- reducer[onAction] = key;
8
- d('stored reducers', reducer);
9
- return Reflect.defineMetadata(ReduceMetadata, reducer, target);
10
- };
11
- }
12
- export function getReduceMetadata(instance) {
13
- return Reflect.getMetadata(ReduceMetadata, instance) || {};
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmUvc3JjL2xpYi9yZWR1Y2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFNeEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxRQUFnQjtJQUNyQyxPQUFPLENBQStCLE1BQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUNsRSxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVyRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUV4QixDQUFDLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUIsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFakUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUFRO0lBQ3hDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU3RvcmUgfSBmcm9tICcuL2Jhc2Utc3RvcmUnO1xuaW1wb3J0IHsgZ2V0RGVidWdnZXIgfSBmcm9tICdAbWljcm9nYW1tYS9sb2dnYXRvcic7XG5cbmV4cG9ydCBjb25zdCBSZWR1Y2VNZXRhZGF0YSA9ICdAUmVkdWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWR1Y2VycyB7XG4gIFthY3Rpb25OYW1lOiBudW1iZXJdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWR1Y2Uob25BY3Rpb246IG51bWJlcikge1xuICByZXR1cm4gPFN0b3JlIGV4dGVuZHMgQmFzZVN0b3JlPGFueT4+KHRhcmdldDogU3RvcmUsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZCA9IGdldERlYnVnZ2VyKGBtaWNyb3BoaTpAUmVkdWNlOiR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9YCk7XG5cbiAgICBjb25zdCByZWR1Y2VyID0gUmVmbGVjdC5nZXRNZXRhZGF0YShSZWR1Y2VNZXRhZGF0YSwgdGFyZ2V0KSB8fCB7fTtcblxuICAgIHJlZHVjZXJbb25BY3Rpb25dID0ga2V5O1xuXG4gICAgZCgnc3RvcmVkIHJlZHVjZXJzJywgcmVkdWNlcik7XG5cbiAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShSZWR1Y2VNZXRhZGF0YSwgcmVkdWNlciwgdGFyZ2V0KTtcblxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVkdWNlTWV0YWRhdGEoaW5zdGFuY2UpOiBSZWR1Y2VycyB7XG4gIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKFJlZHVjZU1ldGFkYXRhLCBpbnN0YW5jZSkgfHwge307XG59XG4iXX0=
@@ -1,13 +0,0 @@
1
- import { getDebugger } from '@microgamma/loggator';
2
- export const StoreMetadata = '@Store';
3
- export function Store(options) {
4
- const d = getDebugger(`microphi:@Store:${options.name}`);
5
- return (target) => {
6
- d('running store decorator');
7
- Reflect.defineMetadata(StoreMetadata, options, target);
8
- };
9
- }
10
- export function getStoreMetadata(instance) {
11
- return Reflect.getMetadata(StoreMetadata, instance.constructor);
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZS9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDO0FBU3RDLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBcUI7SUFFekMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV6RCxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFFaEIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFN0IsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBUTtJQUN2QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RGVidWdnZXIgfSBmcm9tICdAbWljcm9nYW1tYS9sb2dnYXRvcic7XG5cbmV4cG9ydCBjb25zdCBTdG9yZU1ldGFkYXRhID0gJ0BTdG9yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVPcHRpb25zIHtcbiAgaW5pdGlhbFN0YXRlOiBhbnk7XG4gIG5hbWU6IHN0cmluZztcbiAgYWN0aW9uczogYW55O1xuICB1c2VMb2NhbFN0b3JhZ2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RvcmUob3B0aW9uczogU3RvcmVPcHRpb25zKSB7XG5cbiAgY29uc3QgZCA9IGdldERlYnVnZ2VyKGBtaWNyb3BoaTpAU3RvcmU6JHtvcHRpb25zLm5hbWV9YCk7XG5cbiAgcmV0dXJuICh0YXJnZXQpID0+IHtcblxuICAgIGQoJ3J1bm5pbmcgc3RvcmUgZGVjb3JhdG9yJyk7XG5cbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFN0b3JlTWV0YWRhdGEsIG9wdGlvbnMsIHRhcmdldCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yZU1ldGFkYXRhKGluc3RhbmNlKTogU3RvcmVPcHRpb25zIHtcbiAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoU3RvcmVNZXRhZGF0YSwgaW5zdGFuY2UuY29uc3RydWN0b3IpO1xufVxuXG5cbiJdfQ==
@@ -1,13 +0,0 @@
1
- /*
2
- * Public API Surface of store
3
- */
4
- export * from './lib/actions';
5
- export * from './lib/base-store';
6
- export * from './lib/effect';
7
- export * from './lib/reduce';
8
- export * from './lib/store';
9
- export * from './lib/observable-list/observable-list';
10
- export * from './lib/http-status/http-status.interceptor';
11
- export * from './lib/http-status/http-status.store';
12
- export * from './lib/list/list';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3N0b3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzdG9yZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZmZlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVkdWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29ic2VydmFibGUtbGlzdC9vYnNlcnZhYmxlLWxpc3QnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHRwLXN0YXR1cy9odHRwLXN0YXR1cy5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHRwLXN0YXR1cy9odHRwLXN0YXR1cy5zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saXN0L2xpc3QnO1xuIl19