@capgo/capacitor-data-storage-sqlite 6.0.59 → 7.1.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.
- package/CapgoCapacitorDataStorageSqlite.podspec +2 -2
- package/Package.swift +30 -0
- package/README.md +724 -0
- package/android/build.gradle +11 -11
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlite.java +290 -320
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlitePlugin.java +373 -388
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/RetHandler.java +97 -97
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Data.java +3 -3
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Global.java +2 -2
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonStore.java +108 -110
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonTable.java +78 -80
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonValue.java +62 -64
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/StorageDatabaseHelper.java +557 -624
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/UtilsSQLCipher.java +103 -144
- package/dist/docs.json +0 -64
- package/dist/esm/definitions.d.ts +0 -19
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +5 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web-utils/StorageDatabaseHelper.d.ts +2 -2
- package/dist/esm/web-utils/StorageDatabaseHelper.js +8 -8
- package/dist/esm/web-utils/StorageDatabaseHelper.js.map +1 -1
- package/dist/esm/web-utils/json-utils.js +15 -18
- package/dist/esm/web-utils/json-utils.js.map +1 -1
- package/dist/esm/web.d.ts +2 -3
- package/dist/esm/web.js +37 -44
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +56 -67
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +56 -67
- package/dist/plugin.js.map +1 -1
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlitePlugin.swift +27 -10
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/StorageDatabaseHelper.swift +1 -1
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsFile.swift +1 -1
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsSQLCipher.swift +3 -3
- package/ios/Tests/CapgoCapacitorDataStorageSqlitePluginTests/CapacitorDataStorageSqlitePluginTests.swift +13 -0
- package/package.json +34 -38
- package/electron/dist/plugin.js +0 -1044
- package/electron/dist/plugin.js.map +0 -1
- package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.h +0 -10
- package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.m +0 -29
- package/ios/Plugin/Info.plist +0 -24
- package/readme.md +0 -210
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlite.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Data.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Global.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ImportExportJson/JsonStore.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ReturnHandler.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/Blob.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsBinding.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsEncryption.swift +0 -0
package/dist/plugin.cjs.js
CHANGED
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
var core = require('@capacitor/core');
|
|
4
4
|
var localForage = require('localforage');
|
|
5
5
|
|
|
6
|
-
const CapgoCapacitorDataStorageSqlite = core.registerPlugin(
|
|
6
|
+
const CapgoCapacitorDataStorageSqlite = core.registerPlugin('CapgoCapacitorDataStorageSqlite', {
|
|
7
7
|
web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),
|
|
8
|
-
electron: () => window.CapacitorCustomPlatform.plugins
|
|
9
|
-
.CapacitorDataStorageSqlite,
|
|
8
|
+
electron: () => window.CapacitorCustomPlatform.plugins.CapacitorDataStorageSqlite,
|
|
10
9
|
});
|
|
11
10
|
|
|
12
11
|
class Data {
|
|
@@ -24,9 +23,9 @@ class StorageDatabaseHelper {
|
|
|
24
23
|
this._tableName = tableName;
|
|
25
24
|
}
|
|
26
25
|
else {
|
|
27
|
-
this._dbName =
|
|
28
|
-
this._tableName =
|
|
29
|
-
throw new Error(
|
|
26
|
+
this._dbName = '';
|
|
27
|
+
this._tableName = '';
|
|
28
|
+
throw new Error('openStore return false');
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
openStore(dbName, tableName) {
|
|
@@ -54,7 +53,7 @@ class StorageDatabaseHelper {
|
|
|
54
53
|
return Promise.resolve();
|
|
55
54
|
}
|
|
56
55
|
else {
|
|
57
|
-
return Promise.reject(new Error(
|
|
56
|
+
return Promise.reject(new Error('openStore return false'));
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
async isTable(table) {
|
|
@@ -86,7 +85,7 @@ class StorageDatabaseHelper {
|
|
|
86
85
|
const retList = db.objectStoreNames;
|
|
87
86
|
const values = Object.values(retList);
|
|
88
87
|
for (const val of values) {
|
|
89
|
-
if (val.substring(0, 12) !=
|
|
88
|
+
if (val.substring(0, 12) != 'local-forage') {
|
|
90
89
|
result = [...result, val];
|
|
91
90
|
}
|
|
92
91
|
}
|
|
@@ -229,7 +228,7 @@ class StorageDatabaseHelper {
|
|
|
229
228
|
retTable.values = [...retTable.values, retData];
|
|
230
229
|
}
|
|
231
230
|
else {
|
|
232
|
-
return Promise.reject(
|
|
231
|
+
return Promise.reject('Data.name is undefined');
|
|
233
232
|
}
|
|
234
233
|
}
|
|
235
234
|
retJson.tables = [...retJson.tables, retTable];
|
|
@@ -262,20 +261,19 @@ class StorageDatabaseHelper {
|
|
|
262
261
|
* @param obj
|
|
263
262
|
*/
|
|
264
263
|
const isJsonStore = (obj) => {
|
|
265
|
-
const keyFirstLevel = [
|
|
266
|
-
if (obj == null ||
|
|
267
|
-
(Object.keys(obj).length === 0 && obj.constructor === Object))
|
|
264
|
+
const keyFirstLevel = ['database', 'encrypted', 'tables'];
|
|
265
|
+
if (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object))
|
|
268
266
|
return false;
|
|
269
267
|
for (const key of Object.keys(obj)) {
|
|
270
268
|
if (keyFirstLevel.indexOf(key) === -1)
|
|
271
269
|
return false;
|
|
272
|
-
if (key ===
|
|
270
|
+
if (key === 'database' && typeof obj[key] != 'string')
|
|
273
271
|
return false;
|
|
274
|
-
if (key ===
|
|
272
|
+
if (key === 'encrypted' && typeof obj[key] != 'boolean')
|
|
275
273
|
return false;
|
|
276
|
-
if (key ===
|
|
274
|
+
if (key === 'tables' && typeof obj[key] != 'object')
|
|
277
275
|
return false;
|
|
278
|
-
if (key ===
|
|
276
|
+
if (key === 'tables') {
|
|
279
277
|
for (const oKey of obj[key]) {
|
|
280
278
|
const retTable = isTable(oKey);
|
|
281
279
|
if (!retTable)
|
|
@@ -290,19 +288,18 @@ const isJsonStore = (obj) => {
|
|
|
290
288
|
* @param obj
|
|
291
289
|
*/
|
|
292
290
|
const isTable = (obj) => {
|
|
293
|
-
const keyTableLevel = [
|
|
294
|
-
if (obj == null ||
|
|
295
|
-
(Object.keys(obj).length === 0 && obj.constructor === Object)) {
|
|
291
|
+
const keyTableLevel = ['name', 'values'];
|
|
292
|
+
if (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object)) {
|
|
296
293
|
return false;
|
|
297
294
|
}
|
|
298
295
|
for (const key of Object.keys(obj)) {
|
|
299
296
|
if (keyTableLevel.indexOf(key) === -1)
|
|
300
297
|
return false;
|
|
301
|
-
if (key ===
|
|
298
|
+
if (key === 'name' && typeof obj[key] != 'string')
|
|
302
299
|
return false;
|
|
303
|
-
if (key ===
|
|
300
|
+
if (key === 'values' && typeof obj[key] != 'object')
|
|
304
301
|
return false;
|
|
305
|
-
if (key ===
|
|
302
|
+
if (key === 'values') {
|
|
306
303
|
for (const oKey of obj[key]) {
|
|
307
304
|
const retValue = isValue(oKey);
|
|
308
305
|
if (!retValue)
|
|
@@ -317,31 +314,25 @@ const isTable = (obj) => {
|
|
|
317
314
|
* @param obj
|
|
318
315
|
*/
|
|
319
316
|
const isValue = (obj) => {
|
|
320
|
-
const keyTableLevel = [
|
|
321
|
-
if (obj == null ||
|
|
322
|
-
(Object.keys(obj).length === 0 && obj.constructor === Object)) {
|
|
317
|
+
const keyTableLevel = ['key', 'value'];
|
|
318
|
+
if (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object)) {
|
|
323
319
|
return false;
|
|
324
320
|
}
|
|
325
321
|
for (const key of Object.keys(obj)) {
|
|
326
322
|
if (keyTableLevel.indexOf(key) === -1)
|
|
327
323
|
return false;
|
|
328
|
-
if (key ===
|
|
324
|
+
if (key === 'key' && typeof obj[key] != 'string')
|
|
329
325
|
return false;
|
|
330
|
-
if (key ===
|
|
326
|
+
if (key === 'value' && typeof obj[key] != 'string')
|
|
331
327
|
return false;
|
|
332
328
|
}
|
|
333
329
|
return true;
|
|
334
330
|
};
|
|
335
331
|
|
|
336
332
|
class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
337
|
-
async echo(options) {
|
|
338
|
-
const ret = {};
|
|
339
|
-
ret.value = options.value ? options.value : "";
|
|
340
|
-
return ret;
|
|
341
|
-
}
|
|
342
333
|
async openStore(options) {
|
|
343
|
-
const dbName = options.database ? `${options.database}IDB` :
|
|
344
|
-
const tableName = options.table ? options.table :
|
|
334
|
+
const dbName = options.database ? `${options.database}IDB` : 'storageIDB';
|
|
335
|
+
const tableName = options.table ? options.table : 'storage_store';
|
|
345
336
|
try {
|
|
346
337
|
this.mDb = new StorageDatabaseHelper(dbName, tableName);
|
|
347
338
|
return Promise.resolve();
|
|
@@ -362,7 +353,7 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
362
353
|
async setTable(options) {
|
|
363
354
|
const tableName = options.table;
|
|
364
355
|
if (tableName == null) {
|
|
365
|
-
return Promise.reject(
|
|
356
|
+
return Promise.reject('SetTable: Must provide a table name');
|
|
366
357
|
}
|
|
367
358
|
if (this.mDb) {
|
|
368
359
|
try {
|
|
@@ -374,17 +365,17 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
374
365
|
}
|
|
375
366
|
}
|
|
376
367
|
else {
|
|
377
|
-
return Promise.reject(
|
|
368
|
+
return Promise.reject('SetTable: Must open a store first');
|
|
378
369
|
}
|
|
379
370
|
}
|
|
380
371
|
async set(options) {
|
|
381
372
|
const key = options.key;
|
|
382
|
-
if (key == null || typeof key !=
|
|
383
|
-
return Promise.reject(
|
|
373
|
+
if (key == null || typeof key != 'string') {
|
|
374
|
+
return Promise.reject('Set: Must provide key as string');
|
|
384
375
|
}
|
|
385
376
|
const value = options.value ? options.value : null;
|
|
386
|
-
if (value == null || typeof value !=
|
|
387
|
-
return Promise.reject(
|
|
377
|
+
if (value == null || typeof value != 'string') {
|
|
378
|
+
return Promise.reject('Set: Must provide value as string');
|
|
388
379
|
}
|
|
389
380
|
const data = new Data();
|
|
390
381
|
data.name = key;
|
|
@@ -399,8 +390,8 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
399
390
|
}
|
|
400
391
|
async get(options) {
|
|
401
392
|
const key = options.key;
|
|
402
|
-
if (key == null || typeof key !=
|
|
403
|
-
return Promise.reject(
|
|
393
|
+
if (key == null || typeof key != 'string') {
|
|
394
|
+
return Promise.reject('Get: Must provide key as string');
|
|
404
395
|
}
|
|
405
396
|
try {
|
|
406
397
|
const data = await this.mDb.get(key);
|
|
@@ -408,7 +399,7 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
408
399
|
return Promise.resolve({ value: data.value });
|
|
409
400
|
}
|
|
410
401
|
else {
|
|
411
|
-
return Promise.resolve({ value:
|
|
402
|
+
return Promise.resolve({ value: '' });
|
|
412
403
|
}
|
|
413
404
|
}
|
|
414
405
|
catch (err) {
|
|
@@ -417,8 +408,8 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
417
408
|
}
|
|
418
409
|
async remove(options) {
|
|
419
410
|
const key = options.key;
|
|
420
|
-
if (key == null || typeof key !=
|
|
421
|
-
return Promise.reject(
|
|
411
|
+
if (key == null || typeof key != 'string') {
|
|
412
|
+
return Promise.reject('Remove: Must provide key as string');
|
|
422
413
|
}
|
|
423
414
|
try {
|
|
424
415
|
await this.mDb.remove(key);
|
|
@@ -439,8 +430,8 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
439
430
|
}
|
|
440
431
|
async iskey(options) {
|
|
441
432
|
const key = options.key;
|
|
442
|
-
if (key == null || typeof key !=
|
|
443
|
-
return Promise.reject(
|
|
433
|
+
if (key == null || typeof key != 'string') {
|
|
434
|
+
return Promise.reject('Iskey: Must provide key as string');
|
|
444
435
|
}
|
|
445
436
|
try {
|
|
446
437
|
const ret = await this.mDb.iskey(key);
|
|
@@ -470,18 +461,18 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
470
461
|
}
|
|
471
462
|
async filtervalues(options) {
|
|
472
463
|
const filter = options.filter;
|
|
473
|
-
if (filter == null || typeof filter !=
|
|
474
|
-
return Promise.reject(
|
|
464
|
+
if (filter == null || typeof filter != 'string') {
|
|
465
|
+
return Promise.reject('Filtervalues: Must provide filter as string');
|
|
475
466
|
}
|
|
476
467
|
let regFilter;
|
|
477
|
-
if (filter.startsWith(
|
|
478
|
-
regFilter = new RegExp(
|
|
468
|
+
if (filter.startsWith('%')) {
|
|
469
|
+
regFilter = new RegExp('^' + filter.substring(1), 'i');
|
|
479
470
|
}
|
|
480
|
-
else if (filter.endsWith(
|
|
481
|
-
regFilter = new RegExp(filter.slice(0, -1) +
|
|
471
|
+
else if (filter.endsWith('%')) {
|
|
472
|
+
regFilter = new RegExp(filter.slice(0, -1) + '$', 'i');
|
|
482
473
|
}
|
|
483
474
|
else {
|
|
484
|
-
regFilter = new RegExp(filter,
|
|
475
|
+
regFilter = new RegExp(filter, 'i');
|
|
485
476
|
}
|
|
486
477
|
try {
|
|
487
478
|
const ret = [];
|
|
@@ -527,7 +518,7 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
527
518
|
async isTable(options) {
|
|
528
519
|
const table = options.table;
|
|
529
520
|
if (table == null) {
|
|
530
|
-
return Promise.reject(
|
|
521
|
+
return Promise.reject('Must provide a Table Name');
|
|
531
522
|
}
|
|
532
523
|
try {
|
|
533
524
|
const ret = await this.mDb.isTable(table);
|
|
@@ -551,8 +542,8 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
551
542
|
}
|
|
552
543
|
async importFromJson(options) {
|
|
553
544
|
const keys = Object.keys(options);
|
|
554
|
-
if (!keys.includes(
|
|
555
|
-
return Promise.reject(
|
|
545
|
+
if (!keys.includes('jsonstring')) {
|
|
546
|
+
return Promise.reject('Must provide a json object');
|
|
556
547
|
}
|
|
557
548
|
let totalChanges = 0;
|
|
558
549
|
if (options === null || options === void 0 ? void 0 : options.jsonstring) {
|
|
@@ -560,14 +551,12 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
560
551
|
const jsonObj = JSON.parse(jsonStrObj);
|
|
561
552
|
const isValid = isJsonStore(jsonObj);
|
|
562
553
|
if (!isValid) {
|
|
563
|
-
return Promise.reject(
|
|
554
|
+
return Promise.reject('Must provide a valid JsonSQLite Object');
|
|
564
555
|
}
|
|
565
556
|
const vJsonObj = jsonObj;
|
|
566
|
-
const dbName = vJsonObj.database
|
|
567
|
-
? `${vJsonObj.database}IDB`
|
|
568
|
-
: "storageIDB";
|
|
557
|
+
const dbName = vJsonObj.database ? `${vJsonObj.database}IDB` : 'storageIDB';
|
|
569
558
|
for (const table of vJsonObj.tables) {
|
|
570
|
-
const tableName = table.name ? table.name :
|
|
559
|
+
const tableName = table.name ? table.name : 'storage_store';
|
|
571
560
|
try {
|
|
572
561
|
this.mDb = new StorageDatabaseHelper(dbName, tableName);
|
|
573
562
|
// Open the database
|
|
@@ -590,27 +579,27 @@ class CapgoCapacitorDataStorageSqliteWeb extends core.WebPlugin {
|
|
|
590
579
|
return Promise.resolve({ changes: totalChanges });
|
|
591
580
|
}
|
|
592
581
|
else {
|
|
593
|
-
return Promise.reject(
|
|
582
|
+
return Promise.reject('Must provide a json object');
|
|
594
583
|
}
|
|
595
584
|
}
|
|
596
585
|
async isJsonValid(options) {
|
|
597
586
|
const keys = Object.keys(options);
|
|
598
|
-
if (!keys.includes(
|
|
599
|
-
return Promise.reject(
|
|
587
|
+
if (!keys.includes('jsonstring')) {
|
|
588
|
+
return Promise.reject('Must provide a json object');
|
|
600
589
|
}
|
|
601
590
|
if (options === null || options === void 0 ? void 0 : options.jsonstring) {
|
|
602
591
|
const jsonStrObj = options.jsonstring;
|
|
603
592
|
const jsonObj = JSON.parse(jsonStrObj);
|
|
604
593
|
const isValid = isJsonStore(jsonObj);
|
|
605
594
|
if (!isValid) {
|
|
606
|
-
return Promise.reject(
|
|
595
|
+
return Promise.reject('Stringify Json Object not Valid');
|
|
607
596
|
}
|
|
608
597
|
else {
|
|
609
598
|
return Promise.resolve({ result: true });
|
|
610
599
|
}
|
|
611
600
|
}
|
|
612
601
|
else {
|
|
613
|
-
return Promise.reject(
|
|
602
|
+
return Promise.reject('Must provide in options a stringify Json Object');
|
|
614
603
|
}
|
|
615
604
|
}
|
|
616
605
|
async exportToJson() {
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web-utils/Data.js","esm/web-utils/StorageDatabaseHelper.js","esm/web-utils/json-utils.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from \"@capacitor/core\";\nconst CapgoCapacitorDataStorageSqlite = registerPlugin(\"CapgoCapacitorDataStorageSqlite\", {\n web: () => import(\"./web\").then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),\n electron: () => window.CapacitorCustomPlatform.plugins\n .CapacitorDataStorageSqlite,\n});\nexport * from \"./definitions\";\nexport { CapgoCapacitorDataStorageSqlite };\n//# sourceMappingURL=index.js.map","export class Data {\n}\n//# sourceMappingURL=Data.js.map","//import LocalForage from 'jeep-localforage';\nimport localForage from \"localforage\";\nimport { Data } from \"./Data\";\n//const DATABASE: string = \"storageIDB\";\n//const STORAGESTORE: string = \"storage_store\";\nexport class StorageDatabaseHelper {\n constructor(dbName, tableName) {\n this._db = null;\n const res = this.openStore(dbName, tableName);\n if (res) {\n this._dbName = dbName;\n this._tableName = tableName;\n }\n else {\n this._dbName = \"\";\n this._tableName = \"\";\n throw new Error(\"openStore return false\");\n }\n }\n openStore(dbName, tableName) {\n let ret = false;\n const config = this.setConfig(dbName, tableName);\n this._db = localForage.createInstance(config);\n if (this._db != null) {\n this._dbName = dbName;\n ret = true;\n }\n return ret;\n }\n setConfig(dbName, tableName) {\n const config = {\n name: dbName,\n storeName: tableName,\n driver: [localForage.INDEXEDDB, localForage.WEBSQL],\n version: 1,\n };\n return config;\n }\n async setTable(tableName) {\n const res = this.openStore(this._dbName, tableName);\n if (res) {\n return Promise.resolve();\n }\n else {\n return Promise.reject(new Error(\"openStore return false\"));\n }\n }\n async isTable(table) {\n if (this._db == null) {\n return Promise.reject(`isTable: this.db is null`);\n }\n try {\n let ret = false;\n const tables = await this.tables();\n if (tables.includes(table))\n ret = true;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async tables() {\n return new Promise((resolve, reject) => {\n // Let us open our database\n const DBOpenRequest = window.indexedDB.open(this._dbName);\n // these two event handlers act on the database being opened successfully, or not\n DBOpenRequest.onerror = () => {\n return reject(`Error loading database ${this._dbName}`);\n };\n DBOpenRequest.onsuccess = () => {\n let result = [];\n const db = DBOpenRequest.result;\n const retList = db.objectStoreNames;\n const values = Object.values(retList);\n for (const val of values) {\n if (val.substring(0, 12) != \"local-forage\") {\n result = [...result, val];\n }\n }\n return resolve(result);\n };\n });\n }\n async set(data) {\n try {\n await this._db.setItem(data.name, data.value);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async get(name) {\n try {\n const value = await this._db.getItem(name);\n const data = new Data();\n data.name = name;\n data.value = value;\n return Promise.resolve(data);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async remove(name) {\n return this._db\n .removeItem(name)\n .then(() => {\n return Promise.resolve();\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async clear() {\n return this._db\n .clear()\n .then(() => {\n return Promise.resolve();\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async keys() {\n return this._db\n .keys()\n .then((keys) => {\n return Promise.resolve(keys);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async values() {\n const values = [];\n return this._db\n .iterate((value) => {\n values.push(value);\n })\n .then(() => {\n return Promise.resolve(values);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async keysvalues() {\n const keysvalues = [];\n return this._db\n .iterate((value, key) => {\n const data = new Data();\n data.name = key;\n data.value = value;\n keysvalues.push(data);\n })\n .then(() => {\n return Promise.resolve(keysvalues);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async iskey(name) {\n return this.get(name)\n .then((data) => {\n if (data.value != null) {\n return Promise.resolve(true);\n }\n else {\n return Promise.resolve(false);\n }\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async importJson(values) {\n let changes = 0;\n for (const val of values) {\n try {\n const data = new Data();\n data.name = val.key;\n data.value = val.value;\n await this.set(data);\n changes += 1;\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(changes);\n }\n async exportJson() {\n const retJson = {};\n const prevTableName = this._tableName;\n try {\n retJson.database = this._dbName.slice(0, -3);\n retJson.encrypted = false;\n retJson.tables = [];\n // get the table list\n const tables = await this.tables();\n for (const table of tables) {\n this._tableName = table;\n const retTable = {};\n retTable.name = table;\n retTable.values = [];\n const res = this.openStore(this._dbName, this._tableName);\n if (res) {\n const dataTable = await this.keysvalues();\n for (const tdata of dataTable) {\n const retData = {};\n if (tdata.name != null) {\n retData.key = tdata.name;\n retData.value = tdata.value;\n retTable.values = [...retTable.values, retData];\n }\n else {\n return Promise.reject(\"Data.name is undefined\");\n }\n }\n retJson.tables = [...retJson.tables, retTable];\n }\n else {\n const msg = `Could not open ${this._dbName} ${this._tableName} `;\n this._tableName = prevTableName;\n return Promise.reject(msg);\n }\n }\n this._tableName = prevTableName;\n const res = this.openStore(this._dbName, this._tableName);\n if (res) {\n return Promise.resolve(retJson);\n }\n else {\n const msg = `Could not open ${this._dbName} ${this._tableName} `;\n return Promise.reject(msg);\n }\n }\n catch (err) {\n this._tableName = prevTableName;\n return Promise.reject(err);\n }\n }\n}\n//# sourceMappingURL=StorageDatabaseHelper.js.map","/**\n * IsJsonSQLite\n * @param obj\n */\nexport const isJsonStore = (obj) => {\n const keyFirstLevel = [\"database\", \"encrypted\", \"tables\"];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyFirstLevel.indexOf(key) === -1)\n return false;\n if (key === \"database\" && typeof obj[key] != \"string\")\n return false;\n if (key === \"encrypted\" && typeof obj[key] != \"boolean\")\n return false;\n if (key === \"tables\" && typeof obj[key] != \"object\")\n return false;\n if (key === \"tables\") {\n for (const oKey of obj[key]) {\n const retTable = isTable(oKey);\n if (!retTable)\n return false;\n }\n }\n }\n return true;\n};\n/**\n * IsTable\n * @param obj\n */\nexport const isTable = (obj) => {\n const keyTableLevel = [\"name\", \"values\"];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object)) {\n return false;\n }\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === \"name\" && typeof obj[key] != \"string\")\n return false;\n if (key === \"values\" && typeof obj[key] != \"object\")\n return false;\n if (key === \"values\") {\n for (const oKey of obj[key]) {\n const retValue = isValue(oKey);\n if (!retValue)\n return false;\n }\n }\n }\n return true;\n};\n/**\n * IsValue\n * @param obj\n */\nexport const isValue = (obj) => {\n const keyTableLevel = [\"key\", \"value\"];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object)) {\n return false;\n }\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === \"key\" && typeof obj[key] != \"string\")\n return false;\n if (key === \"value\" && typeof obj[key] != \"string\")\n return false;\n }\n return true;\n};\n//# sourceMappingURL=json-utils.js.map","import { WebPlugin } from \"@capacitor/core\";\nimport { Data } from \"./web-utils/Data\";\nimport { StorageDatabaseHelper } from \"./web-utils/StorageDatabaseHelper\";\nimport { isJsonStore } from \"./web-utils/json-utils\";\nexport class CapgoCapacitorDataStorageSqliteWeb extends WebPlugin {\n async echo(options) {\n const ret = {};\n ret.value = options.value ? options.value : \"\";\n return ret;\n }\n async openStore(options) {\n const dbName = options.database ? `${options.database}IDB` : \"storageIDB\";\n const tableName = options.table ? options.table : \"storage_store\";\n try {\n this.mDb = new StorageDatabaseHelper(dbName, tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`OpenStore: ${err.message}`);\n }\n }\n async closeStore(options) {\n throw new Error(`Method closeStore not implemented. ${options}`);\n }\n async isStoreOpen(options) {\n throw new Error(`Method isStoreOpen not implemented. ${options}`);\n }\n async isStoreExists(options) {\n throw new Error(`Method isStoreExists not implemented. ${options}`);\n }\n async setTable(options) {\n const tableName = options.table;\n if (tableName == null) {\n return Promise.reject(\"SetTable: Must provide a table name\");\n }\n if (this.mDb) {\n try {\n await this.mDb.setTable(tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`SetTable: ${err.message}`);\n }\n }\n else {\n return Promise.reject(\"SetTable: Must open a store first\");\n }\n }\n async set(options) {\n const key = options.key;\n if (key == null || typeof key != \"string\") {\n return Promise.reject(\"Set: Must provide key as string\");\n }\n const value = options.value ? options.value : null;\n if (value == null || typeof value != \"string\") {\n return Promise.reject(\"Set: Must provide value as string\");\n }\n const data = new Data();\n data.name = key;\n data.value = value;\n try {\n await this.mDb.set(data);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Set: ${err.message}`);\n }\n }\n async get(options) {\n const key = options.key;\n if (key == null || typeof key != \"string\") {\n return Promise.reject(\"Get: Must provide key as string\");\n }\n try {\n const data = await this.mDb.get(key);\n if ((data === null || data === void 0 ? void 0 : data.value) != null) {\n return Promise.resolve({ value: data.value });\n }\n else {\n return Promise.resolve({ value: \"\" });\n }\n }\n catch (err) {\n return Promise.reject(`Get: ${err.message}`);\n }\n }\n async remove(options) {\n const key = options.key;\n if (key == null || typeof key != \"string\") {\n return Promise.reject(\"Remove: Must provide key as string\");\n }\n try {\n await this.mDb.remove(key);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Remove: ${err.message}`);\n }\n }\n async clear() {\n try {\n await this.mDb.clear();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Clear: ${err.message}`);\n }\n }\n async iskey(options) {\n const key = options.key;\n if (key == null || typeof key != \"string\") {\n return Promise.reject(\"Iskey: Must provide key as string\");\n }\n try {\n const ret = await this.mDb.iskey(key);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(`Iskey: ${err.message}`);\n }\n }\n async keys() {\n try {\n const ret = await this.mDb.keys();\n return Promise.resolve({ keys: ret });\n }\n catch (err) {\n return Promise.reject(`Keys: ${err.message}`);\n }\n }\n async values() {\n try {\n const ret = await this.mDb.values();\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(`Values: ${err.message}`);\n }\n }\n async filtervalues(options) {\n const filter = options.filter;\n if (filter == null || typeof filter != \"string\") {\n return Promise.reject(\"Filtervalues: Must provide filter as string\");\n }\n let regFilter;\n if (filter.startsWith(\"%\")) {\n regFilter = new RegExp(\"^\" + filter.substring(1), \"i\");\n }\n else if (filter.endsWith(\"%\")) {\n regFilter = new RegExp(filter.slice(0, -1) + \"$\", \"i\");\n }\n else {\n regFilter = new RegExp(filter, \"i\");\n }\n try {\n const ret = [];\n const results = await this.mDb.keysvalues();\n for (const result of results) {\n if (result.name != null && regFilter.test(result.name)) {\n if (result.value != null) {\n ret.push(result.value);\n }\n else {\n return Promise.reject(`Filtervalues: result.value is null`);\n }\n }\n }\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(`Filtervalues: ${err.message}`);\n }\n }\n async keysvalues() {\n try {\n const ret = [];\n const results = await this.mDb.keysvalues();\n for (const result of results) {\n if (result.name != null && result.value != null) {\n const res = { key: result.name, value: result.value };\n ret.push(res);\n }\n else {\n return Promise.reject(`Keysvalues: result.name/value are null`);\n }\n }\n return Promise.resolve({ keysvalues: ret });\n }\n catch (err) {\n return Promise.reject(`Keysvalues: ${err.message}`);\n }\n }\n async deleteStore(options) {\n throw new Error(`Method deleteStore not implemented. ${options}`);\n }\n async isTable(options) {\n const table = options.table;\n if (table == null) {\n return Promise.reject(\"Must provide a Table Name\");\n }\n try {\n const ret = await this.mDb.isTable(table);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async tables() {\n try {\n const ret = await this.mDb.tables();\n return Promise.resolve({ tables: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async deleteTable(options) {\n throw new Error(`Method deleteTable not implemented. ${options}`);\n }\n async importFromJson(options) {\n const keys = Object.keys(options);\n if (!keys.includes(\"jsonstring\")) {\n return Promise.reject(\"Must provide a json object\");\n }\n let totalChanges = 0;\n if (options === null || options === void 0 ? void 0 : options.jsonstring) {\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = isJsonStore(jsonObj);\n if (!isValid) {\n return Promise.reject(\"Must provide a valid JsonSQLite Object\");\n }\n const vJsonObj = jsonObj;\n const dbName = vJsonObj.database\n ? `${vJsonObj.database}IDB`\n : \"storageIDB\";\n for (const table of vJsonObj.tables) {\n const tableName = table.name ? table.name : \"storage_store\";\n try {\n this.mDb = new StorageDatabaseHelper(dbName, tableName);\n // Open the database\n const bRet = this.mDb.openStore(dbName, tableName);\n if (bRet) {\n // Import the JsonSQLite Object\n if (table === null || table === void 0 ? void 0 : table.values) {\n const changes = await this.mDb.importJson(table.values);\n totalChanges += changes;\n }\n }\n else {\n return Promise.reject(`Open store: ${dbName} : table: ${tableName} failed`);\n }\n }\n catch (err) {\n return Promise.reject(`ImportFromJson: ${err.message}`);\n }\n }\n return Promise.resolve({ changes: totalChanges });\n }\n else {\n return Promise.reject(\"Must provide a json object\");\n }\n }\n async isJsonValid(options) {\n const keys = Object.keys(options);\n if (!keys.includes(\"jsonstring\")) {\n return Promise.reject(\"Must provide a json object\");\n }\n if (options === null || options === void 0 ? void 0 : options.jsonstring) {\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = isJsonStore(jsonObj);\n if (!isValid) {\n return Promise.reject(\"Stringify Json Object not Valid\");\n }\n else {\n return Promise.resolve({ result: true });\n }\n }\n else {\n return Promise.reject(\"Must provide in options a stringify Json Object\");\n }\n }\n async exportToJson() {\n try {\n const ret = await this.mDb.exportJson();\n return Promise.resolve({ export: ret });\n }\n catch (err) {\n return Promise.reject(`exportToJson: ${err}`);\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web-utils/Data.js","esm/web-utils/StorageDatabaseHelper.js","esm/web-utils/json-utils.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst CapgoCapacitorDataStorageSqlite = registerPlugin('CapgoCapacitorDataStorageSqlite', {\n web: () => import('./web').then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),\n electron: () => window.CapacitorCustomPlatform.plugins.CapacitorDataStorageSqlite,\n});\nexport * from './definitions';\nexport { CapgoCapacitorDataStorageSqlite };\n//# sourceMappingURL=index.js.map","export class Data {\n}\n//# sourceMappingURL=Data.js.map","//import LocalForage from 'jeep-localforage';\nimport localForage from 'localforage';\nimport { Data } from './Data';\n//const DATABASE: string = \"storageIDB\";\n//const STORAGESTORE: string = \"storage_store\";\nexport class StorageDatabaseHelper {\n constructor(dbName, tableName) {\n this._db = null;\n const res = this.openStore(dbName, tableName);\n if (res) {\n this._dbName = dbName;\n this._tableName = tableName;\n }\n else {\n this._dbName = '';\n this._tableName = '';\n throw new Error('openStore return false');\n }\n }\n openStore(dbName, tableName) {\n let ret = false;\n const config = this.setConfig(dbName, tableName);\n this._db = localForage.createInstance(config);\n if (this._db != null) {\n this._dbName = dbName;\n ret = true;\n }\n return ret;\n }\n setConfig(dbName, tableName) {\n const config = {\n name: dbName,\n storeName: tableName,\n driver: [localForage.INDEXEDDB, localForage.WEBSQL],\n version: 1,\n };\n return config;\n }\n async setTable(tableName) {\n const res = this.openStore(this._dbName, tableName);\n if (res) {\n return Promise.resolve();\n }\n else {\n return Promise.reject(new Error('openStore return false'));\n }\n }\n async isTable(table) {\n if (this._db == null) {\n return Promise.reject(`isTable: this.db is null`);\n }\n try {\n let ret = false;\n const tables = await this.tables();\n if (tables.includes(table))\n ret = true;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async tables() {\n return new Promise((resolve, reject) => {\n // Let us open our database\n const DBOpenRequest = window.indexedDB.open(this._dbName);\n // these two event handlers act on the database being opened successfully, or not\n DBOpenRequest.onerror = () => {\n return reject(`Error loading database ${this._dbName}`);\n };\n DBOpenRequest.onsuccess = () => {\n let result = [];\n const db = DBOpenRequest.result;\n const retList = db.objectStoreNames;\n const values = Object.values(retList);\n for (const val of values) {\n if (val.substring(0, 12) != 'local-forage') {\n result = [...result, val];\n }\n }\n return resolve(result);\n };\n });\n }\n async set(data) {\n try {\n await this._db.setItem(data.name, data.value);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async get(name) {\n try {\n const value = await this._db.getItem(name);\n const data = new Data();\n data.name = name;\n data.value = value;\n return Promise.resolve(data);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async remove(name) {\n return this._db\n .removeItem(name)\n .then(() => {\n return Promise.resolve();\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async clear() {\n return this._db\n .clear()\n .then(() => {\n return Promise.resolve();\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async keys() {\n return this._db\n .keys()\n .then((keys) => {\n return Promise.resolve(keys);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async values() {\n const values = [];\n return this._db\n .iterate((value) => {\n values.push(value);\n })\n .then(() => {\n return Promise.resolve(values);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async keysvalues() {\n const keysvalues = [];\n return this._db\n .iterate((value, key) => {\n const data = new Data();\n data.name = key;\n data.value = value;\n keysvalues.push(data);\n })\n .then(() => {\n return Promise.resolve(keysvalues);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async iskey(name) {\n return this.get(name)\n .then((data) => {\n if (data.value != null) {\n return Promise.resolve(true);\n }\n else {\n return Promise.resolve(false);\n }\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n async importJson(values) {\n let changes = 0;\n for (const val of values) {\n try {\n const data = new Data();\n data.name = val.key;\n data.value = val.value;\n await this.set(data);\n changes += 1;\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(changes);\n }\n async exportJson() {\n const retJson = {};\n const prevTableName = this._tableName;\n try {\n retJson.database = this._dbName.slice(0, -3);\n retJson.encrypted = false;\n retJson.tables = [];\n // get the table list\n const tables = await this.tables();\n for (const table of tables) {\n this._tableName = table;\n const retTable = {};\n retTable.name = table;\n retTable.values = [];\n const res = this.openStore(this._dbName, this._tableName);\n if (res) {\n const dataTable = await this.keysvalues();\n for (const tdata of dataTable) {\n const retData = {};\n if (tdata.name != null) {\n retData.key = tdata.name;\n retData.value = tdata.value;\n retTable.values = [...retTable.values, retData];\n }\n else {\n return Promise.reject('Data.name is undefined');\n }\n }\n retJson.tables = [...retJson.tables, retTable];\n }\n else {\n const msg = `Could not open ${this._dbName} ${this._tableName} `;\n this._tableName = prevTableName;\n return Promise.reject(msg);\n }\n }\n this._tableName = prevTableName;\n const res = this.openStore(this._dbName, this._tableName);\n if (res) {\n return Promise.resolve(retJson);\n }\n else {\n const msg = `Could not open ${this._dbName} ${this._tableName} `;\n return Promise.reject(msg);\n }\n }\n catch (err) {\n this._tableName = prevTableName;\n return Promise.reject(err);\n }\n }\n}\n//# sourceMappingURL=StorageDatabaseHelper.js.map","/**\n * IsJsonSQLite\n * @param obj\n */\nexport const isJsonStore = (obj) => {\n const keyFirstLevel = ['database', 'encrypted', 'tables'];\n if (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyFirstLevel.indexOf(key) === -1)\n return false;\n if (key === 'database' && typeof obj[key] != 'string')\n return false;\n if (key === 'encrypted' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'tables' && typeof obj[key] != 'object')\n return false;\n if (key === 'tables') {\n for (const oKey of obj[key]) {\n const retTable = isTable(oKey);\n if (!retTable)\n return false;\n }\n }\n }\n return true;\n};\n/**\n * IsTable\n * @param obj\n */\nexport const isTable = (obj) => {\n const keyTableLevel = ['name', 'values'];\n if (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object)) {\n return false;\n }\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'values' && typeof obj[key] != 'object')\n return false;\n if (key === 'values') {\n for (const oKey of obj[key]) {\n const retValue = isValue(oKey);\n if (!retValue)\n return false;\n }\n }\n }\n return true;\n};\n/**\n * IsValue\n * @param obj\n */\nexport const isValue = (obj) => {\n const keyTableLevel = ['key', 'value'];\n if (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object)) {\n return false;\n }\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === 'key' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n};\n//# sourceMappingURL=json-utils.js.map","import { WebPlugin } from '@capacitor/core';\nimport { Data } from './web-utils/Data';\nimport { StorageDatabaseHelper } from './web-utils/StorageDatabaseHelper';\nimport { isJsonStore } from './web-utils/json-utils';\nexport class CapgoCapacitorDataStorageSqliteWeb extends WebPlugin {\n async openStore(options) {\n const dbName = options.database ? `${options.database}IDB` : 'storageIDB';\n const tableName = options.table ? options.table : 'storage_store';\n try {\n this.mDb = new StorageDatabaseHelper(dbName, tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`OpenStore: ${err.message}`);\n }\n }\n async closeStore(options) {\n throw new Error(`Method closeStore not implemented. ${options}`);\n }\n async isStoreOpen(options) {\n throw new Error(`Method isStoreOpen not implemented. ${options}`);\n }\n async isStoreExists(options) {\n throw new Error(`Method isStoreExists not implemented. ${options}`);\n }\n async setTable(options) {\n const tableName = options.table;\n if (tableName == null) {\n return Promise.reject('SetTable: Must provide a table name');\n }\n if (this.mDb) {\n try {\n await this.mDb.setTable(tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`SetTable: ${err.message}`);\n }\n }\n else {\n return Promise.reject('SetTable: Must open a store first');\n }\n }\n async set(options) {\n const key = options.key;\n if (key == null || typeof key != 'string') {\n return Promise.reject('Set: Must provide key as string');\n }\n const value = options.value ? options.value : null;\n if (value == null || typeof value != 'string') {\n return Promise.reject('Set: Must provide value as string');\n }\n const data = new Data();\n data.name = key;\n data.value = value;\n try {\n await this.mDb.set(data);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Set: ${err.message}`);\n }\n }\n async get(options) {\n const key = options.key;\n if (key == null || typeof key != 'string') {\n return Promise.reject('Get: Must provide key as string');\n }\n try {\n const data = await this.mDb.get(key);\n if ((data === null || data === void 0 ? void 0 : data.value) != null) {\n return Promise.resolve({ value: data.value });\n }\n else {\n return Promise.resolve({ value: '' });\n }\n }\n catch (err) {\n return Promise.reject(`Get: ${err.message}`);\n }\n }\n async remove(options) {\n const key = options.key;\n if (key == null || typeof key != 'string') {\n return Promise.reject('Remove: Must provide key as string');\n }\n try {\n await this.mDb.remove(key);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Remove: ${err.message}`);\n }\n }\n async clear() {\n try {\n await this.mDb.clear();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`Clear: ${err.message}`);\n }\n }\n async iskey(options) {\n const key = options.key;\n if (key == null || typeof key != 'string') {\n return Promise.reject('Iskey: Must provide key as string');\n }\n try {\n const ret = await this.mDb.iskey(key);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(`Iskey: ${err.message}`);\n }\n }\n async keys() {\n try {\n const ret = await this.mDb.keys();\n return Promise.resolve({ keys: ret });\n }\n catch (err) {\n return Promise.reject(`Keys: ${err.message}`);\n }\n }\n async values() {\n try {\n const ret = await this.mDb.values();\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(`Values: ${err.message}`);\n }\n }\n async filtervalues(options) {\n const filter = options.filter;\n if (filter == null || typeof filter != 'string') {\n return Promise.reject('Filtervalues: Must provide filter as string');\n }\n let regFilter;\n if (filter.startsWith('%')) {\n regFilter = new RegExp('^' + filter.substring(1), 'i');\n }\n else if (filter.endsWith('%')) {\n regFilter = new RegExp(filter.slice(0, -1) + '$', 'i');\n }\n else {\n regFilter = new RegExp(filter, 'i');\n }\n try {\n const ret = [];\n const results = await this.mDb.keysvalues();\n for (const result of results) {\n if (result.name != null && regFilter.test(result.name)) {\n if (result.value != null) {\n ret.push(result.value);\n }\n else {\n return Promise.reject(`Filtervalues: result.value is null`);\n }\n }\n }\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(`Filtervalues: ${err.message}`);\n }\n }\n async keysvalues() {\n try {\n const ret = [];\n const results = await this.mDb.keysvalues();\n for (const result of results) {\n if (result.name != null && result.value != null) {\n const res = { key: result.name, value: result.value };\n ret.push(res);\n }\n else {\n return Promise.reject(`Keysvalues: result.name/value are null`);\n }\n }\n return Promise.resolve({ keysvalues: ret });\n }\n catch (err) {\n return Promise.reject(`Keysvalues: ${err.message}`);\n }\n }\n async deleteStore(options) {\n throw new Error(`Method deleteStore not implemented. ${options}`);\n }\n async isTable(options) {\n const table = options.table;\n if (table == null) {\n return Promise.reject('Must provide a Table Name');\n }\n try {\n const ret = await this.mDb.isTable(table);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async tables() {\n try {\n const ret = await this.mDb.tables();\n return Promise.resolve({ tables: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async deleteTable(options) {\n throw new Error(`Method deleteTable not implemented. ${options}`);\n }\n async importFromJson(options) {\n const keys = Object.keys(options);\n if (!keys.includes('jsonstring')) {\n return Promise.reject('Must provide a json object');\n }\n let totalChanges = 0;\n if (options === null || options === void 0 ? void 0 : options.jsonstring) {\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = isJsonStore(jsonObj);\n if (!isValid) {\n return Promise.reject('Must provide a valid JsonSQLite Object');\n }\n const vJsonObj = jsonObj;\n const dbName = vJsonObj.database ? `${vJsonObj.database}IDB` : 'storageIDB';\n for (const table of vJsonObj.tables) {\n const tableName = table.name ? table.name : 'storage_store';\n try {\n this.mDb = new StorageDatabaseHelper(dbName, tableName);\n // Open the database\n const bRet = this.mDb.openStore(dbName, tableName);\n if (bRet) {\n // Import the JsonSQLite Object\n if (table === null || table === void 0 ? void 0 : table.values) {\n const changes = await this.mDb.importJson(table.values);\n totalChanges += changes;\n }\n }\n else {\n return Promise.reject(`Open store: ${dbName} : table: ${tableName} failed`);\n }\n }\n catch (err) {\n return Promise.reject(`ImportFromJson: ${err.message}`);\n }\n }\n return Promise.resolve({ changes: totalChanges });\n }\n else {\n return Promise.reject('Must provide a json object');\n }\n }\n async isJsonValid(options) {\n const keys = Object.keys(options);\n if (!keys.includes('jsonstring')) {\n return Promise.reject('Must provide a json object');\n }\n if (options === null || options === void 0 ? void 0 : options.jsonstring) {\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = isJsonStore(jsonObj);\n if (!isValid) {\n return Promise.reject('Stringify Json Object not Valid');\n }\n else {\n return Promise.resolve({ result: true });\n }\n }\n else {\n return Promise.reject('Must provide in options a stringify Json Object');\n }\n }\n async exportToJson() {\n try {\n const ret = await this.mDb.exportJson();\n return Promise.resolve({ export: ret });\n }\n catch (err) {\n return Promise.reject(`exportToJson: ${err}`);\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|