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