ngssm-remote-data 14.0.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/README.md +3 -0
- package/esm2020/lib/actions/index.mjs +4 -0
- package/esm2020/lib/actions/load-remote-data.action.mjs +9 -0
- package/esm2020/lib/actions/register-loaded-remote-data.action.mjs +11 -0
- package/esm2020/lib/actions/remote-data-action-type.mjs +6 -0
- package/esm2020/lib/data-status.mjs +9 -0
- package/esm2020/lib/effects/remote-data-loading.effect.mjs +44 -0
- package/esm2020/lib/guards/index.mjs +2 -0
- package/esm2020/lib/guards/remote-data-loading.guard.mjs +25 -0
- package/esm2020/lib/ngssm-remote-data.module.mjs +29 -0
- package/esm2020/lib/reducers/remote-data.reducer.mjs +64 -0
- package/esm2020/lib/remote-data-provider.mjs +3 -0
- package/esm2020/lib/remote-data-state-initializer.mjs +25 -0
- package/esm2020/lib/remote-data.mjs +6 -0
- package/esm2020/lib/state/index.mjs +3 -0
- package/esm2020/lib/state/remote-data.state.mjs +20 -0
- package/esm2020/lib/state/selectors.mjs +3 -0
- package/esm2020/ngssm-remote-data.mjs +5 -0
- package/esm2020/public-api.mjs +11 -0
- package/fesm2015/ngssm-remote-data.mjs +241 -0
- package/fesm2015/ngssm-remote-data.mjs.map +1 -0
- package/fesm2020/ngssm-remote-data.mjs +233 -0
- package/fesm2020/ngssm-remote-data.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actions/index.d.ts +3 -0
- package/lib/actions/load-remote-data.action.d.ts +7 -0
- package/lib/actions/register-loaded-remote-data.action.d.ts +10 -0
- package/lib/actions/remote-data-action-type.d.ts +4 -0
- package/lib/data-status.d.ts +7 -0
- package/lib/effects/remote-data-loading.effect.d.ts +13 -0
- package/lib/guards/index.d.ts +1 -0
- package/lib/guards/remote-data-loading.guard.d.ts +18 -0
- package/lib/ngssm-remote-data.module.d.ts +6 -0
- package/lib/reducers/remote-data.reducer.d.ts +13 -0
- package/lib/remote-data-provider.d.ts +8 -0
- package/lib/remote-data-state-initializer.d.ts +10 -0
- package/lib/remote-data.d.ts +8 -0
- package/lib/state/index.d.ts +2 -0
- package/lib/state/remote-data.state.d.ts +12 -0
- package/lib/state/selectors.d.ts +2 -0
- package/package.json +40 -0
- package/public-api.d.ts +7 -0
package/README.md
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './remote-data-action-type';
|
|
2
|
+
export * from './load-remote-data.action';
|
|
3
|
+
export * from './register-loaded-remote-data.action';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2FjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlbW90ZS1kYXRhLWFjdGlvbi10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZC1yZW1vdGUtZGF0YS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlci1sb2FkZWQtcmVtb3RlLWRhdGEuYWN0aW9uJztcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RemoteDataActionType } from './remote-data-action-type';
|
|
2
|
+
export class LoadRemoteDataAction {
|
|
3
|
+
constructor(remoteDataKey, forceReload) {
|
|
4
|
+
this.remoteDataKey = remoteDataKey;
|
|
5
|
+
this.forceReload = forceReload;
|
|
6
|
+
this.type = RemoteDataActionType.loadRemoteData;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZW1vdGUtZGF0YS5hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2FjdGlvbnMvbG9hZC1yZW1vdGUtZGF0YS5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUE0QixhQUFxQixFQUFrQixXQUFvQjtRQUEzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUFrQixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUZ2RSxTQUFJLEdBQVcsb0JBQW9CLENBQUMsY0FBYyxDQUFDO0lBRXVCLENBQUM7Q0FDNUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IFJlbW90ZURhdGFBY3Rpb25UeXBlIH0gZnJvbSAnLi9yZW1vdGUtZGF0YS1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBMb2FkUmVtb3RlRGF0YUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBzdHJpbmcgPSBSZW1vdGVEYXRhQWN0aW9uVHlwZS5sb2FkUmVtb3RlRGF0YTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcmVtb3RlRGF0YUtleTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgZm9yY2VSZWxvYWQ6IGJvb2xlYW4pIHt9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RemoteDataActionType } from './remote-data-action-type';
|
|
2
|
+
export class RegisterLoadedRemoteDataAction {
|
|
3
|
+
constructor(remoteDataKey, status, data, message) {
|
|
4
|
+
this.remoteDataKey = remoteDataKey;
|
|
5
|
+
this.status = status;
|
|
6
|
+
this.data = data;
|
|
7
|
+
this.message = message;
|
|
8
|
+
this.type = RemoteDataActionType.registerLoadedRemoteData;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItbG9hZGVkLXJlbW90ZS1kYXRhLmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvYWN0aW9ucy9yZWdpc3Rlci1sb2FkZWQtcmVtb3RlLWRhdGEuYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE1BQU0sT0FBTyw4QkFBOEI7SUFHekMsWUFDa0IsYUFBcUIsRUFDckIsTUFBa0IsRUFDbEIsSUFBUyxFQUNULE9BQWdCO1FBSGhCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNULFlBQU8sR0FBUCxPQUFPLENBQVM7UUFObEIsU0FBSSxHQUFXLG9CQUFvQixDQUFDLHdCQUF3QixDQUFDO0lBTzFFLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgRGF0YVN0YXR1cyB9IGZyb20gJy4uL2RhdGEtc3RhdHVzJztcbmltcG9ydCB7IFJlbW90ZURhdGFBY3Rpb25UeXBlIH0gZnJvbSAnLi9yZW1vdGUtZGF0YS1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gUmVtb3RlRGF0YUFjdGlvblR5cGUucmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdGVEYXRhS2V5OiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXR1czogRGF0YVN0YXR1cyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YTogYW55LFxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nXG4gICkge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var RemoteDataActionType;
|
|
2
|
+
(function (RemoteDataActionType) {
|
|
3
|
+
RemoteDataActionType["loadRemoteData"] = "[RemoteDataActionType] loadRemoteData";
|
|
4
|
+
RemoteDataActionType["registerLoadedRemoteData"] = "[RemoteDataActionType] registerLoadedRemoteData";
|
|
5
|
+
})(RemoteDataActionType || (RemoteDataActionType = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtYWN0aW9uLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2FjdGlvbnMvcmVtb3RlLWRhdGEtYWN0aW9uLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM5QixnRkFBd0QsQ0FBQTtJQUN4RCxvR0FBNEUsQ0FBQTtBQUM5RSxDQUFDLEVBSFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUcvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlbW90ZURhdGFBY3Rpb25UeXBlIHtcbiAgbG9hZFJlbW90ZURhdGEgPSAnW1JlbW90ZURhdGFBY3Rpb25UeXBlXSBsb2FkUmVtb3RlRGF0YScsXG4gIHJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YSA9ICdbUmVtb3RlRGF0YUFjdGlvblR5cGVdIHJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YSdcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var DataStatus;
|
|
2
|
+
(function (DataStatus) {
|
|
3
|
+
DataStatus["none"] = "None";
|
|
4
|
+
DataStatus["loading"] = "Loading";
|
|
5
|
+
DataStatus["loaded"] = "Loaded";
|
|
6
|
+
DataStatus["notFound"] = "NotFound";
|
|
7
|
+
DataStatus["error"] = "Error";
|
|
8
|
+
})(DataStatus || (DataStatus = {}));
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2RhdGEtc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDcEIsMkJBQWEsQ0FBQTtJQUNiLGlDQUFtQixDQUFBO0lBQ25CLCtCQUFpQixDQUFBO0lBQ2pCLG1DQUFxQixDQUFBO0lBQ3JCLDZCQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLFVBQVUsS0FBVixVQUFVLFFBTXJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRGF0YVN0YXR1cyB7XG4gIG5vbmUgPSAnTm9uZScsXG4gIGxvYWRpbmcgPSAnTG9hZGluZycsXG4gIGxvYWRlZCA9ICdMb2FkZWQnLFxuICBub3RGb3VuZCA9ICdOb3RGb3VuZCcsXG4gIGVycm9yID0gJ0Vycm9yJ1xufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { NGSSM_EFFECT } from 'ngssm-store';
|
|
3
|
+
import { RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';
|
|
4
|
+
import { DataStatus } from '../data-status';
|
|
5
|
+
import { NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';
|
|
6
|
+
import { selectRemoteDataState } from '../state';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class RemoteDataLoadingEffect {
|
|
9
|
+
constructor(remoteDataProviders) {
|
|
10
|
+
this.processedActions = [RemoteDataActionType.loadRemoteData];
|
|
11
|
+
this.remoteDataProvidersPerKey = new Map((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));
|
|
12
|
+
}
|
|
13
|
+
processAction(store, state, action) {
|
|
14
|
+
const loadRemoteDataAction = action;
|
|
15
|
+
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
16
|
+
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
17
|
+
if (!item || !provider || item.status !== DataStatus.loading) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
provider.get().subscribe({
|
|
21
|
+
next: (value) => store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),
|
|
22
|
+
error: (error) => {
|
|
23
|
+
console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);
|
|
24
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
+
RemoteDataLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
|
|
32
|
+
type: Injectable
|
|
33
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
34
|
+
type: Inject,
|
|
35
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
36
|
+
}, {
|
|
37
|
+
type: Optional
|
|
38
|
+
}] }]; } });
|
|
39
|
+
export const remoteDataLoadingEffectProvider = {
|
|
40
|
+
provide: NGSSM_EFFECT,
|
|
41
|
+
useClass: RemoteDataLoadingEffect,
|
|
42
|
+
multi: true
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtbG9hZGluZy5lZmZlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2VmZmVjdHMvcmVtb3RlLWRhdGEtbG9hZGluZy5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBZ0MsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpFLE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBc0IsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR2pELE1BQU0sT0FBTyx1QkFBdUI7SUFLbEMsWUFBNEQsbUJBQXlDO1FBRnJGLHFCQUFnQixHQUFhLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFHakYsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUE2QixDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQVksRUFBRSxLQUFZLEVBQUUsTUFBYztRQUM3RCxNQUFNLG9CQUFvQixHQUFHLE1BQThCLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUM1RCxPQUFPO1NBQ1I7UUFFRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2QsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hILEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4RixLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksOEJBQThCLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1SCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7b0hBMUJVLHVCQUF1QixrQkFLZCwwQkFBMEI7d0hBTG5DLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVOzswQkFNSSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUTs7QUF3QjNELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFhO0lBQ3ZELE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSx1QkFBdUI7SUFDakMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRWZmZWN0LCBTdG9yZSwgU3RhdGUsIEFjdGlvbiwgTkdTU01fRUZGRUNUIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2FkUmVtb3RlRGF0YUFjdGlvbiwgUmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLCBSZW1vdGVEYXRhQWN0aW9uVHlwZSB9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVN0YXR1cyB9IGZyb20gJy4uL2RhdGEtc3RhdHVzJztcbmltcG9ydCB7IFJlbW90ZURhdGFQcm92aWRlciwgTkdTU01fUkVNT1RFX0RBVEFfUFJPVklERVIgfSBmcm9tICcuLi9yZW1vdGUtZGF0YS1wcm92aWRlcic7XG5pbXBvcnQgeyBzZWxlY3RSZW1vdGVEYXRhU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZW1vdGVEYXRhTG9hZGluZ0VmZmVjdCBpbXBsZW1lbnRzIEVmZmVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleTogTWFwPHN0cmluZywgUmVtb3RlRGF0YVByb3ZpZGVyPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbUmVtb3RlRGF0YUFjdGlvblR5cGUubG9hZFJlbW90ZURhdGFdO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdTU01fUkVNT1RFX0RBVEFfUFJPVklERVIpIEBPcHRpb25hbCgpIHJlbW90ZURhdGFQcm92aWRlcnM6IFJlbW90ZURhdGFQcm92aWRlcltdKSB7XG4gICAgdGhpcy5yZW1vdGVEYXRhUHJvdmlkZXJzUGVyS2V5ID0gbmV3IE1hcDxzdHJpbmcsIFJlbW90ZURhdGFQcm92aWRlcj4oKHJlbW90ZURhdGFQcm92aWRlcnMgPz8gW10pLm1hcCgocikgPT4gW3IucmVtb3RlRGF0YUtleSwgcl0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzQWN0aW9uKHN0b3JlOiBTdG9yZSwgc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGxvYWRSZW1vdGVEYXRhQWN0aW9uID0gYWN0aW9uIGFzIExvYWRSZW1vdGVEYXRhQWN0aW9uO1xuICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RSZW1vdGVEYXRhU3RhdGUoc3RhdGUpW2xvYWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXldO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5yZW1vdGVEYXRhUHJvdmlkZXJzUGVyS2V5LmdldChsb2FkUmVtb3RlRGF0YUFjdGlvbi5yZW1vdGVEYXRhS2V5KTtcblxuICAgIGlmICghaXRlbSB8fCAhcHJvdmlkZXIgfHwgaXRlbS5zdGF0dXMgIT09IERhdGFTdGF0dXMubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb3ZpZGVyLmdldCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAodmFsdWUpID0+XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoQWN0aW9uKG5ldyBSZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24obG9hZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleSwgRGF0YVN0YXR1cy5sb2FkZWQsIHZhbHVlKSksXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIGRhdGEgZm9yICcke2xvYWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXl9J2AsIGVycm9yKTtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2hBY3Rpb24obmV3IFJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YUFjdGlvbihsb2FkUmVtb3RlRGF0YUFjdGlvbi5yZW1vdGVEYXRhS2V5LCBEYXRhU3RhdHVzLmVycm9yLCB1bmRlZmluZWQpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVtb3RlRGF0YUxvYWRpbmdFZmZlY3RQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HU1NNX0VGRkVDVCxcbiAgdXNlQ2xhc3M6IFJlbW90ZURhdGFMb2FkaW5nRWZmZWN0LFxuICBtdWx0aTogdHJ1ZVxufTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './remote-data-loading.guard';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL2d1YXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZW1vdGUtZGF0YS1sb2FkaW5nLmd1YXJkJztcbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { LoadRemoteDataAction } from '../actions';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngssm-store";
|
|
5
|
+
export class RemoteDataLoadingGuard {
|
|
6
|
+
constructor(store) {
|
|
7
|
+
this.store = store;
|
|
8
|
+
}
|
|
9
|
+
canActivate(route, state) {
|
|
10
|
+
const parameters = route.data;
|
|
11
|
+
(parameters?.remoteDataItems ?? []).forEach((item) => {
|
|
12
|
+
this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));
|
|
13
|
+
});
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
RemoteDataLoadingGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
+
RemoteDataLoadingGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
|
|
20
|
+
type: Injectable,
|
|
21
|
+
args: [{
|
|
22
|
+
providedIn: 'root'
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtbG9hZGluZy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvZ3VhcmRzL3JlbW90ZS1kYXRhLWxvYWRpbmcuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQWNsRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQUcsQ0FBQztJQUU3QixXQUFXLENBQ2hCLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUF3QyxDQUFDO1FBQ2xFLENBQUMsVUFBVSxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzttSEFiVSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2FkUmVtb3RlRGF0YUFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZURhdGFMb2FkaW5nR3VhcmRJdGVtIHtcbiAgcmVtb3RlRGF0YUtleTogc3RyaW5nO1xuICBmb3JjZVJlbG9hZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlRGF0YUxvYWRpbmdHdWFyZFBhcmFtZXRlcnMge1xuICByZW1vdGVEYXRhSXRlbXM6IFJlbW90ZURhdGFMb2FkaW5nR3VhcmRJdGVtW107XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGFMb2FkaW5nR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSByb3V0ZS5kYXRhIGFzIFJlbW90ZURhdGFMb2FkaW5nR3VhcmRQYXJhbWV0ZXJzO1xuICAgIChwYXJhbWV0ZXJzPy5yZW1vdGVEYXRhSXRlbXMgPz8gW10pLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2hBY3Rpb24obmV3IExvYWRSZW1vdGVEYXRhQWN0aW9uKGl0ZW0ucmVtb3RlRGF0YUtleSwgaXRlbS5mb3JjZVJlbG9hZCA9PT0gdHJ1ZSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { NGSSM_STATE_INITIALIZER } from 'ngssm-store';
|
|
3
|
+
import { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';
|
|
4
|
+
import { remoteDataReducerProvider } from './reducers/remote-data.reducer';
|
|
5
|
+
import { RemoteDataStateInitializer } from './remote-data-state-initializer';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NgssmRemoteDataModule {
|
|
8
|
+
}
|
|
9
|
+
NgssmRemoteDataModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NgssmRemoteDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule });
|
|
11
|
+
NgssmRemoteDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, providers: [
|
|
12
|
+
remoteDataReducerProvider,
|
|
13
|
+
remoteDataLoadingEffectProvider,
|
|
14
|
+
{ provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }
|
|
15
|
+
] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
declarations: [],
|
|
20
|
+
imports: [],
|
|
21
|
+
exports: [],
|
|
22
|
+
providers: [
|
|
23
|
+
remoteDataReducerProvider,
|
|
24
|
+
remoteDataLoadingEffectProvider,
|
|
25
|
+
{ provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }
|
|
26
|
+
]
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVtb3RlLWRhdGEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9uZ3NzbS1yZW1vdGUtZGF0YS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBWTdFLE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQjttSEFBckIscUJBQXFCLGFBTnJCO1FBQ1QseUJBQXlCO1FBQ3pCLCtCQUErQjtRQUMvQixFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtLQUN4RjsyRkFFVSxxQkFBcUI7a0JBVmpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7d0JBQ3pCLCtCQUErQjt3QkFDL0IsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7cUJBQ3hGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTkdTU01fU1RBVEVfSU5JVElBTElaRVIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IHJlbW90ZURhdGFMb2FkaW5nRWZmZWN0UHJvdmlkZXIgfSBmcm9tICcuL2VmZmVjdHMvcmVtb3RlLWRhdGEtbG9hZGluZy5lZmZlY3QnO1xuaW1wb3J0IHsgcmVtb3RlRGF0YVJlZHVjZXJQcm92aWRlciB9IGZyb20gJy4vcmVkdWNlcnMvcmVtb3RlLWRhdGEucmVkdWNlcic7XG5pbXBvcnQgeyBSZW1vdGVEYXRhU3RhdGVJbml0aWFsaXplciB9IGZyb20gJy4vcmVtb3RlLWRhdGEtc3RhdGUtaW5pdGlhbGl6ZXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIHJlbW90ZURhdGFSZWR1Y2VyUHJvdmlkZXIsXG4gICAgcmVtb3RlRGF0YUxvYWRpbmdFZmZlY3RQcm92aWRlcixcbiAgICB7IHByb3ZpZGU6IE5HU1NNX1NUQVRFX0lOSVRJQUxJWkVSLCB1c2VDbGFzczogUmVtb3RlRGF0YVN0YXRlSW5pdGlhbGl6ZXIsIG11bHRpOiB0cnVlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbVJlbW90ZURhdGFNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { NGSSM_REDUCER } from 'ngssm-store';
|
|
3
|
+
import { RemoteDataActionType } from '../actions';
|
|
4
|
+
import { DataStatus } from '../data-status';
|
|
5
|
+
import { NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';
|
|
6
|
+
import { selectRemoteDataState, updateRemoteDataState } from '../state';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class RemoteDataReducer {
|
|
9
|
+
constructor(remoteDataProviders) {
|
|
10
|
+
this.processedActions = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];
|
|
11
|
+
this.remoteDataProvidersPerKey = new Map((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));
|
|
12
|
+
}
|
|
13
|
+
updateState(state, action) {
|
|
14
|
+
switch (action.type) {
|
|
15
|
+
case RemoteDataActionType.loadRemoteData:
|
|
16
|
+
const loadRemoteDataAction = action;
|
|
17
|
+
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
18
|
+
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
19
|
+
if (!provider ||
|
|
20
|
+
loadRemoteDataAction.forceReload ||
|
|
21
|
+
item.status === DataStatus.none ||
|
|
22
|
+
item.status === DataStatus.error ||
|
|
23
|
+
!item.timestamp ||
|
|
24
|
+
new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds) {
|
|
25
|
+
return updateRemoteDataState(state, {
|
|
26
|
+
[loadRemoteDataAction.remoteDataKey]: {
|
|
27
|
+
status: { $set: DataStatus.loading }
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
break;
|
|
32
|
+
case RemoteDataActionType.registerLoadedRemoteData:
|
|
33
|
+
const registerLoadedRemoteDataAction = action;
|
|
34
|
+
if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {
|
|
35
|
+
return updateRemoteDataState(state, {
|
|
36
|
+
[registerLoadedRemoteDataAction.remoteDataKey]: {
|
|
37
|
+
status: { $set: registerLoadedRemoteDataAction.status },
|
|
38
|
+
data: { $set: registerLoadedRemoteDataAction.data },
|
|
39
|
+
timestamp: { $set: new Date() },
|
|
40
|
+
message: { $set: registerLoadedRemoteDataAction.message }
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return state;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
RemoteDataReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
RemoteDataReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer, decorators: [{
|
|
52
|
+
type: Injectable
|
|
53
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
54
|
+
type: Inject,
|
|
55
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
56
|
+
}, {
|
|
57
|
+
type: Optional
|
|
58
|
+
}] }]; } });
|
|
59
|
+
export const remoteDataReducerProvider = {
|
|
60
|
+
provide: NGSSM_REDUCER,
|
|
61
|
+
useClass: RemoteDataReducer,
|
|
62
|
+
multi: true
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvcmVkdWNlcnMvcmVtb3RlLWRhdGEucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFrQixhQUFhLEVBQVUsTUFBTSxhQUFhLENBQUM7QUFFcEUsT0FBTyxFQUF3RCxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFzQiwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUE0RCxtQkFBeUM7UUFGckYscUJBQWdCLEdBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUdoSSxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxHQUFHLENBQTZCLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JJLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWSxFQUFFLE1BQWM7UUFDN0MsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ25CLEtBQUssb0JBQW9CLENBQUMsY0FBYztnQkFDdEMsTUFBTSxvQkFBb0IsR0FBRyxNQUE4QixDQUFDO2dCQUM1RCxNQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFFeEYsSUFDRSxDQUFDLFFBQVE7b0JBQ1Qsb0JBQW9CLENBQUMsV0FBVztvQkFDaEMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsSUFBSTtvQkFDL0IsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsS0FBSztvQkFDaEMsQ0FBQyxJQUFJLENBQUMsU0FBUztvQkFDZixJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsRUFDekY7b0JBQ0EsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUU7d0JBQ2xDLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEVBQUU7NEJBQ3BDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFO3lCQUNyQztxQkFDRixDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsTUFBTTtZQUVSLEtBQUssb0JBQW9CLENBQUMsd0JBQXdCO2dCQUNoRCxNQUFNLDhCQUE4QixHQUFHLE1BQXdDLENBQUM7Z0JBQ2hGLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDcEYsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUU7d0JBQ2xDLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLEVBQUU7NEJBQzlDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSw4QkFBOEIsQ0FBQyxNQUFNLEVBQUU7NEJBQ3ZELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUU7NEJBQ25ELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFOzRCQUMvQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEJBQThCLENBQUMsT0FBTyxFQUFFO3lCQUMxRDtxQkFDRixDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsTUFBTTtTQUNUO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs4R0FsRFUsaUJBQWlCLGtCQUtSLDBCQUEwQjtrSEFMbkMsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQU1JLE1BQU07MkJBQUMsMEJBQTBCOzswQkFBRyxRQUFROztBQWdEM0QsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQWE7SUFDakQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWR1Y2VyLCBTdGF0ZSwgTkdTU01fUkVEVUNFUiwgQWN0aW9uIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2FkUmVtb3RlRGF0YUFjdGlvbiwgUmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLCBSZW1vdGVEYXRhQWN0aW9uVHlwZSB9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVN0YXR1cyB9IGZyb20gJy4uL2RhdGEtc3RhdHVzJztcbmltcG9ydCB7IFJlbW90ZURhdGFQcm92aWRlciwgTkdTU01fUkVNT1RFX0RBVEFfUFJPVklERVIgfSBmcm9tICcuLi9yZW1vdGUtZGF0YS1wcm92aWRlcic7XG5pbXBvcnQgeyBzZWxlY3RSZW1vdGVEYXRhU3RhdGUsIHVwZGF0ZVJlbW90ZURhdGFTdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGFSZWR1Y2VyIGltcGxlbWVudHMgUmVkdWNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleTogTWFwPHN0cmluZywgUmVtb3RlRGF0YVByb3ZpZGVyPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbUmVtb3RlRGF0YUFjdGlvblR5cGUubG9hZFJlbW90ZURhdGEsIFJlbW90ZURhdGFBY3Rpb25UeXBlLnJlZ2lzdGVyTG9hZGVkUmVtb3RlRGF0YV07XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUikgQE9wdGlvbmFsKCkgcmVtb3RlRGF0YVByb3ZpZGVyczogUmVtb3RlRGF0YVByb3ZpZGVyW10pIHtcbiAgICB0aGlzLnJlbW90ZURhdGFQcm92aWRlcnNQZXJLZXkgPSBuZXcgTWFwPHN0cmluZywgUmVtb3RlRGF0YVByb3ZpZGVyPigocmVtb3RlRGF0YVByb3ZpZGVycyA/PyBbXSkubWFwKChyKSA9PiBbci5yZW1vdGVEYXRhS2V5LCByXSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBSZW1vdGVEYXRhQWN0aW9uVHlwZS5sb2FkUmVtb3RlRGF0YTpcbiAgICAgICAgY29uc3QgbG9hZFJlbW90ZURhdGFBY3Rpb24gPSBhY3Rpb24gYXMgTG9hZFJlbW90ZURhdGFBY3Rpb247XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RSZW1vdGVEYXRhU3RhdGUoc3RhdGUpW2xvYWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXldO1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucmVtb3RlRGF0YVByb3ZpZGVyc1BlcktleS5nZXQobG9hZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFwcm92aWRlciB8fFxuICAgICAgICAgIGxvYWRSZW1vdGVEYXRhQWN0aW9uLmZvcmNlUmVsb2FkIHx8XG4gICAgICAgICAgaXRlbS5zdGF0dXMgPT09IERhdGFTdGF0dXMubm9uZSB8fFxuICAgICAgICAgIGl0ZW0uc3RhdHVzID09PSBEYXRhU3RhdHVzLmVycm9yIHx8XG4gICAgICAgICAgIWl0ZW0udGltZXN0YW1wIHx8XG4gICAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBpdGVtLnRpbWVzdGFtcC5nZXRUaW1lKCkgPj0gMTAwMCAqIHByb3ZpZGVyLmNhY2hlRHVyYXRpb25JblNlY29uZHNcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVJlbW90ZURhdGFTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgICAgW2xvYWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXldOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogeyAkc2V0OiBEYXRhU3RhdHVzLmxvYWRpbmcgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVtb3RlRGF0YUFjdGlvblR5cGUucmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhOlxuICAgICAgICBjb25zdCByZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24gPSBhY3Rpb24gYXMgUmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uO1xuICAgICAgICBpZiAodGhpcy5yZW1vdGVEYXRhUHJvdmlkZXJzUGVyS2V5LmhhcyhyZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24ucmVtb3RlRGF0YUtleSkpIHtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlUmVtb3RlRGF0YVN0YXRlKHN0YXRlLCB7XG4gICAgICAgICAgICBbcmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLnJlbW90ZURhdGFLZXldOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogeyAkc2V0OiByZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24uc3RhdHVzIH0sXG4gICAgICAgICAgICAgIGRhdGE6IHsgJHNldDogcmVnaXN0ZXJMb2FkZWRSZW1vdGVEYXRhQWN0aW9uLmRhdGEgfSxcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiB7ICRzZXQ6IG5ldyBEYXRlKCkgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogeyAkc2V0OiByZWdpc3RlckxvYWRlZFJlbW90ZURhdGFBY3Rpb24ubWVzc2FnZSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlbW90ZURhdGFSZWR1Y2VyUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR1NTTV9SRURVQ0VSLFxuICB1c2VDbGFzczogUmVtb3RlRGF0YVJlZHVjZXIsXG4gIG11bHRpOiB0cnVlXG59O1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3JlbW90ZS1kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQXFCLDRCQUE0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZURhdGFQcm92aWRlciB7XG4gIHJlYWRvbmx5IHJlbW90ZURhdGFLZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgY2FjaGVEdXJhdGlvbkluU2Vjb25kczogbnVtYmVyO1xuXG4gIGdldCgpOiBPYnNlcnZhYmxlPGFueT47XG59XG5cbmV4cG9ydCBjb25zdCBOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZW1vdGVEYXRhUHJvdmlkZXI+KCdOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUicpO1xuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { DataStatus } from './data-status';
|
|
3
|
+
import { NGSSM_REMOTE_DATA_PROVIDER } from './remote-data-provider';
|
|
4
|
+
import { updateRemoteDataState } from './state';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class RemoteDataStateInitializer {
|
|
7
|
+
constructor(remoteDataProviders) {
|
|
8
|
+
this.remoteDataProviders = remoteDataProviders;
|
|
9
|
+
}
|
|
10
|
+
initializeState(state) {
|
|
11
|
+
let tempState = state;
|
|
12
|
+
return (this.remoteDataProviders ?? []).reduce((s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }), tempState);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
RemoteDataStateInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
RemoteDataStateInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
|
|
18
|
+
type: Injectable
|
|
19
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
20
|
+
type: Inject,
|
|
21
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
22
|
+
}, {
|
|
23
|
+
type: Optional
|
|
24
|
+
}] }]; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEtc3RhdGUtaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3JlbW90ZS1kYXRhLXN0YXRlLWluaXRpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBc0IsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR2hELE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFBb0UsbUJBQXlDO1FBQXpDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBc0I7SUFBRyxDQUFDO0lBRTFHLGVBQWUsQ0FBQyxLQUFZO1FBQ2pDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQzlHLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQzs7dUhBVFUsMEJBQTBCLGtCQUNqQiwwQkFBMEI7MkhBRG5DLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFFSSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3RhdGUsIFN0YXRlSW5pdGlhbGl6ZXIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IERhdGFTdGF0dXMgfSBmcm9tICcuL2RhdGEtc3RhdHVzJztcbmltcG9ydCB7IFJlbW90ZURhdGFQcm92aWRlciwgTkdTU01fUkVNT1RFX0RBVEFfUFJPVklERVIgfSBmcm9tICcuL3JlbW90ZS1kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7IHVwZGF0ZVJlbW90ZURhdGFTdGF0ZSB9IGZyb20gJy4vc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVtb3RlRGF0YVN0YXRlSW5pdGlhbGl6ZXIgaW1wbGVtZW50cyBTdGF0ZUluaXRpYWxpemVyIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChOR1NTTV9SRU1PVEVfREFUQV9QUk9WSURFUikgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZW1vdGVEYXRhUHJvdmlkZXJzOiBSZW1vdGVEYXRhUHJvdmlkZXJbXSkge31cblxuICBwdWJsaWMgaW5pdGlhbGl6ZVN0YXRlKHN0YXRlOiBTdGF0ZSk6IFN0YXRlIHtcbiAgICBsZXQgdGVtcFN0YXRlID0gc3RhdGU7XG4gICAgcmV0dXJuICh0aGlzLnJlbW90ZURhdGFQcm92aWRlcnMgPz8gW10pLnJlZHVjZShcbiAgICAgIChzLCBwcm92aWRlcikgPT4gdXBkYXRlUmVtb3RlRGF0YVN0YXRlKHMsIHsgW3Byb3ZpZGVyLnJlbW90ZURhdGFLZXldOiB7ICRzZXQ6IHsgc3RhdHVzOiBEYXRhU3RhdHVzLm5vbmUgfSB9IH0pLFxuICAgICAgdGVtcFN0YXRlXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DataStatus } from './data-status';
|
|
2
|
+
export const getDefaultRemoteData = (defaultValue) => ({
|
|
3
|
+
status: DataStatus.none,
|
|
4
|
+
data: defaultValue
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3JlbW90ZS1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTM0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBSSxZQUFnQixFQUFpQixFQUFFLENBQUMsQ0FBQztJQUMzRSxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUk7SUFDdkIsSUFBSSxFQUFFLFlBQVk7Q0FDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVN0YXR1cyB9IGZyb20gJy4vZGF0YS1zdGF0dXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZURhdGE8VD4ge1xuICBzdGF0dXM6IERhdGFTdGF0dXM7XG4gIGRhdGE/OiBUO1xuICB0aW1lc3RhbXA/OiBEYXRlO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFJlbW90ZURhdGEgPSA8VD4oZGVmYXVsdFZhbHVlPzogVCk6IFJlbW90ZURhdGE8VD4gPT4gKHtcbiAgc3RhdHVzOiBEYXRhU3RhdHVzLm5vbmUsXG4gIGRhdGE6IGRlZmF1bHRWYWx1ZVxufSk7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './remote-data.state';
|
|
2
|
+
export * from './selectors';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3N0YXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlbW90ZS1kYXRhLnN0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0b3JzJztcbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var RemoteDataStateSpecification_1;
|
|
2
|
+
import { __decorate } from "tslib";
|
|
3
|
+
import update from 'immutability-helper';
|
|
4
|
+
import { NgSsmFeatureState } from 'ngssm-store';
|
|
5
|
+
export const selectRemoteDataState = (state) => state[RemoteDataStateSpecification.featureStateKey];
|
|
6
|
+
export const updateRemoteDataState = (state, command) => update(state, {
|
|
7
|
+
[RemoteDataStateSpecification.featureStateKey]: command
|
|
8
|
+
});
|
|
9
|
+
let RemoteDataStateSpecification = RemoteDataStateSpecification_1 = class RemoteDataStateSpecification {
|
|
10
|
+
};
|
|
11
|
+
RemoteDataStateSpecification.featureStateKey = 'remote-data-state';
|
|
12
|
+
RemoteDataStateSpecification.initialState = {};
|
|
13
|
+
RemoteDataStateSpecification = RemoteDataStateSpecification_1 = __decorate([
|
|
14
|
+
NgSsmFeatureState({
|
|
15
|
+
featureStateKey: RemoteDataStateSpecification_1.featureStateKey,
|
|
16
|
+
initialState: RemoteDataStateSpecification_1.initialState
|
|
17
|
+
})
|
|
18
|
+
], RemoteDataStateSpecification);
|
|
19
|
+
export { RemoteDataStateSpecification };
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEuc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL3N0YXRlL3JlbW90ZS1kYXRhLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxNQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxpQkFBaUIsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUl2RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBbUIsRUFBRSxDQUNyRSxLQUFLLENBQUMsNEJBQTRCLENBQUMsZUFBZSxDQUFvQixDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLE9BQXFDLEVBQVMsRUFBRSxDQUNsRyxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ1osQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPO0NBQ3hELENBQUMsQ0FBQztBQVVFLElBQU0sNEJBQTRCLG9DQUFsQyxNQUFNLDRCQUE0Qjs7QUFDaEIsNENBQWUsR0FBRyxtQkFBbUIsQ0FBQztBQUN0Qyx5Q0FBWSxHQUFvQixFQUFFLENBQUM7QUFGL0MsNEJBQTRCO0lBSnhDLGlCQUFpQixDQUFDO1FBQ2pCLGVBQWUsRUFBRSw4QkFBNEIsQ0FBQyxlQUFlO1FBQzdELFlBQVksRUFBRSw4QkFBNEIsQ0FBQyxZQUFZO0tBQ3hELENBQUM7R0FDVyw0QkFBNEIsQ0FHeEM7U0FIWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXBkYXRlLCB7IFNwZWMgfSBmcm9tICdpbW11dGFiaWxpdHktaGVscGVyJztcblxuaW1wb3J0IHsgTmdTc21GZWF0dXJlU3RhdGUsIFN0YXRlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBSZW1vdGVEYXRhIH0gZnJvbSAnLi4vcmVtb3RlLWRhdGEnO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0UmVtb3RlRGF0YVN0YXRlID0gKHN0YXRlOiBTdGF0ZSk6IFJlbW90ZURhdGFTdGF0ZSA9PlxuICBzdGF0ZVtSZW1vdGVEYXRhU3RhdGVTcGVjaWZpY2F0aW9uLmZlYXR1cmVTdGF0ZUtleV0gYXMgUmVtb3RlRGF0YVN0YXRlO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUmVtb3RlRGF0YVN0YXRlID0gKHN0YXRlOiBTdGF0ZSwgY29tbWFuZDogU3BlYzxSZW1vdGVEYXRhU3RhdGUsIG5ldmVyPik6IFN0YXRlID0+XG4gIHVwZGF0ZShzdGF0ZSwge1xuICAgIFtSZW1vdGVEYXRhU3RhdGVTcGVjaWZpY2F0aW9uLmZlYXR1cmVTdGF0ZUtleV06IGNvbW1hbmRcbiAgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlRGF0YVN0YXRlIHtcbiAgW2tleTogc3RyaW5nXTogUmVtb3RlRGF0YTxhbnk+O1xufVxuXG5ATmdTc21GZWF0dXJlU3RhdGUoe1xuICBmZWF0dXJlU3RhdGVLZXk6IFJlbW90ZURhdGFTdGF0ZVNwZWNpZmljYXRpb24uZmVhdHVyZVN0YXRlS2V5LFxuICBpbml0aWFsU3RhdGU6IFJlbW90ZURhdGFTdGF0ZVNwZWNpZmljYXRpb24uaW5pdGlhbFN0YXRlXG59KVxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGFTdGF0ZVNwZWNpZmljYXRpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGZlYXR1cmVTdGF0ZUtleSA9ICdyZW1vdGUtZGF0YS1zdGF0ZSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW5pdGlhbFN0YXRlOiBSZW1vdGVEYXRhU3RhdGUgPSB7fTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { selectRemoteDataState } from './remote-data.state';
|
|
2
|
+
export const selectRemoteData = (state, remoteDataKey) => selectRemoteDataState(state)[remoteDataKey];
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9zdGF0ZS9zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsYUFBcUIsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZSB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgc2VsZWN0UmVtb3RlRGF0YVN0YXRlIH0gZnJvbSAnLi9yZW1vdGUtZGF0YS5zdGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RSZW1vdGVEYXRhID0gKHN0YXRlOiBTdGF0ZSwgcmVtb3RlRGF0YUtleTogc3RyaW5nKSA9PiBzZWxlY3RSZW1vdGVEYXRhU3RhdGUoc3RhdGUpW3JlbW90ZURhdGFLZXldO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVtb3RlLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbmdzc20tcmVtb3RlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngssm-remote-data
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ngssm-remote-data.module';
|
|
5
|
+
export * from './lib/data-status';
|
|
6
|
+
export * from './lib/remote-data';
|
|
7
|
+
export * from './lib/state';
|
|
8
|
+
export * from './lib/actions';
|
|
9
|
+
export * from './lib/remote-data-provider';
|
|
10
|
+
export * from './lib/guards';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmdzc20tcmVtb3RlLWRhdGFcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3NzbS1yZW1vdGUtZGF0YS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS1zdGF0dXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVtb3RlLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZW1vdGUtZGF0YS1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMnO1xuIl19
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Injectable, Inject, Optional, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from 'ngssm-store';
|
|
4
|
+
import { NgSsmFeatureState, NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER } from 'ngssm-store';
|
|
5
|
+
import { __decorate } from 'tslib';
|
|
6
|
+
import update from 'immutability-helper';
|
|
7
|
+
|
|
8
|
+
var RemoteDataActionType;
|
|
9
|
+
(function (RemoteDataActionType) {
|
|
10
|
+
RemoteDataActionType["loadRemoteData"] = "[RemoteDataActionType] loadRemoteData";
|
|
11
|
+
RemoteDataActionType["registerLoadedRemoteData"] = "[RemoteDataActionType] registerLoadedRemoteData";
|
|
12
|
+
})(RemoteDataActionType || (RemoteDataActionType = {}));
|
|
13
|
+
|
|
14
|
+
class LoadRemoteDataAction {
|
|
15
|
+
constructor(remoteDataKey, forceReload) {
|
|
16
|
+
this.remoteDataKey = remoteDataKey;
|
|
17
|
+
this.forceReload = forceReload;
|
|
18
|
+
this.type = RemoteDataActionType.loadRemoteData;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
class RegisterLoadedRemoteDataAction {
|
|
23
|
+
constructor(remoteDataKey, status, data, message) {
|
|
24
|
+
this.remoteDataKey = remoteDataKey;
|
|
25
|
+
this.status = status;
|
|
26
|
+
this.data = data;
|
|
27
|
+
this.message = message;
|
|
28
|
+
this.type = RemoteDataActionType.registerLoadedRemoteData;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var DataStatus;
|
|
33
|
+
(function (DataStatus) {
|
|
34
|
+
DataStatus["none"] = "None";
|
|
35
|
+
DataStatus["loading"] = "Loading";
|
|
36
|
+
DataStatus["loaded"] = "Loaded";
|
|
37
|
+
DataStatus["notFound"] = "NotFound";
|
|
38
|
+
DataStatus["error"] = "Error";
|
|
39
|
+
})(DataStatus || (DataStatus = {}));
|
|
40
|
+
|
|
41
|
+
const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
42
|
+
|
|
43
|
+
var RemoteDataStateSpecification_1;
|
|
44
|
+
const selectRemoteDataState = (state) => state[RemoteDataStateSpecification.featureStateKey];
|
|
45
|
+
const updateRemoteDataState = (state, command) => update(state, {
|
|
46
|
+
[RemoteDataStateSpecification.featureStateKey]: command
|
|
47
|
+
});
|
|
48
|
+
let RemoteDataStateSpecification = RemoteDataStateSpecification_1 = class RemoteDataStateSpecification {
|
|
49
|
+
};
|
|
50
|
+
RemoteDataStateSpecification.featureStateKey = 'remote-data-state';
|
|
51
|
+
RemoteDataStateSpecification.initialState = {};
|
|
52
|
+
RemoteDataStateSpecification = RemoteDataStateSpecification_1 = __decorate([
|
|
53
|
+
NgSsmFeatureState({
|
|
54
|
+
featureStateKey: RemoteDataStateSpecification_1.featureStateKey,
|
|
55
|
+
initialState: RemoteDataStateSpecification_1.initialState
|
|
56
|
+
})
|
|
57
|
+
], RemoteDataStateSpecification);
|
|
58
|
+
|
|
59
|
+
const selectRemoteData = (state, remoteDataKey) => selectRemoteDataState(state)[remoteDataKey];
|
|
60
|
+
|
|
61
|
+
class RemoteDataLoadingEffect {
|
|
62
|
+
constructor(remoteDataProviders) {
|
|
63
|
+
this.processedActions = [RemoteDataActionType.loadRemoteData];
|
|
64
|
+
this.remoteDataProvidersPerKey = new Map((remoteDataProviders !== null && remoteDataProviders !== void 0 ? remoteDataProviders : []).map((r) => [r.remoteDataKey, r]));
|
|
65
|
+
}
|
|
66
|
+
processAction(store, state, action) {
|
|
67
|
+
const loadRemoteDataAction = action;
|
|
68
|
+
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
69
|
+
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
70
|
+
if (!item || !provider || item.status !== DataStatus.loading) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
provider.get().subscribe({
|
|
74
|
+
next: (value) => store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),
|
|
75
|
+
error: (error) => {
|
|
76
|
+
console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);
|
|
77
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
83
|
+
RemoteDataLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
|
|
85
|
+
type: Injectable
|
|
86
|
+
}], ctorParameters: function () {
|
|
87
|
+
return [{ type: undefined, decorators: [{
|
|
88
|
+
type: Inject,
|
|
89
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
90
|
+
}, {
|
|
91
|
+
type: Optional
|
|
92
|
+
}] }];
|
|
93
|
+
} });
|
|
94
|
+
const remoteDataLoadingEffectProvider = {
|
|
95
|
+
provide: NGSSM_EFFECT,
|
|
96
|
+
useClass: RemoteDataLoadingEffect,
|
|
97
|
+
multi: true
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
class RemoteDataReducer {
|
|
101
|
+
constructor(remoteDataProviders) {
|
|
102
|
+
this.processedActions = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];
|
|
103
|
+
this.remoteDataProvidersPerKey = new Map((remoteDataProviders !== null && remoteDataProviders !== void 0 ? remoteDataProviders : []).map((r) => [r.remoteDataKey, r]));
|
|
104
|
+
}
|
|
105
|
+
updateState(state, action) {
|
|
106
|
+
switch (action.type) {
|
|
107
|
+
case RemoteDataActionType.loadRemoteData:
|
|
108
|
+
const loadRemoteDataAction = action;
|
|
109
|
+
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
110
|
+
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
111
|
+
if (!provider ||
|
|
112
|
+
loadRemoteDataAction.forceReload ||
|
|
113
|
+
item.status === DataStatus.none ||
|
|
114
|
+
item.status === DataStatus.error ||
|
|
115
|
+
!item.timestamp ||
|
|
116
|
+
new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds) {
|
|
117
|
+
return updateRemoteDataState(state, {
|
|
118
|
+
[loadRemoteDataAction.remoteDataKey]: {
|
|
119
|
+
status: { $set: DataStatus.loading }
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case RemoteDataActionType.registerLoadedRemoteData:
|
|
125
|
+
const registerLoadedRemoteDataAction = action;
|
|
126
|
+
if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {
|
|
127
|
+
return updateRemoteDataState(state, {
|
|
128
|
+
[registerLoadedRemoteDataAction.remoteDataKey]: {
|
|
129
|
+
status: { $set: registerLoadedRemoteDataAction.status },
|
|
130
|
+
data: { $set: registerLoadedRemoteDataAction.data },
|
|
131
|
+
timestamp: { $set: new Date() },
|
|
132
|
+
message: { $set: registerLoadedRemoteDataAction.message }
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
return state;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
RemoteDataReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
142
|
+
RemoteDataReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer });
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer, decorators: [{
|
|
144
|
+
type: Injectable
|
|
145
|
+
}], ctorParameters: function () {
|
|
146
|
+
return [{ type: undefined, decorators: [{
|
|
147
|
+
type: Inject,
|
|
148
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
149
|
+
}, {
|
|
150
|
+
type: Optional
|
|
151
|
+
}] }];
|
|
152
|
+
} });
|
|
153
|
+
const remoteDataReducerProvider = {
|
|
154
|
+
provide: NGSSM_REDUCER,
|
|
155
|
+
useClass: RemoteDataReducer,
|
|
156
|
+
multi: true
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
class RemoteDataStateInitializer {
|
|
160
|
+
constructor(remoteDataProviders) {
|
|
161
|
+
this.remoteDataProviders = remoteDataProviders;
|
|
162
|
+
}
|
|
163
|
+
initializeState(state) {
|
|
164
|
+
var _a;
|
|
165
|
+
let tempState = state;
|
|
166
|
+
return ((_a = this.remoteDataProviders) !== null && _a !== void 0 ? _a : []).reduce((s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }), tempState);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
RemoteDataStateInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
170
|
+
RemoteDataStateInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer });
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
|
|
172
|
+
type: Injectable
|
|
173
|
+
}], ctorParameters: function () {
|
|
174
|
+
return [{ type: undefined, decorators: [{
|
|
175
|
+
type: Inject,
|
|
176
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
177
|
+
}, {
|
|
178
|
+
type: Optional
|
|
179
|
+
}] }];
|
|
180
|
+
} });
|
|
181
|
+
|
|
182
|
+
class NgssmRemoteDataModule {
|
|
183
|
+
}
|
|
184
|
+
NgssmRemoteDataModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
185
|
+
NgssmRemoteDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule });
|
|
186
|
+
NgssmRemoteDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, providers: [
|
|
187
|
+
remoteDataReducerProvider,
|
|
188
|
+
remoteDataLoadingEffectProvider,
|
|
189
|
+
{ provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }
|
|
190
|
+
] });
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, decorators: [{
|
|
192
|
+
type: NgModule,
|
|
193
|
+
args: [{
|
|
194
|
+
declarations: [],
|
|
195
|
+
imports: [],
|
|
196
|
+
exports: [],
|
|
197
|
+
providers: [
|
|
198
|
+
remoteDataReducerProvider,
|
|
199
|
+
remoteDataLoadingEffectProvider,
|
|
200
|
+
{ provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }
|
|
201
|
+
]
|
|
202
|
+
}]
|
|
203
|
+
}] });
|
|
204
|
+
|
|
205
|
+
const getDefaultRemoteData = (defaultValue) => ({
|
|
206
|
+
status: DataStatus.none,
|
|
207
|
+
data: defaultValue
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
class RemoteDataLoadingGuard {
|
|
211
|
+
constructor(store) {
|
|
212
|
+
this.store = store;
|
|
213
|
+
}
|
|
214
|
+
canActivate(route, state) {
|
|
215
|
+
var _a;
|
|
216
|
+
const parameters = route.data;
|
|
217
|
+
((_a = parameters === null || parameters === void 0 ? void 0 : parameters.remoteDataItems) !== null && _a !== void 0 ? _a : []).forEach((item) => {
|
|
218
|
+
this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));
|
|
219
|
+
});
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
RemoteDataLoadingGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
224
|
+
RemoteDataLoadingGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' });
|
|
225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
|
|
226
|
+
type: Injectable,
|
|
227
|
+
args: [{
|
|
228
|
+
providedIn: 'root'
|
|
229
|
+
}]
|
|
230
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
231
|
+
|
|
232
|
+
/*
|
|
233
|
+
* Public API Surface of ngssm-remote-data
|
|
234
|
+
*/
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Generated bundle index. Do not edit.
|
|
238
|
+
*/
|
|
239
|
+
|
|
240
|
+
export { DataStatus, LoadRemoteDataAction, NGSSM_REMOTE_DATA_PROVIDER, NgssmRemoteDataModule, RegisterLoadedRemoteDataAction, RemoteDataActionType, RemoteDataLoadingGuard, RemoteDataStateSpecification, getDefaultRemoteData, selectRemoteData, selectRemoteDataState, updateRemoteDataState };
|
|
241
|
+
//# sourceMappingURL=ngssm-remote-data.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/data-status.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-data.module.ts","../../../projects/ngssm-remote-data/src/lib/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData'\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(public readonly remoteDataKey: string, public readonly forceReload: boolean) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { DataStatus } from '../data-status';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string\n ) {}\n}\n","export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface RemoteDataProvider {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds: number;\n\n get(): Observable<any>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../remote-data';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../data-status';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n provider.get().subscribe({\n next: (value) =>\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));\n }\n });\n }\n}\n\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../data-status';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (\n !provider ||\n loadRemoteDataAction.forceReload ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus } from './data-status';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './remote-data-provider';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\n\nimport { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]\n})\nexport class NgssmRemoteDataModule {}\n","import { DataStatus } from './data-status';\n\nexport interface RemoteData<T> {\n status: DataStatus;\n data?: T;\n timestamp?: Date;\n message?: string;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T): RemoteData<T> => ({\n status: DataStatus.none,\n data: defaultValue\n});\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard implements CanActivate {\n constructor(private store: Store) {}\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));\n });\n\n return true;\n }\n}\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/ngssm-remote-data.module';\nexport * from './lib/data-status';\nexport * from './lib/remote-data';\nexport * from './lib/state';\nexport * from './lib/actions';\nexport * from './lib/remote-data-provider';\nexport * from './lib/guards';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Injectable, Inject, Optional, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from 'ngssm-store';
|
|
4
|
+
import { NgSsmFeatureState, NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER } from 'ngssm-store';
|
|
5
|
+
import { __decorate } from 'tslib';
|
|
6
|
+
import update from 'immutability-helper';
|
|
7
|
+
|
|
8
|
+
var RemoteDataActionType;
|
|
9
|
+
(function (RemoteDataActionType) {
|
|
10
|
+
RemoteDataActionType["loadRemoteData"] = "[RemoteDataActionType] loadRemoteData";
|
|
11
|
+
RemoteDataActionType["registerLoadedRemoteData"] = "[RemoteDataActionType] registerLoadedRemoteData";
|
|
12
|
+
})(RemoteDataActionType || (RemoteDataActionType = {}));
|
|
13
|
+
|
|
14
|
+
class LoadRemoteDataAction {
|
|
15
|
+
constructor(remoteDataKey, forceReload) {
|
|
16
|
+
this.remoteDataKey = remoteDataKey;
|
|
17
|
+
this.forceReload = forceReload;
|
|
18
|
+
this.type = RemoteDataActionType.loadRemoteData;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
class RegisterLoadedRemoteDataAction {
|
|
23
|
+
constructor(remoteDataKey, status, data, message) {
|
|
24
|
+
this.remoteDataKey = remoteDataKey;
|
|
25
|
+
this.status = status;
|
|
26
|
+
this.data = data;
|
|
27
|
+
this.message = message;
|
|
28
|
+
this.type = RemoteDataActionType.registerLoadedRemoteData;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var DataStatus;
|
|
33
|
+
(function (DataStatus) {
|
|
34
|
+
DataStatus["none"] = "None";
|
|
35
|
+
DataStatus["loading"] = "Loading";
|
|
36
|
+
DataStatus["loaded"] = "Loaded";
|
|
37
|
+
DataStatus["notFound"] = "NotFound";
|
|
38
|
+
DataStatus["error"] = "Error";
|
|
39
|
+
})(DataStatus || (DataStatus = {}));
|
|
40
|
+
|
|
41
|
+
const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken('NGSSM_REMOTE_DATA_PROVIDER');
|
|
42
|
+
|
|
43
|
+
var RemoteDataStateSpecification_1;
|
|
44
|
+
const selectRemoteDataState = (state) => state[RemoteDataStateSpecification.featureStateKey];
|
|
45
|
+
const updateRemoteDataState = (state, command) => update(state, {
|
|
46
|
+
[RemoteDataStateSpecification.featureStateKey]: command
|
|
47
|
+
});
|
|
48
|
+
let RemoteDataStateSpecification = RemoteDataStateSpecification_1 = class RemoteDataStateSpecification {
|
|
49
|
+
};
|
|
50
|
+
RemoteDataStateSpecification.featureStateKey = 'remote-data-state';
|
|
51
|
+
RemoteDataStateSpecification.initialState = {};
|
|
52
|
+
RemoteDataStateSpecification = RemoteDataStateSpecification_1 = __decorate([
|
|
53
|
+
NgSsmFeatureState({
|
|
54
|
+
featureStateKey: RemoteDataStateSpecification_1.featureStateKey,
|
|
55
|
+
initialState: RemoteDataStateSpecification_1.initialState
|
|
56
|
+
})
|
|
57
|
+
], RemoteDataStateSpecification);
|
|
58
|
+
|
|
59
|
+
const selectRemoteData = (state, remoteDataKey) => selectRemoteDataState(state)[remoteDataKey];
|
|
60
|
+
|
|
61
|
+
class RemoteDataLoadingEffect {
|
|
62
|
+
constructor(remoteDataProviders) {
|
|
63
|
+
this.processedActions = [RemoteDataActionType.loadRemoteData];
|
|
64
|
+
this.remoteDataProvidersPerKey = new Map((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));
|
|
65
|
+
}
|
|
66
|
+
processAction(store, state, action) {
|
|
67
|
+
const loadRemoteDataAction = action;
|
|
68
|
+
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
69
|
+
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
70
|
+
if (!item || !provider || item.status !== DataStatus.loading) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
provider.get().subscribe({
|
|
74
|
+
next: (value) => store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),
|
|
75
|
+
error: (error) => {
|
|
76
|
+
console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);
|
|
77
|
+
store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
RemoteDataLoadingEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
83
|
+
RemoteDataLoadingEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
|
|
85
|
+
type: Injectable
|
|
86
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
87
|
+
type: Inject,
|
|
88
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
89
|
+
}, {
|
|
90
|
+
type: Optional
|
|
91
|
+
}] }]; } });
|
|
92
|
+
const remoteDataLoadingEffectProvider = {
|
|
93
|
+
provide: NGSSM_EFFECT,
|
|
94
|
+
useClass: RemoteDataLoadingEffect,
|
|
95
|
+
multi: true
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
class RemoteDataReducer {
|
|
99
|
+
constructor(remoteDataProviders) {
|
|
100
|
+
this.processedActions = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];
|
|
101
|
+
this.remoteDataProvidersPerKey = new Map((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));
|
|
102
|
+
}
|
|
103
|
+
updateState(state, action) {
|
|
104
|
+
switch (action.type) {
|
|
105
|
+
case RemoteDataActionType.loadRemoteData:
|
|
106
|
+
const loadRemoteDataAction = action;
|
|
107
|
+
const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];
|
|
108
|
+
const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);
|
|
109
|
+
if (!provider ||
|
|
110
|
+
loadRemoteDataAction.forceReload ||
|
|
111
|
+
item.status === DataStatus.none ||
|
|
112
|
+
item.status === DataStatus.error ||
|
|
113
|
+
!item.timestamp ||
|
|
114
|
+
new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds) {
|
|
115
|
+
return updateRemoteDataState(state, {
|
|
116
|
+
[loadRemoteDataAction.remoteDataKey]: {
|
|
117
|
+
status: { $set: DataStatus.loading }
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
case RemoteDataActionType.registerLoadedRemoteData:
|
|
123
|
+
const registerLoadedRemoteDataAction = action;
|
|
124
|
+
if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {
|
|
125
|
+
return updateRemoteDataState(state, {
|
|
126
|
+
[registerLoadedRemoteDataAction.remoteDataKey]: {
|
|
127
|
+
status: { $set: registerLoadedRemoteDataAction.status },
|
|
128
|
+
data: { $set: registerLoadedRemoteDataAction.data },
|
|
129
|
+
timestamp: { $set: new Date() },
|
|
130
|
+
message: { $set: registerLoadedRemoteDataAction.message }
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return state;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
RemoteDataReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
140
|
+
RemoteDataReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer });
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataReducer, decorators: [{
|
|
142
|
+
type: Injectable
|
|
143
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
144
|
+
type: Inject,
|
|
145
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
146
|
+
}, {
|
|
147
|
+
type: Optional
|
|
148
|
+
}] }]; } });
|
|
149
|
+
const remoteDataReducerProvider = {
|
|
150
|
+
provide: NGSSM_REDUCER,
|
|
151
|
+
useClass: RemoteDataReducer,
|
|
152
|
+
multi: true
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
class RemoteDataStateInitializer {
|
|
156
|
+
constructor(remoteDataProviders) {
|
|
157
|
+
this.remoteDataProviders = remoteDataProviders;
|
|
158
|
+
}
|
|
159
|
+
initializeState(state) {
|
|
160
|
+
let tempState = state;
|
|
161
|
+
return (this.remoteDataProviders ?? []).reduce((s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }), tempState);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
RemoteDataStateInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
|
+
RemoteDataStateInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer });
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
|
|
167
|
+
type: Injectable
|
|
168
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
169
|
+
type: Inject,
|
|
170
|
+
args: [NGSSM_REMOTE_DATA_PROVIDER]
|
|
171
|
+
}, {
|
|
172
|
+
type: Optional
|
|
173
|
+
}] }]; } });
|
|
174
|
+
|
|
175
|
+
class NgssmRemoteDataModule {
|
|
176
|
+
}
|
|
177
|
+
NgssmRemoteDataModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
178
|
+
NgssmRemoteDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule });
|
|
179
|
+
NgssmRemoteDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, providers: [
|
|
180
|
+
remoteDataReducerProvider,
|
|
181
|
+
remoteDataLoadingEffectProvider,
|
|
182
|
+
{ provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }
|
|
183
|
+
] });
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmRemoteDataModule, decorators: [{
|
|
185
|
+
type: NgModule,
|
|
186
|
+
args: [{
|
|
187
|
+
declarations: [],
|
|
188
|
+
imports: [],
|
|
189
|
+
exports: [],
|
|
190
|
+
providers: [
|
|
191
|
+
remoteDataReducerProvider,
|
|
192
|
+
remoteDataLoadingEffectProvider,
|
|
193
|
+
{ provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }
|
|
194
|
+
]
|
|
195
|
+
}]
|
|
196
|
+
}] });
|
|
197
|
+
|
|
198
|
+
const getDefaultRemoteData = (defaultValue) => ({
|
|
199
|
+
status: DataStatus.none,
|
|
200
|
+
data: defaultValue
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
class RemoteDataLoadingGuard {
|
|
204
|
+
constructor(store) {
|
|
205
|
+
this.store = store;
|
|
206
|
+
}
|
|
207
|
+
canActivate(route, state) {
|
|
208
|
+
const parameters = route.data;
|
|
209
|
+
(parameters?.remoteDataItems ?? []).forEach((item) => {
|
|
210
|
+
this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));
|
|
211
|
+
});
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
RemoteDataLoadingGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
216
|
+
RemoteDataLoadingGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' });
|
|
217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
|
|
218
|
+
type: Injectable,
|
|
219
|
+
args: [{
|
|
220
|
+
providedIn: 'root'
|
|
221
|
+
}]
|
|
222
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
223
|
+
|
|
224
|
+
/*
|
|
225
|
+
* Public API Surface of ngssm-remote-data
|
|
226
|
+
*/
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Generated bundle index. Do not edit.
|
|
230
|
+
*/
|
|
231
|
+
|
|
232
|
+
export { DataStatus, LoadRemoteDataAction, NGSSM_REMOTE_DATA_PROVIDER, NgssmRemoteDataModule, RegisterLoadedRemoteDataAction, RemoteDataActionType, RemoteDataLoadingGuard, RemoteDataStateSpecification, getDefaultRemoteData, selectRemoteData, selectRemoteDataState, updateRemoteDataState };
|
|
233
|
+
//# sourceMappingURL=ngssm-remote-data.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/data-status.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-data.module.ts","../../../projects/ngssm-remote-data/src/lib/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData'\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(public readonly remoteDataKey: string, public readonly forceReload: boolean) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { DataStatus } from '../data-status';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string\n ) {}\n}\n","export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface RemoteDataProvider {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds: number;\n\n get(): Observable<any>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../remote-data';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../data-status';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n provider.get().subscribe({\n next: (value) =>\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value)),\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined));\n }\n });\n }\n}\n\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus } from '../data-status';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../remote-data-provider';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (\n !provider ||\n loadRemoteDataAction.forceReload ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus } from './data-status';\nimport { RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './remote-data-provider';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\n\nimport { remoteDataLoadingEffectProvider } from './effects/remote-data-loading.effect';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]\n})\nexport class NgssmRemoteDataModule {}\n","import { DataStatus } from './data-status';\n\nexport interface RemoteData<T> {\n status: DataStatus;\n data?: T;\n timestamp?: Date;\n message?: string;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T): RemoteData<T> => ({\n status: DataStatus.none,\n data: defaultValue\n});\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard implements CanActivate {\n constructor(private store: Store) {}\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, item.forceReload === true));\n });\n\n return true;\n }\n}\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/ngssm-remote-data.module';\nexport * from './lib/data-status';\nexport * from './lib/remote-data';\nexport * from './lib/state';\nexport * from './lib/actions';\nexport * from './lib/remote-data-provider';\nexport * from './lib/guards';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Action } from 'ngssm-store';
|
|
2
|
+
import { DataStatus } from '../data-status';
|
|
3
|
+
export declare class RegisterLoadedRemoteDataAction implements Action {
|
|
4
|
+
readonly remoteDataKey: string;
|
|
5
|
+
readonly status: DataStatus;
|
|
6
|
+
readonly data: any;
|
|
7
|
+
readonly message?: string | undefined;
|
|
8
|
+
readonly type: string;
|
|
9
|
+
constructor(remoteDataKey: string, status: DataStatus, data: any, message?: string | undefined);
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Provider } from '@angular/core';
|
|
2
|
+
import { Effect, Store, State, Action } from 'ngssm-store';
|
|
3
|
+
import { RemoteDataProvider } from '../remote-data-provider';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RemoteDataLoadingEffect implements Effect {
|
|
6
|
+
private readonly remoteDataProvidersPerKey;
|
|
7
|
+
readonly processedActions: string[];
|
|
8
|
+
constructor(remoteDataProviders: RemoteDataProvider[]);
|
|
9
|
+
processAction(store: Store, state: State, action: Action): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteDataLoadingEffect, [{ optional: true; }]>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RemoteDataLoadingEffect>;
|
|
12
|
+
}
|
|
13
|
+
export declare const remoteDataLoadingEffectProvider: Provider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './remote-data-loading.guard';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Store } from 'ngssm-store';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface RemoteDataLoadingGuardItem {
|
|
6
|
+
remoteDataKey: string;
|
|
7
|
+
forceReload?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface RemoteDataLoadingGuardParameters {
|
|
10
|
+
remoteDataItems: RemoteDataLoadingGuardItem[];
|
|
11
|
+
}
|
|
12
|
+
export declare class RemoteDataLoadingGuard implements CanActivate {
|
|
13
|
+
private store;
|
|
14
|
+
constructor(store: Store);
|
|
15
|
+
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteDataLoadingGuard, never>;
|
|
17
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RemoteDataLoadingGuard>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class NgssmRemoteDataModule {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgssmRemoteDataModule, never>;
|
|
4
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgssmRemoteDataModule, never, never, never>;
|
|
5
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgssmRemoteDataModule>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Provider } from '@angular/core';
|
|
2
|
+
import { Reducer, State, Action } from 'ngssm-store';
|
|
3
|
+
import { RemoteDataProvider } from '../remote-data-provider';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RemoteDataReducer implements Reducer {
|
|
6
|
+
private readonly remoteDataProvidersPerKey;
|
|
7
|
+
readonly processedActions: string[];
|
|
8
|
+
constructor(remoteDataProviders: RemoteDataProvider[]);
|
|
9
|
+
updateState(state: State, action: Action): State;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteDataReducer, [{ optional: true; }]>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RemoteDataReducer>;
|
|
12
|
+
}
|
|
13
|
+
export declare const remoteDataReducerProvider: Provider;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
export interface RemoteDataProvider {
|
|
4
|
+
readonly remoteDataKey: string;
|
|
5
|
+
readonly cacheDurationInSeconds: number;
|
|
6
|
+
get(): Observable<any>;
|
|
7
|
+
}
|
|
8
|
+
export declare const NGSSM_REMOTE_DATA_PROVIDER: InjectionToken<RemoteDataProvider>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { State, StateInitializer } from 'ngssm-store';
|
|
2
|
+
import { RemoteDataProvider } from './remote-data-provider';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class RemoteDataStateInitializer implements StateInitializer {
|
|
5
|
+
private remoteDataProviders;
|
|
6
|
+
constructor(remoteDataProviders: RemoteDataProvider[]);
|
|
7
|
+
initializeState(state: State): State;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteDataStateInitializer, [{ optional: true; }]>;
|
|
9
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RemoteDataStateInitializer>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Spec } from 'immutability-helper';
|
|
2
|
+
import { State } from 'ngssm-store';
|
|
3
|
+
import { RemoteData } from '../remote-data';
|
|
4
|
+
export declare const selectRemoteDataState: (state: State) => RemoteDataState;
|
|
5
|
+
export declare const updateRemoteDataState: (state: State, command: Spec<RemoteDataState, never>) => State;
|
|
6
|
+
export interface RemoteDataState {
|
|
7
|
+
[key: string]: RemoteData<any>;
|
|
8
|
+
}
|
|
9
|
+
export declare class RemoteDataStateSpecification {
|
|
10
|
+
static readonly featureStateKey = "remote-data-state";
|
|
11
|
+
static readonly initialState: RemoteDataState;
|
|
12
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ngssm-remote-data",
|
|
3
|
+
"version": "14.0.0",
|
|
4
|
+
"description": "NgSsm - Utilities to manage data loaded from remote services with the store.",
|
|
5
|
+
"author": "Lion Marc",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"peerDependencies": {
|
|
8
|
+
"@angular/common": "^14.2.0",
|
|
9
|
+
"@angular/core": "^14.2.0",
|
|
10
|
+
"ngssm-store": "14.0.0"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"tslib": "^2.3.0"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/LionMarc/ng-simple-state-management",
|
|
18
|
+
"directory": "projects/ngssm-remote-data"
|
|
19
|
+
},
|
|
20
|
+
"module": "fesm2015/ngssm-remote-data.mjs",
|
|
21
|
+
"es2020": "fesm2020/ngssm-remote-data.mjs",
|
|
22
|
+
"esm2020": "esm2020/ngssm-remote-data.mjs",
|
|
23
|
+
"fesm2020": "fesm2020/ngssm-remote-data.mjs",
|
|
24
|
+
"fesm2015": "fesm2015/ngssm-remote-data.mjs",
|
|
25
|
+
"typings": "index.d.ts",
|
|
26
|
+
"exports": {
|
|
27
|
+
"./package.json": {
|
|
28
|
+
"default": "./package.json"
|
|
29
|
+
},
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./index.d.ts",
|
|
32
|
+
"esm2020": "./esm2020/ngssm-remote-data.mjs",
|
|
33
|
+
"es2020": "./fesm2020/ngssm-remote-data.mjs",
|
|
34
|
+
"es2015": "./fesm2015/ngssm-remote-data.mjs",
|
|
35
|
+
"node": "./fesm2015/ngssm-remote-data.mjs",
|
|
36
|
+
"default": "./fesm2020/ngssm-remote-data.mjs"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"sideEffects": false
|
|
40
|
+
}
|
package/public-api.d.ts
ADDED