@aws-amplify/datastore 3.12.6-next.32 → 3.12.6-next.41

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 (151) hide show
  1. package/lib/authModeStrategies/defaultAuthStrategy.d.ts +2 -0
  2. package/lib/authModeStrategies/index.d.ts +2 -0
  3. package/lib/authModeStrategies/multiAuthStrategy.d.ts +13 -0
  4. package/lib/authModeStrategies/multiAuthStrategy.js.map +1 -1
  5. package/lib/datastore/datastore.d.ts +207 -0
  6. package/lib/datastore/datastore.js +641 -144
  7. package/lib/datastore/datastore.js.map +1 -1
  8. package/lib/index.d.ts +16 -0
  9. package/lib/index.js +4 -0
  10. package/lib/index.js.map +1 -1
  11. package/lib/predicates/index.d.ts +30 -0
  12. package/lib/predicates/index.js +127 -6
  13. package/lib/predicates/index.js.map +1 -1
  14. package/lib/predicates/next.d.ts +342 -0
  15. package/lib/predicates/next.js +801 -0
  16. package/lib/predicates/next.js.map +1 -0
  17. package/lib/predicates/sort.d.ts +8 -0
  18. package/lib/predicates/sort.js +10 -4
  19. package/lib/predicates/sort.js.map +1 -1
  20. package/lib/ssr/index.d.ts +3 -0
  21. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +42 -0
  22. package/lib/storage/adapter/AsyncStorageAdapter.js +106 -293
  23. package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  24. package/lib/storage/adapter/AsyncStorageDatabase.d.ts +39 -0
  25. package/lib/storage/adapter/AsyncStorageDatabase.js +6 -5
  26. package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  27. package/lib/storage/adapter/InMemoryStore.d.ts +11 -0
  28. package/lib/storage/adapter/InMemoryStore.js.map +1 -1
  29. package/lib/storage/adapter/InMemoryStore.native.d.ts +1 -0
  30. package/lib/storage/adapter/IndexedDBAdapter.d.ts +61 -0
  31. package/lib/storage/adapter/IndexedDBAdapter.js +223 -289
  32. package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
  33. package/lib/storage/adapter/getDefaultAdapter/index.d.ts +3 -0
  34. package/lib/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  35. package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +3 -0
  36. package/lib/storage/adapter/index.d.ts +9 -0
  37. package/lib/storage/relationship.d.ts +140 -0
  38. package/lib/storage/relationship.js +335 -0
  39. package/lib/storage/relationship.js.map +1 -0
  40. package/lib/storage/storage.d.ts +50 -0
  41. package/lib/storage/storage.js +32 -16
  42. package/lib/storage/storage.js.map +1 -1
  43. package/lib/sync/datastoreConnectivity.d.ts +16 -0
  44. package/lib/sync/datastoreConnectivity.js.map +1 -1
  45. package/lib/sync/datastoreReachability/index.d.ts +3 -0
  46. package/lib/sync/datastoreReachability/index.native.d.ts +3 -0
  47. package/lib/sync/index.d.ts +89 -0
  48. package/lib/sync/index.js +2 -8
  49. package/lib/sync/index.js.map +1 -1
  50. package/lib/sync/merger.d.ts +17 -0
  51. package/lib/sync/merger.js.map +1 -1
  52. package/lib/sync/outbox.d.ts +27 -0
  53. package/lib/sync/outbox.js.map +1 -1
  54. package/lib/sync/processors/errorMaps.d.ts +17 -0
  55. package/lib/sync/processors/errorMaps.js +1 -1
  56. package/lib/sync/processors/errorMaps.js.map +1 -1
  57. package/lib/sync/processors/mutation.d.ts +58 -0
  58. package/lib/sync/processors/mutation.js +9 -6
  59. package/lib/sync/processors/mutation.js.map +1 -1
  60. package/lib/sync/processors/subscription.d.ts +33 -0
  61. package/lib/sync/processors/subscription.js +4 -1
  62. package/lib/sync/processors/subscription.js.map +1 -1
  63. package/lib/sync/processors/sync.d.ts +28 -0
  64. package/lib/sync/processors/sync.js.map +1 -1
  65. package/lib/sync/utils.d.ts +42 -0
  66. package/lib/sync/utils.js +30 -31
  67. package/lib/sync/utils.js.map +1 -1
  68. package/lib/types.d.ts +553 -0
  69. package/lib/types.js +6 -1
  70. package/lib/types.js.map +1 -1
  71. package/lib/util.d.ts +189 -0
  72. package/lib/util.js +174 -104
  73. package/lib/util.js.map +1 -1
  74. package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +1 -1
  75. package/lib-esm/datastore/datastore.d.ts +59 -8
  76. package/lib-esm/datastore/datastore.js +643 -147
  77. package/lib-esm/datastore/datastore.js.map +1 -1
  78. package/lib-esm/index.d.ts +3 -2
  79. package/lib-esm/index.js +2 -1
  80. package/lib-esm/index.js.map +1 -1
  81. package/lib-esm/predicates/index.d.ts +16 -2
  82. package/lib-esm/predicates/index.js +128 -7
  83. package/lib-esm/predicates/index.js.map +1 -1
  84. package/lib-esm/predicates/next.d.ts +342 -0
  85. package/lib-esm/predicates/next.js +797 -0
  86. package/lib-esm/predicates/next.js.map +1 -0
  87. package/lib-esm/predicates/sort.js +10 -4
  88. package/lib-esm/predicates/sort.js.map +1 -1
  89. package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +2 -1
  90. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +108 -295
  91. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  92. package/lib-esm/storage/adapter/AsyncStorageDatabase.js +6 -5
  93. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  94. package/lib-esm/storage/adapter/InMemoryStore.d.ts +1 -1
  95. package/lib-esm/storage/adapter/InMemoryStore.js.map +1 -1
  96. package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +4 -2
  97. package/lib-esm/storage/adapter/IndexedDBAdapter.js +226 -292
  98. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
  99. package/lib-esm/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  100. package/lib-esm/storage/relationship.d.ts +140 -0
  101. package/lib-esm/storage/relationship.js +333 -0
  102. package/lib-esm/storage/relationship.js.map +1 -0
  103. package/lib-esm/storage/storage.d.ts +7 -6
  104. package/lib-esm/storage/storage.js +32 -16
  105. package/lib-esm/storage/storage.js.map +1 -1
  106. package/lib-esm/sync/datastoreConnectivity.js.map +1 -1
  107. package/lib-esm/sync/index.js +3 -9
  108. package/lib-esm/sync/index.js.map +1 -1
  109. package/lib-esm/sync/merger.js.map +1 -1
  110. package/lib-esm/sync/outbox.js.map +1 -1
  111. package/lib-esm/sync/processors/errorMaps.js +1 -1
  112. package/lib-esm/sync/processors/errorMaps.js.map +1 -1
  113. package/lib-esm/sync/processors/mutation.js +10 -7
  114. package/lib-esm/sync/processors/mutation.js.map +1 -1
  115. package/lib-esm/sync/processors/subscription.js +4 -1
  116. package/lib-esm/sync/processors/subscription.js.map +1 -1
  117. package/lib-esm/sync/processors/sync.js.map +1 -1
  118. package/lib-esm/sync/utils.d.ts +1 -1
  119. package/lib-esm/sync/utils.js +31 -32
  120. package/lib-esm/sync/utils.js.map +1 -1
  121. package/lib-esm/types.d.ts +59 -7
  122. package/lib-esm/types.js +6 -2
  123. package/lib-esm/types.js.map +1 -1
  124. package/lib-esm/util.d.ts +39 -6
  125. package/lib-esm/util.js +170 -104
  126. package/lib-esm/util.js.map +1 -1
  127. package/package.json +14 -11
  128. package/src/authModeStrategies/multiAuthStrategy.ts +1 -1
  129. package/src/datastore/datastore.ts +680 -204
  130. package/src/index.ts +4 -0
  131. package/src/predicates/index.ts +143 -17
  132. package/src/predicates/next.ts +1016 -0
  133. package/src/predicates/sort.ts +8 -2
  134. package/src/storage/adapter/AsyncStorageAdapter.ts +56 -178
  135. package/src/storage/adapter/AsyncStorageDatabase.ts +16 -15
  136. package/src/storage/adapter/InMemoryStore.ts +5 -2
  137. package/src/storage/adapter/IndexedDBAdapter.ts +166 -191
  138. package/src/storage/adapter/getDefaultAdapter/index.ts +2 -2
  139. package/src/storage/relationship.ts +272 -0
  140. package/src/storage/storage.ts +56 -37
  141. package/src/sync/datastoreConnectivity.ts +4 -4
  142. package/src/sync/index.ts +22 -28
  143. package/src/sync/merger.ts +1 -1
  144. package/src/sync/outbox.ts +6 -6
  145. package/src/sync/processors/errorMaps.ts +1 -1
  146. package/src/sync/processors/mutation.ts +22 -17
  147. package/src/sync/processors/subscription.ts +19 -15
  148. package/src/sync/processors/sync.ts +16 -16
  149. package/src/sync/utils.ts +42 -48
  150. package/src/types.ts +116 -11
  151. package/src/util.ts +108 -150
@@ -72,10 +72,10 @@ var AsyncStorageAdapter = /** @class */ (function () {
72
72
  AsyncStorageAdapter.prototype.save = function (model, condition) {
73
73
  var e_1, _a;
74
74
  return tslib_1.__awaiter(this, void 0, void 0, function () {
75
- var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, keyValuesPath, fromDB, predicates, predicateObjs, type, isValid, msg, result, connectionStoreNames_1, connectionStoreNames_1_1, resItem, storeName_1, item, instance, keys, itemKeyValues, itemKeyValuesPath, fromDB_1, opType, modelKeyValues, e_1_1;
75
+ var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, keyValuesPath, fromDB, predicates, _b, predicateObjs, type, isValid, msg, result, connectionStoreNames_1, connectionStoreNames_1_1, resItem, storeName_1, item, instance, keys, itemKeyValues, itemKeyValuesPath, fromDB_1, opType, modelKeyValues, e_1_1;
76
76
  var _this = this;
77
- return tslib_1.__generator(this, function (_b) {
78
- switch (_b.label) {
77
+ return tslib_1.__generator(this, function (_c) {
78
+ switch (_c.label) {
79
79
  case 0:
80
80
  modelConstructor = Object.getPrototypeOf(model)
81
81
  .constructor;
@@ -93,10 +93,10 @@ var AsyncStorageAdapter = /** @class */ (function () {
93
93
  keyValuesPath = this.getIndexKeyValuesPath(model);
94
94
  return [4 /*yield*/, this.db.get(keyValuesPath, storeName)];
95
95
  case 1:
96
- fromDB = _b.sent();
96
+ fromDB = _c.sent();
97
97
  if (condition && fromDB) {
98
98
  predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
99
- predicateObjs = predicates.predicates, type = predicates.type;
99
+ _b = predicates, predicateObjs = _b.predicates, type = _b.type;
100
100
  isValid = util_1.validatePredicate(fromDB, type, predicateObjs);
101
101
  if (!isValid) {
102
102
  msg = 'Conditional update failed';
@@ -105,43 +105,43 @@ var AsyncStorageAdapter = /** @class */ (function () {
105
105
  }
106
106
  }
107
107
  result = [];
108
- _b.label = 2;
108
+ _c.label = 2;
109
109
  case 2:
110
- _b.trys.push([2, 9, 10, 15]);
110
+ _c.trys.push([2, 9, 10, 15]);
111
111
  connectionStoreNames_1 = tslib_1.__asyncValues(connectionStoreNames);
112
- _b.label = 3;
112
+ _c.label = 3;
113
113
  case 3: return [4 /*yield*/, connectionStoreNames_1.next()];
114
114
  case 4:
115
- if (!(connectionStoreNames_1_1 = _b.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 8];
115
+ if (!(connectionStoreNames_1_1 = _c.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 8];
116
116
  resItem = connectionStoreNames_1_1.value;
117
117
  storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance, keys = resItem.keys;
118
118
  itemKeyValues = keys.map(function (key) { return item[key]; });
119
119
  itemKeyValuesPath = itemKeyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
120
120
  return [4 /*yield*/, this.db.get(itemKeyValuesPath, storeName_1)];
121
121
  case 5:
122
- fromDB_1 = _b.sent();
122
+ fromDB_1 = _c.sent();
123
123
  opType = fromDB_1 ? types_1.OpType.UPDATE : types_1.OpType.INSERT;
124
124
  modelKeyValues = this.getIndexKeyValuesFromModel(model);
125
125
  if (!(util_1.keysEqual(itemKeyValues, modelKeyValues) ||
126
126
  opType === types_1.OpType.INSERT)) return [3 /*break*/, 7];
127
127
  return [4 /*yield*/, this.db.save(item, storeName_1, keys, itemKeyValuesPath)];
128
128
  case 6:
129
- _b.sent();
129
+ _c.sent();
130
130
  result.push([instance, opType]);
131
- _b.label = 7;
131
+ _c.label = 7;
132
132
  case 7: return [3 /*break*/, 3];
133
133
  case 8: return [3 /*break*/, 15];
134
134
  case 9:
135
- e_1_1 = _b.sent();
135
+ e_1_1 = _c.sent();
136
136
  e_1 = { error: e_1_1 };
137
137
  return [3 /*break*/, 15];
138
138
  case 10:
139
- _b.trys.push([10, , 13, 14]);
139
+ _c.trys.push([10, , 13, 14]);
140
140
  if (!(connectionStoreNames_1_1 && !connectionStoreNames_1_1.done && (_a = connectionStoreNames_1.return))) return [3 /*break*/, 12];
141
141
  return [4 /*yield*/, _a.call(connectionStoreNames_1)];
142
142
  case 11:
143
- _b.sent();
144
- _b.label = 12;
143
+ _c.sent();
144
+ _c.label = 12;
145
145
  case 12: return [3 /*break*/, 14];
146
146
  case 13:
147
147
  if (e_1) throw e_1.error;
@@ -153,196 +153,25 @@ var AsyncStorageAdapter = /** @class */ (function () {
153
153
  });
154
154
  };
155
155
  AsyncStorageAdapter.prototype.load = function (namespaceName, srcModelName, records) {
156
- var records_1, records_1_1, records_2, records_2_1;
157
- var e_2, _a, e_3, _b, e_4, _c;
158
156
  return tslib_1.__awaiter(this, void 0, void 0, function () {
159
- var namespace, relations, connectionStoreNames, modelConstructor, relations_1, relations_1_1, relation, fieldName, modelName, targetName, targetNames, relationType, storeName, modelConstructor_1, _d, recordItem, getByFields, allPresent, keys, connectionRecord, getByfield, key, connectionRecord, e_3_1, recordItem, allPresent, keys, connectionRecord, key, connectionRecord, e_4_1, e_2_1;
157
+ var namespace, relations, connectionStoreNames, modelConstructor;
160
158
  var _this = this;
161
- return tslib_1.__generator(this, function (_e) {
162
- switch (_e.label) {
163
- case 0:
164
- namespace = this.schema.namespaces[namespaceName];
165
- relations = namespace.relationships[srcModelName].relationTypes;
166
- connectionStoreNames = relations.map(function (_a) {
167
- var modelName = _a.modelName;
168
- return util_1.getStorename(namespaceName, modelName);
169
- });
170
- modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
171
- if (connectionStoreNames.length === 0) {
172
- return [2 /*return*/, records.map(function (record) {
173
- return _this.modelInstanceCreator(modelConstructor, record);
174
- })];
175
- }
176
- _e.label = 1;
177
- case 1:
178
- _e.trys.push([1, 38, 39, 44]);
179
- relations_1 = tslib_1.__asyncValues(relations);
180
- _e.label = 2;
181
- case 2: return [4 /*yield*/, relations_1.next()];
182
- case 3:
183
- if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
184
- relation = relations_1_1.value;
185
- fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName, targetNames = relation.targetNames, relationType = relation.relationType;
186
- storeName = util_1.getStorename(namespaceName, modelName);
187
- modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, modelName);
188
- _d = relationType;
189
- switch (_d) {
190
- case 'HAS_ONE': return [3 /*break*/, 4];
191
- case 'BELONGS_TO': return [3 /*break*/, 19];
192
- case 'HAS_MANY': return [3 /*break*/, 34];
193
- }
194
- return [3 /*break*/, 35];
195
- case 4:
196
- _e.trys.push([4, 12, 13, 18]);
197
- records_1 = tslib_1.__asyncValues(records);
198
- _e.label = 5;
199
- case 5: return [4 /*yield*/, records_1.next()];
200
- case 6:
201
- if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/, 11];
202
- recordItem = records_1_1.value;
203
- if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
204
- getByFields = [];
205
- allPresent = void 0;
206
- // iterate through all targetnames to make sure they are all present in the recordItem
207
- allPresent = targetNames.every(function (targetName) {
208
- return recordItem[targetName] != null;
209
- });
210
- if (!allPresent) {
211
- return [3 /*break*/, 11];
212
- }
213
- getByFields = targetNames;
214
- keys = getByFields
215
- .map(function (getByField) { return recordItem[getByField]; })
216
- .join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
217
- return [4 /*yield*/, this.db.get(keys, storeName)];
218
- case 7:
219
- connectionRecord = _e.sent();
220
- recordItem[fieldName] =
221
- connectionRecord &&
222
- this.modelInstanceCreator(modelConstructor_1, connectionRecord);
223
- return [3 /*break*/, 10];
224
- case 8:
225
- getByfield = recordItem[targetName]
226
- ? targetName
227
- : fieldName;
228
- if (!recordItem[getByfield])
229
- return [3 /*break*/, 11];
230
- key = recordItem[getByfield];
231
- return [4 /*yield*/, this.db.get(key, storeName)];
232
- case 9:
233
- connectionRecord = _e.sent();
234
- recordItem[fieldName] =
235
- connectionRecord &&
236
- this.modelInstanceCreator(modelConstructor_1, connectionRecord);
237
- _e.label = 10;
238
- case 10: return [3 /*break*/, 5];
239
- case 11: return [3 /*break*/, 18];
240
- case 12:
241
- e_3_1 = _e.sent();
242
- e_3 = { error: e_3_1 };
243
- return [3 /*break*/, 18];
244
- case 13:
245
- _e.trys.push([13, , 16, 17]);
246
- if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/, 15];
247
- return [4 /*yield*/, _b.call(records_1)];
248
- case 14:
249
- _e.sent();
250
- _e.label = 15;
251
- case 15: return [3 /*break*/, 17];
252
- case 16:
253
- if (e_3) throw e_3.error;
254
- return [7 /*endfinally*/];
255
- case 17: return [7 /*endfinally*/];
256
- case 18: return [3 /*break*/, 36];
257
- case 19:
258
- _e.trys.push([19, 27, 28, 33]);
259
- records_2 = tslib_1.__asyncValues(records);
260
- _e.label = 20;
261
- case 20: return [4 /*yield*/, records_2.next()];
262
- case 21:
263
- if (!(records_2_1 = _e.sent(), !records_2_1.done)) return [3 /*break*/, 26];
264
- recordItem = records_2_1.value;
265
- if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 23];
266
- allPresent = void 0;
267
- // iterate through all targetnames to make sure they are all present in the recordItem
268
- allPresent = targetNames.every(function (targetName) {
269
- return recordItem[targetName] != null;
270
- });
271
- // If not present, there is not yet a connected record
272
- if (!allPresent) {
273
- return [3 /*break*/, 26];
274
- }
275
- keys = targetNames
276
- .map(function (targetName) { return recordItem[targetName]; })
277
- .join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
278
- return [4 /*yield*/, this.db.get(keys, storeName)];
279
- case 22:
280
- connectionRecord = _e.sent();
281
- recordItem[fieldName] =
282
- connectionRecord &&
283
- this.modelInstanceCreator(modelConstructor_1, connectionRecord);
284
- targetNames === null || targetNames === void 0 ? void 0 : targetNames.map(function (targetName) {
285
- delete recordItem[targetName];
286
- });
287
- return [3 /*break*/, 25];
288
- case 23:
289
- if (!recordItem[targetName]) return [3 /*break*/, 25];
290
- key = recordItem[targetName];
291
- return [4 /*yield*/, this.db.get(key, storeName)];
292
- case 24:
293
- connectionRecord = _e.sent();
294
- recordItem[fieldName] =
295
- connectionRecord &&
296
- this.modelInstanceCreator(modelConstructor_1, connectionRecord);
297
- delete recordItem[targetName];
298
- _e.label = 25;
299
- case 25: return [3 /*break*/, 20];
300
- case 26: return [3 /*break*/, 33];
301
- case 27:
302
- e_4_1 = _e.sent();
303
- e_4 = { error: e_4_1 };
304
- return [3 /*break*/, 33];
305
- case 28:
306
- _e.trys.push([28, , 31, 32]);
307
- if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/, 30];
308
- return [4 /*yield*/, _c.call(records_2)];
309
- case 29:
310
- _e.sent();
311
- _e.label = 30;
312
- case 30: return [3 /*break*/, 32];
313
- case 31:
314
- if (e_4) throw e_4.error;
315
- return [7 /*endfinally*/];
316
- case 32: return [7 /*endfinally*/];
317
- case 33: return [3 /*break*/, 36];
318
- case 34:
319
- // TODO: Lazy loading
320
- return [3 /*break*/, 36];
321
- case 35:
322
- util_1.exhaustiveCheck(relationType);
323
- return [3 /*break*/, 36];
324
- case 36: return [3 /*break*/, 2];
325
- case 37: return [3 /*break*/, 44];
326
- case 38:
327
- e_2_1 = _e.sent();
328
- e_2 = { error: e_2_1 };
329
- return [3 /*break*/, 44];
330
- case 39:
331
- _e.trys.push([39, , 42, 43]);
332
- if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 41];
333
- return [4 /*yield*/, _a.call(relations_1)];
334
- case 40:
335
- _e.sent();
336
- _e.label = 41;
337
- case 41: return [3 /*break*/, 43];
338
- case 42:
339
- if (e_2) throw e_2.error;
340
- return [7 /*endfinally*/];
341
- case 43: return [7 /*endfinally*/];
342
- case 44: return [2 /*return*/, records.map(function (record) {
159
+ return tslib_1.__generator(this, function (_a) {
160
+ namespace = this.schema.namespaces[namespaceName];
161
+ relations = namespace.relationships[srcModelName].relationTypes;
162
+ connectionStoreNames = relations.map(function (_a) {
163
+ var modelName = _a.modelName;
164
+ return util_1.getStorename(namespaceName, modelName);
165
+ });
166
+ modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
167
+ if (connectionStoreNames.length === 0) {
168
+ return [2 /*return*/, records.map(function (record) {
343
169
  return _this.modelInstanceCreator(modelConstructor, record);
344
170
  })];
345
171
  }
172
+ return [2 /*return*/, records.map(function (record) {
173
+ return _this.modelInstanceCreator(modelConstructor, record);
174
+ })];
346
175
  });
347
176
  });
348
177
  };
@@ -387,7 +216,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
387
216
  });
388
217
  }); })()];
389
218
  case 1:
390
- records = _a.sent();
219
+ records = (_a.sent());
391
220
  return [4 /*yield*/, this.load(namespaceName, modelConstructor.name, records)];
392
221
  case 2: return [2 /*return*/, _a.sent()];
393
222
  }
@@ -418,7 +247,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
418
247
  });
419
248
  };
420
249
  AsyncStorageAdapter.prototype.keyValueFromPredicate = function (predicates, keys) {
421
- var e_5, _a;
250
+ var e_2, _a;
422
251
  var predicateObjs = predicates.predicates;
423
252
  if (predicateObjs.length !== keys.length) {
424
253
  return;
@@ -434,12 +263,12 @@ var AsyncStorageAdapter = /** @class */ (function () {
434
263
  _loop_1(key);
435
264
  }
436
265
  }
437
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
266
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
438
267
  finally {
439
268
  try {
440
269
  if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
441
270
  }
442
- finally { if (e_5) throw e_5.error; }
271
+ finally { if (e_2) throw e_2.error; }
443
272
  }
444
273
  return keyValues.length === keys.length
445
274
  ? keyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR)
@@ -464,20 +293,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
464
293
  });
465
294
  };
466
295
  AsyncStorageAdapter.prototype.inMemoryPagination = function (records, pagination) {
467
- if (pagination && records.length > 1) {
468
- if (pagination.sort) {
469
- var sortPredicates = predicates_1.ModelSortPredicateCreator.getPredicates(pagination.sort);
470
- if (sortPredicates.length) {
471
- var compareFn = util_1.sortCompareFunction(sortPredicates);
472
- records.sort(compareFn);
473
- }
474
- }
475
- var _a = pagination.page, page = _a === void 0 ? 0 : _a, _b = pagination.limit, limit = _b === void 0 ? 0 : _b;
476
- var start = Math.max(0, page * limit) || 0;
477
- var end = limit > 0 ? start + limit : records.length;
478
- return records.slice(start, end);
479
- }
480
- return records;
296
+ return util_1.inMemoryPagination(records, pagination);
481
297
  };
482
298
  AsyncStorageAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
483
299
  if (firstOrLast === void 0) { firstOrLast = types_1.QueryOne.FIRST; }
@@ -497,9 +313,9 @@ var AsyncStorageAdapter = /** @class */ (function () {
497
313
  };
498
314
  AsyncStorageAdapter.prototype.delete = function (modelOrModelConstructor, condition) {
499
315
  return tslib_1.__awaiter(this, void 0, void 0, function () {
500
- var deleteQueue, modelConstructor, nameSpace, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, keyValuePath, fromDB, msg, predicates, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
501
- return tslib_1.__generator(this, function (_a) {
502
- switch (_a.label) {
316
+ var deleteQueue, modelConstructor, nameSpace, models, relations, deletedModels, deletedModels, model, modelConstructor, nameSpace, storeName, keyValuePath, fromDB, msg, predicates, _a, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
317
+ return tslib_1.__generator(this, function (_b) {
318
+ switch (_b.label) {
503
319
  case 0:
504
320
  deleteQueue = [];
505
321
  if (!util_1.isModelConstructor(modelOrModelConstructor)) return [3 /*break*/, 8];
@@ -507,16 +323,16 @@ var AsyncStorageAdapter = /** @class */ (function () {
507
323
  nameSpace = this.namespaceResolver(modelConstructor);
508
324
  return [4 /*yield*/, this.query(modelConstructor, condition)];
509
325
  case 1:
510
- models = _a.sent();
326
+ models = _b.sent();
511
327
  relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name]
512
328
  .relationTypes;
513
329
  if (!(condition !== undefined)) return [3 /*break*/, 4];
514
330
  return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, nameSpace, deleteQueue)];
515
331
  case 2:
516
- _a.sent();
332
+ _b.sent();
517
333
  return [4 /*yield*/, this.deleteItem(deleteQueue)];
518
334
  case 3:
519
- _a.sent();
335
+ _b.sent();
520
336
  deletedModels = deleteQueue.reduce(function (acc, _a) {
521
337
  var items = _a.items;
522
338
  return acc.concat(items);
@@ -524,10 +340,10 @@ var AsyncStorageAdapter = /** @class */ (function () {
524
340
  return [2 /*return*/, [models, deletedModels]];
525
341
  case 4: return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, nameSpace, deleteQueue)];
526
342
  case 5:
527
- _a.sent();
343
+ _b.sent();
528
344
  return [4 /*yield*/, this.deleteItem(deleteQueue)];
529
345
  case 6:
530
- _a.sent();
346
+ _b.sent();
531
347
  deletedModels = deleteQueue.reduce(function (acc, _a) {
532
348
  var items = _a.items;
533
349
  return acc.concat(items);
@@ -538,40 +354,40 @@ var AsyncStorageAdapter = /** @class */ (function () {
538
354
  model = modelOrModelConstructor;
539
355
  modelConstructor = Object.getPrototypeOf(model)
540
356
  .constructor;
541
- namespaceName = this.namespaceResolver(modelConstructor);
357
+ nameSpace = this.namespaceResolver(modelConstructor);
542
358
  storeName = this.getStorenameForModel(modelConstructor);
543
359
  if (!condition) return [3 /*break*/, 11];
544
360
  keyValuePath = this.getIndexKeyValuesPath(model);
545
361
  return [4 /*yield*/, this.db.get(keyValuePath, storeName)];
546
362
  case 9:
547
- fromDB = _a.sent();
363
+ fromDB = _b.sent();
548
364
  if (fromDB === undefined) {
549
365
  msg = 'Model instance not found in storage';
550
366
  logger.warn(msg, { model: model });
551
367
  return [2 /*return*/, [[model], []]];
552
368
  }
553
369
  predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
554
- predicateObjs = predicates.predicates, type = predicates.type;
370
+ _a = predicates, predicateObjs = _a.predicates, type = _a.type;
555
371
  isValid = util_1.validatePredicate(fromDB, type, predicateObjs);
556
372
  if (!isValid) {
557
373
  msg = 'Conditional update failed';
558
374
  logger.error(msg, { model: fromDB, condition: predicateObjs });
559
375
  throw new Error(msg);
560
376
  }
561
- relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
562
- return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
377
+ relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name].relationTypes;
378
+ return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
563
379
  case 10:
564
- _a.sent();
380
+ _b.sent();
565
381
  return [3 /*break*/, 13];
566
382
  case 11:
567
- relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
568
- return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
383
+ relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name].relationTypes;
384
+ return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
569
385
  case 12:
570
- _a.sent();
571
- _a.label = 13;
386
+ _b.sent();
387
+ _b.label = 13;
572
388
  case 13: return [4 /*yield*/, this.deleteItem(deleteQueue)];
573
389
  case 14:
574
- _a.sent();
390
+ _b.sent();
575
391
  deletedModels = deleteQueue.reduce(function (acc, _a) {
576
392
  var items = _a.items;
577
393
  return acc.concat(items);
@@ -583,71 +399,70 @@ var AsyncStorageAdapter = /** @class */ (function () {
583
399
  });
584
400
  };
585
401
  AsyncStorageAdapter.prototype.deleteItem = function (deleteQueue) {
586
- var deleteQueue_1, deleteQueue_1_1;
587
- var e_6, _a, e_7, _b;
402
+ var e_3, _a, e_4, _b;
588
403
  return tslib_1.__awaiter(this, void 0, void 0, function () {
589
- var deleteItem, storeName, items, items_1, items_1_1, item, keyValuesPath, e_7_1, e_6_1;
590
- return tslib_1.__generator(this, function (_c) {
591
- switch (_c.label) {
404
+ var _c, _d, deleteItem, storeName, items, items_1, items_1_1, item, keyValuesPath, e_4_1, e_3_1;
405
+ return tslib_1.__generator(this, function (_e) {
406
+ switch (_e.label) {
592
407
  case 0:
593
- _c.trys.push([0, 17, 18, 23]);
594
- deleteQueue_1 = tslib_1.__asyncValues(deleteQueue);
595
- _c.label = 1;
596
- case 1: return [4 /*yield*/, deleteQueue_1.next()];
408
+ _e.trys.push([0, 17, 18, 23]);
409
+ _c = tslib_1.__asyncValues(deleteQueue);
410
+ _e.label = 1;
411
+ case 1: return [4 /*yield*/, _c.next()];
597
412
  case 2:
598
- if (!(deleteQueue_1_1 = _c.sent(), !deleteQueue_1_1.done)) return [3 /*break*/, 16];
599
- deleteItem = deleteQueue_1_1.value;
413
+ if (!(_d = _e.sent(), !_d.done)) return [3 /*break*/, 16];
414
+ deleteItem = _d.value;
600
415
  storeName = deleteItem.storeName, items = deleteItem.items;
601
- _c.label = 3;
416
+ _e.label = 3;
602
417
  case 3:
603
- _c.trys.push([3, 9, 10, 15]);
418
+ _e.trys.push([3, 9, 10, 15]);
604
419
  items_1 = tslib_1.__asyncValues(items);
605
- _c.label = 4;
420
+ _e.label = 4;
606
421
  case 4: return [4 /*yield*/, items_1.next()];
607
422
  case 5:
608
- if (!(items_1_1 = _c.sent(), !items_1_1.done)) return [3 /*break*/, 8];
423
+ if (!(items_1_1 = _e.sent(), !items_1_1.done)) return [3 /*break*/, 8];
609
424
  item = items_1_1.value;
610
425
  if (!item) return [3 /*break*/, 7];
611
426
  if (!(typeof item === 'object')) return [3 /*break*/, 7];
612
427
  keyValuesPath = this.getIndexKeyValuesPath(item);
613
428
  return [4 /*yield*/, this.db.delete(keyValuesPath, storeName)];
614
429
  case 6:
615
- _c.sent();
616
- _c.label = 7;
430
+ _e.sent();
431
+ _e.label = 7;
617
432
  case 7: return [3 /*break*/, 4];
618
433
  case 8: return [3 /*break*/, 15];
619
434
  case 9:
620
- e_7_1 = _c.sent();
621
- e_7 = { error: e_7_1 };
435
+ e_4_1 = _e.sent();
436
+ e_4 = { error: e_4_1 };
622
437
  return [3 /*break*/, 15];
623
438
  case 10:
624
- _c.trys.push([10, , 13, 14]);
439
+ _e.trys.push([10, , 13, 14]);
625
440
  if (!(items_1_1 && !items_1_1.done && (_b = items_1.return))) return [3 /*break*/, 12];
626
441
  return [4 /*yield*/, _b.call(items_1)];
627
442
  case 11:
628
- _c.sent();
629
- _c.label = 12;
443
+ _e.sent();
444
+ _e.label = 12;
630
445
  case 12: return [3 /*break*/, 14];
631
446
  case 13:
632
- if (e_7) throw e_7.error;
447
+ if (e_4) throw e_4.error;
633
448
  return [7 /*endfinally*/];
634
449
  case 14: return [7 /*endfinally*/];
635
450
  case 15: return [3 /*break*/, 1];
636
451
  case 16: return [3 /*break*/, 23];
637
452
  case 17:
638
- e_6_1 = _c.sent();
639
- e_6 = { error: e_6_1 };
453
+ e_3_1 = _e.sent();
454
+ e_3 = { error: e_3_1 };
640
455
  return [3 /*break*/, 23];
641
456
  case 18:
642
- _c.trys.push([18, , 21, 22]);
643
- if (!(deleteQueue_1_1 && !deleteQueue_1_1.done && (_a = deleteQueue_1.return))) return [3 /*break*/, 20];
644
- return [4 /*yield*/, _a.call(deleteQueue_1)];
457
+ _e.trys.push([18, , 21, 22]);
458
+ if (!(_d && !_d.done && (_a = _c.return))) return [3 /*break*/, 20];
459
+ return [4 /*yield*/, _a.call(_c)];
645
460
  case 19:
646
- _c.sent();
647
- _c.label = 20;
461
+ _e.sent();
462
+ _e.label = 20;
648
463
  case 20: return [3 /*break*/, 22];
649
464
  case 21:
650
- if (e_6) throw e_6.error;
465
+ if (e_3) throw e_3.error;
651
466
  return [7 /*endfinally*/];
652
467
  case 22: return [7 /*endfinally*/];
653
468
  case 23: return [2 /*return*/];
@@ -664,21 +479,21 @@ var AsyncStorageAdapter = /** @class */ (function () {
664
479
  * @param deleteQueue
665
480
  */
666
481
  AsyncStorageAdapter.prototype.deleteTraverse = function (relations, models, srcModel, nameSpace, deleteQueue) {
667
- var relations_2, relations_2_1, models_1, models_1_1, models_2, models_2_1;
668
- var e_8, _a, e_9, _b, e_10, _c;
482
+ var relations_1, relations_1_1, models_1, models_1_1, models_2, models_2_1;
483
+ var e_5, _a, e_6, _b, e_7, _c;
669
484
  return tslib_1.__awaiter(this, void 0, void 0, function () {
670
- var rel, relationType, modelName, targetName, targetNames, associatedWith, storeName, index, _d, model, hasOneIndex_1, hasConnectedModelFields, keyValuesPath, values_1, isUnidirectionalConnection, allRecords, recordToDelete, hasOneIndex_2, hasOneCustomField, keyValuesPath, value_1, allRecords, recordToDelete, e_9_1, model, keyValues, allRecords, indices, childrenArray, e_10_1, e_8_1;
485
+ var rel, relationType, modelName, targetName, targetNames, associatedWith, storeName, index, _d, model, hasOneIndex_1, hasConnectedModelFields, keyValuesPath, values_1, isUnidirectionalConnection, allRecords, recordToDelete, hasOneIndex_2, hasOneCustomField, keyValuesPath, value_1, allRecords, recordToDelete, e_6_1, model, keyValues, allRecords, indices, childrenArray, e_7_1, e_5_1;
671
486
  var _this = this;
672
487
  return tslib_1.__generator(this, function (_e) {
673
488
  switch (_e.label) {
674
489
  case 0:
675
490
  _e.trys.push([0, 38, 39, 44]);
676
- relations_2 = tslib_1.__asyncValues(relations);
491
+ relations_1 = tslib_1.__asyncValues(relations);
677
492
  _e.label = 1;
678
- case 1: return [4 /*yield*/, relations_2.next()];
493
+ case 1: return [4 /*yield*/, relations_1.next()];
679
494
  case 2:
680
- if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/, 37];
681
- rel = relations_2_1.value;
495
+ if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
496
+ rel = relations_1_1.value;
682
497
  relationType = rel.relationType, modelName = rel.modelName, targetName = rel.targetName, targetNames = rel.targetNames, associatedWith = rel.associatedWith;
683
498
  storeName = util_1.getStorename(nameSpace, modelName);
684
499
  index = util_1.getIndex(this.schema.namespaces[nameSpace].relationships[modelName]
@@ -777,8 +592,8 @@ var AsyncStorageAdapter = /** @class */ (function () {
777
592
  case 11: return [3 /*break*/, 4];
778
593
  case 12: return [3 /*break*/, 19];
779
594
  case 13:
780
- e_9_1 = _e.sent();
781
- e_9 = { error: e_9_1 };
595
+ e_6_1 = _e.sent();
596
+ e_6 = { error: e_6_1 };
782
597
  return [3 /*break*/, 19];
783
598
  case 14:
784
599
  _e.trys.push([14, , 17, 18]);
@@ -789,7 +604,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
789
604
  _e.label = 16;
790
605
  case 16: return [3 /*break*/, 18];
791
606
  case 17:
792
- if (e_9) throw e_9.error;
607
+ if (e_6) throw e_6.error;
793
608
  return [7 /*endfinally*/];
794
609
  case 18: return [7 /*endfinally*/];
795
610
  case 19: return [3 /*break*/, 36];
@@ -817,8 +632,8 @@ var AsyncStorageAdapter = /** @class */ (function () {
817
632
  case 25: return [3 /*break*/, 21];
818
633
  case 26: return [3 /*break*/, 33];
819
634
  case 27:
820
- e_10_1 = _e.sent();
821
- e_10 = { error: e_10_1 };
635
+ e_7_1 = _e.sent();
636
+ e_7 = { error: e_7_1 };
822
637
  return [3 /*break*/, 33];
823
638
  case 28:
824
639
  _e.trys.push([28, , 31, 32]);
@@ -829,32 +644,30 @@ var AsyncStorageAdapter = /** @class */ (function () {
829
644
  _e.label = 30;
830
645
  case 30: return [3 /*break*/, 32];
831
646
  case 31:
832
- if (e_10) throw e_10.error;
647
+ if (e_7) throw e_7.error;
833
648
  return [7 /*endfinally*/];
834
649
  case 32: return [7 /*endfinally*/];
835
650
  case 33: return [3 /*break*/, 36];
836
651
  case 34:
837
652
  // Intentionally blank
838
653
  return [3 /*break*/, 36];
839
- case 35:
840
- util_1.exhaustiveCheck(relationType);
841
- return [3 /*break*/, 36];
654
+ case 35: throw new Error("Invalid relationType " + relationType);
842
655
  case 36: return [3 /*break*/, 1];
843
656
  case 37: return [3 /*break*/, 44];
844
657
  case 38:
845
- e_8_1 = _e.sent();
846
- e_8 = { error: e_8_1 };
658
+ e_5_1 = _e.sent();
659
+ e_5 = { error: e_5_1 };
847
660
  return [3 /*break*/, 44];
848
661
  case 39:
849
662
  _e.trys.push([39, , 42, 43]);
850
- if (!(relations_2_1 && !relations_2_1.done && (_a = relations_2.return))) return [3 /*break*/, 41];
851
- return [4 /*yield*/, _a.call(relations_2)];
663
+ if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 41];
664
+ return [4 /*yield*/, _a.call(relations_1)];
852
665
  case 40:
853
666
  _e.sent();
854
667
  _e.label = 41;
855
668
  case 41: return [3 /*break*/, 43];
856
669
  case 42:
857
- if (e_8) throw e_8.error;
670
+ if (e_5) throw e_5.error;
858
671
  return [7 /*endfinally*/];
859
672
  case 43: return [7 /*endfinally*/];
860
673
  case 44:
@@ -886,7 +699,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
886
699
  AsyncStorageAdapter.prototype.batchSave = function (modelConstructor, items) {
887
700
  return tslib_1.__awaiter(this, void 0, void 0, function () {
888
701
  var modelName, namespaceName, storeName, keys, batch, _loop_2, this_1, items_2, items_2_1, item;
889
- var e_11, _a;
702
+ var e_8, _a;
890
703
  var _this = this;
891
704
  return tslib_1.__generator(this, function (_b) {
892
705
  switch (_b.label) {
@@ -914,12 +727,12 @@ var AsyncStorageAdapter = /** @class */ (function () {
914
727
  _loop_2(item);
915
728
  }
916
729
  }
917
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
730
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
918
731
  finally {
919
732
  try {
920
733
  if (items_2_1 && !items_2_1.done && (_a = items_2.return)) _a.call(items_2);
921
734
  }
922
- finally { if (e_11) throw e_11.error; }
735
+ finally { if (e_8) throw e_8.error; }
923
736
  }
924
737
  return [4 /*yield*/, this.db.batchSave(storeName, batch, keys)];
925
738
  case 1: return [2 /*return*/, _b.sent()];