@@ -27,13 +27,6 @@ function encodeSvg(content) {
27
27
) ;
28
28
}
29
29
30
- async function reduceAsync ( array = [ ] , reducer = ( r ) => r , initial ) {
31
- for ( const index of array . keys ( ) ) {
32
- initial = await reducer ( initial , array [ index ] ) ; /* eslint-disable-line no-await-in-loop */
33
- }
34
-
35
- return initial ;
36
- }
37
30
38
31
async function assertSize ( resource , maxFileSize , throwError = true ) {
39
32
const { mime, contents = '' } = resource || { } ;
@@ -77,24 +70,22 @@ async function resolve(filepath, {assetPaths, maxFileSize, largeFileCallback, re
77
70
}
78
71
}
79
72
80
- function getDataUriMapping ( urls = [ ] , options = { } ) {
81
- return reduceAsync (
82
- [ ...new Set ( urls ) ] ,
83
- async ( result , url ) => {
84
- const file = await resolve ( url , options ) ;
85
- if ( file && file . mime && / i m a g e / . test ( file . mime ) ) {
86
- result [ url ] = await getDataUri ( file , options ) ;
87
- } else if ( options . largeFileCallback ) {
88
- const largeFile = await resolve ( url , { ...options , maxFileSize : 0 } ) ;
89
- if ( largeFile && largeFile . mime && / i m a g e / . test ( largeFile . mime ) ) {
90
- result [ url ] = await options . largeFileCallback ( largeFile ) ;
91
- }
73
+ async function getDataUriMapping ( urls = [ ] , options = { } ) {
74
+ const uniqueUrls = [ ...new Set ( urls ) ] ;
75
+ const promises = uniqueUrls . map ( async ( url ) => {
76
+ const file = await resolve ( url , options ) ;
77
+ if ( file && file . mime && / i m a g e / . test ( file . mime ) ) {
78
+ return [ url , await getDataUri ( file , options ) ] ;
79
+ } else if ( options . largeFileCallback ) {
80
+ const largeFile = await resolve ( url , { ...options , maxFileSize : 0 } ) ;
81
+ if ( largeFile && largeFile . mime && / i m a g e / . test ( largeFile . mime ) ) {
82
+ return [ url , await options . largeFileCallback ( largeFile ) ] ;
92
83
}
93
-
94
- return result ;
95
- } ,
96
- { }
97
- ) ;
84
+ }
85
+ return [ url , null ] ;
86
+ } ) ;
87
+ const results = await Promise . all ( promises ) ;
88
+ return Object . fromEntries ( results ) ;
98
89
}
99
90
100
91
module . exports . getDataUriMapping = getDataUriMapping ;
0 commit comments