@@ -5,33 +5,45 @@ import 'package:sqlite3_web/sqlite3_web.dart';
55import  'package:sqlite_async/sqlite_async.dart' ;
66import  'package:sqlite_async/src/web/database/broadcast_updates.dart' ;
77import  'package:sqlite_async/src/web/web_mutex.dart' ;
8+ import  'package:sqlite_async/web.dart' ;
89
910import  'database.dart' ;
11+ import  'worker/worker_utils.dart' ;
1012
1113Map <String , FutureOr <WebSqlite >> webSQLiteImplementations =  {};
1214
1315/// Web implementation of [AbstractDefaultSqliteOpenFactory]  
1416class  DefaultSqliteOpenFactory 
15-     extends  AbstractDefaultSqliteOpenFactory <CommonDatabase > {
16-   final  Future <WebSqlite > _initialized;
17+     extends  AbstractDefaultSqliteOpenFactory <CommonDatabase >
18+     implements  WebSqliteOpenFactory  {
19+   late  final  Future <WebSqlite > _initialized =  Future .sync (() {
20+     final  cacheKey =  sqliteOptions.webSqliteOptions.wasmUri + 
21+         sqliteOptions.webSqliteOptions.workerUri;
22+ 
23+     if  (webSQLiteImplementations.containsKey (cacheKey)) {
24+       return  webSQLiteImplementations[cacheKey]! ;
25+     }
26+ 
27+     webSQLiteImplementations[cacheKey] = 
28+         openWebSqlite (sqliteOptions.webSqliteOptions);
29+     return  webSQLiteImplementations[cacheKey]! ;
30+   });
1731
1832  DefaultSqliteOpenFactory (
1933      {required  super .path,
20-       super .sqliteOptions =  const  SqliteOptions .defaults ()})
21-       :  _initialized =  Future .sync (() {
22-           final  cacheKey =  sqliteOptions.webSqliteOptions.wasmUri + 
23-               sqliteOptions.webSqliteOptions.workerUri;
24- 
25-           if  (webSQLiteImplementations.containsKey (cacheKey)) {
26-             return  webSQLiteImplementations[cacheKey]! ;
27-           }
28- 
29-           webSQLiteImplementations[cacheKey] =  WebSqlite .open (
30-             wasmModule:  Uri .parse (sqliteOptions.webSqliteOptions.wasmUri),
31-             worker:  Uri .parse (sqliteOptions.webSqliteOptions.workerUri),
32-           );
33-           return  webSQLiteImplementations[cacheKey]! ;
34-         });
34+       super .sqliteOptions =  const  SqliteOptions .defaults ()}) {
35+     // Make sure initializer starts running immediately 
36+     _initialized;
37+   }
38+ 
39+   @override 
40+   Future <WebSqlite > openWebSqlite (WebSqliteOptions  options) async  {
41+     return  WebSqlite .open (
42+       wasmModule:  Uri .parse (sqliteOptions.webSqliteOptions.wasmUri),
43+       worker:  Uri .parse (sqliteOptions.webSqliteOptions.workerUri),
44+       controller:  AsyncSqliteController (),
45+     );
46+   }
3547
3648  @override 
3749
0 commit comments