backend-plus 2.7.0-beta.2 → 2.7.0-beta.3

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.
@@ -188,3 +188,14 @@ animation-time = 2s
188
188
  font-color gray
189
189
  margin-right 2px
190
190
  min-width 4em
191
+
192
+ .point
193
+ &::before
194
+ content '('
195
+ opacity 0.5
196
+ &::after
197
+ content ')'
198
+ opacity 0.5
199
+ .comma
200
+ opacity 0.5
201
+ padding-right 0.2em
@@ -169,7 +169,7 @@ export interface TableContext extends Context{
169
169
  superuser?:true
170
170
  forDump?:boolean
171
171
  }
172
- export type PgKnownTypes='decimal'|'text'|'boolean'|'integer'|'bigint'|'date'|'interval'|'timestamp'|'jsonb'|'double'|'bytea'|'jsona'|'time'|'tsrange'|'time_range'|'daterange'|'time_multirange';
172
+ export type PgKnownTypes='decimal'|'text'|'boolean'|'integer'|'bigint'|'date'|'interval'|'timestamp'|'jsonb'|'double'|'bytea'|'jsona'|'time'|'tsrange'|'time_range'|'daterange'|'time_multirange'|'gpoint'|'point';
173
173
  export type PgKnownDbValues='current_timestamp'|'current_user'|'session_user';
174
174
  export type SequenceDefinition = {
175
175
  name:string
@@ -1032,6 +1032,7 @@ AppBackend.prototype.start = function start(opts){
1032
1032
  console.log(err);
1033
1033
  throw err;
1034
1034
  }
1035
+ await pg.setAllTypes(client);
1035
1036
  var data = await client.query("SELECT current_timestamp as cts").fetchUniqueRow();
1036
1037
  if(verboseStartup){
1037
1038
  console.log('NOW in Database',data.row.cts);
@@ -3611,9 +3612,12 @@ AppBackend.prototype.dumpDbSchema = async function dumpDbSchema(opts){
3611
3612
  )
3612
3613
  mainSql=be.config.install.dump.db.extensions.map(function(extension){
3613
3614
  return ({
3614
- gist: "create extension if not exists btree_gist;",
3615
- pg_trgm: "create extension if not exists pg_trgm;",
3616
- pgcrypto: "create extension if not exists pgcrypto;"
3615
+ cube : "create extension if not exists cube ;",
3616
+ earthdistance : "create extension if not exists earthdistance ;",
3617
+ gist : "create extension if not exists btree_gist ;",
3618
+ pg_trgm : "create extension if not exists pg_trgm ;",
3619
+ pgcrypto : "create extension if not exists pgcrypto ;",
3620
+ postgis : "create extension if not exists postgis ;",
3617
3621
  }[extension]||('--unknown exension '+extension))+'\n';
3618
3622
  }).join('')+mainSql;
3619
3623
  await fs.writeFile('local-db-dump.sql', mainSql);
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.2",
4
+ "version": "2.7.0-beta.3",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "repository": "codenautas/backend-plus",
@@ -46,9 +46,9 @@
46
46
  "ensure-login": "^0.1.6-beta.0",
47
47
  "express": "^5.2.1",
48
48
  "express-useragent": "^2.2.1",
49
- "fs-extra": "^11.3.6",
49
+ "fs-extra": "^11.4.0",
50
50
  "js-to-html": "^1.3.6",
51
- "js-yaml": "^5.2.1",
51
+ "js-yaml": "^5.2.2",
52
52
  "json4all": "^1.4.4",
53
53
  "lazy-some": "^0.1.0",
54
54
  "like-ar": "^0.5.3",
@@ -59,7 +59,7 @@
59
59
  "multiparty": "^4.3.0",
60
60
  "nodemailer": "^9.0.3",
61
61
  "numeral": "^2.0.6",
62
- "pg-promise-strict": "^1.4.6",
62
+ "pg-promise-strict": "^1.5.0",
63
63
  "pg-triggers": "0.4.6",
64
64
  "pikaday": "^1.8.2",
65
65
  "require-bro": "^0.3.6",
@@ -68,46 +68,46 @@
68
68
  "simple-git": "^3.36.0",
69
69
  "sql-tools": "^0.1.7",
70
70
  "stack-trace": "^1.0.0",
71
- "type-store": "^0.5.2",
72
- "typed-controls": "^0.12.6",
71
+ "type-store": "^0.6.0",
72
+ "typed-controls": "^0.12.7",
73
73
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/big.js": "^7.0.0",
77
- "@types/expect.js": "~0.3.32",
77
+ "@types/expect.js": "^0.3.32",
78
78
  "@types/express": "^5.0.6",
79
79
  "@types/express-useragent": "^1.0.5",
80
80
  "@types/fs-extra": "^11.0.4",
81
81
  "@types/js-yaml": "^4.0.9",
82
82
  "@types/mocha": "^10.0.10",
83
- "@types/multiparty": "~4.2.1",
84
- "@types/node": "^26.1.0",
83
+ "@types/multiparty": "^4.2.1",
84
+ "@types/node": "^26.1.1",
85
85
  "@types/nodemailer": "^8.0.1",
86
86
  "@types/numeral": "~2.0.5",
87
87
  "@types/session-file-store": "^1.2.6",
88
- "@types/stack-trace": "~0.0.33",
88
+ "@types/stack-trace": "^0.0.33",
89
89
  "@types/websql": "~0.0.30",
90
90
  "backend-skins": "^0.1.34",
91
91
  "discrepances": "^0.2.14",
92
92
  "esprima": "^4.0.1",
93
- "expect.js": "~0.3.1",
93
+ "expect.js": "^0.3.1",
94
94
  "karma": "6.4.4",
95
95
  "karma-chrome-launcher": "^3.2.0",
96
96
  "karma-expect": "^1.1.3",
97
97
  "karma-firefox-launcher": "^2.1.3",
98
98
  "karma-ie-launcher": "^1.0.0",
99
99
  "karma-mocha": "^2.0.1",
100
- "kill-9": "~0.4.3",
100
+ "kill-9": "^0.4.3",
101
101
  "mocha": "^11.7.6",
102
102
  "nyc": "^18.0.0",
103
103
  "puppeteer": "^25.3.0",
104
104
  "qa-control": "0.7.5",
105
105
  "regexplicit": "^0.1.3",
106
106
  "self-explain": "^0.11.0",
107
- "sinon": "^22.0.0",
107
+ "sinon": "^22.1.0",
108
108
  "supertest": "^7.2.2",
109
- "types.d.ts": "~0.6.22",
110
- "typescript": "^5.9.3",
109
+ "types.d.ts": "^0.6.22",
110
+ "typescript": "^7.0.2",
111
111
  "why-is-node-running": "^3.2.2"
112
112
  },
113
113
  "engines": {
@@ -0,0 +1,506 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-localdb.js","sourceRoot":"","sources":["my-localdb.ts"],"names":[],"mappings":"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"}