@capgo/capacitor-data-storage-sqlite 6.0.59 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapgoCapacitorDataStorageSqlite.podspec +2 -2
- package/Package.swift +30 -0
- package/README.md +724 -0
- package/android/build.gradle +11 -11
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlite.java +290 -320
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlitePlugin.java +373 -388
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/RetHandler.java +97 -97
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Data.java +3 -3
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Global.java +2 -2
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonStore.java +108 -110
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonTable.java +78 -80
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonValue.java +62 -64
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/StorageDatabaseHelper.java +557 -624
- package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/UtilsSQLCipher.java +103 -144
- package/dist/docs.json +0 -64
- package/dist/esm/definitions.d.ts +0 -19
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +5 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web-utils/StorageDatabaseHelper.d.ts +2 -2
- package/dist/esm/web-utils/StorageDatabaseHelper.js +8 -8
- package/dist/esm/web-utils/StorageDatabaseHelper.js.map +1 -1
- package/dist/esm/web-utils/json-utils.js +15 -18
- package/dist/esm/web-utils/json-utils.js.map +1 -1
- package/dist/esm/web.d.ts +2 -3
- package/dist/esm/web.js +37 -44
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +56 -67
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +56 -67
- package/dist/plugin.js.map +1 -1
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlitePlugin.swift +27 -10
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/StorageDatabaseHelper.swift +1 -1
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsFile.swift +1 -1
- package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsSQLCipher.swift +3 -3
- package/ios/Tests/CapgoCapacitorDataStorageSqlitePluginTests/CapacitorDataStorageSqlitePluginTests.swift +13 -0
- package/package.json +34 -38
- package/electron/dist/plugin.js +0 -1044
- package/electron/dist/plugin.js.map +0 -1
- package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.h +0 -10
- package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.m +0 -29
- package/ios/Plugin/Info.plist +0 -24
- package/readme.md +0 -210
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlite.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Data.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Global.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ImportExportJson/JsonStore.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ReturnHandler.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/Blob.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsBinding.swift +0 -0
- /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsEncryption.swift +0 -0
|
@@ -10,153 +10,112 @@ import net.sqlcipher.database.SQLiteStatement;
|
|
|
10
10
|
|
|
11
11
|
public class UtilsSQLCipher {
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
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"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CapgoCapacitorDataStorageSqlitePlugin } from
|
|
1
|
+
import type { CapgoCapacitorDataStorageSqlitePlugin } from './definitions';
|
|
2
2
|
declare const CapgoCapacitorDataStorageSqlite: CapgoCapacitorDataStorageSqlitePlugin;
|
|
3
|
-
export * from
|
|
3
|
+
export * from './definitions';
|
|
4
4
|
export { CapgoCapacitorDataStorageSqlite };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { registerPlugin } from
|
|
2
|
-
const CapgoCapacitorDataStorageSqlite = registerPlugin(
|
|
3
|
-
web: () => import(
|
|
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
|
|
6
|
+
export * from './definitions';
|
|
8
7
|
export { CapgoCapacitorDataStorageSqlite };
|
|
9
8
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -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,
|
|
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
|
|
2
|
-
import { Data } from
|
|
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
|
|
3
|
-
import { Data } from
|
|
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(
|
|
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(
|
|
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) !=
|
|
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(
|
|
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":"AAAA,6CAA6C;AAC7C,OAAO,WAAW,MAAM,aAAa,CAAC;AAQtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,wCAAwC;AACxC,+CAA+C;AAC/C,MAAM,OAAO,qBAAqB;IAKhC,YAAY,MAAc,EAAE,SAAiB;QAJrC,QAAG,GAAQ,IAAI,CAAC;QAKtB,MAAM,GAAG,GAAY,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,SAAS,CAAC,MAAc,EAAE,SAAiB;QACzC,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,MAAM,GAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,SAAS,CAAC,MAAc,EAAE,SAAiB;QACzC,MAAM,MAAM,GAAQ;YAClB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;YACnD,OAAO,EAAE,CAAC;SACX,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,GAAG,GAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC;YACH,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,MAAM,MAAM,GAAa,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,GAAG,GAAG,IAAI,CAAC;YACvC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,2BAA2B;YAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,iFAAiF;YACjF,aAAa,CAAC,OAAO,GAAG,GAAG,EAAE;gBAC3B,OAAO,MAAM,CAAC,0BAA0B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC;YAEF,aAAa,CAAC,SAAS,GAAG,GAAG,EAAE;gBAC7B,IAAI,MAAM,GAAa,EAAE,CAAC;gBAC1B,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC;gBAChC,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC;gBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBACzB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;wBAC3C,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,IAAU;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,IAAI,CAAC;YACH,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAS,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,GAAG;aACZ,UAAU,CAAC,IAAI,CAAC;aAChB,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,GAAG;aACZ,KAAK,EAAE;aACP,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,GAAG;aACZ,IAAI,EAAE;aACN,IAAI,CAAC,CAAC,IAAc,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG;aACZ,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAW,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,GAAG;aACZ,OAAO,CAAC,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE;YACtC,MAAM,IAAI,GAAS,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,MAA+B;QAC9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAS,IAAI,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;gBACvB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrB,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAc,EAAe,CAAC;QAC3C,MAAM,aAAa,GAAW,IAAI,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC;YACH,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;YAC1B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;YACpB,qBAAqB;YACrB,MAAM,MAAM,GAAa,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,MAAM,QAAQ,GAAc,EAAe,CAAC;gBAC5C,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;gBACtB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnE,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,SAAS,GAAW,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;wBAC9B,MAAM,OAAO,GAA0B,EAA2B,CAAC;wBACnE,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;4BACzB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;4BAC5B,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBAClD,CAAC;6BAAM,CAAC;4BACN,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;wBAClD,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,kBAAkB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;oBACjE,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;oBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;YAChC,MAAM,GAAG,GAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,kBAAkB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;gBACjE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;YAChC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF","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"]}
|