@@ -148,6 +148,7 @@ export default class Chunk {
148148 private implicitEntryModules : Module [ ] = [ ] ;
149149 private readonly implicitlyLoadedBefore = new Set < Chunk > ( ) ;
150150 private readonly imports = new Set < Variable > ( ) ;
151+ private readonly includedReexportsByModule = new Map < Module , Variable [ ] > ( ) ;
151152 private indentString : string = undefined as never ;
152153 // This may only be updated in the constructor
153154 private readonly isEmpty : boolean = true ;
@@ -164,6 +165,7 @@ export default class Chunk {
164165 private sortedExportNames : string [ ] | null = null ;
165166 private strictFacade = false ;
166167 private usedModules : Module [ ] = undefined as never ;
168+
167169 constructor (
168170 private readonly orderedModules : readonly Module [ ] ,
169171 private readonly inputOptions : NormalizedInputOptions ,
@@ -399,6 +401,9 @@ export default class Chunk {
399401 this . exports . add ( module . namespace ) ;
400402 }
401403 }
404+ if ( ! this . outputOptions . preserveModules ) {
405+ this . addNecessaryImportsForFacades ( ) ;
406+ }
402407 return facades ;
403408 }
404409
@@ -832,6 +837,16 @@ export default class Chunk {
832837 }
833838 }
834839
840+ private addNecessaryImportsForFacades ( ) {
841+ for ( const [ module , variables ] of this . includedReexportsByModule ) {
842+ if ( this . includedNamespaces . has ( module ) ) {
843+ for ( const variable of variables ) {
844+ this . imports . add ( variable ) ;
845+ }
846+ }
847+ }
848+ }
849+
835850 private assignFacadeName ( { fileName, name } : FacadeName , facadedModule : Module ) : void {
836851 if ( fileName ) {
837852 this . fileName = fileName ;
@@ -892,6 +907,7 @@ export default class Chunk {
892907 }
893908
894909 private ensureReexportsAreAvailableForModule ( module : Module ) : void {
910+ const includedReexports : Variable [ ] = [ ] ;
895911 const map = module . getExportNamesByVariable ( ) ;
896912 for ( const exportedVariable of map . keys ( ) ) {
897913 const isSynthetic = exportedVariable instanceof SyntheticNamedExportVariable ;
@@ -905,13 +921,17 @@ export default class Chunk {
905921 const chunk = this . chunkByModule . get ( exportingModule ) ;
906922 if ( chunk && chunk !== this ) {
907923 chunk . exports . add ( importedVariable ) ;
924+ includedReexports . push ( importedVariable ) ;
908925 if ( isSynthetic ) {
909926 this . imports . add ( importedVariable ) ;
910927 }
911928 }
912929 }
913930 }
914931 }
932+ if ( includedReexports . length ) {
933+ this . includedReexportsByModule . set ( module , includedReexports ) ;
934+ }
915935 }
916936
917937 private finaliseDynamicImports (
@@ -1345,7 +1365,7 @@ export default class Chunk {
13451365 }
13461366
13471367 private setUpChunkImportsAndExportsForModule ( module : Module ) : void {
1348- const moduleImports = new Set ( module . imports ) ;
1368+ const moduleImports = new Set ( module . includedImports ) ;
13491369 // when we are not preserving modules, we need to make all namespace variables available for
13501370 // rendering the namespace object
13511371 if ( ! this . outputOptions . preserveModules ) {
0 commit comments