@@ -403,14 +403,16 @@ final class DatabaseClient implements WebSqlite {
403403 WorkerConnection connection) async {
404404 SimpleSuccessResponse response;
405405 try {
406- response = await connection.sendRequest (
407- CompatibilityCheck (
408- requestId: 0 ,
409- type: MessageType .dedicatedCompatibilityCheck,
410- databaseName: databaseName,
411- ),
412- MessageType .simpleSuccessResponse,
413- );
406+ response = await connection
407+ .sendRequest (
408+ CompatibilityCheck (
409+ requestId: 0 ,
410+ type: MessageType .dedicatedCompatibilityCheck,
411+ databaseName: databaseName,
412+ ),
413+ MessageType .simpleSuccessResponse,
414+ )
415+ .timeout (_workerInitializationTimeout);
414416 } on Object {
415417 return ;
416418 }
@@ -451,14 +453,16 @@ final class DatabaseClient implements WebSqlite {
451453 Future <void > sharedCompatibilityCheck (WorkerConnection connection) async {
452454 SimpleSuccessResponse response;
453455 try {
454- response = await connection.sendRequest (
455- CompatibilityCheck (
456- requestId: 0 ,
457- type: MessageType .sharedCompatibilityCheck,
458- databaseName: databaseName,
459- ),
460- MessageType .simpleSuccessResponse,
461- );
456+ response = await connection
457+ .sendRequest (
458+ CompatibilityCheck (
459+ requestId: 0 ,
460+ type: MessageType .sharedCompatibilityCheck,
461+ databaseName: databaseName,
462+ ),
463+ MessageType .simpleSuccessResponse,
464+ )
465+ .timeout (_workerInitializationTimeout);
462466 } on Object {
463467 return ;
464468 }
@@ -522,7 +526,7 @@ final class DatabaseClient implements WebSqlite {
522526
523527 @override
524528 Future <Database > connect (String name, StorageMode type, AccessMode access,
525- {bool onlyOpenVfs = false }) async {
529+ {bool onlyOpenVfs = false , JSAny ? additionalOptions }) async {
526530 await startWorkers ();
527531
528532 WorkerConnection connection;
@@ -553,6 +557,7 @@ final class DatabaseClient implements WebSqlite {
553557 databaseName: name,
554558 storageMode: type.resolveToVfs (shared),
555559 onlyOpenVfs: onlyOpenVfs,
560+ additionalData: additionalOptions,
556561 ),
557562 MessageType .simpleSuccessResponse,
558563 );
@@ -564,7 +569,7 @@ final class DatabaseClient implements WebSqlite {
564569
565570 @override
566571 Future <ConnectToRecommendedResult > connectToRecommended (String name,
567- {bool onlyOpenVfs = false }) async {
572+ {bool onlyOpenVfs = false , JSAny ? additionalOptions }) async {
568573 final probed = await runFeatureDetection (databaseName: name);
569574
570575 // If we have an existing database in storage, we want to keep using that
@@ -593,8 +598,8 @@ final class DatabaseClient implements WebSqlite {
593598
594599 final (storage, access) = availableImplementations.firstOrNull ??
595600 (StorageMode .inMemory, AccessMode .inCurrentContext);
596- final database =
597- await connect (name, storage, access, onlyOpenVfs : onlyOpenVfs );
601+ final database = await connect (name, storage, access,
602+ onlyOpenVfs : onlyOpenVfs, additionalOptions : additionalOptions );
598603
599604 return ConnectToRecommendedResult (
600605 database: database,
@@ -621,6 +626,8 @@ final class DatabaseClient implements WebSqlite {
621626 // because we can actually share database resources between tabs.
622627 return a.$2.index.compareTo (b.$2.index);
623628 }
629+
630+ static const _workerInitializationTimeout = Duration (seconds: 1 );
624631}
625632
626633extension on StorageMode {
0 commit comments