@capgo/capacitor-fast-sql 8.2.17 → 8.2.18
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/README.md +9 -8
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +14 -0
- package/android/src/main/java/app/capgo/capacitor/fastsql/CapgoCapacitorFastSqlPlugin.java +1 -1
- package/dist/esm/definitions.d.ts +11 -0
- package/dist/esm/definitions.d.ts.map +1 -1
- package/dist/esm/web.d.ts +2 -0
- package/dist/esm/web.d.ts.map +1 -1
- package/dist/esm/web.js +22 -2
- package/dist/plugin.cjs.js +22 -2
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +22 -2
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/CapgoCapacitorFastSqlPlugin/CapgoCapacitorFastSqlPlugin.swift +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -383,7 +383,7 @@ bypassing Capacitor's standard bridge for better performance with sync operation
|
|
|
383
383
|
### connect(...)
|
|
384
384
|
|
|
385
385
|
```typescript
|
|
386
|
-
connect(options: SQLConnectionOptions) => Promise<{ port: number; token: string; database: string; }>
|
|
386
|
+
connect(options: SQLConnectionOptions) => Promise<{ port: number; token: string; database: string; persistent?: boolean; }>
|
|
387
387
|
```
|
|
388
388
|
|
|
389
389
|
Initialize the database connection and start the HTTP server.
|
|
@@ -392,7 +392,7 @@ Initialize the database connection and start the HTTP server.
|
|
|
392
392
|
| ------------- | --------------------------------------------------------------------- | -------------------- |
|
|
393
393
|
| **`options`** | <code><a href="#sqlconnectionoptions">SQLConnectionOptions</a></code> | - Connection options |
|
|
394
394
|
|
|
395
|
-
**Returns:** <code>Promise<{ port: number; token: string; database: string; }></code>
|
|
395
|
+
**Returns:** <code>Promise<{ port: number; token: string; database: string; persistent?: boolean; }></code>
|
|
396
396
|
|
|
397
397
|
**Since:** 0.0.1
|
|
398
398
|
|
|
@@ -419,7 +419,7 @@ Close database connection and stop the HTTP server.
|
|
|
419
419
|
### getServerInfo(...)
|
|
420
420
|
|
|
421
421
|
```typescript
|
|
422
|
-
getServerInfo(options: { database: string; }) => Promise<{ port: number; token: string; }>
|
|
422
|
+
getServerInfo(options: { database: string; }) => Promise<{ port: number; token: string; persistent?: boolean; }>
|
|
423
423
|
```
|
|
424
424
|
|
|
425
425
|
Get the HTTP server port and token for direct communication.
|
|
@@ -428,7 +428,7 @@ Get the HTTP server port and token for direct communication.
|
|
|
428
428
|
| ------------- | ---------------------------------- | --------------- |
|
|
429
429
|
| **`options`** | <code>{ database: string; }</code> | - Database name |
|
|
430
430
|
|
|
431
|
-
**Returns:** <code>Promise<{ port: number; token: string; }></code>
|
|
431
|
+
**Returns:** <code>Promise<{ port: number; token: string; persistent?: boolean; }></code>
|
|
432
432
|
|
|
433
433
|
**Since:** 0.0.1
|
|
434
434
|
|
|
@@ -658,10 +658,11 @@ OPFS persistence requires Cross-Origin Isolation headers on your web server:
|
|
|
658
658
|
`Cross-Origin-Opener-Policy: same-origin` and
|
|
659
659
|
`Cross-Origin-Embedder-Policy: require-corp`.
|
|
660
660
|
|
|
661
|
-
| Prop
|
|
662
|
-
|
|
|
663
|
-
| **`useOpfs`**
|
|
664
|
-
| **`
|
|
661
|
+
| Prop | Type | Description | Default |
|
|
662
|
+
| ------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ |
|
|
663
|
+
| **`useOpfs`** | <code>boolean</code> | Prefer OPFS persistence via a Web Worker (default: `true`). When OPFS is unavailable, the plugin falls back to a non-persistent database and logs a warning. | <code>true</code> |
|
|
664
|
+
| **`requirePersistence`** | <code>boolean</code> | Reject web connections unless the Worker confirms persistent storage. Defaults to false for compatibility. Consider requiring persistence by default in the next Capacitor major, rather than changing fallback behavior in a minor. | <code>false</code> |
|
|
665
|
+
| **`worker`** | <code><a href="#sqlitewebworker">SqliteWebWorker</a></code> | Custom Worker instance or factory for SQLite Wasm. Advanced: override the default worker from `@sqlite.org/sqlite-wasm`. | |
|
|
665
666
|
|
|
666
667
|
|
|
667
668
|
### Type Aliases
|
package/android/build.gradle
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Consumer ProGuard rules for @capgo/capacitor-fast-sql (merged into app R8 when this AAR is a dependency).
|
|
2
|
+
|
|
3
|
+
# CapgoCapacitorFastSqlPlugin uses Class.forName on this class when encrypted databases are enabled.
|
|
4
|
+
# R8 must keep the type so the optional SQLCipher dependency still resolves at runtime.
|
|
5
|
+
-keep class net.zetetic.database.sqlcipher.SQLiteDatabase { *; }
|
|
6
|
+
|
|
7
|
+
# SQLCipher is compileOnly and also exposes types such as DatabaseErrorHandler
|
|
8
|
+
# directly under net.zetetic.database. Plain-SQLite apps omit the entire artifact.
|
|
9
|
+
-dontwarn net.zetetic.database.**
|
|
10
|
+
|
|
11
|
+
# EncryptedSQLDatabase loads the SQLCipher JNI library by name; keep JNI method names linked from Java.
|
|
12
|
+
-keepclasseswithmembernames class * {
|
|
13
|
+
native <methods>;
|
|
14
|
+
}
|
|
@@ -19,7 +19,7 @@ import java.util.Map;
|
|
|
19
19
|
@CapacitorPlugin(name = "CapgoCapacitorFastSql")
|
|
20
20
|
public class CapgoCapacitorFastSqlPlugin extends Plugin {
|
|
21
21
|
|
|
22
|
-
private final String pluginVersion = "8.2.
|
|
22
|
+
private final String pluginVersion = "8.2.18";
|
|
23
23
|
|
|
24
24
|
private Map<String, DatabaseConnection> databases = new HashMap<>();
|
|
25
25
|
private SQLHTTPServer server;
|
|
@@ -96,6 +96,13 @@ export interface WebConfig {
|
|
|
96
96
|
* @default true
|
|
97
97
|
*/
|
|
98
98
|
useOpfs?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Reject web connections unless the Worker confirms persistent storage.
|
|
101
|
+
* Defaults to false for compatibility. Consider requiring persistence by default
|
|
102
|
+
* in the next Capacitor major, rather than changing fallback behavior in a minor.
|
|
103
|
+
* @default false
|
|
104
|
+
*/
|
|
105
|
+
requirePersistence?: boolean;
|
|
99
106
|
/**
|
|
100
107
|
* Custom Worker instance or factory for SQLite Wasm.
|
|
101
108
|
* Advanced: override the default worker from `@sqlite.org/sqlite-wasm`.
|
|
@@ -139,6 +146,8 @@ export interface CapgoCapacitorFastSqlPlugin {
|
|
|
139
146
|
port: number;
|
|
140
147
|
token: string;
|
|
141
148
|
database: string;
|
|
149
|
+
/** Whether the web Worker confirms persistent storage. Absent on native. */
|
|
150
|
+
persistent?: boolean;
|
|
142
151
|
}>;
|
|
143
152
|
/**
|
|
144
153
|
* Close database connection and stop the HTTP server.
|
|
@@ -173,6 +182,8 @@ export interface CapgoCapacitorFastSqlPlugin {
|
|
|
173
182
|
}): Promise<{
|
|
174
183
|
port: number;
|
|
175
184
|
token: string;
|
|
185
|
+
/** Whether the web Worker confirms persistent storage. Absent on native. */
|
|
186
|
+
persistent?: boolean;
|
|
176
187
|
}>;
|
|
177
188
|
/**
|
|
178
189
|
* Execute a SQL query via Capacitor bridge (for simple queries).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AACtD;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED;;;;GAIG;AACH,oBAAY,cAAc;IACxB,eAAe,qBAAqB;IACpC,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,YAAY,iBAAiB;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAC9C,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare class CapgoCapacitorFastSqlWeb extends WebPlugin implements Capgo
|
|
|
23
23
|
port: number;
|
|
24
24
|
token: string;
|
|
25
25
|
database: string;
|
|
26
|
+
persistent: boolean;
|
|
26
27
|
}>;
|
|
27
28
|
disconnect(options: {
|
|
28
29
|
database: string;
|
|
@@ -32,6 +33,7 @@ export declare class CapgoCapacitorFastSqlWeb extends WebPlugin implements Capgo
|
|
|
32
33
|
}): Promise<{
|
|
33
34
|
port: number;
|
|
34
35
|
token: string;
|
|
36
|
+
persistent: boolean;
|
|
35
37
|
}>;
|
|
36
38
|
execute(options: {
|
|
37
39
|
database: string;
|
package/dist/esm/web.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,eAAe,CAAC;AAevB;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,SAAU,YAAW,2BAA2B;IAC5F,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAiB;IAElC;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,eAAe,CAAC;AAevB;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,SAAU,YAAW,2BAA2B;IAC5F,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAiB;IAElC;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,MAAM;IAOR,OAAO,CACX,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAiE5E,UAAU,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,aAAa,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAa3G,OAAO,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA+ClG,gBAAgB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/F,iBAAiB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,mBAAmB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAOzD,sBAAsB;IAkBpC,OAAO,CAAC,aAAa;IAMf,gBAAgB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAGvD"}
|
package/dist/esm/web.js
CHANGED
|
@@ -21,7 +21,13 @@ export class CapgoCapacitorFastSqlWeb extends WebPlugin {
|
|
|
21
21
|
* Must be called before connect() when overriding the default worker.
|
|
22
22
|
*/
|
|
23
23
|
async configureWeb(config) {
|
|
24
|
-
this.
|
|
24
|
+
if (this.promiserPromise || this.databases.size > 0) {
|
|
25
|
+
throw new Error('Configure web storage before opening the first database');
|
|
26
|
+
}
|
|
27
|
+
if (config.requirePersistence && config.useOpfs === false) {
|
|
28
|
+
throw new Error('requirePersistence requires OPFS');
|
|
29
|
+
}
|
|
30
|
+
this.webConfig = Object.assign({}, config);
|
|
25
31
|
this.promiserPromise = null;
|
|
26
32
|
}
|
|
27
33
|
getPromiser() {
|
|
@@ -47,6 +53,7 @@ export class CapgoCapacitorFastSqlWeb extends WebPlugin {
|
|
|
47
53
|
port: existing.port,
|
|
48
54
|
token: existing.token,
|
|
49
55
|
database: options.database,
|
|
56
|
+
persistent: existing.persistent,
|
|
50
57
|
};
|
|
51
58
|
}
|
|
52
59
|
const path = this.dbPath(options.database);
|
|
@@ -60,6 +67,8 @@ export class CapgoCapacitorFastSqlWeb extends WebPlugin {
|
|
|
60
67
|
});
|
|
61
68
|
}
|
|
62
69
|
catch (opfsError) {
|
|
70
|
+
if (this.webConfig.requirePersistence)
|
|
71
|
+
throw opfsError;
|
|
63
72
|
console.warn('[CapgoCapacitorFastSql] OPFS unavailable; web database will not persist across reloads. ' +
|
|
64
73
|
'Serve with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp.', opfsError);
|
|
65
74
|
openResult = await promiser('open', { filename: path });
|
|
@@ -73,7 +82,16 @@ export class CapgoCapacitorFastSqlWeb extends WebPlugin {
|
|
|
73
82
|
if (!dbId) {
|
|
74
83
|
throw new Error('Failed to open SQLite Wasm database: missing dbId');
|
|
75
84
|
}
|
|
76
|
-
|
|
85
|
+
try {
|
|
86
|
+
if (this.webConfig.requirePersistence && !persistent) {
|
|
87
|
+
throw new Error('SQLite Worker did not confirm persistent storage');
|
|
88
|
+
}
|
|
89
|
+
await this.applyPerformanceConfig(promiser, dbId, options);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
await promiser({ type: 'close', dbId, args: {} });
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
77
95
|
const token = this.generateToken();
|
|
78
96
|
const port = this.nextPort++;
|
|
79
97
|
this.databases.set(options.database, { dbId, token, port, persistent });
|
|
@@ -81,6 +99,7 @@ export class CapgoCapacitorFastSqlWeb extends WebPlugin {
|
|
|
81
99
|
port,
|
|
82
100
|
token,
|
|
83
101
|
database: options.database,
|
|
102
|
+
persistent,
|
|
84
103
|
};
|
|
85
104
|
}
|
|
86
105
|
async disconnect(options) {
|
|
@@ -101,6 +120,7 @@ export class CapgoCapacitorFastSqlWeb extends WebPlugin {
|
|
|
101
120
|
return {
|
|
102
121
|
port: dbInfo.port,
|
|
103
122
|
token: dbInfo.token,
|
|
123
|
+
persistent: dbInfo.persistent,
|
|
104
124
|
};
|
|
105
125
|
}
|
|
106
126
|
async execute(options) {
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -1143,7 +1143,13 @@ class CapgoCapacitorFastSqlWeb extends core.WebPlugin {
|
|
|
1143
1143
|
* Must be called before connect() when overriding the default worker.
|
|
1144
1144
|
*/
|
|
1145
1145
|
async configureWeb(config) {
|
|
1146
|
-
this.
|
|
1146
|
+
if (this.promiserPromise || this.databases.size > 0) {
|
|
1147
|
+
throw new Error('Configure web storage before opening the first database');
|
|
1148
|
+
}
|
|
1149
|
+
if (config.requirePersistence && config.useOpfs === false) {
|
|
1150
|
+
throw new Error('requirePersistence requires OPFS');
|
|
1151
|
+
}
|
|
1152
|
+
this.webConfig = Object.assign({}, config);
|
|
1147
1153
|
this.promiserPromise = null;
|
|
1148
1154
|
}
|
|
1149
1155
|
getPromiser() {
|
|
@@ -1169,6 +1175,7 @@ class CapgoCapacitorFastSqlWeb extends core.WebPlugin {
|
|
|
1169
1175
|
port: existing.port,
|
|
1170
1176
|
token: existing.token,
|
|
1171
1177
|
database: options.database,
|
|
1178
|
+
persistent: existing.persistent,
|
|
1172
1179
|
};
|
|
1173
1180
|
}
|
|
1174
1181
|
const path = this.dbPath(options.database);
|
|
@@ -1182,6 +1189,8 @@ class CapgoCapacitorFastSqlWeb extends core.WebPlugin {
|
|
|
1182
1189
|
});
|
|
1183
1190
|
}
|
|
1184
1191
|
catch (opfsError) {
|
|
1192
|
+
if (this.webConfig.requirePersistence)
|
|
1193
|
+
throw opfsError;
|
|
1185
1194
|
console.warn('[CapgoCapacitorFastSql] OPFS unavailable; web database will not persist across reloads. ' +
|
|
1186
1195
|
'Serve with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp.', opfsError);
|
|
1187
1196
|
openResult = await promiser('open', { filename: path });
|
|
@@ -1195,7 +1204,16 @@ class CapgoCapacitorFastSqlWeb extends core.WebPlugin {
|
|
|
1195
1204
|
if (!dbId) {
|
|
1196
1205
|
throw new Error('Failed to open SQLite Wasm database: missing dbId');
|
|
1197
1206
|
}
|
|
1198
|
-
|
|
1207
|
+
try {
|
|
1208
|
+
if (this.webConfig.requirePersistence && !persistent) {
|
|
1209
|
+
throw new Error('SQLite Worker did not confirm persistent storage');
|
|
1210
|
+
}
|
|
1211
|
+
await this.applyPerformanceConfig(promiser, dbId, options);
|
|
1212
|
+
}
|
|
1213
|
+
catch (error) {
|
|
1214
|
+
await promiser({ type: 'close', dbId, args: {} });
|
|
1215
|
+
throw error;
|
|
1216
|
+
}
|
|
1199
1217
|
const token = this.generateToken();
|
|
1200
1218
|
const port = this.nextPort++;
|
|
1201
1219
|
this.databases.set(options.database, { dbId, token, port, persistent });
|
|
@@ -1203,6 +1221,7 @@ class CapgoCapacitorFastSqlWeb extends core.WebPlugin {
|
|
|
1203
1221
|
port,
|
|
1204
1222
|
token,
|
|
1205
1223
|
database: options.database,
|
|
1224
|
+
persistent,
|
|
1206
1225
|
};
|
|
1207
1226
|
}
|
|
1208
1227
|
async disconnect(options) {
|
|
@@ -1223,6 +1242,7 @@ class CapgoCapacitorFastSqlWeb extends core.WebPlugin {
|
|
|
1223
1242
|
return {
|
|
1224
1243
|
port: dbInfo.port,
|
|
1225
1244
|
token: dbInfo.token,
|
|
1245
|
+
persistent: dbInfo.persistent,
|
|
1226
1246
|
};
|
|
1227
1247
|
}
|
|
1228
1248
|
async execute(options) {
|