1- import kleur from 'kleur' ;
21import {
32 Worker ,
43 isMainThread ,
@@ -33,42 +32,46 @@ export const run = async <T extends Target>(
3332 throw new Error ( 'Worker can only be run from the main thread' ) ;
3433 }
3534
36- const worker = new Worker ( __filename , {
37- workerData : {
38- target,
39- data,
40- } satisfies WorkerData < T > ,
41- env : {
42- ...process . env ,
43- FORCE_COLOR : process . stdout . isTTY ? '1' : '0' ,
44- } ,
45- } ) ;
35+ return new Promise < void > ( ( resolve , reject ) => {
36+ const worker = new Worker ( __filename , {
37+ workerData : {
38+ target,
39+ data,
40+ } satisfies WorkerData < T > ,
41+ env : {
42+ ...process . env ,
43+ FORCE_COLOR : process . stdout . isTTY ? '1' : '0' ,
44+ } ,
45+ } ) ;
4646
47- worker . on ( 'message' , ( message ) => {
48- switch ( message . type ) {
49- case 'info' :
50- report . info ( message . message ) ;
51- break ;
52- case 'warn' :
53- report . warn ( message . message ) ;
54- break ;
55- case 'error' :
56- report . error ( message . message ) ;
57- break ;
58- case 'success' :
59- report . success ( message . message ) ;
60- break ;
61- }
62- } ) ;
47+ worker . on ( 'message' , ( message ) => {
48+ switch ( message . type ) {
49+ case 'info' :
50+ report . info ( message . message ) ;
51+ break ;
52+ case 'warn' :
53+ report . warn ( message . message ) ;
54+ break ;
55+ case 'error' :
56+ report . error ( message . message ) ;
57+ break ;
58+ case 'success' :
59+ report . success ( message . message ) ;
60+ break ;
61+ }
62+ } ) ;
6363
64- worker . on ( 'error' , ( error ) => {
65- report . error ( error . message ) ;
66- } ) ;
64+ worker . on ( 'error' , ( error ) => {
65+ reject ( error ) ;
66+ } ) ;
6767
68- worker . on ( 'exit' , ( code ) => {
69- if ( code !== 0 ) {
70- report . error ( `exited with code ${ kleur . red ( code ) } ` ) ;
71- }
68+ worker . on ( 'exit' , ( code ) => {
69+ if ( code !== 0 ) {
70+ reject ( new Error ( `Worker exited with code ${ code } ` ) ) ;
71+ } else {
72+ resolve ( ) ;
73+ }
74+ } ) ;
7275 } ) ;
7376} ;
7477
@@ -84,10 +87,7 @@ if (!isMainThread) {
8487
8588 if ( target in targets ) {
8689 // @ts -expect-error - typescript doesn't support correlated union types https://github.com/microsoft/TypeScript/issues/30581
87- targets [ target ] ( { ...data , report } ) . catch ( ( error ) => {
88- console . log ( error ) ;
89- process . exit ( 1 ) ;
90- } ) ;
90+ targets [ target ] ( { ...data , report } ) ;
9191 } else {
9292 throw new Error ( `Unknown target: ${ target } ` ) ;
9393 }
0 commit comments