@aws-amplify/datastore 3.14.5-unstable.2 → 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,88 @@
|
|
|
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 __read = (this && this.__read) || function (o, n) {
|
|
46
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
47
|
+
if (!m) return o;
|
|
48
|
+
var i = m.call(o), r, ar = [], e;
|
|
49
|
+
try {
|
|
50
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
51
|
+
}
|
|
52
|
+
catch (error) { e = { error: error }; }
|
|
53
|
+
finally {
|
|
54
|
+
try {
|
|
55
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
56
|
+
}
|
|
57
|
+
finally { if (e) throw e.error; }
|
|
58
|
+
}
|
|
59
|
+
return ar;
|
|
60
|
+
};
|
|
61
|
+
var __values = (this && this.__values) || function(o) {
|
|
62
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
63
|
+
if (m) return m.call(o);
|
|
64
|
+
if (o && typeof o.length === "number") return {
|
|
65
|
+
next: function () {
|
|
66
|
+
if (o && i >= o.length) o = void 0;
|
|
67
|
+
return { value: o && o[i++], done: !o };
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
71
|
+
};
|
|
72
|
+
var __spread = (this && this.__spread) || function () {
|
|
73
|
+
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
74
|
+
return ar;
|
|
75
|
+
};
|
|
76
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
77
|
+
if (mod && mod.__esModule) return mod;
|
|
78
|
+
var result = {};
|
|
79
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
80
|
+
result["default"] = mod;
|
|
81
|
+
return result;
|
|
82
|
+
};
|
|
2
83
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var tslib_1 = require("tslib");
|
|
4
84
|
var core_1 = require("@aws-amplify/core");
|
|
5
|
-
var idb =
|
|
85
|
+
var idb = __importStar(require("idb"));
|
|
6
86
|
var predicates_1 = require("../../predicates");
|
|
7
87
|
var types_1 = require("../../types");
|
|
8
88
|
var util_1 = require("../../util");
|
|
@@ -42,9 +122,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
42
122
|
return util_1.extractPrimaryKeyValues(model, keys);
|
|
43
123
|
};
|
|
44
124
|
IndexedDBAdapter.prototype.checkPrivate = function () {
|
|
45
|
-
return
|
|
125
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
46
126
|
var isPrivate;
|
|
47
|
-
return
|
|
127
|
+
return __generator(this, function (_a) {
|
|
48
128
|
switch (_a.label) {
|
|
49
129
|
case 0: return [4 /*yield*/, util_1.isPrivateMode().then(function (isPrivate) {
|
|
50
130
|
return isPrivate;
|
|
@@ -74,9 +154,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
74
154
|
* https://github.com/aws-amplify/amplify-js/pull/10527
|
|
75
155
|
*/
|
|
76
156
|
IndexedDBAdapter.prototype.setSafariCompatabilityMode = function () {
|
|
77
|
-
return
|
|
157
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
78
158
|
var _a;
|
|
79
|
-
return
|
|
159
|
+
return __generator(this, function (_b) {
|
|
80
160
|
switch (_b.label) {
|
|
81
161
|
case 0:
|
|
82
162
|
_a = this;
|
|
@@ -92,17 +172,17 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
92
172
|
});
|
|
93
173
|
};
|
|
94
174
|
IndexedDBAdapter.prototype.getNamespaceAndModelFromStorename = function (storeName) {
|
|
95
|
-
var _a =
|
|
175
|
+
var _a = __read(storeName.split('_')), namespaceName = _a[0], modelNameArr = _a.slice(1);
|
|
96
176
|
return {
|
|
97
177
|
namespaceName: namespaceName,
|
|
98
178
|
modelName: modelNameArr.join('_'),
|
|
99
179
|
};
|
|
100
180
|
};
|
|
101
181
|
IndexedDBAdapter.prototype.setUp = function (theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName, sessionId) {
|
|
102
|
-
return
|
|
182
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
103
183
|
var VERSION, _a, error_1;
|
|
104
184
|
var _this = this;
|
|
105
|
-
return
|
|
185
|
+
return __generator(this, function (_b) {
|
|
106
186
|
switch (_b.label) {
|
|
107
187
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
108
188
|
case 1:
|
|
@@ -135,11 +215,11 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
135
215
|
VERSION = 3;
|
|
136
216
|
_a = this;
|
|
137
217
|
return [4 /*yield*/, idb.openDB(this.dbName, VERSION, {
|
|
138
|
-
upgrade: function (db, oldVersion, newVersion, txn) { return
|
|
218
|
+
upgrade: function (db, oldVersion, newVersion, txn) { return __awaiter(_this, void 0, void 0, function () {
|
|
139
219
|
var _a, _b, storeName, origStore, tmpName, _c, namespaceName, modelName, newStore, cursor, count, e_1_1, error_2;
|
|
140
220
|
var e_1, _d;
|
|
141
221
|
var _this = this;
|
|
142
|
-
return
|
|
222
|
+
return __generator(this, function (_e) {
|
|
143
223
|
switch (_e.label) {
|
|
144
224
|
case 0:
|
|
145
225
|
if (oldVersion === 0) {
|
|
@@ -159,7 +239,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
159
239
|
_e.label = 2;
|
|
160
240
|
case 2:
|
|
161
241
|
_e.trys.push([2, 11, 12, 13]);
|
|
162
|
-
_a =
|
|
242
|
+
_a = __values(txn.objectStoreNames), _b = _a.next();
|
|
163
243
|
_e.label = 3;
|
|
164
244
|
case 3:
|
|
165
245
|
if (!!_b.done) return [3 /*break*/, 10];
|
|
@@ -220,11 +300,11 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
220
300
|
];
|
|
221
301
|
})
|
|
222
302
|
.filter(function (_a) {
|
|
223
|
-
var _b =
|
|
303
|
+
var _b = __read(_a, 2), storeName = _b[1];
|
|
224
304
|
return !objectStoreNames.has(storeName);
|
|
225
305
|
})
|
|
226
306
|
.forEach(function (_a) {
|
|
227
|
-
var _b =
|
|
307
|
+
var _b = __read(_a, 2), modelName = _b[0], storeName = _b[1];
|
|
228
308
|
_this.createObjectStoreForModel(db, namespaceName, storeName, modelName);
|
|
229
309
|
});
|
|
230
310
|
});
|
|
@@ -255,9 +335,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
255
335
|
});
|
|
256
336
|
};
|
|
257
337
|
IndexedDBAdapter.prototype._get = function (storeOrStoreName, keyArr) {
|
|
258
|
-
return
|
|
338
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
259
339
|
var index, storeName, store, result;
|
|
260
|
-
return
|
|
340
|
+
return __generator(this, function (_a) {
|
|
261
341
|
switch (_a.label) {
|
|
262
342
|
case 0:
|
|
263
343
|
if (typeof storeOrStoreName === 'string') {
|
|
@@ -278,14 +358,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
278
358
|
};
|
|
279
359
|
IndexedDBAdapter.prototype.save = function (model, condition) {
|
|
280
360
|
var e_2, _a;
|
|
281
|
-
return
|
|
282
|
-
var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, tx, store, keyValues, fromDB, predicates,
|
|
361
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
362
|
+
var modelConstructor, storeName, namespaceName, connectedModels, set, connectionStoreNames, tx, store, keyValues, fromDB, predicates, predicateObjs, type, isValid, msg, result, connectionStoreNames_1, connectionStoreNames_1_1, resItem, storeName_1, item, instance, keys, store_1, itemKeyValues, fromDB_1, opType, modelKeyValues, key, e_2_1;
|
|
283
363
|
var _this = this;
|
|
284
|
-
return
|
|
285
|
-
switch (
|
|
364
|
+
return __generator(this, function (_b) {
|
|
365
|
+
switch (_b.label) {
|
|
286
366
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
287
367
|
case 1:
|
|
288
|
-
|
|
368
|
+
_b.sent();
|
|
289
369
|
modelConstructor = Object.getPrototypeOf(model)
|
|
290
370
|
.constructor;
|
|
291
371
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
@@ -299,15 +379,15 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
299
379
|
var keys = util_1.getIndexKeys(_this.schema.namespaces[namespaceName], modelName);
|
|
300
380
|
return { storeName: storeName, item: item, instance: instance, keys: keys };
|
|
301
381
|
});
|
|
302
|
-
tx = this.db.transaction(
|
|
382
|
+
tx = this.db.transaction(__spread([storeName], Array.from(set.values())), 'readwrite');
|
|
303
383
|
store = tx.objectStore(storeName);
|
|
304
384
|
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
305
385
|
return [4 /*yield*/, this._get(store, keyValues)];
|
|
306
386
|
case 2:
|
|
307
|
-
fromDB =
|
|
387
|
+
fromDB = _b.sent();
|
|
308
388
|
if (condition && fromDB) {
|
|
309
389
|
predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
|
|
310
|
-
|
|
390
|
+
predicateObjs = predicates.predicates, type = predicates.type;
|
|
311
391
|
isValid = util_1.validatePredicate(fromDB, type, predicateObjs);
|
|
312
392
|
if (!isValid) {
|
|
313
393
|
msg = 'Conditional update failed';
|
|
@@ -316,14 +396,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
316
396
|
}
|
|
317
397
|
}
|
|
318
398
|
result = [];
|
|
319
|
-
|
|
399
|
+
_b.label = 3;
|
|
320
400
|
case 3:
|
|
321
|
-
|
|
322
|
-
connectionStoreNames_1 =
|
|
323
|
-
|
|
401
|
+
_b.trys.push([3, 11, 12, 17]);
|
|
402
|
+
connectionStoreNames_1 = __asyncValues(connectionStoreNames);
|
|
403
|
+
_b.label = 4;
|
|
324
404
|
case 4: return [4 /*yield*/, connectionStoreNames_1.next()];
|
|
325
405
|
case 5:
|
|
326
|
-
if (!(connectionStoreNames_1_1 =
|
|
406
|
+
if (!(connectionStoreNames_1_1 = _b.sent(), !connectionStoreNames_1_1.done)) return [3 /*break*/, 10];
|
|
327
407
|
resItem = connectionStoreNames_1_1.value;
|
|
328
408
|
storeName_1 = resItem.storeName, item = resItem.item, instance = resItem.instance, keys = resItem.keys;
|
|
329
409
|
store_1 = tx.objectStore(storeName_1);
|
|
@@ -333,7 +413,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
333
413
|
});
|
|
334
414
|
return [4 /*yield*/, this._get(store_1, itemKeyValues)];
|
|
335
415
|
case 6:
|
|
336
|
-
fromDB_1 =
|
|
416
|
+
fromDB_1 = _b.sent();
|
|
337
417
|
opType = fromDB_1 === undefined ? types_1.OpType.INSERT : types_1.OpType.UPDATE;
|
|
338
418
|
modelKeyValues = this.getIndexKeyValuesFromModel(model);
|
|
339
419
|
if (!(util_1.keysEqual(itemKeyValues, modelKeyValues) ||
|
|
@@ -342,25 +422,25 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
342
422
|
.index('byPk')
|
|
343
423
|
.getKey(this.canonicalKeyPath(itemKeyValues))];
|
|
344
424
|
case 7:
|
|
345
|
-
key =
|
|
425
|
+
key = _b.sent();
|
|
346
426
|
return [4 /*yield*/, store_1.put(item, key)];
|
|
347
427
|
case 8:
|
|
348
|
-
|
|
428
|
+
_b.sent();
|
|
349
429
|
result.push([instance, opType]);
|
|
350
|
-
|
|
430
|
+
_b.label = 9;
|
|
351
431
|
case 9: return [3 /*break*/, 4];
|
|
352
432
|
case 10: return [3 /*break*/, 17];
|
|
353
433
|
case 11:
|
|
354
|
-
e_2_1 =
|
|
434
|
+
e_2_1 = _b.sent();
|
|
355
435
|
e_2 = { error: e_2_1 };
|
|
356
436
|
return [3 /*break*/, 17];
|
|
357
437
|
case 12:
|
|
358
|
-
|
|
438
|
+
_b.trys.push([12, , 15, 16]);
|
|
359
439
|
if (!(connectionStoreNames_1_1 && !connectionStoreNames_1_1.done && (_a = connectionStoreNames_1.return))) return [3 /*break*/, 14];
|
|
360
440
|
return [4 /*yield*/, _a.call(connectionStoreNames_1)];
|
|
361
441
|
case 13:
|
|
362
|
-
|
|
363
|
-
|
|
442
|
+
_b.sent();
|
|
443
|
+
_b.label = 14;
|
|
364
444
|
case 14: return [3 /*break*/, 16];
|
|
365
445
|
case 15:
|
|
366
446
|
if (e_2) throw e_2.error;
|
|
@@ -368,40 +448,213 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
368
448
|
case 16: return [7 /*endfinally*/];
|
|
369
449
|
case 17: return [4 /*yield*/, tx.done];
|
|
370
450
|
case 18:
|
|
371
|
-
|
|
451
|
+
_b.sent();
|
|
372
452
|
return [2 /*return*/, result];
|
|
373
453
|
}
|
|
374
454
|
});
|
|
375
455
|
});
|
|
376
456
|
};
|
|
377
457
|
IndexedDBAdapter.prototype.load = function (namespaceName, srcModelName, records) {
|
|
378
|
-
|
|
379
|
-
|
|
458
|
+
var records_1, records_1_1, records_2, records_2_1;
|
|
459
|
+
var e_3, _a, e_4, _b, e_5, _c;
|
|
460
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
461
|
+
var namespace, relations, connectionStoreNames, modelConstructor, tx, relations_1, relations_1_1, relation, fieldName, modelName, targetName, targetNames, storeName, store, modelConstructor_1, _d, recordItem, getByFields, allPresent, keys, connectionRecord, getByfield, key, connectionRecord, e_4_1, recordItem, allPresent, keys, connectionRecord, key, connectionRecord, e_5_1, e_3_1;
|
|
380
462
|
var _this = this;
|
|
381
|
-
return
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
463
|
+
return __generator(this, function (_e) {
|
|
464
|
+
switch (_e.label) {
|
|
465
|
+
case 0:
|
|
466
|
+
namespace = this.schema.namespaces[namespaceName];
|
|
467
|
+
relations = namespace.relationships[srcModelName].relationTypes;
|
|
468
|
+
connectionStoreNames = relations.map(function (_a) {
|
|
469
|
+
var modelName = _a.modelName;
|
|
470
|
+
return util_1.getStorename(namespaceName, modelName);
|
|
471
|
+
});
|
|
472
|
+
modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
|
|
473
|
+
if (connectionStoreNames.length === 0) {
|
|
474
|
+
return [2 /*return*/, records.map(function (record) {
|
|
475
|
+
return _this.modelInstanceCreator(modelConstructor, record);
|
|
476
|
+
})];
|
|
477
|
+
}
|
|
478
|
+
tx = this.db.transaction(__spread(connectionStoreNames), 'readonly');
|
|
479
|
+
_e.label = 1;
|
|
480
|
+
case 1:
|
|
481
|
+
_e.trys.push([1, 38, 39, 44]);
|
|
482
|
+
relations_1 = __asyncValues(relations);
|
|
483
|
+
_e.label = 2;
|
|
484
|
+
case 2: return [4 /*yield*/, relations_1.next()];
|
|
485
|
+
case 3:
|
|
486
|
+
if (!(relations_1_1 = _e.sent(), !relations_1_1.done)) return [3 /*break*/, 37];
|
|
487
|
+
relation = relations_1_1.value;
|
|
488
|
+
fieldName = relation.fieldName, modelName = relation.modelName, targetName = relation.targetName, targetNames = relation.targetNames;
|
|
489
|
+
storeName = util_1.getStorename(namespaceName, modelName);
|
|
490
|
+
store = tx.objectStore(storeName);
|
|
491
|
+
modelConstructor_1 = this.getModelConstructorByModelName(namespaceName, modelName);
|
|
492
|
+
_d = relation.relationType;
|
|
493
|
+
switch (_d) {
|
|
494
|
+
case 'HAS_ONE': return [3 /*break*/, 4];
|
|
495
|
+
case 'BELONGS_TO': return [3 /*break*/, 19];
|
|
496
|
+
case 'HAS_MANY': return [3 /*break*/, 34];
|
|
497
|
+
}
|
|
498
|
+
return [3 /*break*/, 35];
|
|
499
|
+
case 4:
|
|
500
|
+
_e.trys.push([4, 12, 13, 18]);
|
|
501
|
+
records_1 = __asyncValues(records);
|
|
502
|
+
_e.label = 5;
|
|
503
|
+
case 5: return [4 /*yield*/, records_1.next()];
|
|
504
|
+
case 6:
|
|
505
|
+
if (!(records_1_1 = _e.sent(), !records_1_1.done)) return [3 /*break*/, 11];
|
|
506
|
+
recordItem = records_1_1.value;
|
|
507
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 8];
|
|
508
|
+
getByFields = [];
|
|
509
|
+
allPresent = void 0;
|
|
510
|
+
// iterate through all targetnames to make sure they are all present in the recordItem
|
|
511
|
+
allPresent = targetNames.every(function (targetName) {
|
|
512
|
+
return recordItem[targetName] != null;
|
|
513
|
+
});
|
|
514
|
+
if (!allPresent) {
|
|
515
|
+
return [3 /*break*/, 11];
|
|
516
|
+
}
|
|
517
|
+
getByFields = targetNames;
|
|
518
|
+
keys = getByFields.map(function (getByField) { return recordItem[getByField]; });
|
|
519
|
+
return [4 /*yield*/, this._get(store, keys)];
|
|
520
|
+
case 7:
|
|
521
|
+
connectionRecord = _e.sent();
|
|
522
|
+
recordItem[fieldName] =
|
|
523
|
+
connectionRecord &&
|
|
524
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
525
|
+
return [3 /*break*/, 10];
|
|
526
|
+
case 8:
|
|
527
|
+
getByfield = recordItem[targetName]
|
|
528
|
+
? targetName
|
|
529
|
+
: fieldName;
|
|
530
|
+
// We break here, because the recordItem does not have 'team', the `getByField`
|
|
531
|
+
// extract the keys on the related model.
|
|
532
|
+
if (!recordItem[getByfield])
|
|
533
|
+
return [3 /*break*/, 11];
|
|
534
|
+
key = [recordItem[getByfield]];
|
|
535
|
+
return [4 /*yield*/, this._get(store, key)];
|
|
536
|
+
case 9:
|
|
537
|
+
connectionRecord = _e.sent();
|
|
538
|
+
recordItem[fieldName] =
|
|
539
|
+
connectionRecord &&
|
|
540
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
541
|
+
_e.label = 10;
|
|
542
|
+
case 10: return [3 /*break*/, 5];
|
|
543
|
+
case 11: return [3 /*break*/, 18];
|
|
544
|
+
case 12:
|
|
545
|
+
e_4_1 = _e.sent();
|
|
546
|
+
e_4 = { error: e_4_1 };
|
|
547
|
+
return [3 /*break*/, 18];
|
|
548
|
+
case 13:
|
|
549
|
+
_e.trys.push([13, , 16, 17]);
|
|
550
|
+
if (!(records_1_1 && !records_1_1.done && (_b = records_1.return))) return [3 /*break*/, 15];
|
|
551
|
+
return [4 /*yield*/, _b.call(records_1)];
|
|
552
|
+
case 14:
|
|
553
|
+
_e.sent();
|
|
554
|
+
_e.label = 15;
|
|
555
|
+
case 15: return [3 /*break*/, 17];
|
|
556
|
+
case 16:
|
|
557
|
+
if (e_4) throw e_4.error;
|
|
558
|
+
return [7 /*endfinally*/];
|
|
559
|
+
case 17: return [7 /*endfinally*/];
|
|
560
|
+
case 18: return [3 /*break*/, 36];
|
|
561
|
+
case 19:
|
|
562
|
+
_e.trys.push([19, 27, 28, 33]);
|
|
563
|
+
records_2 = __asyncValues(records);
|
|
564
|
+
_e.label = 20;
|
|
565
|
+
case 20: return [4 /*yield*/, records_2.next()];
|
|
566
|
+
case 21:
|
|
567
|
+
if (!(records_2_1 = _e.sent(), !records_2_1.done)) return [3 /*break*/, 26];
|
|
568
|
+
recordItem = records_2_1.value;
|
|
569
|
+
if (!(targetNames === null || targetNames === void 0 ? void 0 : targetNames.length)) return [3 /*break*/, 23];
|
|
570
|
+
allPresent = void 0;
|
|
571
|
+
// iterate through all targetnames to make sure they are all present in the recordItem
|
|
572
|
+
allPresent = targetNames.every(function (targetName) {
|
|
573
|
+
return recordItem[targetName] != null;
|
|
574
|
+
});
|
|
575
|
+
// If not present, there is not yet a connected record
|
|
576
|
+
if (!allPresent) {
|
|
577
|
+
return [3 /*break*/, 26];
|
|
578
|
+
}
|
|
579
|
+
keys = targetNames
|
|
580
|
+
.filter(function (targetName) { var _a; return (_a = recordItem[targetName]) !== null && _a !== void 0 ? _a : false; })
|
|
581
|
+
.map(function (targetName) { return recordItem[targetName]; });
|
|
582
|
+
return [4 /*yield*/, this._get(store, keys)];
|
|
583
|
+
case 22:
|
|
584
|
+
connectionRecord = _e.sent();
|
|
585
|
+
recordItem[fieldName] =
|
|
586
|
+
connectionRecord &&
|
|
587
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
588
|
+
targetNames === null || targetNames === void 0 ? void 0 : targetNames.map(function (targetName) {
|
|
589
|
+
delete recordItem[targetName];
|
|
590
|
+
});
|
|
591
|
+
return [3 /*break*/, 25];
|
|
592
|
+
case 23:
|
|
593
|
+
if (!recordItem[targetName]) return [3 /*break*/, 25];
|
|
594
|
+
key = [recordItem[targetName]];
|
|
595
|
+
return [4 /*yield*/, this._get(store, key)];
|
|
596
|
+
case 24:
|
|
597
|
+
connectionRecord = _e.sent();
|
|
598
|
+
recordItem[fieldName] =
|
|
599
|
+
connectionRecord &&
|
|
600
|
+
this.modelInstanceCreator(modelConstructor_1, connectionRecord);
|
|
601
|
+
delete recordItem[targetName];
|
|
602
|
+
_e.label = 25;
|
|
603
|
+
case 25: return [3 /*break*/, 20];
|
|
604
|
+
case 26: return [3 /*break*/, 33];
|
|
605
|
+
case 27:
|
|
606
|
+
e_5_1 = _e.sent();
|
|
607
|
+
e_5 = { error: e_5_1 };
|
|
608
|
+
return [3 /*break*/, 33];
|
|
609
|
+
case 28:
|
|
610
|
+
_e.trys.push([28, , 31, 32]);
|
|
611
|
+
if (!(records_2_1 && !records_2_1.done && (_c = records_2.return))) return [3 /*break*/, 30];
|
|
612
|
+
return [4 /*yield*/, _c.call(records_2)];
|
|
613
|
+
case 29:
|
|
614
|
+
_e.sent();
|
|
615
|
+
_e.label = 30;
|
|
616
|
+
case 30: return [3 /*break*/, 32];
|
|
617
|
+
case 31:
|
|
618
|
+
if (e_5) throw e_5.error;
|
|
619
|
+
return [7 /*endfinally*/];
|
|
620
|
+
case 32: return [7 /*endfinally*/];
|
|
621
|
+
case 33: return [3 /*break*/, 36];
|
|
622
|
+
case 34:
|
|
623
|
+
// TODO: Lazy loading
|
|
624
|
+
return [3 /*break*/, 36];
|
|
625
|
+
case 35:
|
|
626
|
+
util_1.exhaustiveCheck(relation.relationType);
|
|
627
|
+
return [3 /*break*/, 36];
|
|
628
|
+
case 36: return [3 /*break*/, 2];
|
|
629
|
+
case 37: return [3 /*break*/, 44];
|
|
630
|
+
case 38:
|
|
631
|
+
e_3_1 = _e.sent();
|
|
632
|
+
e_3 = { error: e_3_1 };
|
|
633
|
+
return [3 /*break*/, 44];
|
|
634
|
+
case 39:
|
|
635
|
+
_e.trys.push([39, , 42, 43]);
|
|
636
|
+
if (!(relations_1_1 && !relations_1_1.done && (_a = relations_1.return))) return [3 /*break*/, 41];
|
|
637
|
+
return [4 /*yield*/, _a.call(relations_1)];
|
|
638
|
+
case 40:
|
|
639
|
+
_e.sent();
|
|
640
|
+
_e.label = 41;
|
|
641
|
+
case 41: return [3 /*break*/, 43];
|
|
642
|
+
case 42:
|
|
643
|
+
if (e_3) throw e_3.error;
|
|
644
|
+
return [7 /*endfinally*/];
|
|
645
|
+
case 43: return [7 /*endfinally*/];
|
|
646
|
+
case 44: return [2 /*return*/, records.map(function (record) {
|
|
391
647
|
return _this.modelInstanceCreator(modelConstructor, record);
|
|
392
648
|
})];
|
|
393
649
|
}
|
|
394
|
-
return [2 /*return*/, records.map(function (record) {
|
|
395
|
-
return _this.modelInstanceCreator(modelConstructor, record);
|
|
396
|
-
})];
|
|
397
650
|
});
|
|
398
651
|
});
|
|
399
652
|
};
|
|
400
653
|
IndexedDBAdapter.prototype.query = function (modelConstructor, predicate, pagination) {
|
|
401
|
-
return
|
|
654
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
402
655
|
var storeName, namespaceName, predicates, keyPath, queryByKey, hasSort, hasPagination, records;
|
|
403
656
|
var _this = this;
|
|
404
|
-
return
|
|
657
|
+
return __generator(this, function (_a) {
|
|
405
658
|
switch (_a.label) {
|
|
406
659
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
407
660
|
case 1:
|
|
@@ -413,9 +666,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
413
666
|
queryByKey = predicates && this.keyValueFromPredicate(predicates, keyPath);
|
|
414
667
|
hasSort = pagination && pagination.sort;
|
|
415
668
|
hasPagination = pagination && pagination.limit;
|
|
416
|
-
return [4 /*yield*/, (function () { return
|
|
669
|
+
return [4 /*yield*/, (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
417
670
|
var record, filtered, all;
|
|
418
|
-
return
|
|
671
|
+
return __generator(this, function (_a) {
|
|
419
672
|
switch (_a.label) {
|
|
420
673
|
case 0:
|
|
421
674
|
if (!queryByKey) return [3 /*break*/, 2];
|
|
@@ -444,7 +697,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
444
697
|
});
|
|
445
698
|
}); })()];
|
|
446
699
|
case 2:
|
|
447
|
-
records =
|
|
700
|
+
records = _a.sent();
|
|
448
701
|
return [4 /*yield*/, this.load(namespaceName, modelConstructor.name, records)];
|
|
449
702
|
case 3: return [2 /*return*/, _a.sent()];
|
|
450
703
|
}
|
|
@@ -452,18 +705,21 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
452
705
|
});
|
|
453
706
|
};
|
|
454
707
|
IndexedDBAdapter.prototype.getByKey = function (storeName, keyValue) {
|
|
455
|
-
return
|
|
456
|
-
|
|
708
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
709
|
+
var record;
|
|
710
|
+
return __generator(this, function (_a) {
|
|
457
711
|
switch (_a.label) {
|
|
458
712
|
case 0: return [4 /*yield*/, this._get(storeName, keyValue)];
|
|
459
|
-
case 1:
|
|
713
|
+
case 1:
|
|
714
|
+
record = _a.sent();
|
|
715
|
+
return [2 /*return*/, record];
|
|
460
716
|
}
|
|
461
717
|
});
|
|
462
718
|
});
|
|
463
719
|
};
|
|
464
720
|
IndexedDBAdapter.prototype.getAll = function (storeName) {
|
|
465
|
-
return
|
|
466
|
-
return
|
|
721
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
722
|
+
return __generator(this, function (_a) {
|
|
467
723
|
switch (_a.label) {
|
|
468
724
|
case 0: return [4 /*yield*/, this.db.getAll(storeName)];
|
|
469
725
|
case 1: return [2 /*return*/, _a.sent()];
|
|
@@ -472,7 +728,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
472
728
|
});
|
|
473
729
|
};
|
|
474
730
|
IndexedDBAdapter.prototype.keyValueFromPredicate = function (predicates, keyPath) {
|
|
475
|
-
var
|
|
731
|
+
var e_6, _a;
|
|
476
732
|
var predicateObjs = predicates.predicates;
|
|
477
733
|
if (predicateObjs.length !== keyPath.length) {
|
|
478
734
|
return;
|
|
@@ -483,169 +739,58 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
483
739
|
predicateObj && keyValues.push(predicateObj.operand);
|
|
484
740
|
};
|
|
485
741
|
try {
|
|
486
|
-
for (var keyPath_1 =
|
|
742
|
+
for (var keyPath_1 = __values(keyPath), keyPath_1_1 = keyPath_1.next(); !keyPath_1_1.done; keyPath_1_1 = keyPath_1.next()) {
|
|
487
743
|
var key = keyPath_1_1.value;
|
|
488
744
|
_loop_1(key);
|
|
489
745
|
}
|
|
490
746
|
}
|
|
491
|
-
catch (
|
|
747
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
492
748
|
finally {
|
|
493
749
|
try {
|
|
494
750
|
if (keyPath_1_1 && !keyPath_1_1.done && (_a = keyPath_1.return)) _a.call(keyPath_1);
|
|
495
751
|
}
|
|
496
|
-
finally { if (
|
|
752
|
+
finally { if (e_6) throw e_6.error; }
|
|
497
753
|
}
|
|
498
754
|
return keyValues.length === keyPath.length ? keyValues : undefined;
|
|
499
755
|
};
|
|
500
|
-
IndexedDBAdapter.prototype.matchingIndex = function (storeName, fieldName, transaction) {
|
|
501
|
-
var e_4, _a;
|
|
502
|
-
var store = transaction.objectStore(storeName);
|
|
503
|
-
try {
|
|
504
|
-
for (var _b = tslib_1.__values(store.indexNames), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
505
|
-
var name_1 = _c.value;
|
|
506
|
-
var idx = store.index(name_1);
|
|
507
|
-
if (idx.keyPath === fieldName) {
|
|
508
|
-
return idx;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
513
|
-
finally {
|
|
514
|
-
try {
|
|
515
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
516
|
-
}
|
|
517
|
-
finally { if (e_4) throw e_4.error; }
|
|
518
|
-
}
|
|
519
|
-
};
|
|
520
756
|
IndexedDBAdapter.prototype.filterOnPredicate = function (storeName, predicates) {
|
|
521
|
-
return
|
|
522
|
-
var predicateObjs, type,
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
return tslib_1.__generator(this, function (_c) {
|
|
526
|
-
switch (_c.label) {
|
|
757
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
758
|
+
var predicateObjs, type, all, filtered;
|
|
759
|
+
return __generator(this, function (_a) {
|
|
760
|
+
switch (_a.label) {
|
|
527
761
|
case 0:
|
|
528
762
|
predicateObjs = predicates.predicates, type = predicates.type;
|
|
529
|
-
|
|
530
|
-
// one level down: `{and: {or: {and: { <the predicates we want> }}}}`
|
|
531
|
-
// so, we unpack and/or groups until we find a group with more than 1
|
|
532
|
-
// child OR a child that is not a group (and is therefore a predicate "object").
|
|
533
|
-
while (predicateObjs.length === 1 && types_1.isPredicateGroup(predicateObjs[0])) {
|
|
534
|
-
type = predicateObjs[0].type;
|
|
535
|
-
predicateObjs = predicateObjs[0].predicates;
|
|
536
|
-
}
|
|
537
|
-
fieldPredicates = predicateObjs.filter(function (p) {
|
|
538
|
-
return types_1.isPredicateObj(p);
|
|
539
|
-
});
|
|
540
|
-
txn = this.db.transaction(storeName);
|
|
541
|
-
predicateIndexes = fieldPredicates.map(function (p) {
|
|
542
|
-
return {
|
|
543
|
-
predicate: p,
|
|
544
|
-
index: _this.matchingIndex(storeName, String(p.field), txn),
|
|
545
|
-
};
|
|
546
|
-
});
|
|
547
|
-
// Explicitly wait for txns from index queries to complete before proceding.
|
|
548
|
-
// This helps ensure IndexedDB is in a stable, ready state. Else, subseqeuent
|
|
549
|
-
// qeuries can sometimes appear to deadlock (at least in FakeIndexedDB).
|
|
550
|
-
return [4 /*yield*/, txn.done];
|
|
763
|
+
return [4 /*yield*/, this.getAll(storeName)];
|
|
551
764
|
case 1:
|
|
552
|
-
|
|
553
|
-
// This helps ensure IndexedDB is in a stable, ready state. Else, subseqeuent
|
|
554
|
-
// qeuries can sometimes appear to deadlock (at least in FakeIndexedDB).
|
|
555
|
-
_c.sent();
|
|
556
|
-
if (!(type === 'and')) return [3 /*break*/, 6];
|
|
557
|
-
actualPredicateIndexes = predicateIndexes.filter(function (i) { return i.index && i.predicate.operator === 'eq'; });
|
|
558
|
-
if (!(actualPredicateIndexes.length > 0)) return [3 /*break*/, 3];
|
|
559
|
-
predicateIndex = actualPredicateIndexes[0];
|
|
560
|
-
return [4 /*yield*/, predicateIndex.index.getAll(predicateIndex.predicate.operand)];
|
|
561
|
-
case 2:
|
|
562
|
-
candidateResults = (_c.sent());
|
|
563
|
-
return [3 /*break*/, 5];
|
|
564
|
-
case 3: return [4 /*yield*/, this.getAll(storeName)];
|
|
565
|
-
case 4:
|
|
566
|
-
// no usable indexes
|
|
567
|
-
candidateResults = (_c.sent());
|
|
568
|
-
_c.label = 5;
|
|
569
|
-
case 5: return [3 /*break*/, 20];
|
|
570
|
-
case 6:
|
|
571
|
-
if (!(type === 'or')) return [3 /*break*/, 18];
|
|
572
|
-
if (!(predicateIndexes.length > 0 &&
|
|
573
|
-
predicateIndexes.every(function (i) { return i.index && i.predicate.operator === 'eq'; }))) return [3 /*break*/, 15];
|
|
574
|
-
distinctResults = new Map();
|
|
575
|
-
_c.label = 7;
|
|
576
|
-
case 7:
|
|
577
|
-
_c.trys.push([7, 12, 13, 14]);
|
|
578
|
-
predicateIndexes_1 = tslib_1.__values(predicateIndexes), predicateIndexes_1_1 = predicateIndexes_1.next();
|
|
579
|
-
_c.label = 8;
|
|
580
|
-
case 8:
|
|
581
|
-
if (!!predicateIndexes_1_1.done) return [3 /*break*/, 11];
|
|
582
|
-
predicateIndex = predicateIndexes_1_1.value;
|
|
583
|
-
return [4 /*yield*/, predicateIndex.index.getAll(predicateIndex.predicate.operand)];
|
|
584
|
-
case 9:
|
|
585
|
-
resultGroup = (_c.sent());
|
|
586
|
-
try {
|
|
587
|
-
for (resultGroup_1 = (e_6 = void 0, tslib_1.__values(resultGroup)), resultGroup_1_1 = resultGroup_1.next(); !resultGroup_1_1.done; resultGroup_1_1 = resultGroup_1.next()) {
|
|
588
|
-
item = resultGroup_1_1.value;
|
|
589
|
-
// TODO: custom PK
|
|
590
|
-
distinctResults.set(item.id, item);
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
594
|
-
finally {
|
|
595
|
-
try {
|
|
596
|
-
if (resultGroup_1_1 && !resultGroup_1_1.done && (_b = resultGroup_1.return)) _b.call(resultGroup_1);
|
|
597
|
-
}
|
|
598
|
-
finally { if (e_6) throw e_6.error; }
|
|
599
|
-
}
|
|
600
|
-
_c.label = 10;
|
|
601
|
-
case 10:
|
|
602
|
-
predicateIndexes_1_1 = predicateIndexes_1.next();
|
|
603
|
-
return [3 /*break*/, 8];
|
|
604
|
-
case 11: return [3 /*break*/, 14];
|
|
605
|
-
case 12:
|
|
606
|
-
e_5_1 = _c.sent();
|
|
607
|
-
e_5 = { error: e_5_1 };
|
|
608
|
-
return [3 /*break*/, 14];
|
|
609
|
-
case 13:
|
|
610
|
-
try {
|
|
611
|
-
if (predicateIndexes_1_1 && !predicateIndexes_1_1.done && (_a = predicateIndexes_1.return)) _a.call(predicateIndexes_1);
|
|
612
|
-
}
|
|
613
|
-
finally { if (e_5) throw e_5.error; }
|
|
614
|
-
return [7 /*endfinally*/];
|
|
615
|
-
case 14:
|
|
616
|
-
// we could conceivably check for special conditions and return early here.
|
|
617
|
-
// but, this is simpler and has not yet had a measurable performance impact.
|
|
618
|
-
candidateResults = Array.from(distinctResults.values());
|
|
619
|
-
return [3 /*break*/, 17];
|
|
620
|
-
case 15: return [4 /*yield*/, this.getAll(storeName)];
|
|
621
|
-
case 16:
|
|
622
|
-
// either no usable indexes or not all conditions can use one.
|
|
623
|
-
candidateResults = (_c.sent());
|
|
624
|
-
_c.label = 17;
|
|
625
|
-
case 17: return [3 /*break*/, 20];
|
|
626
|
-
case 18: return [4 /*yield*/, this.getAll(storeName)];
|
|
627
|
-
case 19:
|
|
628
|
-
// nothing intelligent we can do with `not` groups unless or until we start
|
|
629
|
-
// smashing comparison operators against indexes -- at which point we could
|
|
630
|
-
// perform some reversal here.
|
|
631
|
-
candidateResults = (_c.sent());
|
|
632
|
-
_c.label = 20;
|
|
633
|
-
case 20:
|
|
765
|
+
all = _a.sent();
|
|
634
766
|
filtered = predicateObjs
|
|
635
|
-
?
|
|
636
|
-
:
|
|
767
|
+
? all.filter(function (m) { return util_1.validatePredicate(m, type, predicateObjs); })
|
|
768
|
+
: all;
|
|
637
769
|
return [2 /*return*/, filtered];
|
|
638
770
|
}
|
|
639
771
|
});
|
|
640
772
|
});
|
|
641
773
|
};
|
|
642
774
|
IndexedDBAdapter.prototype.inMemoryPagination = function (records, pagination) {
|
|
643
|
-
|
|
775
|
+
if (pagination && records.length > 1) {
|
|
776
|
+
if (pagination.sort) {
|
|
777
|
+
var sortPredicates = predicates_1.ModelSortPredicateCreator.getPredicates(pagination.sort);
|
|
778
|
+
if (sortPredicates.length) {
|
|
779
|
+
var compareFn = util_1.sortCompareFunction(sortPredicates);
|
|
780
|
+
records.sort(compareFn);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
var _a = pagination.page, page = _a === void 0 ? 0 : _a, _b = pagination.limit, limit = _b === void 0 ? 0 : _b;
|
|
784
|
+
var start = Math.max(0, page * limit) || 0;
|
|
785
|
+
var end = limit > 0 ? start + limit : records.length;
|
|
786
|
+
return records.slice(start, end);
|
|
787
|
+
}
|
|
788
|
+
return records;
|
|
644
789
|
};
|
|
645
790
|
IndexedDBAdapter.prototype.enginePagination = function (storeName, pagination) {
|
|
646
|
-
return
|
|
791
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
647
792
|
var result, _a, page, _b, limit, initialRecord, cursor, pageResults, hasLimit;
|
|
648
|
-
return
|
|
793
|
+
return __generator(this, function (_c) {
|
|
649
794
|
switch (_c.label) {
|
|
650
795
|
case 0:
|
|
651
796
|
if (!pagination) return [3 /*break*/, 7];
|
|
@@ -690,9 +835,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
690
835
|
};
|
|
691
836
|
IndexedDBAdapter.prototype.queryOne = function (modelConstructor, firstOrLast) {
|
|
692
837
|
if (firstOrLast === void 0) { firstOrLast = types_1.QueryOne.FIRST; }
|
|
693
|
-
return
|
|
838
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
694
839
|
var storeName, cursor, result;
|
|
695
|
-
return
|
|
840
|
+
return __generator(this, function (_a) {
|
|
696
841
|
switch (_a.label) {
|
|
697
842
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
698
843
|
case 1:
|
|
@@ -711,13 +856,13 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
711
856
|
});
|
|
712
857
|
};
|
|
713
858
|
IndexedDBAdapter.prototype.delete = function (modelOrModelConstructor, condition) {
|
|
714
|
-
return
|
|
715
|
-
var deleteQueue, modelConstructor, nameSpace, storeName, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, tx, store, keyValues, fromDB, msg, predicates,
|
|
716
|
-
return
|
|
717
|
-
switch (
|
|
859
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
860
|
+
var deleteQueue, modelConstructor, nameSpace, storeName, models, relations, deletedModels, deletedModels, model, modelConstructor, namespaceName, storeName, tx, store, keyValues, fromDB, msg, predicates, predicateObjs, type, isValid, msg, relations, relations, deletedModels;
|
|
861
|
+
return __generator(this, function (_a) {
|
|
862
|
+
switch (_a.label) {
|
|
718
863
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
719
864
|
case 1:
|
|
720
|
-
|
|
865
|
+
_a.sent();
|
|
721
866
|
deleteQueue = [];
|
|
722
867
|
if (!util_1.isModelConstructor(modelOrModelConstructor)) return [3 /*break*/, 9];
|
|
723
868
|
modelConstructor = modelOrModelConstructor;
|
|
@@ -725,16 +870,16 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
725
870
|
storeName = this.getStorenameForModel(modelConstructor);
|
|
726
871
|
return [4 /*yield*/, this.query(modelConstructor, condition)];
|
|
727
872
|
case 2:
|
|
728
|
-
models =
|
|
873
|
+
models = _a.sent();
|
|
729
874
|
relations = this.schema.namespaces[nameSpace].relationships[modelConstructor.name]
|
|
730
875
|
.relationTypes;
|
|
731
876
|
if (!(condition !== undefined)) return [3 /*break*/, 5];
|
|
732
877
|
return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, nameSpace, deleteQueue)];
|
|
733
878
|
case 3:
|
|
734
|
-
|
|
879
|
+
_a.sent();
|
|
735
880
|
return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
736
881
|
case 4:
|
|
737
|
-
|
|
882
|
+
_a.sent();
|
|
738
883
|
deletedModels = deleteQueue.reduce(function (acc, _a) {
|
|
739
884
|
var items = _a.items;
|
|
740
885
|
return acc.concat(items);
|
|
@@ -742,7 +887,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
742
887
|
return [2 /*return*/, [models, deletedModels]];
|
|
743
888
|
case 5: return [4 /*yield*/, this.deleteTraverse(relations, models, modelConstructor.name, nameSpace, deleteQueue)];
|
|
744
889
|
case 6:
|
|
745
|
-
|
|
890
|
+
_a.sent();
|
|
746
891
|
// Delete all
|
|
747
892
|
return [4 /*yield*/, this.db
|
|
748
893
|
.transaction([storeName], 'readwrite')
|
|
@@ -750,7 +895,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
750
895
|
.clear()];
|
|
751
896
|
case 7:
|
|
752
897
|
// Delete all
|
|
753
|
-
|
|
898
|
+
_a.sent();
|
|
754
899
|
deletedModels = deleteQueue.reduce(function (acc, _a) {
|
|
755
900
|
var items = _a.items;
|
|
756
901
|
return acc.concat(items);
|
|
@@ -769,14 +914,14 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
769
914
|
keyValues = this.getIndexKeyValuesFromModel(model);
|
|
770
915
|
return [4 /*yield*/, this._get(store, keyValues)];
|
|
771
916
|
case 10:
|
|
772
|
-
fromDB =
|
|
917
|
+
fromDB = _a.sent();
|
|
773
918
|
if (fromDB === undefined) {
|
|
774
919
|
msg = 'Model instance not found in storage';
|
|
775
920
|
logger.warn(msg, { model: model });
|
|
776
921
|
return [2 /*return*/, [[model], []]];
|
|
777
922
|
}
|
|
778
923
|
predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);
|
|
779
|
-
|
|
924
|
+
predicateObjs = predicates.predicates, type = predicates.type;
|
|
780
925
|
isValid = util_1.validatePredicate(fromDB, type, predicateObjs);
|
|
781
926
|
if (!isValid) {
|
|
782
927
|
msg = 'Conditional update failed';
|
|
@@ -785,21 +930,21 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
785
930
|
}
|
|
786
931
|
return [4 /*yield*/, tx.done];
|
|
787
932
|
case 11:
|
|
788
|
-
|
|
933
|
+
_a.sent();
|
|
789
934
|
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
790
935
|
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
791
936
|
case 12:
|
|
792
|
-
|
|
937
|
+
_a.sent();
|
|
793
938
|
return [3 /*break*/, 15];
|
|
794
939
|
case 13:
|
|
795
940
|
relations = this.schema.namespaces[namespaceName].relationships[modelConstructor.name].relationTypes;
|
|
796
941
|
return [4 /*yield*/, this.deleteTraverse(relations, [model], modelConstructor.name, namespaceName, deleteQueue)];
|
|
797
942
|
case 14:
|
|
798
|
-
|
|
799
|
-
|
|
943
|
+
_a.sent();
|
|
944
|
+
_a.label = 15;
|
|
800
945
|
case 15: return [4 /*yield*/, this.deleteItem(deleteQueue)];
|
|
801
946
|
case 16:
|
|
802
|
-
|
|
947
|
+
_a.sent();
|
|
803
948
|
deletedModels = deleteQueue.reduce(function (acc, _a) {
|
|
804
949
|
var items = _a.items;
|
|
805
950
|
return acc.concat(items);
|
|
@@ -811,36 +956,37 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
811
956
|
});
|
|
812
957
|
};
|
|
813
958
|
IndexedDBAdapter.prototype.deleteItem = function (deleteQueue) {
|
|
959
|
+
var deleteQueue_1, deleteQueue_1_1;
|
|
814
960
|
var e_7, _a, e_8, _b;
|
|
815
|
-
return
|
|
816
|
-
var connectionStoreNames, tx,
|
|
817
|
-
return
|
|
818
|
-
switch (
|
|
961
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
962
|
+
var connectionStoreNames, tx, deleteItem, storeName, items, store, items_1, items_1_1, item, key, keyValues, itemKey, e_8_1, e_7_1;
|
|
963
|
+
return __generator(this, function (_c) {
|
|
964
|
+
switch (_c.label) {
|
|
819
965
|
case 0:
|
|
820
966
|
connectionStoreNames = deleteQueue.map(function (_a) {
|
|
821
967
|
var storeName = _a.storeName;
|
|
822
968
|
return storeName;
|
|
823
969
|
});
|
|
824
|
-
tx = this.db.transaction(
|
|
825
|
-
|
|
970
|
+
tx = this.db.transaction(__spread(connectionStoreNames), 'readwrite');
|
|
971
|
+
_c.label = 1;
|
|
826
972
|
case 1:
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
case 2: return [4 /*yield*/,
|
|
973
|
+
_c.trys.push([1, 22, 23, 28]);
|
|
974
|
+
deleteQueue_1 = __asyncValues(deleteQueue);
|
|
975
|
+
_c.label = 2;
|
|
976
|
+
case 2: return [4 /*yield*/, deleteQueue_1.next()];
|
|
831
977
|
case 3:
|
|
832
|
-
if (!(
|
|
833
|
-
deleteItem =
|
|
978
|
+
if (!(deleteQueue_1_1 = _c.sent(), !deleteQueue_1_1.done)) return [3 /*break*/, 21];
|
|
979
|
+
deleteItem = deleteQueue_1_1.value;
|
|
834
980
|
storeName = deleteItem.storeName, items = deleteItem.items;
|
|
835
981
|
store = tx.objectStore(storeName);
|
|
836
|
-
|
|
982
|
+
_c.label = 4;
|
|
837
983
|
case 4:
|
|
838
|
-
|
|
839
|
-
items_1 =
|
|
840
|
-
|
|
984
|
+
_c.trys.push([4, 14, 15, 20]);
|
|
985
|
+
items_1 = __asyncValues(items);
|
|
986
|
+
_c.label = 5;
|
|
841
987
|
case 5: return [4 /*yield*/, items_1.next()];
|
|
842
988
|
case 6:
|
|
843
|
-
if (!(items_1_1 =
|
|
989
|
+
if (!(items_1_1 = _c.sent(), !items_1_1.done)) return [3 /*break*/, 13];
|
|
844
990
|
item = items_1_1.value;
|
|
845
991
|
if (!item) return [3 /*break*/, 12];
|
|
846
992
|
key = void 0;
|
|
@@ -850,33 +996,33 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
850
996
|
.index('byPk')
|
|
851
997
|
.getKey(this.canonicalKeyPath(keyValues))];
|
|
852
998
|
case 7:
|
|
853
|
-
key =
|
|
999
|
+
key = _c.sent();
|
|
854
1000
|
return [3 /*break*/, 10];
|
|
855
1001
|
case 8:
|
|
856
1002
|
itemKey = item.toString();
|
|
857
1003
|
return [4 /*yield*/, store.index('byPk').getKey(itemKey)];
|
|
858
1004
|
case 9:
|
|
859
|
-
key =
|
|
860
|
-
|
|
1005
|
+
key = _c.sent();
|
|
1006
|
+
_c.label = 10;
|
|
861
1007
|
case 10:
|
|
862
1008
|
if (!(key !== undefined)) return [3 /*break*/, 12];
|
|
863
1009
|
return [4 /*yield*/, store.delete(key)];
|
|
864
1010
|
case 11:
|
|
865
|
-
|
|
866
|
-
|
|
1011
|
+
_c.sent();
|
|
1012
|
+
_c.label = 12;
|
|
867
1013
|
case 12: return [3 /*break*/, 5];
|
|
868
1014
|
case 13: return [3 /*break*/, 20];
|
|
869
1015
|
case 14:
|
|
870
|
-
e_8_1 =
|
|
1016
|
+
e_8_1 = _c.sent();
|
|
871
1017
|
e_8 = { error: e_8_1 };
|
|
872
1018
|
return [3 /*break*/, 20];
|
|
873
1019
|
case 15:
|
|
874
|
-
|
|
1020
|
+
_c.trys.push([15, , 18, 19]);
|
|
875
1021
|
if (!(items_1_1 && !items_1_1.done && (_b = items_1.return))) return [3 /*break*/, 17];
|
|
876
1022
|
return [4 /*yield*/, _b.call(items_1)];
|
|
877
1023
|
case 16:
|
|
878
|
-
|
|
879
|
-
|
|
1024
|
+
_c.sent();
|
|
1025
|
+
_c.label = 17;
|
|
880
1026
|
case 17: return [3 /*break*/, 19];
|
|
881
1027
|
case 18:
|
|
882
1028
|
if (e_8) throw e_8.error;
|
|
@@ -885,16 +1031,16 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
885
1031
|
case 20: return [3 /*break*/, 2];
|
|
886
1032
|
case 21: return [3 /*break*/, 28];
|
|
887
1033
|
case 22:
|
|
888
|
-
e_7_1 =
|
|
1034
|
+
e_7_1 = _c.sent();
|
|
889
1035
|
e_7 = { error: e_7_1 };
|
|
890
1036
|
return [3 /*break*/, 28];
|
|
891
1037
|
case 23:
|
|
892
|
-
|
|
893
|
-
if (!(
|
|
894
|
-
return [4 /*yield*/, _a.call(
|
|
1038
|
+
_c.trys.push([23, , 26, 27]);
|
|
1039
|
+
if (!(deleteQueue_1_1 && !deleteQueue_1_1.done && (_a = deleteQueue_1.return))) return [3 /*break*/, 25];
|
|
1040
|
+
return [4 /*yield*/, _a.call(deleteQueue_1)];
|
|
895
1041
|
case 24:
|
|
896
|
-
|
|
897
|
-
|
|
1042
|
+
_c.sent();
|
|
1043
|
+
_c.label = 25;
|
|
898
1044
|
case 25: return [3 /*break*/, 27];
|
|
899
1045
|
case 26:
|
|
900
1046
|
if (e_7) throw e_7.error;
|
|
@@ -906,21 +1052,21 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
906
1052
|
});
|
|
907
1053
|
};
|
|
908
1054
|
IndexedDBAdapter.prototype.deleteTraverse = function (relations, models, srcModel, nameSpace, deleteQueue) {
|
|
909
|
-
var
|
|
1055
|
+
var relations_2, relations_2_1, models_1, models_1_1, models_2, models_2_1;
|
|
910
1056
|
var e_9, _a, e_10, _b, e_11, _c;
|
|
911
|
-
return
|
|
1057
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
912
1058
|
var rel, relationType, modelName, targetName, targetNames, associatedWith, storeName, _d, model, hasOneIndex, values, recordToDelete, index, values, value, recordToDelete, e_10_1, model, index, keyValues, childrenArray, e_11_1, e_9_1;
|
|
913
1059
|
var _this = this;
|
|
914
|
-
return
|
|
1060
|
+
return __generator(this, function (_e) {
|
|
915
1061
|
switch (_e.label) {
|
|
916
1062
|
case 0:
|
|
917
1063
|
_e.trys.push([0, 38, 39, 44]);
|
|
918
|
-
|
|
1064
|
+
relations_2 = __asyncValues(relations);
|
|
919
1065
|
_e.label = 1;
|
|
920
|
-
case 1: return [4 /*yield*/,
|
|
1066
|
+
case 1: return [4 /*yield*/, relations_2.next()];
|
|
921
1067
|
case 2:
|
|
922
|
-
if (!(
|
|
923
|
-
rel =
|
|
1068
|
+
if (!(relations_2_1 = _e.sent(), !relations_2_1.done)) return [3 /*break*/, 37];
|
|
1069
|
+
rel = relations_2_1.value;
|
|
924
1070
|
relationType = rel.relationType, modelName = rel.modelName, targetName = rel.targetName, targetNames = rel.targetNames, associatedWith = rel.associatedWith;
|
|
925
1071
|
storeName = util_1.getStorename(nameSpace, modelName);
|
|
926
1072
|
_d = relationType;
|
|
@@ -932,7 +1078,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
932
1078
|
return [3 /*break*/, 35];
|
|
933
1079
|
case 3:
|
|
934
1080
|
_e.trys.push([3, 13, 14, 19]);
|
|
935
|
-
models_1 =
|
|
1081
|
+
models_1 = __asyncValues(models);
|
|
936
1082
|
_e.label = 4;
|
|
937
1083
|
case 4: return [4 /*yield*/, models_1.next()];
|
|
938
1084
|
case 5:
|
|
@@ -1009,7 +1155,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1009
1155
|
case 19: return [3 /*break*/, 36];
|
|
1010
1156
|
case 20:
|
|
1011
1157
|
_e.trys.push([20, 27, 28, 33]);
|
|
1012
|
-
models_2 =
|
|
1158
|
+
models_2 = __asyncValues(models);
|
|
1013
1159
|
_e.label = 21;
|
|
1014
1160
|
case 21: return [4 /*yield*/, models_2.next()];
|
|
1015
1161
|
case 22:
|
|
@@ -1057,7 +1203,9 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1057
1203
|
case 34:
|
|
1058
1204
|
// Intentionally blank
|
|
1059
1205
|
return [3 /*break*/, 36];
|
|
1060
|
-
case 35:
|
|
1206
|
+
case 35:
|
|
1207
|
+
util_1.exhaustiveCheck(relationType);
|
|
1208
|
+
return [3 /*break*/, 36];
|
|
1061
1209
|
case 36: return [3 /*break*/, 1];
|
|
1062
1210
|
case 37: return [3 /*break*/, 44];
|
|
1063
1211
|
case 38:
|
|
@@ -1066,8 +1214,8 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1066
1214
|
return [3 /*break*/, 44];
|
|
1067
1215
|
case 39:
|
|
1068
1216
|
_e.trys.push([39, , 42, 43]);
|
|
1069
|
-
if (!(
|
|
1070
|
-
return [4 /*yield*/, _a.call(
|
|
1217
|
+
if (!(relations_2_1 && !relations_2_1.done && (_a = relations_2.return))) return [3 /*break*/, 41];
|
|
1218
|
+
return [4 /*yield*/, _a.call(relations_2)];
|
|
1071
1219
|
case 40:
|
|
1072
1220
|
_e.sent();
|
|
1073
1221
|
_e.label = 41;
|
|
@@ -1090,8 +1238,8 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1090
1238
|
};
|
|
1091
1239
|
IndexedDBAdapter.prototype.clear = function () {
|
|
1092
1240
|
var _a;
|
|
1093
|
-
return
|
|
1094
|
-
return
|
|
1241
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1242
|
+
return __generator(this, function (_b) {
|
|
1095
1243
|
switch (_b.label) {
|
|
1096
1244
|
case 0: return [4 /*yield*/, this.checkPrivate()];
|
|
1097
1245
|
case 1:
|
|
@@ -1108,11 +1256,11 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1108
1256
|
});
|
|
1109
1257
|
};
|
|
1110
1258
|
IndexedDBAdapter.prototype.batchSave = function (modelConstructor, items) {
|
|
1111
|
-
return
|
|
1259
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1112
1260
|
var result, storeName, txn, store, _loop_2, this_1, items_2, items_2_1, item, e_12_1;
|
|
1113
1261
|
var e_12, _a;
|
|
1114
1262
|
var _this = this;
|
|
1115
|
-
return
|
|
1263
|
+
return __generator(this, function (_b) {
|
|
1116
1264
|
switch (_b.label) {
|
|
1117
1265
|
case 0:
|
|
1118
1266
|
if (items.length === 0) {
|
|
@@ -1127,7 +1275,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1127
1275
|
store = txn.store;
|
|
1128
1276
|
_loop_2 = function (item) {
|
|
1129
1277
|
var namespaceName, modelName, model, connectedModels, keyValues, _deleted, index, key, instance;
|
|
1130
|
-
return
|
|
1278
|
+
return __generator(this, function (_a) {
|
|
1131
1279
|
switch (_a.label) {
|
|
1132
1280
|
case 0:
|
|
1133
1281
|
namespaceName = this_1.namespaceResolver(modelConstructor);
|
|
@@ -1169,7 +1317,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1169
1317
|
_b.label = 2;
|
|
1170
1318
|
case 2:
|
|
1171
1319
|
_b.trys.push([2, 7, 8, 9]);
|
|
1172
|
-
items_2 =
|
|
1320
|
+
items_2 = __values(items), items_2_1 = items_2.next();
|
|
1173
1321
|
_b.label = 3;
|
|
1174
1322
|
case 3:
|
|
1175
1323
|
if (!!items_2_1.done) return [3 /*break*/, 6];
|
|
@@ -1206,7 +1354,7 @@ var IndexedDBAdapter = /** @class */ (function () {
|
|
|
1206
1354
|
});
|
|
1207
1355
|
var indexes = this.schema.namespaces[namespaceName].relationships[modelName].indexes;
|
|
1208
1356
|
indexes.forEach(function (_a) {
|
|
1209
|
-
var _b =
|
|
1357
|
+
var _b = __read(_a, 3), idxName = _b[0], keyPath = _b[1], options = _b[2];
|
|
1210
1358
|
store.createIndex(idxName, keyPath, options);
|
|
1211
1359
|
});
|
|
1212
1360
|
return store;
|