@capgo/capacitor-data-storage-sqlite 6.0.0

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.
Files changed (59) hide show
  1. package/CapacitorDataStorageSqlite.podspec +18 -0
  2. package/LICENSE +21 -0
  3. package/android/build.gradle +63 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/CapacitorDataStorageSqlite.java +387 -0
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/CapacitorDataStorageSqlitePlugin.java +447 -0
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/RetHandler.java +117 -0
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/Data.java +8 -0
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/Global.java +7 -0
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonStore.java +131 -0
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonTable.java +110 -0
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonValue.java +89 -0
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/StorageDatabaseHelper.java +691 -0
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/UtilsSQLCipher.java +162 -0
  15. package/android/src/main/res/.gitkeep +0 -0
  16. package/dist/docs.json +995 -0
  17. package/dist/esm/definitions.d.ts +296 -0
  18. package/dist/esm/definitions.js +2 -0
  19. package/dist/esm/definitions.js.map +1 -0
  20. package/dist/esm/index.d.ts +4 -0
  21. package/dist/esm/index.js +9 -0
  22. package/dist/esm/index.js.map +1 -0
  23. package/dist/esm/web-utils/Data.d.ts +5 -0
  24. package/dist/esm/web-utils/Data.js +3 -0
  25. package/dist/esm/web-utils/Data.js.map +1 -0
  26. package/dist/esm/web-utils/StorageDatabaseHelper.d.ts +23 -0
  27. package/dist/esm/web-utils/StorageDatabaseHelper.js +247 -0
  28. package/dist/esm/web-utils/StorageDatabaseHelper.js.map +1 -0
  29. package/dist/esm/web-utils/json-utils.d.ts +15 -0
  30. package/dist/esm/web-utils/json-utils.js +76 -0
  31. package/dist/esm/web-utils/json-utils.js.map +1 -0
  32. package/dist/esm/web.d.ts +27 -0
  33. package/dist/esm/web.js +295 -0
  34. package/dist/esm/web.js.map +1 -0
  35. package/dist/plugin.cjs.js +633 -0
  36. package/dist/plugin.cjs.js.map +1 -0
  37. package/dist/plugin.js +635 -0
  38. package/dist/plugin.js.map +1 -0
  39. package/electron/dist/plugin.js +1044 -0
  40. package/electron/dist/plugin.js.map +1 -0
  41. package/electron/rollup.config.mjs +17 -0
  42. package/electron/tsconfig.json +19 -0
  43. package/ios/Plugin/CapacitorDataStorageSqlite.swift +550 -0
  44. package/ios/Plugin/CapacitorDataStorageSqlitePlugin.h +10 -0
  45. package/ios/Plugin/CapacitorDataStorageSqlitePlugin.m +29 -0
  46. package/ios/Plugin/CapacitorDataStorageSqlitePlugin.swift +550 -0
  47. package/ios/Plugin/Data.swift +16 -0
  48. package/ios/Plugin/Global.swift +13 -0
  49. package/ios/Plugin/ImportExportJson/JsonStore.swift +47 -0
  50. package/ios/Plugin/Info.plist +24 -0
  51. package/ios/Plugin/ReturnHandler.swift +85 -0
  52. package/ios/Plugin/StorageDatabaseHelper.swift +603 -0
  53. package/ios/Plugin/Utils/Blob.swift +41 -0
  54. package/ios/Plugin/Utils/UtilsBinding.swift +73 -0
  55. package/ios/Plugin/Utils/UtilsEncryption.swift +79 -0
  56. package/ios/Plugin/Utils/UtilsFile.swift +244 -0
  57. package/ios/Plugin/Utils/UtilsSQLCipher.swift +605 -0
  58. package/package.json +96 -0
  59. package/readme.md +203 -0
@@ -0,0 +1,1044 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var require$$0 = require('path');
6
+ var require$$1 = require('fs');
7
+ var require$$2 = require('sqlite3');
8
+
9
+ var src = {};
10
+
11
+ var Data$1 = {};
12
+
13
+ Object.defineProperty(Data$1, "__esModule", { value: true });
14
+ Data$1.Data = void 0;
15
+ class Data {
16
+ }
17
+ Data$1.Data = Data;
18
+
19
+ var StorageDatabaseHelper$1 = {};
20
+
21
+ var UtilsSQLite$1 = {};
22
+
23
+ Object.defineProperty(UtilsSQLite$1, "__esModule", { value: true });
24
+ UtilsSQLite$1.UtilsSQLite = void 0;
25
+ class UtilsSQLite {
26
+ constructor() {
27
+ this.pathDB = "./DataStorage";
28
+ this.Path = null;
29
+ this.NodeFs = null;
30
+ this.SQLite3 = null;
31
+ this.Path = require$$0;
32
+ this.NodeFs = require$$1;
33
+ this.SQLite3 = require$$2;
34
+ }
35
+ async connection(dbName, readOnly) {
36
+ const flags = readOnly
37
+ ? this.SQLite3.OPEN_READONLY
38
+ : this.SQLite3.OPEN_CREATE | this.SQLite3.OPEN_READWRITE;
39
+ // get the path for the database
40
+ try {
41
+ const dbPath = await this.getDBPath(dbName);
42
+ const dbOpen = new this.SQLite3.Database(dbPath, flags);
43
+ return Promise.resolve(dbOpen);
44
+ }
45
+ catch (err) {
46
+ return Promise.reject(err);
47
+ }
48
+ }
49
+ async getWritableDatabase(dbName) {
50
+ const db = await this.connection(dbName, false /*,secret*/);
51
+ return db;
52
+ }
53
+ async getReadableDatabase(dbName) {
54
+ const db = await this.connection(dbName, true /*,secret*/);
55
+ return db;
56
+ }
57
+ isFileExists(dbName) {
58
+ const dbFolder = this.pathDB;
59
+ const path = this.Path.join(dbFolder, dbName);
60
+ let ret = false;
61
+ try {
62
+ if (this.NodeFs.existsSync(path)) {
63
+ ret = true;
64
+ }
65
+ return Promise.resolve(ret);
66
+ }
67
+ catch (err) {
68
+ return Promise.reject(err);
69
+ }
70
+ }
71
+ async getDBPath(dbName) {
72
+ let retPath = null;
73
+ const dbFolder = this.pathDB;
74
+ retPath = this.Path.join(dbFolder, dbName);
75
+ try {
76
+ if (!this.NodeFs.existsSync(dbFolder)) {
77
+ await this.mkdirSyncRecursive(dbFolder);
78
+ }
79
+ return Promise.resolve(retPath);
80
+ }
81
+ catch (err) {
82
+ return Promise.reject(err);
83
+ }
84
+ }
85
+ async mkdirSyncRecursive(directory) {
86
+ const path = directory.replace(/\/$/, "").split("/");
87
+ for (let i = 1; i <= path.length; i++) {
88
+ const segment = path.slice(0, i).join("/");
89
+ segment.length > 0 && !this.NodeFs.existsSync(segment)
90
+ ? this.NodeFs.mkdirSync(segment)
91
+ : null;
92
+ }
93
+ return;
94
+ }
95
+ }
96
+ UtilsSQLite$1.UtilsSQLite = UtilsSQLite;
97
+
98
+ Object.defineProperty(StorageDatabaseHelper$1, "__esModule", { value: true });
99
+ StorageDatabaseHelper$1.StorageDatabaseHelper = void 0;
100
+ const Data_1$1 = Data$1;
101
+ const UtilsSQLite_1 = UtilsSQLite$1;
102
+ const COL_ID = "id";
103
+ const COL_NAME = "name";
104
+ const COL_VALUE = "value";
105
+ class StorageDatabaseHelper {
106
+ constructor() {
107
+ this.Path = null;
108
+ this.NodeFs = null;
109
+ this.isOpen = false;
110
+ this.Path = require$$0;
111
+ this.NodeFs = require$$1;
112
+ this._utils = new UtilsSQLite_1.UtilsSQLite();
113
+ }
114
+ async openStore(dbName, tableName) {
115
+ try {
116
+ this.db = await this._utils.connection(dbName, false);
117
+ if (this.db !== null) {
118
+ await this._createTable(tableName);
119
+ this.dbName = dbName;
120
+ this.tableName = tableName;
121
+ this.isOpen = true;
122
+ return Promise.resolve();
123
+ }
124
+ else {
125
+ this.dbName = "";
126
+ this.tableName = "";
127
+ this.isOpen = false;
128
+ return Promise.reject(`connection to store ${dbName}`);
129
+ }
130
+ }
131
+ catch (err) {
132
+ this.dbName = "";
133
+ this.tableName = "";
134
+ this.isOpen = false;
135
+ return Promise.reject(err);
136
+ }
137
+ }
138
+ async closeStore(dbName) {
139
+ if (dbName === this.dbName && this.isOpen && this.db != null) {
140
+ try {
141
+ await this.db.close();
142
+ this.dbName = "";
143
+ this.tableName = "";
144
+ this.isOpen = false;
145
+ return Promise.resolve();
146
+ }
147
+ catch (err) {
148
+ return Promise.reject(err);
149
+ }
150
+ }
151
+ else {
152
+ return Promise.reject(`Store ${dbName} not opened`);
153
+ }
154
+ }
155
+ async isStoreExists(dbName) {
156
+ let ret = false;
157
+ try {
158
+ ret = await this._utils.isFileExists(dbName);
159
+ return Promise.resolve(ret);
160
+ }
161
+ catch (err) {
162
+ return Promise.reject(err);
163
+ }
164
+ }
165
+ async _createTable(tableName) {
166
+ const CREATE_STORAGE_TABLE = "CREATE TABLE IF NOT EXISTS " +
167
+ tableName +
168
+ "(" +
169
+ COL_ID +
170
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + // Define a primary key
171
+ COL_NAME +
172
+ " TEXT NOT NULL UNIQUE," +
173
+ COL_VALUE +
174
+ " TEXT" +
175
+ ")";
176
+ try {
177
+ if (this.db != null) {
178
+ return this.db.run(CREATE_STORAGE_TABLE, async (err) => {
179
+ if (err) {
180
+ return Promise.reject(`Error: in createTable ${err.message}`);
181
+ }
182
+ else {
183
+ try {
184
+ await this._createIndex(tableName);
185
+ return Promise.resolve();
186
+ }
187
+ catch (err) {
188
+ return Promise.reject(err);
189
+ }
190
+ }
191
+ });
192
+ }
193
+ else {
194
+ return Promise.reject(`connection to store ${this.dbName}`);
195
+ }
196
+ }
197
+ catch (err) {
198
+ return Promise.reject(err);
199
+ }
200
+ }
201
+ async _createIndex(tableName) {
202
+ const idx = `index_${tableName}_on_${COL_NAME}`;
203
+ const CREATE_INDEX_NAME = "CREATE INDEX IF NOT EXISTS " +
204
+ idx +
205
+ " ON " +
206
+ tableName +
207
+ " (" +
208
+ COL_NAME +
209
+ ")";
210
+ try {
211
+ if (this.db != null) {
212
+ return this.db.run(CREATE_INDEX_NAME, async (err) => {
213
+ if (err) {
214
+ return Promise.reject(`Error: in createIndex ${err.message}`);
215
+ }
216
+ else {
217
+ return Promise.resolve();
218
+ }
219
+ });
220
+ }
221
+ else {
222
+ return Promise.reject(`connection to store ${this.dbName}`);
223
+ }
224
+ }
225
+ catch (err) {
226
+ return Promise.reject(err);
227
+ }
228
+ }
229
+ async setTable(tableName) {
230
+ try {
231
+ await this._createTable(tableName);
232
+ this.tableName = tableName;
233
+ return Promise.resolve();
234
+ }
235
+ catch (err) {
236
+ this.tableName = "";
237
+ return Promise.reject(err);
238
+ }
239
+ }
240
+ // Insert a data into the database
241
+ async set(data) {
242
+ if (this.db == null) {
243
+ return Promise.reject(`this.db is null in set`);
244
+ }
245
+ try {
246
+ // Check if data.name does not exist otherwise update it
247
+ const res = await this.get(data.name);
248
+ if (res.id != null) {
249
+ // exists so update it
250
+ await this.update(data);
251
+ return Promise.resolve();
252
+ }
253
+ else {
254
+ // does not exist add it
255
+ const DATA_INSERT = `INSERT INTO "${this.tableName}"
256
+ ("${COL_NAME}", "${COL_VALUE}")
257
+ VALUES (?, ?)`;
258
+ return this.db.run(DATA_INSERT, [data.name, data.value], (err) => {
259
+ if (err) {
260
+ return Promise.reject(`Data INSERT: ${err.message}`);
261
+ }
262
+ else {
263
+ return Promise.resolve();
264
+ }
265
+ });
266
+ }
267
+ }
268
+ catch (err) {
269
+ return Promise.reject(err);
270
+ }
271
+ }
272
+ // get a Data
273
+ async get(name) {
274
+ return new Promise((resolve, reject) => {
275
+ if (this.db == null) {
276
+ reject(`this.db is null in get`);
277
+ }
278
+ const DATA_SELECT_QUERY = `SELECT * FROM ${this.tableName} WHERE ${COL_NAME} = '${name}'`;
279
+ this.db.all(DATA_SELECT_QUERY, (err, rows) => {
280
+ if (err) {
281
+ const data = new Data_1$1.Data();
282
+ data.id = null;
283
+ resolve(data);
284
+ }
285
+ else {
286
+ let data = new Data_1$1.Data();
287
+ if (rows.length >= 1) {
288
+ data = rows[0];
289
+ }
290
+ else {
291
+ data.id = null;
292
+ }
293
+ resolve(data);
294
+ }
295
+ });
296
+ });
297
+ }
298
+ // update a Data
299
+ async update(data) {
300
+ return new Promise((resolve, reject) => {
301
+ if (this.db == null) {
302
+ reject(`this.db is null in update`);
303
+ }
304
+ const DATA_UPDATE = `UPDATE "${this.tableName}"
305
+ SET "${COL_VALUE}" = ? WHERE "${COL_NAME}" = ?`;
306
+ this.db.run(DATA_UPDATE, [data.value, data.name], (err) => {
307
+ if (err) {
308
+ reject(`Data UPDATE: ${err.message}`);
309
+ }
310
+ else {
311
+ resolve();
312
+ }
313
+ });
314
+ });
315
+ }
316
+ // isKey exists
317
+ async iskey(name) {
318
+ if (this.db == null) {
319
+ return Promise.reject(`this.db is null in clear`);
320
+ }
321
+ try {
322
+ const res = await this.get(name);
323
+ if (res.id != null) {
324
+ return Promise.resolve(true);
325
+ }
326
+ else {
327
+ return Promise.resolve(false);
328
+ }
329
+ }
330
+ catch (err) {
331
+ return Promise.reject(err);
332
+ }
333
+ }
334
+ // remove a key
335
+ async remove(name) {
336
+ if (this.db == null) {
337
+ return Promise.reject(`this.db is null in clear`);
338
+ }
339
+ try {
340
+ const res = await this.get(name);
341
+ if (res.id != null) {
342
+ const DATA_DELETE = `DELETE FROM "${this.tableName}"
343
+ WHERE "${COL_NAME}" = ?`;
344
+ return this.db.run(DATA_DELETE, name, (err) => {
345
+ if (err) {
346
+ return Promise.reject(`Data DELETE: ${err.message}`);
347
+ }
348
+ else {
349
+ return Promise.resolve();
350
+ }
351
+ });
352
+ }
353
+ else {
354
+ return Promise.reject(`REMOVE key does not exist`);
355
+ }
356
+ }
357
+ catch (err) {
358
+ return Promise.reject(err);
359
+ }
360
+ }
361
+ // remove all keys
362
+ async clear() {
363
+ return new Promise((resolve, reject) => {
364
+ if (this.db == null) {
365
+ reject(`this.db is null in clear`);
366
+ }
367
+ const DATA_DELETE = `DELETE FROM "${this.tableName}"`;
368
+ this.db.exec(DATA_DELETE, (err) => {
369
+ if (err) {
370
+ reject(`Data CLEAR: ${err.message}`);
371
+ }
372
+ else {
373
+ // set back the key primary index to 0
374
+ const DATA_UPDATE = `UPDATE SQLITE_SEQUENCE SET SEQ = ? `;
375
+ this.db.run(DATA_UPDATE, 0, (err) => {
376
+ if (err) {
377
+ reject(`Data UPDATE SQLITE_SEQUENCE: ${err.message}`);
378
+ }
379
+ else {
380
+ resolve();
381
+ }
382
+ });
383
+ }
384
+ });
385
+ });
386
+ }
387
+ async keys() {
388
+ return new Promise((resolve, reject) => {
389
+ if (this.db == null) {
390
+ reject(`this.db is null in clear`);
391
+ }
392
+ try {
393
+ let SELECT_KEYS = `SELECT "${COL_NAME}" FROM `;
394
+ SELECT_KEYS += `"${this.tableName}" ORDER BY ${COL_NAME};`;
395
+ this.db.all(SELECT_KEYS, (err, rows) => {
396
+ if (err) {
397
+ reject(`Keys: ${err.message}`);
398
+ }
399
+ else {
400
+ let arKeys = [];
401
+ for (let i = 0; i < rows.length; i++) {
402
+ arKeys = [...arKeys, rows[i].name];
403
+ if (i === rows.length - 1) {
404
+ resolve(arKeys);
405
+ }
406
+ }
407
+ }
408
+ });
409
+ }
410
+ catch (err) {
411
+ return Promise.reject(err);
412
+ }
413
+ });
414
+ }
415
+ async values() {
416
+ return new Promise((resolve, reject) => {
417
+ if (this.db == null) {
418
+ reject(`this.db is null in clear`);
419
+ }
420
+ try {
421
+ let SELECT_VALUES = `SELECT "${COL_VALUE}" FROM `;
422
+ SELECT_VALUES += `"${this.tableName}" ORDER BY ${COL_NAME};`;
423
+ this.db.all(SELECT_VALUES, (err, rows) => {
424
+ if (err) {
425
+ reject(`Values: ${err.message}`);
426
+ }
427
+ else {
428
+ let arValues = [];
429
+ for (let i = 0; i < rows.length; i++) {
430
+ arValues = [...arValues, rows[i].value];
431
+ if (i === rows.length - 1) {
432
+ resolve(arValues);
433
+ }
434
+ }
435
+ }
436
+ });
437
+ }
438
+ catch (err) {
439
+ reject(err);
440
+ }
441
+ });
442
+ }
443
+ async filtervalues(filter) {
444
+ return new Promise((resolve, reject) => {
445
+ if (this.db == null) {
446
+ reject(`this.db is null in clear`);
447
+ }
448
+ try {
449
+ if (!filter.startsWith("%") && !filter.endsWith("%")) {
450
+ filter = "%" + filter + "%";
451
+ }
452
+ let SELECT_VALUES = `SELECT "${COL_VALUE}" FROM `;
453
+ SELECT_VALUES += `"${this.tableName}" WHERE name `;
454
+ SELECT_VALUES += `LIKE "${filter}" ORDER BY ${COL_NAME}`;
455
+ this.db.all(SELECT_VALUES, (err, rows) => {
456
+ if (err) {
457
+ reject(`FilterValues: ${err.message}`);
458
+ }
459
+ else {
460
+ let arValues = [];
461
+ for (let i = 0; i < rows.length; i++) {
462
+ arValues = [...arValues, rows[i].value];
463
+ if (i === rows.length - 1) {
464
+ resolve(arValues);
465
+ }
466
+ }
467
+ }
468
+ });
469
+ }
470
+ catch (err) {
471
+ reject(err);
472
+ }
473
+ });
474
+ }
475
+ async keysvalues() {
476
+ return new Promise((resolve, reject) => {
477
+ if (this.db == null) {
478
+ reject(`this.db is null in clear`);
479
+ }
480
+ try {
481
+ let SELECT_KEYSVALUES = `SELECT "${COL_NAME}" , "${COL_VALUE}"`;
482
+ SELECT_KEYSVALUES += ` FROM "${this.tableName}" ORDER BY ${COL_NAME};`;
483
+ this.db.all(SELECT_KEYSVALUES, (err, rows) => {
484
+ if (err) {
485
+ reject(`KeysValues: ${err.message}`);
486
+ }
487
+ else {
488
+ resolve(rows);
489
+ }
490
+ });
491
+ }
492
+ catch (err) {
493
+ reject(err);
494
+ }
495
+ });
496
+ }
497
+ async deleteStore(dbName) {
498
+ const dbPath = this.Path.join(this._utils.pathDB, dbName);
499
+ try {
500
+ this.NodeFs.unlinkSync(dbPath);
501
+ //file removed
502
+ return Promise.resolve();
503
+ }
504
+ catch (err) {
505
+ return Promise.reject(err);
506
+ }
507
+ }
508
+ async isTable(table) {
509
+ return new Promise((resolve, reject) => {
510
+ if (this.db == null) {
511
+ reject(`isTable: this.db is null`);
512
+ }
513
+ try {
514
+ let ret = false;
515
+ const SELECT_TABLES = "SELECT name FROM sqlite_master " + "WHERE TYPE='table';";
516
+ this.db.all(SELECT_TABLES, (err, rows) => {
517
+ if (err) {
518
+ reject(`isTable: ${err.message}`);
519
+ }
520
+ else {
521
+ let arTables = [];
522
+ for (let i = 0; i < rows.length; i++) {
523
+ arTables = [...arTables, rows[i].name];
524
+ if (i === rows.length - 1) {
525
+ if (arTables.includes(table))
526
+ ret = true;
527
+ resolve(ret);
528
+ }
529
+ }
530
+ }
531
+ });
532
+ }
533
+ catch (err) {
534
+ return Promise.reject(err);
535
+ }
536
+ });
537
+ }
538
+ async tables() {
539
+ return new Promise((resolve, reject) => {
540
+ try {
541
+ const SELECT_TABLES = "SELECT name FROM sqlite_master " +
542
+ "WHERE TYPE='table' ORDER BY name;";
543
+ this.db.all(SELECT_TABLES, (err, rows) => {
544
+ if (err) {
545
+ reject(`tables: ${err.message}`);
546
+ }
547
+ else {
548
+ let arTables = [];
549
+ for (let i = 0; i < rows.length; i++) {
550
+ if (rows[i].name != "sqlite_sequence") {
551
+ arTables = [...arTables, rows[i].name];
552
+ }
553
+ if (i === rows.length - 1) {
554
+ resolve(arTables);
555
+ }
556
+ }
557
+ }
558
+ });
559
+ }
560
+ catch (err) {
561
+ return Promise.reject(err);
562
+ }
563
+ });
564
+ }
565
+ async deleteTable(table) {
566
+ if (this.db == null) {
567
+ return Promise.reject(`this.db is null in deleteTable`);
568
+ }
569
+ try {
570
+ const ret = await this.isTable(table);
571
+ if (ret) {
572
+ const DROP_STMT = `DROP TABLE IF EXISTS ${table};`;
573
+ return this.db.exec(DROP_STMT, (err) => {
574
+ if (err) {
575
+ return Promise.reject(`deleteTable: ${err.message}`);
576
+ }
577
+ else {
578
+ return Promise.resolve();
579
+ }
580
+ });
581
+ }
582
+ else {
583
+ return Promise.resolve();
584
+ }
585
+ }
586
+ catch (err) {
587
+ return Promise.reject(err);
588
+ }
589
+ }
590
+ async importJson(values) {
591
+ let changes = 0;
592
+ for (const val of values) {
593
+ try {
594
+ const data = new Data_1$1.Data();
595
+ data.name = val.key;
596
+ data.value = val.value;
597
+ await this.set(data);
598
+ changes += 1;
599
+ }
600
+ catch (err) {
601
+ return Promise.reject(err);
602
+ }
603
+ }
604
+ return Promise.resolve(changes);
605
+ }
606
+ async exportJson() {
607
+ const retJson = {};
608
+ try {
609
+ const prevTableName = this.tableName;
610
+ retJson.database = this.dbName.slice(0, -9);
611
+ retJson.encrypted = false;
612
+ retJson.tables = [];
613
+ // get the table list
614
+ const tables = await this.tables();
615
+ for (const table of tables) {
616
+ this.tableName = table;
617
+ const retTable = {};
618
+ retTable.name = table;
619
+ retTable.values = [];
620
+ const dataTable = await this.keysvalues();
621
+ for (const tdata of dataTable) {
622
+ const retData = {};
623
+ retData.key = tdata.name;
624
+ retData.value = tdata.value;
625
+ retTable.values = [...retTable.values, retData];
626
+ }
627
+ retJson.tables = [...retJson.tables, retTable];
628
+ }
629
+ this.tableName = prevTableName;
630
+ return Promise.resolve(retJson);
631
+ }
632
+ catch (err) {
633
+ return Promise.reject(err);
634
+ }
635
+ }
636
+ }
637
+ StorageDatabaseHelper$1.StorageDatabaseHelper = StorageDatabaseHelper;
638
+
639
+ var jsonUtils = {};
640
+
641
+ (function (exports) {
642
+ Object.defineProperty(exports, "__esModule", { value: true });
643
+ exports.isValue = exports.isTable = exports.isJsonStore = void 0;
644
+ /**
645
+ * IsJsonSQLite
646
+ * @param obj
647
+ */
648
+ const isJsonStore = (obj) => {
649
+ const keyFirstLevel = ["database", "encrypted", "tables"];
650
+ if (obj == null ||
651
+ (Object.keys(obj).length === 0 && obj.constructor === Object))
652
+ return false;
653
+ for (const key of Object.keys(obj)) {
654
+ if (keyFirstLevel.indexOf(key) === -1)
655
+ return false;
656
+ if (key === "database" && typeof obj[key] != "string")
657
+ return false;
658
+ if (key === "encrypted" && typeof obj[key] != "boolean")
659
+ return false;
660
+ if (key === "tables" && typeof obj[key] != "object")
661
+ return false;
662
+ if (key === "tables") {
663
+ for (const oKey of obj[key]) {
664
+ const retTable = (0, exports.isTable)(oKey);
665
+ if (!retTable)
666
+ return false;
667
+ }
668
+ }
669
+ }
670
+ return true;
671
+ };
672
+ exports.isJsonStore = isJsonStore;
673
+ /**
674
+ * IsTable
675
+ * @param obj
676
+ */
677
+ const isTable = (obj) => {
678
+ const keyTableLevel = ["name", "values"];
679
+ if (obj == null ||
680
+ (Object.keys(obj).length === 0 && obj.constructor === Object)) {
681
+ return false;
682
+ }
683
+ for (const key of Object.keys(obj)) {
684
+ if (keyTableLevel.indexOf(key) === -1)
685
+ return false;
686
+ if (key === "name" && typeof obj[key] != "string")
687
+ return false;
688
+ if (key === "values" && typeof obj[key] != "object")
689
+ return false;
690
+ if (key === "values") {
691
+ for (const oKey of obj[key]) {
692
+ const retValue = (0, exports.isValue)(oKey);
693
+ if (!retValue)
694
+ return false;
695
+ }
696
+ }
697
+ }
698
+ return true;
699
+ };
700
+ exports.isTable = isTable;
701
+ /**
702
+ * IsValue
703
+ * @param obj
704
+ */
705
+ const isValue = (obj) => {
706
+ const keyTableLevel = ["key", "value"];
707
+ if (obj == null ||
708
+ (Object.keys(obj).length === 0 && obj.constructor === Object)) {
709
+ return false;
710
+ }
711
+ for (const key of Object.keys(obj)) {
712
+ if (keyTableLevel.indexOf(key) === -1)
713
+ return false;
714
+ if (key === "key" && typeof obj[key] != "string")
715
+ return false;
716
+ if (key === "value" && typeof obj[key] != "string")
717
+ return false;
718
+ }
719
+ return true;
720
+ };
721
+ exports.isValue = isValue;
722
+
723
+ } (jsonUtils));
724
+
725
+ Object.defineProperty(src, "__esModule", { value: true });
726
+ exports.CapacitorDataStorageSqlite = src.CapacitorDataStorageSqlite = void 0;
727
+ const Data_1 = Data$1;
728
+ const StorageDatabaseHelper_1 = StorageDatabaseHelper$1;
729
+ const json_utils_1 = jsonUtils;
730
+ class CapacitorDataStorageSqlite {
731
+ constructor() {
732
+ this.mDb = new StorageDatabaseHelper_1.StorageDatabaseHelper();
733
+ }
734
+ async echo(options) {
735
+ const ret = {};
736
+ ret.value = options.value ? options.value : "";
737
+ return Promise.resolve(ret);
738
+ }
739
+ async openStore(options) {
740
+ const dbName = options.database
741
+ ? `${options.database}SQLite.db`
742
+ : "storageSQLite.db";
743
+ const tableName = options.table ? options.table : "storage_store";
744
+ try {
745
+ await this.mDb.openStore(dbName, tableName);
746
+ return Promise.resolve();
747
+ }
748
+ catch (err) {
749
+ return Promise.reject(err);
750
+ }
751
+ }
752
+ async closeStore(options) {
753
+ const dbName = options.database
754
+ ? `${options.database}SQLite.db`
755
+ : "storageSQLite.db";
756
+ if (this.mDb.dbName === dbName && this.mDb.isOpen) {
757
+ try {
758
+ await this.mDb.closeStore(dbName);
759
+ return Promise.resolve();
760
+ }
761
+ catch (err) {
762
+ return Promise.reject(err);
763
+ }
764
+ }
765
+ else {
766
+ return Promise.resolve();
767
+ }
768
+ }
769
+ async isStoreOpen(options) {
770
+ const dbName = options.database
771
+ ? `${options.database}SQLite.db`
772
+ : "storageSQLite.db";
773
+ let ret = false;
774
+ if (this.mDb.dbName === dbName && this.mDb.isOpen) {
775
+ ret = true;
776
+ }
777
+ return Promise.resolve({ result: ret });
778
+ }
779
+ async isStoreExists(options) {
780
+ const dbName = options.database
781
+ ? `${options.database}SQLite.db`
782
+ : "storageSQLite.db";
783
+ let ret = false;
784
+ try {
785
+ ret = await this.mDb.isStoreExists(dbName);
786
+ return Promise.resolve({ result: ret });
787
+ }
788
+ catch (err) {
789
+ return Promise.reject(err);
790
+ }
791
+ }
792
+ async setTable(options) {
793
+ const tableName = options.table;
794
+ if (tableName == null) {
795
+ return Promise.reject("Must provide a table name");
796
+ }
797
+ try {
798
+ await this.mDb.setTable(tableName);
799
+ return Promise.resolve();
800
+ }
801
+ catch (err) {
802
+ return Promise.reject("Must open a store first");
803
+ }
804
+ }
805
+ async set(options) {
806
+ const key = options.key;
807
+ if (key == null) {
808
+ return Promise.reject("Must provide key");
809
+ }
810
+ const value = options.value;
811
+ if (value == null) {
812
+ return Promise.reject("Must provide value");
813
+ }
814
+ const data = new Data_1.Data();
815
+ data.name = key;
816
+ data.value = value;
817
+ try {
818
+ await this.mDb.set(data);
819
+ return Promise.resolve();
820
+ }
821
+ catch (err) {
822
+ return Promise.reject(err);
823
+ }
824
+ }
825
+ async get(options) {
826
+ let ret;
827
+ const key = options.key;
828
+ if (key == null) {
829
+ return Promise.reject("Must provide key");
830
+ }
831
+ try {
832
+ const data = await this.mDb.get(key);
833
+ ret = (data === null || data === void 0 ? void 0 : data.id) != null ? data.value : "";
834
+ return Promise.resolve({ value: ret });
835
+ }
836
+ catch (err) {
837
+ return Promise.reject(err);
838
+ }
839
+ }
840
+ async remove(options) {
841
+ try {
842
+ const key = options.key;
843
+ if (key == null) {
844
+ return Promise.reject("Must provide key");
845
+ }
846
+ await this.mDb.remove(key);
847
+ return Promise.resolve();
848
+ }
849
+ catch (err) {
850
+ return Promise.reject(err);
851
+ }
852
+ }
853
+ async clear() {
854
+ try {
855
+ await this.mDb.clear();
856
+ return Promise.resolve();
857
+ }
858
+ catch (err) {
859
+ return Promise.reject(err);
860
+ }
861
+ }
862
+ async iskey(options) {
863
+ let ret;
864
+ const key = options.key;
865
+ if (key == null) {
866
+ return Promise.reject("Must provide key");
867
+ }
868
+ try {
869
+ ret = await this.mDb.iskey(key);
870
+ return Promise.resolve({ result: ret });
871
+ }
872
+ catch (err) {
873
+ return Promise.reject(err);
874
+ }
875
+ }
876
+ async keys() {
877
+ try {
878
+ const ret = await this.mDb.keys();
879
+ return Promise.resolve({ keys: ret });
880
+ }
881
+ catch (err) {
882
+ return Promise.reject(err);
883
+ }
884
+ }
885
+ async values() {
886
+ try {
887
+ const ret = await this.mDb.values();
888
+ return Promise.resolve({ values: ret });
889
+ }
890
+ catch (err) {
891
+ return Promise.reject(err);
892
+ }
893
+ }
894
+ async filtervalues(options) {
895
+ const filter = options.filter;
896
+ if (filter == null || typeof filter != "string") {
897
+ return Promise.reject("Must Must provide filter as string");
898
+ }
899
+ try {
900
+ const ret = await this.mDb.filtervalues(filter);
901
+ return Promise.resolve({ values: ret });
902
+ }
903
+ catch (err) {
904
+ return Promise.reject(err);
905
+ }
906
+ }
907
+ async keysvalues() {
908
+ const ret = [];
909
+ try {
910
+ const results = await this.mDb.keysvalues();
911
+ for (const result of results) {
912
+ const res = { key: result.name, value: result.value };
913
+ ret.push(res);
914
+ }
915
+ return Promise.resolve({ keysvalues: ret });
916
+ }
917
+ catch (err) {
918
+ return Promise.reject(err);
919
+ }
920
+ }
921
+ async deleteStore(options) {
922
+ let dbName = options.database;
923
+ if (dbName == null) {
924
+ return Promise.reject("Must provide a Database Name");
925
+ }
926
+ dbName = `${options.database}SQLite.db`;
927
+ try {
928
+ await this.mDb.deleteStore(dbName);
929
+ return Promise.resolve();
930
+ }
931
+ catch (err) {
932
+ return Promise.reject(err);
933
+ }
934
+ }
935
+ async isTable(options) {
936
+ const table = options.table;
937
+ if (table == null) {
938
+ return Promise.reject("Must provide a Table Name");
939
+ }
940
+ try {
941
+ const ret = await this.mDb.isTable(table);
942
+ return Promise.resolve({ result: ret });
943
+ }
944
+ catch (err) {
945
+ return Promise.reject(err);
946
+ }
947
+ }
948
+ async tables() {
949
+ try {
950
+ const ret = await this.mDb.tables();
951
+ return Promise.resolve({ tables: ret });
952
+ }
953
+ catch (err) {
954
+ return Promise.reject(err);
955
+ }
956
+ }
957
+ async deleteTable(options) {
958
+ const table = options.table;
959
+ if (table == null) {
960
+ return Promise.reject("Must provide a Table Name");
961
+ }
962
+ try {
963
+ await this.mDb.deleteTable(table);
964
+ return Promise.resolve();
965
+ }
966
+ catch (err) {
967
+ return Promise.reject(err);
968
+ }
969
+ }
970
+ async importFromJson(options) {
971
+ const keys = Object.keys(options);
972
+ if (!keys.includes("jsonstring")) {
973
+ return Promise.reject("Must provide a json object");
974
+ }
975
+ let totalChanges = 0;
976
+ if (options === null || options === void 0 ? void 0 : options.jsonstring) {
977
+ const jsonStrObj = options.jsonstring;
978
+ const jsonObj = JSON.parse(jsonStrObj);
979
+ const isValid = (0, json_utils_1.isJsonStore)(jsonObj);
980
+ if (!isValid) {
981
+ return Promise.reject("Must provide a valid JsonSQLite Object");
982
+ }
983
+ const vJsonObj = jsonObj;
984
+ const dbName = vJsonObj.database
985
+ ? `${vJsonObj.database}SQLite.db`
986
+ : "storageSQLite.db";
987
+ for (const table of vJsonObj.tables) {
988
+ const tableName = table.name ? table.name : "storage_store";
989
+ try {
990
+ // Open the database
991
+ await this.mDb.openStore(dbName, tableName);
992
+ // Import the JsonSQLite Object
993
+ if (table === null || table === void 0 ? void 0 : table.values) {
994
+ const changes = await this.mDb.importJson(table.values);
995
+ totalChanges += changes;
996
+ }
997
+ }
998
+ catch (err) {
999
+ return Promise.reject(`ImportFromJson: ${err}`);
1000
+ }
1001
+ finally {
1002
+ await this.mDb.closeStore(dbName);
1003
+ }
1004
+ }
1005
+ return Promise.resolve({ changes: totalChanges });
1006
+ }
1007
+ else {
1008
+ return Promise.reject("Must provide a json object");
1009
+ }
1010
+ }
1011
+ async isJsonValid(options) {
1012
+ const keys = Object.keys(options);
1013
+ if (!keys.includes("jsonstring")) {
1014
+ return Promise.reject("Must provide a json object");
1015
+ }
1016
+ if (options === null || options === void 0 ? void 0 : options.jsonstring) {
1017
+ const jsonStrObj = options.jsonstring;
1018
+ const jsonObj = JSON.parse(jsonStrObj);
1019
+ const isValid = (0, json_utils_1.isJsonStore)(jsonObj);
1020
+ if (!isValid) {
1021
+ return Promise.reject("Stringify Json Object not Valid");
1022
+ }
1023
+ else {
1024
+ return Promise.resolve({ result: true });
1025
+ }
1026
+ }
1027
+ else {
1028
+ return Promise.reject("Must provide in options a stringify Json Object");
1029
+ }
1030
+ }
1031
+ async exportToJson() {
1032
+ try {
1033
+ const ret = await this.mDb.exportJson();
1034
+ return Promise.resolve({ export: ret });
1035
+ }
1036
+ catch (err) {
1037
+ return Promise.reject(`exportToJson: ${err.message}`);
1038
+ }
1039
+ }
1040
+ }
1041
+ exports.CapacitorDataStorageSqlite = src.CapacitorDataStorageSqlite = CapacitorDataStorageSqlite;
1042
+
1043
+ exports.default = src;
1044
+ //# sourceMappingURL=plugin.js.map