@@ -13,44 +13,50 @@ export function openWorkerDatabasePort(
1313) {
1414 const needsDedicated = vfs == WASQLiteVFS . AccessHandlePoolVFS || vfs == WASQLiteVFS . OPFSCoopSyncVFS ;
1515
16- const handleError = ( event : ErrorEvent ) => {
17- // We don't expect worker errors, so turn errors on workers into unhandled errors in this context
18- // to fail tests.
19- throw `Unexpected worker error: ${ event . error } ` ;
20- }
21-
22- const openWorker = ( resolvedUri : string | URL , options : WorkerOptions = { } ) => {
23- const useShared = ! needsDedicated && multipleTabs ;
24- if ( useShared ) {
25- const sharedWorker = new SharedWorker ( `${ worker } ` , {
26- ...options ,
27- /* @vite -ignore */
28- name : `shared-DB-worker-${ workerIdentifier } `
29- } ) ;
30- sharedWorker . onerror = handleError ;
31- return sharedWorker . port ;
32- } else {
33- const dedicatedWorker = new Worker ( `${ worker } ` , {
34- ...options ,
35- /* @vite -ignore */
36- name : `DB-worker-${ workerIdentifier } `
37- } ) ;
38- dedicatedWorker . onerror = handleError ;
16+ const handleErrors = < T extends AbstractWorker > ( worker : T ) => {
17+ worker . onerror = ( event ) => {
18+ throw `Unhandled worker error: ${ event . message } : ${ event . error } ` ;
19+ } ;
3920
40- return dedicatedWorker ;
41- }
21+ return worker ;
4222 } ;
4323
4424 if ( worker ) {
45- return openWorker ( worker ) ;
25+ return ! needsDedicated && multipleTabs
26+ ? handleErrors (
27+ new SharedWorker ( `${ worker } ` , {
28+ /* @vite -ignore */
29+ name : `shared-DB-worker-${ workerIdentifier } `
30+ } )
31+ ) . port
32+ : handleErrors (
33+ new Worker ( `${ worker } ` , {
34+ /* @vite -ignore */
35+ name : `DB-worker-${ workerIdentifier } `
36+ } )
37+ ) ;
4638 } else {
4739 /**
4840 * Webpack V5 can bundle the worker automatically if the full Worker constructor syntax is used
4941 * https://webpack.js.org/guides/web-workers/
5042 * This enables multi tab support by default, but falls back if SharedWorker is not available
5143 * (in the case of Android)
5244 */
53- return openWorker ( new URL ( './WASQLiteDB.worker.js' , import . meta. url ) , { type : 'module' } ) ;
45+ return ! needsDedicated && multipleTabs
46+ ? handleErrors (
47+ new SharedWorker ( new URL ( './WASQLiteDB.worker.js' , import . meta. url ) , {
48+ /* @vite -ignore */
49+ name : `shared-DB-worker-${ workerIdentifier } ` ,
50+ type : 'module'
51+ } )
52+ ) . port
53+ : handleErrors (
54+ new Worker ( new URL ( './WASQLiteDB.worker.js' , import . meta. url ) , {
55+ /* @vite -ignore */
56+ name : `DB-worker-${ workerIdentifier } ` ,
57+ type : 'module'
58+ } )
59+ ) ;
5460 }
5561}
5662
0 commit comments