backend-plus 2.7.0-beta.3 → 2.7.0-beta.4
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/for-client/my-localdb.js +689 -0
- package/for-client/my-localdb.js.map +1 -0
- package/for-client/my-websqldb.js +600 -0
- package/for-client/my-websqldb.js.map +1 -0
- package/lib/backend-plus.js +110 -109
- package/package.json +4 -3
- package/src/for-client/my-localdb.js +0 -506
- package/src/for-client/my-localdb.js.map +0 -1
- package/src/for-client/my-websqldb.js +0 -433
- package/src/for-client/my-websqldb.js.map +0 -1
- package/src/test/karma-test-localdb.d.ts +0 -1
- package/src/test/karma-test-localdb.js +0 -325
- package/src/test/karma-test-localdb.js.map +0 -1
- /package/{src/for-client → for-client}/my-localdb.d.ts +0 -0
- /package/{src/for-client → for-client}/my-websqldb.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "backend-plus",
|
|
3
3
|
"description": "Backend for the anti Pareto rule",
|
|
4
|
-
"version": "2.7.0-beta.
|
|
4
|
+
"version": "2.7.0-beta.4",
|
|
5
5
|
"author": "Codenautas <codenautas@googlegroups.com>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": "codenautas/backend-plus",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"simple-git": "^3.36.0",
|
|
69
69
|
"sql-tools": "^0.1.7",
|
|
70
70
|
"stack-trace": "^1.0.0",
|
|
71
|
+
"tab-plus": "^0.1.7",
|
|
71
72
|
"type-store": "^0.6.0",
|
|
72
73
|
"typed-controls": "^0.12.7",
|
|
73
74
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
|
|
@@ -107,7 +108,7 @@
|
|
|
107
108
|
"sinon": "^22.1.0",
|
|
108
109
|
"supertest": "^7.2.2",
|
|
109
110
|
"types.d.ts": "^0.6.22",
|
|
110
|
-
"typescript": "^
|
|
111
|
+
"typescript": "^5.9.2",
|
|
111
112
|
"why-is-node-running": "^3.2.2"
|
|
112
113
|
},
|
|
113
114
|
"engines": {
|
|
@@ -118,7 +119,7 @@
|
|
|
118
119
|
"test-ui": "(npm run prepublish || echo \"continue w/error\") && mocha --reporter spec --single-run --bail test/test-*.js",
|
|
119
120
|
"test-karma": "(npm run prepublish || echo \"continue w/error\") && mocha --reporter spec --bail test/test-k*.js",
|
|
120
121
|
"test-why": "node --expose-internals ./node_modules/mocha/bin/_mocha --reporter spec --bail test/test*.js",
|
|
121
|
-
"test-ci": "npm test",
|
|
122
|
+
"test-ci": "mkdir -p coverage && > coverage/lcov.info && npm test",
|
|
122
123
|
"test-cov": "(npm run prepublish || echo \"continue w/error\") && mocha --reporter spec --bail test/test*.js",
|
|
123
124
|
"test-good": "mocha --reporter spec --bail --check-leaks test/test*.js",
|
|
124
125
|
"example-pu": "node test/puppeteer/first-step.js",
|
|
@@ -1,506 +0,0 @@
|
|
|
1
|
-
//import { TableDefinition } from "backend-plus";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.LocalDbTransaction = exports.LocalDb = exports.detectedFeatures = void 0;
|
|
47
|
-
//x// <amd-dependency path="../../../node_modules/like-ar/like-ar.d.ts" name="likeAr"/>
|
|
48
|
-
//x// <reference path="../../node_modules/like-ar/like-ar.d.ts" />
|
|
49
|
-
/// <reference path="../node_modules/types.d.ts/modules/myOwn/in-myOwn.d.ts" />
|
|
50
|
-
/// <reference path="../../../lib/in-backend-plus.d.ts" />
|
|
51
|
-
/// <reference path="../../../lib/backend-plus.d.ts" />
|
|
52
|
-
/// <reference path="../../lib/in-backend-plus.d.ts" />
|
|
53
|
-
/// <reference path="../../lib/backend-plus.d.ts" />
|
|
54
|
-
/// <reference path="../lib/in-backend-plus.d.ts" />
|
|
55
|
-
/// <reference path="../lib/backend-plus.d.ts" />
|
|
56
|
-
/// <reference path="lib/in-backend-plus.d.ts" />
|
|
57
|
-
/// <reference path="lib/backend-plus.d.ts" />
|
|
58
|
-
/****
|
|
59
|
-
* Atención en la implementación de este módulo se tiene en cuenta que según
|
|
60
|
-
* https://caniuse.com/#feat=indexeddb ocurren dos cosas trágicas:
|
|
61
|
-
* 1) en IE y EDGE no hay claves de tipo array
|
|
62
|
-
* 2) en iOS de 8 a 9.3 hay un error que no permite que en dos objetos distintos haya una misma Pk
|
|
63
|
-
*
|
|
64
|
-
* más explicaciones en:
|
|
65
|
-
* 1) https://stackoverflow.com/questions/14283257/dataerror-when-creating-an-index-with-a-compound-key-in-ie-10
|
|
66
|
-
* 2) https://www.raymondcamden.com/2014/09/25/IndexedDB-on-iOS-8-Broken-Bad/
|
|
67
|
-
*
|
|
68
|
-
* hay un test en:
|
|
69
|
-
* a) https://codepen.io/cemerick/pen/Itymi
|
|
70
|
-
*
|
|
71
|
-
* workarround para contemplar IE, y iOS viejos:
|
|
72
|
-
* 1) se transforman las claves antes de usarlas en un string (JSON.stringify del array para el problema del IE)
|
|
73
|
-
* 2) se prefija el string con el nombre del objectStore (para que todas las claves sean distintas y no haya problemas con el iOS viejo)
|
|
74
|
-
*
|
|
75
|
-
* detección
|
|
76
|
-
* 1) por ahora solo probamos la detección del problema del array de claves
|
|
77
|
-
* 2) TODO: Falta programar la detección del problema de iOS viejo, quizás haya que ser explícito, hay que probarlo con varios iPad
|
|
78
|
-
*/
|
|
79
|
-
const likeAr = __importStar(require("like-ar"));
|
|
80
|
-
exports.detectedFeatures = {
|
|
81
|
-
needToUnwrapArrayKeys: null
|
|
82
|
-
};
|
|
83
|
-
class LocalDb {
|
|
84
|
-
constructor(name) {
|
|
85
|
-
this.name = name;
|
|
86
|
-
var ldb = this;
|
|
87
|
-
var initialStores = {
|
|
88
|
-
$structures: 'name',
|
|
89
|
-
$internals: 'var',
|
|
90
|
-
$detect: ['detectKey'],
|
|
91
|
-
};
|
|
92
|
-
var initialVersionInfo = {
|
|
93
|
-
var: 'version',
|
|
94
|
-
num: 1,
|
|
95
|
-
timestamp: new Date().toJSON(),
|
|
96
|
-
stores: initialStores
|
|
97
|
-
};
|
|
98
|
-
var requestDB = indexedDB.open(this.name);
|
|
99
|
-
requestDB.onupgradeneeded = function () {
|
|
100
|
-
var db = requestDB.result;
|
|
101
|
-
if (!db.objectStoreNames.contains("$internals")) {
|
|
102
|
-
likeAr(initialStores).forEach(function (keyPath, tableName) {
|
|
103
|
-
var store = db.createObjectStore(tableName, { keyPath: keyPath });
|
|
104
|
-
if (tableName == '$internals') {
|
|
105
|
-
store.put(initialVersionInfo);
|
|
106
|
-
}
|
|
107
|
-
if (tableName == '$detect') {
|
|
108
|
-
ldb.wait4detectedFeatures = ldb.detectFeatures(store);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
ldb.wait4db = ldb.IDBX(requestDB);
|
|
114
|
-
}
|
|
115
|
-
static deleteDatabase(name) {
|
|
116
|
-
var request = indexedDB.deleteDatabase(name);
|
|
117
|
-
return new Promise(function (resolve, reject) {
|
|
118
|
-
request.onsuccess = function () {
|
|
119
|
-
resolve();
|
|
120
|
-
};
|
|
121
|
-
request.onerror = function (event) {
|
|
122
|
-
reject();
|
|
123
|
-
};
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
IDBX(request) {
|
|
127
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
return new Promise(function (resolve, reject) {
|
|
129
|
-
if ('onsuccess' in request) {
|
|
130
|
-
request.onsuccess = function () {
|
|
131
|
-
resolve(request.result);
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
request.oncomplete = function () {
|
|
136
|
-
resolve();
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
request.onerror = function () {
|
|
140
|
-
alertPromise(request.error.message || request.error.name);
|
|
141
|
-
reject(request.error);
|
|
142
|
-
};
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
registerStructure(tableDef) {
|
|
147
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
-
var ldb = this;
|
|
149
|
-
var wait4dbCurrent = this.wait4db;
|
|
150
|
-
var registerTask = this.registerStructureInside(tableDef, wait4dbCurrent);
|
|
151
|
-
this.wait4db = registerTask.then(result => result.wait4db);
|
|
152
|
-
var result = yield registerTask;
|
|
153
|
-
return result.result;
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
detectFeatures(store) {
|
|
157
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
-
return new Promise((resolve) => {
|
|
159
|
-
try {
|
|
160
|
-
// @ts-ignore
|
|
161
|
-
var os = window.myOwn.config.useragent.os;
|
|
162
|
-
// @ts-ignore
|
|
163
|
-
var version = parseInt(window.myOwn.config.useragent.version.split('.')[0]);
|
|
164
|
-
}
|
|
165
|
-
catch (err) {
|
|
166
|
-
throw Error("unknowed OS or version");
|
|
167
|
-
}
|
|
168
|
-
if (os === 'OS X' && version < 11) {
|
|
169
|
-
exports.detectedFeatures.needToUnwrapArrayKeys = true;
|
|
170
|
-
resolve(exports.detectedFeatures);
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
var request = store.put({ detectKey: 'one' });
|
|
174
|
-
request.onsuccess = function () {
|
|
175
|
-
var key = request.result;
|
|
176
|
-
if (typeof key === "string") {
|
|
177
|
-
exports.detectedFeatures.needToUnwrapArrayKeys = true;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
exports.detectedFeatures.needToUnwrapArrayKeys = false;
|
|
181
|
-
}
|
|
182
|
-
resolve(exports.detectedFeatures);
|
|
183
|
-
};
|
|
184
|
-
request.onerror = function () {
|
|
185
|
-
exports.detectedFeatures.needToUnwrapArrayKeys = true;
|
|
186
|
-
resolve(exports.detectedFeatures);
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
registerStructureInside(tableDef, wait4db) {
|
|
193
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
194
|
-
var ldb = this;
|
|
195
|
-
var db = yield wait4db;
|
|
196
|
-
var result = { wait4db, result: { changed: null } };
|
|
197
|
-
var oldValue = yield this.IDBX(db.transaction('$structures', "readonly").objectStore('$structures').get(tableDef.name));
|
|
198
|
-
if (!oldValue) {
|
|
199
|
-
result.result.new = true;
|
|
200
|
-
}
|
|
201
|
-
yield ldb.IDBX(db.transaction('$structures', "readwrite").objectStore('$structures').put(tableDef));
|
|
202
|
-
result.result.changed = JSON.stringify(tableDef) != JSON.stringify(oldValue);
|
|
203
|
-
if (!ldb.wait4detectedFeatures) {
|
|
204
|
-
ldb.wait4detectedFeatures = ldb.detectFeatures(db.transaction('$detect', "readwrite").objectStore('$detect'));
|
|
205
|
-
}
|
|
206
|
-
yield ldb.wait4detectedFeatures;
|
|
207
|
-
var infoStore = exports.detectedFeatures.needToUnwrapArrayKeys ? null : tableDef.primaryKey;
|
|
208
|
-
var versionInfo = yield this.IDBX(db.transaction('$internals', "readonly").objectStore('$internals').get('version'));
|
|
209
|
-
if (JSON.stringify(versionInfo.stores[tableDef.name]) != JSON.stringify(infoStore)) {
|
|
210
|
-
db.close();
|
|
211
|
-
versionInfo.num++;
|
|
212
|
-
var requestDB = indexedDB.open(this.name, versionInfo.num);
|
|
213
|
-
requestDB.onupgradeneeded = function () {
|
|
214
|
-
var db = requestDB.result;
|
|
215
|
-
if (versionInfo.stores[tableDef.name]) {
|
|
216
|
-
db.deleteObjectStore(tableDef.name);
|
|
217
|
-
}
|
|
218
|
-
if (infoStore != null) {
|
|
219
|
-
db.createObjectStore(tableDef.name, { keyPath: infoStore });
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
db.createObjectStore(tableDef.name);
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
result.wait4db = ldb.IDBX(requestDB);
|
|
226
|
-
db = yield result.wait4db;
|
|
227
|
-
versionInfo.stores[tableDef.name] = infoStore;
|
|
228
|
-
yield ldb.IDBX(db.transaction('$internals', "readwrite").objectStore('$internals').put(versionInfo));
|
|
229
|
-
}
|
|
230
|
-
return result;
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
getStructure(tableName) {
|
|
234
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
235
|
-
var ldb = this;
|
|
236
|
-
var db = yield ldb.wait4db;
|
|
237
|
-
if (!ldb.wait4detectedFeatures) {
|
|
238
|
-
ldb.wait4detectedFeatures = ldb.detectFeatures(db.transaction('$detect', "readwrite").objectStore('$detect'));
|
|
239
|
-
}
|
|
240
|
-
yield ldb.wait4detectedFeatures;
|
|
241
|
-
var tableDef = yield ldb.IDBX(db.transaction('$structures', "readonly").objectStore('$structures').get(tableName));
|
|
242
|
-
return tableDef;
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
existsStructure(tableName) {
|
|
246
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
247
|
-
var tableDef = yield this.getStructure(tableName);
|
|
248
|
-
return tableDef ? true : false;
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
getOneIfExists(tableName, key) {
|
|
252
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
253
|
-
var ldb = this;
|
|
254
|
-
var db = yield ldb.wait4db;
|
|
255
|
-
var internalKey;
|
|
256
|
-
if (exports.detectedFeatures.needToUnwrapArrayKeys) {
|
|
257
|
-
internalKey = tableName + JSON.stringify(key);
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
internalKey = key;
|
|
261
|
-
}
|
|
262
|
-
var result = yield ldb.IDBX(db.transaction(tableName, "readonly").objectStore(tableName).get(internalKey));
|
|
263
|
-
return result;
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
getOne(tableName, key) {
|
|
267
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
268
|
-
var result = yield this.getOneIfExists(tableName, key);
|
|
269
|
-
if (!result) {
|
|
270
|
-
throw new Error("no result");
|
|
271
|
-
}
|
|
272
|
-
return result;
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
getChild(tableName, parentKey) {
|
|
276
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
277
|
-
var ldb = this;
|
|
278
|
-
var db = yield ldb.wait4db;
|
|
279
|
-
var rows = [];
|
|
280
|
-
var internalKey;
|
|
281
|
-
if (exports.detectedFeatures.needToUnwrapArrayKeys) {
|
|
282
|
-
internalKey = tableName + JSON.stringify(parentKey);
|
|
283
|
-
internalKey = internalKey.substr(0, internalKey.length - 1);
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
internalKey = parentKey ? parentKey : '';
|
|
287
|
-
}
|
|
288
|
-
var cursor = db.transaction([tableName], 'readonly').objectStore(tableName).openCursor(parentKey == null ? null : IDBKeyRange.lowerBound(internalKey));
|
|
289
|
-
return new Promise(function (resolve, reject) {
|
|
290
|
-
cursor.onsuccess = function (event) {
|
|
291
|
-
// @ts-ignore target no conoce result en la definición de TS. Verificar dentro de un tiempo si TS mejoró
|
|
292
|
-
var cursor = event.target.result;
|
|
293
|
-
if (cursor && ((parentKey == null) || (exports.detectedFeatures.needToUnwrapArrayKeys ?
|
|
294
|
-
internalKey == cursor.key.slice(0, internalKey.length) :
|
|
295
|
-
!parentKey.find(function (expectedValue, i) {
|
|
296
|
-
var storedValue = cursor.key[i];
|
|
297
|
-
return expectedValue != storedValue;
|
|
298
|
-
})))) {
|
|
299
|
-
rows.push(cursor.value);
|
|
300
|
-
cursor.continue();
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
resolve(rows);
|
|
304
|
-
}
|
|
305
|
-
};
|
|
306
|
-
cursor.onerror = function () {
|
|
307
|
-
reject(cursor.error);
|
|
308
|
-
};
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
getAll(tableName) {
|
|
313
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
314
|
-
return this.getChild(tableName, tableName[0] == '$' ? null : []);
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
getAllStructures() {
|
|
318
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
319
|
-
return this.getAll('$structures');
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
isEmpty(tableName) {
|
|
323
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
324
|
-
var ldb = this;
|
|
325
|
-
var db = yield ldb.wait4db;
|
|
326
|
-
var count = yield ldb.IDBX(db.transaction(tableName, "readonly").objectStore(tableName).count());
|
|
327
|
-
return count == 0;
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
putOneAndGetIfNeeded(tableName, element, needed) {
|
|
331
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
332
|
-
var ldb = this;
|
|
333
|
-
var db = yield ldb.wait4db;
|
|
334
|
-
var tableDef = yield ldb.getStructure(tableName);
|
|
335
|
-
var createPromiseForFK = function createPromiseForFK(fk) {
|
|
336
|
-
return Promise.resolve().then(function () {
|
|
337
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
338
|
-
var fkTableDef = yield ldb.getStructure(fk.references);
|
|
339
|
-
if (fkTableDef) {
|
|
340
|
-
var pk = [];
|
|
341
|
-
fk.fields.forEach(function (field) {
|
|
342
|
-
pk.push(element[field.source]);
|
|
343
|
-
});
|
|
344
|
-
var isFKCompleteInSource = fk.fields.filter(function (field) {
|
|
345
|
-
return element[field.source] == null;
|
|
346
|
-
}).length == 0;
|
|
347
|
-
if (isFKCompleteInSource) {
|
|
348
|
-
var fkRecord = yield ldb.getOneIfExists(fk.references, pk);
|
|
349
|
-
if (fkRecord) {
|
|
350
|
-
fk.displayFields.forEach(function (field) {
|
|
351
|
-
element[fk.alias + '__' + field] = fkRecord[field];
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
};
|
|
359
|
-
var promisesArray = [];
|
|
360
|
-
if (tableDef.foreignKeys) {
|
|
361
|
-
tableDef.foreignKeys.forEach(function (fk) {
|
|
362
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
363
|
-
promisesArray.push(createPromiseForFK(fk));
|
|
364
|
-
});
|
|
365
|
-
});
|
|
366
|
-
}
|
|
367
|
-
if (tableDef.softForeignKeys) {
|
|
368
|
-
tableDef.softForeignKeys.forEach(function (fk) {
|
|
369
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
370
|
-
promisesArray.push(createPromiseForFK(fk));
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
return Promise.all(promisesArray).then(function () {
|
|
375
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
376
|
-
if (exports.detectedFeatures.needToUnwrapArrayKeys) {
|
|
377
|
-
var newKey = tableName + JSON.stringify(tableDef.primaryKey.map(function (name) {
|
|
378
|
-
return element[name];
|
|
379
|
-
}));
|
|
380
|
-
var storeTask = db.transaction(tableName, "readwrite").objectStore(tableName).put(element, newKey);
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
var storeTask = db.transaction(tableName, "readwrite").objectStore(tableName).put(element);
|
|
384
|
-
}
|
|
385
|
-
if (needed) {
|
|
386
|
-
var key = yield ldb.IDBX(storeTask);
|
|
387
|
-
return yield ldb.IDBX(db.transaction(tableName, "readonly").objectStore(tableName).get(key));
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
return null;
|
|
391
|
-
}
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
putOne(tableName, element) {
|
|
397
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
398
|
-
return this.putOneAndGetIfNeeded(tableName, element, true);
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
putMany(tableName, elements) {
|
|
402
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
403
|
-
var ldb = this;
|
|
404
|
-
var db = yield ldb.wait4db;
|
|
405
|
-
var tableDef = yield ldb.getStructure(tableName);
|
|
406
|
-
var transaction = db.transaction(tableName, "readwrite");
|
|
407
|
-
var objectStore = transaction.objectStore(tableName);
|
|
408
|
-
var i = 0;
|
|
409
|
-
putNext();
|
|
410
|
-
function putNext() {
|
|
411
|
-
if (i < elements.length) {
|
|
412
|
-
if (exports.detectedFeatures.needToUnwrapArrayKeys) {
|
|
413
|
-
var newKey = tableName + JSON.stringify(tableDef.primaryKey.map(function (name) {
|
|
414
|
-
return elements[i][name];
|
|
415
|
-
}));
|
|
416
|
-
objectStore.put(elements[i], newKey).onsuccess = putNext;
|
|
417
|
-
}
|
|
418
|
-
else {
|
|
419
|
-
objectStore.put(elements[i]).onsuccess = putNext;
|
|
420
|
-
}
|
|
421
|
-
++i;
|
|
422
|
-
}
|
|
423
|
-
else {
|
|
424
|
-
return Promise.resolve();
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
close() {
|
|
430
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
431
|
-
var db = yield this.wait4db;
|
|
432
|
-
db.close();
|
|
433
|
-
this.wait4db = {
|
|
434
|
-
then: function () {
|
|
435
|
-
throw new Error("the database is closed");
|
|
436
|
-
},
|
|
437
|
-
catch: function () {
|
|
438
|
-
throw new Error("the database is closed");
|
|
439
|
-
}
|
|
440
|
-
};
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
clear(tableName) {
|
|
444
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
445
|
-
var ldb = this;
|
|
446
|
-
var db = yield ldb.wait4db;
|
|
447
|
-
yield ldb.IDBX(db.transaction(tableName, "readwrite").objectStore(tableName).clear());
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
exports.LocalDb = LocalDb;
|
|
452
|
-
class LocalDbTransaction {
|
|
453
|
-
constructor(localDbName) {
|
|
454
|
-
this.localDbName = localDbName;
|
|
455
|
-
this.oneByOneChain = Promise.resolve();
|
|
456
|
-
this.oneByOneChain = Promise.resolve();
|
|
457
|
-
}
|
|
458
|
-
inTransaction(callback) {
|
|
459
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
460
|
-
var name = this.localDbName;
|
|
461
|
-
this.oneByOneChain = this.oneByOneChain.then(function () {
|
|
462
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
463
|
-
var ldb = new LocalDb(name);
|
|
464
|
-
function closeLdb(previousError) {
|
|
465
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
466
|
-
try {
|
|
467
|
-
yield ldb.close();
|
|
468
|
-
if (previousError) {
|
|
469
|
-
// @ts-ignore
|
|
470
|
-
previousError.ldbWasClosed = true;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
catch (errClose) {
|
|
474
|
-
if (previousError) {
|
|
475
|
-
// @ts-ignore
|
|
476
|
-
previousError.ldbWasNotClosedBecause = errClose;
|
|
477
|
-
}
|
|
478
|
-
else {
|
|
479
|
-
throw errClose;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
try {
|
|
485
|
-
var result = yield callback(ldb);
|
|
486
|
-
}
|
|
487
|
-
catch (err) {
|
|
488
|
-
yield closeLdb(err);
|
|
489
|
-
throw err;
|
|
490
|
-
}
|
|
491
|
-
//await closeLdb();
|
|
492
|
-
return result;
|
|
493
|
-
});
|
|
494
|
-
});
|
|
495
|
-
return this.oneByOneChain;
|
|
496
|
-
});
|
|
497
|
-
}
|
|
498
|
-
getBindedInTransaction() {
|
|
499
|
-
var this4bind = this;
|
|
500
|
-
return function (ldb) {
|
|
501
|
-
return this4bind.inTransaction(ldb);
|
|
502
|
-
};
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
exports.LocalDbTransaction = LocalDbTransaction;
|
|
506
|
-
//# sourceMappingURL=my-localdb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"my-localdb.js","sourceRoot":"","sources":["my-localdb.ts"],"names":[],"mappings":"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"}
|