@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.
Files changed (51) hide show
  1. package/bundles/entity.umd.js +419 -369
  2. package/bundles/entity.umd.js.map +1 -1
  3. package/bundles/entity.umd.min.js +2 -2
  4. package/bundles/entity.umd.min.js.map +1 -1
  5. package/entity.metadata.json +1 -1
  6. package/esm2015/index.js +3 -3
  7. package/esm2015/public_api.js +3 -3
  8. package/esm2015/src/create_adapter.js +8 -5
  9. package/esm2015/src/entity_state.js +2 -2
  10. package/esm2015/src/index.js +3 -2
  11. package/esm2015/src/models.js +113 -54
  12. package/esm2015/src/sorted_state_adapter.js +64 -23
  13. package/esm2015/src/state_adapter.js +10 -8
  14. package/esm2015/src/state_selectors.js +10 -6
  15. package/esm2015/src/unsorted_state_adapter.js +65 -23
  16. package/esm2015/src/utils.js +21 -0
  17. package/esm5/index.js +1 -1
  18. package/esm5/src/create_adapter.js +11 -8
  19. package/esm5/src/entity_state.js +1 -1
  20. package/esm5/src/index.js +2 -1
  21. package/esm5/src/models.js +1 -1
  22. package/esm5/src/sorted_state_adapter.js +18 -6
  23. package/esm5/src/state_adapter.js +11 -8
  24. package/esm5/src/state_selectors.js +1 -1
  25. package/esm5/src/unsorted_state_adapter.js +26 -7
  26. package/esm5/src/utils.js +10 -0
  27. package/fesm2015/entity.js +181 -69
  28. package/fesm2015/entity.js.map +1 -1
  29. package/fesm5/entity.js +86 -36
  30. package/fesm5/entity.js.map +1 -1
  31. package/migrations/6_0_0/index.js +3 -3
  32. package/package.json +4 -4
  33. package/schematics-core/index.d.ts +6 -6
  34. package/schematics-core/index.js +5 -3
  35. package/schematics-core/utility/ast-utils.js +13 -11
  36. package/schematics-core/utility/change.js +1 -1
  37. package/schematics-core/utility/config.js +1 -1
  38. package/schematics-core/utility/find-module.js +2 -2
  39. package/schematics-core/utility/ngrx-utils.d.ts +1 -1
  40. package/schematics-core/utility/ngrx-utils.js +12 -12
  41. package/schematics-core/utility/package.js +1 -1
  42. package/schematics-core/utility/parse-name.js +1 -1
  43. package/schematics-core/utility/project.d.ts +12 -0
  44. package/schematics-core/utility/project.js +12 -3
  45. package/schematics-core/utility/route-utils.js +1 -1
  46. package/schematics-core/utility/strings.js +1 -1
  47. package/schematics-core/utility/update.js +1 -1
  48. package/src/index.d.ts +1 -1
  49. package/src/models.d.ts +16 -20
  50. package/src/state_adapter.d.ts +1 -1
  51. 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 = selectId(entity);
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(keys, state) {
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 = selectId(updated);
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 = selectId(entity);
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
@@ -1,13 +1,14 @@
1
1
  /**
2
- * @license NgRx 6.0.1
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
- const /** @type {?} */ selectIds = (state) => state.ids;
52
- const /** @type {?} */ selectEntities = (state) => state.entities;
53
- const /** @type {?} */ selectAll = createSelector(selectIds, selectEntities, (ids, entities) => ids.map((id) => (/** @type {?} */ (entities))[id]));
54
- const /** @type {?} */ selectTotal = createSelector(selectIds, ids => ids.length);
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
- const DidMutate = {
83
+ var DidMutate = {
79
84
  EntitiesOnly: 0,
80
85
  Both: 1,
81
86
  None: 2,
82
87
  };
83
- DidMutate[DidMutate.EntitiesOnly] = "EntitiesOnly";
84
- DidMutate[DidMutate.Both] = "Both";
85
- DidMutate[DidMutate.None] = "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
- const /** @type {?} */ clonedEntityState = {
98
+ /** @type {?} */
99
+ const clonedEntityState = {
94
100
  ids: [...state.ids],
95
101
  entities: Object.assign({}, state.entities),
96
102
  };
97
- const /** @type {?} */ didMutate = mutator(arg, clonedEntityState);
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
- const /** @type {?} */ key = selectId(entity);
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
- let /** @type {?} */ didMutate = false;
139
- for (const /** @type {?} */ entity of entities) {
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 {?} keys
192
+ * @param {?} keysOrPredicate
165
193
  * @param {?} state
166
194
  * @return {?}
167
195
  */
168
- function removeManyMutably(keys, state) {
169
- const /** @type {?} */ didMutate = keys
170
- .filter(key => key in state.entities)
171
- .map(key => delete state.entities[key]).length > 0;
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
- const /** @type {?} */ original = state.entities[update.id];
196
- const /** @type {?} */ updated = Object.assign({}, original, update.changes);
197
- const /** @type {?} */ newKey = selectId(updated);
198
- const /** @type {?} */ hasNewKey = newKey !== update.id;
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
- const /** @type {?} */ newKeys = {};
257
+ /** @type {?} */
258
+ const newKeys = {};
221
259
  updates = updates.filter(update => update.id in state.entities);
222
- const /** @type {?} */ didMutateEntities = updates.length > 0;
260
+ /** @type {?} */
261
+ const didMutateEntities = updates.length > 0;
223
262
  if (didMutateEntities) {
224
- const /** @type {?} */ didMutateIds = updates.filter(update => takeNewKey(newKeys, update, state)).length > 0;
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
- const /** @type {?} */ added = [];
250
- const /** @type {?} */ updated = [];
251
- for (const /** @type {?} */ entity of entities) {
252
- const /** @type {?} */ id = selectId(entity);
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
- const /** @type {?} */ didMutateByUpdated = updateManyMutably(updated, state);
261
- const /** @type {?} */ didMutateByAdded = addManyMutably(added, state);
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
- const /** @type {?} */ models = newModels.filter(model => !(selectId(model) in state.entities));
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
- const /** @type {?} */ original = state.entities[update.id];
352
- const /** @type {?} */ updated = Object.assign({}, original, update.changes);
353
- const /** @type {?} */ newKey = selectId(updated);
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
- const /** @type {?} */ models = [];
365
- const /** @type {?} */ didMutateIds = updates.filter(update => takeUpdatedModel(models, update, state)).length >
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
- const /** @type {?} */ originalIds = state.ids;
372
- const /** @type {?} */ updatedIndexes = [];
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
- const /** @type {?} */ added = [];
407
- const /** @type {?} */ updated = [];
408
- for (const /** @type {?} */ entity of entities) {
409
- const /** @type {?} */ id = selectId(entity);
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
- const /** @type {?} */ didMutateByUpdated = updateManyMutably(updated, state);
418
- const /** @type {?} */ didMutateByAdded = addManyMutably(added, state);
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
- const /** @type {?} */ ids = [];
438
- let /** @type {?} */ i = 0;
439
- let /** @type {?} */ j = 0;
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
- const /** @type {?} */ model = models[i];
442
- const /** @type {?} */ modelId = selectId(model);
443
- const /** @type {?} */ entityId = state.ids[j];
444
- const /** @type {?} */ entity = state.entities[entityId];
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
- const /** @type {?} */ stateFactory = createInitialStateFactory();
490
- const /** @type {?} */ selectorsFactory = createSelectorsFactory();
491
- const /** @type {?} */ stateAdapter = sortComparer
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
- * DO NOT EDIT
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