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

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