11const pathUtil = require ( 'path' ) ;
2+ const { promisify} = require ( 'util' ) ;
23const fs = require ( 'fs' ) ;
34const zlib = require ( 'zlib' ) ;
45const Builder = require ( '@turbowarp/extensions/builder' ) ;
@@ -13,15 +14,34 @@ fs.rmSync(outputDirectory, {
1314 recursive : true ,
1415 force : true ,
1516} ) ;
16- for ( const [ relativePath , file ] of Object . entries ( build . files ) ) {
17- console . log ( `Compressing ${ relativePath } ` ) ;
17+
18+ const brotliCompress = promisify ( zlib . brotliCompress ) ;
19+ const mkdir = promisify ( fs . mkdir ) ;
20+ const writeFile = promisify ( fs . writeFile ) ;
21+
22+ const exportFile = async ( relativePath , file ) => {
23+ // This part is unfortunately still synchronous
24+ const contents = file . read ( ) ;
25+ console . log ( `Generated ${ relativePath } ` ) ;
26+
27+ const compressed = await brotliCompress ( contents ) ;
28+
1829 const directoryName = pathUtil . dirname ( relativePath ) ;
19- fs . mkdirSync ( pathUtil . join ( outputDirectory , directoryName ) , {
20- recursive : true ,
30+ await mkdir ( pathUtil . join ( outputDirectory , directoryName ) , {
31+ recursive : true
2132 } ) ;
22- const contents = file . read ( ) ;
23- const compressed = zlib . brotliCompressSync ( contents ) ;
24- fs . writeFileSync ( pathUtil . join ( outputDirectory , `${ relativePath } .br` ) , compressed ) ;
25- }
2633
27- console . log ( `Exported to ${ outputDirectory } ` ) ;
34+ await writeFile ( pathUtil . join ( outputDirectory , `${ relativePath } .br` ) , compressed )
35+
36+ console . log ( `Compressed ${ relativePath } ` ) ;
37+ } ;
38+
39+ const promises = Object . entries ( build . files ) . map ( ( [ relativePath , file ] ) => exportFile ( relativePath , file ) ) ;
40+ Promise . all ( promises )
41+ . then ( ( ) => {
42+ console . log ( `Exported to ${ outputDirectory } ` ) ;
43+ } )
44+ . catch ( ( err ) => {
45+ console . error ( err ) ;
46+ process . exit ( 1 ) ;
47+ } ) ;
0 commit comments