@ngrx/entity 6.0.1 → 7.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/bundles/entity.umd.js +419 -369
- package/bundles/entity.umd.js.map +1 -1
- package/bundles/entity.umd.min.js +2 -2
- package/bundles/entity.umd.min.js.map +1 -1
- package/entity.metadata.json +1 -1
- package/esm2015/index.js +3 -3
- package/esm2015/public_api.js +3 -3
- package/esm2015/src/create_adapter.js +8 -5
- package/esm2015/src/entity_state.js +2 -2
- package/esm2015/src/index.js +3 -2
- package/esm2015/src/models.js +113 -54
- package/esm2015/src/sorted_state_adapter.js +64 -23
- package/esm2015/src/state_adapter.js +10 -8
- package/esm2015/src/state_selectors.js +10 -6
- package/esm2015/src/unsorted_state_adapter.js +65 -23
- package/esm2015/src/utils.js +21 -0
- package/esm5/index.js +1 -1
- package/esm5/src/create_adapter.js +11 -8
- package/esm5/src/entity_state.js +1 -1
- package/esm5/src/index.js +2 -1
- package/esm5/src/models.js +1 -1
- package/esm5/src/sorted_state_adapter.js +18 -6
- package/esm5/src/state_adapter.js +11 -8
- package/esm5/src/state_selectors.js +1 -1
- package/esm5/src/unsorted_state_adapter.js +26 -7
- package/esm5/src/utils.js +10 -0
- package/fesm2015/entity.js +181 -69
- package/fesm2015/entity.js.map +1 -1
- package/fesm5/entity.js +86 -36
- package/fesm5/entity.js.map +1 -1
- package/migrations/6_0_0/index.js +3 -3
- package/package.json +4 -4
- package/schematics-core/index.d.ts +6 -6
- package/schematics-core/index.js +5 -3
- package/schematics-core/utility/ast-utils.js +13 -11
- package/schematics-core/utility/change.js +1 -1
- package/schematics-core/utility/config.js +1 -1
- package/schematics-core/utility/find-module.js +2 -2
- package/schematics-core/utility/ngrx-utils.d.ts +1 -1
- package/schematics-core/utility/ngrx-utils.js +12 -12
- package/schematics-core/utility/package.js +1 -1
- package/schematics-core/utility/parse-name.js +1 -1
- package/schematics-core/utility/project.d.ts +12 -0
- package/schematics-core/utility/project.js +12 -3
- package/schematics-core/utility/route-utils.js +1 -1
- package/schematics-core/utility/strings.js +1 -1
- package/schematics-core/utility/update.js +1 -1
- package/src/index.d.ts +1 -1
- package/src/models.d.ts +16 -20
- package/src/state_adapter.d.ts +1 -1
- package/src/utils.d.ts +2 -0
|
@@ -9,9 +9,10 @@ var __values = (this && this.__values) || function (o) {
|
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
11
|
import { createStateOperator, DidMutate } from './state_adapter';
|
|
12
|
+
import { selectIdValue } from './utils';
|
|
12
13
|
export function createUnsortedStateAdapter(selectId) {
|
|
13
14
|
function addOneMutably(entity, state) {
|
|
14
|
-
var key =
|
|
15
|
+
var key = selectIdValue(entity, selectId);
|
|
15
16
|
if (key in state.entities) {
|
|
16
17
|
return DidMutate.None;
|
|
17
18
|
}
|
|
@@ -20,6 +21,7 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
20
21
|
return DidMutate.Both;
|
|
21
22
|
}
|
|
22
23
|
function addManyMutably(entities, state) {
|
|
24
|
+
var e_1, _a;
|
|
23
25
|
var didMutate = false;
|
|
24
26
|
try {
|
|
25
27
|
for (var entities_1 = __values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {
|
|
@@ -35,7 +37,6 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
35
37
|
finally { if (e_1) throw e_1.error; }
|
|
36
38
|
}
|
|
37
39
|
return didMutate ? DidMutate.Both : DidMutate.None;
|
|
38
|
-
var e_1, _a;
|
|
39
40
|
}
|
|
40
41
|
function addAllMutably(entities, state) {
|
|
41
42
|
state.ids = [];
|
|
@@ -46,7 +47,10 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
46
47
|
function removeOneMutably(key, state) {
|
|
47
48
|
return removeManyMutably([key], state);
|
|
48
49
|
}
|
|
49
|
-
function removeManyMutably(
|
|
50
|
+
function removeManyMutably(keysOrPredicate, state) {
|
|
51
|
+
var keys = keysOrPredicate instanceof Array
|
|
52
|
+
? keysOrPredicate
|
|
53
|
+
: state.ids.filter(function (key) { return keysOrPredicate(state.entities[key]); });
|
|
50
54
|
var didMutate = keys
|
|
51
55
|
.filter(function (key) { return key in state.entities; })
|
|
52
56
|
.map(function (key) { return delete state.entities[key]; }).length > 0;
|
|
@@ -64,7 +68,7 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
64
68
|
function takeNewKey(keys, update, state) {
|
|
65
69
|
var original = state.entities[update.id];
|
|
66
70
|
var updated = Object.assign({}, original, update.changes);
|
|
67
|
-
var newKey =
|
|
71
|
+
var newKey = selectIdValue(updated, selectId);
|
|
68
72
|
var hasNewKey = newKey !== update.id;
|
|
69
73
|
if (hasNewKey) {
|
|
70
74
|
keys[update.id] = newKey;
|
|
@@ -92,16 +96,31 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
92
96
|
}
|
|
93
97
|
return DidMutate.None;
|
|
94
98
|
}
|
|
99
|
+
function mapMutably(map, state) {
|
|
100
|
+
var changes = state.ids.reduce(function (changes, id) {
|
|
101
|
+
var change = map(state.entities[id]);
|
|
102
|
+
if (change !== state.entities[id]) {
|
|
103
|
+
changes.push({ id: id, changes: change });
|
|
104
|
+
}
|
|
105
|
+
return changes;
|
|
106
|
+
}, []);
|
|
107
|
+
var updates = changes.filter(function (_a) {
|
|
108
|
+
var id = _a.id;
|
|
109
|
+
return id in state.entities;
|
|
110
|
+
});
|
|
111
|
+
return updateManyMutably(updates, state);
|
|
112
|
+
}
|
|
95
113
|
function upsertOneMutably(entity, state) {
|
|
96
114
|
return upsertManyMutably([entity], state);
|
|
97
115
|
}
|
|
98
116
|
function upsertManyMutably(entities, state) {
|
|
117
|
+
var e_2, _a;
|
|
99
118
|
var added = [];
|
|
100
119
|
var updated = [];
|
|
101
120
|
try {
|
|
102
121
|
for (var entities_2 = __values(entities), entities_2_1 = entities_2.next(); !entities_2_1.done; entities_2_1 = entities_2.next()) {
|
|
103
122
|
var entity = entities_2_1.value;
|
|
104
|
-
var id =
|
|
123
|
+
var id = selectIdValue(entity, selectId);
|
|
105
124
|
if (id in state.entities) {
|
|
106
125
|
updated.push({ id: id, changes: entity });
|
|
107
126
|
}
|
|
@@ -129,7 +148,6 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
129
148
|
default:
|
|
130
149
|
return DidMutate.EntitiesOnly;
|
|
131
150
|
}
|
|
132
|
-
var e_2, _a;
|
|
133
151
|
}
|
|
134
152
|
return {
|
|
135
153
|
removeAll: removeAll,
|
|
@@ -142,7 +160,8 @@ export function createUnsortedStateAdapter(selectId) {
|
|
|
142
160
|
upsertMany: createStateOperator(upsertManyMutably),
|
|
143
161
|
removeOne: createStateOperator(removeOneMutably),
|
|
144
162
|
removeMany: createStateOperator(removeManyMutably),
|
|
163
|
+
map: createStateOperator(mapMutably),
|
|
145
164
|
};
|
|
146
165
|
}
|
|
147
166
|
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zb3J0ZWRfc3RhdGVfYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZW50aXR5L3NyYy91bnNvcnRlZF9zdGF0ZV9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLakUsTUFBTSxxQ0FBd0MsUUFBdUI7SUFJbkUsdUJBQXVCLE1BQVcsRUFBRSxLQUFVO1FBQzVDLElBQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3QixFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDdkI7UUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUU3QixNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztLQUN2QjtJQUdELHdCQUF3QixRQUFlLEVBQUUsS0FBVTtRQUNqRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7O1lBRXRCLEdBQUcsQ0FBQyxDQUFpQixJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQXhCLElBQU0sTUFBTSxxQkFBQTtnQkFDZixTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxTQUFTLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQzthQUMxRTs7Ozs7Ozs7O1FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQzs7S0FD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Q0FBQyxpQkFBaUIsQ0FBQztLQUNuRCxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdGF0ZSwgRW50aXR5U3RhdGVBZGFwdGVyLCBJZFNlbGVjdG9yLCBVcGRhdGUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBjcmVhdGVTdGF0ZU9wZXJhdG9yLCBEaWRNdXRhdGUgfSBmcm9tICcuL3N0YXRlX2FkYXB0ZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVW5zb3J0ZWRTdGF0ZUFkYXB0ZXI8VD4oXG4gIHNlbGVjdElkOiBJZFNlbGVjdG9yPFQ+XG4pOiBFbnRpdHlTdGF0ZUFkYXB0ZXI8VD47XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVW5zb3J0ZWRTdGF0ZUFkYXB0ZXI8VD4oc2VsZWN0SWQ6IElkU2VsZWN0b3I8VD4pOiBhbnkge1xuICB0eXBlIFIgPSBFbnRpdHlTdGF0ZTxUPjtcblxuICBmdW5jdGlvbiBhZGRPbmVNdXRhYmx5KGVudGl0eTogVCwgc3RhdGU6IFIpOiBEaWRNdXRhdGU7XG4gIGZ1bmN0aW9uIGFkZE9uZU11dGFibHkoZW50aXR5OiBhbnksIHN0YXRlOiBhbnkpOiBEaWRNdXRhdGUge1xuICAgIGNvbnN0IGtleSA9IHNlbGVjdElkKGVudGl0eSk7XG5cbiAgICBpZiAoa2V5IGluIHN0YXRlLmVudGl0aWVzKSB7XG4gICAgICByZXR1cm4gRGlkTXV0YXRlLk5vbmU7XG4gICAgfVxuXG4gICAgc3RhdGUuaWRzLnB1c2goa2V5KTtcbiAgICBzdGF0ZS5lbnRpdGllc1trZXldID0gZW50aXR5O1xuXG4gICAgcmV0dXJuIERpZE11dGF0ZS5Cb3RoO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkTWFueU11dGFibHkoZW50aXRpZXM6IFRbXSwgc3RhdGU6IFIpOiBEaWRNdXRhdGU7XG4gIGZ1bmN0aW9uIGFkZE1hbnlNdXRhYmx5KGVudGl0aWVzOiBhbnlbXSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgbGV0IGRpZE11dGF0ZSA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXRpZXMpIHtcbiAgICAgIGRpZE11dGF0ZSA9IGFkZE9uZU11dGFibHkoZW50aXR5LCBzdGF0ZSkgIT09IERpZE11dGF0ZS5Ob25lIHx8IGRpZE11dGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlkTXV0YXRlID8gRGlkTXV0YXRlLkJvdGggOiBEaWRNdXRhdGUuTm9uZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEFsbE11dGFibHkoZW50aXRpZXM6IFRbXSwgc3RhdGU6IFIpOiBEaWRNdXRhdGU7XG4gIGZ1bmN0aW9uIGFkZEFsbE11dGFibHkoZW50aXRpZXM6IGFueVtdLCBzdGF0ZTogYW55KTogRGlkTXV0YXRlIHtcbiAgICBzdGF0ZS5pZHMgPSBbXTtcbiAgICBzdGF0ZS5lbnRpdGllcyA9IHt9O1xuXG4gICAgYWRkTWFueU11dGFibHkoZW50aXRpZXMsIHN0YXRlKTtcblxuICAgIHJldHVybiBEaWRNdXRhdGUuQm90aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZU9uZU11dGFibHkoa2V5OiBULCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gcmVtb3ZlT25lTXV0YWJseShrZXk6IGFueSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgcmV0dXJuIHJlbW92ZU1hbnlNdXRhYmx5KFtrZXldLCBzdGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVNYW55TXV0YWJseShrZXlzOiBUW10sIHN0YXRlOiBSKTogRGlkTXV0YXRlO1xuICBmdW5jdGlvbiByZW1vdmVNYW55TXV0YWJseShrZXlzOiBhbnlbXSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgY29uc3QgZGlkTXV0YXRlID1cbiAgICAgIGtleXNcbiAgICAgICAgLmZpbHRlcihrZXkgPT4ga2V5IGluIHN0YXRlLmVudGl0aWVzKVxuICAgICAgICAubWFwKGtleSA9PiBkZWxldGUgc3RhdGUuZW50aXRpZXNba2V5XSkubGVuZ3RoID4gMDtcblxuICAgIGlmIChkaWRNdXRhdGUpIHtcbiAgICAgIHN0YXRlLmlkcyA9IHN0YXRlLmlkcy5maWx0ZXIoKGlkOiBhbnkpID0+IGlkIGluIHN0YXRlLmVudGl0aWVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlkTXV0YXRlID8gRGlkTXV0YXRlLkJvdGggOiBEaWRNdXRhdGUuTm9uZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFsbDxTIGV4dGVuZHMgUj4oc3RhdGU6IFMpOiBTO1xuICBmdW5jdGlvbiByZW1vdmVBbGw8UyBleHRlbmRzIFI+KHN0YXRlOiBhbnkpOiBTIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgIGlkczogW10sXG4gICAgICBlbnRpdGllczoge30sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0YWtlTmV3S2V5KFxuICAgIGtleXM6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICB1cGRhdGU6IFVwZGF0ZTxUPixcbiAgICBzdGF0ZTogUlxuICApOiB2b2lkO1xuICBmdW5jdGlvbiB0YWtlTmV3S2V5KFxuICAgIGtleXM6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSxcbiAgICB1cGRhdGU6IFVwZGF0ZTxUPixcbiAgICBzdGF0ZTogYW55XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9yaWdpbmFsID0gc3RhdGUuZW50aXRpZXNbdXBkYXRlLmlkXTtcbiAgICBjb25zdCB1cGRhdGVkOiBUID0gT2JqZWN0LmFzc2lnbih7fSwgb3JpZ2luYWwsIHVwZGF0ZS5jaGFuZ2VzKTtcbiAgICBjb25zdCBuZXdLZXkgPSBzZWxlY3RJZCh1cGRhdGVkKTtcbiAgICBjb25zdCBoYXNOZXdLZXkgPSBuZXdLZXkgIT09IHVwZGF0ZS5pZDtcblxuICAgIGlmIChoYXNOZXdLZXkpIHtcbiAgICAgIGtleXNbdXBkYXRlLmlkXSA9IG5ld0tleTtcbiAgICAgIGRlbGV0ZSBzdGF0ZS5lbnRpdGllc1t1cGRhdGUuaWRdO1xuICAgIH1cblxuICAgIHN0YXRlLmVudGl0aWVzW25ld0tleV0gPSB1cGRhdGVkO1xuXG4gICAgcmV0dXJuIGhhc05ld0tleTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZU9uZU11dGFibHkodXBkYXRlOiBVcGRhdGU8VD4sIHN0YXRlOiBSKTogRGlkTXV0YXRlO1xuICBmdW5jdGlvbiB1cGRhdGVPbmVNdXRhYmx5KHVwZGF0ZTogYW55LCBzdGF0ZTogYW55KTogRGlkTXV0YXRlIHtcbiAgICByZXR1cm4gdXBkYXRlTWFueU11dGFibHkoW3VwZGF0ZV0sIHN0YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZU1hbnlNdXRhYmx5KHVwZGF0ZXM6IFVwZGF0ZTxUPltdLCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gdXBkYXRlTWFueU11dGFibHkodXBkYXRlczogYW55W10sIHN0YXRlOiBhbnkpOiBEaWRNdXRhdGUge1xuICAgIGNvbnN0IG5ld0tleXM6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgdXBkYXRlcyA9IHVwZGF0ZXMuZmlsdGVyKHVwZGF0ZSA9PiB1cGRhdGUuaWQgaW4gc3RhdGUuZW50aXRpZXMpO1xuXG4gICAgY29uc3QgZGlkTXV0YXRlRW50aXRpZXMgPSB1cGRhdGVzLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAoZGlkTXV0YXRlRW50aXRpZXMpIHtcbiAgICAgIGNvbnN0IGRpZE11dGF0ZUlkcyA9XG4gICAgICAgIHVwZGF0ZXMuZmlsdGVyKHVwZGF0ZSA9PiB0YWtlTmV3S2V5KG5ld0tleXMsIHVwZGF0ZSwgc3RhdGUpKS5sZW5ndGggPiAwO1xuXG4gICAgICBpZiAoZGlkTXV0YXRlSWRzKSB7XG4gICAgICAgIHN0YXRlLmlkcyA9IHN0YXRlLmlkcy5tYXAoKGlkOiBhbnkpID0+IG5ld0tleXNbaWRdIHx8IGlkKTtcbiAgICAgICAgcmV0dXJuIERpZE11dGF0ZS5Cb3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIERpZE11dGF0ZS5FbnRpdGllc09ubHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIERpZE11dGF0ZS5Ob25lO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBzZXJ0T25lTXV0YWJseShlbnRpdHk6IFQsIHN0YXRlOiBSKTogRGlkTXV0YXRlO1xuICBmdW5jdGlvbiB1cHNlcnRPbmVNdXRhYmx5KGVudGl0eTogYW55LCBzdGF0ZTogYW55KTogRGlkTXV0YXRlIHtcbiAgICByZXR1cm4gdXBzZXJ0TWFueU11dGFibHkoW2VudGl0eV0sIHN0YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwc2VydE1hbnlNdXRhYmx5KGVudGl0aWVzOiBUW10sIHN0YXRlOiBSKTogRGlkTXV0YXRlO1xuICBmdW5jdGlvbiB1cHNlcnRNYW55TXV0YWJseShlbnRpdGllczogYW55W10sIHN0YXRlOiBhbnkpOiBEaWRNdXRhdGUge1xuICAgIGNvbnN0IGFkZGVkOiBhbnlbXSA9IFtdO1xuICAgIGNvbnN0IHVwZGF0ZWQ6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBlbnRpdGllcykge1xuICAgICAgY29uc3QgaWQgPSBzZWxlY3RJZChlbnRpdHkpO1xuICAgICAgaWYgKGlkIGluIHN0YXRlLmVudGl0aWVzKSB7XG4gICAgICAgIHVwZGF0ZWQucHVzaCh7IGlkLCBjaGFuZ2VzOiBlbnRpdHkgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRlZC5wdXNoKGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGlkTXV0YXRlQnlVcGRhdGVkID0gdXBkYXRlTWFueU11dGFibHkodXBkYXRlZCwgc3RhdGUpO1xuICAgIGNvbnN0IGRpZE11dGF0ZUJ5QWRkZWQgPSBhZGRNYW55TXV0YWJseShhZGRlZCwgc3RhdGUpO1xuXG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIGRpZE11dGF0ZUJ5QWRkZWQgPT09IERpZE11dGF0ZS5Ob25lICYmXG4gICAgICAgIGRpZE11dGF0ZUJ5VXBkYXRlZCA9PT0gRGlkTXV0YXRlLk5vbmU6XG4gICAgICAgIHJldHVybiBEaWRNdXRhdGUuTm9uZTtcbiAgICAgIGNhc2UgZGlkTXV0YXRlQnlBZGRlZCA9PT0gRGlkTXV0YXRlLkJvdGggfHxcbiAgICAgICAgZGlkTXV0YXRlQnlVcGRhdGVkID09PSBEaWRNdXRhdGUuQm90aDpcbiAgICAgICAgcmV0dXJuIERpZE11dGF0ZS5Cb3RoO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIERpZE11dGF0ZS5FbnRpdGllc09ubHk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZW1vdmVBbGwsXG4gICAgYWRkT25lOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKGFkZE9uZU11dGFibHkpLFxuICAgIGFkZE1hbnk6IGNyZWF0ZVN0YXRlT3BlcmF0b3IoYWRkTWFueU11dGFibHkpLFxuICAgIGFkZEFsbDogY3JlYXRlU3RhdGVPcGVyYXRvcihhZGRBbGxNdXRhYmx5KSxcbiAgICB1cGRhdGVPbmU6IGNyZWF0ZVN0YXRlT3BlcmF0b3IodXBkYXRlT25lTXV0YWJseSksXG4gICAgdXBkYXRlTWFueTogY3JlYXRlU3RhdGVPcGVyYXRvcih1cGRhdGVNYW55TXV0YWJseSksXG4gICAgdXBzZXJ0T25lOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHVwc2VydE9uZU11dGFibHkpLFxuICAgIHVwc2VydE1hbnk6IGNyZWF0ZVN0YXRlT3BlcmF0b3IodXBzZXJ0TWFueU11dGFibHkpLFxuICAgIHJlbW92ZU9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcihyZW1vdmVPbmVNdXRhYmx5KSxcbiAgICByZW1vdmVNYW55OiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHJlbW92ZU1hbnlNdXRhYmx5KSxcbiAgfTtcbn1cbiJdfQ==
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zb3J0ZWRfc3RhdGVfYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZW50aXR5L3NyYy91bnNvcnRlZF9zdGF0ZV9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFRQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUt4QyxNQUFNLFVBQVUsMEJBQTBCLENBQUksUUFBdUI7SUFJbkUsU0FBUyxhQUFhLENBQUMsTUFBVyxFQUFFLEtBQVU7UUFDNUMsSUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1QyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztTQUN2QjtRQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRTdCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBR0QsU0FBUyxjQUFjLENBQUMsUUFBZSxFQUFFLEtBQVU7O1FBQ2pELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQzs7WUFFdEIsS0FBcUIsSUFBQSxhQUFBLFNBQUEsUUFBUSxDQUFBLGtDQUFBLHdEQUFFO2dCQUExQixJQUFNLE1BQU0scUJBQUE7Z0JBQ2YsU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUM7YUFDMUU7Ozs7Ozs7OztRQUVELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMs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S0FBSyxDQUFDLENBQUM7UUFDN0QsSUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXRELFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDdEMsa0JBQWtCLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ3JDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztZQUN4QixLQUFLLGdCQUFnQixLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUN0QyxrQkFBa0IsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDckMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3hCO2dCQUNFLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsU0FBUyxXQUFBO1FBQ1QsTUFBTSxFQUFFLG1CQUFtQixDQUFDLGFBQWEsQ0FBQztRQUMxQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsY0FBYyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7UUFDMUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDO1FBQ2hELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRCxTQUFTLEVBQUUsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUM7UUFDaEQsVUFBVSxFQUFFLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDO1FBQ2xELFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRCxVQUFVLEVBQUUsbUJBQW1CLENBQUMsaUJBQWlCLENBQUM7UUFDbEQsR0FBRyxFQUFFLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztLQUNyQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudGl0eVN0YXRlLFxuICBFbnRpdHlTdGF0ZUFkYXB0ZXIsXG4gIElkU2VsZWN0b3IsXG4gIFVwZGF0ZSxcbiAgUHJlZGljYXRlLFxuICBFbnRpdHlNYXAsXG59IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGNyZWF0ZVN0YXRlT3BlcmF0b3IsIERpZE11dGF0ZSB9IGZyb20gJy4vc3RhdGVfYWRhcHRlcic7XG5pbXBvcnQgeyBzZWxlY3RJZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbnNvcnRlZFN0YXRlQWRhcHRlcjxUPihcbiAgc2VsZWN0SWQ6IElkU2VsZWN0b3I8VD5cbik6IEVudGl0eVN0YXRlQWRhcHRlcjxUPjtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbnNvcnRlZFN0YXRlQWRhcHRlcjxUPihzZWxlY3RJZDogSWRTZWxlY3RvcjxUPik6IGFueSB7XG4gIHR5cGUgUiA9IEVudGl0eVN0YXRlPFQ+O1xuXG4gIGZ1bmN0aW9uIGFkZE9uZU11dGFibHkoZW50aXR5OiBULCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gYWRkT25lTXV0YWJseShlbnRpdHk6IGFueSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgY29uc3Qga2V5ID0gc2VsZWN0SWRWYWx1ZShlbnRpdHksIHNlbGVjdElkKTtcblxuICAgIGlmIChrZXkgaW4gc3RhdGUuZW50aXRpZXMpIHtcbiAgICAgIHJldHVybiBEaWRNdXRhdGUuTm9uZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5pZHMucHVzaChrZXkpO1xuICAgIHN0YXRlLmVudGl0aWVzW2tleV0gPSBlbnRpdHk7XG5cbiAgICByZXR1cm4gRGlkTXV0YXRlLkJvdGg7XG4gIH1cblxuICBmdW5jdGlvbiBhZGRNYW55TXV0YWJseShlbnRpdGllczogVFtdLCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gYWRkTWFueU11dGFibHkoZW50aXRpZXM6IGFueVtdLCBzdGF0ZTogYW55KTogRGlkTXV0YXRlIHtcbiAgICBsZXQgZGlkTXV0YXRlID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBlbnRpdGllcykge1xuICAgICAgZGlkTXV0YXRlID0gYWRkT25lTXV0YWJseShlbnRpdHksIHN0YXRlKSAhPT0gRGlkTXV0YXRlLk5vbmUgfHwgZGlkTXV0YXRlO1xuICAgIH1cblxuICAgIHJldHVybiBkaWRNdXRhdGUgPyBEaWRNdXRhdGUuQm90aCA6IERpZE11dGF0ZS5Ob25lO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkQWxsTXV0YWJseShlbnRpdGllczogVFtdLCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gYWRkQWxsTXV0YWJseShlbnRpdGllczogYW55W10sIHN0YXRlOiBhbnkpOiBEaWRNdXRhdGUge1xuICAgIHN0YXRlLmlkcyA9IFtdO1xuICAgIHN0YXRlLmVudGl0aWVzID0ge307XG5cbiAgICBhZGRNYW55TXV0YWJseShlbnRpdGllcywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIERpZE11dGF0ZS5Cb3RoO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlT25lTXV0YWJseShrZXk6IFQsIHN0YXRlOiBSKTogRGlkTXV0YXRlO1xuICBmdW5jdGlvbiByZW1vdmVPbmVNdXRhYmx5KGtleTogYW55LCBzdGF0ZTogYW55KTogRGlkTXV0YXRlIHtcbiAgICByZXR1cm4gcmVtb3ZlTWFueU11dGFibHkoW2tleV0sIHN0YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZU1hbnlNdXRhYmx5KGtleXM6IFRbXSwgc3RhdGU6IFIpOiBEaWRNdXRhdGU7XG4gIGZ1bmN0aW9uIHJlbW92ZU1hbnlNdXRhYmx5KHByZWRpY2F0ZTogUHJlZGljYXRlPFQ+LCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gcmVtb3ZlTWFueU11dGFibHkoXG4gICAga2V5c09yUHJlZGljYXRlOiBhbnlbXSB8IFByZWRpY2F0ZTxUPixcbiAgICBzdGF0ZTogYW55XG4gICk6IERpZE11dGF0ZSB7XG4gICAgY29uc3Qga2V5cyA9XG4gICAgICBrZXlzT3JQcmVkaWNhdGUgaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICA/IGtleXNPclByZWRpY2F0ZVxuICAgICAgICA6IHN0YXRlLmlkcy5maWx0ZXIoKGtleTogYW55KSA9PiBrZXlzT3JQcmVkaWNhdGUoc3RhdGUuZW50aXRpZXNba2V5XSkpO1xuXG4gICAgY29uc3QgZGlkTXV0YXRlID1cbiAgICAgIGtleXNcbiAgICAgICAgLmZpbHRlcigoa2V5OiBhbnkpID0+IGtleSBpbiBzdGF0ZS5lbnRpdGllcylcbiAgICAgICAgLm1hcCgoa2V5OiBhbnkpID0+IGRlbGV0ZSBzdGF0ZS5lbnRpdGllc1trZXldKS5sZW5ndGggPiAwO1xuXG4gICAgaWYgKGRpZE11dGF0ZSkge1xuICAgICAgc3RhdGUuaWRzID0gc3RhdGUuaWRzLmZpbHRlcigoaWQ6IGFueSkgPT4gaWQgaW4gc3RhdGUuZW50aXRpZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBkaWRNdXRhdGUgPyBEaWRNdXRhdGUuQm90aCA6IERpZE11dGF0ZS5Ob25lO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQWxsPFMgZXh0ZW5kcyBSPihzdGF0ZTogUyk6IFM7XG4gIGZ1bmN0aW9uIHJlbW92ZUFsbDxTIGV4dGVuZHMgUj4oc3RhdGU6IGFueSk6IFMge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwge1xuICAgICAgaWRzOiBbXSxcbiAgICAgIGVudGl0aWVzOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRha2VOZXdLZXkoXG4gICAga2V5czogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIHVwZGF0ZTogVXBkYXRlPFQ+LFxuICAgIHN0YXRlOiBSXG4gICk6IHZvaWQ7XG4gIGZ1bmN0aW9uIHRha2VOZXdLZXkoXG4gICAga2V5czogeyBbaWQ6IHN0cmluZ106IGFueSB9LFxuICAgIHVwZGF0ZTogVXBkYXRlPFQ+LFxuICAgIHN0YXRlOiBhbnlcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSBzdGF0ZS5lbnRpdGllc1t1cGRhdGUuaWRdO1xuICAgIGNvbnN0IHVwZGF0ZWQ6IFQgPSBPYmplY3QuYXNzaWduKHt9LCBvcmlnaW5hbCwgdXBkYXRlLmNoYW5nZXMpO1xuICAgIGNvbnN0IG5ld0tleSA9IHNlbGVjdElkVmFsdWUodXBkYXRlZCwgc2VsZWN0SWQpO1xuICAgIGNvbnN0IGhhc05ld0tleSA9IG5ld0tleSAhPT0gdXBkYXRlLmlkO1xuXG4gICAgaWYgKGhhc05ld0tleSkge1xuICAgICAga2V5c1t1cGRhdGUuaWRdID0gbmV3S2V5O1xuICAgICAgZGVsZXRlIHN0YXRlLmVudGl0aWVzW3VwZGF0ZS5pZF07XG4gICAgfVxuXG4gICAgc3RhdGUuZW50aXRpZXNbbmV3S2V5XSA9IHVwZGF0ZWQ7XG5cbiAgICByZXR1cm4gaGFzTmV3S2V5O1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlT25lTXV0YWJseSh1cGRhdGU6IFVwZGF0ZTxUPiwgc3RhdGU6IFIpOiBEaWRNdXRhdGU7XG4gIGZ1bmN0aW9uIHVwZGF0ZU9uZU11dGFibHkodXBkYXRlOiBhbnksIHN0YXRlOiBhbnkpOiBEaWRNdXRhdGUge1xuICAgIHJldHVybiB1cGRhdGVNYW55TXV0YWJseShbdXBkYXRlXSwgc3RhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlTWFueU11dGFibHkodXBkYXRlczogVXBkYXRlPFQ+W10sIHN0YXRlOiBSKTogRGlkTXV0YXRlO1xuICBmdW5jdGlvbiB1cGRhdGVNYW55TXV0YWJseSh1cGRhdGVzOiBhbnlbXSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgY29uc3QgbmV3S2V5czogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICB1cGRhdGVzID0gdXBkYXRlcy5maWx0ZXIodXBkYXRlID0+IHVwZGF0ZS5pZCBpbiBzdGF0ZS5lbnRpdGllcyk7XG5cbiAgICBjb25zdCBkaWRNdXRhdGVFbnRpdGllcyA9IHVwZGF0ZXMubGVuZ3RoID4gMDtcblxuICAgIGlmIChkaWRNdXRhdGVFbnRpdGllcykge1xuICAgICAgY29uc3QgZGlkTXV0YXRlSWRzID1cbiAgICAgICAgdXBkYXRlcy5maWx0ZXIodXBkYXRlID0+IHRha2VOZXdLZXkobmV3S2V5cywgdXBkYXRlLCBzdGF0ZSkpLmxlbmd0aCA+IDA7XG5cbiAgICAgIGlmIChkaWRNdXRhdGVJZHMpIHtcbiAgICAgICAgc3RhdGUuaWRzID0gc3RhdGUuaWRzLm1hcCgoaWQ6IGFueSkgPT4gbmV3S2V5c1tpZF0gfHwgaWQpO1xuICAgICAgICByZXR1cm4gRGlkTXV0YXRlLkJvdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gRGlkTXV0YXRlLkVudGl0aWVzT25seTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRGlkTXV0YXRlLk5vbmU7XG4gIH1cblxuICBmdW5jdGlvbiBtYXBNdXRhYmx5KG1hcDogRW50aXR5TWFwPFQ+LCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gbWFwTXV0YWJseShtYXA6IGFueSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgY29uc3QgY2hhbmdlczogVXBkYXRlPFQ+W10gPSBzdGF0ZS5pZHMucmVkdWNlKFxuICAgICAgKGNoYW5nZXM6IGFueVtdLCBpZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IG1hcChzdGF0ZS5lbnRpdGllc1tpZF0pO1xuICAgICAgICBpZiAoY2hhbmdlICE9PSBzdGF0ZS5lbnRpdGllc1tpZF0pIHtcbiAgICAgICAgICBjaGFuZ2VzLnB1c2goeyBpZCwgY2hhbmdlczogY2hhbmdlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VzO1xuICAgICAgfSxcbiAgICAgIFtdXG4gICAgKTtcbiAgICBjb25zdCB1cGRhdGVzID0gY2hhbmdlcy5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgaW4gc3RhdGUuZW50aXRpZXMpO1xuXG4gICAgcmV0dXJuIHVwZGF0ZU1hbnlNdXRhYmx5KHVwZGF0ZXMsIHN0YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwc2VydE9uZU11dGFibHkoZW50aXR5OiBULCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gdXBzZXJ0T25lTXV0YWJseShlbnRpdHk6IGFueSwgc3RhdGU6IGFueSk6IERpZE11dGF0ZSB7XG4gICAgcmV0dXJuIHVwc2VydE1hbnlNdXRhYmx5KFtlbnRpdHldLCBzdGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiB1cHNlcnRNYW55TXV0YWJseShlbnRpdGllczogVFtdLCBzdGF0ZTogUik6IERpZE11dGF0ZTtcbiAgZnVuY3Rpb24gdXBzZXJ0TWFueU11dGFibHkoZW50aXRpZXM6IGFueVtdLCBzdGF0ZTogYW55KTogRGlkTXV0YXRlIHtcbiAgICBjb25zdCBhZGRlZDogYW55W10gPSBbXTtcbiAgICBjb25zdCB1cGRhdGVkOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXRpZXMpIHtcbiAgICAgIGNvbnN0IGlkID0gc2VsZWN0SWRWYWx1ZShlbnRpdHksIHNlbGVjdElkKTtcbiAgICAgIGlmIChpZCBpbiBzdGF0ZS5lbnRpdGllcykge1xuICAgICAgICB1cGRhdGVkLnB1c2goeyBpZCwgY2hhbmdlczogZW50aXR5IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkZWQucHVzaChlbnRpdHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpZE11dGF0ZUJ5VXBkYXRlZCA9IHVwZGF0ZU1hbnlNdXRhYmx5KHVwZGF0ZWQsIHN0YXRlKTtcbiAgICBjb25zdCBkaWRNdXRhdGVCeUFkZGVkID0gYWRkTWFueU11dGFibHkoYWRkZWQsIHN0YXRlKTtcblxuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSBkaWRNdXRhdGVCeUFkZGVkID09PSBEaWRNdXRhdGUuTm9uZSAmJlxuICAgICAgICBkaWRNdXRhdGVCeVVwZGF0ZWQgPT09IERpZE11dGF0ZS5Ob25lOlxuICAgICAgICByZXR1cm4gRGlkTXV0YXRlLk5vbmU7XG4gICAgICBjYXNlIGRpZE11dGF0ZUJ5QWRkZWQgPT09IERpZE11dGF0ZS5Cb3RoIHx8XG4gICAgICAgIGRpZE11dGF0ZUJ5VXBkYXRlZCA9PT0gRGlkTXV0YXRlLkJvdGg6XG4gICAgICAgIHJldHVybiBEaWRNdXRhdGUuQm90aDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBEaWRNdXRhdGUuRW50aXRpZXNPbmx5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVtb3ZlQWxsLFxuICAgIGFkZE9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcihhZGRPbmVNdXRhYmx5KSxcbiAgICBhZGRNYW55OiBjcmVhdGVTdGF0ZU9wZXJhdG9yKGFkZE1hbnlNdXRhYmx5KSxcbiAgICBhZGRBbGw6IGNyZWF0ZVN0YXRlT3BlcmF0b3IoYWRkQWxsTXV0YWJseSksXG4gICAgdXBkYXRlT25lOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHVwZGF0ZU9uZU11dGFibHkpLFxuICAgIHVwZGF0ZU1hbnk6IGNyZWF0ZVN0YXRlT3BlcmF0b3IodXBkYXRlTWFueU11dGFibHkpLFxuICAgIHVwc2VydE9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcih1cHNlcnRPbmVNdXRhYmx5KSxcbiAgICB1cHNlcnRNYW55OiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHVwc2VydE1hbnlNdXRhYmx5KSxcbiAgICByZW1vdmVPbmU6IGNyZWF0ZVN0YXRlT3BlcmF0b3IocmVtb3ZlT25lTXV0YWJseSksXG4gICAgcmVtb3ZlTWFueTogY3JlYXRlU3RhdGVPcGVyYXRvcihyZW1vdmVNYW55TXV0YWJseSksXG4gICAgbWFwOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKG1hcE11dGFibHkpLFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isDevMode } from '@angular/core';
|
|
2
|
+
export function selectIdValue(entity, selectId) {
|
|
3
|
+
var key = selectId(entity);
|
|
4
|
+
if (isDevMode() && key === undefined) {
|
|
5
|
+
console.warn('@ngrx/entity: The entity passed to the `selectId` implementation returned undefined.', 'You should probably provide your own `selectId` implementation.', 'The entity that was passed:', entity, 'The `selectId` implementation:', selectId.toString());
|
|
6
|
+
}
|
|
7
|
+
return key;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2VudGl0eS9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQyxNQUFNLFVBQVUsYUFBYSxDQUFJLE1BQVMsRUFBRSxRQUF1QjtJQUNqRSxJQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFN0IsSUFBSSxTQUFTLEVBQUUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysc0ZBQXNGLEVBQ3RGLGlFQUFpRSxFQUNqRSw2QkFBNkIsRUFDN0IsTUFBTSxFQUNOLGdDQUFnQyxFQUNoQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQ3BCLENBQUM7S0FDSDtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWRTZWxlY3RvciB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdElkVmFsdWU8VD4oZW50aXR5OiBULCBzZWxlY3RJZDogSWRTZWxlY3RvcjxUPikge1xuICBjb25zdCBrZXkgPSBzZWxlY3RJZChlbnRpdHkpO1xuXG4gIGlmIChpc0Rldk1vZGUoKSAmJiBrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdAbmdyeC9lbnRpdHk6IFRoZSBlbnRpdHkgcGFzc2VkIHRvIHRoZSBgc2VsZWN0SWRgIGltcGxlbWVudGF0aW9uIHJldHVybmVkIHVuZGVmaW5lZC4nLFxuICAgICAgJ1lvdSBzaG91bGQgcHJvYmFibHkgcHJvdmlkZSB5b3VyIG93biBgc2VsZWN0SWRgIGltcGxlbWVudGF0aW9uLicsXG4gICAgICAnVGhlIGVudGl0eSB0aGF0IHdhcyBwYXNzZWQ6JyxcbiAgICAgIGVudGl0eSxcbiAgICAgICdUaGUgYHNlbGVjdElkYCBpbXBsZW1lbnRhdGlvbjonLFxuICAgICAgc2VsZWN0SWQudG9TdHJpbmcoKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4ga2V5O1xufVxuIl19
|
package/fesm2015/entity.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license NgRx
|
|
2
|
+
* @license NgRx 7.0.0-beta.0
|
|
3
3
|
* (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { createSelector } from '@ngrx/store';
|
|
7
|
+
import { isDevMode } from '@angular/core';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @fileoverview added by tsickle
|
|
10
|
-
* @suppress {checkTypes} checked by tsc
|
|
11
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
11
12
|
*/
|
|
12
13
|
/**
|
|
13
14
|
* @template V
|
|
@@ -36,7 +37,7 @@ function createInitialStateFactory() {
|
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* @fileoverview added by tsickle
|
|
39
|
-
* @suppress {checkTypes} checked by tsc
|
|
40
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
40
41
|
*/
|
|
41
42
|
/**
|
|
42
43
|
* @template T
|
|
@@ -48,10 +49,14 @@ function createSelectorsFactory() {
|
|
|
48
49
|
* @return {?}
|
|
49
50
|
*/
|
|
50
51
|
function getSelectors(selectState) {
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
const
|
|
52
|
+
/** @type {?} */
|
|
53
|
+
const selectIds = (state) => state.ids;
|
|
54
|
+
/** @type {?} */
|
|
55
|
+
const selectEntities = (state) => state.entities;
|
|
56
|
+
/** @type {?} */
|
|
57
|
+
const selectAll = createSelector(selectIds, selectEntities, (ids, entities) => ids.map((id) => (/** @type {?} */ (entities))[id]));
|
|
58
|
+
/** @type {?} */
|
|
59
|
+
const selectTotal = createSelector(selectIds, ids => ids.length);
|
|
55
60
|
if (!selectState) {
|
|
56
61
|
return {
|
|
57
62
|
selectIds,
|
|
@@ -72,17 +77,17 @@ function createSelectorsFactory() {
|
|
|
72
77
|
|
|
73
78
|
/**
|
|
74
79
|
* @fileoverview added by tsickle
|
|
75
|
-
* @suppress {checkTypes} checked by tsc
|
|
80
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
76
81
|
*/
|
|
77
82
|
/** @enum {number} */
|
|
78
|
-
|
|
83
|
+
var DidMutate = {
|
|
79
84
|
EntitiesOnly: 0,
|
|
80
85
|
Both: 1,
|
|
81
86
|
None: 2,
|
|
82
87
|
};
|
|
83
|
-
DidMutate[DidMutate.EntitiesOnly] =
|
|
84
|
-
DidMutate[DidMutate.Both] =
|
|
85
|
-
DidMutate[DidMutate.None] =
|
|
88
|
+
DidMutate[DidMutate.EntitiesOnly] = 'EntitiesOnly';
|
|
89
|
+
DidMutate[DidMutate.Both] = 'Both';
|
|
90
|
+
DidMutate[DidMutate.None] = 'None';
|
|
86
91
|
/**
|
|
87
92
|
* @template V, R
|
|
88
93
|
* @param {?} mutator
|
|
@@ -90,11 +95,13 @@ DidMutate[DidMutate.None] = "None";
|
|
|
90
95
|
*/
|
|
91
96
|
function createStateOperator(mutator) {
|
|
92
97
|
return function operation(arg, state) {
|
|
93
|
-
|
|
98
|
+
/** @type {?} */
|
|
99
|
+
const clonedEntityState = {
|
|
94
100
|
ids: [...state.ids],
|
|
95
101
|
entities: Object.assign({}, state.entities),
|
|
96
102
|
};
|
|
97
|
-
|
|
103
|
+
/** @type {?} */
|
|
104
|
+
const didMutate = mutator(arg, clonedEntityState);
|
|
98
105
|
if (didMutate === DidMutate.Both) {
|
|
99
106
|
return Object.assign({}, state, clonedEntityState);
|
|
100
107
|
}
|
|
@@ -107,7 +114,26 @@ function createStateOperator(mutator) {
|
|
|
107
114
|
|
|
108
115
|
/**
|
|
109
116
|
* @fileoverview added by tsickle
|
|
110
|
-
* @suppress {checkTypes} checked by tsc
|
|
117
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
118
|
+
*/
|
|
119
|
+
/**
|
|
120
|
+
* @template T
|
|
121
|
+
* @param {?} entity
|
|
122
|
+
* @param {?} selectId
|
|
123
|
+
* @return {?}
|
|
124
|
+
*/
|
|
125
|
+
function selectIdValue(entity, selectId) {
|
|
126
|
+
/** @type {?} */
|
|
127
|
+
const key = selectId(entity);
|
|
128
|
+
if (isDevMode() && key === undefined) {
|
|
129
|
+
console.warn('@ngrx/entity: The entity passed to the `selectId` implementation returned undefined.', 'You should probably provide your own `selectId` implementation.', 'The entity that was passed:', entity, 'The `selectId` implementation:', selectId.toString());
|
|
130
|
+
}
|
|
131
|
+
return key;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* @fileoverview added by tsickle
|
|
136
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
111
137
|
*/
|
|
112
138
|
/**
|
|
113
139
|
* @template T
|
|
@@ -121,7 +147,8 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
121
147
|
* @return {?}
|
|
122
148
|
*/
|
|
123
149
|
function addOneMutably(entity, state) {
|
|
124
|
-
|
|
150
|
+
/** @type {?} */
|
|
151
|
+
const key = selectIdValue(entity, selectId);
|
|
125
152
|
if (key in state.entities) {
|
|
126
153
|
return DidMutate.None;
|
|
127
154
|
}
|
|
@@ -135,8 +162,9 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
135
162
|
* @return {?}
|
|
136
163
|
*/
|
|
137
164
|
function addManyMutably(entities, state) {
|
|
138
|
-
|
|
139
|
-
|
|
165
|
+
/** @type {?} */
|
|
166
|
+
let didMutate = false;
|
|
167
|
+
for (const entity of entities) {
|
|
140
168
|
didMutate = addOneMutably(entity, state) !== DidMutate.None || didMutate;
|
|
141
169
|
}
|
|
142
170
|
return didMutate ? DidMutate.Both : DidMutate.None;
|
|
@@ -161,14 +189,19 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
161
189
|
return removeManyMutably([key], state);
|
|
162
190
|
}
|
|
163
191
|
/**
|
|
164
|
-
* @param {?}
|
|
192
|
+
* @param {?} keysOrPredicate
|
|
165
193
|
* @param {?} state
|
|
166
194
|
* @return {?}
|
|
167
195
|
*/
|
|
168
|
-
function removeManyMutably(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
196
|
+
function removeManyMutably(keysOrPredicate, state) {
|
|
197
|
+
/** @type {?} */
|
|
198
|
+
const keys = keysOrPredicate instanceof Array
|
|
199
|
+
? keysOrPredicate
|
|
200
|
+
: state.ids.filter((key) => keysOrPredicate(state.entities[key]));
|
|
201
|
+
/** @type {?} */
|
|
202
|
+
const didMutate = keys
|
|
203
|
+
.filter((key) => key in state.entities)
|
|
204
|
+
.map((key) => delete state.entities[key]).length > 0;
|
|
172
205
|
if (didMutate) {
|
|
173
206
|
state.ids = state.ids.filter((id) => id in state.entities);
|
|
174
207
|
}
|
|
@@ -192,10 +225,14 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
192
225
|
* @return {?}
|
|
193
226
|
*/
|
|
194
227
|
function takeNewKey(keys, update, state) {
|
|
195
|
-
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
const
|
|
228
|
+
/** @type {?} */
|
|
229
|
+
const original = state.entities[update.id];
|
|
230
|
+
/** @type {?} */
|
|
231
|
+
const updated = Object.assign({}, original, update.changes);
|
|
232
|
+
/** @type {?} */
|
|
233
|
+
const newKey = selectIdValue(updated, selectId);
|
|
234
|
+
/** @type {?} */
|
|
235
|
+
const hasNewKey = newKey !== update.id;
|
|
199
236
|
if (hasNewKey) {
|
|
200
237
|
keys[update.id] = newKey;
|
|
201
238
|
delete state.entities[update.id];
|
|
@@ -217,11 +254,14 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
217
254
|
* @return {?}
|
|
218
255
|
*/
|
|
219
256
|
function updateManyMutably(updates, state) {
|
|
220
|
-
|
|
257
|
+
/** @type {?} */
|
|
258
|
+
const newKeys = {};
|
|
221
259
|
updates = updates.filter(update => update.id in state.entities);
|
|
222
|
-
|
|
260
|
+
/** @type {?} */
|
|
261
|
+
const didMutateEntities = updates.length > 0;
|
|
223
262
|
if (didMutateEntities) {
|
|
224
|
-
|
|
263
|
+
/** @type {?} */
|
|
264
|
+
const didMutateIds = updates.filter(update => takeNewKey(newKeys, update, state)).length > 0;
|
|
225
265
|
if (didMutateIds) {
|
|
226
266
|
state.ids = state.ids.map((id) => newKeys[id] || id);
|
|
227
267
|
return DidMutate.Both;
|
|
@@ -232,6 +272,25 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
232
272
|
}
|
|
233
273
|
return DidMutate.None;
|
|
234
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* @param {?} map
|
|
277
|
+
* @param {?} state
|
|
278
|
+
* @return {?}
|
|
279
|
+
*/
|
|
280
|
+
function mapMutably(map, state) {
|
|
281
|
+
/** @type {?} */
|
|
282
|
+
const changes = state.ids.reduce((changes, id) => {
|
|
283
|
+
/** @type {?} */
|
|
284
|
+
const change = map(state.entities[id]);
|
|
285
|
+
if (change !== state.entities[id]) {
|
|
286
|
+
changes.push({ id, changes: change });
|
|
287
|
+
}
|
|
288
|
+
return changes;
|
|
289
|
+
}, []);
|
|
290
|
+
/** @type {?} */
|
|
291
|
+
const updates = changes.filter(({ id }) => id in state.entities);
|
|
292
|
+
return updateManyMutably(updates, state);
|
|
293
|
+
}
|
|
235
294
|
/**
|
|
236
295
|
* @param {?} entity
|
|
237
296
|
* @param {?} state
|
|
@@ -246,10 +305,13 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
246
305
|
* @return {?}
|
|
247
306
|
*/
|
|
248
307
|
function upsertManyMutably(entities, state) {
|
|
249
|
-
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
|
|
308
|
+
/** @type {?} */
|
|
309
|
+
const added = [];
|
|
310
|
+
/** @type {?} */
|
|
311
|
+
const updated = [];
|
|
312
|
+
for (const entity of entities) {
|
|
313
|
+
/** @type {?} */
|
|
314
|
+
const id = selectIdValue(entity, selectId);
|
|
253
315
|
if (id in state.entities) {
|
|
254
316
|
updated.push({ id, changes: entity });
|
|
255
317
|
}
|
|
@@ -257,8 +319,10 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
257
319
|
added.push(entity);
|
|
258
320
|
}
|
|
259
321
|
}
|
|
260
|
-
|
|
261
|
-
const
|
|
322
|
+
/** @type {?} */
|
|
323
|
+
const didMutateByUpdated = updateManyMutably(updated, state);
|
|
324
|
+
/** @type {?} */
|
|
325
|
+
const didMutateByAdded = addManyMutably(added, state);
|
|
262
326
|
switch (true) {
|
|
263
327
|
case didMutateByAdded === DidMutate.None &&
|
|
264
328
|
didMutateByUpdated === DidMutate.None:
|
|
@@ -281,12 +345,13 @@ function createUnsortedStateAdapter(selectId) {
|
|
|
281
345
|
upsertMany: createStateOperator(upsertManyMutably),
|
|
282
346
|
removeOne: createStateOperator(removeOneMutably),
|
|
283
347
|
removeMany: createStateOperator(removeManyMutably),
|
|
348
|
+
map: createStateOperator(mapMutably),
|
|
284
349
|
};
|
|
285
350
|
}
|
|
286
351
|
|
|
287
352
|
/**
|
|
288
353
|
* @fileoverview added by tsickle
|
|
289
|
-
* @suppress {checkTypes} checked by tsc
|
|
354
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
290
355
|
*/
|
|
291
356
|
/**
|
|
292
357
|
* @template T
|
|
@@ -310,7 +375,8 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
310
375
|
* @return {?}
|
|
311
376
|
*/
|
|
312
377
|
function addManyMutably(newModels, state) {
|
|
313
|
-
|
|
378
|
+
/** @type {?} */
|
|
379
|
+
const models = newModels.filter(model => !(selectIdValue(model, selectId) in state.entities));
|
|
314
380
|
if (models.length === 0) {
|
|
315
381
|
return DidMutate.None;
|
|
316
382
|
}
|
|
@@ -348,9 +414,12 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
348
414
|
if (!(update.id in state.entities)) {
|
|
349
415
|
return false;
|
|
350
416
|
}
|
|
351
|
-
|
|
352
|
-
const
|
|
353
|
-
|
|
417
|
+
/** @type {?} */
|
|
418
|
+
const original = state.entities[update.id];
|
|
419
|
+
/** @type {?} */
|
|
420
|
+
const updated = Object.assign({}, original, update.changes);
|
|
421
|
+
/** @type {?} */
|
|
422
|
+
const newKey = selectIdValue(updated, selectId);
|
|
354
423
|
delete state.entities[update.id];
|
|
355
424
|
models.push(updated);
|
|
356
425
|
return newKey !== update.id;
|
|
@@ -361,15 +430,19 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
361
430
|
* @return {?}
|
|
362
431
|
*/
|
|
363
432
|
function updateManyMutably(updates, state) {
|
|
364
|
-
|
|
365
|
-
const
|
|
433
|
+
/** @type {?} */
|
|
434
|
+
const models = [];
|
|
435
|
+
/** @type {?} */
|
|
436
|
+
const didMutateIds = updates.filter(update => takeUpdatedModel(models, update, state)).length >
|
|
366
437
|
0;
|
|
367
438
|
if (models.length === 0) {
|
|
368
439
|
return DidMutate.None;
|
|
369
440
|
}
|
|
370
441
|
else {
|
|
371
|
-
|
|
372
|
-
const
|
|
442
|
+
/** @type {?} */
|
|
443
|
+
const originalIds = state.ids;
|
|
444
|
+
/** @type {?} */
|
|
445
|
+
const updatedIndexes = [];
|
|
373
446
|
state.ids = state.ids.filter((id, index) => {
|
|
374
447
|
if (id in state.entities) {
|
|
375
448
|
return true;
|
|
@@ -389,6 +462,23 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
389
462
|
}
|
|
390
463
|
}
|
|
391
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* @param {?} updatesOrMap
|
|
467
|
+
* @param {?} state
|
|
468
|
+
* @return {?}
|
|
469
|
+
*/
|
|
470
|
+
function mapMutably(updatesOrMap, state) {
|
|
471
|
+
/** @type {?} */
|
|
472
|
+
const updates = state.ids.reduce((changes, id) => {
|
|
473
|
+
/** @type {?} */
|
|
474
|
+
const change = updatesOrMap(state.entities[id]);
|
|
475
|
+
if (change !== state.entities[id]) {
|
|
476
|
+
changes.push({ id, changes: change });
|
|
477
|
+
}
|
|
478
|
+
return changes;
|
|
479
|
+
}, []);
|
|
480
|
+
return updateManyMutably(updates, state);
|
|
481
|
+
}
|
|
392
482
|
/**
|
|
393
483
|
* @param {?} entity
|
|
394
484
|
* @param {?} state
|
|
@@ -403,10 +493,13 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
403
493
|
* @return {?}
|
|
404
494
|
*/
|
|
405
495
|
function upsertManyMutably(entities, state) {
|
|
406
|
-
|
|
407
|
-
const
|
|
408
|
-
|
|
409
|
-
|
|
496
|
+
/** @type {?} */
|
|
497
|
+
const added = [];
|
|
498
|
+
/** @type {?} */
|
|
499
|
+
const updated = [];
|
|
500
|
+
for (const entity of entities) {
|
|
501
|
+
/** @type {?} */
|
|
502
|
+
const id = selectIdValue(entity, selectId);
|
|
410
503
|
if (id in state.entities) {
|
|
411
504
|
updated.push({ id, changes: entity });
|
|
412
505
|
}
|
|
@@ -414,8 +507,10 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
414
507
|
added.push(entity);
|
|
415
508
|
}
|
|
416
509
|
}
|
|
417
|
-
|
|
418
|
-
const
|
|
510
|
+
/** @type {?} */
|
|
511
|
+
const didMutateByUpdated = updateManyMutably(updated, state);
|
|
512
|
+
/** @type {?} */
|
|
513
|
+
const didMutateByAdded = addManyMutably(added, state);
|
|
419
514
|
switch (true) {
|
|
420
515
|
case didMutateByAdded === DidMutate.None &&
|
|
421
516
|
didMutateByUpdated === DidMutate.None:
|
|
@@ -434,14 +529,21 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
434
529
|
*/
|
|
435
530
|
function merge(models, state) {
|
|
436
531
|
models.sort(sort);
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
532
|
+
/** @type {?} */
|
|
533
|
+
const ids = [];
|
|
534
|
+
/** @type {?} */
|
|
535
|
+
let i = 0;
|
|
536
|
+
/** @type {?} */
|
|
537
|
+
let j = 0;
|
|
440
538
|
while (i < models.length && j < state.ids.length) {
|
|
441
|
-
|
|
442
|
-
const
|
|
443
|
-
|
|
444
|
-
const
|
|
539
|
+
/** @type {?} */
|
|
540
|
+
const model = models[i];
|
|
541
|
+
/** @type {?} */
|
|
542
|
+
const modelId = selectIdValue(model, selectId);
|
|
543
|
+
/** @type {?} */
|
|
544
|
+
const entityId = state.ids[j];
|
|
545
|
+
/** @type {?} */
|
|
546
|
+
const entity = state.entities[entityId];
|
|
445
547
|
if (sort(model, entity) <= 0) {
|
|
446
548
|
ids.push(modelId);
|
|
447
549
|
i++;
|
|
@@ -472,12 +574,13 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
472
574
|
addMany: createStateOperator(addManyMutably),
|
|
473
575
|
updateMany: createStateOperator(updateManyMutably),
|
|
474
576
|
upsertMany: createStateOperator(upsertManyMutably),
|
|
577
|
+
map: createStateOperator(mapMutably),
|
|
475
578
|
};
|
|
476
579
|
}
|
|
477
580
|
|
|
478
581
|
/**
|
|
479
582
|
* @fileoverview added by tsickle
|
|
480
|
-
* @suppress {checkTypes} checked by tsc
|
|
583
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
481
584
|
*/
|
|
482
585
|
/**
|
|
483
586
|
* @template T
|
|
@@ -486,9 +589,12 @@ function createSortedStateAdapter(selectId, sort) {
|
|
|
486
589
|
*/
|
|
487
590
|
function createEntityAdapter(options = {}) {
|
|
488
591
|
const { selectId, sortComparer } = Object.assign({ sortComparer: false, selectId: (instance) => instance.id }, options);
|
|
489
|
-
|
|
490
|
-
const
|
|
491
|
-
|
|
592
|
+
/** @type {?} */
|
|
593
|
+
const stateFactory = createInitialStateFactory();
|
|
594
|
+
/** @type {?} */
|
|
595
|
+
const selectorsFactory = createSelectorsFactory();
|
|
596
|
+
/** @type {?} */
|
|
597
|
+
const stateAdapter = sortComparer
|
|
492
598
|
? createSortedStateAdapter(selectId, sortComparer)
|
|
493
599
|
: createUnsortedStateAdapter(selectId);
|
|
494
600
|
return Object.assign({ selectId,
|
|
@@ -497,27 +603,33 @@ function createEntityAdapter(options = {}) {
|
|
|
497
603
|
|
|
498
604
|
/**
|
|
499
605
|
* @fileoverview added by tsickle
|
|
500
|
-
* @suppress {checkTypes} checked by tsc
|
|
606
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
607
|
+
*/
|
|
608
|
+
/**
|
|
609
|
+
* @abstract
|
|
610
|
+
* @template T
|
|
501
611
|
*/
|
|
612
|
+
class Dictionary {
|
|
613
|
+
}
|
|
502
614
|
|
|
503
615
|
/**
|
|
504
616
|
* @fileoverview added by tsickle
|
|
505
|
-
* @suppress {checkTypes} checked by tsc
|
|
617
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
506
618
|
*/
|
|
507
619
|
|
|
508
620
|
/**
|
|
509
621
|
* @fileoverview added by tsickle
|
|
510
|
-
* @suppress {checkTypes} checked by tsc
|
|
622
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
511
623
|
*/
|
|
624
|
+
|
|
512
625
|
/**
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
* This file is automatically generated at build
|
|
626
|
+
* @fileoverview added by tsickle
|
|
627
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
516
628
|
*/
|
|
517
629
|
|
|
518
630
|
/**
|
|
519
631
|
* Generated bundle index. Do not edit.
|
|
520
632
|
*/
|
|
521
633
|
|
|
522
|
-
export { createEntityAdapter };
|
|
634
|
+
export { createEntityAdapter, Dictionary };
|
|
523
635
|
//# sourceMappingURL=entity.js.map
|