@@ -187,13 +187,11 @@ class StatsManager {
187187
188188  private  _getModuleAssets ( 
189189    compilation : Compilation , 
190+     entryPointNames : string [ ] , 
190191  ) : Record < string ,  StatsAssets >  { 
191192    const  {  chunks }  =  compilation ; 
192193    const  {  exposeFileNameImportMap }  =  this . _containerManager ; 
193194    const  assets : Record < string ,  StatsAssets >  =  { } ; 
194-     const  entryPointNames  =  [ ...compilation . entrypoints . values ( ) ] 
195-       . map ( ( e )  =>  e . name ) 
196-       . filter ( ( v )  =>  ! ! v )  as  Array < string > ; 
197195
198196    chunks . forEach ( ( chunk )  =>  { 
199197      if  ( 
@@ -214,6 +212,7 @@ class StatsManager {
214212  private  _getProvideSharedAssets ( 
215213    compilation : Compilation , 
216214    stats : StatsCompilation , 
215+     entryPointNames : string [ ] , 
217216  ) : StatsAssets  { 
218217    const  sharedModules  =  stats . modules ! . filter ( ( module )  =>  { 
219218      if  ( ! module  ||  ! module . name )  { 
@@ -241,23 +240,14 @@ class StatsManager {
241240        const  chunk  =  findChunk ( chunkID ,  compilation . chunks ) ; 
242241
243242        manifestOverrideChunkIDMap [ sharedModuleName ] . sync . add ( chunkID ) ; 
244-         Array . from ( chunk ! . getAllInitialChunks ( )  as  Iterable < Chunk > ) . forEach ( 
245-           ( syncChunk : Chunk )  =>  { 
246-             syncChunk . id  && 
247-               manifestOverrideChunkIDMap [ sharedModuleName ] . sync . add ( 
248-                 syncChunk . id , 
249-               ) ; 
250-           } , 
251-         ) ; 
252- 
253-         Array . from ( chunk ! . getAllAsyncChunks ( )  as  Iterable < Chunk > ) . forEach ( 
254-           ( asyncChunk : Chunk )  =>  { 
255-             asyncChunk . id  && 
256-               manifestOverrideChunkIDMap [ sharedModuleName ] . async . add ( 
257-                 asyncChunk . id , 
258-               ) ; 
259-           } , 
260-         ) ; 
243+         if  ( ! chunk )  { 
244+           return ; 
245+         } 
246+         [ ...chunk . groupsIterable ] . forEach ( ( group )  =>  { 
247+           if  ( group . name  &&  ! entryPointNames . includes ( group . name ) )  { 
248+             manifestOverrideChunkIDMap [ sharedModuleName ] . sync . add ( group . id ) ; 
249+           } 
250+         } ) ; 
261251      } ) ; 
262252    } ) ; 
263253
@@ -360,12 +350,16 @@ class StatsManager {
360350        bundler : this . _bundler , 
361351      } ) ; 
362352      const  {  remotes,  exposesMap,  sharedMap }  =  moduleHandler . collect ( ) ; 
353+       const  entryPointNames  =  [ ...compilation . entrypoints . values ( ) ] 
354+         . map ( ( e )  =>  e . name ) 
355+         . filter ( ( v )  =>  ! ! v )  as  Array < string > ; 
363356
364357      await  Promise . all ( [ 
365358        new  Promise < void > ( ( resolve )  =>  { 
366359          const  sharedAssets  =  this . _getProvideSharedAssets ( 
367360            compilation , 
368361            webpackStats , 
362+             entryPointNames , 
369363          ) ; 
370364
371365          Object . keys ( sharedMap ) . forEach ( ( sharedKey )  =>  { 
@@ -377,7 +371,10 @@ class StatsManager {
377371          resolve ( ) ; 
378372        } ) , 
379373        new  Promise < void > ( ( resolve )  =>  { 
380-           const  moduleAssets  =  this . _getModuleAssets ( compilation ) ; 
374+           const  moduleAssets  =  this . _getModuleAssets ( 
375+             compilation , 
376+             entryPointNames , 
377+           ) ; 
381378
382379          Object . keys ( exposesMap ) . forEach ( ( exposeKey )  =>  { 
383380            const  assets  =  moduleAssets [ exposeKey ] ; 
@@ -418,14 +415,35 @@ class StatsManager {
418415          } ) ) ; 
419416          resolve ( ) ; 
420417        } ) , 
421-         new  Promise < void > ( ( resolve )  =>  { 
422-           stats . exposes  =  Object . values ( exposesMap ) . map ( ( expose )  =>  ( { 
423-             ...expose , 
424-           } ) ) ; 
425-           resolve ( ) ; 
426-         } ) , 
427418      ] ) ; 
428419
420+       await  new  Promise < void > ( ( resolve )  =>  { 
421+         const  sharedAssets  =  stats . shared . reduce ( ( sum ,  shared )  =>  { 
422+           const  {  js,  css }  =  shared . assets ; 
423+           [ ...js . sync ,  ...js . async ,  ...css . async ,  css . sync ] . forEach ( ( asset )  =>  { 
424+             sum . add ( asset ) ; 
425+           } ) ; 
426+           return  sum ; 
427+         } ,  new  Set ( ) ) ; 
428+         stats . exposes  =  Object . values ( exposesMap ) . map ( ( expose )  =>  { 
429+           const  {  js,  css }  =  expose . assets ; 
430+           return  { 
431+             ...expose , 
432+             assets : { 
433+               js : { 
434+                 sync : js . sync . filter ( ( asset )  =>  ! sharedAssets . has ( asset ) ) , 
435+                 async : js . async . filter ( ( asset )  =>  ! sharedAssets . has ( asset ) ) , 
436+               } , 
437+               css : { 
438+                 sync : css . sync . filter ( ( asset )  =>  ! sharedAssets . has ( asset ) ) , 
439+                 async : css . async . filter ( ( asset )  =>  ! sharedAssets . has ( asset ) ) , 
440+               } , 
441+             } , 
442+           } ; 
443+         } ) ; 
444+         resolve ( ) ; 
445+       } ) ; 
446+ 
429447      return  stats ; 
430448    }  catch  ( err )  { 
431449      throw  err ; 
0 commit comments