@@ -333,42 +333,45 @@ export class ModLoader {
333333 openZip ( modFile , { lazyEntries : true , autoClose : true } , ( e , f ) => {
334334 if ( e ) {
335335 reject ( e ) ;
336+ } else {
337+ resolve ( f ) ;
336338 }
337- resolve ( f ) ;
338339 } ) ;
339340 } ) ;
340341
341- zipFile . readEntry ( ) ;
342- zipFile . on ( 'error' , e => process . stdout . write ( String ( e ) ) ) ;
343- zipFile . on ( 'entry' , ( entry : Entry ) => {
344- if ( entry . fileName . endsWith ( '/' ) ) {
345- // Directory
346- zipFile . readEntry ( ) ;
347- } else if ( entry . fileName . startsWith ( 'assets/' ) || entry . fileName . startsWith ( 'data/' ) ) {
348- // File
349- const prefix = entry . fileName . startsWith ( 'assets/' ) ? 7 : 5 ;
350- const targetFile = join (
351- this . path ,
352- 'mod_assets' ,
353- entry . fileName . slice ( prefix , entry . fileName . length ) ,
354- ) ;
355- const targetDir = dirname ( targetFile ) ;
356- void this . ensureDirExists ( targetDir ) . then ( ( ) => {
357- zipFile . openReadStream ( entry , ( e , readStream ) => {
358- if ( e ) {
359- throw e ;
360- }
361- readStream . pipe ( createWriteStream ( targetFile ) ) ;
362- readStream . on ( 'end' , ( ) => zipFile . readEntry ( ) ) ;
363- } ) ;
364- } ) . catch ( ( e : unknown ) => {
365- throw e ;
366- } ) ;
367- } else {
368- zipFile . readEntry ( ) ;
369- }
342+ await new Promise < void > ( ( resolve , reject ) => {
343+ zipFile . on ( 'error' , reject ) ;
344+ zipFile . on ( 'end' , resolve ) ;
345+ zipFile . on ( 'entry' , ( entry : Entry ) => {
346+ if ( entry . fileName . endsWith ( '/' ) ) {
347+ // Directory
348+ zipFile . readEntry ( ) ;
349+ } else if ( entry . fileName . startsWith ( 'assets/' ) || entry . fileName . startsWith ( 'data/' ) ) {
350+ // File
351+ const prefix = entry . fileName . startsWith ( 'assets/' ) ? 7 : 5 ;
352+ const targetFile = join (
353+ this . path ,
354+ 'mod_assets' ,
355+ entry . fileName . slice ( prefix , entry . fileName . length ) ,
356+ ) ;
357+ const targetDir = dirname ( targetFile ) ;
358+ this . ensureDirExists ( targetDir ) . then ( ( ) => {
359+ zipFile . openReadStream ( entry , ( e , readStream ) => {
360+ if ( e ) {
361+ reject ( e ) ;
362+ return ;
363+ }
364+ readStream . on ( 'error' , reject ) ;
365+ readStream . pipe ( createWriteStream ( targetFile ) ) ;
366+ readStream . on ( 'end' , ( ) => zipFile . readEntry ( ) ) ;
367+ } ) ;
368+ } ) . catch ( reject ) ;
369+ } else {
370+ zipFile . readEntry ( ) ;
371+ }
372+ } ) ;
373+ zipFile . readEntry ( ) ;
370374 } ) ;
371- await new Promise ( resolve => zipFile . on ( 'end' , resolve ) ) ;
372375 }
373376
374377 /**
0 commit comments