@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.
- package/CHANGELOG.md +19 -0
- package/build.js +5 -0
- package/dist/aws-amplify-datastore.js +92853 -0
- package/dist/aws-amplify-datastore.js.map +1 -0
- package/dist/aws-amplify-datastore.min.js +65 -0
- package/dist/aws-amplify-datastore.min.js.map +1 -0
- package/index.js +7 -0
- package/lib/authModeStrategies/multiAuthStrategy.js +64 -6
- package/lib/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/lib/datastore/datastore.js +297 -703
- package/lib/datastore/datastore.js.map +1 -1
- package/lib/index.js +4 -6
- package/lib/index.js.map +1 -1
- package/lib/predicates/index.js +6 -127
- package/lib/predicates/index.js.map +1 -1
- package/lib/predicates/sort.js +4 -10
- package/lib/predicates/sort.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageAdapter.js +381 -138
- package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib/storage/adapter/AsyncStorageDatabase.js +98 -37
- package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib/storage/adapter/InMemoryStore.js +67 -16
- package/lib/storage/adapter/InMemoryStore.js.map +1 -1
- package/lib/storage/adapter/InMemoryStore.native.js +4 -2
- package/lib/storage/adapter/InMemoryStore.native.js.map +1 -1
- package/lib/storage/adapter/IndexedDBAdapter.js +420 -272
- package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib/storage/adapter/getDefaultAdapter/index.js +5 -3
- package/lib/storage/adapter/getDefaultAdapter/index.js.map +1 -1
- package/lib/storage/adapter/getDefaultAdapter/index.native.js +4 -2
- package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
- package/lib/storage/storage.js +143 -72
- package/lib/storage/storage.js.map +1 -1
- package/lib/sync/datastoreConnectivity.js +55 -6
- package/lib/sync/datastoreConnectivity.js.map +1 -1
- package/lib/sync/datastoreReachability/index.native.js +4 -2
- package/lib/sync/datastoreReachability/index.native.js.map +1 -1
- package/lib/sync/index.js +124 -49
- package/lib/sync/index.js.map +1 -1
- package/lib/sync/merger.js +74 -8
- package/lib/sync/merger.js.map +1 -1
- package/lib/sync/outbox.js +97 -24
- package/lib/sync/outbox.js.map +1 -1
- package/lib/sync/processors/errorMaps.js +35 -5
- package/lib/sync/processors/errorMaps.js.map +1 -1
- package/lib/sync/processors/mutation.js +131 -47
- package/lib/sync/processors/mutation.js.map +1 -1
- package/lib/sync/processors/subscription.js +102 -29
- package/lib/sync/processors/subscription.js.map +1 -1
- package/lib/sync/processors/sync.js +102 -26
- package/lib/sync/processors/sync.js.map +1 -1
- package/lib/sync/utils.js +103 -40
- package/lib/sync/utils.js.map +1 -1
- package/lib/types.js +39 -9
- package/lib/types.js.map +1 -1
- package/lib/util.js +188 -192
- package/lib/util.js.map +1 -1
- package/lib-esm/authModeStrategies/multiAuthStrategy.js +57 -2
- package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/lib-esm/datastore/datastore.d.ts +8 -59
- package/lib-esm/datastore/datastore.js +234 -642
- package/lib-esm/datastore/datastore.js.map +1 -1
- package/lib-esm/index.d.ts +2 -3
- package/lib-esm/index.js +1 -2
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/predicates/index.d.ts +2 -16
- package/lib-esm/predicates/index.js +7 -128
- package/lib-esm/predicates/index.js.map +1 -1
- package/lib-esm/predicates/sort.js +4 -10
- package/lib-esm/predicates/sort.js.map +1 -1
- package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -2
- package/lib-esm/storage/adapter/AsyncStorageAdapter.js +349 -109
- package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/lib-esm/storage/adapter/AsyncStorageDatabase.js +68 -7
- package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/lib-esm/storage/adapter/InMemoryStore.d.ts +1 -1
- package/lib-esm/storage/adapter/InMemoryStore.js +52 -1
- package/lib-esm/storage/adapter/InMemoryStore.js.map +1 -1
- package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +2 -4
- package/lib-esm/storage/adapter/IndexedDBAdapter.js +368 -227
- package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/lib-esm/storage/adapter/getDefaultAdapter/index.js.map +1 -1
- package/lib-esm/storage/storage.d.ts +6 -7
- package/lib-esm/storage/storage.js +101 -33
- package/lib-esm/storage/storage.js.map +1 -1
- package/lib-esm/sync/datastoreConnectivity.js +47 -1
- package/lib-esm/sync/datastoreConnectivity.js.map +1 -1
- package/lib-esm/sync/index.js +76 -4
- package/lib-esm/sync/index.js.map +1 -1
- package/lib-esm/sync/merger.js +67 -1
- package/lib-esm/sync/merger.js.map +1 -1
- package/lib-esm/sync/outbox.js +74 -1
- package/lib-esm/sync/outbox.js.map +1 -1
- package/lib-esm/sync/processors/errorMaps.js +32 -2
- package/lib-esm/sync/processors/errorMaps.js.map +1 -1
- package/lib-esm/sync/processors/mutation.js +93 -12
- package/lib-esm/sync/processors/mutation.js.map +1 -1
- package/lib-esm/sync/processors/subscription.js +69 -6
- package/lib-esm/sync/processors/subscription.js.map +1 -1
- package/lib-esm/sync/processors/sync.js +75 -2
- package/lib-esm/sync/processors/sync.js.map +1 -1
- package/lib-esm/sync/utils.d.ts +1 -1
- package/lib-esm/sync/utils.js +95 -32
- package/lib-esm/sync/utils.js.map +1 -1
- package/lib-esm/types.d.ts +10 -63
- package/lib-esm/types.js +38 -7
- package/lib-esm/types.js.map +1 -1
- package/lib-esm/util.d.ts +6 -39
- package/lib-esm/util.js +171 -171
- package/lib-esm/util.js.map +1 -1
- package/package.json +14 -21
- package/src/authModeStrategies/multiAuthStrategy.ts +2 -2
- package/src/datastore/datastore.ts +206 -699
- package/src/index.ts +0 -4
- package/src/predicates/index.ts +17 -143
- package/src/predicates/sort.ts +2 -8
- package/src/storage/adapter/AsyncStorageAdapter.ts +178 -56
- package/src/storage/adapter/AsyncStorageDatabase.ts +15 -16
- package/src/storage/adapter/InMemoryStore.ts +2 -5
- package/src/storage/adapter/IndexedDBAdapter.ts +191 -166
- package/src/storage/adapter/getDefaultAdapter/index.ts +2 -2
- package/src/storage/storage.ts +37 -56
- package/src/sync/datastoreConnectivity.ts +4 -4
- package/src/sync/index.ts +28 -22
- package/src/sync/merger.ts +1 -1
- package/src/sync/outbox.ts +6 -6
- package/src/sync/processors/errorMaps.ts +1 -1
- package/src/sync/processors/mutation.ts +19 -23
- package/src/sync/processors/subscription.ts +16 -20
- package/src/sync/processors/sync.ts +17 -17
- package/src/sync/utils.ts +48 -42
- package/src/types.ts +16 -128
- package/src/util.ts +150 -108
- package/webpack.config.dev.js +6 -0
- package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
- package/lib/authModeStrategies/index.d.ts +0 -2
- package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -13
- package/lib/datastore/datastore.d.ts +0 -207
- package/lib/index.d.ts +0 -16
- package/lib/predicates/index.d.ts +0 -30
- package/lib/predicates/next.d.ts +0 -301
- package/lib/predicates/next.js +0 -816
- package/lib/predicates/next.js.map +0 -1
- package/lib/predicates/sort.d.ts +0 -8
- package/lib/ssr/index.d.ts +0 -3
- package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -42
- package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -39
- package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
- package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
- package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -61
- package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
- package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
- package/lib/storage/adapter/index.d.ts +0 -9
- package/lib/storage/relationship.d.ts +0 -140
- package/lib/storage/relationship.js +0 -335
- package/lib/storage/relationship.js.map +0 -1
- package/lib/storage/storage.d.ts +0 -50
- package/lib/sync/datastoreConnectivity.d.ts +0 -16
- package/lib/sync/datastoreReachability/index.d.ts +0 -3
- package/lib/sync/datastoreReachability/index.native.d.ts +0 -3
- package/lib/sync/index.d.ts +0 -89
- package/lib/sync/merger.d.ts +0 -17
- package/lib/sync/outbox.d.ts +0 -27
- package/lib/sync/processors/errorMaps.d.ts +0 -17
- package/lib/sync/processors/mutation.d.ts +0 -58
- package/lib/sync/processors/subscription.d.ts +0 -33
- package/lib/sync/processors/sync.d.ts +0 -28
- package/lib/sync/utils.d.ts +0 -42
- package/lib/types.d.ts +0 -554
- package/lib/util.d.ts +0 -189
- package/lib-esm/predicates/next.d.ts +0 -301
- package/lib-esm/predicates/next.js +0 -812
- package/lib-esm/predicates/next.js.map +0 -1
- package/lib-esm/storage/relationship.d.ts +0 -140
- package/lib-esm/storage/relationship.js +0 -333
- package/lib-esm/storage/relationship.js.map +0 -1
- package/src/predicates/next.ts +0 -967
- 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 =
|
|
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
|
|
87
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
32
88
|
var error_1;
|
|
33
89
|
var _this = this;
|
|
34
|
-
return
|
|
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
|
|
75
|
-
var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, keyValuesPath, fromDB, predicates,
|
|
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
|
|
78
|
-
switch (
|
|
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 =
|
|
152
|
+
fromDB = _b.sent();
|
|
97
153
|
if (condition && fromDB) {
|
|
98
154
|
predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
|
|
99
|
-
|
|
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
|
-
|
|
164
|
+
_b.label = 2;
|
|
109
165
|
case 2:
|
|
110
|
-
|
|
111
|
-
connectionStoreNames_1 =
|
|
112
|
-
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
185
|
+
_b.sent();
|
|
130
186
|
result.push([instance, opType]);
|
|
131
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
144
|
-
|
|
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
|
-
|
|
157
|
-
|
|
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
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
|
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
|
|
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
|
|
419
|
+
return [4 /*yield*/, (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
193
420
|
var record, filtered, all;
|
|
194
|
-
return
|
|
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 =
|
|
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
|
|
454
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
228
455
|
var record;
|
|
229
|
-
return
|
|
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
|
|
241
|
-
return
|
|
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
|
|
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 =
|
|
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 (
|
|
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 (
|
|
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
|
|
505
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
279
506
|
var predicateObjs, type, all, filtered;
|
|
280
|
-
return
|
|
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
|
-
|
|
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
|
|
540
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
301
541
|
var storeName, result;
|
|
302
|
-
return
|
|
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
|
|
316
|
-
var deleteQueue, modelConstructor, nameSpace, models, relations, deletedModels, deletedModels, model, modelConstructor,
|
|
317
|
-
return
|
|
318
|
-
switch (
|
|
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 =
|
|
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
|
-
|
|
572
|
+
_a.sent();
|
|
333
573
|
return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
334
574
|
case 3:
|
|
335
|
-
|
|
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
|
-
|
|
583
|
+
_a.sent();
|
|
344
584
|
return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
345
585
|
case 6:
|
|
346
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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[
|
|
378
|
-
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name,
|
|
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
|
-
|
|
620
|
+
_a.sent();
|
|
381
621
|
return [3 /*break*/, 13];
|
|
382
622
|
case 11:
|
|
383
|
-
relations = this.schema.namespaces[
|
|
384
|
-
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name,
|
|
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
|
-
|
|
387
|
-
|
|
626
|
+
_a.sent();
|
|
627
|
+
_a.label = 13;
|
|
388
628
|
case 13: return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
389
629
|
case 14:
|
|
390
|
-
|
|
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
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
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
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
case 1: return [4 /*yield*/,
|
|
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 (!(
|
|
414
|
-
deleteItem =
|
|
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
|
-
|
|
657
|
+
_c.label = 3;
|
|
417
658
|
case 3:
|
|
418
|
-
|
|
419
|
-
items_1 =
|
|
420
|
-
|
|
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 =
|
|
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
|
-
|
|
431
|
-
|
|
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
|
-
|
|
436
|
-
|
|
676
|
+
e_7_1 = _c.sent();
|
|
677
|
+
e_7 = { error: e_7_1 };
|
|
437
678
|
return [3 /*break*/, 15];
|
|
438
679
|
case 10:
|
|
439
|
-
|
|
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
|
-
|
|
444
|
-
|
|
684
|
+
_c.sent();
|
|
685
|
+
_c.label = 12;
|
|
445
686
|
case 12: return [3 /*break*/, 14];
|
|
446
687
|
case 13:
|
|
447
|
-
if (
|
|
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
|
-
|
|
454
|
-
|
|
694
|
+
e_6_1 = _c.sent();
|
|
695
|
+
e_6 = { error: e_6_1 };
|
|
455
696
|
return [3 /*break*/, 23];
|
|
456
697
|
case 18:
|
|
457
|
-
|
|
458
|
-
if (!(
|
|
459
|
-
return [4 /*yield*/, _a.call(
|
|
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
|
-
|
|
462
|
-
|
|
702
|
+
_c.sent();
|
|
703
|
+
_c.label = 20;
|
|
463
704
|
case 20: return [3 /*break*/, 22];
|
|
464
705
|
case 21:
|
|
465
|
-
if (
|
|
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
|
|
483
|
-
var
|
|
484
|
-
return
|
|
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,
|
|
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
|
|
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
|
-
|
|
732
|
+
relations_2 = __asyncValues(relations);
|
|
492
733
|
_e.label = 1;
|
|
493
|
-
case 1: return [4 /*yield*/,
|
|
734
|
+
case 1: return [4 /*yield*/, relations_2.next()];
|
|
494
735
|
case 2:
|
|
495
|
-
if (!(
|
|
496
|
-
rel =
|
|
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 =
|
|
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
|
-
|
|
598
|
-
|
|
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 (
|
|
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 =
|
|
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
|
-
|
|
638
|
-
|
|
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 (
|
|
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:
|
|
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
|
-
|
|
661
|
-
|
|
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 (!(
|
|
666
|
-
return [4 /*yield*/, _a.call(
|
|
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 (
|
|
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
|
|
689
|
-
return
|
|
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
|
|
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
|
|
947
|
+
var e_11, _a;
|
|
705
948
|
var _this = this;
|
|
706
|
-
return
|
|
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 =
|
|
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 (
|
|
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 (
|
|
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()];
|