@capacitor-community/sqlite 3.2.4 → 3.3.1

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.
@@ -6,6 +6,7 @@ var require$$0 = require('sqlite3');
6
6
  var require$$0$1 = require('path');
7
7
  var require$$1 = require('fs');
8
8
  var require$$2 = require('os');
9
+ var require$$3 = require('jszip');
9
10
 
10
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
12
 
@@ -13,6 +14,7 @@ var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
13
14
  var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
14
15
  var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
15
16
  var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2);
17
+ var require$$3__default = /*#__PURE__*/_interopDefaultLegacy(require$$3);
16
18
 
17
19
  var src = {};
18
20
 
@@ -51,7 +53,7 @@ class UtilsSQLite {
51
53
  await this.dbChanges(mDB);
52
54
  }
53
55
  catch (err) {
54
- return Promise.reject(new Error(msg + `dbChanges ${err.message}`));
56
+ return Promise.reject(msg + `dbChanges ${err}`);
55
57
  }
56
58
  try {
57
59
  /* // set the password
@@ -68,12 +70,12 @@ class UtilsSQLite {
68
70
  }
69
71
  }
70
72
  catch (err) {
71
- return Promise.reject(new Error(msg + `${err.message}`));
73
+ return Promise.reject(msg + `${err}`);
72
74
  }
73
75
  return Promise.resolve(mDB);
74
76
  }
75
77
  else {
76
- return Promise.reject(new Error(msg + 'open database failed'));
78
+ return Promise.reject(msg + 'open database failed');
77
79
  }
78
80
  }
79
81
  /**
@@ -109,7 +111,7 @@ class UtilsSQLite {
109
111
  }
110
112
  mDB.run(`PRAGMA foreign_keys = '${key}'`, (err) => {
111
113
  if (err) {
112
- reject(new Error(`SetForeignKey: ${err.message}`));
114
+ reject(`SetForeignKey: ${err.message}`);
113
115
  }
114
116
  resolve();
115
117
  });
@@ -126,7 +128,7 @@ class UtilsSQLite {
126
128
  mDB.get(SELECT_VERSION, [], (err, row) => {
127
129
  // process the row here
128
130
  if (err) {
129
- reject(new Error('getVersion failed: ' + `${err.message}`));
131
+ reject('getVersion failed: ' + `${err.message}`);
130
132
  }
131
133
  else {
132
134
  if (row == null) {
@@ -150,7 +152,7 @@ class UtilsSQLite {
150
152
  return new Promise((resolve, reject) => {
151
153
  mDB.run(`PRAGMA user_version = ${version}`, (err) => {
152
154
  if (err) {
153
- reject(new Error('setVersion failed: ' + `${err.message}`));
155
+ reject('setVersion failed: ' + `${err.message}`);
154
156
  }
155
157
  resolve();
156
158
  });
@@ -215,12 +217,12 @@ class UtilsSQLite {
215
217
  return new Promise((resolve, reject) => {
216
218
  const msg = 'BeginTransaction: ';
217
219
  if (!isOpen) {
218
- return Promise.reject(new Error(`${msg}database not opened`));
220
+ return Promise.reject(`${msg}database not opened`);
219
221
  }
220
222
  const sql = 'BEGIN TRANSACTION;';
221
223
  db.run(sql, (err) => {
222
224
  if (err) {
223
- reject(new Error(`${msg}${err.message}`));
225
+ reject(`${msg}${err.message}`);
224
226
  }
225
227
  resolve();
226
228
  });
@@ -235,12 +237,12 @@ class UtilsSQLite {
235
237
  return new Promise((resolve, reject) => {
236
238
  const msg = 'RollbackTransaction: ';
237
239
  if (!isOpen) {
238
- reject(new Error(`${msg}database not opened`));
240
+ reject(`${msg}database not opened`);
239
241
  }
240
242
  const sql = 'ROLLBACK TRANSACTION;';
241
243
  db.run(sql, (err) => {
242
244
  if (err) {
243
- reject(new Error(`${msg}${err.message}`));
245
+ reject(`${msg}${err.message}`);
244
246
  }
245
247
  resolve();
246
248
  });
@@ -255,12 +257,12 @@ class UtilsSQLite {
255
257
  return new Promise((resolve, reject) => {
256
258
  const msg = 'CommitTransaction: ';
257
259
  if (!isOpen) {
258
- reject(new Error(`${msg}database not opened`));
260
+ reject(`${msg}database not opened`);
259
261
  }
260
262
  const sql = 'COMMIT TRANSACTION;';
261
263
  db.run(sql, (err) => {
262
264
  if (err) {
263
- reject(new Error(`${msg}${err.message}`));
265
+ reject(`${msg}${err.message}`);
264
266
  }
265
267
  resolve();
266
268
  });
@@ -278,7 +280,7 @@ class UtilsSQLite {
278
280
  db.get(SELECT_CHANGE, [], (err, row) => {
279
281
  // process the row here
280
282
  if (err) {
281
- reject(new Error(`DbChanges failed: ${err.message}`));
283
+ reject(`DbChanges failed: ${err.message}`);
282
284
  }
283
285
  else {
284
286
  if (row == null) {
@@ -304,9 +306,7 @@ class UtilsSQLite {
304
306
  db.get(SELECT_LAST_ID, [], (err, row) => {
305
307
  // process the row here
306
308
  if (err) {
307
- let msg = 'GetLastId failed: ';
308
- msg += `${err.message}`;
309
- reject(new Error(msg));
309
+ reject(`GetLastId failed: ${err.message}`);
310
310
  }
311
311
  else {
312
312
  if (row == null)
@@ -333,7 +333,7 @@ class UtilsSQLite {
333
333
  return Promise.resolve(changes);
334
334
  }
335
335
  catch (err) {
336
- return Promise.reject(new Error(`Execute: ${err.message}`));
336
+ return Promise.reject(`Execute: ${err.message}`);
337
337
  }
338
338
  }
339
339
  /**
@@ -345,8 +345,7 @@ class UtilsSQLite {
345
345
  return new Promise((resolve, reject) => {
346
346
  mDB.exec(sql, async (err) => {
347
347
  if (err) {
348
- const msg = err.message;
349
- reject(new Error(`Execute: ${msg}: `));
348
+ reject(`Execute: ${err.message}: `);
350
349
  }
351
350
  resolve();
352
351
  });
@@ -365,7 +364,7 @@ class UtilsSQLite {
365
364
  if (statement == null) {
366
365
  let msg = 'ExecuteSet: Error Nostatement';
367
366
  msg += ` for index ${i}`;
368
- return Promise.reject(new Error(msg));
367
+ return Promise.reject(msg);
369
368
  }
370
369
  try {
371
370
  if (Array.isArray(values[0])) {
@@ -378,7 +377,7 @@ class UtilsSQLite {
378
377
  }
379
378
  }
380
379
  catch (err) {
381
- return Promise.reject(new Error(`ExecuteSet: ${err.message}`));
380
+ return Promise.reject(`ExecuteSet: ${err}`);
382
381
  }
383
382
  }
384
383
  return Promise.resolve(lastId);
@@ -394,9 +393,7 @@ class UtilsSQLite {
394
393
  let lastId = -1;
395
394
  db.run(statement, values, async (err) => {
396
395
  if (err) {
397
- let msg = `PrepareRun: run `;
398
- msg += `${err.message}`;
399
- reject(new Error(msg));
396
+ reject(`PrepareRun: run ${err.message}`);
400
397
  }
401
398
  else {
402
399
  try {
@@ -404,9 +401,7 @@ class UtilsSQLite {
404
401
  resolve(lastId);
405
402
  }
406
403
  catch (err) {
407
- let msg = `PrepareRun: lastId `;
408
- msg += `${err.message}`;
409
- reject(new Error(msg));
404
+ reject(`PrepareRun: lastId ${err}`);
410
405
  }
411
406
  }
412
407
  });
@@ -423,7 +418,7 @@ class UtilsSQLite {
423
418
  mDB.serialize(() => {
424
419
  mDB.all(sql, values, (err, rows) => {
425
420
  if (err) {
426
- reject(new Error(`QueryAll: ${err.message}`));
421
+ reject(`QueryAll: ${err.message}`);
427
422
  }
428
423
  else {
429
424
  if (rows == null) {
@@ -518,7 +513,7 @@ class UtilsJson {
518
513
  await this._uSQLite.beginTransaction(mDB, true);
519
514
  }
520
515
  catch (err) {
521
- return Promise.reject(new Error(`CreateDatabaseSchema: ${err.message}`));
516
+ return Promise.reject(`CreateDatabaseSchema: ${err}`);
522
517
  }
523
518
  const stmts = await this.createSchemaStatement(jsonData);
524
519
  if (stmts.length > 0) {
@@ -530,18 +525,18 @@ class UtilsJson {
530
525
  await this._uSQLite.rollbackTransaction(mDB, true);
531
526
  }
532
527
  catch (err) {
533
- return Promise.reject(new Error('CreateSchema: changes < 0 ' + `${err.message}`));
528
+ return Promise.reject('CreateSchema: changes < 0 ' + `${err}`);
534
529
  }
535
530
  }
536
531
  }
537
532
  catch (err) {
538
- const msg = err.message;
533
+ const msg = err;
539
534
  try {
540
535
  await this._uSQLite.rollbackTransaction(mDB, true);
541
- return Promise.reject(new Error(`CreateSchema: ${msg}`));
536
+ return Promise.reject(`CreateSchema: ${msg}`);
542
537
  }
543
538
  catch (err) {
544
- return Promise.reject(new Error('CreateSchema: changes < 0 ' + `${err.message}: ${msg}`));
539
+ return Promise.reject('CreateSchema: changes < 0 ' + `${err}: ${msg}`);
545
540
  }
546
541
  }
547
542
  }
@@ -550,7 +545,7 @@ class UtilsJson {
550
545
  return Promise.resolve(changes);
551
546
  }
552
547
  catch (err) {
553
- return Promise.reject(new Error('CreateSchema: commit ' + `${err.message}`));
548
+ return Promise.reject('CreateSchema: commit ' + `${err}`);
554
549
  }
555
550
  }
556
551
  /**
@@ -643,21 +638,21 @@ class UtilsJson {
643
638
  // Check if the table exists
644
639
  const tableExists = await this.isTableExists(mDB, true, table.name);
645
640
  if (!tableExists) {
646
- return Promise.reject(new Error('CreateDataTable: Table ' + `${table.name} does not exist`));
641
+ return Promise.reject('CreateDataTable: Table ' + `${table.name} does not exist`);
647
642
  }
648
643
  // Get the column names and types
649
644
  const tableNamesTypes = await this.getTableColumnNamesTypes(mDB, table.name);
650
645
  const tableColumnTypes = tableNamesTypes.types;
651
646
  const tableColumnNames = tableNamesTypes.names;
652
647
  if (tableColumnTypes.length === 0) {
653
- return Promise.reject(new Error('CreateDataTable: Table ' + `${table.name} info does not exist`));
648
+ return Promise.reject('CreateDataTable: Table ' + `${table.name} info does not exist`);
654
649
  }
655
650
  // Loop on Table Values
656
651
  for (let j = 0; j < table.values.length; j++) {
657
652
  // Check the row number of columns
658
653
  if (table.values[j].length != tableColumnTypes.length) {
659
- return Promise.reject(new Error(`CreateDataTable: Table ${table.name} ` +
660
- `values row ${j} not correct length`));
654
+ return Promise.reject(`CreateDataTable: Table ${table.name} ` +
655
+ `values row ${j} not correct length`);
661
656
  }
662
657
  // Check the column's type before proceeding
663
658
  // remove type checking for allowing RDBMS Types
@@ -687,8 +682,8 @@ class UtilsJson {
687
682
  // Update
688
683
  const setString = await this.setNameForUpdate(tableColumnNames);
689
684
  if (setString.length === 0) {
690
- return Promise.reject(new Error(`CreateDataTable: Table ${table.name} ` +
691
- `values row ${j} not set to String`));
685
+ return Promise.reject(`CreateDataTable: Table ${table.name} ` +
686
+ `values row ${j} not set to String`);
692
687
  }
693
688
  stmt = `UPDATE ${table.name} SET ${setString} WHERE `;
694
689
  if (typeof table.values[j][0] == 'string') {
@@ -700,13 +695,13 @@ class UtilsJson {
700
695
  }
701
696
  lastId = await this._uSQLite.prepareRun(mDB, stmt, table.values[j]);
702
697
  if (lastId < 0) {
703
- return Promise.reject(new Error('CreateDataTable: lastId < 0'));
698
+ return Promise.reject('CreateDataTable: lastId < 0');
704
699
  }
705
700
  }
706
701
  return Promise.resolve(lastId);
707
702
  }
708
703
  catch (err) {
709
- return Promise.reject(new Error(`CreateDataTable: ${err.message}`));
704
+ return Promise.reject(`CreateDataTable: ${err}`);
710
705
  }
711
706
  }
712
707
  /**
@@ -730,7 +725,7 @@ class UtilsJson {
730
725
  return Promise.resolve({ names: retNames, types: retTypes });
731
726
  }
732
727
  catch (err) {
733
- return Promise.reject(new Error('GetTableColumnNamesTypes: ' + `${err.message}`));
728
+ return Promise.reject('GetTableColumnNamesTypes: ' + `${err}`);
734
729
  }
735
730
  }
736
731
  /**
@@ -798,7 +793,7 @@ class UtilsJson {
798
793
  return Promise.resolve(ret);
799
794
  }
800
795
  catch (err) {
801
- return Promise.reject(new Error(`IsIdExists: ${err.message}`));
796
+ return Promise.reject(`IsIdExists: ${err}`);
802
797
  }
803
798
  }
804
799
  /**
@@ -816,7 +811,7 @@ class UtilsJson {
816
811
  resolve(retString);
817
812
  }
818
813
  else {
819
- reject(new Error('CreateQuestionMarkString: length = 0'));
814
+ reject('CreateQuestionMarkString: length = 0');
820
815
  }
821
816
  });
822
817
  }
@@ -834,7 +829,7 @@ class UtilsJson {
834
829
  return Promise.resolve(retString);
835
830
  }
836
831
  else {
837
- return Promise.reject(new Error('SetNameForUpdate: length = 0'));
832
+ return Promise.reject('SetNameForUpdate: length = 0');
838
833
  }
839
834
  }
840
835
  /**
@@ -1070,7 +1065,7 @@ class UtilsJson {
1070
1065
  }
1071
1066
  const isValid = this.isSchema(sch);
1072
1067
  if (!isValid) {
1073
- return Promise.reject(new Error(`CheckSchemaValidity: schema[${i}] not valid`));
1068
+ return Promise.reject(`CheckSchemaValidity: schema[${i}] not valid`);
1074
1069
  }
1075
1070
  }
1076
1071
  return Promise.resolve();
@@ -1094,7 +1089,7 @@ class UtilsJson {
1094
1089
  }
1095
1090
  const isValid = this.isIndexes(index);
1096
1091
  if (!isValid) {
1097
- return Promise.reject(new Error(`CheckIndexesValidity: indexes[${i}] not valid`));
1092
+ return Promise.reject(`CheckIndexesValidity: indexes[${i}] not valid`);
1098
1093
  }
1099
1094
  }
1100
1095
  return Promise.resolve();
@@ -1121,7 +1116,7 @@ class UtilsJson {
1121
1116
  }
1122
1117
  const isValid = this.isTriggers(trigger);
1123
1118
  if (!isValid) {
1124
- return Promise.reject(new Error(`CheckTriggersValidity: triggers[${i}] not valid`));
1119
+ return Promise.reject(`CheckTriggersValidity: triggers[${i}] not valid`);
1125
1120
  }
1126
1121
  }
1127
1122
  return Promise.resolve();
@@ -1142,7 +1137,7 @@ class UtilsJson {
1142
1137
  }
1143
1138
  const isValid = this.isView(view);
1144
1139
  if (!isValid) {
1145
- return Promise.reject(new Error(`CheckViewsValidity: views[${i}] not valid`));
1140
+ return Promise.reject(`CheckViewsValidity: views[${i}] not valid`);
1146
1141
  }
1147
1142
  }
1148
1143
  return Promise.resolve();
@@ -1157,12 +1152,12 @@ class UtilsJson {
1157
1152
  try {
1158
1153
  const changes = await this._uSQLite.execute(mDB, stmt);
1159
1154
  if (changes < 0) {
1160
- return Promise.reject(new Error(`CreateView: ${view.name} failed`));
1155
+ return Promise.reject(`CreateView: ${view.name} failed`);
1161
1156
  }
1162
1157
  return Promise.resolve();
1163
1158
  }
1164
1159
  catch (err) {
1165
- return Promise.reject(new Error(`CreateView: ${err.message}`));
1160
+ return Promise.reject(`CreateView: ${err}`);
1166
1161
  }
1167
1162
  }
1168
1163
  }
@@ -1193,7 +1188,7 @@ class ExportToJson {
1193
1188
  // get Table's name
1194
1189
  const resTables = await this.getTablesNameSQL(mDB);
1195
1190
  if (resTables.length === 0) {
1196
- return Promise.reject(new Error("createExportObject: table's names failed"));
1191
+ return Promise.reject("createExportObject: table's names failed");
1197
1192
  }
1198
1193
  else {
1199
1194
  switch (sqlObj.mode) {
@@ -1212,7 +1207,7 @@ class ExportToJson {
1212
1207
  }
1213
1208
  }
1214
1209
  if (errmsg.length > 0) {
1215
- return Promise.reject(new Error(errmsg));
1210
+ return Promise.reject(errmsg);
1216
1211
  }
1217
1212
  if (tables.length > 0) {
1218
1213
  retObj.database = sqlObj.database;
@@ -1228,7 +1223,7 @@ class ExportToJson {
1228
1223
  }
1229
1224
  }
1230
1225
  catch (err) {
1231
- return Promise.reject(new Error('createExportObject: ' + err.message));
1226
+ return Promise.reject('createExportObject: ' + err);
1232
1227
  }
1233
1228
  }
1234
1229
  /**
@@ -1246,7 +1241,7 @@ class ExportToJson {
1246
1241
  return Promise.resolve(retQuery);
1247
1242
  }
1248
1243
  catch (err) {
1249
- return Promise.reject(new Error(`getTablesNameSQL: ${err.message}`));
1244
+ return Promise.reject(`getTablesNameSQL: ${err}`);
1250
1245
  }
1251
1246
  }
1252
1247
  /**
@@ -1269,7 +1264,7 @@ class ExportToJson {
1269
1264
  return Promise.resolve(views);
1270
1265
  }
1271
1266
  catch (err) {
1272
- return Promise.reject(new Error(`getViewsName: ${err.message}`));
1267
+ return Promise.reject(`getViewsName: ${err}`);
1273
1268
  }
1274
1269
  }
1275
1270
  /**
@@ -1284,7 +1279,7 @@ class ExportToJson {
1284
1279
  mDb.get(stmt, [], (err, row) => {
1285
1280
  // process the row here
1286
1281
  if (err) {
1287
- reject(new Error(`GetSyncDate: ${err.message}`));
1282
+ reject(`GetSyncDate: ${err.message}`);
1288
1283
  }
1289
1284
  else {
1290
1285
  if (row != null) {
@@ -1293,7 +1288,7 @@ class ExportToJson {
1293
1288
  resolve(retDate);
1294
1289
  }
1295
1290
  else {
1296
- reject(new Error(`GetSyncDate: no syncDate`));
1291
+ reject(`GetSyncDate: no syncDate`);
1297
1292
  }
1298
1293
  }
1299
1294
  });
@@ -1374,12 +1369,12 @@ class ExportToJson {
1374
1369
  tables.push(table);
1375
1370
  }
1376
1371
  if (errmsg.length > 0) {
1377
- return Promise.reject(new Error(errmsg));
1372
+ return Promise.reject(errmsg);
1378
1373
  }
1379
1374
  return Promise.resolve(tables);
1380
1375
  }
1381
1376
  catch (err) {
1382
- return Promise.reject(new Error(`GetTablesFull: ${err.message}`));
1377
+ return Promise.reject(`GetTablesFull: ${err}`);
1383
1378
  }
1384
1379
  }
1385
1380
  /**
@@ -1431,7 +1426,7 @@ class ExportToJson {
1431
1426
  return Promise.resolve(schema);
1432
1427
  }
1433
1428
  catch (err) {
1434
- return Promise.reject(new Error(err.message));
1429
+ return Promise.reject(err);
1435
1430
  }
1436
1431
  }
1437
1432
  /**
@@ -1475,13 +1470,13 @@ class ExportToJson {
1475
1470
  }
1476
1471
  }
1477
1472
  if (errmsg.length > 0) {
1478
- return Promise.reject(new Error(errmsg));
1473
+ return Promise.reject(errmsg);
1479
1474
  }
1480
1475
  }
1481
1476
  return Promise.resolve(indexes);
1482
1477
  }
1483
1478
  catch (err) {
1484
- return Promise.reject(new Error(`GetIndexes: ${err.message}`));
1479
+ return Promise.reject(`GetIndexes: ${err}`);
1485
1480
  }
1486
1481
  }
1487
1482
  /**
@@ -1506,22 +1501,22 @@ class ExportToJson {
1506
1501
  const name = rTrg['name'];
1507
1502
  let sqlArr = sql.split(name);
1508
1503
  if (sqlArr.length != 2) {
1509
- return Promise.reject(new Error(`GetTriggers: sql split name does not return 2 values`));
1504
+ return Promise.reject(`GetTriggers: sql split name does not return 2 values`);
1510
1505
  }
1511
1506
  if (!sqlArr[1].includes(tableName)) {
1512
- return Promise.reject(new Error(`GetTriggers: sql split does not contains ${tableName}`));
1507
+ return Promise.reject(`GetTriggers: sql split does not contains ${tableName}`);
1513
1508
  }
1514
1509
  const timeEvent = sqlArr[1].split(tableName, 1)[0].trim();
1515
1510
  sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName);
1516
1511
  if (sqlArr.length != 2) {
1517
- return Promise.reject(new Error(`GetTriggers: sql split tableName does not return 2 values`));
1512
+ return Promise.reject(`GetTriggers: sql split tableName does not return 2 values`);
1518
1513
  }
1519
1514
  let condition = '';
1520
1515
  let logic = '';
1521
1516
  if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') {
1522
1517
  sqlArr = sqlArr[1].trim().split('BEGIN');
1523
1518
  if (sqlArr.length != 2) {
1524
- return Promise.reject(new Error(`GetTriggers: sql split BEGIN does not return 2 values`));
1519
+ return Promise.reject(`GetTriggers: sql split BEGIN does not return 2 values`);
1525
1520
  }
1526
1521
  condition = sqlArr[0].trim();
1527
1522
  logic = 'BEGIN' + sqlArr[1];
@@ -1538,18 +1533,18 @@ class ExportToJson {
1538
1533
  triggers.push(trigger);
1539
1534
  }
1540
1535
  else {
1541
- return Promise.reject(new Error(`GetTriggers: Table ${tableName} doesn't match`));
1536
+ return Promise.reject(`GetTriggers: Table ${tableName} doesn't match`);
1542
1537
  }
1543
1538
  }
1544
1539
  else {
1545
- return Promise.reject(new Error(`GetTriggers: Table ${tableName} creating indexes`));
1540
+ return Promise.reject(`GetTriggers: Table ${tableName} creating indexes`);
1546
1541
  }
1547
1542
  }
1548
1543
  }
1549
1544
  return Promise.resolve(triggers);
1550
1545
  }
1551
1546
  catch (err) {
1552
- return Promise.reject(new Error(`GetTriggers: ${err.message}`));
1547
+ return Promise.reject(`GetTriggers: ${err}`);
1553
1548
  }
1554
1549
  }
1555
1550
  /**
@@ -1568,7 +1563,7 @@ class ExportToJson {
1568
1563
  rowNames = tableNamesTypes.names;
1569
1564
  }
1570
1565
  else {
1571
- return Promise.reject(new Error(`GetValues: Table ${tableName} no names`));
1566
+ return Promise.reject(`GetValues: Table ${tableName} no names`);
1572
1567
  }
1573
1568
  const retValues = await this._uSQLite.queryAll(mDb, query, []);
1574
1569
  for (const rValue of retValues) {
@@ -1586,7 +1581,7 @@ class ExportToJson {
1586
1581
  return Promise.resolve(values);
1587
1582
  }
1588
1583
  catch (err) {
1589
- return Promise.reject(new Error(`GetValues: ${err.message}`));
1584
+ return Promise.reject(`GetValues: ${err}`);
1590
1585
  }
1591
1586
  }
1592
1587
  /**
@@ -1690,12 +1685,12 @@ class ExportToJson {
1690
1685
  tables.push(table);
1691
1686
  }
1692
1687
  if (errmsg.length > 0) {
1693
- return Promise.reject(new Error(errmsg));
1688
+ return Promise.reject(errmsg);
1694
1689
  }
1695
1690
  return Promise.resolve(tables);
1696
1691
  }
1697
1692
  catch (err) {
1698
- return Promise.reject(new Error(`GetTablesPartial: ${err.message}`));
1693
+ return Promise.reject(`GetTablesPartial: ${err}`);
1699
1694
  }
1700
1695
  }
1701
1696
  /**
@@ -1709,20 +1704,20 @@ class ExportToJson {
1709
1704
  // get the synchronization date
1710
1705
  const syncDate = await this.getSyncDate(mDb);
1711
1706
  if (syncDate <= 0) {
1712
- return Promise.reject(new Error(`GetPartialModeData: no syncDate`));
1707
+ return Promise.reject(`GetPartialModeData: no syncDate`);
1713
1708
  }
1714
1709
  // get the tables which have been updated
1715
1710
  // since last synchronization
1716
1711
  const modTables = await this.getTablesModified(mDb, resTables, syncDate);
1717
1712
  if (modTables.length <= 0) {
1718
- return Promise.reject(new Error(`GetPartialModeData: no modTables`));
1713
+ return Promise.reject(`GetPartialModeData: no modTables`);
1719
1714
  }
1720
1715
  retData.syncDate = syncDate;
1721
1716
  retData.modTables = modTables;
1722
1717
  return Promise.resolve(retData);
1723
1718
  }
1724
1719
  catch (err) {
1725
- return Promise.reject(new Error(`GetPartialModeData: ${err.message}`));
1720
+ return Promise.reject(`GetPartialModeData: ${err}`);
1726
1721
  }
1727
1722
  }
1728
1723
  async getTablesModified(db, tables, syncDate) {
@@ -1761,12 +1756,12 @@ class ExportToJson {
1761
1756
  retModified[key] = mode;
1762
1757
  }
1763
1758
  if (errmsg.length > 0) {
1764
- return Promise.reject(new Error(errmsg));
1759
+ return Promise.reject(errmsg);
1765
1760
  }
1766
1761
  return Promise.resolve(retModified);
1767
1762
  }
1768
1763
  catch (err) {
1769
- return Promise.reject(new Error(`GetTableModified: ${err.message}`));
1764
+ return Promise.reject(`GetTableModified: ${err}`);
1770
1765
  }
1771
1766
  }
1772
1767
  async modEmbeddedParentheses(sstr) {
@@ -1840,7 +1835,7 @@ class UtilsDrop {
1840
1835
  return Promise.resolve(retArr);
1841
1836
  }
1842
1837
  catch (err) {
1843
- return Promise.reject(new Error(`getTablesNames: ${err.message}`));
1838
+ return Promise.reject(`getTablesNames: ${err}`);
1844
1839
  }
1845
1840
  }
1846
1841
  /**
@@ -1860,7 +1855,7 @@ class UtilsDrop {
1860
1855
  return Promise.resolve(retArr);
1861
1856
  }
1862
1857
  catch (err) {
1863
- return Promise.reject(new Error(`getViewsNames: ${err.message}`));
1858
+ return Promise.reject(`getViewsNames: ${err}`);
1864
1859
  }
1865
1860
  }
1866
1861
  /**
@@ -1884,7 +1879,7 @@ class UtilsDrop {
1884
1879
  msg = 'DropViews';
1885
1880
  break;
1886
1881
  default:
1887
- return Promise.reject(new Error(`DropElements: ${type} ` + 'not found'));
1882
+ return Promise.reject(`DropElements: ${type} ` + 'not found');
1888
1883
  }
1889
1884
  // get the element's names
1890
1885
  let stmt = 'SELECT name FROM sqlite_master WHERE ';
@@ -1902,14 +1897,14 @@ class UtilsDrop {
1902
1897
  for (const stmt of statements) {
1903
1898
  const lastId = await this._uSQLite.prepareRun(db, stmt, []);
1904
1899
  if (lastId < 0) {
1905
- return Promise.reject(new Error(`${msg}: lastId < 0`));
1900
+ return Promise.reject(`${msg}: lastId < 0`);
1906
1901
  }
1907
1902
  }
1908
1903
  }
1909
1904
  return Promise.resolve();
1910
1905
  }
1911
1906
  catch (err) {
1912
- return Promise.reject(new Error(`${msg}: ${err.message}`));
1907
+ return Promise.reject(`${msg}: ${err}`);
1913
1908
  }
1914
1909
  }
1915
1910
  /**
@@ -1932,7 +1927,7 @@ class UtilsDrop {
1932
1927
  return Promise.resolve();
1933
1928
  }
1934
1929
  catch (err) {
1935
- return Promise.reject(new Error(`DropAll: ${err.message}`));
1930
+ return Promise.reject(`DropAll: ${err}`);
1936
1931
  }
1937
1932
  }
1938
1933
  /**
@@ -1951,12 +1946,12 @@ class UtilsDrop {
1951
1946
  try {
1952
1947
  const changes = await this._uSQLite.execute(db, statements.join('\n'));
1953
1948
  if (changes < 0) {
1954
- return Promise.reject(new Error('DropTempTables: changes < 0'));
1949
+ return Promise.reject('DropTempTables: changes < 0');
1955
1950
  }
1956
1951
  return Promise.resolve();
1957
1952
  }
1958
1953
  catch (err) {
1959
- return Promise.reject(new Error(`DropTempTables: ${err.message}`));
1954
+ return Promise.reject(`DropTempTables: ${err}`);
1960
1955
  }
1961
1956
  }
1962
1957
  }
@@ -1995,7 +1990,7 @@ class ImportFromJson {
1995
1990
  return Promise.resolve(changes);
1996
1991
  }
1997
1992
  catch (err) {
1998
- return Promise.reject(new Error('CreateDatabaseSchema: ' + `${err.message}`));
1993
+ return Promise.reject('CreateDatabaseSchema: ' + `${err}`);
1999
1994
  }
2000
1995
  }
2001
1996
  async createTablesData(mDB, jsonData) {
@@ -2010,7 +2005,7 @@ class ImportFromJson {
2010
2005
  await this._uSQLite.beginTransaction(mDB, true);
2011
2006
  }
2012
2007
  catch (err) {
2013
- return Promise.reject(new Error(`createTablesData: ${err.message}`));
2008
+ return Promise.reject(`createTablesData: ${err}`);
2014
2009
  }
2015
2010
  for (const jTable of jsonData.tables) {
2016
2011
  if (jTable.values != null && jTable.values.length >= 1) {
@@ -2022,7 +2017,7 @@ class ImportFromJson {
2022
2017
  isValue = true;
2023
2018
  }
2024
2019
  catch (err) {
2025
- msg = err.message;
2020
+ msg = err;
2026
2021
  isValue = false;
2027
2022
  break;
2028
2023
  }
@@ -2035,7 +2030,7 @@ class ImportFromJson {
2035
2030
  return Promise.resolve(changes);
2036
2031
  }
2037
2032
  catch (err) {
2038
- return Promise.reject(new Error('createTablesData: ' + `${err.message}`));
2033
+ return Promise.reject('createTablesData: ' + `${err}`);
2039
2034
  }
2040
2035
  }
2041
2036
  else {
@@ -2045,7 +2040,7 @@ class ImportFromJson {
2045
2040
  return Promise.reject(new Error(`createTablesData: ${msg}`));
2046
2041
  }
2047
2042
  catch (err) {
2048
- return Promise.reject(new Error('createTablesData: ' + `${err.message}: ${msg}`));
2043
+ return Promise.reject('createTablesData: ' + `${err}: ${msg}`);
2049
2044
  }
2050
2045
  }
2051
2046
  else {
@@ -2070,7 +2065,7 @@ class ImportFromJson {
2070
2065
  await this._uSQLite.beginTransaction(mDB, true);
2071
2066
  }
2072
2067
  catch (err) {
2073
- return Promise.reject(new Error(`createViews: ${err.message}`));
2068
+ return Promise.reject(`createViews: ${err}`);
2074
2069
  }
2075
2070
  for (const jView of jsonData.views) {
2076
2071
  if (jView.value != null) {
@@ -2080,7 +2075,7 @@ class ImportFromJson {
2080
2075
  isView = true;
2081
2076
  }
2082
2077
  catch (err) {
2083
- msg = err.message;
2078
+ msg = err;
2084
2079
  isView = false;
2085
2080
  break;
2086
2081
  }
@@ -2093,7 +2088,7 @@ class ImportFromJson {
2093
2088
  return Promise.resolve(changes);
2094
2089
  }
2095
2090
  catch (err) {
2096
- return Promise.reject(new Error('createViews: ' + `${err.message}`));
2091
+ return Promise.reject('createViews: ' + `${err}`);
2097
2092
  }
2098
2093
  }
2099
2094
  else {
@@ -2103,7 +2098,7 @@ class ImportFromJson {
2103
2098
  return Promise.reject(new Error(`createViews: ${msg}`));
2104
2099
  }
2105
2100
  catch (err) {
2106
- return Promise.reject(new Error('createViews: ' + `${err.message}: ${msg}`));
2101
+ return Promise.reject('createViews: ' + `${err}: ${msg}`);
2107
2102
  }
2108
2103
  }
2109
2104
  else {
@@ -2124,6 +2119,7 @@ class UtilsFile {
2124
2119
  this.pathDB = 'Databases';
2125
2120
  this.Path = null;
2126
2121
  this.NodeFs = null;
2122
+ this.JSZip = null;
2127
2123
  this.Os = null;
2128
2124
  this.AppName = '';
2129
2125
  this.HomeDir = '';
@@ -2131,6 +2127,7 @@ class UtilsFile {
2131
2127
  this.Path = require$$0__default$1['default'];
2132
2128
  this.NodeFs = require$$1__default['default'];
2133
2129
  this.Os = require$$2__default['default'];
2130
+ this.JSZip = require$$3__default['default'];
2134
2131
  this.HomeDir = this.Os.homedir();
2135
2132
  const dir = __dirname;
2136
2133
  const idx = dir.indexOf('\\');
@@ -2229,15 +2226,13 @@ class UtilsFile {
2229
2226
  */
2230
2227
  setPathSuffix(db) {
2231
2228
  let toDb = db;
2232
- if (db.length > 9) {
2233
- const last9 = db.slice(-9);
2234
- if (last9 != 'SQLite.db') {
2235
- toDb = this.Path.parse(db).name + 'SQLite.db';
2229
+ const ext = '.db';
2230
+ const sep = this.Path.sep;
2231
+ if (db.substring(db.length - 3) === ext) {
2232
+ if (!db.includes('SQLite.db')) {
2233
+ toDb = db.slice(db.lastIndexOf(sep) + 1, -3) + 'SQLite.db';
2236
2234
  }
2237
2235
  }
2238
- else {
2239
- toDb = toDb + 'SQLite.db';
2240
- }
2241
2236
  return toDb;
2242
2237
  }
2243
2238
  /**
@@ -2249,7 +2244,7 @@ class UtilsFile {
2249
2244
  const filenames = this.NodeFs.readdirSync(path);
2250
2245
  const dbs = [];
2251
2246
  filenames.forEach((file) => {
2252
- if (this.Path.extname(file) == '.db')
2247
+ if (this.Path.extname(file) == '.db' || this.Path.extname(file) == '.zip')
2253
2248
  dbs.push(file);
2254
2249
  });
2255
2250
  return Promise.resolve(dbs);
@@ -2257,14 +2252,51 @@ class UtilsFile {
2257
2252
  /**
2258
2253
  * CopyFromAssetToDatabase
2259
2254
  * @param db
2260
- * @param toDb
2255
+ * @param overwrite
2261
2256
  */
2262
- async copyFromAssetToDatabase(db, toDb) {
2257
+ async copyFromAssetToDatabase(db, overwrite) {
2263
2258
  const pAsset = this.Path.join(this.getAssetsDatabasesPath(), db);
2259
+ const toDb = this.setPathSuffix(db);
2264
2260
  const pDb = this.Path.join(this.getDatabasesPath(), toDb);
2265
- await this.copyFilePath(pAsset, pDb);
2261
+ await this.copyFilePath(pAsset, pDb, overwrite);
2266
2262
  return Promise.resolve();
2267
2263
  }
2264
+ /**
2265
+ * unzipDatabase
2266
+ * @param db
2267
+ * @param overwrite
2268
+ */
2269
+ async unzipDatabase(db, overwrite) {
2270
+ const pZip = this.Path.join(this.getAssetsDatabasesPath(), db);
2271
+ // Read the Zip file
2272
+ this.NodeFs.readFile(pZip, (err, data) => {
2273
+ if (err) {
2274
+ console.log(err);
2275
+ return Promise.reject(`unzipDatabase ${JSON.stringify(err)}`);
2276
+ }
2277
+ const zip = new this.JSZip();
2278
+ zip.loadAsync(data).then((contents) => {
2279
+ Object.keys(contents.files).forEach(filename => {
2280
+ zip
2281
+ .file(filename)
2282
+ .async('nodebuffer')
2283
+ .then(async (content) => {
2284
+ const toDb = this.setPathSuffix(filename);
2285
+ const pDb = this.Path.join(this.getDatabasesPath(), toDb);
2286
+ // check filePath exists
2287
+ const isPath = this.isPathExists(pDb);
2288
+ if (!isPath || overwrite) {
2289
+ if (overwrite && isPath) {
2290
+ await this.deleteFilePath(pDb);
2291
+ }
2292
+ this.NodeFs.writeFileSync(pDb, content);
2293
+ }
2294
+ return Promise.resolve();
2295
+ });
2296
+ });
2297
+ });
2298
+ });
2299
+ }
2268
2300
  /**
2269
2301
  * CopyFileName
2270
2302
  * Copy file name
@@ -2277,15 +2309,15 @@ class UtilsFile {
2277
2309
  const toFilePath = this.getFilePath(toFileName);
2278
2310
  if (filePath.length !== 0 && toFilePath.length !== 0) {
2279
2311
  try {
2280
- await this.copyFilePath(filePath, toFilePath);
2312
+ await this.copyFilePath(filePath, toFilePath, true);
2281
2313
  return Promise.resolve();
2282
2314
  }
2283
2315
  catch (err) {
2284
- return Promise.reject(new Error(`CopyFileName: ${err.message}`));
2316
+ return Promise.reject(`CopyFileName: ${err}`);
2285
2317
  }
2286
2318
  }
2287
2319
  else {
2288
- return Promise.reject(new Error('CopyFileName: cannot get the ' + 'filePath'));
2320
+ return Promise.reject('CopyFileName: cannot get the ' + 'filePath');
2289
2321
  }
2290
2322
  }
2291
2323
  /**
@@ -2294,26 +2326,25 @@ class UtilsFile {
2294
2326
  * @param filePath
2295
2327
  * @param toFilePath
2296
2328
  */
2297
- async copyFilePath(filePath, toFilePath) {
2329
+ async copyFilePath(filePath, toFilePath, overwrite) {
2298
2330
  if (filePath.length !== 0 && toFilePath.length !== 0) {
2299
2331
  // check filePath exists
2300
- const isPath = this.isPathExists(filePath);
2301
- if (isPath) {
2332
+ const isPath = this.isPathExists(toFilePath);
2333
+ if (!isPath || overwrite) {
2302
2334
  try {
2303
- await this.deleteFilePath(toFilePath);
2335
+ if (overwrite && isPath) {
2336
+ await this.deleteFilePath(toFilePath);
2337
+ }
2304
2338
  this.NodeFs.copyFileSync(filePath, toFilePath);
2305
- return Promise.resolve();
2306
2339
  }
2307
2340
  catch (err) {
2308
- return Promise.reject(new Error(`CopyFilePath: ${err.message}`));
2341
+ return Promise.reject(`CopyFilePath: ${err}`);
2309
2342
  }
2310
2343
  }
2311
- else {
2312
- return Promise.reject(new Error('CopyFilePath: filePath does not ' + 'exist'));
2313
- }
2344
+ return Promise.resolve();
2314
2345
  }
2315
2346
  else {
2316
- return Promise.reject(new Error('CopyFilePath: cannot get the ' + 'filePath'));
2347
+ return Promise.reject('CopyFilePath: cannot get the ' + 'filePath');
2317
2348
  }
2318
2349
  }
2319
2350
  async copyFile(fromPath, fromFile, toPath, toFile) {
@@ -2324,7 +2355,7 @@ class UtilsFile {
2324
2355
  return Promise.resolve();
2325
2356
  }
2326
2357
  catch (err) {
2327
- return Promise.reject(new Error(`CopyFile: ${err.message}`));
2358
+ return Promise.reject(`CopyFile: ${err}`);
2328
2359
  }
2329
2360
  }
2330
2361
  /**
@@ -2341,11 +2372,11 @@ class UtilsFile {
2341
2372
  return Promise.resolve();
2342
2373
  }
2343
2374
  catch (err) {
2344
- return Promise.reject(new Error('DeleteFileName: delete filePath ' + `failed ${err.message}`));
2375
+ return Promise.reject('DeleteFileName: delete filePath ' + `failed ${err}`);
2345
2376
  }
2346
2377
  }
2347
2378
  else {
2348
- return Promise.reject(new Error('DeleteFileName: get filePath ' + 'failed'));
2379
+ return Promise.reject('DeleteFileName: get filePath ' + 'failed');
2349
2380
  }
2350
2381
  }
2351
2382
  /**
@@ -2363,7 +2394,7 @@ class UtilsFile {
2363
2394
  return Promise.resolve();
2364
2395
  }
2365
2396
  catch (err) {
2366
- return Promise.reject(new Error('DeleteFilePath: ' + `${err.message}`));
2397
+ return Promise.reject('DeleteFilePath: ' + `${err}`);
2367
2398
  }
2368
2399
  }
2369
2400
  else {
@@ -2371,7 +2402,7 @@ class UtilsFile {
2371
2402
  }
2372
2403
  }
2373
2404
  else {
2374
- return Promise.reject(new Error('DeleteFilePath: delete filePath' + 'failed'));
2405
+ return Promise.reject('DeleteFilePath: delete filePath' + 'failed');
2375
2406
  }
2376
2407
  }
2377
2408
  /**
@@ -2389,11 +2420,11 @@ class UtilsFile {
2389
2420
  return Promise.resolve();
2390
2421
  }
2391
2422
  catch (err) {
2392
- return Promise.reject(new Error(`RenameFileName: ${err.message}`));
2423
+ return Promise.reject(`RenameFileName: ${err}`);
2393
2424
  }
2394
2425
  }
2395
2426
  else {
2396
- return Promise.reject(new Error('RenameFileName: filePaths do not ' + 'exist'));
2427
+ return Promise.reject('RenameFileName: filePaths do not ' + 'exist');
2397
2428
  }
2398
2429
  }
2399
2430
  /**
@@ -2413,15 +2444,15 @@ class UtilsFile {
2413
2444
  return Promise.resolve();
2414
2445
  }
2415
2446
  catch (err) {
2416
- return Promise.reject(new Error('RenameFilePath: ' + `${err.message}`));
2447
+ return Promise.reject('RenameFilePath: ' + `${err}`);
2417
2448
  }
2418
2449
  }
2419
2450
  else {
2420
- return Promise.reject(new Error('RenameFilePath: filePath ' + 'does not exist'));
2451
+ return Promise.reject('RenameFilePath: filePath ' + 'does not exist');
2421
2452
  }
2422
2453
  }
2423
2454
  else {
2424
- return Promise.reject(new Error('RenameFilePath: filePath not found'));
2455
+ return Promise.reject('RenameFilePath: filePath not found');
2425
2456
  }
2426
2457
  }
2427
2458
  /**
@@ -2442,15 +2473,15 @@ class UtilsFile {
2442
2473
  return Promise.resolve();
2443
2474
  }
2444
2475
  catch (err) {
2445
- return Promise.reject(new Error('RestoreFileName: ' + `${err.message}`));
2476
+ return Promise.reject('RestoreFileName: ' + `${err}`);
2446
2477
  }
2447
2478
  }
2448
2479
  else {
2449
- return Promise.reject(new Error(`RestoreFileName: ${fileName} ` + 'does not exist'));
2480
+ return Promise.reject(`RestoreFileName: ${fileName} ` + 'does not exist');
2450
2481
  }
2451
2482
  }
2452
2483
  else {
2453
- return Promise.reject(new Error(`RestoreFileName: ${mFileName} ` + 'does not exist'));
2484
+ return Promise.reject(`RestoreFileName: ${mFileName} ` + 'does not exist');
2454
2485
  }
2455
2486
  }
2456
2487
  /**
@@ -2520,11 +2551,11 @@ class UtilsUpgrade {
2520
2551
  if (upgrade != null) {
2521
2552
  const keys = Object.keys(upgrade);
2522
2553
  if (!keys.includes('toVersion')) {
2523
- return Promise.reject(new Error('onUpgrade: toVersion not given'));
2554
+ return Promise.reject('onUpgrade: toVersion not given');
2524
2555
  }
2525
2556
  const toVersion = upgrade.toVersion;
2526
2557
  if (!keys.includes('statement')) {
2527
- return Promise.reject(new Error('onUpgrade: statement not given'));
2558
+ return Promise.reject('onUpgrade: statement not given');
2528
2559
  }
2529
2560
  const statement = upgrade.statement;
2530
2561
  let set = [];
@@ -2537,7 +2568,7 @@ class UtilsUpgrade {
2537
2568
  msg += `version ${toVersion} , but target version `;
2538
2569
  msg += `is ${targetVersion} for database ${dbName}`;
2539
2570
  msg += ` and version ${curVersion}`;
2540
- return Promise.reject(new Error(`onUpgrade: ${msg}`));
2571
+ return Promise.reject(`onUpgrade: ${msg}`);
2541
2572
  }
2542
2573
  try {
2543
2574
  // set Foreign Keys Off
@@ -2563,11 +2594,11 @@ class UtilsUpgrade {
2563
2594
  return Promise.resolve(changes);
2564
2595
  }
2565
2596
  catch (err) {
2566
- return Promise.reject(new Error(`onUpgrade: ${err.message}`));
2597
+ return Promise.reject(`onUpgrade: ${err}`);
2567
2598
  }
2568
2599
  }
2569
2600
  else {
2570
- return Promise.reject(new Error('onUpgrade: upgrade not found'));
2601
+ return Promise.reject('onUpgrade: upgrade not found');
2571
2602
  }
2572
2603
  }
2573
2604
  /**
@@ -2587,7 +2618,7 @@ class UtilsUpgrade {
2587
2618
  // -> Create new tables from upgrade.statement
2588
2619
  const changes = await this._uSQLite.execute(mDB, statement);
2589
2620
  if (changes < 0) {
2590
- return Promise.reject(new Error('ExecuteStatementProcess: ' + 'changes < 0'));
2621
+ return Promise.reject('ExecuteStatementProcess: ' + 'changes < 0');
2591
2622
  }
2592
2623
  // -> Create the list of table's common fields
2593
2624
  await this.findCommonColumns(mDB);
@@ -2603,7 +2634,7 @@ class UtilsUpgrade {
2603
2634
  return Promise.resolve();
2604
2635
  }
2605
2636
  catch (err) {
2606
- return Promise.reject(new Error(`ExecuteStatementProcess: ${err.message}`));
2637
+ return Promise.reject(`ExecuteStatementProcess: ${err}`);
2607
2638
  }
2608
2639
  }
2609
2640
  /**
@@ -2617,7 +2648,7 @@ class UtilsUpgrade {
2617
2648
  // -> load new data
2618
2649
  const lastId = await this._uSQLite.executeSet(mDB, set);
2619
2650
  if (lastId < 0) {
2620
- return Promise.reject(new Error('ExecuteSetProcess: lastId ' + '< 0'));
2651
+ return Promise.reject('ExecuteSetProcess: lastId ' + '< 0');
2621
2652
  }
2622
2653
  // -> update database version
2623
2654
  await this._uSQLite.setVersion(mDB, toVersion);
@@ -2629,13 +2660,13 @@ class UtilsUpgrade {
2629
2660
  stmt += `sync_date = ${sDate} WHERE id = 1;`;
2630
2661
  const changes = await this._uSQLite.execute(mDB, stmt);
2631
2662
  if (changes < 0) {
2632
- return Promise.reject(new Error('ExecuteSetProcess: changes ' + '< 0'));
2663
+ return Promise.reject('ExecuteSetProcess: changes ' + '< 0');
2633
2664
  }
2634
2665
  }
2635
2666
  return Promise.resolve();
2636
2667
  }
2637
2668
  catch (err) {
2638
- return Promise.reject(new Error(`ExecuteSetProcess: ${err.message}`));
2669
+ return Promise.reject(`ExecuteSetProcess: ${err}`);
2639
2670
  }
2640
2671
  }
2641
2672
  /**
@@ -2651,13 +2682,13 @@ class UtilsUpgrade {
2651
2682
  await this.backupTable(mDB, table);
2652
2683
  }
2653
2684
  catch (err) {
2654
- return Promise.reject(new Error(`${msg}table ${table}: ` + `${err.message}`));
2685
+ return Promise.reject(`${msg}table ${table}: ` + `${err}`);
2655
2686
  }
2656
2687
  }
2657
2688
  return Promise.resolve();
2658
2689
  }
2659
2690
  catch (err) {
2660
- return Promise.reject(new Error(`BackupTables: ${err.message}`));
2691
+ return Promise.reject(`BackupTables: ${err}`);
2661
2692
  }
2662
2693
  }
2663
2694
  /**
@@ -2682,22 +2713,22 @@ class UtilsUpgrade {
2682
2713
  await this._uSQLite.rollbackTransaction(mDB, true);
2683
2714
  }
2684
2715
  catch (err) {
2685
- msg += `: ${err.message}`;
2716
+ msg += `: ${err}`;
2686
2717
  }
2687
- return Promise.reject(new Error(`${msg}`));
2718
+ return Promise.reject(`${msg}`);
2688
2719
  }
2689
2720
  else {
2690
2721
  try {
2691
2722
  await this._uSQLite.commitTransaction(mDB, true);
2692
2723
  }
2693
2724
  catch (err) {
2694
- return Promise.reject(new Error('BackupTable: ' + `${err.message}`));
2725
+ return Promise.reject('BackupTable: ' + `${err}`);
2695
2726
  }
2696
2727
  }
2697
2728
  return Promise.resolve();
2698
2729
  }
2699
2730
  catch (err) {
2700
- return Promise.reject(new Error(`BackupTable: ${err.message}`));
2731
+ return Promise.reject(`BackupTable: ${err}`);
2701
2732
  }
2702
2733
  }
2703
2734
  /**
@@ -2719,7 +2750,7 @@ class UtilsUpgrade {
2719
2750
  return Promise.resolve(retNames);
2720
2751
  }
2721
2752
  catch (err) {
2722
- return Promise.reject(new Error('GetTableColumnNames: ' + `${err.message}`));
2753
+ return Promise.reject('GetTableColumnNames: ' + `${err}`);
2723
2754
  }
2724
2755
  }
2725
2756
  /**
@@ -2731,7 +2762,7 @@ class UtilsUpgrade {
2731
2762
  // Get new table list
2732
2763
  const tables = await this._uDrop.getTablesNames(mDB);
2733
2764
  if (tables.length === 0) {
2734
- return Promise.reject(new Error('FindCommonColumns: get ' + "table's names failed"));
2765
+ return Promise.reject('FindCommonColumns: get ' + "table's names failed");
2735
2766
  }
2736
2767
  for (const table of tables) {
2737
2768
  // get the column's name
@@ -2745,7 +2776,7 @@ class UtilsUpgrade {
2745
2776
  return Promise.resolve();
2746
2777
  }
2747
2778
  catch (err) {
2748
- return Promise.reject(new Error(`FindCommonColumns: ${err.message}`));
2779
+ return Promise.reject(`FindCommonColumns: ${err}`);
2749
2780
  }
2750
2781
  }
2751
2782
  /**
@@ -2787,9 +2818,9 @@ class UtilsUpgrade {
2787
2818
  await this._uSQLite.rollbackTransaction(mDB, true);
2788
2819
  }
2789
2820
  catch (err) {
2790
- msg += `: ${err.message}`;
2821
+ msg += `: ${err}`;
2791
2822
  }
2792
- return Promise.reject(new Error(`${msg}`));
2823
+ return Promise.reject(`${msg}`);
2793
2824
  }
2794
2825
  else {
2795
2826
  try {
@@ -2797,12 +2828,12 @@ class UtilsUpgrade {
2797
2828
  return Promise.resolve();
2798
2829
  }
2799
2830
  catch (err) {
2800
- return Promise.reject(new Error('updateNewTablesData: ' + `${err.message}`));
2831
+ return Promise.reject('updateNewTablesData: ' + `${err}`);
2801
2832
  }
2802
2833
  }
2803
2834
  }
2804
2835
  catch (err) {
2805
- return Promise.reject(new Error('updateNewTablesData: ' + `${err.message}`));
2836
+ return Promise.reject('updateNewTablesData: ' + `${err}`);
2806
2837
  }
2807
2838
  }
2808
2839
  }
@@ -2898,7 +2929,7 @@ class Database {
2898
2929
  await this._uFile.restoreFileName(this._dbName, 'backup');
2899
2930
  }
2900
2931
  catch (err) {
2901
- return Promise.reject(new Error(`Open: ${err.message}`));
2932
+ return Promise.reject(`Open: ${err}`);
2902
2933
  }
2903
2934
  }
2904
2935
  }
@@ -2907,7 +2938,7 @@ class Database {
2907
2938
  await this._uSQLite.setVersion(this._mDB, this._version);
2908
2939
  }
2909
2940
  catch (err) {
2910
- return Promise.reject(new Error(`SetVersion: ${this._version} ${err.message}`));
2941
+ return Promise.reject(`SetVersion: ${this._version} ${err}`);
2911
2942
  }
2912
2943
  }
2913
2944
  }
@@ -2916,7 +2947,7 @@ class Database {
2916
2947
  catch (err) {
2917
2948
  if (this._isDBOpen)
2918
2949
  this.close();
2919
- return Promise.reject(new Error(`Open: ${err.message}`));
2950
+ return Promise.reject(`Open: ${err}`);
2920
2951
  }
2921
2952
  }
2922
2953
  /**
@@ -2929,8 +2960,8 @@ class Database {
2929
2960
  this._mDB.close((err) => {
2930
2961
  if (err) {
2931
2962
  let msg = 'Close: Failed in closing: ';
2932
- msg += `${this._dbName} ${err.message}`;
2933
- return Promise.reject(new Error(msg));
2963
+ msg += `${this._dbName} ${err}`;
2964
+ return Promise.reject(msg);
2934
2965
  }
2935
2966
  this._isDBOpen = false;
2936
2967
  return Promise.resolve();
@@ -2952,13 +2983,13 @@ class Database {
2952
2983
  catch (err) {
2953
2984
  if (this._isDBOpen)
2954
2985
  this.close();
2955
- return Promise.reject(new Error(`getVersion: ${err.message}`));
2986
+ return Promise.reject(`getVersion: ${err}`);
2956
2987
  }
2957
2988
  }
2958
2989
  else {
2959
2990
  let msg = `getVersion: Database ${this._dbName} `;
2960
2991
  msg += `not opened`;
2961
- return Promise.reject(new Error(msg));
2992
+ return Promise.reject(msg);
2962
2993
  }
2963
2994
  }
2964
2995
  /**
@@ -2976,7 +3007,7 @@ class Database {
2976
3007
  await this.open();
2977
3008
  }
2978
3009
  catch (err) {
2979
- return Promise.reject(new Error(`DeleteDB: ${err.message}`));
3010
+ return Promise.reject(`DeleteDB: ${err}`);
2980
3011
  }
2981
3012
  }
2982
3013
  // close the database
@@ -2984,7 +3015,7 @@ class Database {
2984
3015
  await this.close();
2985
3016
  }
2986
3017
  catch (err) {
2987
- return Promise.reject(new Error('DeleteDB: Close failed'));
3018
+ return Promise.reject('DeleteDB: Close failed');
2988
3019
  }
2989
3020
  // delete the database
2990
3021
  if (isExists) {
@@ -2993,8 +3024,8 @@ class Database {
2993
3024
  }
2994
3025
  catch (err) {
2995
3026
  let msg = `DeleteDB: deleteFile ${dbName}`;
2996
- msg += ` failed ${err.message}`;
2997
- return Promise.reject(new Error(msg));
3027
+ msg += ` failed ${err}`;
3028
+ return Promise.reject(msg);
2998
3029
  }
2999
3030
  }
3000
3031
  return Promise.resolve();
@@ -3005,19 +3036,20 @@ class Database {
3005
3036
  * @returns
3006
3037
  */
3007
3038
  async isTableExists(tableName) {
3008
- if (!this._isDBOpen) {
3039
+ if (this._mDB != null && this._isDBOpen) {
3040
+ const isOpen = this._isDBOpen;
3041
+ try {
3042
+ const retB = await this._uJson.isTableExists(this._mDB, isOpen, tableName);
3043
+ return Promise.resolve(retB);
3044
+ }
3045
+ catch (err) {
3046
+ return Promise.reject(`IsTableExists: ${err}`);
3047
+ }
3048
+ }
3049
+ else {
3009
3050
  let msg = `isTableExists: Database ${this._dbName} `;
3010
3051
  msg += `not opened`;
3011
- return Promise.reject(new Error(msg));
3012
- }
3013
- const isOpen = this._isDBOpen;
3014
- try {
3015
- const retB = await this._uJson.isTableExists(this._mDB, isOpen, tableName);
3016
- return Promise.resolve(retB);
3017
- }
3018
- catch (err) {
3019
- const msg = `IsTableExists: ${err.message}`;
3020
- return Promise.reject(new Error(msg));
3052
+ return Promise.reject(msg);
3021
3053
  }
3022
3054
  }
3023
3055
  /**
@@ -3029,7 +3061,7 @@ class Database {
3029
3061
  if (!this._isDBOpen) {
3030
3062
  let msg = `CreateSyncTable: Database ${this._dbName} `;
3031
3063
  msg += `not opened`;
3032
- return Promise.reject(new Error(msg));
3064
+ return Promise.reject(msg);
3033
3065
  }
3034
3066
  let changes = -1;
3035
3067
  const isOpen = this._isDBOpen;
@@ -3047,13 +3079,13 @@ class Database {
3047
3079
  "${date}");`;
3048
3080
  changes = await this._uSQLite.execute(this._mDB, stmts);
3049
3081
  if (changes < 0) {
3050
- return Promise.reject(new Error(`CreateSyncTable: failed changes < 0`));
3082
+ return Promise.reject(`CreateSyncTable: failed changes < 0`);
3051
3083
  }
3052
3084
  }
3053
3085
  return Promise.resolve(changes);
3054
3086
  }
3055
3087
  catch (err) {
3056
- return Promise.reject(new Error(`CreateSyncTable: ${err.message}`));
3088
+ return Promise.reject(`CreateSyncTable: ${err}`);
3057
3089
  }
3058
3090
  }
3059
3091
  /**
@@ -3081,7 +3113,7 @@ class Database {
3081
3113
  }
3082
3114
  }
3083
3115
  catch (err) {
3084
- return { result: false, message: `setSyncDate failed: ${err.message}` };
3116
+ return { result: false, message: `setSyncDate failed: ${err}` };
3085
3117
  }
3086
3118
  }
3087
3119
  /**
@@ -3105,7 +3137,7 @@ class Database {
3105
3137
  }
3106
3138
  }
3107
3139
  catch (err) {
3108
- return { syncDate: 0, message: `setSyncDate failed: ${err.message}` };
3140
+ return { syncDate: 0, message: `setSyncDate failed: ${err}` };
3109
3141
  }
3110
3142
  }
3111
3143
  /**
@@ -3118,29 +3150,29 @@ class Database {
3118
3150
  if (!this._isDBOpen) {
3119
3151
  let msg = `ExecuteSQL: Database ${this._dbName} `;
3120
3152
  msg += `not opened`;
3121
- return Promise.reject(new Error(msg));
3153
+ return Promise.reject(msg);
3122
3154
  }
3123
3155
  try {
3124
3156
  if (transaction)
3125
3157
  await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);
3126
3158
  const changes = await this._uSQLite.execute(this._mDB, sql);
3127
3159
  if (changes < 0) {
3128
- return Promise.reject(new Error('ExecuteSQL: changes < 0'));
3160
+ return Promise.reject('ExecuteSQL: changes < 0');
3129
3161
  }
3130
3162
  if (transaction)
3131
3163
  await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);
3132
3164
  return Promise.resolve(changes);
3133
3165
  }
3134
3166
  catch (err) {
3135
- let msg = `ExecuteSQL: ${err.message}`;
3167
+ let msg = `ExecuteSQL: ${err}`;
3136
3168
  try {
3137
3169
  if (transaction)
3138
3170
  await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
3139
3171
  }
3140
3172
  catch (err) {
3141
- msg += ` : ${err.message}`;
3173
+ msg += ` : ${err}`;
3142
3174
  }
3143
- return Promise.reject(new Error(`ExecuteSQL: ${msg}`));
3175
+ return Promise.reject(`ExecuteSQL: ${msg}`);
3144
3176
  }
3145
3177
  }
3146
3178
  /**
@@ -3154,14 +3186,14 @@ class Database {
3154
3186
  if (!this._isDBOpen) {
3155
3187
  let msg = `SelectSQL: Database ${this._dbName} `;
3156
3188
  msg += `not opened`;
3157
- return Promise.reject(new Error(msg));
3189
+ return Promise.reject(msg);
3158
3190
  }
3159
3191
  try {
3160
3192
  const retArr = await this._uSQLite.queryAll(this._mDB, sql, values);
3161
3193
  return Promise.resolve(retArr);
3162
3194
  }
3163
3195
  catch (err) {
3164
- return Promise.reject(new Error(`SelectSQL: ${err.message}`));
3196
+ return Promise.reject(`SelectSQL: ${err}`);
3165
3197
  }
3166
3198
  }
3167
3199
  /**
@@ -3175,7 +3207,7 @@ class Database {
3175
3207
  if (!this._isDBOpen) {
3176
3208
  let msg = `RunSQL: Database ${this._dbName} `;
3177
3209
  msg += `not opened`;
3178
- return Promise.reject(new Error(msg));
3210
+ return Promise.reject(msg);
3179
3211
  }
3180
3212
  const retRes = { changes: -1, lastId: -1 };
3181
3213
  let initChanges = -1;
@@ -3186,14 +3218,14 @@ class Database {
3186
3218
  await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);
3187
3219
  }
3188
3220
  catch (err) {
3189
- return Promise.reject(new Error(`ExecSet: ${err.message}`));
3221
+ return Promise.reject(`ExecSet: ${err}`);
3190
3222
  }
3191
3223
  try {
3192
3224
  const lastId = await this._uSQLite.prepareRun(this._mDB, statement, values);
3193
3225
  if (lastId < 0) {
3194
3226
  if (transaction)
3195
3227
  await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
3196
- return Promise.reject(new Error(`RunSQL: return LastId < 0`));
3228
+ return Promise.reject(`RunSQL: return LastId < 0`);
3197
3229
  }
3198
3230
  if (transaction)
3199
3231
  await this._uSQLite.commitTransaction(this._mDB, this._isDBOpen);
@@ -3204,7 +3236,7 @@ class Database {
3204
3236
  catch (err) {
3205
3237
  if (transaction)
3206
3238
  await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
3207
- return Promise.reject(new Error(`RunSQL: ${err.message}`));
3239
+ return Promise.reject(`RunSQL: ${err}`);
3208
3240
  }
3209
3241
  }
3210
3242
  /**
@@ -3217,7 +3249,7 @@ class Database {
3217
3249
  if (!this._isDBOpen) {
3218
3250
  let msg = `ExecSet: Database ${this._dbName} `;
3219
3251
  msg += `not opened`;
3220
- return Promise.reject(new Error(msg));
3252
+ return Promise.reject(msg);
3221
3253
  }
3222
3254
  const retRes = { changes: -1, lastId: -1 };
3223
3255
  let initChanges = -1;
@@ -3228,7 +3260,7 @@ class Database {
3228
3260
  await this._uSQLite.beginTransaction(this._mDB, this._isDBOpen);
3229
3261
  }
3230
3262
  catch (err) {
3231
- return Promise.reject(new Error(`ExecSet: ${err.message}`));
3263
+ return Promise.reject(`ExecSet: ${err}`);
3232
3264
  }
3233
3265
  try {
3234
3266
  retRes.lastId = await this._uSQLite.executeSet(this._mDB, set);
@@ -3244,7 +3276,7 @@ class Database {
3244
3276
  await this._uSQLite.rollbackTransaction(this._mDB, this._isDBOpen);
3245
3277
  }
3246
3278
  catch (err) {
3247
- return Promise.reject(new Error(`ExecSet: ${msg}: ` + `${err.message}`));
3279
+ return Promise.reject(`ExecSet: ${msg}: ` + `${err}`);
3248
3280
  }
3249
3281
  }
3250
3282
  }
@@ -3267,11 +3299,11 @@ class Database {
3267
3299
  return Promise.resolve(changes);
3268
3300
  }
3269
3301
  catch (err) {
3270
- return Promise.reject(new Error(`ImportJson: ${err.message}`));
3302
+ return Promise.reject(`ImportJson: ${err}`);
3271
3303
  }
3272
3304
  }
3273
3305
  else {
3274
- return Promise.reject(new Error(`ImportJson: database is closed`));
3306
+ return Promise.reject(`ImportJson: database is closed`);
3275
3307
  }
3276
3308
  }
3277
3309
  async exportJson(mode) {
@@ -3288,15 +3320,15 @@ class Database {
3288
3320
  return Promise.resolve(retJson);
3289
3321
  }
3290
3322
  else {
3291
- return Promise.reject(new Error(`ExportJson: retJson not valid`));
3323
+ return Promise.reject(`ExportJson: retJson not valid`);
3292
3324
  }
3293
3325
  }
3294
3326
  catch (err) {
3295
- return Promise.reject(new Error(`ExportJson: ${err.message}`));
3327
+ return Promise.reject(`ExportJson: ${err}`);
3296
3328
  }
3297
3329
  }
3298
3330
  else {
3299
- return Promise.reject(new Error(`ExportJson: database is closed`));
3331
+ return Promise.reject(`ExportJson: database is closed`);
3300
3332
  }
3301
3333
  }
3302
3334
  }
@@ -3392,7 +3424,7 @@ class CapacitorSQLite {
3392
3424
  'close ' +
3393
3425
  dbName +
3394
3426
  ' failed ' +
3395
- err.message);
3427
+ err);
3396
3428
  }
3397
3429
  }
3398
3430
  // remove the connection from dictionary
@@ -3663,10 +3695,10 @@ class CapacitorSQLite {
3663
3695
  const mDB = this._dbDict[dbName];
3664
3696
  try {
3665
3697
  const res = await mDB.isTableExists(tableName);
3666
- return Promise.resolve({ result: res.result });
3698
+ return Promise.resolve({ result: res });
3667
3699
  }
3668
3700
  catch (err) {
3669
- return Promise.reject(`isTableExists: ${err.message}`);
3701
+ return Promise.reject(`isTableExists: ${err}`);
3670
3702
  }
3671
3703
  }
3672
3704
  async deleteDatabase(options) {
@@ -3685,7 +3717,7 @@ class CapacitorSQLite {
3685
3717
  return Promise.resolve();
3686
3718
  }
3687
3719
  catch (err) {
3688
- return Promise.reject(`Delete: ${err.message}`);
3720
+ return Promise.reject(`Delete: ${err}`);
3689
3721
  }
3690
3722
  }
3691
3723
  async isJsonValid(options) {
@@ -3733,7 +3765,7 @@ class CapacitorSQLite {
3733
3765
  return Promise.resolve({ changes: { changes: changes } });
3734
3766
  }
3735
3767
  catch (err) {
3736
- return Promise.reject(`ImportFromJson: ${err.message}`);
3768
+ return Promise.reject(`ImportFromJson: ${err}`);
3737
3769
  }
3738
3770
  }
3739
3771
  async exportToJson(options) {
@@ -3762,7 +3794,7 @@ class CapacitorSQLite {
3762
3794
  }
3763
3795
  }
3764
3796
  catch (err) {
3765
- return Promise.reject(`exportToJson: ${err.message}`);
3797
+ return Promise.reject(`exportToJson: ${err}`);
3766
3798
  }
3767
3799
  }
3768
3800
  async createSyncTable(options) {
@@ -3781,7 +3813,7 @@ class CapacitorSQLite {
3781
3813
  return Promise.resolve({ changes: { changes: ret } });
3782
3814
  }
3783
3815
  catch (err) {
3784
- return Promise.reject(`createSyncTable: ${err.message}`);
3816
+ return Promise.reject(`createSyncTable: ${err}`);
3785
3817
  }
3786
3818
  }
3787
3819
  async setSyncDate(options) {
@@ -3804,7 +3836,7 @@ class CapacitorSQLite {
3804
3836
  return Promise.resolve();
3805
3837
  }
3806
3838
  catch (err) {
3807
- return Promise.reject(`SetSyncDate: ${err.message}`);
3839
+ return Promise.reject(`SetSyncDate: ${err}`);
3808
3840
  }
3809
3841
  }
3810
3842
  async getSyncDate(options) {
@@ -3823,7 +3855,7 @@ class CapacitorSQLite {
3823
3855
  return Promise.resolve(ret);
3824
3856
  }
3825
3857
  catch (err) {
3826
- return Promise.reject(`GetSyncDate: ${err.message}`);
3858
+ return Promise.reject(`GetSyncDate: ${err}`);
3827
3859
  }
3828
3860
  }
3829
3861
  async addUpgradeStatement(options) {
@@ -3850,18 +3882,24 @@ class CapacitorSQLite {
3850
3882
  this._versionUpgrades[dbName] = upgVDict;
3851
3883
  return Promise.resolve();
3852
3884
  }
3853
- async copyFromAssets() {
3885
+ async copyFromAssets(options) {
3886
+ const keys = Object.keys(options);
3887
+ const mOverwrite = keys.includes('overwrite') ? options.overwrite : true;
3854
3888
  // check if the assets/database folder exists
3855
3889
  const assetsDbPath = this._uFile.getAssetsDatabasesPath();
3856
3890
  const res = this._uFile.isPathExists(assetsDbPath);
3857
3891
  if (res) {
3858
3892
  // get the database files
3859
3893
  const dbList = await this._uFile.getFileList(assetsDbPath);
3894
+ // loop through the database files
3860
3895
  dbList.forEach(async (db) => {
3861
- // for each check if the suffix SQLite.db is there or add it
3862
- const toDb = this._uFile.setPathSuffix(db);
3863
- // for each copy the file to the Application database folder
3864
- await this._uFile.copyFromAssetToDatabase(db, toDb);
3896
+ if (db.substring(db.length - 3) === '.db') {
3897
+ // for each copy the file to the Application database folder
3898
+ await this._uFile.copyFromAssetToDatabase(db, mOverwrite);
3899
+ }
3900
+ if (db.substring(db.length - 4) === '.zip') {
3901
+ await this._uFile.unzipDatabase(db, mOverwrite);
3902
+ }
3865
3903
  });
3866
3904
  return Promise.resolve();
3867
3905
  }
@@ -3939,7 +3977,7 @@ class CapacitorSQLite {
3939
3977
  }
3940
3978
  }
3941
3979
  catch (err) {
3942
- return Promise.reject(`CheckConnectionsConsistency: ${err.message}`);
3980
+ return Promise.reject(`CheckConnectionsConsistency: ${err}`);
3943
3981
  }
3944
3982
  }
3945
3983
  async resetDbDict(keys) {
@@ -3951,7 +3989,7 @@ class CapacitorSQLite {
3951
3989
  }
3952
3990
  }
3953
3991
  catch (err) {
3954
- return Promise.reject(`ResetDbDict: ${err.message}`);
3992
+ return Promise.reject(`ResetDbDict: ${err}`);
3955
3993
  }
3956
3994
  }
3957
3995
  async symmetricDifference(setA, setB) {