@@ -19,7 +19,7 @@ export function setupDriverWorker(config: WorkerDriverConfig) {
1919
2020export function setupDriverPort ( config : WorkerDriverConfig ) {
2121 let db : WorkerDriver | null = null ;
22- let opened = new Deferred < void > ( ) ;
22+ let opened : Promise < void > | undefined = undefined ;
2323 const port = {
2424 postMessage : self . postMessage . bind ( self )
2525 } ;
@@ -30,47 +30,60 @@ export function setupDriverPort(config: WorkerDriverConfig) {
3030 console . log ( 'received' , message , id , args ) ;
3131
3232 if ( message == 'open' ) {
33+ const open = new Deferred < void > ( ) ;
34+ opened = open . promise ;
3335 try {
3436 const connection = await config . openConnection (
3537 args as WorkerDriverConnectionOptions
3638 ) ;
3739 db = new WorkerConnectionAdapter ( connection ) ;
3840 port . postMessage ( { id } ) ;
39- opened . resolve ( ) ;
41+ open . resolve ( ) ;
4042 } catch ( e : any ) {
41- opened . reject ( e ) ;
43+ open . reject ( e ) ;
4244 port . postMessage ( { id, value : { error : { message : e . message } } } ) ;
4345 }
4446 } else if ( message == 'close' ) {
4547 try {
46- await opened . promise ;
48+ await opened ;
4749 await db ?. close ( ) ;
4850 port . postMessage ( { id } ) ;
4951 } catch ( e : any ) {
5052 port . postMessage ( { id, value : { error : { message : e . message } } } ) ;
5153 }
5254 } else if ( message == 'execute' ) {
53- await opened . promise ;
54- const commands = args ;
55+ try {
56+ await opened ;
57+ const commands = args ;
5558
56- const results = ( await db ! . execute ( commands ) ) . map ( ( r ) => {
57- if ( isErrorResponse ( r ) ) {
58- const error = r . error ;
59- return {
59+ const results = ( await db ! . execute ( commands ) ) . map ( ( r ) => {
60+ if ( isErrorResponse ( r ) ) {
61+ const error = r . error ;
62+ return {
63+ error : {
64+ code : error . code ,
65+ message : error . message ,
66+ stack : error . stack
67+ }
68+ } ;
69+ } else {
70+ return r ;
71+ }
72+ } ) ;
73+ port . postMessage ( {
74+ id,
75+ value : results
76+ } ) ;
77+ } catch ( e ) {
78+ port . postMessage ( {
79+ id,
80+ value : args . map ( ( c ) => ( {
6081 error : {
61- code : error . code ,
62- message : error . message ,
63- stack : error . stack
82+ message : e . message
6483 }
65- } ;
66- } else {
67- return r ;
68- }
69- } ) ;
70- port . postMessage ( {
71- id,
72- value : results
73- } ) ;
84+ } ) )
85+ } ) ;
86+ }
7487 } else {
7588 throw new Error ( `Unknown message: ${ message } ` ) ;
7689 }
0 commit comments