@ngrx/data 11.0.0-rc.0 → 11.1.1
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/bundles/ngrx-data.umd.js +902 -4475
- package/bundles/ngrx-data.umd.js.map +1 -1
- package/bundles/ngrx-data.umd.min.js +15 -1
- package/bundles/ngrx-data.umd.min.js.map +1 -1
- package/esm2015/index.js +2 -7
- package/esm2015/ngrx-data.js +2 -7
- package/esm2015/public_api.js +2 -7
- package/esm2015/src/actions/entity-action-factory.js +6 -31
- package/esm2015/src/actions/entity-action-guard.js +23 -130
- package/esm2015/src/actions/entity-action-operators.js +11 -64
- package/esm2015/src/actions/entity-action.js +2 -68
- package/esm2015/src/actions/entity-cache-action.js +14 -125
- package/esm2015/src/actions/entity-cache-change-set.js +15 -126
- package/esm2015/src/actions/entity-op.js +70 -89
- package/esm2015/src/actions/merge-strategy.js +8 -16
- package/esm2015/src/actions/update-response-data.js +2 -36
- package/esm2015/src/dataservices/data-service-error.js +1 -34
- package/esm2015/src/dataservices/default-data-service-config.js +1 -41
- package/esm2015/src/dataservices/default-data.service.js +5 -163
- package/esm2015/src/dataservices/entity-cache-data.service.js +17 -103
- package/esm2015/src/dataservices/entity-data.service.js +5 -31
- package/esm2015/src/dataservices/http-url-generator.js +11 -97
- package/esm2015/src/dataservices/interfaces.js +2 -71
- package/esm2015/src/dataservices/persistence-result-handler.service.js +7 -66
- package/esm2015/src/dispatchers/entity-cache-dispatcher.js +40 -97
- package/esm2015/src/dispatchers/entity-commands.js +2 -247
- package/esm2015/src/dispatchers/entity-dispatcher-base.js +65 -287
- package/esm2015/src/dispatchers/entity-dispatcher-default-options.js +6 -48
- package/esm2015/src/dispatchers/entity-dispatcher-factory.js +2 -64
- package/esm2015/src/dispatchers/entity-dispatcher.js +1 -74
- package/esm2015/src/effects/entity-cache-effects.js +21 -135
- package/esm2015/src/effects/entity-effects-scheduler.js +2 -10
- package/esm2015/src/effects/entity-effects.js +18 -128
- package/esm2015/src/entity-data-without-effects.module.js +7 -79
- package/esm2015/src/entity-data.module.js +3 -25
- package/esm2015/src/entity-metadata/entity-definition.js +2 -42
- package/esm2015/src/entity-metadata/entity-definition.service.js +14 -52
- package/esm2015/src/entity-metadata/entity-filters.js +5 -33
- package/esm2015/src/entity-metadata/entity-metadata.js +1 -34
- package/esm2015/src/entity-services/entity-collection-service-base.js +56 -208
- package/esm2015/src/entity-services/entity-collection-service-elements-factory.js +3 -60
- package/esm2015/src/entity-services/entity-collection-service-factory.js +5 -20
- package/esm2015/src/entity-services/entity-collection-service.js +2 -53
- package/esm2015/src/entity-services/entity-services-base.js +18 -78
- package/esm2015/src/entity-services/entity-services-elements.js +9 -44
- package/esm2015/src/entity-services/entity-services.js +1 -70
- package/esm2015/src/index.js +1 -6
- package/esm2015/src/reducers/constants.js +1 -11
- package/esm2015/src/reducers/entity-cache-reducer.js +33 -175
- package/esm2015/src/reducers/entity-cache.js +2 -10
- package/esm2015/src/reducers/entity-change-tracker-base.js +115 -262
- package/esm2015/src/reducers/entity-change-tracker.js +2 -179
- package/esm2015/src/reducers/entity-collection-creator.js +5 -29
- package/esm2015/src/reducers/entity-collection-reducer-methods.js +44 -503
- package/esm2015/src/reducers/entity-collection-reducer-registry.js +8 -50
- package/esm2015/src/reducers/entity-collection-reducer.js +5 -34
- package/esm2015/src/reducers/entity-collection.js +9 -65
- package/esm2015/src/selectors/entity-cache-selector.js +1 -12
- package/esm2015/src/selectors/entity-selectors$.js +11 -137
- package/esm2015/src/selectors/entity-selectors.js +23 -262
- package/esm2015/src/utils/correlation-id-generator.js +4 -30
- package/esm2015/src/utils/default-logger.js +1 -21
- package/esm2015/src/utils/default-pluralizer.js +3 -24
- package/esm2015/src/utils/guid-fns.js +9 -41
- package/esm2015/src/utils/interfaces.js +1 -49
- package/esm2015/src/utils/utilities.js +6 -25
- package/fesm2015/ngrx-data.js +721 -4410
- package/fesm2015/ngrx-data.js.map +1 -1
- package/package.json +5 -5
- package/schematics-core/index.js +4 -1
- package/schematics-core/index.js.map +1 -1
- package/schematics-core/utility/ast-utils.js +127 -1
- package/schematics-core/utility/ast-utils.js.map +1 -1
- package/schematics-core/utility/config.js +1 -1
- package/schematics-core/utility/config.js.map +1 -1
- package/schematics-core/utility/find-component.js +101 -0
- package/schematics-core/utility/find-component.js.map +1 -0
- package/schematics-core/utility/libs-version.js +1 -1
- package/schematics-core/utility/libs-version.js.map +1 -1
- package/schematics-core/utility/project.js +4 -2
- package/schematics-core/utility/project.js.map +1 -1
- package/CHANGELOG.md +0 -3
- package/esm2015/index.ngsummary.json +0 -1
- package/esm2015/ngrx-data.ngsummary.json +0 -1
- package/esm2015/public_api.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-action-factory.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-action-guard.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-action-operators.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-action.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-cache-action.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-cache-change-set.ngsummary.json +0 -1
- package/esm2015/src/actions/entity-op.ngsummary.json +0 -1
- package/esm2015/src/actions/merge-strategy.ngsummary.json +0 -1
- package/esm2015/src/actions/update-response-data.ngsummary.json +0 -1
- package/esm2015/src/dataservices/data-service-error.ngsummary.json +0 -1
- package/esm2015/src/dataservices/default-data-service-config.ngsummary.json +0 -1
- package/esm2015/src/dataservices/default-data.service.ngsummary.json +0 -1
- package/esm2015/src/dataservices/entity-cache-data.service.ngsummary.json +0 -1
- package/esm2015/src/dataservices/entity-data.service.ngsummary.json +0 -1
- package/esm2015/src/dataservices/http-url-generator.ngsummary.json +0 -1
- package/esm2015/src/dataservices/interfaces.ngsummary.json +0 -1
- package/esm2015/src/dataservices/persistence-result-handler.service.ngsummary.json +0 -1
- package/esm2015/src/dispatchers/entity-cache-dispatcher.ngsummary.json +0 -1
- package/esm2015/src/dispatchers/entity-commands.ngsummary.json +0 -1
- package/esm2015/src/dispatchers/entity-dispatcher-base.ngsummary.json +0 -1
- package/esm2015/src/dispatchers/entity-dispatcher-default-options.ngsummary.json +0 -1
- package/esm2015/src/dispatchers/entity-dispatcher-factory.ngsummary.json +0 -1
- package/esm2015/src/dispatchers/entity-dispatcher.ngsummary.json +0 -1
- package/esm2015/src/effects/entity-cache-effects.ngsummary.json +0 -1
- package/esm2015/src/effects/entity-effects-scheduler.ngsummary.json +0 -1
- package/esm2015/src/effects/entity-effects.ngsummary.json +0 -1
- package/esm2015/src/entity-data-without-effects.module.ngfactory.js +0 -36
- package/esm2015/src/entity-data-without-effects.module.ngsummary.json +0 -1
- package/esm2015/src/entity-data.module.ngfactory.js +0 -48
- package/esm2015/src/entity-data.module.ngsummary.json +0 -1
- package/esm2015/src/entity-metadata/entity-definition.ngsummary.json +0 -1
- package/esm2015/src/entity-metadata/entity-definition.service.ngsummary.json +0 -1
- package/esm2015/src/entity-metadata/entity-filters.ngsummary.json +0 -1
- package/esm2015/src/entity-metadata/entity-metadata.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-collection-service-base.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-collection-service-elements-factory.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-collection-service-factory.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-collection-service.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-services-base.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-services-elements.ngsummary.json +0 -1
- package/esm2015/src/entity-services/entity-services.ngsummary.json +0 -1
- package/esm2015/src/index.ngsummary.json +0 -1
- package/esm2015/src/reducers/constants.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-cache-reducer.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-cache.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-change-tracker-base.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-change-tracker.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-collection-creator.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-collection-reducer-methods.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-collection-reducer-registry.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-collection-reducer.ngsummary.json +0 -1
- package/esm2015/src/reducers/entity-collection.ngsummary.json +0 -1
- package/esm2015/src/selectors/entity-cache-selector.ngsummary.json +0 -1
- package/esm2015/src/selectors/entity-selectors$.ngsummary.json +0 -1
- package/esm2015/src/selectors/entity-selectors.ngsummary.json +0 -1
- package/esm2015/src/utils/correlation-id-generator.ngsummary.json +0 -1
- package/esm2015/src/utils/default-logger.ngsummary.json +0 -1
- package/esm2015/src/utils/default-pluralizer.ngsummary.json +0 -1
- package/esm2015/src/utils/guid-fns.ngsummary.json +0 -1
- package/esm2015/src/utils/interfaces.ngsummary.json +0 -1
- package/esm2015/src/utils/utilities.ngsummary.json +0 -1
- package/schematics/ng-add/files/entity-metadata.ts.template +0 -10
- package/src/entity-data-without-effects.module.ngfactory.d.ts +0 -3
- package/src/entity-data.module.ngfactory.d.ts +0 -3
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: src/utils/guid-fns.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
1
|
/**
|
|
7
2
|
Client-side id-generators
|
|
8
3
|
|
|
@@ -17,30 +12,19 @@
|
|
|
17
12
|
*/
|
|
18
13
|
/**
|
|
19
14
|
* Creates a Universally Unique Identifier (AKA GUID)
|
|
20
|
-
* @return {?}
|
|
21
15
|
*/
|
|
22
16
|
function getUuid() {
|
|
23
17
|
// The original implementation is based on this SO answer:
|
|
24
18
|
// http://stackoverflow.com/a/2117523/200253
|
|
25
|
-
return 'xxxxxxxxxx4xxyxxxxxxxxxxxxxx'.replace(/[xy]/g, (
|
|
26
|
-
* @param {?} c
|
|
27
|
-
* @return {?}
|
|
28
|
-
*/
|
|
29
|
-
function (c) {
|
|
19
|
+
return 'xxxxxxxxxx4xxyxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
30
20
|
// tslint:disable-next-line:no-bitwise
|
|
31
|
-
|
|
32
|
-
const r = (Math.random() * 16) | 0;
|
|
33
|
-
/** @type {?} */
|
|
34
|
-
const
|
|
21
|
+
const r = (Math.random() * 16) | 0,
|
|
35
22
|
// tslint:disable-next-line:no-bitwise
|
|
36
23
|
v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
37
24
|
return v.toString(16);
|
|
38
|
-
})
|
|
25
|
+
});
|
|
39
26
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Alias for getUuid(). Compare with getGuidComb().
|
|
42
|
-
* @return {?}
|
|
43
|
-
*/
|
|
27
|
+
/** Alias for getUuid(). Compare with getGuidComb(). */
|
|
44
28
|
export function getGuid() {
|
|
45
29
|
return getUuid();
|
|
46
30
|
}
|
|
@@ -50,8 +34,7 @@ export function getGuid() {
|
|
|
50
34
|
* Start either with the given getTime() value, seedTime,
|
|
51
35
|
* or get the current time in ms.
|
|
52
36
|
*
|
|
53
|
-
* @param
|
|
54
|
-
* @return {?}
|
|
37
|
+
* @param seed {number} - optional seed for reproducible time-part
|
|
55
38
|
*/
|
|
56
39
|
export function getGuidComb(seed) {
|
|
57
40
|
// Each new Guid is greater than next if more than 1ms passes
|
|
@@ -64,31 +47,16 @@ export function getGuidComb(seed) {
|
|
|
64
47
|
// Replace LAST 6 bytes (12 hex digits) of regular Guid (that's where they sort in a Db)
|
|
65
48
|
//
|
|
66
49
|
// Play with this in jsFiddle: http://jsfiddle.net/wardbell/qS8aN/
|
|
67
|
-
/** @type {?} */
|
|
68
50
|
const timePart = ('00' + (seed || new Date().getTime()).toString(16)).slice(-12);
|
|
69
|
-
return ('xxxxxxxxxx4xxyxxx'.replace(/[xy]/g, (
|
|
70
|
-
* @param {?} c
|
|
71
|
-
* @return {?}
|
|
72
|
-
*/
|
|
73
|
-
function (c) {
|
|
51
|
+
return ('xxxxxxxxxx4xxyxxx'.replace(/[xy]/g, function (c) {
|
|
74
52
|
// tslint:disable:no-bitwise
|
|
75
|
-
|
|
76
|
-
const r = (Math.random() * 16) | 0;
|
|
77
|
-
/** @type {?} */
|
|
78
|
-
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
53
|
+
const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
79
54
|
return v.toString(16);
|
|
80
|
-
})
|
|
55
|
+
}) + timePart);
|
|
81
56
|
}
|
|
82
57
|
// Sort comparison value that's good enough
|
|
83
|
-
/**
|
|
84
|
-
* @param {?} l
|
|
85
|
-
* @param {?} r
|
|
86
|
-
* @return {?}
|
|
87
|
-
*/
|
|
88
58
|
export function guidComparer(l, r) {
|
|
89
|
-
/** @type {?} */
|
|
90
59
|
const l_low = l.slice(-12);
|
|
91
|
-
/** @type {?} */
|
|
92
60
|
const r_low = r.slice(-12);
|
|
93
61
|
return l_low !== r_low
|
|
94
62
|
? l_low < r_low
|
|
@@ -98,4 +66,4 @@ export function guidComparer(l, r) {
|
|
|
98
66
|
? -1
|
|
99
67
|
: +(l !== r);
|
|
100
68
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZC1mbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvc3JjL3V0aWxzL2d1aWQtZm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztFQVdFO0FBRUY7O0dBRUc7QUFDSCxTQUFTLE9BQU87SUFDZCwwREFBMEQ7SUFDMUQsNENBQTRDO0lBQzVDLE9BQU8sOEJBQThCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7UUFDaEUsc0NBQXNDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDaEMsc0NBQXNDO1FBQ3RDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN0QyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxPQUFPO0lBQ3JCLE9BQU8sT0FBTyxFQUFFLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQWE7SUFDdkMsNkRBQTZEO0lBQzdELGtGQUFrRjtJQUNsRiwyRUFBMkU7SUFDM0UsNENBQTRDO0lBQzVDLEVBQUU7SUFDRiw0Q0FBNEM7SUFDNUMseUVBQXlFO0lBQ3pFLHdGQUF3RjtJQUN4RixFQUFFO0lBQ0Ysa0VBQWtFO0lBQ2xFLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQ3pFLENBQUMsRUFBRSxDQUNKLENBQUM7SUFDRixPQUFPLENBQ0wsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7UUFDOUMsNEJBQTRCO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDaEMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsR0FBRyxRQUFRLENBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUMvQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sS0FBSyxLQUFLLEtBQUs7UUFDcEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLO1lBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICBDbGllbnQtc2lkZSBpZC1nZW5lcmF0b3JzXG5cbiAgVGhlc2UgR1VJRCB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgbm90IHVzZWQgYnkgQG5ncngvZGF0YSBpdHNlbGYgYXQgdGhpcyB0aW1lLlxuICBUaGV5IGFyZSBpbmNsdWRlZCBhcyBjYW5kaWRhdGVzIGZvciBnZW5lcmF0aW5nIHBlcnNpc3RhYmxlIGNvcnJlbGF0aW9uIGlkcyBpZiB0aGF0IGJlY29tZXMgZGVzaXJhYmxlLlxuICBUaGV5IGFyZSBhbHNvIHNhZmUgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGVudGl0eSBpZHMgb24gdGhlIGNsaWVudC5cblxuICBOb3RlIHRoZXkgcHJvZHVjZSAzMi1jaGFyYWN0ZXIgaGV4YWRlY2ltYWwgVVVJRCBzdHJpbmdzLFxuICBub3QgdGhlIDEyOC1iaXQgcmVwcmVzZW50YXRpb24gZm91bmQgaW4gc2VydmVyLXNpZGUgbGFuZ3VhZ2VzIGFuZCBkYXRhYmFzZXMuXG5cbiAgVGhlc2UgdXRpbGl0aWVzIGFyZSBleHBlcmltZW50YWwgYW5kIG1heSBiZSB3aXRoZHJhd24gb3IgcmVwbGFjZWQgaW4gZnV0dXJlLlxuKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIgKEFLQSBHVUlEKVxuICovXG5mdW5jdGlvbiBnZXRVdWlkKCkge1xuICAvLyBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhpcyBTTyBhbnN3ZXI6XG4gIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIxMTc1MjMvMjAwMjUzXG4gIHJldHVybiAneHh4eHh4eHh4eDR4eHl4eHh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcbiAgICByZXR1cm4gdi50b1N0cmluZygxNik7XG4gIH0pO1xufVxuXG4vKiogQWxpYXMgZm9yIGdldFV1aWQoKS4gQ29tcGFyZSB3aXRoIGdldEd1aWRDb21iKCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R3VpZCgpIHtcbiAgcmV0dXJuIGdldFV1aWQoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc29ydGFibGUsIHBzZXVkby1HVUlEIChnbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllcilcbiAqIHdob3NlIHRyYWlsaW5nIDYgYnl0ZXMgKDEyIGhleCBkaWdpdHMpIGFyZSB0aW1lLWJhc2VkXG4gKiBTdGFydCBlaXRoZXIgd2l0aCB0aGUgZ2l2ZW4gZ2V0VGltZSgpIHZhbHVlLCBzZWVkVGltZSxcbiAqIG9yIGdldCB0aGUgY3VycmVudCB0aW1lIGluIG1zLlxuICpcbiAqIEBwYXJhbSBzZWVkIHtudW1iZXJ9IC0gb3B0aW9uYWwgc2VlZCBmb3IgcmVwcm9kdWNpYmxlIHRpbWUtcGFydFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R3VpZENvbWIoc2VlZD86IG51bWJlcikge1xuICAvLyBFYWNoIG5ldyBHdWlkIGlzIGdyZWF0ZXIgdGhhbiBuZXh0IGlmIG1vcmUgdGhhbiAxbXMgcGFzc2VzXG4gIC8vIFNlZSBodHRwOi8vdGhhdGV4dHJhbWlsZS5iZS9ibG9nLzIwMDkvMDUvdXNpbmctdGhlLWd1aWRjb21iLWlkZW50aWZpZXItc3RyYXRlZ3lcbiAgLy8gQmFzZWQgb24gYnJlZXplLmNvcmUuZ2V0VXVpZCB3aGljaCBpcyBiYXNlZCBvbiB0aGlzIFN0YWNrT3ZlcmZsb3cgYW5zd2VyXG4gIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIxMTc1MjMvMjAwMjUzXG4gIC8vXG4gIC8vIENvbnZlcnQgdGltZSB2YWx1ZSB0byBoZXg6IG4udG9TdHJpbmcoMTYpXG4gIC8vIE1ha2Ugc3VyZSBpdCBpcyA2IGJ5dGVzIGxvbmc6ICgnMDAnKyAuLi4pLnNsaWNlKC0xMikgLi4uIGZyb20gdGhlIHJlYXJcbiAgLy8gUmVwbGFjZSBMQVNUIDYgYnl0ZXMgKDEyIGhleCBkaWdpdHMpIG9mIHJlZ3VsYXIgR3VpZCAodGhhdCdzIHdoZXJlIHRoZXkgc29ydCBpbiBhIERiKVxuICAvL1xuICAvLyBQbGF5IHdpdGggdGhpcyBpbiBqc0ZpZGRsZTogaHR0cDovL2pzZmlkZGxlLm5ldC93YXJkYmVsbC9xUzhhTi9cbiAgY29uc3QgdGltZVBhcnQgPSAoJzAwJyArIChzZWVkIHx8IG5ldyBEYXRlKCkuZ2V0VGltZSgpKS50b1N0cmluZygxNikpLnNsaWNlKFxuICAgIC0xMlxuICApO1xuICByZXR1cm4gKFxuICAgICd4eHh4eHh4eHh4NHh4eXh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZVxuICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcbiAgICAgICAgdiA9IGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDg7XG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XG4gICAgfSkgKyB0aW1lUGFydFxuICApO1xufVxuXG4vLyBTb3J0IGNvbXBhcmlzb24gdmFsdWUgdGhhdCdzIGdvb2QgZW5vdWdoXG5leHBvcnQgZnVuY3Rpb24gZ3VpZENvbXBhcmVyKGw6IHN0cmluZywgcjogc3RyaW5nKSB7XG4gIGNvbnN0IGxfbG93ID0gbC5zbGljZSgtMTIpO1xuICBjb25zdCByX2xvdyA9IHIuc2xpY2UoLTEyKTtcbiAgcmV0dXJuIGxfbG93ICE9PSByX2xvd1xuICAgID8gbF9sb3cgPCByX2xvd1xuICAgICAgPyAtMVxuICAgICAgOiArKGxfbG93ICE9PSByX2xvdylcbiAgICA6IGwgPCByXG4gICAgPyAtMVxuICAgIDogKyhsICE9PSByKTtcbn1cbiJdfQ==
|
|
@@ -1,55 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: src/utils/interfaces.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
1
|
import { InjectionToken } from '@angular/core';
|
|
7
|
-
/**
|
|
8
|
-
* @abstract
|
|
9
|
-
*/
|
|
10
2
|
export class Logger {
|
|
11
3
|
}
|
|
12
|
-
if (false) {
|
|
13
|
-
/**
|
|
14
|
-
* @abstract
|
|
15
|
-
* @param {?=} message
|
|
16
|
-
* @param {...?} optionalParams
|
|
17
|
-
* @return {?}
|
|
18
|
-
*/
|
|
19
|
-
Logger.prototype.error = function (message, optionalParams) { };
|
|
20
|
-
/**
|
|
21
|
-
* @abstract
|
|
22
|
-
* @param {?=} message
|
|
23
|
-
* @param {...?} optionalParams
|
|
24
|
-
* @return {?}
|
|
25
|
-
*/
|
|
26
|
-
Logger.prototype.log = function (message, optionalParams) { };
|
|
27
|
-
/**
|
|
28
|
-
* @abstract
|
|
29
|
-
* @param {?=} message
|
|
30
|
-
* @param {...?} optionalParams
|
|
31
|
-
* @return {?}
|
|
32
|
-
*/
|
|
33
|
-
Logger.prototype.warn = function (message, optionalParams) { };
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Mapping of entity type name to its plural
|
|
37
|
-
* @record
|
|
38
|
-
*/
|
|
39
|
-
export function EntityPluralNames() { }
|
|
40
|
-
/** @type {?} */
|
|
41
4
|
export const PLURAL_NAMES_TOKEN = new InjectionToken('@ngrx/data Plural Names');
|
|
42
|
-
/**
|
|
43
|
-
* @abstract
|
|
44
|
-
*/
|
|
45
5
|
export class Pluralizer {
|
|
46
6
|
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @abstract
|
|
50
|
-
* @param {?} name
|
|
51
|
-
* @return {?}
|
|
52
|
-
*/
|
|
53
|
-
Pluralizer.prototype.pluralize = function (name) { };
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGEvIiwic291cmNlcyI6WyJzcmMvdXRpbHMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFL0MsTUFBTSxPQUFnQixNQUFNO0NBSTNCOzs7Ozs7OztJQUhDLGdFQUE4RDs7Ozs7OztJQUM5RCw4REFBNEQ7Ozs7Ozs7SUFDNUQsK0RBQTZEOzs7Ozs7QUFNL0QsdUNBRUM7O0FBRUQsTUFBTSxPQUFPLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCx5QkFBeUIsQ0FDMUI7Ozs7QUFFRCxNQUFNLE9BQWdCLFVBQVU7Q0FFL0I7Ozs7Ozs7SUFEQyxxREFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9nZ2VyIHtcbiAgYWJzdHJhY3QgZXJyb3IobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgYWJzdHJhY3QgbG9nKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG4gIGFic3RyYWN0IHdhcm4obWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbn1cblxuLyoqXG4gKiBNYXBwaW5nIG9mIGVudGl0eSB0eXBlIG5hbWUgdG8gaXRzIHBsdXJhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVBsdXJhbE5hbWVzIHtcbiAgW2VudGl0eU5hbWU6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFBMVVJBTF9OQU1FU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlQbHVyYWxOYW1lcz4oXG4gICdAbmdyeC9kYXRhIFBsdXJhbCBOYW1lcydcbik7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVyYWxpemVyIHtcbiAgYWJzdHJhY3QgcGx1cmFsaXplKG5hbWU6IHN0cmluZyk6IHN0cmluZztcbn1cbiJdfQ==
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZGF0YS9zcmMvdXRpbHMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sT0FBZ0IsTUFBTTtDQUkzQjtBQVNELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCx5QkFBeUIsQ0FDMUIsQ0FBQztBQUVGLE1BQU0sT0FBZ0IsVUFBVTtDQUUvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2dnZXIge1xuICBhYnN0cmFjdCBlcnJvcihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBhYnN0cmFjdCBsb2cobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgYWJzdHJhY3Qgd2FybihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xufVxuXG4vKipcbiAqIE1hcHBpbmcgb2YgZW50aXR5IHR5cGUgbmFtZSB0byBpdHMgcGx1cmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5UGx1cmFsTmFtZXMge1xuICBbZW50aXR5TmFtZTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgUExVUkFMX05BTUVTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEVudGl0eVBsdXJhbE5hbWVzPihcbiAgJ0BuZ3J4L2RhdGEgUGx1cmFsIE5hbWVzJ1xuKTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdXJhbGl6ZXIge1xuICBhYnN0cmFjdCBwbHVyYWxpemUobmFtZTogc3RyaW5nKTogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: src/utils/utilities.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
1
|
/**
|
|
7
2
|
* Default function that returns the entity's primary key (pkey).
|
|
8
3
|
* Assumes that the entity has an `id` pkey property.
|
|
9
4
|
* Returns `undefined` if no entity or `id`.
|
|
10
5
|
* Every selectId fn must return `undefined` when it cannot produce a full pkey.
|
|
11
|
-
* @param {?} entity
|
|
12
|
-
* @return {?}
|
|
13
6
|
*/
|
|
14
7
|
export function defaultSelectId(entity) {
|
|
15
8
|
return entity == null ? undefined : entity.id;
|
|
@@ -24,11 +17,7 @@ export function defaultSelectId(entity) {
|
|
|
24
17
|
* actions.pipe(ofEntityOp(...persistOps)) // works
|
|
25
18
|
* actions.pipe(ofEntityOp(persistOps)) // also works
|
|
26
19
|
* ```
|
|
27
|
-
*
|
|
28
|
-
* @template T
|
|
29
|
-
* @param {?=} args
|
|
30
|
-
* @return {?}
|
|
31
|
-
*/
|
|
20
|
+
* */
|
|
32
21
|
export function flattenArgs(args) {
|
|
33
22
|
if (args == null) {
|
|
34
23
|
return [];
|
|
@@ -43,29 +32,21 @@ export function flattenArgs(args) {
|
|
|
43
32
|
* Return a function that converts an entity (or partial entity) into the `Update<T>`
|
|
44
33
|
* whose `id` is the primary key and
|
|
45
34
|
* `changes` is the entity (or partial entity of changes).
|
|
46
|
-
* @template T
|
|
47
|
-
* @param {?=} selectId
|
|
48
|
-
* @return {?}
|
|
49
35
|
*/
|
|
50
36
|
export function toUpdateFactory(selectId) {
|
|
51
|
-
selectId = selectId ||
|
|
37
|
+
selectId = selectId || defaultSelectId;
|
|
52
38
|
/**
|
|
53
39
|
* Convert an entity (or partial entity) into the `Update<T>`
|
|
54
40
|
* whose `id` is the primary key and
|
|
55
41
|
* `changes` is the entity (or partial entity of changes).
|
|
56
42
|
* @param selectId function that returns the entity's primary key (id)
|
|
57
43
|
*/
|
|
58
|
-
return (
|
|
59
|
-
|
|
60
|
-
* @return {?}
|
|
61
|
-
*/
|
|
62
|
-
function toUpdate(entity) {
|
|
63
|
-
/** @type {?} */
|
|
64
|
-
const id = (/** @type {?} */ (selectId))((/** @type {?} */ (entity)));
|
|
44
|
+
return function toUpdate(entity) {
|
|
45
|
+
const id = selectId(entity);
|
|
65
46
|
if (id == null) {
|
|
66
47
|
throw new Error('Primary key may not be null/undefined.');
|
|
67
48
|
}
|
|
68
49
|
return entity && { id, changes: entity };
|
|
69
|
-
}
|
|
50
|
+
};
|
|
70
51
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRhL3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQVc7SUFDekMsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7Ozs7Ozs7O0tBVUs7QUFDTCxNQUFNLFVBQVUsV0FBVyxDQUFJLElBQVk7SUFDekMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDMUIsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQzNCO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUksUUFBd0I7SUFDekQsUUFBUSxHQUFHLFFBQVEsSUFBSyxlQUFpQyxDQUFDO0lBQzFEOzs7OztPQUtHO0lBQ0gsT0FBTyxTQUFTLFFBQVEsQ0FBQyxNQUFrQjtRQUN6QyxNQUFNLEVBQUUsR0FBUSxRQUFTLENBQUMsTUFBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxNQUFNLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzNDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZFNlbGVjdG9yLCBVcGRhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuXG4vKipcbiAqIERlZmF1bHQgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBlbnRpdHkncyBwcmltYXJ5IGtleSAocGtleSkuXG4gKiBBc3N1bWVzIHRoYXQgdGhlIGVudGl0eSBoYXMgYW4gYGlkYCBwa2V5IHByb3BlcnR5LlxuICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiBubyBlbnRpdHkgb3IgYGlkYC5cbiAqIEV2ZXJ5IHNlbGVjdElkIGZuIG11c3QgcmV0dXJuIGB1bmRlZmluZWRgIHdoZW4gaXQgY2Fubm90IHByb2R1Y2UgYSBmdWxsIHBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U2VsZWN0SWQoZW50aXR5OiBhbnkpIHtcbiAgcmV0dXJuIGVudGl0eSA9PSBudWxsID8gdW5kZWZpbmVkIDogZW50aXR5LmlkO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gZmlyc3QgYXJnIGlmIGl0IGlzIGFuIGFycmF5XG4gKiBBbGxvd3MgZm4gd2l0aCAuLi5yZXN0IHNpZ25hdHVyZSB0byBiZSBjYWxsZWQgd2l0aCBhbiBhcnJheSBpbnN0ZWFkIG9mIHNwcmVhZFxuICogRXhhbXBsZTpcbiAqIGBgYFxuICogLy8gU2VlIGVudGl0eS1hY3Rpb24tb3BlcmF0b3JzLnRzXG4gKiBjb25zdCBwZXJzaXN0T3BzID0gW0VudGl0eU9wLlFVRVJZX0FMTCwgRW50aXR5T3AuQURELCAuLi5dO1xuICogYWN0aW9ucy5waXBlKG9mRW50aXR5T3AoLi4ucGVyc2lzdE9wcykpIC8vIHdvcmtzXG4gKiBhY3Rpb25zLnBpcGUob2ZFbnRpdHlPcChwZXJzaXN0T3BzKSkgLy8gYWxzbyB3b3Jrc1xuICogYGBgXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5BcmdzPFQ+KGFyZ3M/OiBhbnlbXSk6IFRbXSB7XG4gIGlmIChhcmdzID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHtcbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSBhcmdzO1xuICAgIGFyZ3MgPSBbLi4uaGVhZCwgLi4udGFpbF07XG4gIH1cbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhbiBlbnRpdHkgKG9yIHBhcnRpYWwgZW50aXR5KSBpbnRvIHRoZSBgVXBkYXRlPFQ+YFxuICogd2hvc2UgYGlkYCBpcyB0aGUgcHJpbWFyeSBrZXkgYW5kXG4gKiBgY2hhbmdlc2AgaXMgdGhlIGVudGl0eSAob3IgcGFydGlhbCBlbnRpdHkgb2YgY2hhbmdlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VwZGF0ZUZhY3Rvcnk8VD4oc2VsZWN0SWQ/OiBJZFNlbGVjdG9yPFQ+KSB7XG4gIHNlbGVjdElkID0gc2VsZWN0SWQgfHwgKGRlZmF1bHRTZWxlY3RJZCBhcyBJZFNlbGVjdG9yPFQ+KTtcbiAgLyoqXG4gICAqIENvbnZlcnQgYW4gZW50aXR5IChvciBwYXJ0aWFsIGVudGl0eSkgaW50byB0aGUgYFVwZGF0ZTxUPmBcbiAgICogd2hvc2UgYGlkYCBpcyB0aGUgcHJpbWFyeSBrZXkgYW5kXG4gICAqIGBjaGFuZ2VzYCBpcyB0aGUgZW50aXR5IChvciBwYXJ0aWFsIGVudGl0eSBvZiBjaGFuZ2VzKS5cbiAgICogQHBhcmFtIHNlbGVjdElkIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkgKGlkKVxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIHRvVXBkYXRlKGVudGl0eTogUGFydGlhbDxUPik6IFVwZGF0ZTxUPiB7XG4gICAgY29uc3QgaWQ6IGFueSA9IHNlbGVjdElkIShlbnRpdHkgYXMgVCk7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJpbWFyeSBrZXkgbWF5IG5vdCBiZSBudWxsL3VuZGVmaW5lZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudGl0eSAmJiB7IGlkLCBjaGFuZ2VzOiBlbnRpdHkgfTtcbiAgfTtcbn1cbiJdfQ==
|