@aws-amplify/datastore 3.14.5-unstable.4 → 3.14.6

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 (178) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/build.js +5 -0
  3. package/dist/aws-amplify-datastore.js +92626 -0
  4. package/dist/aws-amplify-datastore.js.map +1 -0
  5. package/dist/aws-amplify-datastore.min.js +65 -0
  6. package/dist/aws-amplify-datastore.min.js.map +1 -0
  7. package/index.js +7 -0
  8. package/lib/authModeStrategies/multiAuthStrategy.js +64 -6
  9. package/lib/authModeStrategies/multiAuthStrategy.js.map +1 -1
  10. package/lib/datastore/datastore.js +297 -703
  11. package/lib/datastore/datastore.js.map +1 -1
  12. package/lib/index.js +4 -6
  13. package/lib/index.js.map +1 -1
  14. package/lib/predicates/index.js +6 -127
  15. package/lib/predicates/index.js.map +1 -1
  16. package/lib/predicates/sort.js +4 -10
  17. package/lib/predicates/sort.js.map +1 -1
  18. package/lib/storage/adapter/AsyncStorageAdapter.js +381 -138
  19. package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  20. package/lib/storage/adapter/AsyncStorageDatabase.js +98 -37
  21. package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  22. package/lib/storage/adapter/InMemoryStore.js +67 -16
  23. package/lib/storage/adapter/InMemoryStore.js.map +1 -1
  24. package/lib/storage/adapter/InMemoryStore.native.js +4 -2
  25. package/lib/storage/adapter/InMemoryStore.native.js.map +1 -1
  26. package/lib/storage/adapter/IndexedDBAdapter.js +420 -272
  27. package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
  28. package/lib/storage/adapter/getDefaultAdapter/index.js +5 -3
  29. package/lib/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  30. package/lib/storage/adapter/getDefaultAdapter/index.native.js +4 -2
  31. package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  32. package/lib/storage/storage.js +143 -72
  33. package/lib/storage/storage.js.map +1 -1
  34. package/lib/sync/datastoreConnectivity.js +55 -6
  35. package/lib/sync/datastoreConnectivity.js.map +1 -1
  36. package/lib/sync/datastoreReachability/index.native.js +4 -2
  37. package/lib/sync/datastoreReachability/index.native.js.map +1 -1
  38. package/lib/sync/index.js +124 -49
  39. package/lib/sync/index.js.map +1 -1
  40. package/lib/sync/merger.js +74 -8
  41. package/lib/sync/merger.js.map +1 -1
  42. package/lib/sync/outbox.js +97 -24
  43. package/lib/sync/outbox.js.map +1 -1
  44. package/lib/sync/processors/errorMaps.js +35 -5
  45. package/lib/sync/processors/errorMaps.js.map +1 -1
  46. package/lib/sync/processors/mutation.js +131 -47
  47. package/lib/sync/processors/mutation.js.map +1 -1
  48. package/lib/sync/processors/subscription.js +102 -29
  49. package/lib/sync/processors/subscription.js.map +1 -1
  50. package/lib/sync/processors/sync.js +102 -26
  51. package/lib/sync/processors/sync.js.map +1 -1
  52. package/lib/sync/utils.js +103 -40
  53. package/lib/sync/utils.js.map +1 -1
  54. package/lib/types.js +39 -9
  55. package/lib/types.js.map +1 -1
  56. package/lib/util.js +188 -192
  57. package/lib/util.js.map +1 -1
  58. package/lib-esm/authModeStrategies/multiAuthStrategy.js +57 -2
  59. package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +1 -1
  60. package/lib-esm/datastore/datastore.d.ts +8 -59
  61. package/lib-esm/datastore/datastore.js +234 -642
  62. package/lib-esm/datastore/datastore.js.map +1 -1
  63. package/lib-esm/index.d.ts +2 -3
  64. package/lib-esm/index.js +1 -2
  65. package/lib-esm/index.js.map +1 -1
  66. package/lib-esm/predicates/index.d.ts +2 -16
  67. package/lib-esm/predicates/index.js +7 -128
  68. package/lib-esm/predicates/index.js.map +1 -1
  69. package/lib-esm/predicates/sort.js +4 -10
  70. package/lib-esm/predicates/sort.js.map +1 -1
  71. package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -2
  72. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +349 -109
  73. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  74. package/lib-esm/storage/adapter/AsyncStorageDatabase.js +68 -7
  75. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  76. package/lib-esm/storage/adapter/InMemoryStore.d.ts +1 -1
  77. package/lib-esm/storage/adapter/InMemoryStore.js +52 -1
  78. package/lib-esm/storage/adapter/InMemoryStore.js.map +1 -1
  79. package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +2 -4
  80. package/lib-esm/storage/adapter/IndexedDBAdapter.js +368 -227
  81. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
  82. package/lib-esm/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  83. package/lib-esm/storage/storage.d.ts +6 -7
  84. package/lib-esm/storage/storage.js +101 -33
  85. package/lib-esm/storage/storage.js.map +1 -1
  86. package/lib-esm/sync/datastoreConnectivity.js +47 -1
  87. package/lib-esm/sync/datastoreConnectivity.js.map +1 -1
  88. package/lib-esm/sync/index.js +76 -4
  89. package/lib-esm/sync/index.js.map +1 -1
  90. package/lib-esm/sync/merger.js +67 -1
  91. package/lib-esm/sync/merger.js.map +1 -1
  92. package/lib-esm/sync/outbox.js +74 -1
  93. package/lib-esm/sync/outbox.js.map +1 -1
  94. package/lib-esm/sync/processors/errorMaps.js +32 -2
  95. package/lib-esm/sync/processors/errorMaps.js.map +1 -1
  96. package/lib-esm/sync/processors/mutation.js +93 -12
  97. package/lib-esm/sync/processors/mutation.js.map +1 -1
  98. package/lib-esm/sync/processors/subscription.js +69 -6
  99. package/lib-esm/sync/processors/subscription.js.map +1 -1
  100. package/lib-esm/sync/processors/sync.js +75 -2
  101. package/lib-esm/sync/processors/sync.js.map +1 -1
  102. package/lib-esm/sync/utils.d.ts +1 -1
  103. package/lib-esm/sync/utils.js +95 -32
  104. package/lib-esm/sync/utils.js.map +1 -1
  105. package/lib-esm/types.d.ts +10 -63
  106. package/lib-esm/types.js +38 -7
  107. package/lib-esm/types.js.map +1 -1
  108. package/lib-esm/util.d.ts +6 -39
  109. package/lib-esm/util.js +171 -171
  110. package/lib-esm/util.js.map +1 -1
  111. package/package.json +14 -21
  112. package/src/authModeStrategies/multiAuthStrategy.ts +2 -2
  113. package/src/datastore/datastore.ts +206 -699
  114. package/src/index.ts +0 -4
  115. package/src/predicates/index.ts +17 -143
  116. package/src/predicates/sort.ts +2 -8
  117. package/src/storage/adapter/AsyncStorageAdapter.ts +178 -56
  118. package/src/storage/adapter/AsyncStorageDatabase.ts +15 -16
  119. package/src/storage/adapter/InMemoryStore.ts +2 -5
  120. package/src/storage/adapter/IndexedDBAdapter.ts +191 -166
  121. package/src/storage/adapter/getDefaultAdapter/index.ts +2 -2
  122. package/src/storage/storage.ts +37 -56
  123. package/src/sync/datastoreConnectivity.ts +4 -4
  124. package/src/sync/index.ts +28 -22
  125. package/src/sync/merger.ts +1 -1
  126. package/src/sync/outbox.ts +6 -6
  127. package/src/sync/processors/errorMaps.ts +1 -1
  128. package/src/sync/processors/mutation.ts +19 -23
  129. package/src/sync/processors/subscription.ts +16 -20
  130. package/src/sync/processors/sync.ts +17 -17
  131. package/src/sync/utils.ts +48 -42
  132. package/src/types.ts +16 -128
  133. package/src/util.ts +150 -108
  134. package/webpack.config.dev.js +6 -0
  135. package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
  136. package/lib/authModeStrategies/index.d.ts +0 -2
  137. package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -13
  138. package/lib/datastore/datastore.d.ts +0 -207
  139. package/lib/index.d.ts +0 -16
  140. package/lib/predicates/index.d.ts +0 -30
  141. package/lib/predicates/next.d.ts +0 -301
  142. package/lib/predicates/next.js +0 -816
  143. package/lib/predicates/next.js.map +0 -1
  144. package/lib/predicates/sort.d.ts +0 -8
  145. package/lib/ssr/index.d.ts +0 -3
  146. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -42
  147. package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -39
  148. package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
  149. package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
  150. package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -61
  151. package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
  152. package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
  153. package/lib/storage/adapter/index.d.ts +0 -9
  154. package/lib/storage/relationship.d.ts +0 -140
  155. package/lib/storage/relationship.js +0 -335
  156. package/lib/storage/relationship.js.map +0 -1
  157. package/lib/storage/storage.d.ts +0 -50
  158. package/lib/sync/datastoreConnectivity.d.ts +0 -16
  159. package/lib/sync/datastoreReachability/index.d.ts +0 -3
  160. package/lib/sync/datastoreReachability/index.native.d.ts +0 -3
  161. package/lib/sync/index.d.ts +0 -89
  162. package/lib/sync/merger.d.ts +0 -17
  163. package/lib/sync/outbox.d.ts +0 -27
  164. package/lib/sync/processors/errorMaps.d.ts +0 -17
  165. package/lib/sync/processors/mutation.d.ts +0 -58
  166. package/lib/sync/processors/subscription.d.ts +0 -33
  167. package/lib/sync/processors/sync.d.ts +0 -28
  168. package/lib/sync/utils.d.ts +0 -42
  169. package/lib/types.d.ts +0 -554
  170. package/lib/util.d.ts +0 -189
  171. package/lib-esm/predicates/next.d.ts +0 -301
  172. package/lib-esm/predicates/next.js +0 -812
  173. package/lib-esm/predicates/next.js.map +0 -1
  174. package/lib-esm/storage/relationship.d.ts +0 -140
  175. package/lib-esm/storage/relationship.js +0 -333
  176. package/lib-esm/storage/relationship.js.map +0 -1
  177. package/src/predicates/next.ts +0 -967
  178. package/src/storage/relationship.ts +0 -272
@@ -1,9 +1,62 @@
1
- import { __asyncValues, __awaiter, __generator, __values } from "tslib";
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
38
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
39
+ var m = o[Symbol.asyncIterator], i;
40
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
41
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
42
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
43
+ };
44
+ var __values = (this && this.__values) || function(o) {
45
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
46
+ if (m) return m.call(o);
47
+ if (o && typeof o.length === "number") return {
48
+ next: function () {
49
+ if (o && i >= o.length) o = void 0;
50
+ return { value: o && o[i++], done: !o };
51
+ }
52
+ };
53
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
54
+ };
2
55
  import { ConsoleLogger as Logger } from '@aws-amplify/core';
3
56
  import AsyncStorageDatabase from './AsyncStorageDatabase';
4
- import { ModelPredicateCreator } from '../../predicates';
57
+ import { ModelPredicateCreator, ModelSortPredicateCreator, } from '../../predicates';
5
58
  import { isPredicateObj, OpType, QueryOne, } from '../../types';
6
- import { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, getIndex, getIndexFromAssociation, isModelConstructor, traverseModel, validatePredicate, inMemoryPagination, keysEqual, getStorename, getIndexKeys, extractPrimaryKeyValues, IDENTIFIER_KEY_SEPARATOR, } from '../../util';
59
+ import { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, exhaustiveCheck, getIndex, getIndexFromAssociation, isModelConstructor, traverseModel, validatePredicate, sortCompareFunction, keysEqual, getStorename, getIndexKeys, extractPrimaryKeyValues, IDENTIFIER_KEY_SEPARATOR, } from '../../util';
7
60
  var logger = new Logger('DataStore');
8
61
  var AsyncStorageAdapter = /** @class */ (function () {
9
62
  function AsyncStorageAdapter() {
@@ -70,10 +123,10 @@ var AsyncStorageAdapter = /** @class */ (function () {
70
123
  AsyncStorageAdapter.prototype.save = function (model, condition) {
71
124
  var e_1, _a;
72
125
  return __awaiter(this, void 0, void 0, function () {
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;
126
+ 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;
74
127
  var _this = this;
75
- return __generator(this, function (_c) {
76
- switch (_c.label) {
128
+ return __generator(this, function (_b) {
129
+ switch (_b.label) {
77
130
  case 0:
78
131
  modelConstructor = Object.getPrototypeOf(model)
79
132
  .constructor;
@@ -91,10 +144,10 @@ var AsyncStorageAdapter = /** @class */ (function () {
91
144
  keyValuesPath = this.getIndexKeyValuesPath(model);
92
145
  return [4 /*yield*/, this.db.get(keyValuesPath, storeName)];
93
146
  case 1:
94
- fromDB = _c.sent();
147
+ fromDB = _b.sent();
95
148
  if (condition && fromDB) {
96
149
  predicates = ModelPredicateCreator.getPredicates(condition);
97
- _b = predicates, predicateObjs = _b.predicates, type = _b.type;
150
+ predicateObjs = predicates.predicates, type = predicates.type;
98
151
  isValid = validatePredicate(fromDB, type, predicateObjs);
99
152
  if (!isValid) {
100
153
  msg = 'Conditional update failed';
@@ -103,43 +156,43 @@ var AsyncStorageAdapter = /** @class */ (function () {
103
156
  }
104
157
  }
105
158
  result = [];
106
- _c.label = 2;
159
+ _b.label = 2;
107
160
  case 2:
108
- _c.trys.push([2, 9, 10, 15]);
161
+ _b.trys.push([2, 9, 10, 15]);
109
162
  connectionStoreNames_1 = __asyncValues(connectionStoreNames);
110
- _c.label = 3;
163
+ _b.label = 3;
111
164
  case 3: return [4 /*yield*/, connectionStoreNames_1.next()];
112
165
  case 4:
113
- if (!(connectionStoreNames_1_1 = _c.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 8];
166
+ if (!(connectionStoreNames_1_1 = _b.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 8];
114
167
  resItem = connectionStoreNames_1_1.value;
115
168
  storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance, keys = resItem.keys;
116
169
  itemKeyValues = keys.map(function (key) { return item[key]; });
117
170
  itemKeyValuesPath = itemKeyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
118
171
  return [4 /*yield*/, this.db.get(itemKeyValuesPath, storeName_1)];
119
172
  case 5:
120
- fromDB_1 = _c.sent();
173
+ fromDB_1 = _b.sent();
121
174
  opType = fromDB_1 ? OpType.UPDATE : OpType.INSERT;
122
175
  modelKeyValues = this.getIndexKeyValuesFromModel(model);
123
176
  if (!(keysEqual(itemKeyValues, modelKeyValues) ||
124
177
  opType === OpType.INSERT)) return [3 /*break*/, 7];
125
178
  return [4 /*yield*/, this.db.save(item, storeName_1, keys, itemKeyValuesPath)];
126
179
  case 6:
127
- _c.sent();
180
+ _b.sent();
128
181
  result.push([instance, opType]);
129
- _c.label = 7;
182
+ _b.label = 7;
130
183
  case 7: return [3 /*break*/, 3];
131
184
  case 8: return [3 /*break*/, 15];
132
185
  case 9:
133
- e_1_1 = _c.sent();
186
+ e_1_1 = _b.sent();
134
187
  e_1 = { error: e_1_1 };
135
188
  return [3 /*break*/, 15];
136
189
  case 10:
137
- _c.trys.push([10, , 13, 14]);
190
+ _b.trys.push([10, , 13, 14]);
138
191
  if (!(connectionStoreNames_1_1 && !connectionStoreNames_1_1.done && (_a = connectionStoreNames_1.return))) return [3 /*break*/, 12];
139
192
  return [4 /*yield*/, _a.call(connectionStoreNames_1)];
140
193
  case 11:
141
- _c.sent();
142
- _c.label = 12;
194
+ _b.sent();
195
+ _b.label = 12;
143
196
  case 12: return [3 /*break*/, 14];
144
197
  case 13:
145
198
  if (e_1) throw e_1.error;
@@ -151,25 +204,196 @@ var AsyncStorageAdapter = /** @class */ (function () {
151
204
  });
152
205
  };
153
206
  AsyncStorageAdapter.prototype.load = function (namespaceName, srcModelName, records) {
207
+ var records_1, records_1_1, records_2, records_2_1;
208
+ var e_2, _a, e_3, _b, e_4, _c;
154
209
  return __awaiter(this, void 0, void 0, function () {
155
- var namespace, relations, connectionStoreNames, modelConstructor;
210
+ 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;
156
211
  var _this = this;
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) {
212
+ return __generator(this, function (_e) {
213
+ switch (_e.label) {
214
+ case 0:
215
+ namespace = this.schema.namespaces[namespaceName];
216
+ relations = namespace.relationships[srcModelName].relationTypes;
217
+ connectionStoreNames = relations.map(function (_a) {
218
+ var modelName = _a.modelName;
219
+ return getStorename(namespaceName, modelName);
220
+ });
221
+ modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
222
+ if (connectionStoreNames.length === 0) {
223
+ return [2 /*return*/, records.map(function (record) {
224
+ return _this.modelInstanceCreator(modelConstructor, record);
225
+ })];
226
+ }
227
+ _e.label = 1;
228
+ case 1:
229
+ _e.trys.push([1, 38, 39, 44]);
230
+ relations_1 = __asyncValues(relations);
231
+ _e.label = 2;
232
+ case 2: return [4 /*yield*/, relations_1.next()];
233
+ case 3:
234
+ if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
235
+ relation = relations_1_1.value;
236
+ fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName, targetNames = relation.targetNames, relationType = relation.relationType;
237
+ storeName = getStorename(namespaceName, modelName);
238
+ modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, modelName);
239
+ _d = relationType;
240
+ switch (_d) {
241
+ case 'HAS_ONE': return [3 /*break*/, 4];
242
+ case 'BELONGS_TO': return [3 /*break*/, 19];
243
+ case 'HAS_MANY': return [3 /*break*/, 34];
244
+ }
245
+ return [3 /*break*/, 35];
246
+ case 4:
247
+ _e.trys.push([4, 12, 13, 18]);
248
+ records_1 = __asyncValues(records);
249
+ _e.label = 5;
250
+ case 5: return [4 /*yield*/, records_1.next()];
251
+ case 6:
252
+ if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/, 11];
253
+ recordItem = records_1_1.value;
254
+ if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
255
+ getByFields = [];
256
+ allPresent = void 0;
257
+ // iterate through all targetnames to make sure they are all present in the recordItem
258
+ allPresent = targetNames.every(function (targetName) {
259
+ return recordItem[targetName] != null;
260
+ });
261
+ if (!allPresent) {
262
+ return [3 /*break*/, 11];
263
+ }
264
+ getByFields = targetNames;
265
+ keys = getByFields
266
+ .map(function (getByField) { return recordItem[getByField]; })
267
+ .join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
268
+ return [4 /*yield*/, this.db.get(keys, storeName)];
269
+ case 7:
270
+ connectionRecord = _e.sent();
271
+ recordItem[fieldName] =
272
+ connectionRecord &&
273
+ this.modelInstanceCreator(modelConstructor_1, connectionRecord);
274
+ return [3 /*break*/, 10];
275
+ case 8:
276
+ getByfield = recordItem[targetName]
277
+ ? targetName
278
+ : fieldName;
279
+ if (!recordItem[getByfield])
280
+ return [3 /*break*/, 11];
281
+ key = recordItem[getByfield];
282
+ return [4 /*yield*/, this.db.get(key, storeName)];
283
+ case 9:
284
+ connectionRecord = _e.sent();
285
+ recordItem[fieldName] =
286
+ connectionRecord &&
287
+ this.modelInstanceCreator(modelConstructor_1, connectionRecord);
288
+ _e.label = 10;
289
+ case 10: return [3 /*break*/, 5];
290
+ case 11: return [3 /*break*/, 18];
291
+ case 12:
292
+ e_3_1 = _e.sent();
293
+ e_3 = { error: e_3_1 };
294
+ return [3 /*break*/, 18];
295
+ case 13:
296
+ _e.trys.push([13, , 16, 17]);
297
+ if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/, 15];
298
+ return [4 /*yield*/, _b.call(records_1)];
299
+ case 14:
300
+ _e.sent();
301
+ _e.label = 15;
302
+ case 15: return [3 /*break*/, 17];
303
+ case 16:
304
+ if (e_3) throw e_3.error;
305
+ return [7 /*endfinally*/];
306
+ case 17: return [7 /*endfinally*/];
307
+ case 18: return [3 /*break*/, 36];
308
+ case 19:
309
+ _e.trys.push([19, 27, 28, 33]);
310
+ records_2 = __asyncValues(records);
311
+ _e.label = 20;
312
+ case 20: return [4 /*yield*/, records_2.next()];
313
+ case 21:
314
+ if (!(records_2_1 = _e.sent(), !records_2_1.done)) return [3 /*break*/, 26];
315
+ recordItem = records_2_1.value;
316
+ if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 23];
317
+ allPresent = void 0;
318
+ // iterate through all targetnames to make sure they are all present in the recordItem
319
+ allPresent = targetNames.every(function (targetName) {
320
+ return recordItem[targetName] != null;
321
+ });
322
+ // If not present, there is not yet a connected record
323
+ if (!allPresent) {
324
+ return [3 /*break*/, 26];
325
+ }
326
+ keys = targetNames
327
+ .map(function (targetName) { return recordItem[targetName]; })
328
+ .join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
329
+ return [4 /*yield*/, this.db.get(keys, storeName)];
330
+ case 22:
331
+ connectionRecord = _e.sent();
332
+ recordItem[fieldName] =
333
+ connectionRecord &&
334
+ this.modelInstanceCreator(modelConstructor_1, connectionRecord);
335
+ targetNames === null || targetNames === void 0 ? void 0 : targetNames.map(function (targetName) {
336
+ delete recordItem[targetName];
337
+ });
338
+ return [3 /*break*/, 25];
339
+ case 23:
340
+ if (!recordItem[targetName]) return [3 /*break*/, 25];
341
+ key = recordItem[targetName];
342
+ return [4 /*yield*/, this.db.get(key, storeName)];
343
+ case 24:
344
+ connectionRecord = _e.sent();
345
+ recordItem[fieldName] =
346
+ connectionRecord &&
347
+ this.modelInstanceCreator(modelConstructor_1, connectionRecord);
348
+ delete recordItem[targetName];
349
+ _e.label = 25;
350
+ case 25: return [3 /*break*/, 20];
351
+ case 26: return [3 /*break*/, 33];
352
+ case 27:
353
+ e_4_1 = _e.sent();
354
+ e_4 = { error: e_4_1 };
355
+ return [3 /*break*/, 33];
356
+ case 28:
357
+ _e.trys.push([28, , 31, 32]);
358
+ if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/, 30];
359
+ return [4 /*yield*/, _c.call(records_2)];
360
+ case 29:
361
+ _e.sent();
362
+ _e.label = 30;
363
+ case 30: return [3 /*break*/, 32];
364
+ case 31:
365
+ if (e_4) throw e_4.error;
366
+ return [7 /*endfinally*/];
367
+ case 32: return [7 /*endfinally*/];
368
+ case 33: return [3 /*break*/, 36];
369
+ case 34:
370
+ // TODO: Lazy loading
371
+ return [3 /*break*/, 36];
372
+ case 35:
373
+ exhaustiveCheck(relationType);
374
+ return [3 /*break*/, 36];
375
+ case 36: return [3 /*break*/, 2];
376
+ case 37: return [3 /*break*/, 44];
377
+ case 38:
378
+ e_2_1 = _e.sent();
379
+ e_2 = { error: e_2_1 };
380
+ return [3 /*break*/, 44];
381
+ case 39:
382
+ _e.trys.push([39, , 42, 43]);
383
+ if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 41];
384
+ return [4 /*yield*/, _a.call(relations_1)];
385
+ case 40:
386
+ _e.sent();
387
+ _e.label = 41;
388
+ case 41: return [3 /*break*/, 43];
389
+ case 42:
390
+ if (e_2) throw e_2.error;
391
+ return [7 /*endfinally*/];
392
+ case 43: return [7 /*endfinally*/];
393
+ case 44: return [2 /*return*/, records.map(function (record) {
167
394
  return _this.modelInstanceCreator(modelConstructor, record);
168
395
  })];
169
396
  }
170
- return [2 /*return*/, records.map(function (record) {
171
- return _this.modelInstanceCreator(modelConstructor, record);
172
- })];
173
397
  });
174
398
  });
175
399
  };
@@ -214,7 +438,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
214
438
  });
215
439
  }); })()];
216
440
  case 1:
217
- records = (_a.sent());
441
+ records = _a.sent();
218
442
  return [4 /*yield*/, this.load(namespaceName, modelConstructor.name, records)];
219
443
  case 2: return [2 /*return*/, _a.sent()];
220
444
  }
@@ -245,7 +469,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
245
469
  });
246
470
  };
247
471
  AsyncStorageAdapter.prototype.keyValueFromPredicate = function (predicates, keys) {
248
- var e_2, _a;
472
+ var e_5, _a;
249
473
  var predicateObjs = predicates.predicates;
250
474
  if (predicateObjs.length !== keys.length) {
251
475
  return;
@@ -261,12 +485,12 @@ var AsyncStorageAdapter = /** @class */ (function () {
261
485
  _loop_1(key);
262
486
  }
263
487
  }
264
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
488
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
265
489
  finally {
266
490
  try {
267
491
  if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
268
492
  }
269
- finally { if (e_2) throw e_2.error; }
493
+ finally { if (e_5) throw e_5.error; }
270
494
  }
271
495
  return keyValues.length === keys.length
272
496
  ? keyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR)
@@ -291,7 +515,20 @@ var AsyncStorageAdapter = /** @class */ (function () {
291
515
  });
292
516
  };
293
517
  AsyncStorageAdapter.prototype.inMemoryPagination = function (records, pagination) {
294
- return inMemoryPagination(records, pagination);
518
+ if (pagination && records.length > 1) {
519
+ if (pagination.sort) {
520
+ var sortPredicates = ModelSortPredicateCreator.getPredicates(pagination.sort);
521
+ if (sortPredicates.length) {
522
+ var compareFn = sortCompareFunction(sortPredicates);
523
+ records.sort(compareFn);
524
+ }
525
+ }
526
+ var _a = pagination.page, page = _a === void 0 ? 0 : _a, _b = pagination.limit, limit = _b === void 0 ? 0 : _b;
527
+ var start = Math.max(0, page * limit) || 0;
528
+ var end = limit > 0 ? start + limit : records.length;
529
+ return records.slice(start, end);
530
+ }
531
+ return records;
295
532
  };
296
533
  AsyncStorageAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
297
534
  if (firstOrLast === void 0) { firstOrLast = QueryOne.FIRST; }
@@ -311,9 +548,9 @@ var AsyncStorageAdapter = /** @class */ (function () {
311
548
  };
312
549
  AsyncStorageAdapter.prototype.delete = function (modelOrModelConstructor, condition) {
313
550
  return __awaiter(this, void 0, void 0, function () {
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) {
551
+ var deleteQueue, modelConstructor, nameSpace, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, keyValuePath, fromDB, msg, predicates, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
552
+ return __generator(this, function (_a) {
553
+ switch (_a.label) {
317
554
  case 0:
318
555
  deleteQueue = [];
319
556
  if (!isModelConstructor(modelOrModelConstructor)) return [3 /*break*/, 8];
@@ -321,16 +558,16 @@ var AsyncStorageAdapter = /** @class */ (function () {
321
558
  nameSpace = this.namespaceResolver(modelConstructor);
322
559
  return [4 /*yield*/, this.query(modelConstructor, condition)];
323
560
  case 1:
324
- models = _b.sent();
561
+ models = _a.sent();
325
562
  relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name]
326
563
  .relationTypes;
327
564
  if (!(condition !== undefined)) return [3 /*break*/, 4];
328
565
  return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, nameSpace, deleteQueue)];
329
566
  case 2:
330
- _b.sent();
567
+ _a.sent();
331
568
  return [4 /*yield*/, this.deleteItem(deleteQueue)];
332
569
  case 3:
333
- _b.sent();
570
+ _a.sent();
334
571
  deletedModels = deleteQueue.reduce(function (acc, _a) {
335
572
  var items = _a.items;
336
573
  return acc.concat(items);
@@ -338,10 +575,10 @@ var AsyncStorageAdapter = /** @class */ (function () {
338
575
  return [2 /*return*/, [models, deletedModels]];
339
576
  case 4: return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, nameSpace, deleteQueue)];
340
577
  case 5:
341
- _b.sent();
578
+ _a.sent();
342
579
  return [4 /*yield*/, this.deleteItem(deleteQueue)];
343
580
  case 6:
344
- _b.sent();
581
+ _a.sent();
345
582
  deletedModels = deleteQueue.reduce(function (acc, _a) {
346
583
  var items = _a.items;
347
584
  return acc.concat(items);
@@ -352,40 +589,40 @@ var AsyncStorageAdapter = /** @class */ (function () {
352
589
  model = modelOrModelConstructor;
353
590
  modelConstructor = Object.getPrototypeOf(model)
354
591
  .constructor;
355
- nameSpace = this.namespaceResolver(modelConstructor);
592
+ namespaceName = this.namespaceResolver(modelConstructor);
356
593
  storeName = this.getStorenameForModel(modelConstructor);
357
594
  if (!condition) return [3 /*break*/, 11];
358
595
  keyValuePath = this.getIndexKeyValuesPath(model);
359
596
  return [4 /*yield*/, this.db.get(keyValuePath, storeName)];
360
597
  case 9:
361
- fromDB = _b.sent();
598
+ fromDB = _a.sent();
362
599
  if (fromDB === undefined) {
363
600
  msg = 'Model instance not found in storage';
364
601
  logger.warn(msg, { model: model });
365
602
  return [2 /*return*/, [[model], []]];
366
603
  }
367
604
  predicates = ModelPredicateCreator.getPredicates(condition);
368
- _a = predicates, predicateObjs = _a.predicates, type = _a.type;
605
+ predicateObjs = predicates.predicates, type = predicates.type;
369
606
  isValid = validatePredicate(fromDB, type, predicateObjs);
370
607
  if (!isValid) {
371
608
  msg = 'Conditional update failed';
372
609
  logger.error(msg, { model: fromDB, condition: predicateObjs });
373
610
  throw new Error(msg);
374
611
  }
375
- relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name].relationTypes;
376
- return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
612
+ relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
613
+ return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
377
614
  case 10:
378
- _b.sent();
615
+ _a.sent();
379
616
  return [3 /*break*/, 13];
380
617
  case 11:
381
- relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name].relationTypes;
382
- return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, nameSpace, deleteQueue)];
618
+ relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
619
+ return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
383
620
  case 12:
384
- _b.sent();
385
- _b.label = 13;
621
+ _a.sent();
622
+ _a.label = 13;
386
623
  case 13: return [4 /*yield*/, this.deleteItem(deleteQueue)];
387
624
  case 14:
388
- _b.sent();
625
+ _a.sent();
389
626
  deletedModels = deleteQueue.reduce(function (acc, _a) {
390
627
  var items = _a.items;
391
628
  return acc.concat(items);
@@ -397,70 +634,71 @@ var AsyncStorageAdapter = /** @class */ (function () {
397
634
  });
398
635
  };
399
636
  AsyncStorageAdapter.prototype.deleteItem = function (deleteQueue) {
400
- var e_3, _a, e_4, _b;
637
+ var deleteQueue_1, deleteQueue_1_1;
638
+ var e_6, _a, e_7, _b;
401
639
  return __awaiter(this, void 0, void 0, function () {
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) {
640
+ var deleteItem, storeName, items, items_1, items_1_1, item, keyValuesPath, e_7_1, e_6_1;
641
+ return __generator(this, function (_c) {
642
+ switch (_c.label) {
405
643
  case 0:
406
- _e.trys.push([0, 17, 18, 23]);
407
- _c = __asyncValues(deleteQueue);
408
- _e.label = 1;
409
- case 1: return [4 /*yield*/, _c.next()];
644
+ _c.trys.push([0, 17, 18, 23]);
645
+ deleteQueue_1 = __asyncValues(deleteQueue);
646
+ _c.label = 1;
647
+ case 1: return [4 /*yield*/, deleteQueue_1.next()];
410
648
  case 2:
411
- if (!(_d = _e.sent(), !_d.done)) return [3 /*break*/, 16];
412
- deleteItem = _d.value;
649
+ if (!(deleteQueue_1_1 = _c.sent(), !deleteQueue_1_1.done)) return [3 /*break*/, 16];
650
+ deleteItem = deleteQueue_1_1.value;
413
651
  storeName = deleteItem.storeName, items = deleteItem.items;
414
- _e.label = 3;
652
+ _c.label = 3;
415
653
  case 3:
416
- _e.trys.push([3, 9, 10, 15]);
654
+ _c.trys.push([3, 9, 10, 15]);
417
655
  items_1 = __asyncValues(items);
418
- _e.label = 4;
656
+ _c.label = 4;
419
657
  case 4: return [4 /*yield*/, items_1.next()];
420
658
  case 5:
421
- if (!(items_1_1 = _e.sent(), !items_1_1.done)) return [3 /*break*/, 8];
659
+ if (!(items_1_1 = _c.sent(), !items_1_1.done)) return [3 /*break*/, 8];
422
660
  item = items_1_1.value;
423
661
  if (!item) return [3 /*break*/, 7];
424
662
  if (!(typeof item === 'object')) return [3 /*break*/, 7];
425
663
  keyValuesPath = this.getIndexKeyValuesPath(item);
426
664
  return [4 /*yield*/, this.db.delete(keyValuesPath, storeName)];
427
665
  case 6:
428
- _e.sent();
429
- _e.label = 7;
666
+ _c.sent();
667
+ _c.label = 7;
430
668
  case 7: return [3 /*break*/, 4];
431
669
  case 8: return [3 /*break*/, 15];
432
670
  case 9:
433
- e_4_1 = _e.sent();
434
- e_4 = { error: e_4_1 };
671
+ e_7_1 = _c.sent();
672
+ e_7 = { error: e_7_1 };
435
673
  return [3 /*break*/, 15];
436
674
  case 10:
437
- _e.trys.push([10, , 13, 14]);
675
+ _c.trys.push([10, , 13, 14]);
438
676
  if (!(items_1_1 && !items_1_1.done && (_b = items_1.return))) return [3 /*break*/, 12];
439
677
  return [4 /*yield*/, _b.call(items_1)];
440
678
  case 11:
441
- _e.sent();
442
- _e.label = 12;
679
+ _c.sent();
680
+ _c.label = 12;
443
681
  case 12: return [3 /*break*/, 14];
444
682
  case 13:
445
- if (e_4) throw e_4.error;
683
+ if (e_7) throw e_7.error;
446
684
  return [7 /*endfinally*/];
447
685
  case 14: return [7 /*endfinally*/];
448
686
  case 15: return [3 /*break*/, 1];
449
687
  case 16: return [3 /*break*/, 23];
450
688
  case 17:
451
- e_3_1 = _e.sent();
452
- e_3 = { error: e_3_1 };
689
+ e_6_1 = _c.sent();
690
+ e_6 = { error: e_6_1 };
453
691
  return [3 /*break*/, 23];
454
692
  case 18:
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)];
693
+ _c.trys.push([18, , 21, 22]);
694
+ if (!(deleteQueue_1_1 && !deleteQueue_1_1.done && (_a = deleteQueue_1.return))) return [3 /*break*/, 20];
695
+ return [4 /*yield*/, _a.call(deleteQueue_1)];
458
696
  case 19:
459
- _e.sent();
460
- _e.label = 20;
697
+ _c.sent();
698
+ _c.label = 20;
461
699
  case 20: return [3 /*break*/, 22];
462
700
  case 21:
463
- if (e_3) throw e_3.error;
701
+ if (e_6) throw e_6.error;
464
702
  return [7 /*endfinally*/];
465
703
  case 22: return [7 /*endfinally*/];
466
704
  case 23: return [2 /*return*/];
@@ -477,21 +715,21 @@ var AsyncStorageAdapter = /** @class */ (function () {
477
715
  * @param deleteQueue
478
716
  */
479
717
  AsyncStorageAdapter.prototype.deleteTraverse = function (relations, models, srcModel, nameSpace, deleteQueue) {
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;
718
+ var relations_2, relations_2_1, models_1, models_1_1, models_2, models_2_1;
719
+ var e_8, _a, e_9, _b, e_10, _c;
482
720
  return __awaiter(this, void 0, void 0, function () {
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;
721
+ 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;
484
722
  var _this = this;
485
723
  return __generator(this, function (_e) {
486
724
  switch (_e.label) {
487
725
  case 0:
488
726
  _e.trys.push([0, 38, 39, 44]);
489
- relations_1 = __asyncValues(relations);
727
+ relations_2 = __asyncValues(relations);
490
728
  _e.label = 1;
491
- case 1: return [4 /*yield*/, relations_1.next()];
729
+ case 1: return [4 /*yield*/, relations_2.next()];
492
730
  case 2:
493
- if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
494
- rel = relations_1_1.value;
731
+ if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/, 37];
732
+ rel = relations_2_1.value;
495
733
  relationType = rel.relationType, modelName = rel.modelName, targetName = rel.targetName, targetNames = rel.targetNames, associatedWith = rel.associatedWith;
496
734
  storeName = getStorename(nameSpace, modelName);
497
735
  index = getIndex(this.schema.namespaces[nameSpace].relationships[modelName]
@@ -592,8 +830,8 @@ var AsyncStorageAdapter = /** @class */ (function () {
592
830
  case 11: return [3 /*break*/, 4];
593
831
  case 12: return [3 /*break*/, 19];
594
832
  case 13:
595
- e_6_1 = _e.sent();
596
- e_6 = { error: e_6_1 };
833
+ e_9_1 = _e.sent();
834
+ e_9 = { error: e_9_1 };
597
835
  return [3 /*break*/, 19];
598
836
  case 14:
599
837
  _e.trys.push([14, , 17, 18]);
@@ -604,7 +842,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
604
842
  _e.label = 16;
605
843
  case 16: return [3 /*break*/, 18];
606
844
  case 17:
607
- if (e_6) throw e_6.error;
845
+ if (e_9) throw e_9.error;
608
846
  return [7 /*endfinally*/];
609
847
  case 18: return [7 /*endfinally*/];
610
848
  case 19: return [3 /*break*/, 36];
@@ -632,8 +870,8 @@ var AsyncStorageAdapter = /** @class */ (function () {
632
870
  case 25: return [3 /*break*/, 21];
633
871
  case 26: return [3 /*break*/, 33];
634
872
  case 27:
635
- e_7_1 = _e.sent();
636
- e_7 = { error: e_7_1 };
873
+ e_10_1 = _e.sent();
874
+ e_10 = { error: e_10_1 };
637
875
  return [3 /*break*/, 33];
638
876
  case 28:
639
877
  _e.trys.push([28, , 31, 32]);
@@ -644,30 +882,32 @@ var AsyncStorageAdapter = /** @class */ (function () {
644
882
  _e.label = 30;
645
883
  case 30: return [3 /*break*/, 32];
646
884
  case 31:
647
- if (e_7) throw e_7.error;
885
+ if (e_10) throw e_10.error;
648
886
  return [7 /*endfinally*/];
649
887
  case 32: return [7 /*endfinally*/];
650
888
  case 33: return [3 /*break*/, 36];
651
889
  case 34:
652
890
  // Intentionally blank
653
891
  return [3 /*break*/, 36];
654
- case 35: throw new Error("Invalid relationType " + relationType);
892
+ case 35:
893
+ exhaustiveCheck(relationType);
894
+ return [3 /*break*/, 36];
655
895
  case 36: return [3 /*break*/, 1];
656
896
  case 37: return [3 /*break*/, 44];
657
897
  case 38:
658
- e_5_1 = _e.sent();
659
- e_5 = { error: e_5_1 };
898
+ e_8_1 = _e.sent();
899
+ e_8 = { error: e_8_1 };
660
900
  return [3 /*break*/, 44];
661
901
  case 39:
662
902
  _e.trys.push([39, , 42, 43]);
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)];
903
+ if (!(relations_2_1 && !relations_2_1.done && (_a = relations_2.return))) return [3 /*break*/, 41];
904
+ return [4 /*yield*/, _a.call(relations_2)];
665
905
  case 40:
666
906
  _e.sent();
667
907
  _e.label = 41;
668
908
  case 41: return [3 /*break*/, 43];
669
909
  case 42:
670
- if (e_5) throw e_5.error;
910
+ if (e_8) throw e_8.error;
671
911
  return [7 /*endfinally*/];
672
912
  case 43: return [7 /*endfinally*/];
673
913
  case 44:
@@ -699,7 +939,7 @@ var AsyncStorageAdapter = /** @class */ (function () {
699
939
  AsyncStorageAdapter.prototype.batchSave = function (modelConstructor, items) {
700
940
  return __awaiter(this, void 0, void 0, function () {
701
941
  var modelName, namespaceName, storeName, keys, batch, _loop_2, this_1, items_2, items_2_1, item;
702
- var e_8, _a;
942
+ var e_11, _a;
703
943
  var _this = this;
704
944
  return __generator(this, function (_b) {
705
945
  switch (_b.label) {
@@ -727,12 +967,12 @@ var AsyncStorageAdapter = /** @class */ (function () {
727
967
  _loop_2(item);
728
968
  }
729
969
  }
730
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
970
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
731
971
  finally {
732
972
  try {
733
973
  if (items_2_1 && !items_2_1.done && (_a = items_2.return)) _a.call(items_2);
734
974
  }
735
- finally { if (e_8) throw e_8.error; }
975
+ finally { if (e_11) throw e_11.error; }
736
976
  }
737
977
  return [4 /*yield*/, this.db.batchSave(storeName, batch, keys)];
738
978
  case 1: return [2 /*return*/, _b.sent()];