@@ -7,6 +7,7 @@ import { openDatabase as openBetterSqliteDatabase } from './BetterSqliteWorker.j
77import { openDatabase as openNodeDatabase } from './NodeSqliteWorker.js' ;
88import { AsyncDatabase , AsyncDatabaseOpener , AsyncDatabaseOpenOptions } from './AsyncDatabase.js' ;
99import { isBundledToCommonJs } from '../utils/modules.js' ;
10+ import { dynamicImport } from '../utils/modules.js' ;
1011
1112export interface PowerSyncWorkerOptions {
1213 /**
@@ -15,6 +16,11 @@ export interface PowerSyncWorkerOptions {
1516 * @returns The absolute path of the PowerSync SQLite core extensions library.
1617 */
1718 extensionPath : ( ) => string ;
19+
20+ /**
21+ * A function that returns the `Database` constructor from the `better-sqlite3` package.
22+ */
23+ loadBetterSqlite3 : ( ) => Promise < any > ;
1824}
1925
2026export function startPowerSyncWorker ( options ?: Partial < PowerSyncWorkerOptions > ) {
@@ -43,6 +49,10 @@ export function startPowerSyncWorker(options?: Partial<PowerSyncWorkerOptions>)
4349
4450 return resolved ;
4551 } ,
52+ async loadBetterSqlite3 ( ) {
53+ const module = await dynamicImport ( 'better-sqlite3' ) ;
54+ return module . default ;
55+ } ,
4656 ...options
4757 } ;
4858
@@ -62,7 +72,7 @@ class DatabaseOpenHelper implements AsyncDatabaseOpener {
6272 const implementation = options . implementation ;
6373 switch ( implementation . type ) {
6474 case 'better-sqlite3' :
65- database = await openBetterSqliteDatabase ( this . options , options , implementation . package ?? 'better-sqlite3' ) ;
75+ database = await openBetterSqliteDatabase ( this . options , options ) ;
6676 break ;
6777 case 'node:sqlite' :
6878 database = await openNodeDatabase ( this . options , options ) ;
0 commit comments