@microphi/store 0.2.10 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/lib/index.d.ts +4 -0
  2. package/lib/index.js +8 -0
  3. package/lib/index.js.map +1 -0
  4. package/lib/lib/effect/effect.d.ts +61 -0
  5. package/lib/lib/effect/effect.js +75 -0
  6. package/lib/lib/effect/effect.js.map +1 -0
  7. package/lib/{list → lib/list}/list.d.ts +1 -1
  8. package/lib/lib/list/list.js +75 -0
  9. package/lib/lib/list/list.js.map +1 -0
  10. package/lib/lib/reduce/reduce.d.ts +11 -0
  11. package/lib/lib/reduce/reduce.js +26 -0
  12. package/lib/lib/reduce/reduce.js.map +1 -0
  13. package/lib/lib/store/store.d.ts +38 -0
  14. package/lib/lib/store/store.js +99 -0
  15. package/lib/lib/store/store.js.map +1 -0
  16. package/lib/lib/utilities/capitalise.d.ts +1 -0
  17. package/lib/lib/utilities/capitalise.js +7 -0
  18. package/lib/lib/utilities/capitalise.js.map +1 -0
  19. package/lib/lib/utilities/scan-instance.d.ts +2 -0
  20. package/lib/lib/utilities/scan-instance.js +19 -0
  21. package/lib/lib/utilities/scan-instance.js.map +1 -0
  22. package/package.json +18 -14
  23. package/bundles/microphi-store.umd.js +0 -996
  24. package/bundles/microphi-store.umd.js.map +0 -1
  25. package/bundles/microphi-store.umd.min.js +0 -16
  26. package/bundles/microphi-store.umd.min.js.map +0 -1
  27. package/esm2015/lib/actions.js +0 -105
  28. package/esm2015/lib/base-store.js +0 -156
  29. package/esm2015/lib/effect.js +0 -11
  30. package/esm2015/lib/http-status/http-status.interceptor.js +0 -31
  31. package/esm2015/lib/http-status/http-status.store.js +0 -63
  32. package/esm2015/lib/list/list.js +0 -80
  33. package/esm2015/lib/observable-list/observable-list.js +0 -119
  34. package/esm2015/lib/reduce.js +0 -15
  35. package/esm2015/lib/store.js +0 -13
  36. package/esm2015/microphi-store.js +0 -5
  37. package/esm2015/public-api.js +0 -13
  38. package/esm5/lib/actions.js +0 -110
  39. package/esm5/lib/base-store.js +0 -177
  40. package/esm5/lib/effect.js +0 -11
  41. package/esm5/lib/http-status/http-status.interceptor.js +0 -33
  42. package/esm5/lib/http-status/http-status.store.js +0 -66
  43. package/esm5/lib/list/list.js +0 -126
  44. package/esm5/lib/observable-list/observable-list.js +0 -250
  45. package/esm5/lib/reduce.js +0 -15
  46. package/esm5/lib/store.js +0 -13
  47. package/esm5/microphi-store.js +0 -5
  48. package/esm5/public-api.js +0 -13
  49. package/fesm2015/microphi-store.js +0 -586
  50. package/fesm2015/microphi-store.js.map +0 -1
  51. package/fesm5/microphi-store.js +0 -788
  52. package/fesm5/microphi-store.js.map +0 -1
  53. package/lib/actions.d.ts +0 -77
  54. package/lib/base-store.d.ts +0 -31
  55. package/lib/effect.d.ts +0 -2
  56. package/lib/http-status/http-status.interceptor.d.ts +0 -7
  57. package/lib/http-status/http-status.store.d.ts +0 -17
  58. package/lib/observable-list/observable-list.d.ts +0 -29
  59. package/lib/reduce.d.ts +0 -7
  60. package/lib/store.d.ts +0 -9
  61. package/microphi-store.d.ts +0 -4
  62. package/microphi-store.metadata.json +0 -1
  63. package/public-api.d.ts +0 -9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3BoaS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9iYXNlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFVLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxNQUFNLE9BQWdCLFNBQVM7SUFzRDdCO1FBcERRLFdBQU0sR0FBRyxXQUFXLENBQUMsc0JBQXNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQXlCcEUsYUFBUSxHQUFHLElBQUksT0FBTyxFQUcxQixDQUFDO1FBRUcsY0FBUyxHQUFHLElBQUksT0FBTyxFQUszQixDQUFDO1FBTUcsWUFBTyxHQUFHLElBQUksT0FBTyxFQUd6QixDQUFDO1FBTUcsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBSWxELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSx1RUFB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bWEvbG9nZ2F0b3InO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRTdG9yZU1ldGFkYXRhLCBTdG9yZU9wdGlvbnMgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9ucywgUkVRVUVTVF9TVUZGSVgsIFJFU1BPTlNFX1NVRkZJWCB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXRSZWR1Y2VNZXRhZGF0YSB9IGZyb20gJy4vcmVkdWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU3RvcmU8VCBleHRlbmRzIHt9PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBsb2dnZXIgPSBnZXREZWJ1Z2dlcihgbWljcm9waGk6QmFzZVN0b3JlOiR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVNZXRhZGF0YTogU3RvcmVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnNNZXRhZGF0YTogQWN0aW9uczxhbnk+O1xuXG4gIHByaXZhdGUgX3N0YXRlOiBUO1xuICBwcml2YXRlIGdldCBzdGF0ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cbiAgcHJpdmF0ZSBzZXQgc3RhdGUodmFsdWU6IFQpIHtcbiAgICB0aGlzLmxvZ2dlcignc2V0dGluZyBuZXcgc3RhdGUnLCB2YWx1ZSk7XG4gICAgdGhpcy5fc3RhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLl9zdG9yZSQubmV4dCh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuc3RvcmVNZXRhZGF0YS51c2VMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyKCdzYXZpbmcgb24gbG9jYWxTdG9yYWdlJyk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JlTWV0YWRhdGEubmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zdG9yZSQ6IEJlaGF2aW9yU3ViamVjdDxUPjtcblxuICBwdWJsaWMgZ2V0IHN0b3JlJCgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IG5ldyBTdWJqZWN0PHtcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogYW55XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSBfbG9hZGluZyQgPSBuZXcgU3ViamVjdDx7XG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGNvZGU/OiBudW1iZXIsXG4gICAgcGF5bG9hZDogYW55LFxuICAgIHN0YXR1czogYm9vbGVhblxuICB9PigpO1xuXG4gIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPHsgdHlwZTogc3RyaW5nOyBjb2RlPzogbnVtYmVyOyBwYXlsb2FkOiBhbnk7IHN0YXR1czogYm9vbGVhbiB9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXJyb3IkID0gbmV3IFN1YmplY3Q8e1xuICAgIGFjdGlvbjogbnVtYmVyLFxuICAgIGVycm9yOiBhbnlcbiAgfT4oKTtcblxuICBnZXQgZXJyb3IkKCk6IE9ic2VydmFibGU8eyBhY3Rpb246IG51bWJlcjsgZXJyb3I6IGFueSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIHRoaXMuc3RvcmVNZXRhZGF0YSA9IGdldFN0b3JlTWV0YWRhdGEodGhpcyk7XG4gICAgdGhpcy5sb2dnZXIoJ0BTdG9yZScsIHRoaXMuc3RvcmVNZXRhZGF0YSk7XG5cbiAgICB0aGlzLl9zdG9yZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuc3RvcmVNZXRhZGF0YS5pbml0aWFsU3RhdGUpO1xuICAgIC8vIGRlcmVmZXJlbmNlIGluaXRpYWwgc3RhdGUgc28gdGhhdCBpcyBkb2VzIG5vdCBsZWFrIGJldHdlZW4gaW5zdGFuY2VzXG4gICAgdGhpcy5fc3RhdGUgPSBPYmplY3QuYXNzaWduKCB7fSwgIHRoaXMuc3RvcmVNZXRhZGF0YS5pbml0aWFsU3RhdGUpO1xuICAgIHRoaXMubG9nZ2VyKCdJbml0aWFsU3RhdGUnLCB0aGlzLnN0YXRlKTtcblxuICAgIHRoaXMuYWN0aW9uc01ldGFkYXRhID0gbmV3IEFjdGlvbnModGhpcy5zdG9yZU1ldGFkYXRhLmFjdGlvbnMpO1xuXG4gICAgY29uc3QgcmVkdWNlck1ldGFkYXRhID0gZ2V0UmVkdWNlTWV0YWRhdGEodGhpcyk7XG4gICAgdGhpcy5sb2dnZXIoJ1JlZHVjZXJzJywgcmVkdWNlck1ldGFkYXRhKTtcbiAgICBjb25zdCByZW1hcHBlZFJlZHVjZXJzID0gdGhpcy5wYXJzZVJlZHVjZXJzKHJlZHVjZXJNZXRhZGF0YSk7XG4gICAgdGhpcy5sb2dnZXIoJ3JlbWFwcGVkIHJlZHVjZXJzJywgcmVtYXBwZWRSZWR1Y2Vycyk7XG5cblxuICAgIGNvbnN0IGVmZmVjdHNNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ0BFZmZlY3QnLCB0aGlzKSB8fCB7fTtcbiAgICB0aGlzLmxvZ2dlcignRWZmZWN0cycsIGVmZmVjdHNNZXRhZGF0YSk7XG4gICAgY29uc3QgcmVtYXBwZWRFZmZlY3RzID0gdGhpcy5yZW1hcEVmZmVjdHMoZWZmZWN0c01ldGFkYXRhKTtcbiAgICB0aGlzLmxvZ2dlcigncmVtYXBwZWQgZWZmZWN0cycsIHJlbWFwcGVkRWZmZWN0cyk7XG5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICB0YXAoKGFjdGlvbjogQWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoe1xuICAgICAgICAgIHR5cGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgIGNvZGU6IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbkNvZGVGcm9tQ2hpbGQoYWN0aW9uLnR5cGUpLFxuICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIHN0YXR1czogYWN0aW9uLnR5cGUuZW5kc1dpdGgoJ19SRVFVRVNUJylcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICkuc3Vic2NyaWJlKCAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyKCdnb3QgdHlwZScsIGFjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBhY3Rpb24udHlwZTtcblxuICAgICAgLy8gZWZmZWN0cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3RzXG4gICAgICBpZiAodHlwZS5lbmRzV2l0aChSRVFVRVNUX1NVRkZJWCkpIHtcbiAgICAgICAgaWYgKHJlbWFwcGVkRWZmZWN0cy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuXG4gICAgICAgICAgY29uc3QgZWZmZWN0TmFtZSA9IHJlbWFwcGVkRWZmZWN0c1t0eXBlXTtcbiAgICAgICAgICB0aGlzLmxvZ2dlcignc2hvdWxkIGNhbGwnLCBlZmZlY3ROYW1lKTtcblxuXG4gICAgICAgICAgaWYgKHRoaXNbZWZmZWN0TmFtZV0gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXG4gICAgICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHRoaXNbZWZmZWN0TmFtZV0oYWN0aW9uLnBheWxvYWQpIGFzIE9ic2VydmFibGU8YW55PjtcblxuICAgICAgICAgICAgaWYgKHJldFZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgICByZXRWYWx1ZS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQEVmZmVjdDogJHtlZmZlY3ROYW1lfSB0aHJvd24gdGhlIGZvbGxvd2luZyBlcnJvcmApO1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZyQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25Db2RlRnJvbUNoaWxkKGFjdGlvbi50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogYWN0aW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9yJC5uZXh0KHthY3Rpb246IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbkNvZGVGcm9tQ2hpbGQoYWN0aW9uLnR5cGUpLCBlcnJvcjogZXJyfSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgICApLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlcignZ290IGRhdGEnLCB2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogcmVtYXBwZWRFZmZlY3RzW2VmZmVjdE5hbWVdLFxuICAgICAgICAgICAgICAgICAgcGF5bG9hZDogdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBlZmZlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWN0aW9uIHRoZW4gd2UgY2FuIHByb2NlZWQgY2FsbGluZyB0aGUgcmVkdWNlciBhc3NvY2lhdGVkXG4gICAgICAgICAgdGhpcy5hY3Rpb25zJC5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUucmVwbGFjZShSRVFVRVNUX1NVRkZJWCwgUkVTUE9OU0VfU1VGRklYKSxcbiAgICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlLmVuZHNXaXRoKFJFU1BPTlNFX1NVRkZJWCkpIHtcblxuICAgICAgICBjb25zdCBmbiA9IHJlbWFwcGVkUmVkdWNlcnNbYWN0aW9uLnR5cGVdO1xuICAgICAgICB0aGlzLmxvZ2dlcignc2hvdWxkIGNhbGwgZm4nLCBmbik7XG5cbiAgICAgICAgaWYgKHRoaXNbcmVtYXBwZWRSZWR1Y2Vyc1thY3Rpb24udHlwZV1dKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzW3JlbWFwcGVkUmVkdWNlcnNbYWN0aW9uLnR5cGVdXSh0aGlzLnN0YXRlLCBhY3Rpb24ucGF5bG9hZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuXG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHN0b3AgbG9hZGluZyBoZXJlIGF0IGl0IGhhcyBhbHJlYWR5IGJlZW4gc3RvcHBlZFxuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBAUmVkdWNlICR7Zm59IHRocm93biBhbiBlcnJvcmAsIGUpO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IkLm5leHQoe2FjdGlvbjogdGhpcy5hY3Rpb25zTWV0YWRhdGEuZ2V0QWN0aW9uQ29kZUZyb21DaGlsZChhY3Rpb24udHlwZSksIGVycm9yOiBlfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyKCdnb3QgZXJyb3InLCBlcnIpO1xuICAgICAgLy8gVE9ETyBzaG91bGQgaGFuZGxlIHRoZSBlcnJvciBvciBzaG91bGQgd2UgY2hhbmdlIGxvYWRpbmckIHRvIGEgbW9yZSBnZW5lcmljIHN0YXR1cyQgc28gd2UgY2FuIHBhc3MgYWx0b2dldGhlclxuICAgICAgLy8gbG9hZGluZ3MgYW5kIGVycm9ycyBldmVudHM/XG4gICAgICB0aGlzLl9lcnJvciQubmV4dChlcnIpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2godHlwZTogbnVtYmVyLCBwYXlsb2FkPzogYW55KSB7XG5cbiAgICBjb25zdCByZXF1ZXN0QWN0aW9uID0gdGhpcy5hY3Rpb25zTWV0YWRhdGEuZ2V0QWN0aW9uc0J5Q29kZSh0eXBlKS5yZXF1ZXN0O1xuICAgIHRoaXMubG9nZ2VyKCdkaXNwYXRjaGluZyB0eXBlJywgcmVxdWVzdEFjdGlvbik7XG5cbiAgICB0aGlzLmFjdGlvbnMkLm5leHQoe3R5cGU6IHJlcXVlc3RBY3Rpb24sIHBheWxvYWR9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VSZWR1Y2VycyhyZWR1Y2Vycykge1xuICAgIGNvbnN0IHJlbWFwcGVkUmVkdWNlcnMgPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgIGlmICgrYWN0aW9uID49IDApIHtcbiAgICAgICAgY29uc3QgX2FjdGlvbjogbnVtYmVyID0gTnVtYmVyKGFjdGlvbik7XG4gICAgICAgIC8vIHRoaXMubG9nZ2VyKCdyZW1hcHBpbmcnLCB0eXBlLCAndG8nKTtcbiAgICAgICAgY29uc3QgcmVhbEFjdGlvbiA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUoX2FjdGlvbikucmVzcG9uc2U7XG4gICAgICAgIC8vIHRoaXMubG9nZ2VyKCdyZWFsIHR5cGUgdG8gbWFwIHRvJywgcmVhbEFjdGlvbik7XG4gICAgICAgIHJlbWFwcGVkUmVkdWNlcnNbcmVhbEFjdGlvbl0gPSByZWR1Y2Vyc1thY3Rpb25dO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlbWFwcGVkUmVkdWNlcnM7XG4gIH1cblxuICBwcml2YXRlIHJlbWFwRWZmZWN0cyhlZmZlY3RzTWV0YWRhdGE6IHt9KSB7XG4gICAgY29uc3QgcmVtYXBwZWRFZmZlY3RzID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhlZmZlY3RzTWV0YWRhdGEpLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgLy8gZWZmZWN0cyBzaG91bGQgcmVhY3QgdG8gUkVRVUVTVCBldmVudHNcblxuICAgICAgaWYgKCthY3Rpb24gPj0gMCkge1xuICAgICAgICBjb25zdCBfYWN0aW9uID0gTnVtYmVyKGFjdGlvbik7XG5cbiAgICAgICAgY29uc3QgcmVhbEFjdGlvbiA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUoX2FjdGlvbikucmVxdWVzdDtcblxuICAgICAgICByZW1hcHBlZEVmZmVjdHNbcmVhbEFjdGlvbl0gPSBlZmZlY3RzTWV0YWRhdGFbYWN0aW9uXTtcbiAgICAgICAgLy8gbWFwcGluZyB0aGUgZWZmZWN0IGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2FuIHJldHVybiBhIHJlc3BvbnNlIHR5cGVcbiAgICAgICAgcmVtYXBwZWRFZmZlY3RzW2VmZmVjdHNNZXRhZGF0YVthY3Rpb25dXSA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUoX2FjdGlvbikucmVzcG9uc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVtYXBwZWRFZmZlY3RzO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1pY3JvcGhpL3N0b3JlLyIsInNvdXJjZXMiOlsibGliL2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxRQUFnQjtJQUVyQyxPQUFPLENBQStCLE1BQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUVsRSxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVyRSxDQUFDLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFNUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdELE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7UUFFeEIsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnQG1pY3JvZ2FtbWEvbG9nZ2F0b3InO1xuaW1wb3J0IHsgQmFzZVN0b3JlIH0gZnJvbSAnLi9iYXNlLXN0b3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIEVmZmVjdChvbkFjdGlvbjogbnVtYmVyKSB7XG5cbiAgcmV0dXJuIDxTdG9yZSBleHRlbmRzIEJhc2VTdG9yZTxhbnk+Pih0YXJnZXQ6IFN0b3JlLCBrZXk6IHN0cmluZykgPT4ge1xuXG4gICAgY29uc3QgZCA9IGdldERlYnVnZ2VyKGBtaWNyb3BoaTpARWZmZWN0OiR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9YCk7XG5cbiAgICBkKCdkZWNvcmF0aW5nJywga2V5LCAnd2l0aCB0eXBlJywgb25BY3Rpb24pO1xuXG4gICAgY29uc3QgZWZmZWN0cyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ0BFZmZlY3QnLCB0YXJnZXQpIHx8IHt9O1xuXG4gICAgZWZmZWN0c1tvbkFjdGlvbl0gPSBrZXk7XG5cbiAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnQEVmZmVjdCcsIGVmZmVjdHMsIHRhcmdldCk7XG4gIH07XG59XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { delay, tap } from 'rxjs/operators';
3
- import { Injectable } from '@angular/core';
4
- import { HttpActions, HttpStatusStore } from './http-status.store';
5
- let HttpStatusInterceptor = class HttpStatusInterceptor {
6
- constructor(httpStatusStore) {
7
- this.httpStatusStore = httpStatusStore;
8
- }
9
- intercept(req, next) {
10
- this.httpStatusStore.dispatch(HttpActions.REQUEST);
11
- // extend server response observable with logging
12
- return next.handle(req)
13
- .pipe(delay(100), tap(
14
- // Succeeds when there is a response; ignore other events
15
- () => {
16
- this.httpStatusStore.dispatch(HttpActions.RESPONSE);
17
- },
18
- // Operation failed; error is an HttpErrorResponse
19
- (error) => {
20
- this.httpStatusStore.dispatch(HttpActions.ERROR, error);
21
- }));
22
- }
23
- };
24
- HttpStatusInterceptor.ctorParameters = () => [
25
- { type: HttpStatusStore }
26
- ];
27
- HttpStatusInterceptor = __decorate([
28
- Injectable()
29
- ], HttpStatusInterceptor);
30
- export { HttpStatusInterceptor };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zdGF0dXMuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9waGkvc3RvcmUvIiwic291cmNlcyI6WyJsaWIvaHR0cC1zdGF0dXMvaHR0cC1zdGF0dXMuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR25FLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBQ2hDLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFFeEQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFFaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ3BCLElBQUksQ0FDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQ1YsR0FBRztRQUNELHlEQUF5RDtRQUN6RCxHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEQsQ0FBQztRQUNELGtEQUFrRDtRQUNsRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ04sQ0FBQztDQUNGLENBQUE7O1lBdkJzQyxlQUFlOztBQUR6QyxxQkFBcUI7SUFEakMsVUFBVSxFQUFFO0dBQ0EscUJBQXFCLENBd0JqQztTQXhCWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBIdHRwQWN0aW9ucywgSHR0cFN0YXR1c1N0b3JlIH0gZnJvbSAnLi9odHRwLXN0YXR1cy5zdG9yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwU3RhdHVzSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTdGF0dXNTdG9yZTogSHR0cFN0YXR1c1N0b3JlKSB7fVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG5cbiAgICB0aGlzLmh0dHBTdGF0dXNTdG9yZS5kaXNwYXRjaChIdHRwQWN0aW9ucy5SRVFVRVNUKTtcblxuICAgIC8vIGV4dGVuZCBzZXJ2ZXIgcmVzcG9uc2Ugb2JzZXJ2YWJsZSB3aXRoIGxvZ2dpbmdcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlbGF5KDEwMCksXG4gICAgICAgIHRhcChcbiAgICAgICAgICAvLyBTdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGEgcmVzcG9uc2U7IGlnbm9yZSBvdGhlciBldmVudHNcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmh0dHBTdGF0dXNTdG9yZS5kaXNwYXRjaChIdHRwQWN0aW9ucy5SRVNQT05TRSk7XG5cbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIE9wZXJhdGlvbiBmYWlsZWQ7IGVycm9yIGlzIGFuIEh0dHBFcnJvclJlc3BvbnNlXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmh0dHBTdGF0dXNTdG9yZS5kaXNwYXRjaChIdHRwQWN0aW9ucy5FUlJPUiwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxufVxuIl19
@@ -1,63 +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
- __decorate([
41
- Reduce(HttpActions.REQUEST)
42
- ], HttpStatusStore.prototype, "onRequest", null);
43
- __decorate([
44
- Reduce(HttpActions.RESPONSE)
45
- ], HttpStatusStore.prototype, "onResponse", null);
46
- __decorate([
47
- Reduce(HttpActions.ERROR)
48
- ], HttpStatusStore.prototype, "onError", null);
49
- HttpStatusStore = __decorate([
50
- Store({
51
- name: 'httpStatusStore',
52
- initialState: {
53
- isLoading: false,
54
- error: null
55
- },
56
- actions: HttpActions
57
- }),
58
- Injectable({
59
- providedIn: 'root'
60
- })
61
- ], HttpStatusStore);
62
- export { HttpStatusStore };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zdGF0dXMuc3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9waGkvc3RvcmUvIiwic291cmNlcyI6WyJsaWIvaHR0cC1zdGF0dXMvaHR0cC1zdGF0dXMuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU9uQyxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLG1EQUFPLENBQUE7SUFDUCxxREFBUSxDQUFBO0lBQ1IsK0NBQUssQ0FBQTtBQUNQLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQWFELElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWdCLFNBQVEsU0FBb0I7SUFBekQ7O1FBQ0UsaUNBQWlDO1FBSTFCLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztLQXlCSDtJQXJCUyxTQUFTO1FBQ2YsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBR08sVUFBVTtRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFHTSxPQUFPLENBQUMsS0FBZ0IsRUFBRSxHQUFHO1FBQ2xDLE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLLEVBQUUsR0FBRztTQUNYLENBQUM7SUFDSixDQUFDO0NBRUYsQ0FBQTs7QUFyQkM7SUFEQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztnREFLM0I7QUFHRDtJQURDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2lEQUs1QjtBQUdEO0lBREMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7OENBTXpCO0FBaENVLGVBQWU7SUFYM0IsS0FBSyxDQUFDO1FBQ0wsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixZQUFZLEVBQUU7WUFDWixTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0QsT0FBTyxFQUFFLFdBQVc7S0FDckIsQ0FBQztJQUNELFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7R0FDVyxlQUFlLENBa0MzQjtTQWxDWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IEJhc2VTdG9yZSB9IGZyb20gJy4uL2Jhc2Utc3RvcmUnO1xuaW1wb3J0IHsgUmVkdWNlIH0gZnJvbSAnLi4vcmVkdWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBIdHRwU3RhdGUge1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBlbnVtIEh0dHBBY3Rpb25zIHtcbiAgUkVRVUVTVCxcbiAgUkVTUE9OU0UsXG4gIEVSUk9SXG59XG5cbkBTdG9yZSh7XG4gIG5hbWU6ICdodHRwU3RhdHVzU3RvcmUnLFxuICBpbml0aWFsU3RhdGU6IHtcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsXG4gIH0sXG4gIGFjdGlvbnM6IEh0dHBBY3Rpb25zXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFN0YXR1c1N0b3JlIGV4dGVuZHMgQmFzZVN0b3JlPEh0dHBTdGF0ZT4ge1xuICAvLyBUT0RPOiBhZGQgZXhwbGljaXQgY29uc3RydWN0b3JcblxuXG5cbiAgcHVibGljIGlzTG9hZGluZyQgPSB0aGlzLnN0b3JlJC5waXBlKFxuICAgIG1hcCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBzdGF0ZS5pc0xvYWRpbmc7XG4gICAgfSlcbiAgKTtcblxuXG4gIEBSZWR1Y2UoSHR0cEFjdGlvbnMuUkVRVUVTVClcbiAgcHJpdmF0ZSBvblJlcXVlc3QoKTogSHR0cFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNMb2FkaW5nOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIEBSZWR1Y2UoSHR0cEFjdGlvbnMuUkVTUE9OU0UpXG4gIHByaXZhdGUgb25SZXNwb25zZSgpOiBIdHRwU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIEBSZWR1Y2UoSHR0cEFjdGlvbnMuRVJST1IpXG4gIHB1YmxpYyBvbkVycm9yKHN0YXRlOiBIdHRwU3RhdGUsIGVycik6IEh0dHBTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBlcnJvcjogZXJyXG4gICAgfTtcbiAgfVxuXG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3BoaS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9saXN0L2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLElBQUk7SUF5QmYsWUFBWSxRQUFzQixFQUFVLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBdkJ0RCxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFFdEQ7O1dBRUc7UUFDYyxRQUFHLEdBQVUsRUFBRSxDQUFDO1FBb0IvQixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5QyxRQUFRO2FBQ0wsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBekJELElBQVcsSUFBSTtRQUNiLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFFMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU0sR0FBRyxDQUFDLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lB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QyxDQUFDO2dCQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJEtleXMgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcblxuZXhwb3J0IGNsYXNzIExpc3Q8RW50aXR5VHlwZSBleHRlbmRzIHt9PiBpbXBsZW1lbnRzIEl0ZXJhYmxlPEVudGl0eVR5cGU+IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXRpZXMgPSBuZXcgTWFwPGFueSwgRW50aXR5VHlwZT4oKTtcblxuICAvKipcbiAgICogbWFwcyBlbnRpdGllcyBwb3NpdGlvbiBmcm9tIHRoZSBvcmlnaW5hbCBhcnJheSB0byB0aGVpciBpZHNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaWRzOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBnZXQgc2l6ZSgpIHtcbiAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSB0aGlzLmVudGl0aWVzLnNpemUpIHtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaXplIE1pc21hdGNoICR7dGhpcy5pZHMubGVuZ3RofSAhPT0gJHt0aGlzLmVudGl0aWVzLnNpemV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW50aXRpZXMuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaWQpIHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcy5nZXQoaWQpO1xuICB9XG4gIHByaXZhdGUgZ2V0SWQoZW50aXR5OiBFbnRpdHlUeXBlKSB7XG4gICAgcmV0dXJuIGVudGl0eVt0aGlzLklERmllbGRdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW50aXRpZXM6IEVudGl0eVR5cGVbXSwgcHJpdmF0ZSBJREZpZWxkOiAkS2V5czxFbnRpdHlUeXBlPikge1xuXG4gICAgdGhpcy5pZHMgPSBlbnRpdGllcy5tYXAoKGUpID0+IHRoaXMuZ2V0SWQoZSkpO1xuXG4gICAgZW50aXRpZXNcbiAgICAgIC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBpdGVtW0lERmllbGRdO1xuICAgICAgICB0aGlzLmVudGl0aWVzLnNldChpZCwgaXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPEVudGl0eVR5cGU+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cbiAgICBmb3IgKGNvbnN0IGlkeCBpbiB0aGlzLmlkcykge1xuICAgICAgY29uc3QgaWQgPSB0aGlzLmlkc1tpZHhdO1xuICAgICAgeWllbGQgdGhpcy5lbnRpdGllcy5nZXQoaWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnQoLi4uZW50aXRpZXM6IEVudGl0eVR5cGVbXSkge1xuICAgIGVudGl0aWVzLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChlKTtcblxuICAgICAgaWYgKCF0aGlzLmVudGl0aWVzLmhhcyhpZCkpIHtcbiAgICAgICAgdGhpcy5pZHMucHVzaChpZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW50aXRpZXMuc2V0KGlkLCBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwcmVwZW5kKC4uLmVudGl0aWVzOiBFbnRpdHlUeXBlW10pIHtcbiAgICBlbnRpdGllcy5yZXZlcnNlKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSB0aGlzLmdldElkKGUpO1xuXG4gICAgICBpZiAodGhpcy5lbnRpdGllcy5oYXMoaWQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRW50aXR5IHdpdGggaWQgJyR7aWR9JyBhbHJlYWR5IGV4aXN0cywgbW92aW5nIHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QuIEVudGl0eSB3aWxsIGJlIHVwZGF0ZWRgKTtcbiAgICAgICAgdGhpcy5kZWxldGUoZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaWRzLnVuc2hpZnQoaWQpO1xuXG4gICAgICB0aGlzLmVudGl0aWVzLnNldChpZCwgZSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoLi4uZW50aXRpZXM6IEVudGl0eVR5cGVbXSkge1xuICAgIGVudGl0aWVzLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChlKTtcbiAgICAgIGNvbnN0IGluZGV4T2ZJZCA9IHRoaXMuaWRzLmZpbmRJbmRleCgoX2lkKSA9PiBfaWQgPT09IGlkKTtcblxuICAgICAgaWYgKGluZGV4T2ZJZCA8IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgZmluZCBpZDogJHtpZH1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaWRzLnNwbGljZShpbmRleE9mSWQsIDEpO1xuICAgICAgICB0aGlzLmVudGl0aWVzLmRlbGV0ZShpZCk7XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBlbmQoLi4uZW50aXRpZXM6IEVudGl0eVR5cGVbXSkge1xuICAgIGVudGl0aWVzLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChlKTtcbiAgICAgIGlmICh0aGlzLmVudGl0aWVzLmhhcyhpZCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBFbnRpdHkgd2l0aCBpZCAnJHtpZH0nIGFscmVhZHkgZXhpc3RzLCBtb3ZpbmcgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gRW50aXR5IHdpbGwgYmUgdXBkYXRlZC5gKTtcbiAgICAgICAgdGhpcy5kZWxldGUoZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaWRzLnB1c2goaWQpO1xuICAgICAgdGhpcy5lbnRpdGllcy5zZXQoaWQsIGUpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1saXN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1pY3JvcGhpL3N0b3JlLyIsInNvdXJjZXMiOlsibGliL29ic2VydmFibGUtbGlzdC9vYnNlcnZhYmxlLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxNQUFNLE9BQU8sY0FBYztJQWtDekIsWUFBWSxLQUFVLEVBQVUsY0FBYyxJQUFJO1FBQWxCLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBakNqQyxRQUFHLEdBQWdCLElBQUksR0FBRyxFQUFVLENBQUM7UUFDOUMsU0FBSSxHQUFvQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBaUN4RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRDtJQUdILENBQUM7SUF0Q08sTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSTtRQUNsQyxNQUFNLFdBQVcsR0FBZ0IsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDdkIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFB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Q0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssT0FBTyxDQUFDLElBQU87UUFDckIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVMaXN0PFQgZXh0ZW5kcyB7fT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGlkczogU2V0PHN0cmluZz4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBkYXRhOiBNYXA8c3RyaW5nLCBCZWhhdmlvclN1YmplY3Q8VD4+ID0gbmV3IE1hcCgpO1xuXG4gIHByaXZhdGUgc3RhdGljIGRpZmZlcmVuY2Uoc2V0QSwgc2V0Qik6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCBfZGlmZmVyZW5jZTogU2V0PHN0cmluZz4gPSBuZXcgU2V0KHNldEEpO1xuICAgIGZvciAoY29uc3QgZWxlbSBvZiBzZXRCKSB7XG4gICAgICBfZGlmZmVyZW5jZS5kZWxldGUoZWxlbSk7XG4gICAgfVxuICAgIHJldHVybiBfZGlmZmVyZW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGludGVyc2VjdGlvbihzZXRBLCBzZXRCKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IF9pbnRlcnNlY3Rpb246IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuICAgIGZvciAoY29uc3QgZWxlbSBvZiBzZXRCKSB7XG4gICAgICBpZiAoc2V0QS5oYXMoZWxlbSkpIHtcbiAgICAgICAgX2ludGVyc2VjdGlvbi5hZGQoZWxlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfaW50ZXJzZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc3ltbWV0cmljRGlmZmVyZW5jZShzZXRBLCBzZXRCKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IF9kaWZmZXJlbmNlOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoc2V0QSk7XG4gICAgZm9yIChjb25zdCBlbGVtIG9mIHNldEIpIHtcbiAgICAgIGlmIChfZGlmZmVyZW5jZS5oYXMoZWxlbSkpIHtcbiAgICAgICAgX2RpZmZlcmVuY2UuZGVsZXRlKGVsZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX2RpZmZlcmVuY2UuYWRkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX2RpZmZlcmVuY2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihpdGVtczogVFtdLCBwcml2YXRlIGlkRmllbGROYW1lID0gJ2lkJykge1xuICAgIGNvbnN0IGlkcyA9IGl0ZW1zLm1hcCgoaSkgPT4gaVt0aGlzLmlkRmllbGROYW1lXSk7XG4gICAgdGhpcy5pZHMgPSBuZXcgU2V0KGlkcyk7XG4gICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcbiAgICAgIHRoaXMuZGF0YS5zZXQoaWQsIG5ldyBCZWhhdmlvclN1YmplY3QoaXRlbXNbaWRdKSk7XG4gICAgfVxuXG5cbiAgfVxuXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPEJlaGF2aW9yU3ViamVjdDxUPj4ge1xuXG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIHRoaXMuaWRzLnZhbHVlcygpKSB7XG4gICAgICB5aWVsZCB0aGlzLmRhdGEuZ2V0KGlkKTtcbiAgICAgIC8vIHlpZWxkIHRoaXMuZGF0YVtpZF07XG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgcHVzaCguLi5pdGVtczogVFtdKSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmlkRmllbGROYW1lO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG5cbiAgICAgIGlmICh0aGlzLmRhdGEuaGFzKGl0ZW1baWRdKSkge1xuICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBpdGVtIGNoYW5nZWQ7XG5cbiAgICAgICAgY29uc3Qgc3RvcmVkSXRlbSA9IHRoaXMuZGF0YS5nZXQoaXRlbVtpZF0pLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9IE9iamVjdC5rZXlzKHN0b3JlZEl0ZW0pLnNvbWUoKGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiBzdG9yZWRJdGVtW2tleV0gIT09IGl0ZW1ba2V5XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMuZGF0YS5nZXQoaXRlbVtpZF0pLm5leHQoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaWRzLmFkZChpdGVtW2lkXSk7XG4gICAgICAgIHRoaXMuZGF0YS5zZXQoaXRlbVtpZF0sIG5ldyBCZWhhdmlvclN1YmplY3QoaXRlbSkpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlT25lKGl0ZW06IFQpIHtcbiAgICBpZiAodGhpcy5kYXRhLmhhcyhpdGVtW3RoaXMuaWRGaWVsZE5hbWVdKSkge1xuXG4gICAgICB0aGlzLmRhdGEuZ2V0KGl0ZW1bdGhpcy5pZEZpZWxkTmFtZV0pLm5leHQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignaXRlbSBub3QgZm91bmQnLCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCkge1xuXG4gICAgY29uc3QgZGF0YSA9IFtdO1xuXG4gICAgdGhpcy5kYXRhLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICBkYXRhLnB1c2godmFsdWUuZ2V0VmFsdWUoKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIHVwZGF0ZSBpdGVtcyB0aGF0IGFyZSBhbHJlYWR5IHByZXNlbnQgb25seSBpZiB0aGV5IG5lZWQgdG8gYmUgdXBkYXRlZCBhbmQgcmVtb3ZlIGl0ZW1zIHRoYXQgYXJlIG5vdCBwcmVzZW50LlxuICAgKiBAcGFyYW0gaXRlbXMgaXRlbXMgb2YgdGhlIGxpc3RcbiAgICovXG4gIHB1YmxpYyBzZXQoLi4uaXRlbXM6IFRbXSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0lkczogc3RyaW5nW10gPSBpdGVtcy5tYXAoKGkpID0+IGlbdGhpcy5pZEZpZWxkTmFtZV0pO1xuXG4gICAgY29uc3QgaW50ZXJzZWN0aW9uOiBTZXQ8c3RyaW5nPiA9IE9ic2VydmFibGVMaXN0LmludGVyc2VjdGlvbih0aGlzLmlkcywgbmV3SWRzKTtcblxuICAgIGZvciAoY29uc3QgaWQgb2YgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB0aGlzLnVwZGF0ZU9uZShpdGVtc1tpZF0pO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zVG9SZW1vdmU6IFNldDxzdHJpbmc+ID0gT2JzZXJ2YWJsZUxpc3QuZGlmZmVyZW5jZSh0aGlzLmlkcywgbmV3SWRzKTtcblxuICAgIGZvciAoY29uc3QgaWQgb2YgaXRlbXNUb1JlbW92ZSkge1xuICAgICAgdGhpcy5yZW1vdmVJdGVtKGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtc1RvQWRkOiBTZXQ8c3RyaW5nPiA9IE9ic2VydmFibGVMaXN0LmRpZmZlcmVuY2UobmV3SWRzLCB0aGlzLmlkcyk7XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGl0ZW1zVG9BZGQpIHtcbiAgICAgIHRoaXMuYWRkSXRlbShpdGVtc1tpZF0pO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBpdGVtIGZyb20gdGhlIGxpc3QgZ2l2ZW4gaXRzIGlkXG4gICAqIEBwYXJhbSBpZCBpZCBvZiB0aGUgaXRlbSB0byByZW1vdmVcbiAgICovXG4gIHB1YmxpYyByZW1vdmVJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkcy5kZWxldGUoaWQpO1xuICAgIHRoaXMuZGF0YS5kZWxldGUoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gbmV3IGl0ZW0gdG8gdGhlIGxpc3RcbiAgICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gdG8gYmUgYWRkZWRcbiAgICovXG4gIHByaXZhdGUgYWRkSXRlbShpdGVtOiBUKSB7XG4gICAgY29uc3QgaWQgPSBpdGVtW3RoaXMuaWRGaWVsZE5hbWVdO1xuICAgIHRoaXMuaWRzLmFkZChpZCk7XG4gICAgdGhpcy5kYXRhLnNldChpZCwgbmV3IEJlaGF2aW9yU3ViamVjdChpdGVtKSk7XG5cbiAgfVxufVxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1pY3JvcGhpL3N0b3JlLyIsInNvdXJjZXMiOlsibGliL3JlZHVjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQU14QyxNQUFNLFVBQVUsTUFBTSxDQUFDLFFBQWdCO0lBQ3JDLE9BQU8sQ0FBK0IsTUFBYSxFQUFFLEdBQVcsRUFBRSxFQUFFO1FBQ2xFLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVsRSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRXhCLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5QixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVqRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQVE7SUFDeEMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VTdG9yZSB9IGZyb20gJy4vYmFzZS1zdG9yZSc7XG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJ0BtaWNyb2dhbW1hL2xvZ2dhdG9yJztcblxuZXhwb3J0IGNvbnN0IFJlZHVjZU1ldGFkYXRhID0gJ0BSZWR1Y2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZHVjZXJzIHtcbiAgW2FjdGlvbk5hbWU6IG51bWJlcl06IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlZHVjZShvbkFjdGlvbjogbnVtYmVyKSB7XG4gIHJldHVybiA8U3RvcmUgZXh0ZW5kcyBCYXNlU3RvcmU8YW55Pj4odGFyZ2V0OiBTdG9yZSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkID0gZ2V0RGVidWdnZXIoYG1pY3JvcGhpOkBSZWR1Y2U6JHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1gKTtcblxuICAgIGNvbnN0IHJlZHVjZXIgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFJlZHVjZU1ldGFkYXRhLCB0YXJnZXQpIHx8IHt9O1xuXG4gICAgcmVkdWNlcltvbkFjdGlvbl0gPSBrZXk7XG5cbiAgICBkKCdzdG9yZWQgcmVkdWNlcnMnLCByZWR1Y2VyKTtcblxuICAgIHJldHVybiBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFJlZHVjZU1ldGFkYXRhLCByZWR1Y2VyLCB0YXJnZXQpO1xuXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWR1Y2VNZXRhZGF0YShpbnN0YW5jZSk6IFJlZHVjZXJzIHtcbiAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoUmVkdWNlTWV0YWRhdGEsIGluc3RhbmNlKSB8fCB7fTtcbn1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9waGkvc3RvcmUvIiwic291cmNlcyI6WyJsaWIvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFTdEMsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFxQjtJQUV6QyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsbUJBQW1CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXpELE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUVoQixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUU3QixPQUFPLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFRO0lBQ3ZDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJ0BtaWNyb2dhbW1hL2xvZ2dhdG9yJztcblxuZXhwb3J0IGNvbnN0IFN0b3JlTWV0YWRhdGEgPSAnQFN0b3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZU9wdGlvbnMge1xuICBpbml0aWFsU3RhdGU6IGFueTtcbiAgbmFtZTogc3RyaW5nO1xuICBhY3Rpb25zOiBhbnk7XG4gIHVzZUxvY2FsU3RvcmFnZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdG9yZShvcHRpb25zOiBTdG9yZU9wdGlvbnMpIHtcblxuICBjb25zdCBkID0gZ2V0RGVidWdnZXIoYG1pY3JvcGhpOkBTdG9yZToke29wdGlvbnMubmFtZX1gKTtcblxuICByZXR1cm4gKHRhcmdldCkgPT4ge1xuXG4gICAgZCgncnVubmluZyBzdG9yZSBkZWNvcmF0b3InKTtcblxuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoU3RvcmVNZXRhZGF0YSwgb3B0aW9ucywgdGFyZ2V0KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0b3JlTWV0YWRhdGEoaW5zdGFuY2UpOiBTdG9yZU9wdGlvbnMge1xuICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShTdG9yZU1ldGFkYXRhLCBpbnN0YW5jZS5jb25zdHJ1Y3Rvcik7XG59XG5cblxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9waGktc3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9waGkvc3RvcmUvIiwic291cmNlcyI6WyJtaWNyb3BoaS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3BoaS9zdG9yZS8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHN0b3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1Y2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JzZXJ2YWJsZS1saXN0L29ic2VydmFibGUtbGlzdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtc3RhdHVzL2h0dHAtc3RhdHVzLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtc3RhdHVzL2h0dHAtc3RhdHVzLnN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpc3QvbGlzdCc7XG4iXX0=