@microphi/store 0.2.10 → 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/esm2020/microphi-store.mjs +5 -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 +23 -17
- package/public-api.d.ts +4 -8
- package/public-api.d.ts.map +1 -0
- package/bundles/microphi-store.umd.js +0 -996
- package/bundles/microphi-store.umd.js.map +0 -1
- package/bundles/microphi-store.umd.min.js +0 -16
- 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 -31
- package/esm2015/lib/http-status/http-status.store.js +0 -63
- 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/microphi-store.js +0 -5
- package/esm2015/public-api.js +0 -13
- package/esm5/lib/actions.js +0 -110
- package/esm5/lib/base-store.js +0 -177
- package/esm5/lib/effect.js +0 -11
- package/esm5/lib/http-status/http-status.interceptor.js +0 -33
- package/esm5/lib/http-status/http-status.store.js +0 -66
- package/esm5/lib/list/list.js +0 -126
- package/esm5/lib/observable-list/observable-list.js +0 -250
- package/esm5/lib/reduce.js +0 -15
- package/esm5/lib/store.js +0 -13
- package/esm5/microphi-store.js +0 -5
- package/esm5/public-api.js +0 -13
- package/fesm2015/microphi-store.js +0 -586
- package/fesm2015/microphi-store.js.map +0 -1
- package/fesm5/microphi-store.js +0 -788
- package/fesm5/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3BoaS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9iYXNlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFVLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxNQUFNLE9BQWdCLFNBQVM7SUFzRDdCO1FBcERRLFdBQU0sR0FBRyxXQUFXLENBQUMsc0JBQXNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQXlCcEUsYUFBUSxHQUFHLElBQUksT0FBTyxFQUcxQixDQUFDO1FBRUcsY0FBUyxHQUFHLElBQUksT0FBTyxFQUszQixDQUFDO1FBTUcsWUFBTyxHQUFHLElBQUksT0FBTyxFQUd6QixDQUFDO1FBTUcsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBSWxELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSx1RUFB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bWEvbG9nZ2F0b3InO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRTdG9yZU1ldGFkYXRhLCBTdG9yZU9wdGlvbnMgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9ucywgUkVRVUVTVF9TVUZGSVgsIFJFU1BPTlNFX1NVRkZJWCB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXRSZWR1Y2VNZXRhZGF0YSB9IGZyb20gJy4vcmVkdWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU3RvcmU8VCBleHRlbmRzIHt9PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBsb2dnZXIgPSBnZXREZWJ1Z2dlcihgbWljcm9waGk6QmFzZVN0b3JlOiR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVNZXRhZGF0YTogU3RvcmVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnNNZXRhZGF0YTogQWN0aW9uczxhbnk+O1xuXG4gIHByaXZhdGUgX3N0YXRlOiBUO1xuICBwcml2YXRlIGdldCBzdGF0ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cbiAgcHJpdmF0ZSBzZXQgc3RhdGUodmFsdWU6IFQpIHtcbiAgICB0aGlzLmxvZ2dlcignc2V0dGluZyBuZXcgc3RhdGUnLCB2YWx1ZSk7XG4gICAgdGhpcy5fc3RhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLl9zdG9yZSQubmV4dCh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuc3RvcmVNZXRhZGF0YS51c2VMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyKCdzYXZpbmcgb24gbG9jYWxTdG9yYWdlJyk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JlTWV0YWRhdGEubmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zdG9yZSQ6IEJlaGF2aW9yU3ViamVjdDxUPjtcblxuICBwdWJsaWMgZ2V0IHN0b3JlJCgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IG5ldyBTdWJqZWN0PHtcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogYW55XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSBfbG9hZGluZyQgPSBuZXcgU3ViamVjdDx7XG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGNvZGU/OiBudW1iZXIsXG4gICAgcGF5bG9hZDogYW55LFxuICAgIHN0YXR1czogYm9vbGVhblxuICB9PigpO1xuXG4gIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPHsgdHlwZTogc3RyaW5nOyBjb2RlPzogbnVtYmVyOyBwYXlsb2FkOiBhbnk7IHN0YXR1czogYm9vbGVhbiB9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXJyb3IkID0gbmV3IFN1YmplY3Q8e1xuICAgIGFjdGlvbjogbnVtYmVyLFxuICAgIGVycm9yOiBhbnlcbiAgfT4oKTtcblxuICBnZXQgZXJyb3IkKCk6IE9ic2VydmFibGU8eyBhY3Rpb246IG51bWJlcjsgZXJyb3I6IGFueSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIHRoaXMuc3RvcmVNZXRhZGF0YSA9IGdldFN0b3JlTWV0YWRhdGEodGhpcyk7XG4gICAgdGhpcy5sb2dnZXIoJ0BTdG9yZScsIHRoaXMuc3RvcmVNZXRhZGF0YSk7XG5cbiAgICB0aGlzLl9zdG9yZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuc3RvcmVNZXRhZGF0YS5pbml0aWFsU3RhdGUpO1xuICAgIC8vIGRlcmVmZXJlbmNlIGluaXRpYWwgc3RhdGUgc28gdGhhdCBpcyBkb2VzIG5vdCBsZWFrIGJldHdlZW4gaW5zdGFuY2VzXG4gICAgdGhpcy5fc3RhdGUgPSBPYmplY3QuYXNzaWduKCB7fSwgIHRoaXMuc3RvcmVNZXRhZGF0YS5pbml0aWFsU3RhdGUpO1xuICAgIHRoaXMubG9nZ2VyKCdJbml0aWFsU3RhdGUnLCB0aGlzLnN0YXRlKTtcblxuICAgIHRoaXMuYWN0aW9uc01ldGFkYXRhID0gbmV3IEFjdGlvbnModGhpcy5zdG9yZU1ldGFkYXRhLmFjdGlvbnMpO1xuXG4gICAgY29uc3QgcmVkdWNlck1ldGFkYXRhID0gZ2V0UmVkdWNlTWV0YWRhdGEodGhpcyk7XG4gICAgdGhpcy5sb2dnZXIoJ1JlZHVjZXJzJywgcmVkdWNlck1ldGFkYXRhKTtcbiAgICBjb25zdCByZW1hcHBlZFJlZHVjZXJzID0gdGhpcy5wYXJzZVJlZHVjZXJzKHJlZHVjZXJNZXRhZGF0YSk7XG4gICAgdGhpcy5sb2dnZXIoJ3JlbWFwcGVkIHJlZHVjZXJzJywgcmVtYXBwZWRSZWR1Y2Vycyk7XG5cblxuICAgIGNvbnN0IGVmZmVjdHNNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ0BFZmZlY3QnLCB0aGlzKSB8fCB7fTtcbiAgICB0aGlzLmxvZ2dlcignRWZmZWN0cycsIGVmZmVjdHNNZXRhZGF0YSk7XG4gICAgY29uc3QgcmVtYXBwZWRFZmZlY3RzID0gdGhpcy5yZW1hcEVmZmVjdHMoZWZmZWN0c01ldGFkYXRhKTtcbiAgICB0aGlzLmxvZ2dlcigncmVtYXBwZWQgZWZmZWN0cycsIHJlbWFwcGVkRWZmZWN0cyk7XG5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICB0YXAoKGFjdGlvbjogQWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoe1xuICAgICAgICAgIHR5cGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgIGNvZGU6IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbkNvZGVGcm9tQ2hpbGQoYWN0aW9uLnR5cGUpLFxuICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIHN0YXR1czogYWN0aW9uLnR5cGUuZW5kc1dpdGgoJ19SRVFVRVNUJylcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICkuc3Vic2NyaWJlKCAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyKCdnb3QgdHlwZScsIGFjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBhY3Rpb24udHlwZTtcblxuICAgICAgLy8gZWZmZWN0cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3RzXG4gICAgICBpZiAodHlwZS5lbmRzV2l0aChSRVFVRVNUX1NVRkZJWCkpIHtcbiAgICAgICAgaWYgKHJlbWFwcGVkRWZmZWN0cy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuXG4gICAgICAgICAgY29uc3QgZWZmZWN0TmFtZSA9IHJlbWFwcGVkRWZmZWN0c1t0eXBlXTtcbiAgICAgICAgICB0aGlzLmxvZ2dlcignc2hvdWxkIGNhbGwnLCBlZmZlY3ROYW1lKTtcblxuXG4gICAgICAgICAgaWYgKHRoaXNbZWZmZWN0TmFtZV0gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXG4gICAgICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHRoaXNbZWZmZWN0TmFtZV0oYWN0aW9uLnBheWxvYWQpIGFzIE9ic2VydmFibGU8YW55PjtcblxuICAgICAgICAgICAgaWYgKHJldFZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgICByZXRWYWx1ZS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQEVmZmVjdDogJHtlZmZlY3ROYW1lfSB0aHJvd24gdGhlIGZvbGxvd2luZyBlcnJvcmApO1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZyQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmFjdGlvbnNNZXRhZGF0YS5nZXRBY3Rpb25Db2RlRnJvbUNoaWxkKGFjdGlvbi50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogYWN0aW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9yJC5uZXh0KHthY3Rpb246IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbkNvZGVGcm9tQ2hpbGQoYWN0aW9uLnR5cGUpLCBlcnJvcjogZXJyfSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgICApLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlcignZ290IGRhdGEnLCB2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbnMkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogcmVtYXBwZWRFZmZlY3RzW2VmZmVjdE5hbWVdLFxuICAgICAgICAgICAgICAgICAgcGF5bG9hZDogdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBlZmZlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWN0aW9uIHRoZW4gd2UgY2FuIHByb2NlZWQgY2FsbGluZyB0aGUgcmVkdWNlciBhc3NvY2lhdGVkXG4gICAgICAgICAgdGhpcy5hY3Rpb25zJC5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUucmVwbGFjZShSRVFVRVNUX1NVRkZJWCwgUkVTUE9OU0VfU1VGRklYKSxcbiAgICAgICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlLmVuZHNXaXRoKFJFU1BPTlNFX1NVRkZJWCkpIHtcblxuICAgICAgICBjb25zdCBmbiA9IHJlbWFwcGVkUmVkdWNlcnNbYWN0aW9uLnR5cGVdO1xuICAgICAgICB0aGlzLmxvZ2dlcignc2hvdWxkIGNhbGwgZm4nLCBmbik7XG5cbiAgICAgICAgaWYgKHRoaXNbcmVtYXBwZWRSZWR1Y2Vyc1thY3Rpb24udHlwZV1dKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzW3JlbWFwcGVkUmVkdWNlcnNbYWN0aW9uLnR5cGVdXSh0aGlzLnN0YXRlLCBhY3Rpb24ucGF5bG9hZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuXG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHN0b3AgbG9hZGluZyBoZXJlIGF0IGl0IGhhcyBhbHJlYWR5IGJlZW4gc3RvcHBlZFxuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBAUmVkdWNlICR7Zm59IHRocm93biBhbiBlcnJvcmAsIGUpO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IkLm5leHQoe2FjdGlvbjogdGhpcy5hY3Rpb25zTWV0YWRhdGEuZ2V0QWN0aW9uQ29kZUZyb21DaGlsZChhY3Rpb24udHlwZSksIGVycm9yOiBlfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyKCdnb3QgZXJyb3InLCBlcnIpO1xuICAgICAgLy8gVE9ETyBzaG91bGQgaGFuZGxlIHRoZSBlcnJvciBvciBzaG91bGQgd2UgY2hhbmdlIGxvYWRpbmckIHRvIGEgbW9yZSBnZW5lcmljIHN0YXR1cyQgc28gd2UgY2FuIHBhc3MgYWx0b2dldGhlclxuICAgICAgLy8gbG9hZGluZ3MgYW5kIGVycm9ycyBldmVudHM/XG4gICAgICB0aGlzLl9lcnJvciQubmV4dChlcnIpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2godHlwZTogbnVtYmVyLCBwYXlsb2FkPzogYW55KSB7XG5cbiAgICBjb25zdCByZXF1ZXN0QWN0aW9uID0gdGhpcy5hY3Rpb25zTWV0YWRhdGEuZ2V0QWN0aW9uc0J5Q29kZSh0eXBlKS5yZXF1ZXN0O1xuICAgIHRoaXMubG9nZ2VyKCdkaXNwYXRjaGluZyB0eXBlJywgcmVxdWVzdEFjdGlvbik7XG5cbiAgICB0aGlzLmFjdGlvbnMkLm5leHQoe3R5cGU6IHJlcXVlc3RBY3Rpb24sIHBheWxvYWR9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VSZWR1Y2VycyhyZWR1Y2Vycykge1xuICAgIGNvbnN0IHJlbWFwcGVkUmVkdWNlcnMgPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgIGlmICgrYWN0aW9uID49IDApIHtcbiAgICAgICAgY29uc3QgX2FjdGlvbjogbnVtYmVyID0gTnVtYmVyKGFjdGlvbik7XG4gICAgICAgIC8vIHRoaXMubG9nZ2VyKCdyZW1hcHBpbmcnLCB0eXBlLCAndG8nKTtcbiAgICAgICAgY29uc3QgcmVhbEFjdGlvbiA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUoX2FjdGlvbikucmVzcG9uc2U7XG4gICAgICAgIC8vIHRoaXMubG9nZ2VyKCdyZWFsIHR5cGUgdG8gbWFwIHRvJywgcmVhbEFjdGlvbik7XG4gICAgICAgIHJlbWFwcGVkUmVkdWNlcnNbcmVhbEFjdGlvbl0gPSByZWR1Y2Vyc1thY3Rpb25dO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlbWFwcGVkUmVkdWNlcnM7XG4gIH1cblxuICBwcml2YXRlIHJlbWFwRWZmZWN0cyhlZmZlY3RzTWV0YWRhdGE6IHt9KSB7XG4gICAgY29uc3QgcmVtYXBwZWRFZmZlY3RzID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhlZmZlY3RzTWV0YWRhdGEpLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgLy8gZWZmZWN0cyBzaG91bGQgcmVhY3QgdG8gUkVRVUVTVCBldmVudHNcblxuICAgICAgaWYgKCthY3Rpb24gPj0gMCkge1xuICAgICAgICBjb25zdCBfYWN0aW9uID0gTnVtYmVyKGFjdGlvbik7XG5cbiAgICAgICAgY29uc3QgcmVhbEFjdGlvbiA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUoX2FjdGlvbikucmVxdWVzdDtcblxuICAgICAgICByZW1hcHBlZEVmZmVjdHNbcmVhbEFjdGlvbl0gPSBlZmZlY3RzTWV0YWRhdGFbYWN0aW9uXTtcbiAgICAgICAgLy8gbWFwcGluZyB0aGUgZWZmZWN0IGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2FuIHJldHVybiBhIHJlc3BvbnNlIHR5cGVcbiAgICAgICAgcmVtYXBwZWRFZmZlY3RzW2VmZmVjdHNNZXRhZGF0YVthY3Rpb25dXSA9IHRoaXMuYWN0aW9uc01ldGFkYXRhLmdldEFjdGlvbnNCeUNvZGUoX2FjdGlvbikucmVzcG9uc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVtYXBwZWRFZmZlY3RzO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iXX0=
|
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,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=
|
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,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
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1pY3JvcGhpL3N0b3JlLyIsInNvdXJjZXMiOlsibGliL3JlZHVjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQU14QyxNQUFNLFVBQVUsTUFBTSxDQUFDLFFBQWdCO0lBQ3JDLE9BQU8sQ0FBK0IsTUFBYSxFQUFFLEdBQVcsRUFBRSxFQUFFO1FBQ2xFLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVsRSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRXhCLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5QixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVqRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQVE7SUFDeEMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VTdG9yZSB9IGZyb20gJy4vYmFzZS1zdG9yZSc7XG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJ0BtaWNyb2dhbW1hL2xvZ2dhdG9yJztcblxuZXhwb3J0IGNvbnN0IFJlZHVjZU1ldGFkYXRhID0gJ0BSZWR1Y2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZHVjZXJzIHtcbiAgW2FjdGlvbk5hbWU6IG51bWJlcl06IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlZHVjZShvbkFjdGlvbjogbnVtYmVyKSB7XG4gIHJldHVybiA8U3RvcmUgZXh0ZW5kcyBCYXNlU3RvcmU8YW55Pj4odGFyZ2V0OiBTdG9yZSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkID0gZ2V0RGVidWdnZXIoYG1pY3JvcGhpOkBSZWR1Y2U6JHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1gKTtcblxuICAgIGNvbnN0IHJlZHVjZXIgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFJlZHVjZU1ldGFkYXRhLCB0YXJnZXQpIHx8IHt9O1xuXG4gICAgcmVkdWNlcltvbkFjdGlvbl0gPSBrZXk7XG5cbiAgICBkKCdzdG9yZWQgcmVkdWNlcnMnLCByZWR1Y2VyKTtcblxuICAgIHJldHVybiBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFJlZHVjZU1ldGFkYXRhLCByZWR1Y2VyLCB0YXJnZXQpO1xuXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWR1Y2VNZXRhZGF0YShpbnN0YW5jZSk6IFJlZHVjZXJzIHtcbiAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoUmVkdWNlTWV0YWRhdGEsIGluc3RhbmNlKSB8fCB7fTtcbn1cbiJdfQ==
|
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,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
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3BoaS9zdG9yZS8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHN0b3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1Y2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JzZXJ2YWJsZS1saXN0L29ic2VydmFibGUtbGlzdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtc3RhdHVzL2h0dHAtc3RhdHVzLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtc3RhdHVzL2h0dHAtc3RhdHVzLnN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpc3QvbGlzdCc7XG4iXX0=
|