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/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.3",
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": "^7.0.2",
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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"}