@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
@@ -10,153 +10,112 @@ import net.sqlcipher.database.SQLiteStatement;
10
10
 
11
11
  public class UtilsSQLCipher {
12
12
 
13
- private static final String TAG = UtilsSQLCipher.class.getName();
14
-
15
- /**
16
- * The detected state of the database, based on whether we can
17
- * open it without a passphrase, with the passphrase 'secret'.
18
- */
19
- public enum State {
20
- DOES_NOT_EXIST,
21
- UNENCRYPTED,
22
- ENCRYPTED_SECRET,
23
- ENCRYPTED_NEW_SECRET,
24
- }
25
-
26
- /**
27
- * Determine whether or not this database appears to be encrypted,
28
- * based on whether we can open it without a passphrase or with
29
- * the passphrase 'secret'.
30
- *
31
- * @param dbPath a File pointing to the database
32
- * @param globVar an instance of Global
33
- * @return the detected state of the database
34
- */
35
- public State getDatabaseState(File dbPath, Global globVar) {
36
- if (dbPath.exists()) {
37
- SQLiteDatabase db = null;
38
-
39
- try {
40
- db = SQLiteDatabase.openDatabase(
41
- dbPath.getAbsolutePath(),
42
- "",
43
- null,
44
- SQLiteDatabase.OPEN_READONLY
45
- );
46
-
47
- db.getVersion();
48
-
49
- return (State.UNENCRYPTED);
50
- } catch (Exception e) {
51
- try {
52
- db = SQLiteDatabase.openDatabase(
53
- dbPath.getAbsolutePath(),
54
- globVar.secret,
55
- null,
56
- SQLiteDatabase.OPEN_READONLY
57
- );
58
- return (State.ENCRYPTED_SECRET);
59
- } catch (Exception e1) {
60
- return (State.ENCRYPTED_NEW_SECRET);
61
- }
62
- } finally {
63
- if (db != null) {
64
- db.close();
13
+ private static final String TAG = UtilsSQLCipher.class.getName();
14
+
15
+ /**
16
+ * The detected state of the database, based on whether we can
17
+ * open it without a passphrase, with the passphrase 'secret'.
18
+ */
19
+ public enum State {
20
+ DOES_NOT_EXIST,
21
+ UNENCRYPTED,
22
+ ENCRYPTED_SECRET,
23
+ ENCRYPTED_NEW_SECRET
24
+ }
25
+
26
+ /**
27
+ * Determine whether or not this database appears to be encrypted,
28
+ * based on whether we can open it without a passphrase or with
29
+ * the passphrase 'secret'.
30
+ *
31
+ * @param dbPath a File pointing to the database
32
+ * @param globVar an instance of Global
33
+ * @return the detected state of the database
34
+ */
35
+ public State getDatabaseState(File dbPath, Global globVar) {
36
+ if (dbPath.exists()) {
37
+ SQLiteDatabase db = null;
38
+
39
+ try {
40
+ db = SQLiteDatabase.openDatabase(dbPath.getAbsolutePath(), "", null, SQLiteDatabase.OPEN_READONLY);
41
+
42
+ db.getVersion();
43
+
44
+ return (State.UNENCRYPTED);
45
+ } catch (Exception e) {
46
+ try {
47
+ db = SQLiteDatabase.openDatabase(dbPath.getAbsolutePath(), globVar.secret, null, SQLiteDatabase.OPEN_READONLY);
48
+ return (State.ENCRYPTED_SECRET);
49
+ } catch (Exception e1) {
50
+ return (State.ENCRYPTED_NEW_SECRET);
51
+ }
52
+ } finally {
53
+ if (db != null) {
54
+ db.close();
55
+ }
56
+ }
65
57
  }
66
- }
58
+
59
+ return (State.DOES_NOT_EXIST);
67
60
  }
68
61
 
69
- return (State.DOES_NOT_EXIST);
70
- }
71
-
72
- /**
73
- * Replaces this database with a version encrypted with the supplied
74
- * passphrase, deleting the original.
75
- * Do not call this while the database is open.
76
- *
77
- * The passphrase is untouched in this call.
78
- *
79
- * @param ctxt a Context
80
- * @param originalFile a File pointing to the database
81
- * @param passphrase the passphrase from the user
82
- * @throws IOException
83
- */
84
- public void encrypt(Context ctxt, File originalFile, byte[] passphrase)
85
- throws IOException {
86
- SQLiteDatabase.loadLibs(ctxt);
87
-
88
- if (originalFile.exists()) {
89
- File newFile = File.createTempFile(
90
- "sqlcipherutils",
91
- "tmp",
92
- ctxt.getCacheDir()
93
- );
94
- SQLiteDatabase db = SQLiteDatabase.openDatabase(
95
- originalFile.getAbsolutePath(),
96
- "",
97
- null,
98
- SQLiteDatabase.OPEN_READWRITE
99
- );
100
- int version = db.getVersion();
101
-
102
- db.close();
103
-
104
- db = SQLiteDatabase.openDatabase(
105
- newFile.getAbsolutePath(),
106
- passphrase,
107
- null,
108
- SQLiteDatabase.OPEN_READWRITE,
109
- null,
110
- null
111
- );
112
- StringBuilder sql = new StringBuilder();
113
- sql.append("ATTACH DATABASE ? AS plaintext KEY ");
114
- sql.append("'';");
115
- final SQLiteStatement st = db.compileStatement(sql.toString());
116
-
117
- st.bindString(1, originalFile.getAbsolutePath());
118
- st.execute();
119
-
120
- db.rawExecSQL("SELECT sqlcipher_export('main', 'plaintext')");
121
- db.rawExecSQL("DETACH DATABASE plaintext");
122
- db.setVersion(version);
123
- st.close();
124
- db.close();
125
-
126
- originalFile.delete();
127
- newFile.renameTo(originalFile);
128
- } else {
129
- throw new FileNotFoundException(
130
- originalFile.getAbsolutePath() + " not found"
131
- );
62
+ /**
63
+ * Replaces this database with a version encrypted with the supplied
64
+ * passphrase, deleting the original.
65
+ * Do not call this while the database is open.
66
+ *
67
+ * The passphrase is untouched in this call.
68
+ *
69
+ * @param ctxt a Context
70
+ * @param originalFile a File pointing to the database
71
+ * @param passphrase the passphrase from the user
72
+ * @throws IOException
73
+ */
74
+ public void encrypt(Context ctxt, File originalFile, byte[] passphrase) throws IOException {
75
+ SQLiteDatabase.loadLibs(ctxt);
76
+
77
+ if (originalFile.exists()) {
78
+ File newFile = File.createTempFile("sqlcipherutils", "tmp", ctxt.getCacheDir());
79
+ SQLiteDatabase db = SQLiteDatabase.openDatabase(originalFile.getAbsolutePath(), "", null, SQLiteDatabase.OPEN_READWRITE);
80
+ int version = db.getVersion();
81
+
82
+ db.close();
83
+
84
+ db = SQLiteDatabase.openDatabase(newFile.getAbsolutePath(), passphrase, null, SQLiteDatabase.OPEN_READWRITE, null, null);
85
+ StringBuilder sql = new StringBuilder();
86
+ sql.append("ATTACH DATABASE ? AS plaintext KEY ");
87
+ sql.append("'';");
88
+ final SQLiteStatement st = db.compileStatement(sql.toString());
89
+
90
+ st.bindString(1, originalFile.getAbsolutePath());
91
+ st.execute();
92
+
93
+ db.rawExecSQL("SELECT sqlcipher_export('main', 'plaintext')");
94
+ db.rawExecSQL("DETACH DATABASE plaintext");
95
+ db.setVersion(version);
96
+ st.close();
97
+ db.close();
98
+
99
+ originalFile.delete();
100
+ newFile.renameTo(originalFile);
101
+ } else {
102
+ throw new FileNotFoundException(originalFile.getAbsolutePath() + " not found");
103
+ }
132
104
  }
133
- }
134
-
135
- public void changePassword(
136
- Context ctxt,
137
- File file,
138
- String password,
139
- String nwpassword
140
- ) throws IOException {
141
- SQLiteDatabase.loadLibs(ctxt);
142
-
143
- if (file.exists()) {
144
- SQLiteDatabase db = SQLiteDatabase.openDatabase(
145
- file.getAbsolutePath(),
146
- password,
147
- null,
148
- SQLiteDatabase.OPEN_READWRITE
149
- );
150
-
151
- if (!db.isOpen()) {
152
- throw new SQLiteException(
153
- "database " + file.getAbsolutePath() + " open failed"
154
- );
155
- }
156
- db.changePassword(nwpassword);
157
- db.close();
158
- } else {
159
- throw new FileNotFoundException(file.getAbsolutePath() + " not found");
105
+
106
+ public void changePassword(Context ctxt, File file, String password, String nwpassword) throws IOException {
107
+ SQLiteDatabase.loadLibs(ctxt);
108
+
109
+ if (file.exists()) {
110
+ SQLiteDatabase db = SQLiteDatabase.openDatabase(file.getAbsolutePath(), password, null, SQLiteDatabase.OPEN_READWRITE);
111
+
112
+ if (!db.isOpen()) {
113
+ throw new SQLiteException("database " + file.getAbsolutePath() + " open failed");
114
+ }
115
+ db.changePassword(nwpassword);
116
+ db.close();
117
+ } else {
118
+ throw new FileNotFoundException(file.getAbsolutePath() + " not found");
119
+ }
160
120
  }
161
- }
162
121
  }
package/dist/docs.json CHANGED
@@ -5,38 +5,6 @@
5
5
  "docs": "",
6
6
  "tags": [],
7
7
  "methods": [
8
- {
9
- "name": "echo",
10
- "signature": "(options: capEchoOptions) => Promise<capEchoResult>",
11
- "parameters": [
12
- {
13
- "name": "options",
14
- "docs": ": capEchoOptions",
15
- "type": "capEchoOptions"
16
- }
17
- ],
18
- "returns": "Promise<capEchoResult>",
19
- "tags": [
20
- {
21
- "name": "param",
22
- "text": "options : capEchoOptions"
23
- },
24
- {
25
- "name": "return",
26
- "text": "Promise<capEchoResult>"
27
- },
28
- {
29
- "name": "since",
30
- "text": "0.0.1"
31
- }
32
- ],
33
- "docs": "",
34
- "complexTypes": [
35
- "capEchoResult",
36
- "capEchoOptions"
37
- ],
38
- "slug": "echo"
39
- },
40
8
  {
41
9
  "name": "openStore",
42
10
  "signature": "(options: capOpenStorageOptions) => Promise<void>",
@@ -638,38 +606,6 @@
638
606
  "properties": []
639
607
  },
640
608
  "interfaces": [
641
- {
642
- "name": "capEchoResult",
643
- "slug": "capechoresult",
644
- "docs": "",
645
- "tags": [],
646
- "methods": [],
647
- "properties": [
648
- {
649
- "name": "value",
650
- "tags": [],
651
- "docs": "String returned",
652
- "complexTypes": [],
653
- "type": "string"
654
- }
655
- ]
656
- },
657
- {
658
- "name": "capEchoOptions",
659
- "slug": "capechooptions",
660
- "docs": "",
661
- "tags": [],
662
- "methods": [],
663
- "properties": [
664
- {
665
- "name": "value",
666
- "tags": [],
667
- "docs": "String to be echoed",
668
- "complexTypes": [],
669
- "type": "string | undefined"
670
- }
671
- ]
672
- },
673
609
  {
674
610
  "name": "capOpenStorageOptions",
675
611
  "slug": "capopenstorageoptions",
@@ -1,11 +1,4 @@
1
1
  export interface CapgoCapacitorDataStorageSqlitePlugin {
2
- /**
3
- *
4
- * @param options: capEchoOptions
5
- * @return Promise<capEchoResult>
6
- * @since 0.0.1
7
- */
8
- echo(options: capEchoOptions): Promise<capEchoResult>;
9
2
  /**
10
3
  * Open a store
11
4
  * @param options: capOpenStorageOptions
@@ -148,12 +141,6 @@ export interface CapgoCapacitorDataStorageSqlitePlugin {
148
141
  */
149
142
  exportToJson(): Promise<capStoreJson>;
150
143
  }
151
- export interface capEchoOptions {
152
- /**
153
- * String to be echoed
154
- */
155
- value?: string;
156
- }
157
144
  export interface capOpenStorageOptions {
158
145
  /**
159
146
  * The storage database name
@@ -204,12 +191,6 @@ export interface capFilterStorageOptions {
204
191
  */
205
192
  filter: string;
206
193
  }
207
- export interface capEchoResult {
208
- /**
209
- * String returned
210
- */
211
- value: string;
212
- }
213
194
  export interface capDataStorageResult {
214
195
  /**
215
196
  * result set to true when successful else false
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface CapgoCapacitorDataStorageSqlitePlugin {\n /**\n *\n * @param options: capEchoOptions\n * @return Promise<capEchoResult>\n * @since 0.0.1\n */\n echo(options: capEchoOptions): Promise<capEchoResult>;\n /**\n * Open a store\n * @param options: capOpenStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n openStore(options: capOpenStorageOptions): Promise<void>;\n /**\n * Close the Store\n * @param options: capStorageOptions\n * @returns Promise<void>\n * @since 3.0.0\n */\n closeStore(options: capStorageOptions): Promise<void>;\n /**\n * Check if the Store is opened\n * @param options: capStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 3.0.0\n */\n isStoreOpen(options: capStorageOptions): Promise<capDataStorageResult>;\n /**\n * Check if the Store exists\n * @param options: capStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 3.0.0\n */\n isStoreExists(options: capStorageOptions): Promise<capDataStorageResult>;\n /**\n * Delete a store\n * @param options: capOpenStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n deleteStore(options: capOpenStorageOptions): Promise<void>;\n /**\n * Set or Add a table to an existing store\n * @param options: capTableStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n setTable(options: capTableStorageOptions): Promise<void>;\n /**\n * Store a data with given key and value\n * @param options: capDataStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n set(options: capDataStorageOptions): Promise<void>;\n /**\n * Retrieve a data value for a given data key\n * @param options: capDataStorageOptions\n * @returns Promise<capValueResult>\n * @since 0.0.1\n */\n get(options: capDataStorageOptions): Promise<capValueResult>;\n /**\n * Remove a data with given key\n * @param options: capDataStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n remove(options: capDataStorageOptions): Promise<void>;\n /**\n * Clear the Data Store (delete all keys)\n * @returns Promise<void>\n * @since 0.0.1\n */\n clear(): Promise<void>;\n /**\n * Check if a data key exists\n * @param options: capDataStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 0.0.1\n */\n iskey(options: capDataStorageOptions): Promise<capDataStorageResult>;\n /**\n * Get the data key list\n * @returns Promise<capKeysResult>\n * @since 0.0.1\n */\n keys(): Promise<capKeysResult>;\n /**\n * Get the data value list\n * @returns Promise<capValuesResult>\n * @since 0.0.1\n */\n values(): Promise<capValuesResult>;\n /**\n * Get the data value list for filter keys\n * @param options: capFilterStorageOptions\n * @returns Promise<capValuesResult>\n * @since 2.4.2\n */\n filtervalues(options: capFilterStorageOptions): Promise<capValuesResult>;\n /**\n * Get the data key/value pair list\n * @returns Promise<capKeysValuesResult>\n * @since 0.0.1\n */\n keysvalues(): Promise<capKeysValuesResult>;\n /**\n * Check if a table exists\n * @param options: capTableStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 3.0.0\n */\n isTable(options: capTableStorageOptions): Promise<capDataStorageResult>;\n /**\n * Get the table list for the current store\n * @returns Promise<capTablesResult>\n * @since 3.0.0\n */\n tables(): Promise<capTablesResult>;\n /**\n * Delete a table\n * @param options: capTableStorageOptions\n * @returns Promise<void>\n * @since 3.0.0\n */\n deleteTable(options: capTableStorageOptions): Promise<void>;\n /**\n * Import a database From a JSON\n * @param jsonstring string\n * @returns Promise<capDataStorageChanges>\n * @since 3.2.0\n */\n importFromJson(\n options: capStoreImportOptions,\n ): Promise<capDataStorageChanges>;\n /**\n * Check the validity of a JSON Object\n * @param jsonstring string\n * @returns Promise<capDataStorageResult>\n * @since 3.2.0\n */\n isJsonValid(options: capStoreImportOptions): Promise<capDataStorageResult>;\n /**\n * Export the given database to a JSON Object\n * @returns Promise<capStoreJson>\n * @since 3.2.0\n */\n exportToJson(): Promise<capStoreJson>;\n}\n\nexport interface capEchoOptions {\n /**\n * String to be echoed\n */\n value?: string;\n}\n\nexport interface capOpenStorageOptions {\n /**\n * The storage database name\n */\n database?: string; // default:\n // ios, android: storageSQLite\n // web : storageIDB\n /**\n * The storage table name\n */\n table?: string; // default:\n // ios, android: storage_table\n // web: storage_store\n /**\n * Set to true for database encryption\n */\n encrypted?: boolean; // only for ios and android\n /***\n * Set the mode for database encryption\n * [\"encryption\", \"secret\",\"newsecret\"]\n */\n mode?: string; // only for ios and android\n}\nexport interface capDataStorageOptions {\n /**\n * The data name\n */\n key: string;\n /**\n * The data value when required\n */\n value?: string;\n}\nexport interface capStorageOptions {\n /**\n * The storage name\n */\n database: string;\n}\n\nexport interface capTableStorageOptions {\n /**\n * The storage table name\n */\n table: string;\n}\nexport interface capFilterStorageOptions {\n /**\n * The filter data for filtering keys\n *\n * ['%filter', 'filter', 'filter%'] for\n * [starts with filter, contains filter, ends with filter]\n */\n filter: string;\n}\n\nexport interface capEchoResult {\n /**\n * String returned\n */\n value: string;\n}\n\nexport interface capDataStorageResult {\n /**\n * result set to true when successful else false\n */\n result?: boolean;\n /**\n * a returned message\n */\n message?: string;\n}\nexport interface capValueResult {\n /**\n * the data value for a given data key\n */\n value: string;\n}\nexport interface capKeysResult {\n /**\n * the data key list as an Array\n */\n keys: string[];\n}\nexport interface capValuesResult {\n /**\n * the data values list as an Array\n */\n values: string[];\n}\nexport interface capKeysValuesResult {\n /**\n * the data keys/values list as an Array of {key:string,value:string}\n */\n keysvalues: any[];\n}\nexport interface capTablesResult {\n /**\n * the tables list as an Array\n */\n tables: string[];\n}\nexport interface JsonStore {\n /**\n * The database name\n */\n database: string;\n /**\n * Set to true (database encryption) / false\n * iOS & Android only\n */\n encrypted: boolean;\n /***\n * Array of Table (JsonTable)\n */\n tables: JsonTable[];\n}\nexport interface JsonTable {\n /**\n * The database name\n */\n name: string;\n /***\n * Array of Values (capDataStorageOptions)\n */\n values?: capDataStorageOptions[];\n}\n\nexport interface capDataStorageChanges {\n /**\n * the number of changes from an importFromJson command\n */\n changes?: number;\n}\nexport interface capStoreImportOptions {\n /**\n * Set the JSON object to import\n *\n */\n jsonstring?: string;\n}\nexport interface capStoreJson {\n /**\n * an export JSON object\n */\n export?: JsonStore;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface CapgoCapacitorDataStorageSqlitePlugin {\n /**\n * Open a store\n * @param options: capOpenStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n openStore(options: capOpenStorageOptions): Promise<void>;\n /**\n * Close the Store\n * @param options: capStorageOptions\n * @returns Promise<void>\n * @since 3.0.0\n */\n closeStore(options: capStorageOptions): Promise<void>;\n /**\n * Check if the Store is opened\n * @param options: capStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 3.0.0\n */\n isStoreOpen(options: capStorageOptions): Promise<capDataStorageResult>;\n /**\n * Check if the Store exists\n * @param options: capStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 3.0.0\n */\n isStoreExists(options: capStorageOptions): Promise<capDataStorageResult>;\n /**\n * Delete a store\n * @param options: capOpenStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n deleteStore(options: capOpenStorageOptions): Promise<void>;\n /**\n * Set or Add a table to an existing store\n * @param options: capTableStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n setTable(options: capTableStorageOptions): Promise<void>;\n /**\n * Store a data with given key and value\n * @param options: capDataStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n set(options: capDataStorageOptions): Promise<void>;\n /**\n * Retrieve a data value for a given data key\n * @param options: capDataStorageOptions\n * @returns Promise<capValueResult>\n * @since 0.0.1\n */\n get(options: capDataStorageOptions): Promise<capValueResult>;\n /**\n * Remove a data with given key\n * @param options: capDataStorageOptions\n * @returns Promise<void>\n * @since 0.0.1\n */\n remove(options: capDataStorageOptions): Promise<void>;\n /**\n * Clear the Data Store (delete all keys)\n * @returns Promise<void>\n * @since 0.0.1\n */\n clear(): Promise<void>;\n /**\n * Check if a data key exists\n * @param options: capDataStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 0.0.1\n */\n iskey(options: capDataStorageOptions): Promise<capDataStorageResult>;\n /**\n * Get the data key list\n * @returns Promise<capKeysResult>\n * @since 0.0.1\n */\n keys(): Promise<capKeysResult>;\n /**\n * Get the data value list\n * @returns Promise<capValuesResult>\n * @since 0.0.1\n */\n values(): Promise<capValuesResult>;\n /**\n * Get the data value list for filter keys\n * @param options: capFilterStorageOptions\n * @returns Promise<capValuesResult>\n * @since 2.4.2\n */\n filtervalues(options: capFilterStorageOptions): Promise<capValuesResult>;\n /**\n * Get the data key/value pair list\n * @returns Promise<capKeysValuesResult>\n * @since 0.0.1\n */\n keysvalues(): Promise<capKeysValuesResult>;\n /**\n * Check if a table exists\n * @param options: capTableStorageOptions\n * @returns Promise<capDataStorageResult>\n * @since 3.0.0\n */\n isTable(options: capTableStorageOptions): Promise<capDataStorageResult>;\n /**\n * Get the table list for the current store\n * @returns Promise<capTablesResult>\n * @since 3.0.0\n */\n tables(): Promise<capTablesResult>;\n /**\n * Delete a table\n * @param options: capTableStorageOptions\n * @returns Promise<void>\n * @since 3.0.0\n */\n deleteTable(options: capTableStorageOptions): Promise<void>;\n /**\n * Import a database From a JSON\n * @param jsonstring string\n * @returns Promise<capDataStorageChanges>\n * @since 3.2.0\n */\n importFromJson(options: capStoreImportOptions): Promise<capDataStorageChanges>;\n /**\n * Check the validity of a JSON Object\n * @param jsonstring string\n * @returns Promise<capDataStorageResult>\n * @since 3.2.0\n */\n isJsonValid(options: capStoreImportOptions): Promise<capDataStorageResult>;\n /**\n * Export the given database to a JSON Object\n * @returns Promise<capStoreJson>\n * @since 3.2.0\n */\n exportToJson(): Promise<capStoreJson>;\n}\n\nexport interface capOpenStorageOptions {\n /**\n * The storage database name\n */\n database?: string; // default:\n // ios, android: storageSQLite\n // web : storageIDB\n /**\n * The storage table name\n */\n table?: string; // default:\n // ios, android: storage_table\n // web: storage_store\n /**\n * Set to true for database encryption\n */\n encrypted?: boolean; // only for ios and android\n /***\n * Set the mode for database encryption\n * [\"encryption\", \"secret\",\"newsecret\"]\n */\n mode?: string; // only for ios and android\n}\nexport interface capDataStorageOptions {\n /**\n * The data name\n */\n key: string;\n /**\n * The data value when required\n */\n value?: string;\n}\nexport interface capStorageOptions {\n /**\n * The storage name\n */\n database: string;\n}\n\nexport interface capTableStorageOptions {\n /**\n * The storage table name\n */\n table: string;\n}\nexport interface capFilterStorageOptions {\n /**\n * The filter data for filtering keys\n *\n * ['%filter', 'filter', 'filter%'] for\n * [starts with filter, contains filter, ends with filter]\n */\n filter: string;\n}\n\nexport interface capDataStorageResult {\n /**\n * result set to true when successful else false\n */\n result?: boolean;\n /**\n * a returned message\n */\n message?: string;\n}\nexport interface capValueResult {\n /**\n * the data value for a given data key\n */\n value: string;\n}\nexport interface capKeysResult {\n /**\n * the data key list as an Array\n */\n keys: string[];\n}\nexport interface capValuesResult {\n /**\n * the data values list as an Array\n */\n values: string[];\n}\nexport interface capKeysValuesResult {\n /**\n * the data keys/values list as an Array of {key:string,value:string}\n */\n keysvalues: any[];\n}\nexport interface capTablesResult {\n /**\n * the tables list as an Array\n */\n tables: string[];\n}\nexport interface JsonStore {\n /**\n * The database name\n */\n database: string;\n /**\n * Set to true (database encryption) / false\n * iOS & Android only\n */\n encrypted: boolean;\n /***\n * Array of Table (JsonTable)\n */\n tables: JsonTable[];\n}\nexport interface JsonTable {\n /**\n * The database name\n */\n name: string;\n /***\n * Array of Values (capDataStorageOptions)\n */\n values?: capDataStorageOptions[];\n}\n\nexport interface capDataStorageChanges {\n /**\n * the number of changes from an importFromJson command\n */\n changes?: number;\n}\nexport interface capStoreImportOptions {\n /**\n * Set the JSON object to import\n *\n */\n jsonstring?: string;\n}\nexport interface capStoreJson {\n /**\n * an export JSON object\n */\n export?: JsonStore;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { CapgoCapacitorDataStorageSqlitePlugin } from "./definitions";
1
+ import type { CapgoCapacitorDataStorageSqlitePlugin } from './definitions';
2
2
  declare const CapgoCapacitorDataStorageSqlite: CapgoCapacitorDataStorageSqlitePlugin;
3
- export * from "./definitions";
3
+ export * from './definitions';
4
4
  export { CapgoCapacitorDataStorageSqlite };
package/dist/esm/index.js CHANGED
@@ -1,9 +1,8 @@
1
- import { registerPlugin } from "@capacitor/core";
2
- const CapgoCapacitorDataStorageSqlite = registerPlugin("CapgoCapacitorDataStorageSqlite", {
3
- web: () => import("./web").then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),
4
- electron: () => window.CapacitorCustomPlatform.plugins
5
- .CapacitorDataStorageSqlite,
1
+ import { registerPlugin } from '@capacitor/core';
2
+ const CapgoCapacitorDataStorageSqlite = registerPlugin('CapgoCapacitorDataStorageSqlite', {
3
+ web: () => import('./web').then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),
4
+ electron: () => window.CapacitorCustomPlatform.plugins.CapacitorDataStorageSqlite,
6
5
  });
7
- export * from "./definitions";
6
+ export * from './definitions';
8
7
  export { CapgoCapacitorDataStorageSqlite };
9
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,+BAA+B,GACnC,cAAc,CACZ,iCAAiC,EACjC;IACE,GAAG,EAAE,GAAG,EAAE,CACR,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,kCAAkC,EAAE,CAAC;IACzE,QAAQ,EAAE,GAAG,EAAE,CACZ,MAAc,CAAC,uBAAuB,CAAC,OAAO;SAC5C,0BAA0B;CAChC,CACF,CAAC;AAEJ,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,+BAA+B,EAAE,CAAC","sourcesContent":["import { registerPlugin } from \"@capacitor/core\";\n\nimport type { CapgoCapacitorDataStorageSqlitePlugin } from \"./definitions\";\n\nconst CapgoCapacitorDataStorageSqlite =\n registerPlugin<CapgoCapacitorDataStorageSqlitePlugin>(\n \"CapgoCapacitorDataStorageSqlite\",\n {\n web: () =>\n import(\"./web\").then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),\n electron: () =>\n (window as any).CapacitorCustomPlatform.plugins\n .CapacitorDataStorageSqlite,\n },\n );\n\nexport * from \"./definitions\";\nexport { CapgoCapacitorDataStorageSqlite };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,+BAA+B,GAAG,cAAc,CACpD,iCAAiC,EACjC;IACE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,kCAAkC,EAAE,CAAC;IAClF,QAAQ,EAAE,GAAG,EAAE,CAAE,MAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC,0BAA0B;CAC3F,CACF,CAAC;AAEF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,+BAA+B,EAAE,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type { CapgoCapacitorDataStorageSqlitePlugin } from './definitions';\n\nconst CapgoCapacitorDataStorageSqlite = registerPlugin<CapgoCapacitorDataStorageSqlitePlugin>(\n 'CapgoCapacitorDataStorageSqlite',\n {\n web: () => import('./web').then((m) => new m.CapgoCapacitorDataStorageSqliteWeb()),\n electron: () => (window as any).CapacitorCustomPlatform.plugins.CapacitorDataStorageSqlite,\n },\n);\n\nexport * from './definitions';\nexport { CapgoCapacitorDataStorageSqlite };\n"]}
@@ -1,5 +1,5 @@
1
- import type { capDataStorageOptions, JsonStore } from "../definitions";
2
- import { Data } from "./Data";
1
+ import type { capDataStorageOptions, JsonStore } from '../definitions';
2
+ import { Data } from './Data';
3
3
  export declare class StorageDatabaseHelper {
4
4
  private _db;
5
5
  private _dbName;
@@ -1,6 +1,6 @@
1
1
  //import LocalForage from 'jeep-localforage';
2
- import localForage from "localforage";
3
- import { Data } from "./Data";
2
+ import localForage from 'localforage';
3
+ import { Data } from './Data';
4
4
  //const DATABASE: string = "storageIDB";
5
5
  //const STORAGESTORE: string = "storage_store";
6
6
  export class StorageDatabaseHelper {
@@ -12,9 +12,9 @@ export class StorageDatabaseHelper {
12
12
  this._tableName = tableName;
13
13
  }
14
14
  else {
15
- this._dbName = "";
16
- this._tableName = "";
17
- throw new Error("openStore return false");
15
+ this._dbName = '';
16
+ this._tableName = '';
17
+ throw new Error('openStore return false');
18
18
  }
19
19
  }
20
20
  openStore(dbName, tableName) {
@@ -42,7 +42,7 @@ export class StorageDatabaseHelper {
42
42
  return Promise.resolve();
43
43
  }
44
44
  else {
45
- return Promise.reject(new Error("openStore return false"));
45
+ return Promise.reject(new Error('openStore return false'));
46
46
  }
47
47
  }
48
48
  async isTable(table) {
@@ -74,7 +74,7 @@ export class StorageDatabaseHelper {
74
74
  const retList = db.objectStoreNames;
75
75
  const values = Object.values(retList);
76
76
  for (const val of values) {
77
- if (val.substring(0, 12) != "local-forage") {
77
+ if (val.substring(0, 12) != 'local-forage') {
78
78
  result = [...result, val];
79
79
  }
80
80
  }
@@ -217,7 +217,7 @@ export class StorageDatabaseHelper {
217
217
  retTable.values = [...retTable.values, retData];
218
218
  }
219
219
  else {
220
- return Promise.reject("Data.name is undefined");
220
+ return Promise.reject('Data.name is undefined');
221
221
  }
222
222
  }
223
223
  retJson.tables = [...retJson.tables, retTable];
@@ -1 +1 @@
1
- {"version":3,"file":"StorageDatabaseHelper.js","sourceRoot":"","sources":["../../../src/web-utils/StorageDatabaseHelper.ts"],"names":[],"mappings":"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","sourcesContent":["//import LocalForage from 'jeep-localforage';\nimport localForage from \"localforage\";\n\nimport type {\n capDataStorageOptions,\n JsonStore,\n JsonTable,\n} from \"../definitions\";\n\nimport { Data } from \"./Data\";\n\n//const DATABASE: string = \"storageIDB\";\n//const STORAGESTORE: string = \"storage_store\";\nexport class StorageDatabaseHelper {\n private _db: any = null;\n private _dbName: string;\n private _tableName: string;\n\n constructor(dbName: string, tableName: string) {\n const res: boolean = this.openStore(dbName, tableName);\n if (res) {\n this._dbName = dbName;\n this._tableName = tableName;\n } else {\n this._dbName = \"\";\n this._tableName = \"\";\n throw new Error(\"openStore return false\");\n }\n }\n openStore(dbName: string, tableName: string): boolean {\n let ret = false;\n const config: any = 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: string, tableName: string): any {\n const config: any = {\n name: dbName,\n storeName: tableName,\n driver: [localForage.INDEXEDDB, localForage.WEBSQL],\n version: 1,\n };\n return config;\n }\n async setTable(tableName: string): Promise<void> {\n const res: boolean = this.openStore(this._dbName, tableName);\n if (res) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error(\"openStore return false\"));\n }\n }\n async isTable(table: string): Promise<boolean> {\n if (this._db == null) {\n return Promise.reject(`isTable: this.db is null`);\n }\n try {\n let ret = false;\n const tables: string[] = await this.tables();\n if (tables.includes(table)) ret = true;\n return Promise.resolve(ret);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n async tables(): Promise<string[]> {\n return new Promise<string[]>((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\n DBOpenRequest.onsuccess = () => {\n let result: string[] = [];\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: Data): Promise<void> {\n try {\n await this._db.setItem(data.name, data.value);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n async get(name: string): Promise<Data> {\n try {\n const value: string = await this._db.getItem(name);\n const data: Data = new Data();\n data.name = name;\n data.value = value;\n return Promise.resolve(data);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n async remove(name: string): Promise<void> {\n return this._db\n .removeItem(name)\n .then(() => {\n return Promise.resolve();\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async clear(): Promise<void> {\n return this._db\n .clear()\n .then(() => {\n return Promise.resolve();\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async keys(): Promise<string[]> {\n return this._db\n .keys()\n .then((keys: string[]) => {\n return Promise.resolve(keys);\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async values(): Promise<string[]> {\n const values: string[] = [];\n return this._db\n .iterate((value: string) => {\n values.push(value);\n })\n .then(() => {\n return Promise.resolve(values);\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async keysvalues(): Promise<Data[]> {\n const keysvalues: Data[] = [];\n return this._db\n .iterate((value: string, key: string) => {\n const data: 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: string) => {\n return Promise.reject(error);\n });\n }\n\n async iskey(name: string): Promise<boolean> {\n return this.get(name)\n .then((data) => {\n if (data.value != null) {\n return Promise.resolve(true);\n } else {\n return Promise.resolve(false);\n }\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n async importJson(values: capDataStorageOptions[]): Promise<number> {\n let changes = 0;\n for (const val of values) {\n try {\n const data: Data = new Data();\n data.name = val.key;\n data.value = val.value;\n await this.set(data);\n changes += 1;\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(changes);\n }\n async exportJson(): Promise<JsonStore> {\n const retJson: JsonStore = {} as JsonStore;\n const prevTableName: string = 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: string[] = await this.tables();\n for (const table of tables) {\n this._tableName = table;\n const retTable: JsonTable = {} as JsonTable;\n retTable.name = table;\n retTable.values = [];\n const res: boolean = this.openStore(this._dbName, this._tableName);\n if (res) {\n const dataTable: Data[] = await this.keysvalues();\n for (const tdata of dataTable) {\n const retData: capDataStorageOptions = {} as capDataStorageOptions;\n if (tdata.name != null) {\n retData.key = tdata.name;\n retData.value = tdata.value;\n retTable.values = [...retTable.values, retData];\n } else {\n return Promise.reject(\"Data.name is undefined\");\n }\n }\n retJson.tables = [...retJson.tables, retTable];\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: boolean = this.openStore(this._dbName, this._tableName);\n if (res) {\n return Promise.resolve(retJson);\n } else {\n const msg = `Could not open ${this._dbName} ${this._tableName} `;\n return Promise.reject(msg);\n }\n } catch (err) {\n this._tableName = prevTableName;\n return Promise.reject(err);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"StorageDatabaseHelper.js","sourceRoot":"","sources":["../../../src/web-utils/StorageDatabaseHelper.ts"],"names":[],"mappings":"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","sourcesContent":["//import LocalForage from 'jeep-localforage';\nimport localForage from 'localforage';\n\nimport type { capDataStorageOptions, JsonStore, JsonTable } from '../definitions';\n\nimport { Data } from './Data';\n\n//const DATABASE: string = \"storageIDB\";\n//const STORAGESTORE: string = \"storage_store\";\nexport class StorageDatabaseHelper {\n private _db: any = null;\n private _dbName: string;\n private _tableName: string;\n\n constructor(dbName: string, tableName: string) {\n const res: boolean = this.openStore(dbName, tableName);\n if (res) {\n this._dbName = dbName;\n this._tableName = tableName;\n } else {\n this._dbName = '';\n this._tableName = '';\n throw new Error('openStore return false');\n }\n }\n openStore(dbName: string, tableName: string): boolean {\n let ret = false;\n const config: any = 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: string, tableName: string): any {\n const config: any = {\n name: dbName,\n storeName: tableName,\n driver: [localForage.INDEXEDDB, localForage.WEBSQL],\n version: 1,\n };\n return config;\n }\n async setTable(tableName: string): Promise<void> {\n const res: boolean = this.openStore(this._dbName, tableName);\n if (res) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('openStore return false'));\n }\n }\n async isTable(table: string): Promise<boolean> {\n if (this._db == null) {\n return Promise.reject(`isTable: this.db is null`);\n }\n try {\n let ret = false;\n const tables: string[] = await this.tables();\n if (tables.includes(table)) ret = true;\n return Promise.resolve(ret);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n async tables(): Promise<string[]> {\n return new Promise<string[]>((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\n DBOpenRequest.onsuccess = () => {\n let result: string[] = [];\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: Data): Promise<void> {\n try {\n await this._db.setItem(data.name, data.value);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n async get(name: string): Promise<Data> {\n try {\n const value: string = await this._db.getItem(name);\n const data: Data = new Data();\n data.name = name;\n data.value = value;\n return Promise.resolve(data);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n async remove(name: string): Promise<void> {\n return this._db\n .removeItem(name)\n .then(() => {\n return Promise.resolve();\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async clear(): Promise<void> {\n return this._db\n .clear()\n .then(() => {\n return Promise.resolve();\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async keys(): Promise<string[]> {\n return this._db\n .keys()\n .then((keys: string[]) => {\n return Promise.resolve(keys);\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async values(): Promise<string[]> {\n const values: string[] = [];\n return this._db\n .iterate((value: string) => {\n values.push(value);\n })\n .then(() => {\n return Promise.resolve(values);\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n\n async keysvalues(): Promise<Data[]> {\n const keysvalues: Data[] = [];\n return this._db\n .iterate((value: string, key: string) => {\n const data: 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: string) => {\n return Promise.reject(error);\n });\n }\n\n async iskey(name: string): Promise<boolean> {\n return this.get(name)\n .then((data) => {\n if (data.value != null) {\n return Promise.resolve(true);\n } else {\n return Promise.resolve(false);\n }\n })\n .catch((error: string) => {\n return Promise.reject(error);\n });\n }\n async importJson(values: capDataStorageOptions[]): Promise<number> {\n let changes = 0;\n for (const val of values) {\n try {\n const data: Data = new Data();\n data.name = val.key;\n data.value = val.value;\n await this.set(data);\n changes += 1;\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(changes);\n }\n async exportJson(): Promise<JsonStore> {\n const retJson: JsonStore = {} as JsonStore;\n const prevTableName: string = 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: string[] = await this.tables();\n for (const table of tables) {\n this._tableName = table;\n const retTable: JsonTable = {} as JsonTable;\n retTable.name = table;\n retTable.values = [];\n const res: boolean = this.openStore(this._dbName, this._tableName);\n if (res) {\n const dataTable: Data[] = await this.keysvalues();\n for (const tdata of dataTable) {\n const retData: capDataStorageOptions = {} as capDataStorageOptions;\n if (tdata.name != null) {\n retData.key = tdata.name;\n retData.value = tdata.value;\n retTable.values = [...retTable.values, retData];\n } else {\n return Promise.reject('Data.name is undefined');\n }\n }\n retJson.tables = [...retJson.tables, retTable];\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: boolean = this.openStore(this._dbName, this._tableName);\n if (res) {\n return Promise.resolve(retJson);\n } else {\n const msg = `Could not open ${this._dbName} ${this._tableName} `;\n return Promise.reject(msg);\n }\n } catch (err) {\n this._tableName = prevTableName;\n return Promise.reject(err);\n }\n }\n}\n"]}