@capgo/capacitor-data-storage-sqlite 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CapacitorDataStorageSqlite.podspec +18 -0
  2. package/LICENSE +21 -0
  3. package/android/build.gradle +63 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/CapacitorDataStorageSqlite.java +387 -0
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/CapacitorDataStorageSqlitePlugin.java +447 -0
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/RetHandler.java +117 -0
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/Data.java +8 -0
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/Global.java +7 -0
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonStore.java +131 -0
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonTable.java +110 -0
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonValue.java +89 -0
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/StorageDatabaseHelper.java +691 -0
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capacitordatastoragesqlite/cdssUtils/UtilsSQLCipher.java +162 -0
  15. package/android/src/main/res/.gitkeep +0 -0
  16. package/dist/docs.json +995 -0
  17. package/dist/esm/definitions.d.ts +296 -0
  18. package/dist/esm/definitions.js +2 -0
  19. package/dist/esm/definitions.js.map +1 -0
  20. package/dist/esm/index.d.ts +4 -0
  21. package/dist/esm/index.js +9 -0
  22. package/dist/esm/index.js.map +1 -0
  23. package/dist/esm/web-utils/Data.d.ts +5 -0
  24. package/dist/esm/web-utils/Data.js +3 -0
  25. package/dist/esm/web-utils/Data.js.map +1 -0
  26. package/dist/esm/web-utils/StorageDatabaseHelper.d.ts +23 -0
  27. package/dist/esm/web-utils/StorageDatabaseHelper.js +247 -0
  28. package/dist/esm/web-utils/StorageDatabaseHelper.js.map +1 -0
  29. package/dist/esm/web-utils/json-utils.d.ts +15 -0
  30. package/dist/esm/web-utils/json-utils.js +76 -0
  31. package/dist/esm/web-utils/json-utils.js.map +1 -0
  32. package/dist/esm/web.d.ts +27 -0
  33. package/dist/esm/web.js +295 -0
  34. package/dist/esm/web.js.map +1 -0
  35. package/dist/plugin.cjs.js +633 -0
  36. package/dist/plugin.cjs.js.map +1 -0
  37. package/dist/plugin.js +635 -0
  38. package/dist/plugin.js.map +1 -0
  39. package/electron/dist/plugin.js +1044 -0
  40. package/electron/dist/plugin.js.map +1 -0
  41. package/electron/rollup.config.mjs +17 -0
  42. package/electron/tsconfig.json +19 -0
  43. package/ios/Plugin/CapacitorDataStorageSqlite.swift +550 -0
  44. package/ios/Plugin/CapacitorDataStorageSqlitePlugin.h +10 -0
  45. package/ios/Plugin/CapacitorDataStorageSqlitePlugin.m +29 -0
  46. package/ios/Plugin/CapacitorDataStorageSqlitePlugin.swift +550 -0
  47. package/ios/Plugin/Data.swift +16 -0
  48. package/ios/Plugin/Global.swift +13 -0
  49. package/ios/Plugin/ImportExportJson/JsonStore.swift +47 -0
  50. package/ios/Plugin/Info.plist +24 -0
  51. package/ios/Plugin/ReturnHandler.swift +85 -0
  52. package/ios/Plugin/StorageDatabaseHelper.swift +603 -0
  53. package/ios/Plugin/Utils/Blob.swift +41 -0
  54. package/ios/Plugin/Utils/UtilsBinding.swift +73 -0
  55. package/ios/Plugin/Utils/UtilsEncryption.swift +79 -0
  56. package/ios/Plugin/Utils/UtilsFile.swift +244 -0
  57. package/ios/Plugin/Utils/UtilsSQLCipher.swift +605 -0
  58. package/package.json +96 -0
  59. package/readme.md +203 -0
@@ -0,0 +1,296 @@
1
+ export interface CapacitorDataStorageSqlitePlugin {
2
+ /**
3
+ *
4
+ * @param options: capEchoOptions
5
+ * @return Promise<capEchoResult>
6
+ * @since 0.0.1
7
+ */
8
+ echo(options: capEchoOptions): Promise<capEchoResult>;
9
+ /**
10
+ * Open a store
11
+ * @param options: capOpenStorageOptions
12
+ * @returns Promise<void>
13
+ * @since 0.0.1
14
+ */
15
+ openStore(options: capOpenStorageOptions): Promise<void>;
16
+ /**
17
+ * Close the Store
18
+ * @param options: capStorageOptions
19
+ * @returns Promise<void>
20
+ * @since 3.0.0
21
+ */
22
+ closeStore(options: capStorageOptions): Promise<void>;
23
+ /**
24
+ * Check if the Store is opened
25
+ * @param options: capStorageOptions
26
+ * @returns Promise<capDataStorageResult>
27
+ * @since 3.0.0
28
+ */
29
+ isStoreOpen(options: capStorageOptions): Promise<capDataStorageResult>;
30
+ /**
31
+ * Check if the Store exists
32
+ * @param options: capStorageOptions
33
+ * @returns Promise<capDataStorageResult>
34
+ * @since 3.0.0
35
+ */
36
+ isStoreExists(options: capStorageOptions): Promise<capDataStorageResult>;
37
+ /**
38
+ * Delete a store
39
+ * @param options: capOpenStorageOptions
40
+ * @returns Promise<void>
41
+ * @since 0.0.1
42
+ */
43
+ deleteStore(options: capOpenStorageOptions): Promise<void>;
44
+ /**
45
+ * Set or Add a table to an existing store
46
+ * @param options: capTableStorageOptions
47
+ * @returns Promise<void>
48
+ * @since 0.0.1
49
+ */
50
+ setTable(options: capTableStorageOptions): Promise<void>;
51
+ /**
52
+ * Store a data with given key and value
53
+ * @param options: capDataStorageOptions
54
+ * @returns Promise<void>
55
+ * @since 0.0.1
56
+ */
57
+ set(options: capDataStorageOptions): Promise<void>;
58
+ /**
59
+ * Retrieve a data value for a given data key
60
+ * @param options: capDataStorageOptions
61
+ * @returns Promise<capValueResult>
62
+ * @since 0.0.1
63
+ */
64
+ get(options: capDataStorageOptions): Promise<capValueResult>;
65
+ /**
66
+ * Remove a data with given key
67
+ * @param options: capDataStorageOptions
68
+ * @returns Promise<void>
69
+ * @since 0.0.1
70
+ */
71
+ remove(options: capDataStorageOptions): Promise<void>;
72
+ /**
73
+ * Clear the Data Store (delete all keys)
74
+ * @returns Promise<void>
75
+ * @since 0.0.1
76
+ */
77
+ clear(): Promise<void>;
78
+ /**
79
+ * Check if a data key exists
80
+ * @param options: capDataStorageOptions
81
+ * @returns Promise<capDataStorageResult>
82
+ * @since 0.0.1
83
+ */
84
+ iskey(options: capDataStorageOptions): Promise<capDataStorageResult>;
85
+ /**
86
+ * Get the data key list
87
+ * @returns Promise<capKeysResult>
88
+ * @since 0.0.1
89
+ */
90
+ keys(): Promise<capKeysResult>;
91
+ /**
92
+ * Get the data value list
93
+ * @returns Promise<capValuesResult>
94
+ * @since 0.0.1
95
+ */
96
+ values(): Promise<capValuesResult>;
97
+ /**
98
+ * Get the data value list for filter keys
99
+ * @param options: capFilterStorageOptions
100
+ * @returns Promise<capValuesResult>
101
+ * @since 2.4.2
102
+ */
103
+ filtervalues(options: capFilterStorageOptions): Promise<capValuesResult>;
104
+ /**
105
+ * Get the data key/value pair list
106
+ * @returns Promise<capKeysValuesResult>
107
+ * @since 0.0.1
108
+ */
109
+ keysvalues(): Promise<capKeysValuesResult>;
110
+ /**
111
+ * Check if a table exists
112
+ * @param options: capTableStorageOptions
113
+ * @returns Promise<capDataStorageResult>
114
+ * @since 3.0.0
115
+ */
116
+ isTable(options: capTableStorageOptions): Promise<capDataStorageResult>;
117
+ /**
118
+ * Get the table list for the current store
119
+ * @returns Promise<capTablesResult>
120
+ * @since 3.0.0
121
+ */
122
+ tables(): Promise<capTablesResult>;
123
+ /**
124
+ * Delete a table
125
+ * @param options: capTableStorageOptions
126
+ * @returns Promise<void>
127
+ * @since 3.0.0
128
+ */
129
+ deleteTable(options: capTableStorageOptions): Promise<void>;
130
+ /**
131
+ * Import a database From a JSON
132
+ * @param jsonstring string
133
+ * @returns Promise<capDataStorageChanges>
134
+ * @since 3.2.0
135
+ */
136
+ importFromJson(options: capStoreImportOptions): Promise<capDataStorageChanges>;
137
+ /**
138
+ * Check the validity of a JSON Object
139
+ * @param jsonstring string
140
+ * @returns Promise<capDataStorageResult>
141
+ * @since 3.2.0
142
+ */
143
+ isJsonValid(options: capStoreImportOptions): Promise<capDataStorageResult>;
144
+ /**
145
+ * Export the given database to a JSON Object
146
+ * @returns Promise<capStoreJson>
147
+ * @since 3.2.0
148
+ */
149
+ exportToJson(): Promise<capStoreJson>;
150
+ }
151
+ export interface capEchoOptions {
152
+ /**
153
+ * String to be echoed
154
+ */
155
+ value?: string;
156
+ }
157
+ export interface capOpenStorageOptions {
158
+ /**
159
+ * The storage database name
160
+ */
161
+ database?: string;
162
+ /**
163
+ * The storage table name
164
+ */
165
+ table?: string;
166
+ /**
167
+ * Set to true for database encryption
168
+ */
169
+ encrypted?: boolean;
170
+ /***
171
+ * Set the mode for database encryption
172
+ * ["encryption", "secret","newsecret"]
173
+ */
174
+ mode?: string;
175
+ }
176
+ export interface capDataStorageOptions {
177
+ /**
178
+ * The data name
179
+ */
180
+ key: string;
181
+ /**
182
+ * The data value when required
183
+ */
184
+ value?: string;
185
+ }
186
+ export interface capStorageOptions {
187
+ /**
188
+ * The storage name
189
+ */
190
+ database: string;
191
+ }
192
+ export interface capTableStorageOptions {
193
+ /**
194
+ * The storage table name
195
+ */
196
+ table: string;
197
+ }
198
+ export interface capFilterStorageOptions {
199
+ /**
200
+ * The filter data for filtering keys
201
+ *
202
+ * ['%filter', 'filter', 'filter%'] for
203
+ * [starts with filter, contains filter, ends with filter]
204
+ */
205
+ filter: string;
206
+ }
207
+ export interface capEchoResult {
208
+ /**
209
+ * String returned
210
+ */
211
+ value: string;
212
+ }
213
+ export interface capDataStorageResult {
214
+ /**
215
+ * result set to true when successful else false
216
+ */
217
+ result?: boolean;
218
+ /**
219
+ * a returned message
220
+ */
221
+ message?: string;
222
+ }
223
+ export interface capValueResult {
224
+ /**
225
+ * the data value for a given data key
226
+ */
227
+ value: string;
228
+ }
229
+ export interface capKeysResult {
230
+ /**
231
+ * the data key list as an Array
232
+ */
233
+ keys: string[];
234
+ }
235
+ export interface capValuesResult {
236
+ /**
237
+ * the data values list as an Array
238
+ */
239
+ values: string[];
240
+ }
241
+ export interface capKeysValuesResult {
242
+ /**
243
+ * the data keys/values list as an Array of {key:string,value:string}
244
+ */
245
+ keysvalues: any[];
246
+ }
247
+ export interface capTablesResult {
248
+ /**
249
+ * the tables list as an Array
250
+ */
251
+ tables: string[];
252
+ }
253
+ export interface JsonStore {
254
+ /**
255
+ * The database name
256
+ */
257
+ database: string;
258
+ /**
259
+ * Set to true (database encryption) / false
260
+ * iOS & Android only
261
+ */
262
+ encrypted: boolean;
263
+ /***
264
+ * Array of Table (JsonTable)
265
+ */
266
+ tables: JsonTable[];
267
+ }
268
+ export interface JsonTable {
269
+ /**
270
+ * The database name
271
+ */
272
+ name: string;
273
+ /***
274
+ * Array of Values (capDataStorageOptions)
275
+ */
276
+ values?: capDataStorageOptions[];
277
+ }
278
+ export interface capDataStorageChanges {
279
+ /**
280
+ * the number of changes from an importFromJson command
281
+ */
282
+ changes?: number;
283
+ }
284
+ export interface capStoreImportOptions {
285
+ /**
286
+ * Set the JSON object to import
287
+ *
288
+ */
289
+ jsonstring?: string;
290
+ }
291
+ export interface capStoreJson {
292
+ /**
293
+ * an export JSON object
294
+ */
295
+ export?: JsonStore;
296
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface CapacitorDataStorageSqlitePlugin {\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"]}
@@ -0,0 +1,4 @@
1
+ import type { CapacitorDataStorageSqlitePlugin } from "./definitions";
2
+ declare const CapacitorDataStorageSqlite: CapacitorDataStorageSqlitePlugin;
3
+ export * from "./definitions";
4
+ export { CapacitorDataStorageSqlite };
@@ -0,0 +1,9 @@
1
+ import { registerPlugin } from "@capacitor/core";
2
+ const CapacitorDataStorageSqlite = registerPlugin("CapacitorDataStorageSqlite", {
3
+ web: () => import("./web").then((m) => new m.CapacitorDataStorageSqliteWeb()),
4
+ electron: () => window.CapacitorCustomPlatform.plugins
5
+ .CapacitorDataStorageSqlite,
6
+ });
7
+ export * from "./definitions";
8
+ export { CapacitorDataStorageSqlite };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,0BAA0B,GAC9B,cAAc,CACZ,4BAA4B,EAC5B;IACE,GAAG,EAAE,GAAG,EAAE,CACR,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,6BAA6B,EAAE,CAAC;IACpE,QAAQ,EAAE,GAAG,EAAE,CACZ,MAAc,CAAC,uBAAuB,CAAC,OAAO;SAC5C,0BAA0B;CAChC,CACF,CAAC;AAEJ,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,CAAC","sourcesContent":["import { registerPlugin } from \"@capacitor/core\";\n\nimport type { CapacitorDataStorageSqlitePlugin } from \"./definitions\";\n\nconst CapacitorDataStorageSqlite =\n registerPlugin<CapacitorDataStorageSqlitePlugin>(\n \"CapacitorDataStorageSqlite\",\n {\n web: () =>\n import(\"./web\").then((m) => new m.CapacitorDataStorageSqliteWeb()),\n electron: () =>\n (window as any).CapacitorCustomPlatform.plugins\n .CapacitorDataStorageSqlite,\n },\n );\n\nexport * from \"./definitions\";\nexport { CapacitorDataStorageSqlite };\n"]}
@@ -0,0 +1,5 @@
1
+ export declare class Data {
2
+ id?: number;
3
+ name?: string;
4
+ value?: string;
5
+ }
@@ -0,0 +1,3 @@
1
+ export class Data {
2
+ }
3
+ //# sourceMappingURL=Data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Data.js","sourceRoot":"","sources":["../../../src/web-utils/Data.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,IAAI;CAIhB","sourcesContent":["export class Data {\n id?: number;\n name?: string;\n value?: string;\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import type { capDataStorageOptions, JsonStore } from "../definitions";
2
+ import { Data } from "./Data";
3
+ export declare class StorageDatabaseHelper {
4
+ private _db;
5
+ private _dbName;
6
+ private _tableName;
7
+ constructor(dbName: string, tableName: string);
8
+ openStore(dbName: string, tableName: string): boolean;
9
+ setConfig(dbName: string, tableName: string): any;
10
+ setTable(tableName: string): Promise<void>;
11
+ isTable(table: string): Promise<boolean>;
12
+ tables(): Promise<string[]>;
13
+ set(data: Data): Promise<void>;
14
+ get(name: string): Promise<Data>;
15
+ remove(name: string): Promise<void>;
16
+ clear(): Promise<void>;
17
+ keys(): Promise<string[]>;
18
+ values(): Promise<string[]>;
19
+ keysvalues(): Promise<Data[]>;
20
+ iskey(name: string): Promise<boolean>;
21
+ importJson(values: capDataStorageOptions[]): Promise<number>;
22
+ exportJson(): Promise<JsonStore>;
23
+ }
@@ -0,0 +1,247 @@
1
+ //import LocalForage from 'jeep-localforage';
2
+ import localForage from "localforage";
3
+ import { Data } from "./Data";
4
+ //const DATABASE: string = "storageIDB";
5
+ //const STORAGESTORE: string = "storage_store";
6
+ export class StorageDatabaseHelper {
7
+ constructor(dbName, tableName) {
8
+ this._db = null;
9
+ const res = this.openStore(dbName, tableName);
10
+ if (res) {
11
+ this._dbName = dbName;
12
+ this._tableName = tableName;
13
+ }
14
+ else {
15
+ this._dbName = "";
16
+ this._tableName = "";
17
+ throw new Error("openStore return false");
18
+ }
19
+ }
20
+ openStore(dbName, tableName) {
21
+ let ret = false;
22
+ const config = this.setConfig(dbName, tableName);
23
+ this._db = localForage.createInstance(config);
24
+ if (this._db != null) {
25
+ this._dbName = dbName;
26
+ ret = true;
27
+ }
28
+ return ret;
29
+ }
30
+ setConfig(dbName, tableName) {
31
+ const config = {
32
+ name: dbName,
33
+ storeName: tableName,
34
+ driver: [localForage.INDEXEDDB, localForage.WEBSQL],
35
+ version: 1,
36
+ };
37
+ return config;
38
+ }
39
+ async setTable(tableName) {
40
+ const res = this.openStore(this._dbName, tableName);
41
+ if (res) {
42
+ return Promise.resolve();
43
+ }
44
+ else {
45
+ return Promise.reject(new Error("openStore return false"));
46
+ }
47
+ }
48
+ async isTable(table) {
49
+ if (this._db == null) {
50
+ return Promise.reject(`isTable: this.db is null`);
51
+ }
52
+ try {
53
+ let ret = false;
54
+ const tables = await this.tables();
55
+ if (tables.includes(table))
56
+ ret = true;
57
+ return Promise.resolve(ret);
58
+ }
59
+ catch (err) {
60
+ return Promise.reject(err);
61
+ }
62
+ }
63
+ async tables() {
64
+ return new Promise((resolve, reject) => {
65
+ // Let us open our database
66
+ const DBOpenRequest = window.indexedDB.open(this._dbName);
67
+ // these two event handlers act on the database being opened successfully, or not
68
+ DBOpenRequest.onerror = () => {
69
+ return reject(`Error loading database ${this._dbName}`);
70
+ };
71
+ DBOpenRequest.onsuccess = () => {
72
+ let result = [];
73
+ const db = DBOpenRequest.result;
74
+ const retList = db.objectStoreNames;
75
+ const values = Object.values(retList);
76
+ for (const val of values) {
77
+ if (val.substring(0, 12) != "local-forage") {
78
+ result = [...result, val];
79
+ }
80
+ }
81
+ return resolve(result);
82
+ };
83
+ });
84
+ }
85
+ async set(data) {
86
+ try {
87
+ await this._db.setItem(data.name, data.value);
88
+ return Promise.resolve();
89
+ }
90
+ catch (err) {
91
+ return Promise.reject(err);
92
+ }
93
+ }
94
+ async get(name) {
95
+ try {
96
+ const value = await this._db.getItem(name);
97
+ const data = new Data();
98
+ data.name = name;
99
+ data.value = value;
100
+ return Promise.resolve(data);
101
+ }
102
+ catch (err) {
103
+ return Promise.reject(err);
104
+ }
105
+ }
106
+ async remove(name) {
107
+ return this._db
108
+ .removeItem(name)
109
+ .then(() => {
110
+ return Promise.resolve();
111
+ })
112
+ .catch((error) => {
113
+ return Promise.reject(error);
114
+ });
115
+ }
116
+ async clear() {
117
+ return this._db
118
+ .clear()
119
+ .then(() => {
120
+ return Promise.resolve();
121
+ })
122
+ .catch((error) => {
123
+ return Promise.reject(error);
124
+ });
125
+ }
126
+ async keys() {
127
+ return this._db
128
+ .keys()
129
+ .then((keys) => {
130
+ return Promise.resolve(keys);
131
+ })
132
+ .catch((error) => {
133
+ return Promise.reject(error);
134
+ });
135
+ }
136
+ async values() {
137
+ const values = [];
138
+ return this._db
139
+ .iterate((value) => {
140
+ values.push(value);
141
+ })
142
+ .then(() => {
143
+ return Promise.resolve(values);
144
+ })
145
+ .catch((error) => {
146
+ return Promise.reject(error);
147
+ });
148
+ }
149
+ async keysvalues() {
150
+ const keysvalues = [];
151
+ return this._db
152
+ .iterate((value, key) => {
153
+ const data = new Data();
154
+ data.name = key;
155
+ data.value = value;
156
+ keysvalues.push(data);
157
+ })
158
+ .then(() => {
159
+ return Promise.resolve(keysvalues);
160
+ })
161
+ .catch((error) => {
162
+ return Promise.reject(error);
163
+ });
164
+ }
165
+ async iskey(name) {
166
+ return this.get(name)
167
+ .then((data) => {
168
+ if (data.value != null) {
169
+ return Promise.resolve(true);
170
+ }
171
+ else {
172
+ return Promise.resolve(false);
173
+ }
174
+ })
175
+ .catch((error) => {
176
+ return Promise.reject(error);
177
+ });
178
+ }
179
+ async importJson(values) {
180
+ let changes = 0;
181
+ for (const val of values) {
182
+ try {
183
+ const data = new Data();
184
+ data.name = val.key;
185
+ data.value = val.value;
186
+ await this.set(data);
187
+ changes += 1;
188
+ }
189
+ catch (err) {
190
+ return Promise.reject(err);
191
+ }
192
+ }
193
+ return Promise.resolve(changes);
194
+ }
195
+ async exportJson() {
196
+ const retJson = {};
197
+ const prevTableName = this._tableName;
198
+ try {
199
+ retJson.database = this._dbName.slice(0, -3);
200
+ retJson.encrypted = false;
201
+ retJson.tables = [];
202
+ // get the table list
203
+ const tables = await this.tables();
204
+ for (const table of tables) {
205
+ this._tableName = table;
206
+ const retTable = {};
207
+ retTable.name = table;
208
+ retTable.values = [];
209
+ const res = this.openStore(this._dbName, this._tableName);
210
+ if (res) {
211
+ const dataTable = await this.keysvalues();
212
+ for (const tdata of dataTable) {
213
+ const retData = {};
214
+ if (tdata.name != null) {
215
+ retData.key = tdata.name;
216
+ retData.value = tdata.value;
217
+ retTable.values = [...retTable.values, retData];
218
+ }
219
+ else {
220
+ return Promise.reject("Data.name is undefined");
221
+ }
222
+ }
223
+ retJson.tables = [...retJson.tables, retTable];
224
+ }
225
+ else {
226
+ const msg = `Could not open ${this._dbName} ${this._tableName} `;
227
+ this._tableName = prevTableName;
228
+ return Promise.reject(msg);
229
+ }
230
+ }
231
+ this._tableName = prevTableName;
232
+ const res = this.openStore(this._dbName, this._tableName);
233
+ if (res) {
234
+ return Promise.resolve(retJson);
235
+ }
236
+ else {
237
+ const msg = `Could not open ${this._dbName} ${this._tableName} `;
238
+ return Promise.reject(msg);
239
+ }
240
+ }
241
+ catch (err) {
242
+ this._tableName = prevTableName;
243
+ return Promise.reject(err);
244
+ }
245
+ }
246
+ }
247
+ //# sourceMappingURL=StorageDatabaseHelper.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * IsJsonSQLite
3
+ * @param obj
4
+ */
5
+ export declare const isJsonStore: (obj: any) => boolean;
6
+ /**
7
+ * IsTable
8
+ * @param obj
9
+ */
10
+ export declare const isTable: (obj: any) => boolean;
11
+ /**
12
+ * IsValue
13
+ * @param obj
14
+ */
15
+ export declare const isValue: (obj: any) => boolean;