@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.
Files changed (52) hide show
  1. package/CapgoCapacitorDataStorageSqlite.podspec +2 -2
  2. package/Package.swift +30 -0
  3. package/README.md +724 -0
  4. package/android/build.gradle +11 -11
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlite.java +290 -320
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlitePlugin.java +373 -388
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/RetHandler.java +97 -97
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Data.java +3 -3
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Global.java +2 -2
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonStore.java +108 -110
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonTable.java +78 -80
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonValue.java +62 -64
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/StorageDatabaseHelper.java +557 -624
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/UtilsSQLCipher.java +103 -144
  15. package/dist/docs.json +0 -64
  16. package/dist/esm/definitions.d.ts +0 -19
  17. package/dist/esm/definitions.js.map +1 -1
  18. package/dist/esm/index.d.ts +2 -2
  19. package/dist/esm/index.js +5 -6
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/web-utils/StorageDatabaseHelper.d.ts +2 -2
  22. package/dist/esm/web-utils/StorageDatabaseHelper.js +8 -8
  23. package/dist/esm/web-utils/StorageDatabaseHelper.js.map +1 -1
  24. package/dist/esm/web-utils/json-utils.js +15 -18
  25. package/dist/esm/web-utils/json-utils.js.map +1 -1
  26. package/dist/esm/web.d.ts +2 -3
  27. package/dist/esm/web.js +37 -44
  28. package/dist/esm/web.js.map +1 -1
  29. package/dist/plugin.cjs.js +56 -67
  30. package/dist/plugin.cjs.js.map +1 -1
  31. package/dist/plugin.js +56 -67
  32. package/dist/plugin.js.map +1 -1
  33. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlitePlugin.swift +27 -10
  34. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/StorageDatabaseHelper.swift +1 -1
  35. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsFile.swift +1 -1
  36. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsSQLCipher.swift +3 -3
  37. package/ios/Tests/CapgoCapacitorDataStorageSqlitePluginTests/CapacitorDataStorageSqlitePluginTests.swift +13 -0
  38. package/package.json +34 -38
  39. package/electron/dist/plugin.js +0 -1044
  40. package/electron/dist/plugin.js.map +0 -1
  41. package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.h +0 -10
  42. package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.m +0 -29
  43. package/ios/Plugin/Info.plist +0 -24
  44. package/readme.md +0 -210
  45. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlite.swift +0 -0
  46. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Data.swift +0 -0
  47. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Global.swift +0 -0
  48. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ImportExportJson/JsonStore.swift +0 -0
  49. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ReturnHandler.swift +0 -0
  50. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/Blob.swift +0 -0
  51. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsBinding.swift +0 -0
  52. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsEncryption.swift +0 -0
@@ -3,10 +3,9 @@
3
3
  var core = require('@capacitor/core');
4
4
  var localForage = require('localforage');
5
5
 
6
- const CapgoCapacitorDataStorageSqlite = core.registerPlugin("CapgoCapacitorDataStorageSqlite", {
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("openStore return false");
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("openStore return false"));
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) != "local-forage") {
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("Data.name is undefined");
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 = ["database", "encrypted", "tables"];
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 === "database" && typeof obj[key] != "string")
270
+ if (key === 'database' && typeof obj[key] != 'string')
273
271
  return false;
274
- if (key === "encrypted" && typeof obj[key] != "boolean")
272
+ if (key === 'encrypted' && typeof obj[key] != 'boolean')
275
273
  return false;
276
- if (key === "tables" && typeof obj[key] != "object")
274
+ if (key === 'tables' && typeof obj[key] != 'object')
277
275
  return false;
278
- if (key === "tables") {
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 = ["name", "values"];
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 === "name" && typeof obj[key] != "string")
298
+ if (key === 'name' && typeof obj[key] != 'string')
302
299
  return false;
303
- if (key === "values" && typeof obj[key] != "object")
300
+ if (key === 'values' && typeof obj[key] != 'object')
304
301
  return false;
305
- if (key === "values") {
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 = ["key", "value"];
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 === "key" && typeof obj[key] != "string")
324
+ if (key === 'key' && typeof obj[key] != 'string')
329
325
  return false;
330
- if (key === "value" && typeof obj[key] != "string")
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` : "storageIDB";
344
- const tableName = options.table ? options.table : "storage_store";
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("SetTable: Must provide a table name");
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("SetTable: Must open a store first");
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 != "string") {
383
- return Promise.reject("Set: Must provide key as string");
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 != "string") {
387
- return Promise.reject("Set: Must provide value as string");
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 != "string") {
403
- return Promise.reject("Get: Must provide key as string");
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 != "string") {
421
- return Promise.reject("Remove: Must provide key as string");
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 != "string") {
443
- return Promise.reject("Iskey: Must provide key as string");
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 != "string") {
474
- return Promise.reject("Filtervalues: Must provide filter as string");
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("^" + filter.substring(1), "i");
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) + "$", "i");
471
+ else if (filter.endsWith('%')) {
472
+ regFilter = new RegExp(filter.slice(0, -1) + '$', 'i');
482
473
  }
483
474
  else {
484
- regFilter = new RegExp(filter, "i");
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("Must provide a Table Name");
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("jsonstring")) {
555
- return Promise.reject("Must provide a json object");
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("Must provide a valid JsonSQLite Object");
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 : "storage_store";
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("Must provide a json object");
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("jsonstring")) {
599
- return Promise.reject("Must provide a json object");
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("Stringify Json Object not Valid");
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("Must provide in options a stringify Json Object");
602
+ return Promise.reject('Must provide in options a stringify Json Object');
614
603
  }
615
604
  }
616
605
  async exportToJson() {
@@ -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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"}