@@ -313,33 +313,30 @@ class ConcatenatedModule extends Module {
313313 } else if ( dep instanceof HarmonyExportImportedSpecifierDependency ) {
314314 const exportName = dep . name ;
315315 const importName = dep . id ;
316- const importModule = dep . importDependency . module ;
317- const innerReexport = modulesSet . has ( importModule ) ;
316+ const importedModule = dep . importDependency . module ;
318317 if ( exportName && importName ) {
319318 reexportMap . set ( exportName , {
320- module : importModule ,
319+ module : importedModule ,
321320 exportName : importName ,
322321 dependency : dep
323322 } ) ;
324323 } else if ( exportName ) {
325324 reexportMap . set ( exportName , {
326- module : importModule ,
325+ module : importedModule ,
327326 exportName : true ,
328327 dependency : dep
329328 } ) ;
330- } else if ( Array . isArray ( importModule . providedExports ) ) {
329+ } else {
331330 var activeExports = new Set ( HarmonyModulesHelpers . getActiveExports ( dep . originModule , dep ) ) ;
332- importModule . providedExports . forEach ( name => {
331+ importedModule . providedExports . forEach ( name => {
333332 if ( activeExports . has ( name ) || name === "default" )
334333 return ;
335334 reexportMap . set ( name , {
336- module : importModule ,
335+ module : importedModule ,
337336 exportName : name ,
338337 dependency : dep
339338 } ) ;
340339 } ) ;
341- } else if ( innerReexport ) {
342- throw new Error ( `Module "${ importModule . readableIdentifier ( requestShortener ) } " doesn't provide static exports for "export *" in ${ info . module . readableIdentifier ( requestShortener ) } ` ) ;
343340 }
344341 }
345342 } ) ;
@@ -449,6 +446,8 @@ class ConcatenatedModule extends Module {
449446
450447 // List of all used names to avoid conflicts
451448 const allUsedNames = new Set ( [
449+ "__WEBPACK_MODULE_DEFAULT_EXPORT__" , // avoid using this internal name
450+
452451 "abstract" , "arguments" , "await" , "boolean" , "break" , "byte" , "case" , "catch" , "char" , "class" ,
453452 "const" , "continue" , "debugger" , "default" , "delete" , "do" , "double" , "else" , "enum" , "eval" ,
454453 "export" , "extends" , "false" , "final" , "finally" , "float" , "for" , "function" , "goto" , "if" ,
@@ -606,7 +605,7 @@ class ConcatenatedModule extends Module {
606605 name = "" ;
607606
608607 // Remove uncool stuff
609- extraInfo = extraInfo . replace ( / ( \/ i n d e x ) ? \. ( [ a - z A - Z 0 - 9 ] { 1 , 4 } ) $ / , "" ) ;
608+ extraInfo = extraInfo . replace ( / \. + \/ | ( \/ i n d e x ) ? \. ( [ a - z A - Z 0 - 9 ] { 1 , 4 } ) $ / g , "" ) ;
610609
611610 const splittedInfo = extraInfo . split ( "/" ) ;
612611 while ( splittedInfo . length ) {
@@ -615,8 +614,12 @@ class ConcatenatedModule extends Module {
615614 if ( ! usedNamed1 . has ( nameIdent ) && ( ! usedNamed2 || ! usedNamed2 . has ( nameIdent ) ) ) return nameIdent ;
616615 }
617616
618- while ( usedNamed1 . has ( name = name + "_" ) || ( usedNamed2 && usedNamed2 . has ( name ) ) ) { /* do nothing */ }
619- return name ;
617+ let i = 0 , nameWithNumber ;
618+ do {
619+ i ++ ;
620+ nameWithNumber = Template . toIdentifier ( `${ name } _${ i } ` ) ;
621+ } while ( usedNamed1 . has ( nameWithNumber ) || ( usedNamed2 && usedNamed2 . has ( nameWithNumber ) ) ) ;
622+ return nameWithNumber ;
620623 }
621624
622625 updateHash ( hash ) {
0 commit comments