@@ -215,48 +215,27 @@ function bundleExternalLibs(project) {
215
215
} ) ;
216
216
}
217
217
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 ) => {
230
223
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'
242
231
} ) ;
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 ) ) ;
258
235
}
259
- } ) ;
236
+ } else {
237
+ zip . file ( file . name , file . content ) ;
238
+ }
260
239
}
261
240
262
241
async function buildZip ( project , req , res ) {
0 commit comments