@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 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&lt;{ port: number; token: string; database: string; }&gt;</code>
395
+ **Returns:** <code>Promise&lt;{ port: number; token: string; database: string; persistent?: boolean; }&gt;</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&lt;{ port: number; token: string; }&gt;</code>
431
+ **Returns:** <code>Promise&lt;{ port: number; token: string; persistent?: boolean; }&gt;</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 | 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
- | **`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`. | |
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
@@ -26,6 +26,7 @@ android {
26
26
  versionCode 1
27
27
  versionName "1.0"
28
28
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
29
+ consumerProguardFiles 'consumer-rules.pro'
29
30
  }
30
31
  buildTypes {
31
32
  release {
@@ -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.17";
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":"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"}
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;
@@ -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;IAKpD,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,MAAM;IAOR,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAsDlG,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,CAAA;KAAE,CAAC;IAYtF,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"}
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.webConfig = config;
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
- await this.applyPerformanceConfig(promiser, dbId, options);
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) {
@@ -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.webConfig = config;
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
- await this.applyPerformanceConfig(promiser, dbId, options);
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) {