@ngrx/data 13.0.0-beta.0 → 13.0.2
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/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/ngrx-data.js → esm2020/ngrx-data.mjs} +0 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/esm2020/src/actions/entity-action-factory.mjs +50 -0
- package/{esm2015/src/actions/entity-action-guard.js → esm2020/src/actions/entity-action-guard.mjs} +0 -0
- package/{esm2015/src/actions/entity-action-operators.js → esm2020/src/actions/entity-action-operators.mjs} +0 -0
- package/{esm2015/src/actions/entity-action.js → esm2020/src/actions/entity-action.mjs} +0 -0
- package/esm2020/src/actions/entity-cache-action.mjs +116 -0
- package/esm2020/src/actions/entity-cache-change-set.mjs +50 -0
- package/{esm2015/src/actions/entity-op.js → esm2020/src/actions/entity-op.mjs} +0 -0
- package/{esm2015/src/actions/merge-strategy.js → esm2020/src/actions/merge-strategy.mjs} +0 -0
- package/{esm2015/src/actions/update-response-data.js → esm2020/src/actions/update-response-data.mjs} +0 -0
- package/{esm2015/src/dataservices/data-service-error.js → esm2020/src/dataservices/data-service-error.mjs} +0 -0
- package/{esm2015/src/dataservices/default-data-service-config.js → esm2020/src/dataservices/default-data-service-config.mjs} +0 -0
- package/{esm2015/src/dataservices/default-data.service.js → esm2020/src/dataservices/default-data.service.mjs} +4 -4
- package/esm2020/src/dataservices/entity-cache-data.service.mjs +146 -0
- package/esm2020/src/dataservices/entity-data.service.mjs +63 -0
- package/esm2020/src/dataservices/http-url-generator.mjs +86 -0
- package/{esm2015/src/dataservices/interfaces.js → esm2020/src/dataservices/interfaces.mjs} +0 -0
- package/{esm2015/src/dataservices/persistence-result-handler.service.js → esm2020/src/dataservices/persistence-result-handler.service.mjs} +4 -4
- package/esm2020/src/dispatchers/entity-cache-dispatcher.mjs +163 -0
- package/{esm2015/src/dispatchers/entity-commands.js → esm2020/src/dispatchers/entity-commands.mjs} +0 -0
- package/esm2020/src/dispatchers/entity-dispatcher-base.mjs +405 -0
- package/{esm2015/src/dispatchers/entity-dispatcher-default-options.js → esm2020/src/dispatchers/entity-dispatcher-default-options.mjs} +4 -4
- package/esm2020/src/dispatchers/entity-dispatcher-factory.mjs +65 -0
- package/{esm2015/src/dispatchers/entity-dispatcher.js → esm2020/src/dispatchers/entity-dispatcher.mjs} +0 -0
- package/esm2020/src/effects/entity-cache-effects.mjs +115 -0
- package/{esm2015/src/effects/entity-effects-scheduler.js → esm2020/src/effects/entity-effects-scheduler.mjs} +0 -0
- package/esm2020/src/effects/entity-effects.mjs +148 -0
- package/{esm2015/src/entity-data-without-effects.module.js → esm2020/src/entity-data-without-effects.module.mjs} +5 -5
- package/{esm2015/src/entity-data.module.js → esm2020/src/entity-data.module.mjs} +5 -5
- package/esm2020/src/entity-metadata/entity-definition.mjs +33 -0
- package/esm2020/src/entity-metadata/entity-definition.service.mjs +93 -0
- package/{esm2015/src/entity-metadata/entity-filters.js → esm2020/src/entity-metadata/entity-filters.mjs} +0 -0
- package/{esm2015/src/entity-metadata/entity-metadata.js → esm2020/src/entity-metadata/entity-metadata.mjs} +0 -0
- package/{esm2015/src/entity-services/entity-collection-service-base.js → esm2020/src/entity-services/entity-collection-service-base.mjs} +0 -0
- package/{esm2015/src/entity-services/entity-collection-service-elements-factory.js → esm2020/src/entity-services/entity-collection-service-elements-factory.mjs} +4 -4
- package/{esm2015/src/entity-services/entity-collection-service-factory.js → esm2020/src/entity-services/entity-collection-service-factory.mjs} +4 -4
- package/{esm2015/src/entity-services/entity-collection-service.js → esm2020/src/entity-services/entity-collection-service.mjs} +0 -0
- package/{esm2015/src/entity-services/entity-services-base.js → esm2020/src/entity-services/entity-services-base.mjs} +4 -4
- package/{esm2015/src/entity-services/entity-services-elements.js → esm2020/src/entity-services/entity-services-elements.mjs} +4 -4
- package/{esm2015/src/entity-services/entity-services.js → esm2020/src/entity-services/entity-services.mjs} +0 -0
- package/{esm2015/src/index.js → esm2020/src/index.mjs} +0 -0
- package/{esm2015/src/reducers/constants.js → esm2020/src/reducers/constants.mjs} +0 -0
- package/esm2020/src/reducers/entity-cache-reducer.mjs +271 -0
- package/{esm2015/src/reducers/entity-cache.js → esm2020/src/reducers/entity-cache.mjs} +0 -0
- package/esm2020/src/reducers/entity-change-tracker-base.mjs +587 -0
- package/{esm2015/src/reducers/entity-change-tracker.js → esm2020/src/reducers/entity-change-tracker.mjs} +0 -0
- package/{esm2015/src/reducers/entity-collection-creator.js → esm2020/src/reducers/entity-collection-creator.mjs} +4 -4
- package/esm2020/src/reducers/entity-collection-reducer-methods.mjs +807 -0
- package/{esm2015/src/reducers/entity-collection-reducer-registry.js → esm2020/src/reducers/entity-collection-reducer-registry.mjs} +4 -4
- package/{esm2015/src/reducers/entity-collection-reducer.js → esm2020/src/reducers/entity-collection-reducer.mjs} +4 -4
- package/{esm2015/src/reducers/entity-collection.js → esm2020/src/reducers/entity-collection.mjs} +0 -0
- package/{esm2015/src/selectors/entity-cache-selector.js → esm2020/src/selectors/entity-cache-selector.mjs} +0 -0
- package/{esm2015/src/selectors/entity-selectors$.js → esm2020/src/selectors/entity-selectors$.mjs} +4 -4
- package/esm2020/src/selectors/entity-selectors.mjs +96 -0
- package/{esm2015/src/utils/correlation-id-generator.js → esm2020/src/utils/correlation-id-generator.mjs} +4 -4
- package/{esm2015/src/utils/default-logger.js → esm2020/src/utils/default-logger.mjs} +4 -4
- package/{esm2015/src/utils/default-pluralizer.js → esm2020/src/utils/default-pluralizer.mjs} +5 -5
- package/{esm2015/src/utils/guid-fns.js → esm2020/src/utils/guid-fns.mjs} +0 -0
- package/{esm2015/src/utils/interfaces.js → esm2020/src/utils/interfaces.mjs} +0 -0
- package/{esm2015/src/utils/utilities.js → esm2020/src/utils/utilities.mjs} +0 -0
- package/fesm2015/{ngrx-data.js → ngrx-data.mjs} +194 -170
- package/fesm2015/ngrx-data.mjs.map +1 -0
- package/fesm2020/ngrx-data.mjs +4936 -0
- package/fesm2020/ngrx-data.mjs.map +1 -0
- package/package.json +25 -12
- package/schematics/ng-add/index.js +29 -25
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics-core/index.js +1 -3
- package/schematics-core/index.js.map +1 -1
- package/schematics-core/utility/ast-utils.js +12 -8
- package/schematics-core/utility/ast-utils.js.map +1 -1
- package/schematics-core/utility/find-component.js +12 -12
- package/schematics-core/utility/find-component.js.map +1 -1
- package/schematics-core/utility/find-module.js +12 -12
- package/schematics-core/utility/find-module.js.map +1 -1
- package/schematics-core/utility/json-utilts.js.map +1 -1
- package/schematics-core/utility/libs-version.js +1 -1
- package/schematics-core/utility/libs-version.js.map +1 -1
- package/schematics-core/utility/ngrx-utils.js +16 -12
- package/schematics-core/utility/ngrx-utils.js.map +1 -1
- package/schematics-core/utility/parse-name.js +3 -3
- package/schematics-core/utility/parse-name.js.map +1 -1
- package/schematics-core/utility/project.js +1 -1
- package/schematics-core/utility/project.js.map +1 -1
- package/schematics-core/utility/visitors.js +2 -2
- package/schematics-core/utility/visitors.js.map +1 -1
- package/bundles/ngrx-data.umd.js +0 -5491
- package/bundles/ngrx-data.umd.js.map +0 -1
- package/esm2015/src/actions/entity-action-factory.js +0 -46
- package/esm2015/src/actions/entity-cache-action.js +0 -116
- package/esm2015/src/actions/entity-cache-change-set.js +0 -50
- package/esm2015/src/dataservices/entity-cache-data.service.js +0 -140
- package/esm2015/src/dataservices/entity-data.service.js +0 -63
- package/esm2015/src/dataservices/http-url-generator.js +0 -83
- package/esm2015/src/dispatchers/entity-cache-dispatcher.js +0 -163
- package/esm2015/src/dispatchers/entity-dispatcher-base.js +0 -401
- package/esm2015/src/dispatchers/entity-dispatcher-factory.js +0 -62
- package/esm2015/src/effects/entity-cache-effects.js +0 -115
- package/esm2015/src/effects/entity-effects.js +0 -148
- package/esm2015/src/entity-metadata/entity-definition.js +0 -26
- package/esm2015/src/entity-metadata/entity-definition.service.js +0 -93
- package/esm2015/src/reducers/entity-cache-reducer.js +0 -271
- package/esm2015/src/reducers/entity-change-tracker-base.js +0 -575
- package/esm2015/src/reducers/entity-collection-reducer-methods.js +0 -784
- package/esm2015/src/selectors/entity-selectors.js +0 -89
- package/fesm2015/ngrx-data.js.map +0 -1
- package/schematics-core/utility/angular-utils.js +0 -33
- package/schematics-core/utility/angular-utils.js.map +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../utils/interfaces";
|
|
4
|
+
/**
|
|
5
|
+
* Known resource URLS for specific entity types.
|
|
6
|
+
* Each entity's resource URLS are endpoints that
|
|
7
|
+
* target single entity and multi-entity HTTP operations.
|
|
8
|
+
* Used by the `DefaultHttpUrlGenerator`.
|
|
9
|
+
*/
|
|
10
|
+
export class EntityHttpResourceUrls {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate the base part of an HTTP URL for
|
|
14
|
+
* single entity or entity collection resource
|
|
15
|
+
*/
|
|
16
|
+
export class HttpUrlGenerator {
|
|
17
|
+
}
|
|
18
|
+
export class DefaultHttpUrlGenerator {
|
|
19
|
+
constructor(pluralizer) {
|
|
20
|
+
this.pluralizer = pluralizer;
|
|
21
|
+
/**
|
|
22
|
+
* Known single-entity and collection resource URLs for HTTP calls.
|
|
23
|
+
* Generator methods returns these resource URLs for a given entity type name.
|
|
24
|
+
* If the resources for an entity type name are not know, it generates
|
|
25
|
+
* and caches a resource name for future use
|
|
26
|
+
*/
|
|
27
|
+
this.knownHttpResourceUrls = {};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get or generate the entity and collection resource URLs for the given entity type name
|
|
31
|
+
* @param entityName {string} Name of the entity type, e.g, 'Hero'
|
|
32
|
+
* @param root {string} Root path to the resource, e.g., 'some-api`
|
|
33
|
+
*/
|
|
34
|
+
getResourceUrls(entityName, root) {
|
|
35
|
+
let resourceUrls = this.knownHttpResourceUrls[entityName];
|
|
36
|
+
if (!resourceUrls) {
|
|
37
|
+
const nRoot = normalizeRoot(root);
|
|
38
|
+
resourceUrls = {
|
|
39
|
+
entityResourceUrl: `${nRoot}/${entityName}/`.toLowerCase(),
|
|
40
|
+
collectionResourceUrl: `${nRoot}/${this.pluralizer.pluralize(entityName)}/`.toLowerCase(),
|
|
41
|
+
};
|
|
42
|
+
this.registerHttpResourceUrls({ [entityName]: resourceUrls });
|
|
43
|
+
}
|
|
44
|
+
return resourceUrls;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create the path to a single entity resource
|
|
48
|
+
* @param entityName {string} Name of the entity type, e.g, 'Hero'
|
|
49
|
+
* @param root {string} Root path to the resource, e.g., 'some-api`
|
|
50
|
+
* @returns complete path to resource, e.g, 'some-api/hero'
|
|
51
|
+
*/
|
|
52
|
+
entityResource(entityName, root) {
|
|
53
|
+
return this.getResourceUrls(entityName, root).entityResourceUrl;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create the path to a multiple entity (collection) resource
|
|
57
|
+
* @param entityName {string} Name of the entity type, e.g, 'Hero'
|
|
58
|
+
* @param root {string} Root path to the resource, e.g., 'some-api`
|
|
59
|
+
* @returns complete path to resource, e.g, 'some-api/heroes'
|
|
60
|
+
*/
|
|
61
|
+
collectionResource(entityName, root) {
|
|
62
|
+
return this.getResourceUrls(entityName, root).collectionResourceUrl;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Register known single-entity and collection resource URLs for HTTP calls
|
|
66
|
+
* @param entityHttpResourceUrls {EntityHttpResourceUrls} resource urls for specific entity type names
|
|
67
|
+
* Well-formed resource urls end in a '/';
|
|
68
|
+
* Note: this method does not ensure that resource urls are well-formed.
|
|
69
|
+
*/
|
|
70
|
+
registerHttpResourceUrls(entityHttpResourceUrls) {
|
|
71
|
+
this.knownHttpResourceUrls = {
|
|
72
|
+
...this.knownHttpResourceUrls,
|
|
73
|
+
...(entityHttpResourceUrls || {}),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** @nocollapse */ /** @nocollapse */ DefaultHttpUrlGenerator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DefaultHttpUrlGenerator, deps: [{ token: i1.Pluralizer }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
78
|
+
/** @nocollapse */ /** @nocollapse */ DefaultHttpUrlGenerator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DefaultHttpUrlGenerator });
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DefaultHttpUrlGenerator, decorators: [{
|
|
80
|
+
type: Injectable
|
|
81
|
+
}], ctorParameters: function () { return [{ type: i1.Pluralizer }]; } });
|
|
82
|
+
/** Remove leading & trailing spaces or slashes */
|
|
83
|
+
export function normalizeRoot(root) {
|
|
84
|
+
return root.replace(/^[/\s]+|[/\s]+$/g, '');
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC11cmwtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhL3NyYy9kYXRhc2VydmljZXMvaHR0cC11cmwtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUczQzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBZ0Isc0JBQXNCO0NBRTNDO0FBdUJEOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsZ0JBQWdCO0NBb0JyQztBQUdELE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVIxQzs7Ozs7V0FLRztRQUNPLDBCQUFxQixHQUEyQixFQUFFLENBQUM7SUFFaEIsQ0FBQztJQUU5Qzs7OztPQUlHO0lBQ08sZUFBZSxDQUN2QixVQUFrQixFQUNsQixJQUFZO1FBRVosSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLFlBQVksR0FBRztnQkFDYixpQkFBaUIsRUFBRSxHQUFHLEtBQUssSUFBSSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFELHFCQUFxQixFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUMxRCxVQUFVLENBQ1gsR0FBRyxDQUFDLFdBQVcsRUFBRTthQUNuQixDQUFDO1lBQ0YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLFVBQWtCLEVBQUUsSUFBWTtRQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFDLFVBQWtCLEVBQUUsSUFBWTtRQUNqRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHdCQUF3QixDQUN0QixzQkFBOEM7UUFFOUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHO1lBQzNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjtZQUM3QixHQUFHLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDO1NBQ2xDLENBQUM7SUFDSixDQUFDOzswSkFuRVUsdUJBQXVCOzhKQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7QUF1RVgsa0RBQWtEO0FBQ2xELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBWTtJQUN4QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsdXJhbGl6ZXIgfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBLbm93biByZXNvdXJjZSBVUkxTIGZvciBzcGVjaWZpYyBlbnRpdHkgdHlwZXMuXG4gKiBFYWNoIGVudGl0eSdzIHJlc291cmNlIFVSTFMgYXJlIGVuZHBvaW50cyB0aGF0XG4gKiB0YXJnZXQgc2luZ2xlIGVudGl0eSBhbmQgbXVsdGktZW50aXR5IEhUVFAgb3BlcmF0aW9ucy5cbiAqIFVzZWQgYnkgdGhlIGBEZWZhdWx0SHR0cFVybEdlbmVyYXRvcmAuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlIdHRwUmVzb3VyY2VVcmxzIHtcbiAgW2VudGl0eU5hbWU6IHN0cmluZ106IEh0dHBSZXNvdXJjZVVybHM7XG59XG5cbi8qKlxuICogUmVzb3VyY2UgVVJMUyBmb3IgSFRUUCBvcGVyYXRpb25zIHRoYXQgdGFyZ2V0IHNpbmdsZSBlbnRpdHlcbiAqIGFuZCBtdWx0aS1lbnRpdHkgZW5kcG9pbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBSZXNvdXJjZVVybHMge1xuICAvKipcbiAgICogVGhlIFVSTCBwYXRoIGZvciBhIHNpbmdsZSBlbnRpdHkgZW5kcG9pbnQsIGUuZywgYHNvbWUtYXBpLXJvb3QvaGVyby9gXG4gICAqIHN1Y2ggYXMgeW91J2QgdXNlIHRvIGFkZCBhIGhlcm8uXG4gICAqIEV4YW1wbGU6IGBodHRwQ2xpZW50LnBvc3Q8SGVybz4oJ3NvbWUtYXBpLXJvb3QvaGVyby8nLCBhZGRlZEhlcm8pYC5cbiAgICogTm90ZSB0cmFpbGluZyBzbGFzaCAoLykuXG4gICAqL1xuICBlbnRpdHlSZXNvdXJjZVVybDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFVSTCBwYXRoIGZvciBhIG11bHRpcGxlLWVudGl0eSBlbmRwb2ludCwgZS5nLCBgc29tZS1hcGktcm9vdC9oZXJvZXMvYFxuICAgKiBzdWNoIGFzIHlvdSdkIHVzZSB3aGVuIGdldHRpbmcgYWxsIGhlcm9lcy5cbiAgICogRXhhbXBsZTogYGh0dHBDbGllbnQuZ2V0PEhlcm9bXT4oJ3NvbWUtYXBpLXJvb3QvaGVyb2VzLycpYFxuICAgKiBOb3RlIHRyYWlsaW5nIHNsYXNoICgvKS5cbiAgICovXG4gIGNvbGxlY3Rpb25SZXNvdXJjZVVybDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIHRoZSBiYXNlIHBhcnQgb2YgYW4gSFRUUCBVUkwgZm9yXG4gKiBzaW5nbGUgZW50aXR5IG9yIGVudGl0eSBjb2xsZWN0aW9uIHJlc291cmNlXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIdHRwVXJsR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgYmFzZSBVUkwgZm9yIGEgc2luZ2xlIGVudGl0eSByZXNvdXJjZSxcbiAgICogZS5nLiwgdGhlIGJhc2UgVVJMIHRvIGdldCBhIHNpbmdsZSBoZXJvIGJ5IGl0cyBpZFxuICAgKi9cbiAgYWJzdHJhY3QgZW50aXR5UmVzb3VyY2UoZW50aXR5TmFtZTogc3RyaW5nLCByb290OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgYmFzZSBVUkwgZm9yIGEgY29sbGVjdGlvbiByZXNvdXJjZSxcbiAgICogZS5nLiwgdGhlIGJhc2UgVVJMIHRvIGdldCBhbGwgaGVyb2VzXG4gICAqL1xuICBhYnN0cmFjdCBjb2xsZWN0aW9uUmVzb3VyY2UoZW50aXR5TmFtZTogc3RyaW5nLCByb290OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGtub3duIHNpbmdsZS1lbnRpdHkgYW5kIGNvbGxlY3Rpb24gcmVzb3VyY2UgVVJMcyBmb3IgSFRUUCBjYWxsc1xuICAgKiBAcGFyYW0gZW50aXR5SHR0cFJlc291cmNlVXJscyB7RW50aXR5SHR0cFJlc291cmNlVXJsc30gcmVzb3VyY2UgdXJscyBmb3Igc3BlY2lmaWMgZW50aXR5IHR5cGUgbmFtZXNcbiAgICovXG4gIGFic3RyYWN0IHJlZ2lzdGVySHR0cFJlc291cmNlVXJscyhcbiAgICBlbnRpdHlIdHRwUmVzb3VyY2VVcmxzPzogRW50aXR5SHR0cFJlc291cmNlVXJsc1xuICApOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEh0dHBVcmxHZW5lcmF0b3IgaW1wbGVtZW50cyBIdHRwVXJsR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEtub3duIHNpbmdsZS1lbnRpdHkgYW5kIGNvbGxlY3Rpb24gcmVzb3VyY2UgVVJMcyBmb3IgSFRUUCBjYWxscy5cbiAgICogR2VuZXJhdG9yIG1ldGhvZHMgcmV0dXJucyB0aGVzZSByZXNvdXJjZSBVUkxzIGZvciBhIGdpdmVuIGVudGl0eSB0eXBlIG5hbWUuXG4gICAqIElmIHRoZSByZXNvdXJjZXMgZm9yIGFuIGVudGl0eSB0eXBlIG5hbWUgYXJlIG5vdCBrbm93LCBpdCBnZW5lcmF0ZXNcbiAgICogYW5kIGNhY2hlcyBhIHJlc291cmNlIG5hbWUgZm9yIGZ1dHVyZSB1c2VcbiAgICovXG4gIHByb3RlY3RlZCBrbm93bkh0dHBSZXNvdXJjZVVybHM6IEVudGl0eUh0dHBSZXNvdXJjZVVybHMgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsdXJhbGl6ZXI6IFBsdXJhbGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIEdldCBvciBnZW5lcmF0ZSB0aGUgZW50aXR5IGFuZCBjb2xsZWN0aW9uIHJlc291cmNlIFVSTHMgZm9yIHRoZSBnaXZlbiBlbnRpdHkgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSBlbnRpdHlOYW1lIHtzdHJpbmd9IE5hbWUgb2YgdGhlIGVudGl0eSB0eXBlLCBlLmcsICdIZXJvJ1xuICAgKiBAcGFyYW0gcm9vdCB7c3RyaW5nfSBSb290IHBhdGggdG8gdGhlIHJlc291cmNlLCBlLmcuLCAnc29tZS1hcGlgXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0UmVzb3VyY2VVcmxzKFxuICAgIGVudGl0eU5hbWU6IHN0cmluZyxcbiAgICByb290OiBzdHJpbmdcbiAgKTogSHR0cFJlc291cmNlVXJscyB7XG4gICAgbGV0IHJlc291cmNlVXJscyA9IHRoaXMua25vd25IdHRwUmVzb3VyY2VVcmxzW2VudGl0eU5hbWVdO1xuICAgIGlmICghcmVzb3VyY2VVcmxzKSB7XG4gICAgICBjb25zdCBuUm9vdCA9IG5vcm1hbGl6ZVJvb3Qocm9vdCk7XG4gICAgICByZXNvdXJjZVVybHMgPSB7XG4gICAgICAgIGVudGl0eVJlc291cmNlVXJsOiBgJHtuUm9vdH0vJHtlbnRpdHlOYW1lfS9gLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIGNvbGxlY3Rpb25SZXNvdXJjZVVybDogYCR7blJvb3R9LyR7dGhpcy5wbHVyYWxpemVyLnBsdXJhbGl6ZShcbiAgICAgICAgICBlbnRpdHlOYW1lXG4gICAgICAgICl9L2AudG9Mb3dlckNhc2UoKSxcbiAgICAgIH07XG4gICAgICB0aGlzLnJlZ2lzdGVySHR0cFJlc291cmNlVXJscyh7IFtlbnRpdHlOYW1lXTogcmVzb3VyY2VVcmxzIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VVcmxzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgcGF0aCB0byBhIHNpbmdsZSBlbnRpdHkgcmVzb3VyY2VcbiAgICogQHBhcmFtIGVudGl0eU5hbWUge3N0cmluZ30gTmFtZSBvZiB0aGUgZW50aXR5IHR5cGUsIGUuZywgJ0hlcm8nXG4gICAqIEBwYXJhbSByb290IHtzdHJpbmd9IFJvb3QgcGF0aCB0byB0aGUgcmVzb3VyY2UsIGUuZy4sICdzb21lLWFwaWBcbiAgICogQHJldHVybnMgY29tcGxldGUgcGF0aCB0byByZXNvdXJjZSwgZS5nLCAnc29tZS1hcGkvaGVybydcbiAgICovXG4gIGVudGl0eVJlc291cmNlKGVudGl0eU5hbWU6IHN0cmluZywgcm9vdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZVVybHMoZW50aXR5TmFtZSwgcm9vdCkuZW50aXR5UmVzb3VyY2VVcmw7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBwYXRoIHRvIGEgbXVsdGlwbGUgZW50aXR5IChjb2xsZWN0aW9uKSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZW50aXR5TmFtZSB7c3RyaW5nfSBOYW1lIG9mIHRoZSBlbnRpdHkgdHlwZSwgZS5nLCAnSGVybydcbiAgICogQHBhcmFtIHJvb3Qge3N0cmluZ30gUm9vdCBwYXRoIHRvIHRoZSByZXNvdXJjZSwgZS5nLiwgJ3NvbWUtYXBpYFxuICAgKiBAcmV0dXJucyBjb21wbGV0ZSBwYXRoIHRvIHJlc291cmNlLCBlLmcsICdzb21lLWFwaS9oZXJvZXMnXG4gICAqL1xuICBjb2xsZWN0aW9uUmVzb3VyY2UoZW50aXR5TmFtZTogc3RyaW5nLCByb290OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlVXJscyhlbnRpdHlOYW1lLCByb290KS5jb2xsZWN0aW9uUmVzb3VyY2VVcmw7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIga25vd24gc2luZ2xlLWVudGl0eSBhbmQgY29sbGVjdGlvbiByZXNvdXJjZSBVUkxzIGZvciBIVFRQIGNhbGxzXG4gICAqIEBwYXJhbSBlbnRpdHlIdHRwUmVzb3VyY2VVcmxzIHtFbnRpdHlIdHRwUmVzb3VyY2VVcmxzfSByZXNvdXJjZSB1cmxzIGZvciBzcGVjaWZpYyBlbnRpdHkgdHlwZSBuYW1lc1xuICAgKiBXZWxsLWZvcm1lZCByZXNvdXJjZSB1cmxzIGVuZCBpbiBhICcvJztcbiAgICogTm90ZTogdGhpcyBtZXRob2QgZG9lcyBub3QgZW5zdXJlIHRoYXQgcmVzb3VyY2UgdXJscyBhcmUgd2VsbC1mb3JtZWQuXG4gICAqL1xuICByZWdpc3Rlckh0dHBSZXNvdXJjZVVybHMoXG4gICAgZW50aXR5SHR0cFJlc291cmNlVXJsczogRW50aXR5SHR0cFJlc291cmNlVXJsc1xuICApOiB2b2lkIHtcbiAgICB0aGlzLmtub3duSHR0cFJlc291cmNlVXJscyA9IHtcbiAgICAgIC4uLnRoaXMua25vd25IdHRwUmVzb3VyY2VVcmxzLFxuICAgICAgLi4uKGVudGl0eUh0dHBSZXNvdXJjZVVybHMgfHwge30pLFxuICAgIH07XG4gIH1cbn1cblxuLyoqIFJlbW92ZSBsZWFkaW5nICYgdHJhaWxpbmcgc3BhY2VzIG9yIHNsYXNoZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVSb290KHJvb3Q6IHN0cmluZykge1xuICByZXR1cm4gcm9vdC5yZXBsYWNlKC9eWy9cXHNdK3xbL1xcc10rJC9nLCAnJyk7XG59XG4iXX0=
|
|
File without changes
|
|
@@ -41,9 +41,9 @@ export class DefaultPersistenceResultHandler {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
/** @nocollapse */ DefaultPersistenceResultHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
45
|
-
/** @nocollapse */ DefaultPersistenceResultHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
44
|
+
/** @nocollapse */ /** @nocollapse */ DefaultPersistenceResultHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DefaultPersistenceResultHandler, deps: [{ token: i1.Logger }, { token: i2.EntityActionFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
+
/** @nocollapse */ /** @nocollapse */ DefaultPersistenceResultHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DefaultPersistenceResultHandler });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DefaultPersistenceResultHandler, decorators: [{
|
|
47
47
|
type: Injectable
|
|
48
48
|
}], ctorParameters: function () { return [{ type: i1.Logger }, { type: i2.EntityActionFactory }]; } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2UtcmVzdWx0LWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9zcmMvZGF0YXNlcnZpY2VzL3BlcnNpc3RlbmNlLXJlc3VsdC1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQ0wsZ0JBQWdCLEdBRWpCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUdsRTs7R0FFRztBQUNILE1BQU0sT0FBZ0Isd0JBQXdCO0NBVTdDO0FBRUQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUNVLE1BQWMsRUFDZCxtQkFBd0M7UUFEeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7SUFDL0MsQ0FBQztJQUVKLDJFQUEyRTtJQUMzRSxhQUFhLENBQUMsY0FBNEI7UUFDeEMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUU7WUFDeEQsUUFBUSxFQUFFLFNBQVM7WUFDbkIsSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsV0FBVyxDQUNULGNBQTRCO1FBSTVCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdELE9BQU8sQ0FBQyxHQUE2QixFQUFFLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQ1QsR0FBRyxZQUFZLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzFFLE1BQU0sU0FBUyxHQUFpQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBRXRELGNBQWMsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQUNKLENBQUM7O2tLQXRDVSwrQkFBK0I7c0tBQS9CLCtCQUErQjsyRkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQge1xuICBEYXRhU2VydmljZUVycm9yLFxuICBFbnRpdHlBY3Rpb25EYXRhU2VydmljZUVycm9yLFxufSBmcm9tICcuL2RhdGEtc2VydmljZS1lcnJvcic7XG5pbXBvcnQgeyBFbnRpdHlBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL2VudGl0eS1hY3Rpb24nO1xuaW1wb3J0IHsgRW50aXR5QWN0aW9uRmFjdG9yeSB9IGZyb20gJy4uL2FjdGlvbnMvZW50aXR5LWFjdGlvbi1mYWN0b3J5JztcbmltcG9ydCB7IG1ha2VFcnJvck9wLCBtYWtlU3VjY2Vzc09wIH0gZnJvbSAnLi4vYWN0aW9ucy9lbnRpdHktb3AnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogSGFuZGxpbmcgb2YgcmVzcG9uc2VzIGZyb20gcGVyc2lzdGVuY2Ugb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQZXJzaXN0ZW5jZVJlc3VsdEhhbmRsZXIge1xuICAvKiogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVzdWx0IG9mIHBlcnNpc3RlbmNlIG9wZXJhdGlvbiBmb3IgYW4gYWN0aW9uICovXG4gIGFic3RyYWN0IGhhbmRsZVN1Y2Nlc3Mob3JpZ2luYWxBY3Rpb246IEVudGl0eUFjdGlvbik6IChkYXRhOiBhbnkpID0+IEFjdGlvbjtcblxuICAvKiogSGFuZGxlIGVycm9yIHJlc3VsdCBvZiBwZXJzaXN0ZW5jZSBvcGVyYXRpb24gZm9yIGFuIGFjdGlvbiAqL1xuICBhYnN0cmFjdCBoYW5kbGVFcnJvcihcbiAgICBvcmlnaW5hbEFjdGlvbjogRW50aXR5QWN0aW9uXG4gICk6IChcbiAgICBlcnJvcjogRGF0YVNlcnZpY2VFcnJvciB8IEVycm9yXG4gICkgPT4gRW50aXR5QWN0aW9uPEVudGl0eUFjdGlvbkRhdGFTZXJ2aWNlRXJyb3I+O1xufVxuXG4vKipcbiAqIERlZmF1bHQgaGFuZGxpbmcgb2YgcmVzcG9uc2VzIGZyb20gcGVyc2lzdGVuY2Ugb3BlcmF0aW9uLFxuICogc3BlY2lmaWNhbGx5IGFuIEVudGl0eURhdGFTZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGVyc2lzdGVuY2VSZXN1bHRIYW5kbGVyXG4gIGltcGxlbWVudHMgUGVyc2lzdGVuY2VSZXN1bHRIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwcml2YXRlIGVudGl0eUFjdGlvbkZhY3Rvcnk6IEVudGl0eUFjdGlvbkZhY3RvcnlcbiAgKSB7fVxuXG4gIC8qKiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXN1bHQgb2YgcGVyc2lzdGVuY2Ugb3BlcmF0aW9uIG9uIGFuIEVudGl0eUFjdGlvbiAqL1xuICBoYW5kbGVTdWNjZXNzKG9yaWdpbmFsQWN0aW9uOiBFbnRpdHlBY3Rpb24pOiAoZGF0YTogYW55KSA9PiBBY3Rpb24ge1xuICAgIGNvbnN0IHN1Y2Nlc3NPcCA9IG1ha2VTdWNjZXNzT3Aob3JpZ2luYWxBY3Rpb24ucGF5bG9hZC5lbnRpdHlPcCk7XG4gICAgcmV0dXJuIChkYXRhOiBhbnkpID0+XG4gICAgICB0aGlzLmVudGl0eUFjdGlvbkZhY3RvcnkuY3JlYXRlRnJvbUFjdGlvbihvcmlnaW5hbEFjdGlvbiwge1xuICAgICAgICBlbnRpdHlPcDogc3VjY2Vzc09wLFxuICAgICAgICBkYXRhLFxuICAgICAgfSk7XG4gIH1cblxuICAvKiogSGFuZGxlIGVycm9yIHJlc3VsdCBvZiBwZXJzaXN0ZW5jZSBvcGVyYXRpb24gb24gYW4gRW50aXR5QWN0aW9uICovXG4gIGhhbmRsZUVycm9yKFxuICAgIG9yaWdpbmFsQWN0aW9uOiBFbnRpdHlBY3Rpb25cbiAgKTogKFxuICAgIGVycm9yOiBEYXRhU2VydmljZUVycm9yIHwgRXJyb3JcbiAgKSA9PiBFbnRpdHlBY3Rpb248RW50aXR5QWN0aW9uRGF0YVNlcnZpY2VFcnJvcj4ge1xuICAgIGNvbnN0IGVycm9yT3AgPSBtYWtlRXJyb3JPcChvcmlnaW5hbEFjdGlvbi5wYXlsb2FkLmVudGl0eU9wKTtcblxuICAgIHJldHVybiAoZXJyOiBEYXRhU2VydmljZUVycm9yIHwgRXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yID1cbiAgICAgICAgZXJyIGluc3RhbmNlb2YgRGF0YVNlcnZpY2VFcnJvciA/IGVyciA6IG5ldyBEYXRhU2VydmljZUVycm9yKGVyciwgbnVsbCk7XG4gICAgICBjb25zdCBlcnJvckRhdGE6IEVudGl0eUFjdGlvbkRhdGFTZXJ2aWNlRXJyb3IgPSB7IGVycm9yLCBvcmlnaW5hbEFjdGlvbiB9O1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZXJyb3JEYXRhKTtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZW50aXR5QWN0aW9uRmFjdG9yeS5jcmVhdGVGcm9tQWN0aW9uPFxuICAgICAgICBFbnRpdHlBY3Rpb25EYXRhU2VydmljZUVycm9yXG4gICAgICA+KG9yaWdpbmFsQWN0aW9uLCB7XG4gICAgICAgIGVudGl0eU9wOiBlcnJvck9wLFxuICAgICAgICBkYXRhOiBlcnJvckRhdGEsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { ScannedActionsSubject } from '@ngrx/store';
|
|
3
|
+
import { of, throwError } from 'rxjs';
|
|
4
|
+
import { filter, mergeMap, shareReplay, take } from 'rxjs/operators';
|
|
5
|
+
import { PersistanceCanceled } from './entity-dispatcher';
|
|
6
|
+
import { ClearCollections, EntityCacheAction, LoadCollections, MergeQuerySet, SetEntityCache, SaveEntities, SaveEntitiesCancel, } from '../actions/entity-cache-action';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../utils/correlation-id-generator";
|
|
9
|
+
import * as i2 from "./entity-dispatcher-default-options";
|
|
10
|
+
import * as i3 from "@ngrx/store";
|
|
11
|
+
import * as i4 from "rxjs";
|
|
12
|
+
/**
|
|
13
|
+
* Dispatches Entity Cache actions to the EntityCache reducer
|
|
14
|
+
*/
|
|
15
|
+
export class EntityCacheDispatcher {
|
|
16
|
+
constructor(
|
|
17
|
+
/** Generates correlation ids for query and save methods */
|
|
18
|
+
correlationIdGenerator,
|
|
19
|
+
/**
|
|
20
|
+
* Dispatcher options configure dispatcher behavior such as
|
|
21
|
+
* whether add is optimistic or pessimistic by default.
|
|
22
|
+
*/
|
|
23
|
+
defaultDispatcherOptions,
|
|
24
|
+
/** Actions scanned by the store after it processed them with reducers. */
|
|
25
|
+
scannedActions$,
|
|
26
|
+
/** The store, scoped to the EntityCache */
|
|
27
|
+
store) {
|
|
28
|
+
this.correlationIdGenerator = correlationIdGenerator;
|
|
29
|
+
this.defaultDispatcherOptions = defaultDispatcherOptions;
|
|
30
|
+
this.store = store;
|
|
31
|
+
// Replay because sometimes in tests will fake data service with synchronous observable
|
|
32
|
+
// which makes subscriber miss the dispatched actions.
|
|
33
|
+
// Of course that's a testing mistake. But easy to forget, leading to painful debugging.
|
|
34
|
+
this.reducedActions$ = scannedActions$.pipe(shareReplay(1));
|
|
35
|
+
// Start listening so late subscriber won't miss the most recent action.
|
|
36
|
+
this.raSubscription = this.reducedActions$.subscribe();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Dispatch an Action to the store.
|
|
40
|
+
* @param action the Action
|
|
41
|
+
* @returns the dispatched Action
|
|
42
|
+
*/
|
|
43
|
+
dispatch(action) {
|
|
44
|
+
this.store.dispatch(action);
|
|
45
|
+
return action;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Dispatch action to cancel the saveEntities request with matching correlation id.
|
|
49
|
+
* @param correlationId The correlation id for the corresponding action
|
|
50
|
+
* @param [reason] explains why canceled and by whom.
|
|
51
|
+
* @param [entityNames] array of entity names so can turn off loading flag for their collections.
|
|
52
|
+
* @param [tag] tag to identify the operation from the app perspective.
|
|
53
|
+
*/
|
|
54
|
+
cancelSaveEntities(correlationId, reason, entityNames, tag) {
|
|
55
|
+
if (!correlationId) {
|
|
56
|
+
throw new Error('Missing correlationId');
|
|
57
|
+
}
|
|
58
|
+
const action = new SaveEntitiesCancel(correlationId, reason, entityNames, tag);
|
|
59
|
+
this.dispatch(action);
|
|
60
|
+
}
|
|
61
|
+
/** Clear the named entity collections in cache
|
|
62
|
+
* @param [collections] Array of names of the collections to clear.
|
|
63
|
+
* If empty array, does nothing. If null/undefined/no array, clear all collections.
|
|
64
|
+
* @param [tag] tag to identify the operation from the app perspective.
|
|
65
|
+
*/
|
|
66
|
+
clearCollections(collections, tag) {
|
|
67
|
+
this.dispatch(new ClearCollections(collections, tag));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Load multiple entity collections at the same time.
|
|
71
|
+
* before any selectors$ observables emit.
|
|
72
|
+
* @param collections The collections to load, typically the result of a query.
|
|
73
|
+
* @param [tag] tag to identify the operation from the app perspective.
|
|
74
|
+
* in the form of a map of entity collections.
|
|
75
|
+
*/
|
|
76
|
+
loadCollections(collections, tag) {
|
|
77
|
+
this.dispatch(new LoadCollections(collections, tag));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Merges entities from a query result
|
|
81
|
+
* that returned entities from multiple collections.
|
|
82
|
+
* Corresponding entity cache reducer should add and update all collections
|
|
83
|
+
* at the same time, before any selectors$ observables emit.
|
|
84
|
+
* @param querySet The result of the query in the form of a map of entity collections.
|
|
85
|
+
* These are the entity data to merge into the respective collections.
|
|
86
|
+
* @param mergeStrategy How to merge a queried entity when it is already in the collection.
|
|
87
|
+
* The default is MergeStrategy.PreserveChanges
|
|
88
|
+
* @param [tag] tag to identify the operation from the app perspective.
|
|
89
|
+
*/
|
|
90
|
+
mergeQuerySet(querySet, mergeStrategy, tag) {
|
|
91
|
+
this.dispatch(new MergeQuerySet(querySet, mergeStrategy, tag));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create entity cache action for replacing the entire entity cache.
|
|
95
|
+
* Dangerous because brute force but useful as when re-hydrating an EntityCache
|
|
96
|
+
* from local browser storage when the application launches.
|
|
97
|
+
* @param cache New state of the entity cache
|
|
98
|
+
* @param [tag] tag to identify the operation from the app perspective.
|
|
99
|
+
*/
|
|
100
|
+
setEntityCache(cache, tag) {
|
|
101
|
+
this.dispatch(new SetEntityCache(cache, tag));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Dispatch action to save multiple entity changes to remote storage.
|
|
105
|
+
* Relies on an Ngrx Effect such as EntityEffects.saveEntities$.
|
|
106
|
+
* Important: only call if your server supports the SaveEntities protocol
|
|
107
|
+
* through your EntityDataService.saveEntities method.
|
|
108
|
+
* @param changes Either the entities to save, as an array of {ChangeSetItem}, or
|
|
109
|
+
* a ChangeSet that holds such changes.
|
|
110
|
+
* @param url The server url which receives the save request
|
|
111
|
+
* @param [options] options such as tag, correlationId, isOptimistic, and mergeStrategy.
|
|
112
|
+
* These values are defaulted if not supplied.
|
|
113
|
+
* @returns A terminating Observable<ChangeSet> with data returned from the server
|
|
114
|
+
* after server reports successful save OR the save error.
|
|
115
|
+
* TODO: should return the matching entities from cache rather than the raw server data.
|
|
116
|
+
*/
|
|
117
|
+
saveEntities(changes, url, options) {
|
|
118
|
+
const changeSet = Array.isArray(changes) ? { changes } : changes;
|
|
119
|
+
options = options || {};
|
|
120
|
+
const correlationId = options.correlationId == null
|
|
121
|
+
? this.correlationIdGenerator.next()
|
|
122
|
+
: options.correlationId;
|
|
123
|
+
const isOptimistic = options.isOptimistic == null
|
|
124
|
+
? this.defaultDispatcherOptions.optimisticSaveEntities || false
|
|
125
|
+
: options.isOptimistic === true;
|
|
126
|
+
const tag = options.tag || 'Save Entities';
|
|
127
|
+
options = { ...options, correlationId, isOptimistic, tag };
|
|
128
|
+
const action = new SaveEntities(changeSet, url, options);
|
|
129
|
+
this.dispatch(action);
|
|
130
|
+
return this.getSaveEntitiesResponseData$(options.correlationId).pipe(shareReplay(1));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Return Observable of data from the server-success SaveEntities action with
|
|
134
|
+
* the given Correlation Id, after that action was processed by the ngrx store.
|
|
135
|
+
* or else put the server error on the Observable error channel.
|
|
136
|
+
* @param crid The correlationId for both the save and response actions.
|
|
137
|
+
*/
|
|
138
|
+
getSaveEntitiesResponseData$(crid) {
|
|
139
|
+
/**
|
|
140
|
+
* reducedActions$ must be replay observable of the most recent action reduced by the store.
|
|
141
|
+
* because the response action might have been dispatched to the store
|
|
142
|
+
* before caller had a chance to subscribe.
|
|
143
|
+
*/
|
|
144
|
+
return this.reducedActions$.pipe(filter((act) => act.type === EntityCacheAction.SAVE_ENTITIES_SUCCESS ||
|
|
145
|
+
act.type === EntityCacheAction.SAVE_ENTITIES_ERROR ||
|
|
146
|
+
act.type === EntityCacheAction.SAVE_ENTITIES_CANCEL), filter((act) => crid === act.payload.correlationId), take(1), mergeMap((act) => {
|
|
147
|
+
return act.type === EntityCacheAction.SAVE_ENTITIES_CANCEL
|
|
148
|
+
? throwError(new PersistanceCanceled(act.payload.reason))
|
|
149
|
+
: act.type === EntityCacheAction.SAVE_ENTITIES_SUCCESS
|
|
150
|
+
? of(act.payload.changeSet)
|
|
151
|
+
: throwError(act.payload);
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** @nocollapse */ /** @nocollapse */ EntityCacheDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EntityCacheDispatcher, deps: [{ token: i1.CorrelationIdGenerator }, { token: i2.EntityDispatcherDefaultOptions }, { token: ScannedActionsSubject }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
156
|
+
/** @nocollapse */ /** @nocollapse */ EntityCacheDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EntityCacheDispatcher });
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EntityCacheDispatcher, decorators: [{
|
|
158
|
+
type: Injectable
|
|
159
|
+
}], ctorParameters: function () { return [{ type: i1.CorrelationIdGenerator }, { type: i2.EntityDispatcherDefaultOptions }, { type: i4.Observable, decorators: [{
|
|
160
|
+
type: Inject,
|
|
161
|
+
args: [ScannedActionsSubject]
|
|
162
|
+
}] }, { type: i3.Store }]; } });
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNhY2hlLWRpc3BhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvc3JjL2Rpc3BhdGNoZXJzL2VudGl0eS1jYWNoZS1kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxxQkFBcUIsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUVuRSxPQUFPLEVBQWMsRUFBRSxFQUFnQixVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzFELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBRWpCLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFlBQVksRUFDWixrQkFBa0IsR0FHbkIsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBRXhDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQztJQUNFLDJEQUEyRDtJQUNuRCxzQkFBOEM7SUFDdEQ7OztPQUdHO0lBQ0ssd0JBQXdEO0lBQ2hFLDBFQUEwRTtJQUMzQyxlQUFtQztJQUNsRSwyQ0FBMkM7SUFDbkMsS0FBeUI7UUFUekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUs5Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQWdDO1FBSXhELFVBQUssR0FBTCxLQUFLLENBQW9CO1FBRWpDLHVGQUF1RjtRQUN2RixzREFBc0Q7UUFDdEQsd0ZBQXdGO1FBQ3hGLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTY2FubmVkQWN0aW9uc1N1YmplY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlTWFwLCBzaGFyZVJlcGxheSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29ycmVsYXRpb25JZEdlbmVyYXRvciB9IGZyb20gJy4uL3V0aWxzL2NvcnJlbGF0aW9uLWlkLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBFbnRpdHlBY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy9lbnRpdHktYWN0aW9uJztcbmltcG9ydCB7IEVudGl0eUNhY2hlIH0gZnJvbSAnLi4vcmVkdWNlcnMvZW50aXR5LWNhY2hlJztcbmltcG9ydCB7IEVudGl0eURpc3BhdGNoZXJEZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4vZW50aXR5LWRpc3BhdGNoZXItZGVmYXVsdC1vcHRpb25zJztcblxuaW1wb3J0IHsgTWVyZ2VTdHJhdGVneSB9IGZyb20gJy4uL2FjdGlvbnMvbWVyZ2Utc3RyYXRlZ3knO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VDYW5jZWxlZCB9IGZyb20gJy4vZW50aXR5LWRpc3BhdGNoZXInO1xuXG5pbXBvcnQgeyBDaGFuZ2VTZXQsIENoYW5nZVNldEl0ZW0gfSBmcm9tICcuLi9hY3Rpb25zL2VudGl0eS1jYWNoZS1jaGFuZ2Utc2V0JztcbmltcG9ydCB7XG4gIENsZWFyQ29sbGVjdGlvbnMsXG4gIEVudGl0eUNhY2hlQWN0aW9uLFxuICBFbnRpdHlDYWNoZVF1ZXJ5U2V0LFxuICBMb2FkQ29sbGVjdGlvbnMsXG4gIE1lcmdlUXVlcnlTZXQsXG4gIFNldEVudGl0eUNhY2hlLFxuICBTYXZlRW50aXRpZXMsXG4gIFNhdmVFbnRpdGllc0NhbmNlbCxcbiAgU2F2ZUVudGl0aWVzRXJyb3IsXG4gIFNhdmVFbnRpdGllc1N1Y2Nlc3MsXG59IGZyb20gJy4uL2FjdGlvbnMvZW50aXR5LWNhY2hlLWFjdGlvbic7XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBFbnRpdHkgQ2FjaGUgYWN0aW9ucyB0byB0aGUgRW50aXR5Q2FjaGUgcmVkdWNlclxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW50aXR5Q2FjaGVEaXNwYXRjaGVyIHtcbiAgLyoqXG4gICAqIEFjdGlvbnMgc2Nhbm5lZCBieSB0aGUgc3RvcmUgYWZ0ZXIgaXQgcHJvY2Vzc2VkIHRoZW0gd2l0aCByZWR1Y2Vycy5cbiAgICogQSByZXBsYXkgb2JzZXJ2YWJsZSBvZiB0aGUgbW9zdCByZWNlbnQgYWN0aW9uIHJlZHVjZWQgYnkgdGhlIHN0b3JlLlxuICAgKi9cbiAgcmVkdWNlZEFjdGlvbnMkOiBPYnNlcnZhYmxlPEFjdGlvbj47XG4gIHByaXZhdGUgcmFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogR2VuZXJhdGVzIGNvcnJlbGF0aW9uIGlkcyBmb3IgcXVlcnkgYW5kIHNhdmUgbWV0aG9kcyAqL1xuICAgIHByaXZhdGUgY29ycmVsYXRpb25JZEdlbmVyYXRvcjogQ29ycmVsYXRpb25JZEdlbmVyYXRvcixcbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVyIG9wdGlvbnMgY29uZmlndXJlIGRpc3BhdGNoZXIgYmVoYXZpb3Igc3VjaCBhc1xuICAgICAqIHdoZXRoZXIgYWRkIGlzIG9wdGltaXN0aWMgb3IgcGVzc2ltaXN0aWMgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGRlZmF1bHREaXNwYXRjaGVyT3B0aW9uczogRW50aXR5RGlzcGF0Y2hlckRlZmF1bHRPcHRpb25zLFxuICAgIC8qKiBBY3Rpb25zIHNjYW5uZWQgYnkgdGhlIHN0b3JlIGFmdGVyIGl0IHByb2Nlc3NlZCB0aGVtIHdpdGggcmVkdWNlcnMuICovXG4gICAgQEluamVjdChTY2FubmVkQWN0aW9uc1N1YmplY3QpIHNjYW5uZWRBY3Rpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb24+LFxuICAgIC8qKiBUaGUgc3RvcmUsIHNjb3BlZCB0byB0aGUgRW50aXR5Q2FjaGUgKi9cbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxFbnRpdHlDYWNoZT5cbiAgKSB7XG4gICAgLy8gUmVwbGF5IGJlY2F1c2Ugc29tZXRpbWVzIGluIHRlc3RzIHdpbGwgZmFrZSBkYXRhIHNlcnZpY2Ugd2l0aCBzeW5jaHJvbm91cyBvYnNlcnZhYmxlXG4gICAgLy8gd2hpY2ggbWFrZXMgc3Vic2NyaWJlciBtaXNzIHRoZSBkaXNwYXRjaGVkIGFjdGlvbnMuXG4gICAgLy8gT2YgY291cnNlIHRoYXQncyBhIHRlc3RpbmcgbWlzdGFrZS4gQnV0IGVhc3kgdG8gZm9yZ2V0LCBsZWFkaW5nIHRvIHBhaW5mdWwgZGVidWdnaW5nLlxuICAgIHRoaXMucmVkdWNlZEFjdGlvbnMkID0gc2Nhbm5lZEFjdGlvbnMkLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgIC8vIFN0YXJ0IGxpc3RlbmluZyBzbyBsYXRlIHN1YnNjcmliZXIgd29uJ3QgbWlzcyB0aGUgbW9zdCByZWNlbnQgYWN0aW9uLlxuICAgIHRoaXMucmFTdWJzY3JpcHRpb24gPSB0aGlzLnJlZHVjZWRBY3Rpb25zJC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBhbiBBY3Rpb24gdG8gdGhlIHN0b3JlLlxuICAgKiBAcGFyYW0gYWN0aW9uIHRoZSBBY3Rpb25cbiAgICogQHJldHVybnMgdGhlIGRpc3BhdGNoZWQgQWN0aW9uXG4gICAqL1xuICBkaXNwYXRjaChhY3Rpb246IEFjdGlvbik6IEFjdGlvbiB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChhY3Rpb24pO1xuICAgIHJldHVybiBhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggYWN0aW9uIHRvIGNhbmNlbCB0aGUgc2F2ZUVudGl0aWVzIHJlcXVlc3Qgd2l0aCBtYXRjaGluZyBjb3JyZWxhdGlvbiBpZC5cbiAgICogQHBhcmFtIGNvcnJlbGF0aW9uSWQgVGhlIGNvcnJlbGF0aW9uIGlkIGZvciB0aGUgY29ycmVzcG9uZGluZyBhY3Rpb25cbiAgICogQHBhcmFtIFtyZWFzb25dIGV4cGxhaW5zIHdoeSBjYW5jZWxlZCBhbmQgYnkgd2hvbS5cbiAgICogQHBhcmFtIFtlbnRpdHlOYW1lc10gYXJyYXkgb2YgZW50aXR5IG5hbWVzIHNvIGNhbiB0dXJuIG9mZiBsb2FkaW5nIGZsYWcgZm9yIHRoZWlyIGNvbGxlY3Rpb25zLlxuICAgKiBAcGFyYW0gW3RhZ10gdGFnIHRvIGlkZW50aWZ5IHRoZSBvcGVyYXRpb24gZnJvbSB0aGUgYXBwIHBlcnNwZWN0aXZlLlxuICAgKi9cbiAgY2FuY2VsU2F2ZUVudGl0aWVzKFxuICAgIGNvcnJlbGF0aW9uSWQ6IGFueSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICAgZW50aXR5TmFtZXM/OiBzdHJpbmdbXSxcbiAgICB0YWc/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjb3JyZWxhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgY29ycmVsYXRpb25JZCcpO1xuICAgIH1cbiAgICBjb25zdCBhY3Rpb24gPSBuZXcgU2F2ZUVudGl0aWVzQ2FuY2VsKFxuICAgICAgY29ycmVsYXRpb25JZCxcbiAgICAgIHJlYXNvbixcbiAgICAgIGVudGl0eU5hbWVzLFxuICAgICAgdGFnXG4gICAgKTtcbiAgICB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH1cblxuICAvKiogQ2xlYXIgdGhlIG5hbWVkIGVudGl0eSBjb2xsZWN0aW9ucyBpbiBjYWNoZVxuICAgKiBAcGFyYW0gW2NvbGxlY3Rpb25zXSBBcnJheSBvZiBuYW1lcyBvZiB0aGUgY29sbGVjdGlvbnMgdG8gY2xlYXIuXG4gICAqIElmIGVtcHR5IGFycmF5LCBkb2VzIG5vdGhpbmcuIElmIG51bGwvdW5kZWZpbmVkL25vIGFycmF5LCBjbGVhciBhbGwgY29sbGVjdGlvbnMuXG4gICAqIEBwYXJhbSBbdGFnXSB0YWcgdG8gaWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBmcm9tIHRoZSBhcHAgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBjbGVhckNvbGxlY3Rpb25zKGNvbGxlY3Rpb25zPzogc3RyaW5nW10sIHRhZz86IHN0cmluZykge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IENsZWFyQ29sbGVjdGlvbnMoY29sbGVjdGlvbnMsIHRhZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgbXVsdGlwbGUgZW50aXR5IGNvbGxlY3Rpb25zIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqIGJlZm9yZSBhbnkgc2VsZWN0b3JzJCBvYnNlcnZhYmxlcyBlbWl0LlxuICAgKiBAcGFyYW0gY29sbGVjdGlvbnMgVGhlIGNvbGxlY3Rpb25zIHRvIGxvYWQsIHR5cGljYWxseSB0aGUgcmVzdWx0IG9mIGEgcXVlcnkuXG4gICAqIEBwYXJhbSBbdGFnXSB0YWcgdG8gaWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBmcm9tIHRoZSBhcHAgcGVyc3BlY3RpdmUuXG4gICAqIGluIHRoZSBmb3JtIG9mIGEgbWFwIG9mIGVudGl0eSBjb2xsZWN0aW9ucy5cbiAgICovXG4gIGxvYWRDb2xsZWN0aW9ucyhjb2xsZWN0aW9uczogRW50aXR5Q2FjaGVRdWVyeVNldCwgdGFnPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwYXRjaChuZXcgTG9hZENvbGxlY3Rpb25zKGNvbGxlY3Rpb25zLCB0YWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgZW50aXRpZXMgZnJvbSBhIHF1ZXJ5IHJlc3VsdFxuICAgKiB0aGF0IHJldHVybmVkIGVudGl0aWVzIGZyb20gbXVsdGlwbGUgY29sbGVjdGlvbnMuXG4gICAqIENvcnJlc3BvbmRpbmcgZW50aXR5IGNhY2hlIHJlZHVjZXIgc2hvdWxkIGFkZCBhbmQgdXBkYXRlIGFsbCBjb2xsZWN0aW9uc1xuICAgKiBhdCB0aGUgc2FtZSB0aW1lLCBiZWZvcmUgYW55IHNlbGVjdG9ycyQgb2JzZXJ2YWJsZXMgZW1pdC5cbiAgICogQHBhcmFtIHF1ZXJ5U2V0IFRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5IGluIHRoZSBmb3JtIG9mIGEgbWFwIG9mIGVudGl0eSBjb2xsZWN0aW9ucy5cbiAgICogVGhlc2UgYXJlIHRoZSBlbnRpdHkgZGF0YSB0byBtZXJnZSBpbnRvIHRoZSByZXNwZWN0aXZlIGNvbGxlY3Rpb25zLlxuICAgKiBAcGFyYW0gbWVyZ2VTdHJhdGVneSBIb3cgdG8gbWVyZ2UgYSBxdWVyaWVkIGVudGl0eSB3aGVuIGl0IGlzIGFscmVhZHkgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAqIFRoZSBkZWZhdWx0IGlzIE1lcmdlU3RyYXRlZ3kuUHJlc2VydmVDaGFuZ2VzXG4gICAqIEBwYXJhbSBbdGFnXSB0YWcgdG8gaWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBmcm9tIHRoZSBhcHAgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBtZXJnZVF1ZXJ5U2V0KFxuICAgIHF1ZXJ5U2V0OiBFbnRpdHlDYWNoZVF1ZXJ5U2V0LFxuICAgIG1lcmdlU3RyYXRlZ3k/OiBNZXJnZVN0cmF0ZWd5LFxuICAgIHRhZz86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBNZXJnZVF1ZXJ5U2V0KHF1ZXJ5U2V0LCBtZXJnZVN0cmF0ZWd5LCB0YWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgZW50aXR5IGNhY2hlIGFjdGlvbiBmb3IgcmVwbGFjaW5nIHRoZSBlbnRpcmUgZW50aXR5IGNhY2hlLlxuICAgKiBEYW5nZXJvdXMgYmVjYXVzZSBicnV0ZSBmb3JjZSBidXQgdXNlZnVsIGFzIHdoZW4gcmUtaHlkcmF0aW5nIGFuIEVudGl0eUNhY2hlXG4gICAqIGZyb20gbG9jYWwgYnJvd3NlciBzdG9yYWdlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVzLlxuICAgKiBAcGFyYW0gY2FjaGUgTmV3IHN0YXRlIG9mIHRoZSBlbnRpdHkgY2FjaGVcbiAgICogQHBhcmFtIFt0YWddIHRhZyB0byBpZGVudGlmeSB0aGUgb3BlcmF0aW9uIGZyb20gdGhlIGFwcCBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHNldEVudGl0eUNhY2hlKGNhY2hlOiBFbnRpdHlDYWNoZSwgdGFnPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwYXRjaChuZXcgU2V0RW50aXR5Q2FjaGUoY2FjaGUsIHRhZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIGFjdGlvbiB0byBzYXZlIG11bHRpcGxlIGVudGl0eSBjaGFuZ2VzIHRvIHJlbW90ZSBzdG9yYWdlLlxuICAgKiBSZWxpZXMgb24gYW4gTmdyeCBFZmZlY3Qgc3VjaCBhcyBFbnRpdHlFZmZlY3RzLnNhdmVFbnRpdGllcyQuXG4gICAqIEltcG9ydGFudDogb25seSBjYWxsIGlmIHlvdXIgc2VydmVyIHN1cHBvcnRzIHRoZSBTYXZlRW50aXRpZXMgcHJvdG9jb2xcbiAgICogdGhyb3VnaCB5b3VyIEVudGl0eURhdGFTZXJ2aWNlLnNhdmVFbnRpdGllcyBtZXRob2QuXG4gICAqIEBwYXJhbSBjaGFuZ2VzIEVpdGhlciB0aGUgZW50aXRpZXMgdG8gc2F2ZSwgYXMgYW4gYXJyYXkgb2Yge0NoYW5nZVNldEl0ZW19LCBvclxuICAgKiBhIENoYW5nZVNldCB0aGF0IGhvbGRzIHN1Y2ggY2hhbmdlcy5cbiAgICogQHBhcmFtIHVybCBUaGUgc2VydmVyIHVybCB3aGljaCByZWNlaXZlcyB0aGUgc2F2ZSByZXF1ZXN0XG4gICAqIEBwYXJhbSBbb3B0aW9uc10gb3B0aW9ucyBzdWNoIGFzIHRhZywgY29ycmVsYXRpb25JZCwgaXNPcHRpbWlzdGljLCBhbmQgbWVyZ2VTdHJhdGVneS5cbiAgICogVGhlc2UgdmFsdWVzIGFyZSBkZWZhdWx0ZWQgaWYgbm90IHN1cHBsaWVkLlxuICAgKiBAcmV0dXJucyBBIHRlcm1pbmF0aW5nIE9ic2VydmFibGU8Q2hhbmdlU2V0PiB3aXRoIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyXG4gICAqIGFmdGVyIHNlcnZlciByZXBvcnRzIHN1Y2Nlc3NmdWwgc2F2ZSBPUiB0aGUgc2F2ZSBlcnJvci5cbiAgICogVE9ETzogc2hvdWxkIHJldHVybiB0aGUgbWF0Y2hpbmcgZW50aXRpZXMgZnJvbSBjYWNoZSByYXRoZXIgdGhhbiB0aGUgcmF3IHNlcnZlciBkYXRhLlxuICAgKi9cbiAgc2F2ZUVudGl0aWVzKFxuICAgIGNoYW5nZXM6IENoYW5nZVNldEl0ZW1bXSB8IENoYW5nZVNldCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzogRW50aXR5QWN0aW9uT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPENoYW5nZVNldD4ge1xuICAgIGNvbnN0IGNoYW5nZVNldCA9IEFycmF5LmlzQXJyYXkoY2hhbmdlcykgPyB7IGNoYW5nZXMgfSA6IGNoYW5nZXM7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3QgY29ycmVsYXRpb25JZCA9XG4gICAgICBvcHRpb25zLmNvcnJlbGF0aW9uSWQgPT0gbnVsbFxuICAgICAgICA/IHRoaXMuY29ycmVsYXRpb25JZEdlbmVyYXRvci5uZXh0KClcbiAgICAgICAgOiBvcHRpb25zLmNvcnJlbGF0aW9uSWQ7XG4gICAgY29uc3QgaXNPcHRpbWlzdGljID1cbiAgICAgIG9wdGlvbnMuaXNPcHRpbWlzdGljID09IG51bGxcbiAgICAgICAgPyB0aGlzLmRlZmF1bHREaXNwYXRjaGVyT3B0aW9ucy5vcHRpbWlzdGljU2F2ZUVudGl0aWVzIHx8IGZhbHNlXG4gICAgICAgIDogb3B0aW9ucy5pc09wdGltaXN0aWMgPT09IHRydWU7XG4gICAgY29uc3QgdGFnID0gb3B0aW9ucy50YWcgfHwgJ1NhdmUgRW50aXRpZXMnO1xuICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIGNvcnJlbGF0aW9uSWQsIGlzT3B0aW1pc3RpYywgdGFnIH07XG4gICAgY29uc3QgYWN0aW9uID0gbmV3IFNhdmVFbnRpdGllcyhjaGFuZ2VTZXQsIHVybCwgb3B0aW9ucyk7XG4gICAgdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLmdldFNhdmVFbnRpdGllc1Jlc3BvbnNlRGF0YSQob3B0aW9ucy5jb3JyZWxhdGlvbklkKS5waXBlKFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBPYnNlcnZhYmxlIG9mIGRhdGEgZnJvbSB0aGUgc2VydmVyLXN1Y2Nlc3MgU2F2ZUVudGl0aWVzIGFjdGlvbiB3aXRoXG4gICAqIHRoZSBnaXZlbiBDb3JyZWxhdGlvbiBJZCwgYWZ0ZXIgdGhhdCBhY3Rpb24gd2FzIHByb2Nlc3NlZCBieSB0aGUgbmdyeCBzdG9yZS5cbiAgICogb3IgZWxzZSBwdXQgdGhlIHNlcnZlciBlcnJvciBvbiB0aGUgT2JzZXJ2YWJsZSBlcnJvciBjaGFubmVsLlxuICAgKiBAcGFyYW0gY3JpZCBUaGUgY29ycmVsYXRpb25JZCBmb3IgYm90aCB0aGUgc2F2ZSBhbmQgcmVzcG9uc2UgYWN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgZ2V0U2F2ZUVudGl0aWVzUmVzcG9uc2VEYXRhJChjcmlkOiBhbnkpOiBPYnNlcnZhYmxlPENoYW5nZVNldD4ge1xuICAgIC8qKlxuICAgICAqIHJlZHVjZWRBY3Rpb25zJCBtdXN0IGJlIHJlcGxheSBvYnNlcnZhYmxlIG9mIHRoZSBtb3N0IHJlY2VudCBhY3Rpb24gcmVkdWNlZCBieSB0aGUgc3RvcmUuXG4gICAgICogYmVjYXVzZSB0aGUgcmVzcG9uc2UgYWN0aW9uIG1pZ2h0IGhhdmUgYmVlbiBkaXNwYXRjaGVkIHRvIHRoZSBzdG9yZVxuICAgICAqIGJlZm9yZSBjYWxsZXIgaGFkIGEgY2hhbmNlIHRvIHN1YnNjcmliZS5cbiAgICAgKi9cbiAgICByZXR1cm4gdGhpcy5yZWR1Y2VkQWN0aW9ucyQucGlwZShcbiAgICAgIGZpbHRlcihcbiAgICAgICAgKGFjdDogQWN0aW9uKSA9PlxuICAgICAgICAgIGFjdC50eXBlID09PSBFbnRpdHlDYWNoZUFjdGlvbi5TQVZFX0VOVElUSUVTX1NVQ0NFU1MgfHxcbiAgICAgICAgICBhY3QudHlwZSA9PT0gRW50aXR5Q2FjaGVBY3Rpb24uU0FWRV9FTlRJVElFU19FUlJPUiB8fFxuICAgICAgICAgIGFjdC50eXBlID09PSBFbnRpdHlDYWNoZUFjdGlvbi5TQVZFX0VOVElUSUVTX0NBTkNFTFxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoYWN0OiBBY3Rpb24pID0+IGNyaWQgPT09IChhY3QgYXMgYW55KS5wYXlsb2FkLmNvcnJlbGF0aW9uSWQpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1lcmdlTWFwKChhY3QpID0+IHtcbiAgICAgICAgcmV0dXJuIGFjdC50eXBlID09PSBFbnRpdHlDYWNoZUFjdGlvbi5TQVZFX0VOVElUSUVTX0NBTkNFTFxuICAgICAgICAgID8gdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgbmV3IFBlcnNpc3RhbmNlQ2FuY2VsZWQoXG4gICAgICAgICAgICAgICAgKGFjdCBhcyBTYXZlRW50aXRpZXNDYW5jZWwpLnBheWxvYWQucmVhc29uXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGFjdC50eXBlID09PSBFbnRpdHlDYWNoZUFjdGlvbi5TQVZFX0VOVElUSUVTX1NVQ0NFU1NcbiAgICAgICAgICA/IG9mKChhY3QgYXMgU2F2ZUVudGl0aWVzU3VjY2VzcykucGF5bG9hZC5jaGFuZ2VTZXQpXG4gICAgICAgICAgOiB0aHJvd0Vycm9yKChhY3QgYXMgU2F2ZUVudGl0aWVzRXJyb3IpLnBheWxvYWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
package/{esm2015/src/dispatchers/entity-commands.js → esm2020/src/dispatchers/entity-commands.mjs}
RENAMED
|
File without changes
|