@ngrx/data 18.1.0 → 19.0.0-beta.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/fesm2022/ngrx-data.mjs +86 -86
- package/fesm2022/ngrx-data.mjs.map +1 -1
- package/package.json +6 -8
- package/schematics-core/utility/libs-version.js +1 -1
- package/schematics-core/utility/libs-version.js.map +1 -1
- package/schematics-core/utility/visitors.js +2 -2
- package/src/index.d.ts +1 -1
- package/esm2022/index.mjs +0 -7
- package/esm2022/ngrx-data.mjs +0 -5
- package/esm2022/public_api.mjs +0 -2
- package/esm2022/src/actions/entity-action-factory.mjs +0 -50
- package/esm2022/src/actions/entity-action-guard.mjs +0 -130
- package/esm2022/src/actions/entity-action-operators.mjs +0 -33
- package/esm2022/src/actions/entity-action.mjs +0 -2
- package/esm2022/src/actions/entity-cache-action.mjs +0 -116
- package/esm2022/src/actions/entity-cache-change-set.mjs +0 -50
- package/esm2022/src/actions/entity-op.mjs +0 -82
- package/esm2022/src/actions/merge-strategy.mjs +0 -22
- package/esm2022/src/actions/update-response-data.mjs +0 -2
- package/esm2022/src/dataservices/data-service-error.mjs +0 -36
- package/esm2022/src/dataservices/default-data-service-config.mjs +0 -7
- package/esm2022/src/dataservices/default-data.service.mjs +0 -209
- package/esm2022/src/dataservices/entity-cache-data.service.mjs +0 -146
- package/esm2022/src/dataservices/entity-data.service.mjs +0 -63
- package/esm2022/src/dataservices/http-url-generator.mjs +0 -87
- package/esm2022/src/dataservices/interfaces.mjs +0 -2
- package/esm2022/src/dataservices/persistence-result-handler.service.mjs +0 -49
- package/esm2022/src/dispatchers/entity-cache-dispatcher.mjs +0 -163
- package/esm2022/src/dispatchers/entity-commands.mjs +0 -2
- package/esm2022/src/dispatchers/entity-dispatcher-base.mjs +0 -420
- package/esm2022/src/dispatchers/entity-dispatcher-default-options.mjs +0 -30
- package/esm2022/src/dispatchers/entity-dispatcher-factory.mjs +0 -67
- package/esm2022/src/dispatchers/entity-dispatcher.mjs +0 -10
- package/esm2022/src/effects/entity-cache-effects.mjs +0 -115
- package/esm2022/src/effects/entity-effects-scheduler.mjs +0 -5
- package/esm2022/src/effects/entity-effects.mjs +0 -148
- package/esm2022/src/entity-data-config.mjs +0 -2
- package/esm2022/src/entity-data-without-effects.module.mjs +0 -27
- package/esm2022/src/entity-data.module.mjs +0 -28
- package/esm2022/src/entity-metadata/entity-definition.mjs +0 -33
- package/esm2022/src/entity-metadata/entity-definition.service.mjs +0 -93
- package/esm2022/src/entity-metadata/entity-filters.mjs +0 -23
- package/esm2022/src/entity-metadata/entity-metadata.mjs +0 -3
- package/esm2022/src/entity-services/entity-collection-service-base.mjs +0 -271
- package/esm2022/src/entity-services/entity-collection-service-elements-factory.mjs +0 -38
- package/esm2022/src/entity-services/entity-collection-service-factory.mjs +0 -28
- package/esm2022/src/entity-services/entity-collection-service.mjs +0 -2
- package/esm2022/src/entity-services/entity-services-base.mjs +0 -118
- package/esm2022/src/entity-services/entity-services-elements.mjs +0 -33
- package/esm2022/src/entity-services/entity-services.mjs +0 -10
- package/esm2022/src/index.mjs +0 -67
- package/esm2022/src/provide-entity-data.mjs +0 -222
- package/esm2022/src/reducers/constants.mjs +0 -7
- package/esm2022/src/reducers/entity-cache-reducer.mjs +0 -271
- package/esm2022/src/reducers/entity-cache.mjs +0 -2
- package/esm2022/src/reducers/entity-change-tracker-base.mjs +0 -587
- package/esm2022/src/reducers/entity-change-tracker.mjs +0 -2
- package/esm2022/src/reducers/entity-collection-creator.mjs +0 -37
- package/esm2022/src/reducers/entity-collection-reducer-methods.mjs +0 -807
- package/esm2022/src/reducers/entity-collection-reducer-registry.mjs +0 -68
- package/esm2022/src/reducers/entity-collection-reducer.mjs +0 -24
- package/esm2022/src/reducers/entity-collection.mjs +0 -13
- package/esm2022/src/selectors/entity-cache-selector.mjs +0 -14
- package/esm2022/src/selectors/entity-selectors$.mjs +0 -52
- package/esm2022/src/selectors/entity-selectors.mjs +0 -96
- package/esm2022/src/utils/correlation-id-generator.mjs +0 -30
- package/esm2022/src/utils/default-logger.mjs +0 -40
- package/esm2022/src/utils/default-pluralizer.mjs +0 -71
- package/esm2022/src/utils/guid-fns.mjs +0 -69
- package/esm2022/src/utils/interfaces.mjs +0 -7
- package/esm2022/src/utils/utilities.mjs +0 -52
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngrx/data",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0-beta.0",
|
|
4
4
|
"description": "API management for NgRx",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
},
|
|
21
21
|
"homepage": "https://github.com/ngrx/platform#readme",
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@angular/common": "^
|
|
24
|
-
"@angular/core": "^
|
|
25
|
-
"@ngrx/store": "
|
|
26
|
-
"@ngrx/effects": "
|
|
27
|
-
"@ngrx/entity": "
|
|
23
|
+
"@angular/common": "^19.0.0",
|
|
24
|
+
"@angular/core": "^19.0.0",
|
|
25
|
+
"@ngrx/store": "19.0.0-beta.0",
|
|
26
|
+
"@ngrx/effects": "19.0.0-beta.0",
|
|
27
|
+
"@ngrx/entity": "19.0.0-beta.0",
|
|
28
28
|
"rxjs": "^6.5.3 || ^7.5.0"
|
|
29
29
|
},
|
|
30
30
|
"schematics": "./schematics/collection.json",
|
|
@@ -57,8 +57,6 @@
|
|
|
57
57
|
},
|
|
58
58
|
".": {
|
|
59
59
|
"types": "./index.d.ts",
|
|
60
|
-
"esm2022": "./esm2022/ngrx-data.mjs",
|
|
61
|
-
"esm": "./esm2022/ngrx-data.mjs",
|
|
62
60
|
"default": "./fesm2022/ngrx-data.mjs"
|
|
63
61
|
}
|
|
64
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-version.js","sourceRoot":"","sources":["../../../../../modules/data/schematics-core/utility/libs-version.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"libs-version.js","sourceRoot":"","sources":["../../../../../modules/data/schematics-core/utility/libs-version.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,gBAAgB,CAAC","sourcesContent":["export const platformVersion = '^19.0.0-beta.0';\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
3
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
4
|
-
return g =
|
|
3
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
4
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
5
5
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
6
6
|
function step(op) {
|
|
7
7
|
if (f) throw new TypeError("Generator is already executing.");
|
package/src/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export { HttpResourceUrls } from './dataservices/http-url-generator';
|
|
|
19
19
|
export { HttpUrlGenerator } from './dataservices/http-url-generator';
|
|
20
20
|
export { DefaultHttpUrlGenerator } from './dataservices/http-url-generator';
|
|
21
21
|
export { normalizeRoot } from './dataservices/http-url-generator';
|
|
22
|
-
export { EntityCollectionDataService, HttpMethods, RequestData, QueryParams, } from './dataservices/interfaces';
|
|
22
|
+
export { EntityCollectionDataService, HttpMethods, HttpOptions, RequestData, QueryParams, } from './dataservices/interfaces';
|
|
23
23
|
export { PersistenceResultHandler, DefaultPersistenceResultHandler, } from './dataservices/persistence-result-handler.service';
|
|
24
24
|
export { EntityCacheDispatcher } from './dispatchers/entity-cache-dispatcher';
|
|
25
25
|
export { EntityServerCommands, EntityCacheCommands, EntityCommands, } from './dispatchers/entity-commands';
|
package/esm2022/index.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DO NOT EDIT
|
|
3
|
-
*
|
|
4
|
-
* This file is automatically generated at build
|
|
5
|
-
*/
|
|
6
|
-
export * from './public_api';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBETyBOT1QgRURJVFxuICpcbiAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBhdCBidWlsZFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
package/esm2022/ngrx-data.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhL25ncngtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
package/esm2022/public_api.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './src/index';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvaW5kZXgnO1xuIl19
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class EntityActionFactory {
|
|
4
|
-
// polymorphic create for the two signatures
|
|
5
|
-
create(nameOrPayload, entityOp, data, options) {
|
|
6
|
-
const payload = typeof nameOrPayload === 'string'
|
|
7
|
-
? {
|
|
8
|
-
...(options || {}),
|
|
9
|
-
entityName: nameOrPayload,
|
|
10
|
-
entityOp,
|
|
11
|
-
data,
|
|
12
|
-
}
|
|
13
|
-
: nameOrPayload;
|
|
14
|
-
return this.createCore(payload);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create an EntityAction to perform an operation (op) for a particular entity type
|
|
18
|
-
* (entityName) with optional data and other optional flags
|
|
19
|
-
* @param payload Defines the EntityAction and its options
|
|
20
|
-
*/
|
|
21
|
-
createCore(payload) {
|
|
22
|
-
const { entityName, entityOp, tag } = payload;
|
|
23
|
-
if (!entityName) {
|
|
24
|
-
throw new Error('Missing entity name for new action');
|
|
25
|
-
}
|
|
26
|
-
if (entityOp == null) {
|
|
27
|
-
throw new Error('Missing EntityOp for new action');
|
|
28
|
-
}
|
|
29
|
-
const type = this.formatActionType(entityOp, tag || entityName);
|
|
30
|
-
return { type, payload };
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Create an EntityAction from another EntityAction, replacing properties with those from newPayload;
|
|
34
|
-
* @param from Source action that is the base for the new action
|
|
35
|
-
* @param newProperties New EntityAction properties that replace the source action properties
|
|
36
|
-
*/
|
|
37
|
-
createFromAction(from, newProperties) {
|
|
38
|
-
return this.create({ ...from.payload, ...newProperties });
|
|
39
|
-
}
|
|
40
|
-
formatActionType(op, tag) {
|
|
41
|
-
return `[${tag}] ${op}`;
|
|
42
|
-
// return `${op} [${tag}]`.toUpperCase(); // example of an alternative
|
|
43
|
-
}
|
|
44
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EntityActionFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EntityActionFactory }); }
|
|
46
|
-
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EntityActionFactory, decorators: [{
|
|
48
|
-
type: Injectable
|
|
49
|
-
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWFjdGlvbi1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhL3NyYy9hY3Rpb25zL2VudGl0eS1hY3Rpb24tZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMzQyxNQUFNLE9BQU8sbUJBQW1CO0lBdUI5Qiw0Q0FBNEM7SUFDNUMsTUFBTSxDQUNKLGFBQThDLEVBQzlDLFFBQW1CLEVBQ25CLElBQVEsRUFDUixPQUE2QjtRQUU3QixNQUFNLE9BQU8sR0FDWCxPQUFPLGFBQWEsS0FBSyxRQUFRO1lBQy9CLENBQUMsQ0FBRTtnQkFDQyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsVUFBVSxFQUFFLGFBQWE7Z0JBQ3pCLFFBQVE7Z0JBQ1IsSUFBSTthQUNzQjtZQUM5QixDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFVBQVUsQ0FBVSxPQUErQjtRQUMzRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQ2QsSUFBa0IsRUFDbEIsYUFBOEM7UUFFOUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBVSxFQUFFLEdBQVc7UUFDdEMsT0FBTyxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN4QixzRUFBc0U7SUFDeEUsQ0FBQztpSUExRVUsbUJBQW1CO3FJQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVudGl0eU9wIH0gZnJvbSAnLi9lbnRpdHktb3AnO1xuaW1wb3J0IHtcbiAgRW50aXR5QWN0aW9uLFxuICBFbnRpdHlBY3Rpb25PcHRpb25zLFxuICBFbnRpdHlBY3Rpb25QYXlsb2FkLFxufSBmcm9tICcuL2VudGl0eS1hY3Rpb24nO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVudGl0eUFjdGlvbkZhY3Rvcnkge1xuICAvKipcbiAgICogQ3JlYXRlIGFuIEVudGl0eUFjdGlvbiB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbiAob3ApIGZvciBhIHBhcnRpY3VsYXIgZW50aXR5IHR5cGVcbiAgICogKGVudGl0eU5hbWUpIHdpdGggb3B0aW9uYWwgZGF0YSBhbmQgb3RoZXIgb3B0aW9uYWwgZmxhZ3NcbiAgICogQHBhcmFtIGVudGl0eU5hbWUgTmFtZSBvZiB0aGUgZW50aXR5IHR5cGVcbiAgICogQHBhcmFtIGVudGl0eU9wIE9wZXJhdGlvbiB0byBwZXJmb3JtIChFbnRpdHlPcClcbiAgICogQHBhcmFtIFtkYXRhXSBkYXRhIGZvciB0aGUgb3BlcmF0aW9uXG4gICAqIEBwYXJhbSBbb3B0aW9uc10gYWRkaXRpb25hbCBvcHRpb25zXG4gICAqL1xuICBjcmVhdGU8UCA9IGFueT4oXG4gICAgZW50aXR5TmFtZTogc3RyaW5nLFxuICAgIGVudGl0eU9wOiBFbnRpdHlPcCxcbiAgICBkYXRhPzogUCxcbiAgICBvcHRpb25zPzogRW50aXR5QWN0aW9uT3B0aW9uc1xuICApOiBFbnRpdHlBY3Rpb248UD47XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFbnRpdHlBY3Rpb24gdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24gKG9wKSBmb3IgYSBwYXJ0aWN1bGFyIGVudGl0eSB0eXBlXG4gICAqIChlbnRpdHlOYW1lKSB3aXRoIG9wdGlvbmFsIGRhdGEgYW5kIG90aGVyIG9wdGlvbmFsIGZsYWdzXG4gICAqIEBwYXJhbSBwYXlsb2FkIERlZmluZXMgdGhlIEVudGl0eUFjdGlvbiBhbmQgaXRzIG9wdGlvbnNcbiAgICovXG4gIGNyZWF0ZTxQID0gYW55PihwYXlsb2FkOiBFbnRpdHlBY3Rpb25QYXlsb2FkPFA+KTogRW50aXR5QWN0aW9uPFA+O1xuXG4gIC8vIHBvbHltb3JwaGljIGNyZWF0ZSBmb3IgdGhlIHR3byBzaWduYXR1cmVzXG4gIGNyZWF0ZTxQID0gYW55PihcbiAgICBuYW1lT3JQYXlsb2FkOiBFbnRpdHlBY3Rpb25QYXlsb2FkPFA+IHwgc3RyaW5nLFxuICAgIGVudGl0eU9wPzogRW50aXR5T3AsXG4gICAgZGF0YT86IFAsXG4gICAgb3B0aW9ucz86IEVudGl0eUFjdGlvbk9wdGlvbnNcbiAgKTogRW50aXR5QWN0aW9uPFA+IHtcbiAgICBjb25zdCBwYXlsb2FkOiBFbnRpdHlBY3Rpb25QYXlsb2FkPFA+ID1cbiAgICAgIHR5cGVvZiBuYW1lT3JQYXlsb2FkID09PSAnc3RyaW5nJ1xuICAgICAgICA/ICh7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyB8fCB7fSksXG4gICAgICAgICAgICBlbnRpdHlOYW1lOiBuYW1lT3JQYXlsb2FkLFxuICAgICAgICAgICAgZW50aXR5T3AsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgIH0gYXMgRW50aXR5QWN0aW9uUGF5bG9hZDxQPilcbiAgICAgICAgOiBuYW1lT3JQYXlsb2FkO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvcmUocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEVudGl0eUFjdGlvbiB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbiAob3ApIGZvciBhIHBhcnRpY3VsYXIgZW50aXR5IHR5cGVcbiAgICogKGVudGl0eU5hbWUpIHdpdGggb3B0aW9uYWwgZGF0YSBhbmQgb3RoZXIgb3B0aW9uYWwgZmxhZ3NcbiAgICogQHBhcmFtIHBheWxvYWQgRGVmaW5lcyB0aGUgRW50aXR5QWN0aW9uIGFuZCBpdHMgb3B0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvcmU8UCA9IGFueT4ocGF5bG9hZDogRW50aXR5QWN0aW9uUGF5bG9hZDxQPikge1xuICAgIGNvbnN0IHsgZW50aXR5TmFtZSwgZW50aXR5T3AsIHRhZyB9ID0gcGF5bG9hZDtcbiAgICBpZiAoIWVudGl0eU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBlbnRpdHkgbmFtZSBmb3IgbmV3IGFjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoZW50aXR5T3AgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEVudGl0eU9wIGZvciBuZXcgYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdEFjdGlvblR5cGUoZW50aXR5T3AsIHRhZyB8fCBlbnRpdHlOYW1lKTtcbiAgICByZXR1cm4geyB0eXBlLCBwYXlsb2FkIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEVudGl0eUFjdGlvbiBmcm9tIGFub3RoZXIgRW50aXR5QWN0aW9uLCByZXBsYWNpbmcgcHJvcGVydGllcyB3aXRoIHRob3NlIGZyb20gbmV3UGF5bG9hZDtcbiAgICogQHBhcmFtIGZyb20gU291cmNlIGFjdGlvbiB0aGF0IGlzIHRoZSBiYXNlIGZvciB0aGUgbmV3IGFjdGlvblxuICAgKiBAcGFyYW0gbmV3UHJvcGVydGllcyBOZXcgRW50aXR5QWN0aW9uIHByb3BlcnRpZXMgdGhhdCByZXBsYWNlIHRoZSBzb3VyY2UgYWN0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIGNyZWF0ZUZyb21BY3Rpb248UCA9IGFueT4oXG4gICAgZnJvbTogRW50aXR5QWN0aW9uLFxuICAgIG5ld1Byb3BlcnRpZXM6IFBhcnRpYWw8RW50aXR5QWN0aW9uUGF5bG9hZDxQPj5cbiAgKTogRW50aXR5QWN0aW9uPFA+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoeyAuLi5mcm9tLnBheWxvYWQsIC4uLm5ld1Byb3BlcnRpZXMgfSk7XG4gIH1cblxuICBmb3JtYXRBY3Rpb25UeXBlKG9wOiBzdHJpbmcsIHRhZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBbJHt0YWd9XSAke29wfWA7XG4gICAgLy8gcmV0dXJuIGAke29wfSBbJHt0YWd9XWAudG9VcHBlckNhc2UoKTsgLy8gZXhhbXBsZSBvZiBhbiBhbHRlcm5hdGl2ZVxuICB9XG59XG4iXX0=
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Guard methods that ensure EntityAction payload is as expected.
|
|
3
|
-
* Each method returns that payload if it passes the guard or
|
|
4
|
-
* throws an error.
|
|
5
|
-
*/
|
|
6
|
-
export class EntityActionGuard {
|
|
7
|
-
constructor(entityName, selectId) {
|
|
8
|
-
this.entityName = entityName;
|
|
9
|
-
this.selectId = selectId;
|
|
10
|
-
}
|
|
11
|
-
/** Throw if the action payload is not an entity with a valid key */
|
|
12
|
-
mustBeEntity(action) {
|
|
13
|
-
const data = this.extractData(action);
|
|
14
|
-
if (!data) {
|
|
15
|
-
return this.throwError(action, `should have a single entity.`);
|
|
16
|
-
}
|
|
17
|
-
const id = this.selectId(data);
|
|
18
|
-
if (this.isNotKeyType(id)) {
|
|
19
|
-
this.throwError(action, `has a missing or invalid entity key (id)`);
|
|
20
|
-
}
|
|
21
|
-
return data;
|
|
22
|
-
}
|
|
23
|
-
/** Throw if the action payload is not an array of entities with valid keys */
|
|
24
|
-
mustBeEntities(action) {
|
|
25
|
-
const data = this.extractData(action);
|
|
26
|
-
if (!Array.isArray(data)) {
|
|
27
|
-
return this.throwError(action, `should be an array of entities`);
|
|
28
|
-
}
|
|
29
|
-
data.forEach((entity, i) => {
|
|
30
|
-
const id = this.selectId(entity);
|
|
31
|
-
if (this.isNotKeyType(id)) {
|
|
32
|
-
const msg = `, item ${i + 1}, does not have a valid entity key (id)`;
|
|
33
|
-
this.throwError(action, msg);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
return data;
|
|
37
|
-
}
|
|
38
|
-
/** Throw if the action payload is not a single, valid key */
|
|
39
|
-
mustBeKey(action) {
|
|
40
|
-
const data = this.extractData(action);
|
|
41
|
-
if (data === undefined) {
|
|
42
|
-
throw new Error(`should be a single entity key`);
|
|
43
|
-
}
|
|
44
|
-
if (this.isNotKeyType(data)) {
|
|
45
|
-
throw new Error(`is not a valid key (id)`);
|
|
46
|
-
}
|
|
47
|
-
return data;
|
|
48
|
-
}
|
|
49
|
-
/** Throw if the action payload is not an array of valid keys */
|
|
50
|
-
mustBeKeys(action) {
|
|
51
|
-
const data = this.extractData(action);
|
|
52
|
-
if (!Array.isArray(data)) {
|
|
53
|
-
return this.throwError(action, `should be an array of entity keys (id)`);
|
|
54
|
-
}
|
|
55
|
-
data.forEach((id, i) => {
|
|
56
|
-
if (this.isNotKeyType(id)) {
|
|
57
|
-
const msg = `${this.entityName} ', item ${i + 1}, is not a valid entity key (id)`;
|
|
58
|
-
this.throwError(action, msg);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
return data;
|
|
62
|
-
}
|
|
63
|
-
/** Throw if the action payload is not an update with a valid key (id) */
|
|
64
|
-
mustBeUpdate(action) {
|
|
65
|
-
const data = this.extractData(action);
|
|
66
|
-
if (!data) {
|
|
67
|
-
return this.throwError(action, `should be a single entity update`);
|
|
68
|
-
}
|
|
69
|
-
const { id, changes } = data;
|
|
70
|
-
const id2 = this.selectId(changes);
|
|
71
|
-
if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {
|
|
72
|
-
this.throwError(action, `has a missing or invalid entity key (id)`);
|
|
73
|
-
}
|
|
74
|
-
return data;
|
|
75
|
-
}
|
|
76
|
-
/** Throw if the action payload is not an array of updates with valid keys (ids) */
|
|
77
|
-
mustBeUpdates(action) {
|
|
78
|
-
const data = this.extractData(action);
|
|
79
|
-
if (!Array.isArray(data)) {
|
|
80
|
-
return this.throwError(action, `should be an array of entity updates`);
|
|
81
|
-
}
|
|
82
|
-
data.forEach((item, i) => {
|
|
83
|
-
const { id, changes } = item;
|
|
84
|
-
const id2 = this.selectId(changes);
|
|
85
|
-
if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {
|
|
86
|
-
this.throwError(action, `, item ${i + 1}, has a missing or invalid entity key (id)`);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
return data;
|
|
90
|
-
}
|
|
91
|
-
/** Throw if the action payload is not an update response with a valid key (id) */
|
|
92
|
-
mustBeUpdateResponse(action) {
|
|
93
|
-
const data = this.extractData(action);
|
|
94
|
-
if (!data) {
|
|
95
|
-
return this.throwError(action, `should be a single entity update`);
|
|
96
|
-
}
|
|
97
|
-
const { id, changes } = data;
|
|
98
|
-
const id2 = this.selectId(changes);
|
|
99
|
-
if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {
|
|
100
|
-
this.throwError(action, `has a missing or invalid entity key (id)`);
|
|
101
|
-
}
|
|
102
|
-
return data;
|
|
103
|
-
}
|
|
104
|
-
/** Throw if the action payload is not an array of update responses with valid keys (ids) */
|
|
105
|
-
mustBeUpdateResponses(action) {
|
|
106
|
-
const data = this.extractData(action);
|
|
107
|
-
if (!Array.isArray(data)) {
|
|
108
|
-
return this.throwError(action, `should be an array of entity updates`);
|
|
109
|
-
}
|
|
110
|
-
data.forEach((item, i) => {
|
|
111
|
-
const { id, changes } = item;
|
|
112
|
-
const id2 = this.selectId(changes);
|
|
113
|
-
if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {
|
|
114
|
-
this.throwError(action, `, item ${i + 1}, has a missing or invalid entity key (id)`);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
return data;
|
|
118
|
-
}
|
|
119
|
-
extractData(action) {
|
|
120
|
-
return action.payload && action.payload.data;
|
|
121
|
-
}
|
|
122
|
-
/** Return true if this key (id) is invalid */
|
|
123
|
-
isNotKeyType(id) {
|
|
124
|
-
return typeof id !== 'string' && typeof id !== 'number';
|
|
125
|
-
}
|
|
126
|
-
throwError(action, msg) {
|
|
127
|
-
throw new Error(`${this.entityName} EntityAction guard for "${action.type}": payload ${msg}`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWFjdGlvbi1ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9zcmMvYWN0aW9ucy9lbnRpdHktYWN0aW9uLWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW9CLFVBQWtCLEVBQVUsUUFBdUI7UUFBbkQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWU7SUFBRyxDQUFDO0lBRTNFLG9FQUFvRTtJQUNwRSxZQUFZLENBQUMsTUFBdUI7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsMENBQTBDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTyxJQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxjQUFjLENBQUMsTUFBeUI7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0Qs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LEdBQUcsRUFBRSxDQUM3RSxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRTZWxlY3RvciwgVXBkYXRlIH0gZnJvbSAnQG5ncngvZW50aXR5JztcblxuaW1wb3J0IHsgRW50aXR5QWN0aW9uIH0gZnJvbSAnLi9lbnRpdHktYWN0aW9uJztcbmltcG9ydCB7IFVwZGF0ZVJlc3BvbnNlRGF0YSB9IGZyb20gJy4uL2FjdGlvbnMvdXBkYXRlLXJlc3BvbnNlLWRhdGEnO1xuXG4vKipcbiAqIEd1YXJkIG1ldGhvZHMgdGhhdCBlbnN1cmUgRW50aXR5QWN0aW9uIHBheWxvYWQgaXMgYXMgZXhwZWN0ZWQuXG4gKiBFYWNoIG1ldGhvZCByZXR1cm5zIHRoYXQgcGF5bG9hZCBpZiBpdCBwYXNzZXMgdGhlIGd1YXJkIG9yXG4gKiB0aHJvd3MgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnRpdHlBY3Rpb25HdWFyZDxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW50aXR5TmFtZTogc3RyaW5nLCBwcml2YXRlIHNlbGVjdElkOiBJZFNlbGVjdG9yPFQ+KSB7fVxuXG4gIC8qKiBUaHJvdyBpZiB0aGUgYWN0aW9uIHBheWxvYWQgaXMgbm90IGFuIGVudGl0eSB3aXRoIGEgdmFsaWQga2V5ICovXG4gIG11c3RCZUVudGl0eShhY3Rpb246IEVudGl0eUFjdGlvbjxUPik6IFQge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3REYXRhKGFjdGlvbik7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy50aHJvd0Vycm9yKGFjdGlvbiwgYHNob3VsZCBoYXZlIGEgc2luZ2xlIGVudGl0eS5gKTtcbiAgICB9XG4gICAgY29uc3QgaWQgPSB0aGlzLnNlbGVjdElkKGRhdGEpO1xuICAgIGlmICh0aGlzLmlzTm90S2V5VHlwZShpZCkpIHtcbiAgICAgIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIGBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgZW50aXR5IGtleSAoaWQpYCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhIGFzIFQ7XG4gIH1cblxuICAvKiogVGhyb3cgaWYgdGhlIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCBhbiBhcnJheSBvZiBlbnRpdGllcyB3aXRoIHZhbGlkIGtleXMgKi9cbiAgbXVzdEJlRW50aXRpZXMoYWN0aW9uOiBFbnRpdHlBY3Rpb248VFtdPik6IFRbXSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZXh0cmFjdERhdGEoYWN0aW9uKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm93RXJyb3IoYWN0aW9uLCBgc2hvdWxkIGJlIGFuIGFycmF5IG9mIGVudGl0aWVzYCk7XG4gICAgfVxuICAgIGRhdGEuZm9yRWFjaCgoZW50aXR5LCBpKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuc2VsZWN0SWQoZW50aXR5KTtcbiAgICAgIGlmICh0aGlzLmlzTm90S2V5VHlwZShpZCkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYCwgaXRlbSAke2kgKyAxfSwgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGVudGl0eSBrZXkgKGlkKWA7XG4gICAgICAgIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIG1zZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKiogVGhyb3cgaWYgdGhlIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCBhIHNpbmdsZSwgdmFsaWQga2V5ICovXG4gIG11c3RCZUtleShhY3Rpb246IEVudGl0eUFjdGlvbjxzdHJpbmcgfCBudW1iZXI+KTogc3RyaW5nIHwgbnVtYmVyIHwgbmV2ZXIge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3REYXRhKGFjdGlvbik7XG4gICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaG91bGQgYmUgYSBzaW5nbGUgZW50aXR5IGtleWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc05vdEtleVR5cGUoZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaXMgbm90IGEgdmFsaWQga2V5IChpZClgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKiogVGhyb3cgaWYgdGhlIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCBhbiBhcnJheSBvZiB2YWxpZCBrZXlzICovXG4gIG11c3RCZUtleXMoYWN0aW9uOiBFbnRpdHlBY3Rpb248KHN0cmluZyB8IG51bWJlcilbXT4pOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0RGF0YShhY3Rpb24pO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgcmV0dXJuIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIGBzaG91bGQgYmUgYW4gYXJyYXkgb2YgZW50aXR5IGtleXMgKGlkKWApO1xuICAgIH1cbiAgICBkYXRhLmZvckVhY2goKGlkLCBpKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc05vdEtleVR5cGUoaWQpKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IGAke3RoaXMuZW50aXR5TmFtZX0gJywgaXRlbSAke1xuICAgICAgICAgIGkgKyAxXG4gICAgICAgIH0sIGlzIG5vdCBhIHZhbGlkIGVudGl0eSBrZXkgKGlkKWA7XG4gICAgICAgIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIG1zZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKiogVGhyb3cgaWYgdGhlIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCBhbiB1cGRhdGUgd2l0aCBhIHZhbGlkIGtleSAoaWQpICovXG4gIG11c3RCZVVwZGF0ZShhY3Rpb246IEVudGl0eUFjdGlvbjxVcGRhdGU8VD4+KTogVXBkYXRlPFQ+IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0RGF0YShhY3Rpb24pO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIGBzaG91bGQgYmUgYSBzaW5nbGUgZW50aXR5IHVwZGF0ZWApO1xuICAgIH1cbiAgICBjb25zdCB7IGlkLCBjaGFuZ2VzIH0gPSBkYXRhO1xuICAgIGNvbnN0IGlkMiA9IHRoaXMuc2VsZWN0SWQoY2hhbmdlcyBhcyBUKTtcbiAgICBpZiAodGhpcy5pc05vdEtleVR5cGUoaWQpIHx8IHRoaXMuaXNOb3RLZXlUeXBlKGlkMikpIHtcbiAgICAgIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIGBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgZW50aXR5IGtleSAoaWQpYCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqIFRocm93IGlmIHRoZSBhY3Rpb24gcGF5bG9hZCBpcyBub3QgYW4gYXJyYXkgb2YgdXBkYXRlcyB3aXRoIHZhbGlkIGtleXMgKGlkcykgKi9cbiAgbXVzdEJlVXBkYXRlcyhhY3Rpb246IEVudGl0eUFjdGlvbjxVcGRhdGU8VD5bXT4pOiBVcGRhdGU8VD5bXSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZXh0cmFjdERhdGEoYWN0aW9uKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm93RXJyb3IoYWN0aW9uLCBgc2hvdWxkIGJlIGFuIGFycmF5IG9mIGVudGl0eSB1cGRhdGVzYCk7XG4gICAgfVxuICAgIGRhdGEuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgY29uc3QgeyBpZCwgY2hhbmdlcyB9ID0gaXRlbTtcbiAgICAgIGNvbnN0IGlkMiA9IHRoaXMuc2VsZWN0SWQoY2hhbmdlcyBhcyBUKTtcbiAgICAgIGlmICh0aGlzLmlzTm90S2V5VHlwZShpZCkgfHwgdGhpcy5pc05vdEtleVR5cGUoaWQyKSkge1xuICAgICAgICB0aGlzLnRocm93RXJyb3IoXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGAsIGl0ZW0gJHtpICsgMX0sIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBlbnRpdHkga2V5IChpZClgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKiogVGhyb3cgaWYgdGhlIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCBhbiB1cGRhdGUgcmVzcG9uc2Ugd2l0aCBhIHZhbGlkIGtleSAoaWQpICovXG4gIG11c3RCZVVwZGF0ZVJlc3BvbnNlKFxuICAgIGFjdGlvbjogRW50aXR5QWN0aW9uPFVwZGF0ZVJlc3BvbnNlRGF0YTxUPj5cbiAgKTogVXBkYXRlUmVzcG9uc2VEYXRhPFQ+IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0RGF0YShhY3Rpb24pO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIGBzaG91bGQgYmUgYSBzaW5nbGUgZW50aXR5IHVwZGF0ZWApO1xuICAgIH1cbiAgICBjb25zdCB7IGlkLCBjaGFuZ2VzIH0gPSBkYXRhO1xuICAgIGNvbnN0IGlkMiA9IHRoaXMuc2VsZWN0SWQoY2hhbmdlcyBhcyBUKTtcbiAgICBpZiAodGhpcy5pc05vdEtleVR5cGUoaWQpIHx8IHRoaXMuaXNOb3RLZXlUeXBlKGlkMikpIHtcbiAgICAgIHRoaXMudGhyb3dFcnJvcihhY3Rpb24sIGBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgZW50aXR5IGtleSAoaWQpYCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqIFRocm93IGlmIHRoZSBhY3Rpb24gcGF5bG9hZCBpcyBub3QgYW4gYXJyYXkgb2YgdXBkYXRlIHJlc3BvbnNlcyB3aXRoIHZhbGlkIGtleXMgKGlkcykgKi9cbiAgbXVzdEJlVXBkYXRlUmVzcG9uc2VzKFxuICAgIGFjdGlvbjogRW50aXR5QWN0aW9uPFVwZGF0ZVJlc3BvbnNlRGF0YTxUPltdPlxuICApOiBVcGRhdGVSZXNwb25zZURhdGE8VD5bXSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZXh0cmFjdERhdGEoYWN0aW9uKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm93RXJyb3IoYWN0aW9uLCBgc2hvdWxkIGJlIGFuIGFycmF5IG9mIGVudGl0eSB1cGRhdGVzYCk7XG4gICAgfVxuICAgIGRhdGEuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgY29uc3QgeyBpZCwgY2hhbmdlcyB9ID0gaXRlbTtcbiAgICAgIGNvbnN0IGlkMiA9IHRoaXMuc2VsZWN0SWQoY2hhbmdlcyBhcyBUKTtcbiAgICAgIGlmICh0aGlzLmlzTm90S2V5VHlwZShpZCkgfHwgdGhpcy5pc05vdEtleVR5cGUoaWQyKSkge1xuICAgICAgICB0aGlzLnRocm93RXJyb3IoXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGAsIGl0ZW0gJHtpICsgMX0sIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBlbnRpdHkga2V5IChpZClgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3REYXRhPFQ+KGFjdGlvbjogRW50aXR5QWN0aW9uPFQ+KSB7XG4gICAgcmV0dXJuIGFjdGlvbi5wYXlsb2FkICYmIGFjdGlvbi5wYXlsb2FkLmRhdGE7XG4gIH1cblxuICAvKiogUmV0dXJuIHRydWUgaWYgdGhpcyBrZXkgKGlkKSBpcyBpbnZhbGlkICovXG4gIHByaXZhdGUgaXNOb3RLZXlUeXBlKGlkOiBhbnkpIHtcbiAgICByZXR1cm4gdHlwZW9mIGlkICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgaWQgIT09ICdudW1iZXInO1xuICB9XG5cbiAgcHJpdmF0ZSB0aHJvd0Vycm9yKGFjdGlvbjogRW50aXR5QWN0aW9uLCBtc2c6IHN0cmluZyk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHt0aGlzLmVudGl0eU5hbWV9IEVudGl0eUFjdGlvbiBndWFyZCBmb3IgXCIke2FjdGlvbi50eXBlfVwiOiBwYXlsb2FkICR7bXNnfWBcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { filter } from 'rxjs/operators';
|
|
2
|
-
import { flattenArgs } from '../utils/utilities';
|
|
3
|
-
export function ofEntityOp(...allowedEntityOps) {
|
|
4
|
-
const ops = flattenArgs(allowedEntityOps);
|
|
5
|
-
switch (ops.length) {
|
|
6
|
-
case 0:
|
|
7
|
-
return filter((action) => action.payload && action.payload.entityOp != null);
|
|
8
|
-
case 1:
|
|
9
|
-
const op = ops[0];
|
|
10
|
-
return filter((action) => action.payload && op === action.payload.entityOp);
|
|
11
|
-
default:
|
|
12
|
-
return filter((action) => {
|
|
13
|
-
const entityOp = action.payload && action.payload.entityOp;
|
|
14
|
-
return entityOp && ops.some((o) => o === entityOp);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function ofEntityType(...allowedEntityNames) {
|
|
19
|
-
const names = flattenArgs(allowedEntityNames);
|
|
20
|
-
switch (names.length) {
|
|
21
|
-
case 0:
|
|
22
|
-
return filter((action) => action.payload && action.payload.entityName != null);
|
|
23
|
-
case 1:
|
|
24
|
-
const name = names[0];
|
|
25
|
-
return filter((action) => action.payload && name === action.payload.entityName);
|
|
26
|
-
default:
|
|
27
|
-
return filter((action) => {
|
|
28
|
-
const entityName = action.payload && action.payload.entityName;
|
|
29
|
-
return !!entityName && names.some((n) => n === entityName);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWFjdGlvbi1vcGVyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvc3JjL2FjdGlvbnMvZW50aXR5LWFjdGlvbi1vcGVyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQW1CakQsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsR0FBRyxnQkFBdUI7SUFFMUIsTUFBTSxHQUFHLEdBQWEsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEQsUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsS0FBSyxDQUFDO1lBQ0osT0FBTyxNQUFNLENBQ1gsQ0FBQyxNQUFvQixFQUFlLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQ3BELENBQUM7UUFDSixLQUFLLENBQUM7WUFDSixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsT0FBTyxNQUFNLENBQ1gsQ0FBQyxNQUFvQixFQUFlLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLEtBQUssTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQ25ELENBQUM7UUFDSjtZQUNFLE9BQU8sTUFBTSxDQUFDLENBQUMsTUFBb0IsRUFBZSxFQUFFO2dCQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUMzRCxPQUFPLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0FBQ0gsQ0FBQztBQW9CRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixHQUFHLGtCQUF5QjtJQUU1QixNQUFNLEtBQUssR0FBYSxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN4RCxRQUFRLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixLQUFLLENBQUM7WUFDSixPQUFPLE1BQU0sQ0FDWCxDQUFDLE1BQW9CLEVBQWUsRUFBRSxDQUNwQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FDdEQsQ0FBQztRQUNKLEtBQUssQ0FBQztZQUNKLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixPQUFPLE1BQU0sQ0FDWCxDQUFDLE1BQW9CLEVBQWUsRUFBRSxDQUNwQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksS0FBSyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FDdkQsQ0FBQztRQUNKO1lBQ0UsT0FBTyxNQUFNLENBQUMsQ0FBQyxNQUFvQixFQUFlLEVBQUU7Z0JBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQy9ELE9BQU8sQ0FBQyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRW50aXR5QWN0aW9uIH0gZnJvbSAnLi9lbnRpdHktYWN0aW9uJztcbmltcG9ydCB7IEVudGl0eU9wIH0gZnJvbSAnLi9lbnRpdHktb3AnO1xuaW1wb3J0IHsgZmxhdHRlbkFyZ3MgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xuXG4vKipcbiAqIFNlbGVjdCBhY3Rpb25zIGNvbmNlcm5pbmcgb25lIG9mIHRoZSBhbGxvd2VkIEVudGl0eSBvcGVyYXRpb25zXG4gKiBAcGFyYW0gYWxsb3dlZEVudGl0eU9wcyBFbnRpdHkgb3BlcmF0aW9ucyAoZS5nLCBFbnRpdHlPcC5RVUVSWV9BTEwpIHdob3NlIGFjdGlvbnMgc2hvdWxkIGJlIHNlbGVjdGVkXG4gKiBFeGFtcGxlOlxuICogYGBgXG4gKiAgdGhpcy5hY3Rpb25zLnBpcGUob2ZFbnRpdHlPcChFbnRpdHlPcC5RVUVSWV9BTEwsIEVudGl0eU9wLlFVRVJZX01BTlkpLCAuLi4pXG4gKiAgdGhpcy5hY3Rpb25zLnBpcGUob2ZFbnRpdHlPcCguLi5xdWVyeU9wcyksIC4uLilcbiAqICB0aGlzLmFjdGlvbnMucGlwZShvZkVudGl0eU9wKHF1ZXJ5T3BzKSwgLi4uKVxuICogIHRoaXMuYWN0aW9ucy5waXBlKG9mRW50aXR5T3AoKSwgLi4uKSAvLyBhbnkgYWN0aW9uIHdpdGggYSBkZWZpbmVkIGBlbnRpdHlPcGAgcHJvcGVydHlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbnRpdHlPcDxUIGV4dGVuZHMgRW50aXR5QWN0aW9uPihcbiAgYWxsb3dlZE9wczogc3RyaW5nW10gfCBFbnRpdHlPcFtdXG4pOiBPcGVyYXRvckZ1bmN0aW9uPEVudGl0eUFjdGlvbiwgVD47XG5leHBvcnQgZnVuY3Rpb24gb2ZFbnRpdHlPcDxUIGV4dGVuZHMgRW50aXR5QWN0aW9uPihcbiAgLi4uYWxsb3dlZE9wczogKHN0cmluZyB8IEVudGl0eU9wKVtdXG4pOiBPcGVyYXRvckZ1bmN0aW9uPEVudGl0eUFjdGlvbiwgVD47XG5leHBvcnQgZnVuY3Rpb24gb2ZFbnRpdHlPcDxUIGV4dGVuZHMgRW50aXR5QWN0aW9uPihcbiAgLi4uYWxsb3dlZEVudGl0eU9wczogYW55W11cbik6IE9wZXJhdG9yRnVuY3Rpb248RW50aXR5QWN0aW9uLCBUPiB7XG4gIGNvbnN0IG9wczogc3RyaW5nW10gPSBmbGF0dGVuQXJncyhhbGxvd2VkRW50aXR5T3BzKTtcbiAgc3dpdGNoIChvcHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIGZpbHRlcihcbiAgICAgICAgKGFjdGlvbjogRW50aXR5QWN0aW9uKTogYWN0aW9uIGlzIFQgPT5cbiAgICAgICAgICBhY3Rpb24ucGF5bG9hZCAmJiBhY3Rpb24ucGF5bG9hZC5lbnRpdHlPcCAhPSBudWxsXG4gICAgICApO1xuICAgIGNhc2UgMTpcbiAgICAgIGNvbnN0IG9wID0gb3BzWzBdO1xuICAgICAgcmV0dXJuIGZpbHRlcihcbiAgICAgICAgKGFjdGlvbjogRW50aXR5QWN0aW9uKTogYWN0aW9uIGlzIFQgPT5cbiAgICAgICAgICBhY3Rpb24ucGF5bG9hZCAmJiBvcCA9PT0gYWN0aW9uLnBheWxvYWQuZW50aXR5T3BcbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmaWx0ZXIoKGFjdGlvbjogRW50aXR5QWN0aW9uKTogYWN0aW9uIGlzIFQgPT4ge1xuICAgICAgICBjb25zdCBlbnRpdHlPcCA9IGFjdGlvbi5wYXlsb2FkICYmIGFjdGlvbi5wYXlsb2FkLmVudGl0eU9wO1xuICAgICAgICByZXR1cm4gZW50aXR5T3AgJiYgb3BzLnNvbWUoKG8pID0+IG8gPT09IGVudGl0eU9wKTtcbiAgICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogU2VsZWN0IGFjdGlvbnMgY29uY2VybmluZyBvbmUgb2YgdGhlIGFsbG93ZWQgRW50aXR5IHR5cGVzXG4gKiBAcGFyYW0gYWxsb3dlZEVudGl0eU5hbWVzIEVudGl0eS10eXBlIG5hbWVzIChlLmcsICdIZXJvJykgd2hvc2UgYWN0aW9ucyBzaG91bGQgYmUgc2VsZWN0ZWRcbiAqIEV4YW1wbGU6XG4gKiBgYGBcbiAqICB0aGlzLmFjdGlvbnMucGlwZShvZkVudGl0eVR5cGUoKSwgLi4uKSAvLyBheW4gRW50aXR5QWN0aW9uIHdpdGggYSBkZWZpbmVkIGVudGl0eSB0eXBlIHByb3BlcnR5XG4gKiAgdGhpcy5hY3Rpb25zLnBpcGUob2ZFbnRpdHlUeXBlKCdIZXJvJyksIC4uLikgLy8gRW50aXR5QWN0aW9ucyBmb3IgdGhlIEhlcm8gZW50aXR5XG4gKiAgdGhpcy5hY3Rpb25zLnBpcGUob2ZFbnRpdHlUeXBlKCdIZXJvJywgJ1ZpbGxhaW4nLCAnU2lkZWtpY2snKSwgLi4uKVxuICogIHRoaXMuYWN0aW9ucy5waXBlKG9mRW50aXR5VHlwZSguLi50aGVDaG9zZW4pLCAuLi4pXG4gKiAgdGhpcy5hY3Rpb25zLnBpcGUob2ZFbnRpdHlUeXBlKHRoZUNob3NlbiksIC4uLilcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbnRpdHlUeXBlPFQgZXh0ZW5kcyBFbnRpdHlBY3Rpb24+KFxuICBhbGxvd2VkRW50aXR5TmFtZXM/OiBzdHJpbmdbXVxuKTogT3BlcmF0b3JGdW5jdGlvbjxFbnRpdHlBY3Rpb24sIFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW50aXR5VHlwZTxUIGV4dGVuZHMgRW50aXR5QWN0aW9uPihcbiAgLi4uYWxsb3dlZEVudGl0eU5hbWVzOiBzdHJpbmdbXVxuKTogT3BlcmF0b3JGdW5jdGlvbjxFbnRpdHlBY3Rpb24sIFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW50aXR5VHlwZTxUIGV4dGVuZHMgRW50aXR5QWN0aW9uPihcbiAgLi4uYWxsb3dlZEVudGl0eU5hbWVzOiBhbnlbXVxuKTogT3BlcmF0b3JGdW5jdGlvbjxFbnRpdHlBY3Rpb24sIFQ+IHtcbiAgY29uc3QgbmFtZXM6IHN0cmluZ1tdID0gZmxhdHRlbkFyZ3MoYWxsb3dlZEVudGl0eU5hbWVzKTtcbiAgc3dpdGNoIChuYW1lcy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gZmlsdGVyKFxuICAgICAgICAoYWN0aW9uOiBFbnRpdHlBY3Rpb24pOiBhY3Rpb24gaXMgVCA9PlxuICAgICAgICAgIGFjdGlvbi5wYXlsb2FkICYmIGFjdGlvbi5wYXlsb2FkLmVudGl0eU5hbWUgIT0gbnVsbFxuICAgICAgKTtcbiAgICBjYXNlIDE6XG4gICAgICBjb25zdCBuYW1lID0gbmFtZXNbMF07XG4gICAgICByZXR1cm4gZmlsdGVyKFxuICAgICAgICAoYWN0aW9uOiBFbnRpdHlBY3Rpb24pOiBhY3Rpb24gaXMgVCA9PlxuICAgICAgICAgIGFjdGlvbi5wYXlsb2FkICYmIG5hbWUgPT09IGFjdGlvbi5wYXlsb2FkLmVudGl0eU5hbWVcbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmaWx0ZXIoKGFjdGlvbjogRW50aXR5QWN0aW9uKTogYWN0aW9uIGlzIFQgPT4ge1xuICAgICAgICBjb25zdCBlbnRpdHlOYW1lID0gYWN0aW9uLnBheWxvYWQgJiYgYWN0aW9uLnBheWxvYWQuZW50aXR5TmFtZTtcbiAgICAgICAgcmV0dXJuICEhZW50aXR5TmFtZSAmJiBuYW1lcy5zb21lKChuKSA9PiBuID09PSBlbnRpdHlOYW1lKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9zcmMvYWN0aW9ucy9lbnRpdHktYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IEVudGl0eU9wIH0gZnJvbSAnLi9lbnRpdHktb3AnO1xuaW1wb3J0IHsgTWVyZ2VTdHJhdGVneSB9IGZyb20gJy4vbWVyZ2Utc3RyYXRlZ3knO1xuaW1wb3J0IHsgSHR0cE9wdGlvbnMgfSBmcm9tICcuLi9kYXRhc2VydmljZXMvaW50ZXJmYWNlcyc7XG5cbi8qKiBBY3Rpb24gY29uY2VybmluZyBhbiBlbnRpdHkgY29sbGVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QWN0aW9uPFAgPSBhbnk+IGV4dGVuZHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSBwYXlsb2FkOiBFbnRpdHlBY3Rpb25QYXlsb2FkPFA+O1xufVxuXG4vKiogT3B0aW9ucyBvZiBhbiBFbnRpdHlBY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QWN0aW9uT3B0aW9ucyB7XG4gIC8qKiBDb3JyZWxhdGUgcmVsYXRlZCBFbnRpdHlBY3Rpb25zLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCBzYXZlcy4gTXVzdCBiZSBzZXJpYWxpemFibGUuICovXG4gIHJlYWRvbmx5IGNvcnJlbGF0aW9uSWQ/OiBhbnk7XG4gIC8qKiBUcnVlIGlmIHNob3VsZCBwZXJmb3JtIGFjdGlvbiBvcHRpbWlzdGljYWxseSAoYmVmb3JlIHNlcnZlciByZXNwb25kcykgKi9cbiAgcmVhZG9ubHkgaXNPcHRpbWlzdGljPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWVyZ2VTdHJhdGVneT86IE1lcmdlU3RyYXRlZ3k7XG4gIC8qKiBUaGUgdGFnIHRvIHVzZSBpbiB0aGUgYWN0aW9uJ3MgdHlwZS4gVGhlIGVudGl0eU5hbWUgaWYgbm8gdGFnIHNwZWNpZmllZC4gKi9cbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuICAvKiogT3B0aW9ucyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZSBodHRwIHJlcXVlc3QuIEFsbG93cyBzZXR0aW5nIG9mIFF1ZXJ5IFBhcmFtZXRlcnMgYW5kIEhlYWRlcnMgKi9cbiAgcmVhZG9ubHkgaHR0cE9wdGlvbnM/OiBIdHRwT3B0aW9ucztcblxuICAvLyBNdXRhYmxlIGFjdGlvbnMgYXJlIEJBRC5cbiAgLy8gVW5mb3J0dW5hdGVseSwgdGhlc2UgbXV0YXRpb25zIGFyZSB0aGUgb25seSB3YXkgdG8gc3RvcCBAbmdyeC9lZmZlY3RzXG4gIC8vIGZyb20gcHJvY2Vzc2luZyB0aGVzZSBhY3Rpb25zLlxuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHdhcyBkZXRlcm1pbmVkICh1c3VhbGx5IGJ5IGEgcmVkdWNlcikgdG8gYmUgaW4gZXJyb3IuXG4gICAqIERvd25zdHJlYW0gZWZmZWN0cyBzaG91bGQgbm90IHByb2Nlc3MgYnV0IHJhdGhlciB0cmVhdCBpdCBhcyBhbiBlcnJvci5cbiAgICovXG4gIGVycm9yPzogRXJyb3I7XG5cbiAgLyoqXG4gICAqIERvd25zdHJlYW0gZWZmZWN0cyBzaG91bGQgc2tpcCBwcm9jZXNzaW5nIHRoaXMgYWN0aW9uIGJ1dCBzaG91bGQgcmV0dXJuXG4gICAqIGFuIGlubm9jdW91cyBPYnNlcnZhYmxlPEFjdGlvbj4gb2Ygc3VjY2Vzcy5cbiAgICovXG4gIHNraXA/OiBib29sZWFuO1xufVxuXG4vKiogUGF5bG9hZCBvZiBhbiBFbnRpdHlBY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QWN0aW9uUGF5bG9hZDxQID0gYW55PiBleHRlbmRzIEVudGl0eUFjdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBlbnRpdHlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudGl0eU9wOiBFbnRpdHlPcDtcbiAgcmVhZG9ubHkgZGF0YT86IFA7XG59XG4iXX0=
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
export { ChangeSetOperation } from './entity-cache-change-set';
|
|
2
|
-
import { MergeStrategy } from '../actions/merge-strategy';
|
|
3
|
-
export var EntityCacheAction;
|
|
4
|
-
(function (EntityCacheAction) {
|
|
5
|
-
EntityCacheAction["CLEAR_COLLECTIONS"] = "@ngrx/data/entity-cache/clear-collections";
|
|
6
|
-
EntityCacheAction["LOAD_COLLECTIONS"] = "@ngrx/data/entity-cache/load-collections";
|
|
7
|
-
EntityCacheAction["MERGE_QUERY_SET"] = "@ngrx/data/entity-cache/merge-query-set";
|
|
8
|
-
EntityCacheAction["SET_ENTITY_CACHE"] = "@ngrx/data/entity-cache/set-cache";
|
|
9
|
-
EntityCacheAction["SAVE_ENTITIES"] = "@ngrx/data/entity-cache/save-entities";
|
|
10
|
-
EntityCacheAction["SAVE_ENTITIES_CANCEL"] = "@ngrx/data/entity-cache/save-entities-cancel";
|
|
11
|
-
EntityCacheAction["SAVE_ENTITIES_CANCELED"] = "@ngrx/data/entity-cache/save-entities-canceled";
|
|
12
|
-
EntityCacheAction["SAVE_ENTITIES_ERROR"] = "@ngrx/data/entity-cache/save-entities-error";
|
|
13
|
-
EntityCacheAction["SAVE_ENTITIES_SUCCESS"] = "@ngrx/data/entity-cache/save-entities-success";
|
|
14
|
-
})(EntityCacheAction || (EntityCacheAction = {}));
|
|
15
|
-
/**
|
|
16
|
-
* Clear the collections identified in the collectionSet.
|
|
17
|
-
* @param [collections] Array of names of the collections to clear.
|
|
18
|
-
* If empty array, does nothing. If no array, clear all collections.
|
|
19
|
-
* @param [tag] Optional tag to identify the operation from the app perspective.
|
|
20
|
-
*/
|
|
21
|
-
export class ClearCollections {
|
|
22
|
-
constructor(collections, tag) {
|
|
23
|
-
this.type = EntityCacheAction.CLEAR_COLLECTIONS;
|
|
24
|
-
this.payload = { collections, tag };
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Create entity cache action that loads multiple entity collections at the same time.
|
|
29
|
-
* before any selectors$ observables emit.
|
|
30
|
-
* @param querySet The collections to load, typically the result of a query.
|
|
31
|
-
* @param [tag] Optional tag to identify the operation from the app perspective.
|
|
32
|
-
* in the form of a map of entity collections.
|
|
33
|
-
*/
|
|
34
|
-
export class LoadCollections {
|
|
35
|
-
constructor(collections, tag) {
|
|
36
|
-
this.type = EntityCacheAction.LOAD_COLLECTIONS;
|
|
37
|
-
this.payload = { collections, tag };
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Create entity cache action that merges entities from a query result
|
|
42
|
-
* that returned entities from multiple collections.
|
|
43
|
-
* Corresponding entity cache reducer should add and update all collections
|
|
44
|
-
* at the same time, before any selectors$ observables emit.
|
|
45
|
-
* @param querySet The result of the query in the form of a map of entity collections.
|
|
46
|
-
* These are the entity data to merge into the respective collections.
|
|
47
|
-
* @param mergeStrategy How to merge a queried entity when it is already in the collection.
|
|
48
|
-
* The default is MergeStrategy.PreserveChanges
|
|
49
|
-
* @param [tag] Optional tag to identify the operation from the app perspective.
|
|
50
|
-
*/
|
|
51
|
-
export class MergeQuerySet {
|
|
52
|
-
constructor(querySet, mergeStrategy, tag) {
|
|
53
|
-
this.type = EntityCacheAction.MERGE_QUERY_SET;
|
|
54
|
-
this.payload = {
|
|
55
|
-
querySet,
|
|
56
|
-
mergeStrategy: mergeStrategy === null ? MergeStrategy.PreserveChanges : mergeStrategy,
|
|
57
|
-
tag,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Create entity cache action for replacing the entire entity cache.
|
|
63
|
-
* Dangerous because brute force but useful as when re-hydrating an EntityCache
|
|
64
|
-
* from local browser storage when the application launches.
|
|
65
|
-
* @param cache New state of the entity cache
|
|
66
|
-
* @param [tag] Optional tag to identify the operation from the app perspective.
|
|
67
|
-
*/
|
|
68
|
-
export class SetEntityCache {
|
|
69
|
-
constructor(cache, tag) {
|
|
70
|
-
this.cache = cache;
|
|
71
|
-
this.type = EntityCacheAction.SET_ENTITY_CACHE;
|
|
72
|
-
this.payload = { cache, tag };
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// #region SaveEntities
|
|
76
|
-
export class SaveEntities {
|
|
77
|
-
constructor(changeSet, url, options) {
|
|
78
|
-
this.type = EntityCacheAction.SAVE_ENTITIES;
|
|
79
|
-
options = options || {};
|
|
80
|
-
if (changeSet) {
|
|
81
|
-
changeSet.tag = changeSet.tag || options.tag;
|
|
82
|
-
}
|
|
83
|
-
this.payload = { changeSet, url, ...options, tag: changeSet.tag };
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
export class SaveEntitiesCancel {
|
|
87
|
-
constructor(correlationId, reason, entityNames, tag) {
|
|
88
|
-
this.type = EntityCacheAction.SAVE_ENTITIES_CANCEL;
|
|
89
|
-
this.payload = { correlationId, reason, entityNames, tag };
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
export class SaveEntitiesCanceled {
|
|
93
|
-
constructor(correlationId, reason, tag) {
|
|
94
|
-
this.type = EntityCacheAction.SAVE_ENTITIES_CANCELED;
|
|
95
|
-
this.payload = { correlationId, reason, tag };
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
export class SaveEntitiesError {
|
|
99
|
-
constructor(error, originalAction) {
|
|
100
|
-
this.type = EntityCacheAction.SAVE_ENTITIES_ERROR;
|
|
101
|
-
const correlationId = originalAction.payload.correlationId;
|
|
102
|
-
this.payload = { error, originalAction, correlationId };
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
export class SaveEntitiesSuccess {
|
|
106
|
-
constructor(changeSet, url, options) {
|
|
107
|
-
this.type = EntityCacheAction.SAVE_ENTITIES_SUCCESS;
|
|
108
|
-
options = options || {};
|
|
109
|
-
if (changeSet) {
|
|
110
|
-
changeSet.tag = changeSet.tag || options.tag;
|
|
111
|
-
}
|
|
112
|
-
this.payload = { changeSet, url, ...options, tag: changeSet.tag };
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// #endregion SaveEntities
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNhY2hlLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9zcmMvYWN0aW9ucy9lbnRpdHktY2FjaGUtYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBYSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxNQUFNLENBQU4sSUFBWSxpQkFXWDtBQVhELFdBQVksaUJBQWlCO0lBQzNCLG9GQUErRCxDQUFBO0lBQy9ELGtGQUE2RCxDQUFBO0lBQzdELGdGQUEyRCxDQUFBO0lBQzNELDJFQUFzRCxDQUFBO0lBRXRELDRFQUF1RCxDQUFBO0lBQ3ZELDBGQUFxRSxDQUFBO0lBQ3JFLDhGQUF5RSxDQUFBO0lBQ3pFLHdGQUFtRSxDQUFBO0lBQ25FLDRGQUF1RSxDQUFBO0FBQ3pFLENBQUMsRUFYVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBVzVCO0FBV0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQVksV0FBc0IsRUFBRSxHQUFZO1FBRnZDLFNBQUksR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUdsRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQVksV0FBZ0MsRUFBRSxHQUFZO1FBRmpELFNBQUksR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQztRQUdqRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQVN4QixZQUNFLFFB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dG8gdGhlIEVudGl0eUNhY2hlIGFzIGEgd2hvbGVcbiAqL1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBDaGFuZ2VTZXQsIENoYW5nZVNldE9wZXJhdGlvbiB9IGZyb20gJy4vZW50aXR5LWNhY2hlLWNoYW5nZS1zZXQnO1xuZXhwb3J0IHsgQ2hhbmdlU2V0LCBDaGFuZ2VTZXRPcGVyYXRpb24gfSBmcm9tICcuL2VudGl0eS1jYWNoZS1jaGFuZ2Utc2V0JztcblxuaW1wb3J0IHsgRGF0YVNlcnZpY2VFcnJvciB9IGZyb20gJy4uL2RhdGFzZXJ2aWNlcy9kYXRhLXNlcnZpY2UtZXJyb3InO1xuaW1wb3J0IHsgRW50aXR5QWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2FjdGlvbnMvZW50aXR5LWFjdGlvbic7XG5pbXBvcnQgeyBFbnRpdHlDYWNoZSB9IGZyb20gJy4uL3JlZHVjZXJzL2VudGl0eS1jYWNoZSc7XG5pbXBvcnQgeyBNZXJnZVN0cmF0ZWd5IH0gZnJvbSAnLi4vYWN0aW9ucy9tZXJnZS1zdHJhdGVneSc7XG5cbmV4cG9ydCBlbnVtIEVudGl0eUNhY2hlQWN0aW9uIHtcbiAgQ0xFQVJfQ09MTEVDVElPTlMgPSAnQG5ncngvZGF0YS9lbnRpdHktY2FjaGUvY2xlYXItY29sbGVjdGlvbnMnLFxuICBMT0FEX0NPTExFQ1RJT05TID0gJ0BuZ3J4L2RhdGEvZW50aXR5LWNhY2hlL2xvYWQtY29sbGVjdGlvbnMnLFxuICBNRVJHRV9RVUVSWV9TRVQgPSAnQG5ncngvZGF0YS9lbnRpdHktY2FjaGUvbWVyZ2UtcXVlcnktc2V0JyxcbiAgU0VUX0VOVElUWV9DQUNIRSA9ICdAbmdyeC9kYXRhL2VudGl0eS1jYWNoZS9zZXQtY2FjaGUnLFxuXG4gIFNBVkVfRU5USVRJRVMgPSAnQG5ncngvZGF0YS9lbnRpdHktY2FjaGUvc2F2ZS1lbnRpdGllcycsXG4gIFNBVkVfRU5USVRJRVNfQ0FOQ0VMID0gJ0BuZ3J4L2RhdGEvZW50aXR5LWNhY2hlL3NhdmUtZW50aXRpZXMtY2FuY2VsJyxcbiAgU0FWRV9FTlRJVElFU19DQU5DRUxFRCA9ICdAbmdyeC9kYXRhL2VudGl0eS1jYWNoZS9zYXZlLWVudGl0aWVzLWNhbmNlbGVkJyxcbiAgU0FWRV9FTlRJVElFU19FUlJPUiA9ICdAbmdyeC9kYXRhL2VudGl0eS1jYWNoZS9zYXZlLWVudGl0aWVzLWVycm9yJyxcbiAgU0FWRV9FTlRJVElFU19TVUNDRVNTID0gJ0BuZ3J4L2RhdGEvZW50aXR5LWNhY2hlL3NhdmUtZW50aXRpZXMtc3VjY2VzcycsXG59XG5cbi8qKlxuICogSGFzaCBvZiBlbnRpdGllcyBrZXllZCBieSBFbnRpdHlDb2xsZWN0aW9uIG5hbWUsXG4gKiB0eXBpY2FsbHkgdGhlIHJlc3VsdCBvZiBhIHF1ZXJ5IHRoYXQgcmV0dXJuZWQgcmVzdWx0cyBmcm9tIGEgbXVsdGktY29sbGVjdGlvbiBxdWVyeVxuICogdGhhdCB3aWxsIGJlIG1lcmdlZCBpbnRvIGFuIEVudGl0eUNhY2hlIHZpYSB0aGUgYE1lcmdlUXVlcnlTZXRgIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDYWNoZVF1ZXJ5U2V0IHtcbiAgW2VudGl0eU5hbWU6IHN0cmluZ106IGFueVtdO1xufVxuXG4vKipcbiAqIENsZWFyIHRoZSBjb2xsZWN0aW9ucyBpZGVudGlmaWVkIGluIHRoZSBjb2xsZWN0aW9uU2V0LlxuICogQHBhcmFtIFtjb2xsZWN0aW9uc10gQXJyYXkgb2YgbmFtZXMgb2YgdGhlIGNvbGxlY3Rpb25zIHRvIGNsZWFyLlxuICogSWYgZW1wdHkgYXJyYXksIGRvZXMgbm90aGluZy4gSWYgbm8gYXJyYXksIGNsZWFyIGFsbCBjb2xsZWN0aW9ucy5cbiAqIEBwYXJhbSBbdGFnXSBPcHRpb25hbCB0YWcgdG8gaWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBmcm9tIHRoZSBhcHAgcGVyc3BlY3RpdmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGVhckNvbGxlY3Rpb25zIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgcGF5bG9hZDogeyBjb2xsZWN0aW9ucz86IHN0cmluZ1tdOyB0YWc/OiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgdHlwZSA9IEVudGl0eUNhY2hlQWN0aW9uLkNMRUFSX0NPTExFQ1RJT05TO1xuXG4gIGNvbnN0cnVjdG9yKGNvbGxlY3Rpb25zPzogc3RyaW5nW10sIHRhZz86IHN0cmluZykge1xuICAgIHRoaXMucGF5bG9hZCA9IHsgY29sbGVjdGlvbnMsIHRhZyB9O1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGVudGl0eSBjYWNoZSBhY3Rpb24gdGhhdCBsb2FkcyBtdWx0aXBsZSBlbnRpdHkgY29sbGVjdGlvbnMgYXQgdGhlIHNhbWUgdGltZS5cbiAqIGJlZm9yZSBhbnkgc2VsZWN0b3JzJCBvYnNlcnZhYmxlcyBlbWl0LlxuICogQHBhcmFtIHF1ZXJ5U2V0IFRoZSBjb2xsZWN0aW9ucyB0byBsb2FkLCB0eXBpY2FsbHkgdGhlIHJlc3VsdCBvZiBhIHF1ZXJ5LlxuICogQHBhcmFtIFt0YWddIE9wdGlvbmFsIHRhZyB0byBpZGVudGlmeSB0aGUgb3BlcmF0aW9uIGZyb20gdGhlIGFwcCBwZXJzcGVjdGl2ZS5cbiAqIGluIHRoZSBmb3JtIG9mIGEgbWFwIG9mIGVudGl0eSBjb2xsZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIExvYWRDb2xsZWN0aW9ucyBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHBheWxvYWQ6IHsgY29sbGVjdGlvbnM6IEVudGl0eUNhY2hlUXVlcnlTZXQ7IHRhZz86IHN0cmluZyB9O1xuICByZWFkb25seSB0eXBlID0gRW50aXR5Q2FjaGVBY3Rpb24uTE9BRF9DT0xMRUNUSU9OUztcblxuICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uczogRW50aXR5Q2FjaGVRdWVyeVNldCwgdGFnPzogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXlsb2FkID0geyBjb2xsZWN0aW9ucywgdGFnIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgZW50aXR5IGNhY2hlIGFjdGlvbiB0aGF0IG1lcmdlcyBlbnRpdGllcyBmcm9tIGEgcXVlcnkgcmVzdWx0XG4gKiB0aGF0IHJldHVybmVkIGVudGl0aWVzIGZyb20gbXVsdGlwbGUgY29sbGVjdGlvbnMuXG4gKiBDb3JyZXNwb25kaW5nIGVudGl0eSBjYWNoZSByZWR1Y2VyIHNob3VsZCBhZGQgYW5kIHVwZGF0ZSBhbGwgY29sbGVjdGlvbnNcbiAqIGF0IHRoZSBzYW1lIHRpbWUsIGJlZm9yZSBhbnkgc2VsZWN0b3JzJCBvYnNlcnZhYmxlcyBlbWl0LlxuICogQHBhcmFtIHF1ZXJ5U2V0IFRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5IGluIHRoZSBmb3JtIG9mIGEgbWFwIG9mIGVudGl0eSBjb2xsZWN0aW9ucy5cbiAqIFRoZXNlIGFyZSB0aGUgZW50aXR5IGRhdGEgdG8gbWVyZ2UgaW50byB0aGUgcmVzcGVjdGl2ZSBjb2xsZWN0aW9ucy5cbiAqIEBwYXJhbSBtZXJnZVN0cmF0ZWd5IEhvdyB0byBtZXJnZSBhIHF1ZXJpZWQgZW50aXR5IHdoZW4gaXQgaXMgYWxyZWFkeSBpbiB0aGUgY29sbGVjdGlvbi5cbiAqIFRoZSBkZWZhdWx0IGlzIE1lcmdlU3RyYXRlZ3kuUHJlc2VydmVDaGFuZ2VzXG4gKiBAcGFyYW0gW3RhZ10gT3B0aW9uYWwgdGFnIHRvIGlkZW50aWZ5IHRoZSBvcGVyYXRpb24gZnJvbSB0aGUgYXBwIHBlcnNwZWN0aXZlLlxuICovXG5leHBvcnQgY2xhc3MgTWVyZ2VRdWVyeVNldCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHBheWxvYWQ6IHtcbiAgICBxdWVyeVNldDogRW50aXR5Q2FjaGVRdWVyeVNldDtcbiAgICBtZXJnZVN0cmF0ZWd5PzogTWVyZ2VTdHJhdGVneTtcbiAgICB0YWc/OiBzdHJpbmc7XG4gIH07XG5cbiAgcmVhZG9ubHkgdHlwZSA9IEVudGl0eUNhY2hlQWN0aW9uLk1FUkdFX1FVRVJZX1NFVDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBxdWVyeVNldDogRW50aXR5Q2FjaGVRdWVyeVNldCxcbiAgICBtZXJnZVN0cmF0ZWd5PzogTWVyZ2VTdHJhdGVneSxcbiAgICB0YWc/OiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5wYXlsb2FkID0ge1xuICAgICAgcXVlcnlTZXQsXG4gICAgICBtZXJnZVN0cmF0ZWd5OlxuICAgICAgICBtZXJnZVN0cmF0ZWd5ID09PSBudWxsID8gTWVyZ2VTdHJhdGVneS5QcmVzZXJ2ZUNoYW5nZXMgOiBtZXJnZVN0cmF0ZWd5LFxuICAgICAgdGFnLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgZW50aXR5IGNhY2hlIGFjdGlvbiBmb3IgcmVwbGFjaW5nIHRoZSBlbnRpcmUgZW50aXR5IGNhY2hlLlxuICogRGFuZ2Vyb3VzIGJlY2F1c2UgYnJ1dGUgZm9yY2UgYnV0IHVzZWZ1bCBhcyB3aGVuIHJlLWh5ZHJhdGluZyBhbiBFbnRpdHlDYWNoZVxuICogZnJvbSBsb2NhbCBicm93c2VyIHN0b3JhZ2Ugd2hlbiB0aGUgYXBwbGljYXRpb24gbGF1bmNoZXMuXG4gKiBAcGFyYW0gY2FjaGUgTmV3IHN0YXRlIG9mIHRoZSBlbnRpdHkgY2FjaGVcbiAqIEBwYXJhbSBbdGFnXSBPcHRpb25hbCB0YWcgdG8gaWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBmcm9tIHRoZSBhcHAgcGVyc3BlY3RpdmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXRFbnRpdHlDYWNoZSBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHBheWxvYWQ6IHsgY2FjaGU6IEVudGl0eUNhY2hlOyB0YWc/OiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgdHlwZSA9IEVudGl0eUNhY2hlQWN0aW9uLlNFVF9FTlRJVFlfQ0FDSEU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNhY2hlOiBFbnRpdHlDYWNoZSwgdGFnPzogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXlsb2FkID0geyBjYWNoZSwgdGFnIH07XG4gIH1cbn1cblxuLy8gI3JlZ2lvbiBTYXZlRW50aXRpZXNcbmV4cG9ydCBjbGFzcyBTYXZlRW50aXRpZXMgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSBwYXlsb2FkOiB7XG4gICAgcmVhZG9ubHkgY2hhbmdlU2V0OiBDaGFuZ2VTZXQ7XG4gICAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29ycmVsYXRpb25JZD86IGFueTtcbiAgICByZWFkb25seSBpc09wdGltaXN0aWM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IG1lcmdlU3RyYXRlZ3k/OiBNZXJnZVN0cmF0ZWd5O1xuICAgIHJlYWRvbmx5IHRhZz86IHN0cmluZztcbiAgICBlcnJvcj86IEVycm9yO1xuICAgIHNraXA/OiBib29sZWFuOyAvLyBub3QgdXNlZFxuICB9O1xuICByZWFkb25seSB0eXBlID0gRW50aXR5Q2FjaGVBY3Rpb24uU0FWRV9FTlRJVElFUztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VTZXQ6IENoYW5nZVNldCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzogRW50aXR5QWN0aW9uT3B0aW9uc1xuICApIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoY2hhbmdlU2V0KSB7XG4gICAgICBjaGFuZ2VTZXQudGFnID0gY2hhbmdlU2V0LnRhZyB8fCBvcHRpb25zLnRhZztcbiAgICB9XG4gICAgdGhpcy5wYXlsb2FkID0geyBjaGFuZ2VTZXQsIHVybCwgLi4ub3B0aW9ucywgdGFnOiBjaGFuZ2VTZXQudGFnIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVFbnRpdGllc0NhbmNlbCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHBheWxvYWQ6IHtcbiAgICByZWFkb25seSBjb3JyZWxhdGlvbklkOiBhbnk7XG4gICAgcmVhZG9ubHkgcmVhc29uPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGVudGl0eU5hbWVzPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSB0eXBlID0gRW50aXR5Q2FjaGVBY3Rpb24uU0FWRV9FTlRJVElFU19DQU5DRUw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29ycmVsYXRpb25JZDogYW55LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgICBlbnRpdHlOYW1lcz86IHN0cmluZ1tdLFxuICAgIHRhZz86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLnBheWxvYWQgPSB7IGNvcnJlbGF0aW9uSWQsIHJlYXNvbiwgZW50aXR5TmFtZXMsIHRhZyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTYXZlRW50aXRpZXNDYW5jZWxlZCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHBheWxvYWQ6IHtcbiAgICByZWFkb25seSBjb3JyZWxhdGlvbklkOiBhbnk7XG4gICAgcmVhZG9ubHkgcmVhc29uPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRhZz86IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgdHlwZSA9IEVudGl0eUNhY2hlQWN0aW9uLlNBVkVfRU5USVRJRVNfQ0FOQ0VMRUQ7XG5cbiAgY29uc3RydWN0b3IoY29ycmVsYXRpb25JZDogYW55LCByZWFzb24/OiBzdHJpbmcsIHRhZz86IHN0cmluZykge1xuICAgIHRoaXMucGF5bG9hZCA9IHsgY29ycmVsYXRpb25JZCwgcmVhc29uLCB0YWcgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2F2ZUVudGl0aWVzRXJyb3Ige1xuICByZWFkb25seSBwYXlsb2FkOiB7XG4gICAgcmVhZG9ubHkgZXJyb3I6IERhdGFTZXJ2aWNlRXJyb3I7XG4gICAgcmVhZG9ubHkgb3JpZ2luYWxBY3Rpb246IFNhdmVFbnRpdGllcztcbiAgICByZWFkb25seSBjb3JyZWxhdGlvbklkOiBhbnk7XG4gIH07XG4gIHJlYWRvbmx5IHR5cGUgPSBFbnRpdHlDYWNoZUFjdGlvbi5TQVZFX0VOVElUSUVTX0VSUk9SO1xuICBjb25zdHJ1Y3RvcihlcnJvcjogRGF0YVNlcnZpY2VFcnJvciwgb3JpZ2luYWxBY3Rpb246IFNhdmVFbnRpdGllcykge1xuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSBvcmlnaW5hbEFjdGlvbi5wYXlsb2FkLmNvcnJlbGF0aW9uSWQ7XG4gICAgdGhpcy5wYXlsb2FkID0geyBlcnJvciwgb3JpZ2luYWxBY3Rpb24sIGNvcnJlbGF0aW9uSWQgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2F2ZUVudGl0aWVzU3VjY2VzcyBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHBheWxvYWQ6IHtcbiAgICByZWFkb25seSBjaGFuZ2VTZXQ6IENoYW5nZVNldDtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgICByZWFkb25seSBjb3JyZWxhdGlvbklkPzogYW55O1xuICAgIHJlYWRvbmx5IGlzT3B0aW1pc3RpYz86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgbWVyZ2VTdHJhdGVneT86IE1lcmdlU3RyYXRlZ3k7XG4gICAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuICAgIGVycm9yPzogRXJyb3I7XG4gICAgc2tpcD86IGJvb2xlYW47IC8vIG5vdCB1c2VkXG4gIH07XG4gIHJlYWRvbmx5IHR5cGUgPSBFbnRpdHlDYWNoZUFjdGlvbi5TQVZFX0VOVElUSUVTX1NVQ0NFU1M7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlU2V0OiBDaGFuZ2VTZXQsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEVudGl0eUFjdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgaWYgKGNoYW5nZVNldCkge1xuICAgICAgY2hhbmdlU2V0LnRhZyA9IGNoYW5nZVNldC50YWcgfHwgb3B0aW9ucy50YWc7XG4gICAgfVxuICAgIHRoaXMucGF5bG9hZCA9IHsgY2hhbmdlU2V0LCB1cmwsIC4uLm9wdGlvbnMsIHRhZzogY2hhbmdlU2V0LnRhZyB9O1xuICB9XG59XG4vLyAjZW5kcmVnaW9uIFNhdmVFbnRpdGllc1xuIl19
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export var ChangeSetOperation;
|
|
2
|
-
(function (ChangeSetOperation) {
|
|
3
|
-
ChangeSetOperation["Add"] = "Add";
|
|
4
|
-
ChangeSetOperation["Delete"] = "Delete";
|
|
5
|
-
ChangeSetOperation["Update"] = "Update";
|
|
6
|
-
ChangeSetOperation["Upsert"] = "Upsert";
|
|
7
|
-
})(ChangeSetOperation || (ChangeSetOperation = {}));
|
|
8
|
-
/**
|
|
9
|
-
* Factory to create a ChangeSetItem for a ChangeSetOperation
|
|
10
|
-
*/
|
|
11
|
-
export class ChangeSetItemFactory {
|
|
12
|
-
/** Create the ChangeSetAdd for new entities of the given entity type */
|
|
13
|
-
add(entityName, entities) {
|
|
14
|
-
entities = Array.isArray(entities) ? entities : entities ? [entities] : [];
|
|
15
|
-
return { entityName, op: ChangeSetOperation.Add, entities };
|
|
16
|
-
}
|
|
17
|
-
/** Create the ChangeSetDelete for primary keys of the given entity type */
|
|
18
|
-
delete(entityName, keys) {
|
|
19
|
-
const ids = Array.isArray(keys)
|
|
20
|
-
? keys
|
|
21
|
-
: keys
|
|
22
|
-
? [keys]
|
|
23
|
-
: [];
|
|
24
|
-
return { entityName, op: ChangeSetOperation.Delete, entities: ids };
|
|
25
|
-
}
|
|
26
|
-
/** Create the ChangeSetUpdate for Updates of entities of the given entity type */
|
|
27
|
-
update(entityName, updates) {
|
|
28
|
-
updates = Array.isArray(updates) ? updates : updates ? [updates] : [];
|
|
29
|
-
return { entityName, op: ChangeSetOperation.Update, entities: updates };
|
|
30
|
-
}
|
|
31
|
-
/** Create the ChangeSetUpsert for new or existing entities of the given entity type */
|
|
32
|
-
upsert(entityName, entities) {
|
|
33
|
-
entities = Array.isArray(entities) ? entities : entities ? [entities] : [];
|
|
34
|
-
return { entityName, op: ChangeSetOperation.Upsert, entities };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Instance of a factory to create a ChangeSetItem for a ChangeSetOperation
|
|
39
|
-
*/
|
|
40
|
-
export const changeSetItemFactory = new ChangeSetItemFactory();
|
|
41
|
-
/**
|
|
42
|
-
* Return ChangeSet after filtering out null and empty ChangeSetItems.
|
|
43
|
-
* @param changeSet ChangeSet with changes to filter
|
|
44
|
-
*/
|
|
45
|
-
export function excludeEmptyChangeSetItems(changeSet) {
|
|
46
|
-
changeSet = changeSet && changeSet.changes ? changeSet : { changes: [] };
|
|
47
|
-
const changes = changeSet.changes.filter((c) => c != null && c.entities && c.entities.length > 0);
|
|
48
|
-
return { ...changeSet, changes };
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNhY2hlLWNoYW5nZS1zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvc3JjL2FjdGlvbnMvZW50aXR5LWNhY2hlLWNoYW5nZS1zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1QixpQ0FBVyxDQUFBO0lBQ1gsdUNBQWlCLENBQUE7SUFDakIsdUNBQWlCLENBQUE7SUFDakIsdUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0I7QUFtREQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLHdFQUF3RTtJQUN4RSxHQUFHLENBQUksVUFBa0IsRUFBRSxRQUFpQjtRQUMxQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxNQUFNLENBQ0osVUFBa0IsRUFDbEIsSUFBMkM7UUFFM0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDN0IsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUUsQ0FBQyxJQUFJLENBQXlCO2dCQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLE1BQU0sQ0FDSixVQUFrQixFQUNsQixPQUFnQztRQUVoQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsTUFBTSxDQUFJLFVBQWtCLEVBQUUsUUFBaUI7UUFDN0MsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBRS9EOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxTQUFvQjtJQUM3RCxTQUFTLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDekUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3RDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN4RCxDQUFDO0lBQ0YsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcGRhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuXG5leHBvcnQgZW51bSBDaGFuZ2VTZXRPcGVyYXRpb24ge1xuICBBZGQgPSAnQWRkJyxcbiAgRGVsZXRlID0gJ0RlbGV0ZScsXG4gIFVwZGF0ZSA9ICdVcGRhdGUnLFxuICBVcHNlcnQgPSAnVXBzZXJ0Jyxcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlU2V0QWRkPFQgPSBhbnk+IHtcbiAgb3A6IENoYW5nZVNldE9wZXJhdGlvbi5BZGQ7XG4gIGVudGl0eU5hbWU6IHN0cmluZztcbiAgZW50aXRpZXM6IFRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VTZXREZWxldGUge1xuICBvcDogQ2hhbmdlU2V0T3BlcmF0aW9uLkRlbGV0ZTtcbiAgZW50aXR5TmFtZTogc3RyaW5nO1xuICBlbnRpdGllczogc3RyaW5nW10gfCBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VTZXRVcGRhdGU8VCA9IGFueT4ge1xuICBvcDogQ2hhbmdlU2V0T3BlcmF0aW9uLlVwZGF0ZTtcbiAgZW50aXR5TmFtZTogc3RyaW5nO1xuICBlbnRpdGllczogVXBkYXRlPFQ+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlU2V0VXBzZXJ0PFQgPSBhbnk+IHtcbiAgb3A6IENoYW5nZVNldE9wZXJhdGlvbi5VcHNlcnQ7XG4gIGVudGl0eU5hbWU6IHN0cmluZztcbiAgZW50aXRpZXM6IFRbXTtcbn1cblxuLyoqXG4gKiBBIGVudGl0aWVzIG9mIGEgc2luZ2xlIGVudGl0eSB0eXBlLCB3aGljaCBhcmUgY2hhbmdlZCBpbiB0aGUgc2FtZSB3YXkgYnkgYSBDaGFuZ2VTZXRPcGVyYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgQ2hhbmdlU2V0SXRlbSA9XG4gIHwgQ2hhbmdlU2V0QWRkXG4gIHwgQ2hhbmdlU2V0RGVsZXRlXG4gIHwgQ2hhbmdlU2V0VXBkYXRlXG4gIHwgQ2hhbmdlU2V0VXBzZXJ0O1xuXG4vKlxuICogQSBzZXQgb2YgZW50aXR5IENoYW5nZXMsIHR5cGljYWxseSB0byBiZSBzYXZlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VTZXQ8VCA9IGFueT4ge1xuICAvKiogQW4gYXJyYXkgb2YgQ2hhbmdlU2V0SXRlbXMgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBhcnJheSBvcmRlciAqL1xuICBjaGFuZ2VzOiBDaGFuZ2VTZXRJdGVtW107XG5cbiAgLyoqXG4gICAqIEFuIGFyYml0cmFyeSwgc2VyaWFsaXphYmxlIG9iamVjdCB0aGF0IHNob3VsZCB0cmF2ZWwgd2l0aCB0aGUgQ2hhbmdlU2V0LlxuICAgKiBNZWFuaW5nZnVsIHRvIHRoZSBDaGFuZ2VTZXQgcHJvZHVjZXIgYW5kIGNvbnN1bWVyLiBJZ25vcmVkIGJ5IEBuZ3J4L2RhdGEuXG4gICAqL1xuICBleHRyYXM/OiBUO1xuXG4gIC8qKiBBbiBhcmJpdHJhcnkgc3RyaW5nLCBpZGVudGlmeWluZyB0aGUgQ2hhbmdlU2V0IGFuZCBwZXJoYXBzIGl0cyBwdXJwb3NlICovXG4gIHRhZz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGYWN0b3J5IHRvIGNyZWF0ZSBhIENoYW5nZVNldEl0ZW0gZm9yIGEgQ2hhbmdlU2V0T3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGFuZ2VTZXRJdGVtRmFjdG9yeSB7XG4gIC8qKiBDcmVhdGUgdGhlIENoYW5nZVNldEFkZCBmb3IgbmV3IGVudGl0aWVzIG9mIHRoZSBnaXZlbiBlbnRpdHkgdHlwZSAqL1xuICBhZGQ8VD4oZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdGllczogVCB8IFRbXSk6IENoYW5nZVNldEFkZDxUPiB7XG4gICAgZW50aXRpZXMgPSBBcnJheS5pc0FycmF5KGVudGl0aWVzKSA/IGVudGl0aWVzIDogZW50aXRpZXMgPyBbZW50aXRpZXNdIDogW107XG4gICAgcmV0dXJuIHsgZW50aXR5TmFtZSwgb3A6IENoYW5nZVNldE9wZXJhdGlvbi5BZGQsIGVudGl0aWVzIH07XG4gIH1cblxuICAvKiogQ3JlYXRlIHRoZSBDaGFuZ2VTZXREZWxldGUgZm9yIHByaW1hcnkga2V5cyBvZiB0aGUgZ2l2ZW4gZW50aXR5IHR5cGUgKi9cbiAgZGVsZXRlKFxuICAgIGVudGl0eU5hbWU6IHN0cmluZyxcbiAgICBrZXlzOiBudW1iZXIgfCBudW1iZXJbXSB8IHN0cmluZyB8IHN0cmluZ1tdXG4gICk6IENoYW5nZVNldERlbGV0ZSB7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuaXNBcnJheShrZXlzKVxuICAgICAgPyBrZXlzXG4gICAgICA6IGtleXNcbiAgICAgID8gKFtrZXlzXSBhcyBzdHJpbmdbXSB8IG51bWJlcltdKVxuICAgICAgOiBbXTtcbiAgICByZXR1cm4geyBlbnRpdHlOYW1lLCBvcDogQ2hhbmdlU2V0T3BlcmF0aW9uLkRlbGV0ZSwgZW50aXRpZXM6IGlkcyB9O1xuICB9XG5cbiAgLyoqIENyZWF0ZSB0aGUgQ2hhbmdlU2V0VXBkYXRlIGZvciBVcGRhdGVzIG9mIGVudGl0aWVzIG9mIHRoZSBnaXZlbiBlbnRpdHkgdHlwZSAqL1xuICB1cGRhdGU8VCBleHRlbmRzIHsgaWQ6IHN0cmluZyB8IG51bWJlciB9PihcbiAgICBlbnRpdHlOYW1lOiBzdHJpbmcsXG4gICAgdXBkYXRlczogVXBkYXRlPFQ+IHwgVXBkYXRlPFQ+W11cbiAgKTogQ2hhbmdlU2V0VXBkYXRlPFQ+IHtcbiAgICB1cGRhdGVzID0gQXJyYXkuaXNBcnJheSh1cGRhdGVzKSA/IHVwZGF0ZXMgOiB1cGRhdGVzID8gW3VwZGF0ZXNdIDogW107XG4gICAgcmV0dXJuIHsgZW50aXR5TmFtZSwgb3A6IENoYW5nZVNldE9wZXJhdGlvbi5VcGRhdGUsIGVudGl0aWVzOiB1cGRhdGVzIH07XG4gIH1cblxuICAvKiogQ3JlYXRlIHRoZSBDaGFuZ2VTZXRVcHNlcnQgZm9yIG5ldyBvciBleGlzdGluZyBlbnRpdGllcyBvZiB0aGUgZ2l2ZW4gZW50aXR5IHR5cGUgKi9cbiAgdXBzZXJ0PFQ+KGVudGl0eU5hbWU6IHN0cmluZywgZW50aXRpZXM6IFQgfCBUW10pOiBDaGFuZ2VTZXRVcHNlcnQ8VD4ge1xuICAgIGVudGl0aWVzID0gQXJyYXkuaXNBcnJheShlbnRpdGllcykgPyBlbnRpdGllcyA6IGVudGl0aWVzID8gW2VudGl0aWVzXSA6IFtdO1xuICAgIHJldHVybiB7IGVudGl0eU5hbWUsIG9wOiBDaGFuZ2VTZXRPcGVyYXRpb24uVXBzZXJ0LCBlbnRpdGllcyB9O1xuICB9XG59XG5cbi8qKlxuICogSW5zdGFuY2Ugb2YgYSBmYWN0b3J5IHRvIGNyZWF0ZSBhIENoYW5nZVNldEl0ZW0gZm9yIGEgQ2hhbmdlU2V0T3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBjaGFuZ2VTZXRJdGVtRmFjdG9yeSA9IG5ldyBDaGFuZ2VTZXRJdGVtRmFjdG9yeSgpO1xuXG4vKipcbiAqIFJldHVybiBDaGFuZ2VTZXQgYWZ0ZXIgZmlsdGVyaW5nIG91dCBudWxsIGFuZCBlbXB0eSBDaGFuZ2VTZXRJdGVtcy5cbiAqIEBwYXJhbSBjaGFuZ2VTZXQgQ2hhbmdlU2V0IHdpdGggY2hhbmdlcyB0byBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4Y2x1ZGVFbXB0eUNoYW5nZVNldEl0ZW1zKGNoYW5nZVNldDogQ2hhbmdlU2V0KTogQ2hhbmdlU2V0IHtcbiAgY2hhbmdlU2V0ID0gY2hhbmdlU2V0ICYmIGNoYW5nZVNldC5jaGFuZ2VzID8gY2hhbmdlU2V0IDogeyBjaGFuZ2VzOiBbXSB9O1xuICBjb25zdCBjaGFuZ2VzID0gY2hhbmdlU2V0LmNoYW5nZXMuZmlsdGVyKFxuICAgIChjKSA9PiBjICE9IG51bGwgJiYgYy5lbnRpdGllcyAmJiBjLmVudGl0aWVzLmxlbmd0aCA+IDBcbiAgKTtcbiAgcmV0dXJuIHsgLi4uY2hhbmdlU2V0LCBjaGFuZ2VzIH07XG59XG4iXX0=
|