@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.
- package/esm2020/lib/effect/effect.mjs +75 -0
- package/esm2020/lib/list/list.mjs +75 -0
- package/esm2020/lib/reduce/reduce.mjs +26 -0
- package/esm2020/lib/store/store.mjs +101 -0
- package/esm2020/lib/utilities/scan-instance.mjs +19 -0
- package/{esm2015/microphi-store.js → esm2020/microphi-store.mjs} +0 -0
- package/esm2020/public-api.mjs +8 -0
- package/fesm2015/microphi-store.mjs +305 -0
- package/fesm2015/microphi-store.mjs.map +1 -0
- package/fesm2020/microphi-store.mjs +303 -0
- package/fesm2020/microphi-store.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/effect/effect.d.ts +62 -0
- package/lib/effect/effect.d.ts.map +1 -0
- package/lib/list/list.d.ts +2 -1
- package/lib/list/list.d.ts.map +1 -0
- package/lib/reduce/reduce.d.ts +12 -0
- package/lib/reduce/reduce.d.ts.map +1 -0
- package/lib/store/store.d.ts +39 -0
- package/lib/store/store.d.ts.map +1 -0
- package/lib/utilities/scan-instance.d.ts +3 -0
- package/lib/utilities/scan-instance.d.ts.map +1 -0
- package/microphi-store.d.ts.map +1 -0
- package/package.json +22 -12
- package/public-api.d.ts +4 -8
- package/public-api.d.ts.map +1 -0
- package/bundles/microphi-store.umd.js +0 -1108
- package/bundles/microphi-store.umd.js.map +0 -1
- package/bundles/microphi-store.umd.min.js +0 -17
- package/bundles/microphi-store.umd.min.js.map +0 -1
- package/esm2015/lib/actions.js +0 -105
- package/esm2015/lib/base-store.js +0 -156
- package/esm2015/lib/effect.js +0 -11
- package/esm2015/lib/http-status/http-status.interceptor.js +0 -29
- package/esm2015/lib/http-status/http-status.store.js +0 -65
- package/esm2015/lib/list/list.js +0 -80
- package/esm2015/lib/observable-list/observable-list.js +0 -119
- package/esm2015/lib/reduce.js +0 -15
- package/esm2015/lib/store.js +0 -13
- package/esm2015/public-api.js +0 -13
- package/fesm2015/microphi-store.js +0 -588
- package/fesm2015/microphi-store.js.map +0 -1
- package/lib/actions.d.ts +0 -77
- package/lib/base-store.d.ts +0 -31
- package/lib/effect.d.ts +0 -2
- package/lib/http-status/http-status.interceptor.d.ts +0 -7
- package/lib/http-status/http-status.store.d.ts +0 -17
- package/lib/observable-list/observable-list.d.ts +0 -29
- package/lib/reduce.d.ts +0 -7
- package/lib/store.d.ts +0 -9
- package/microphi-store.d.ts +0 -4
- 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
|
package/esm2015/lib/effect.js
DELETED
|
@@ -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==
|
package/esm2015/lib/list/list.js
DELETED
|
@@ -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==
|
package/esm2015/lib/reduce.js
DELETED
|
@@ -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=
|
package/esm2015/lib/store.js
DELETED
|
@@ -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==
|
package/esm2015/public-api.js
DELETED
|
@@ -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
|