@@ -8,20 +8,45 @@ import 'package:uuid/uuid.dart';
88
99final class PowerSyncAsyncSqliteController extends AsyncSqliteController {
1010 @override
11- Future <WorkerDatabase > openDatabase (
12- WasmSqlite3 sqlite3, String path, String vfs) async {
13- final asyncDb = await super .openDatabase (sqlite3, path, vfs);
11+ Future <WorkerDatabase > openDatabase (WasmSqlite3 sqlite3, String path,
12+ String vfs, JSAny ? additionalData) async {
13+ final asyncDb =
14+ await super .openDatabase (sqlite3, path, vfs, additionalData);
1415 setupPowerSyncDatabase (asyncDb.database);
1516 return asyncDb;
1617 }
1718
19+ @override
20+ CommonDatabase openUnderlying (
21+ WasmSqlite3 sqlite3, String path, String vfs, JSAny ? additionalData) {
22+ final options = additionalData == null
23+ ? null
24+ : additionalData as PowerSyncAdditionalOpenOptions ;
25+ if (options != null && options.useMultipleCiphersVfs) {
26+ vfs = 'multipleciphers-$vfs ' ;
27+ }
28+
29+ return sqlite3.open (path, vfs: vfs);
30+ }
31+
1832 @override
1933 Future <JSAny ?> handleCustomRequest (
2034 ClientConnection connection, JSAny ? request) {
2135 throw UnimplementedError ();
2236 }
2337}
2438
39+ @JS ()
40+ @anonymous
41+ extension type PowerSyncAdditionalOpenOptions ._(JSObject _)
42+ implements JSObject {
43+ external factory PowerSyncAdditionalOpenOptions ({
44+ required bool useMultipleCiphersVfs,
45+ });
46+
47+ external bool get useMultipleCiphersVfs;
48+ }
49+
2550// Registers custom SQLite functions for the SQLite connection
2651void setupPowerSyncDatabase (CommonDatabase database) {
2752 setupCommonDBFunctions (database);
0 commit comments