@@ -215,48 +215,27 @@ function bundleExternalLibs(project) {
215215 } ) ;
216216}
217217
218- function addFileToZip ( file , files , zip , path = '' ) {
219- return new Promise ( ( resolve , reject ) => {
220- if ( file . fileType === 'folder' ) {
221- const newPath = file . name === 'root' ? path : `${ path } ${ file . name } /` ;
222- const numChildFiles = file . children . filter ( ( f ) => f . fileType !== 'folder' )
223- . length ;
224- let childrenAdded = 0 ;
225- if ( numChildFiles === 0 ) {
226- zip . folder ( file . name ) ;
227- resolve ( ) ;
228- }
229- file . children . forEach ( async ( fileId ) => {
218+ async function addFileToZip ( file , files , zip ) {
219+ if ( file . fileType === 'folder' ) {
220+ const folderZip = file . name === 'root' ? zip : zip . folder ( file . name ) ;
221+ await Promise . all (
222+ file . children . map ( ( fileId ) => {
230223 const childFile = files . find ( ( f ) => f . id === fileId ) ;
231-
232- try {
233- await addFileToZip ( childFile , files , zip , newPath ) ;
234- childrenAdded += 1 ;
235-
236- if ( childrenAdded === numChildFiles ) {
237- resolve ( ) ;
238- }
239- } catch ( err ) {
240- reject ( err ) ;
241- }
224+ return addFileToZip ( childFile , files , folderZip ) ;
225+ } )
226+ ) ;
227+ } else if ( file . url ) {
228+ try {
229+ const res = await axios . get ( file . url , {
230+ responseType : 'arraybuffer'
242231 } ) ;
243- } else if ( file . url ) {
244- axios
245- . get ( file . url , {
246- responseType : 'arraybuffer'
247- } )
248- . then ( ( { data } ) => {
249- zip . file ( `${ path } ${ file . name } ` , data ) ;
250- resolve ( ) ;
251- } )
252- . catch ( ( err ) => {
253- reject ( err ) ;
254- } ) ;
255- } else {
256- zip . file ( `${ path } ${ file . name } ` , file . content ) ;
257- resolve ( ) ;
232+ zip . file ( file . name , res . data ) ;
233+ } catch ( e ) {
234+ zip . file ( file . name , new ArrayBuffer ( 0 ) ) ;
258235 }
259- } ) ;
236+ } else {
237+ zip . file ( file . name , file . content ) ;
238+ }
260239}
261240
262241async function buildZip ( project , req , res ) {
0 commit comments