@@ -62,9 +62,7 @@ export default (stats: Stats, opts: Options): Api =>
62
62
63
63
const flushChunks = ( stats : Stats , isWebpack : boolean , opts : Options = { } ) => {
64
64
const beforeEntries = opts . before || defaults . before
65
- const { assetsByChunkName , namedChunkGroups } = stats
66
- const ffc = (assets, isWebpack = false) =>
67
- filesFromChunks ( assets , assetsByChunkName , namedChunkGroups , isWebpack )
65
+ const ffc = ( assets , isWebpack ) => filesFromChunks ( assets , stats , isWebpack )
68
66
69
67
const jsBefore = ffc ( beforeEntries )
70
68
@@ -92,11 +90,7 @@ const flushFiles = (stats: Stats, opts: Options2) =>
92
90
93
91
const flushFilesPure = ( stats : Stats , isWebpack : boolean , opts : Options2 ) => {
94
92
const files = opts . chunkNames
95
- ? filesFromChunks (
96
- opts . chunkNames ,
97
- stats . assetsByChunkName ,
98
- stats . namedChunkGroups
99
- )
93
+ ? filesFromChunks ( opts . chunkNames , stats )
100
94
: flush ( opts . moduleIds || [ ] , stats , opts . rootDir , isWebpack )
101
95
102
96
const filter = opts . filter
@@ -181,6 +175,17 @@ const createFilesByModuleId = (stats: Stats): FilesMap => {
181
175
} , { } )
182
176
}
183
177
178
+ const findChunkById = ({ chunks } ) => {
179
+ if ( ! chunks ) {
180
+ return { }
181
+ }
182
+ const filesByChunk = chunks.reduce((chunks, chunk) => {
183
+ chunks [ chunk . id ] = chunk . files
184
+ return chunks
185
+ } , { } )
186
+ return filesByChunk
187
+ }
188
+
184
189
/** HELPERS */
185
190
186
191
const isUnique = ( v : string , i : number , self : Files ) : boolean =>
@@ -198,11 +203,12 @@ const concatFilesAtKeys = (
198
203
[ ]
199
204
)
200
205
201
- const filesByChunkName = ( name , assetsByChunkName ) => {
202
- if ( ! assetsByChunkName || ! assetsByChunkName [ name ] ) {
206
+ const filesByChunkName = ( name , namedChunkGroups ) => {
207
+ if ( ! namedChunkGroups || ! namedChunkGroups [ name ] ) {
203
208
return [ name ]
204
209
}
205
- return assetsByChunkName [ name ] . chunks
210
+
211
+ return namedChunkGroups[name].chunks
206
212
}
207
213
208
214
const hasChunk = ( entry , assets , checkChunkNames ) => {
@@ -218,41 +224,47 @@ const hasChunk = (entry, assets, checkChunkNames) => {
218
224
219
225
const chunksToResolve = ( {
220
226
chunkNames ,
221
- assetsByChunkName,
222
- assets,
227
+ stats ,
223
228
checkChunkNames
224
229
} : {
225
230
chunkNames : Files ,
226
- assets : FilesMap ,
227
- assetsByChunkName : Object ,
231
+ stats : Object ,
228
232
checkChunkNames ? : boolean
229
233
} ): Array< string > =>
230
234
chunkNames
231
235
. reduce ( ( names , name ) => {
232
- if ( ! hasChunk ( name , assets , checkChunkNames ) ) {
236
+ if ( ! hasChunk ( name , stats . assetsByChunkName , checkChunkNames ) ) {
233
237
return names
234
238
}
235
- const files = filesByChunkName ( name , assetsByChunkName )
239
+ const files = filesByChunkName(name, stats.namedChunkGroups )
236
240
names.push(...files)
237
241
return names
238
242
} , [ ] )
239
243
. filter ( isUnique )
240
244
241
245
const filesFromChunks = (
242
246
chunkNames : Files ,
243
- assets : FilesMap ,
244
- assetsByChunkName : Object ,
247
+ stats : Object ,
245
248
checkChunkNames ?: boolean
246
249
) : Files => {
247
- const entryToFiles = entry => assets [ entry ] || assets [ `${ entry } -` ]
250
+ const chunksByID = findChunkById ( stats )
251
+
252
+ const entryToFiles = entry => {
253
+ if ( typeof entry === 'number' ) {
254
+ return chunksByID [ entry ]
255
+ }
256
+ return (
257
+ stats . assetsByChunkName [ entry ] || stats . assetsByChunkName [ `${ entry } -` ]
258
+ )
259
+ }
260
+
248
261
const chunksWithAssets = chunksToResolve ( {
249
262
chunkNames,
250
- assetsByChunkName,
251
- assets,
263
+ stats,
252
264
checkChunkNames
253
265
} )
254
266
255
- return [ ] . concat ( ...chunksWithAssets . map ( entryToFiles ) )
267
+ return [ ] . concat ( ...chunksWithAssets . map ( entryToFiles ) ) . filter ( chunk => chunk )
256
268
}
257
269
258
270
/** EXPORTS FOR TESTS */
0 commit comments