mirror of https://github.com/webpack/webpack.git
				
				
				
			
							parent
							
								
									25302e51a6
								
							
						
					
					
						commit
						0e73a2458a
					
				|  | @ -32,17 +32,16 @@ function ensureNsObjSource(info, moduleToInfoMap, requestShortener) { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function getExternalImport(importedModule, importedVar, exportName, asCall) { | function getExternalImport(importedModule, info, exportName, asCall) { | ||||||
| 	const isHarmonyModule = importedModule && (!importedModule.meta || importedModule.meta.harmonyModule); | 	if(exportName === true) return info.name; | ||||||
| 	if(exportName === true) return importedVar; |  | ||||||
| 	const used = importedModule.isUsed(exportName); | 	const used = importedModule.isUsed(exportName); | ||||||
| 	if(!used) return "/* unused reexport */undefined"; | 	if(!used) return "/* unused reexport */undefined"; | ||||||
| 	if(!isHarmonyModule && exportName === "default") { | 	if(info.interop && exportName === "default") { | ||||||
| 		return asCall ? `${importedVar}_default()` : `${importedVar}_default.a`; | 		return asCall ? `${info.interopName}()` : `${info.interopName}.a`; | ||||||
| 	} | 	} | ||||||
| 	// TODO use Template.toNormalComment when merging with pure-module
 | 	// TODO use Template.toNormalComment when merging with pure-module
 | ||||||
| 	const comment = used !== exportName ? ` /* ${exportName} */` : ""; | 	const comment = used !== exportName ? ` /* ${exportName} */` : ""; | ||||||
| 	const reference = `${importedVar}[${JSON.stringify(used)}${comment}]`; | 	const reference = `${info.name}[${JSON.stringify(used)}${comment}]`; | ||||||
| 	if(asCall) | 	if(asCall) | ||||||
| 		return `Object(${reference})`; | 		return `Object(${reference})`; | ||||||
| 	return reference; | 	return reference; | ||||||
|  | @ -67,12 +66,6 @@ function getFinalName(info, exportName, moduleToInfoMap, requestShortener, asCal | ||||||
| 					if(refInfo) { | 					if(refInfo) { | ||||||
| 						// module is in the concatenation
 | 						// module is in the concatenation
 | ||||||
| 						return getFinalName(refInfo, reexport.exportName, moduleToInfoMap, requestShortener, asCall); | 						return getFinalName(refInfo, reexport.exportName, moduleToInfoMap, requestShortener, asCall); | ||||||
| 					} else { |  | ||||||
| 						const dep = reexport.dependency; |  | ||||||
| 						const importedModule = reexport.module; |  | ||||||
| 						const exportName = reexport.exportName; |  | ||||||
| 						const importedVar = dep.importedVar; |  | ||||||
| 						return getExternalImport(importedModule, importedVar, exportName, asCall); |  | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				const problem = `Cannot get final name for export "${exportName}" in "${info.module.readableIdentifier(requestShortener)}"` + | 				const problem = `Cannot get final name for export "${exportName}" in "${info.module.readableIdentifier(requestShortener)}"` + | ||||||
|  | @ -84,7 +77,7 @@ function getFinalName(info, exportName, moduleToInfoMap, requestShortener, asCal | ||||||
| 		case "external": | 		case "external": | ||||||
| 			{ | 			{ | ||||||
| 				const importedModule = info.module; | 				const importedModule = info.module; | ||||||
| 				return getExternalImport(importedModule, info.name, exportName, asCall); | 				return getExternalImport(importedModule, info, exportName, asCall); | ||||||
| 			} | 			} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -363,7 +356,9 @@ class ConcatenatedModule extends Module { | ||||||
| 						type: "external", | 						type: "external", | ||||||
| 						module: info.module, | 						module: info.module, | ||||||
| 						index: idx, | 						index: idx, | ||||||
| 						name: undefined | 						name: undefined, | ||||||
|  | 						interopName: undefined, | ||||||
|  | 						interop: undefined | ||||||
| 					}; | 					}; | ||||||
| 				default: | 				default: | ||||||
| 					throw new Error(`Unsupported concatenation entry type ${info.type}`); | 					throw new Error(`Unsupported concatenation entry type ${info.type}`); | ||||||
|  | @ -458,6 +453,8 @@ class ConcatenatedModule extends Module { | ||||||
| 			"switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", | 			"switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", | ||||||
| 			"var", "void", "volatile", "while", "with", "yield", | 			"var", "void", "volatile", "while", "with", "yield", | ||||||
| 
 | 
 | ||||||
|  | 			"module", "__dirname", "__filename", "exports", | ||||||
|  | 
 | ||||||
| 			"Array", "Date", "eval", "function", "hasOwnProperty", "Infinity", "isFinite", "isNaN", | 			"Array", "Date", "eval", "function", "hasOwnProperty", "Infinity", "isFinite", "isNaN", | ||||||
| 			"isPrototypeOf", "length", "Math", "NaN", "name", "Number", "Object", "prototype", "String", | 			"isPrototypeOf", "length", "Math", "NaN", "name", "Number", "Object", "prototype", "String", | ||||||
| 			"toString", "undefined", "valueOf", | 			"toString", "undefined", "valueOf", | ||||||
|  | @ -531,9 +528,15 @@ class ConcatenatedModule extends Module { | ||||||
| 					} | 					} | ||||||
| 				case "external": | 				case "external": | ||||||
| 					{ | 					{ | ||||||
|  | 						info.interop = info.module.meta && !info.module.meta.harmonyModule; | ||||||
| 						const externalName = this.findNewName("", allUsedNames, null, info.module.readableIdentifier(requestShortener)); | 						const externalName = this.findNewName("", allUsedNames, null, info.module.readableIdentifier(requestShortener)); | ||||||
| 						allUsedNames.add(externalName); | 						allUsedNames.add(externalName); | ||||||
| 						info.name = externalName; | 						info.name = externalName; | ||||||
|  | 						if(info.interop) { | ||||||
|  | 							const externalNameInterop = this.findNewName("default", allUsedNames, null, info.module.readableIdentifier(requestShortener)); | ||||||
|  | 							allUsedNames.add(externalNameInterop); | ||||||
|  | 							info.interopName = externalNameInterop; | ||||||
|  | 						} | ||||||
| 						break; | 						break; | ||||||
| 					} | 					} | ||||||
| 			} | 			} | ||||||
|  | @ -588,8 +591,8 @@ class ConcatenatedModule extends Module { | ||||||
| 				case "external": | 				case "external": | ||||||
| 					result.add(`\n// EXTERNAL MODULE: ${info.module.readableIdentifier(requestShortener)}\n`); | 					result.add(`\n// EXTERNAL MODULE: ${info.module.readableIdentifier(requestShortener)}\n`); | ||||||
| 					result.add(`var ${info.name} = __webpack_require__(${JSON.stringify(info.module.id)});\n`); | 					result.add(`var ${info.name} = __webpack_require__(${JSON.stringify(info.module.id)});\n`); | ||||||
| 					if(info.module.meta && !info.module.meta.harmonyModule) { | 					if(info.interop) { | ||||||
| 						result.add(`var ${info.name}_default = /*#__PURE__*/__webpack_require__.n(${info.name});\n`); | 						result.add(`var ${info.interopName} = /*#__PURE__*/__webpack_require__.n(${info.name});\n`); | ||||||
| 					} | 					} | ||||||
| 					break; | 					break; | ||||||
| 				default: | 				default: | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | module.exports = "ok"; | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | import value from "./module"; | ||||||
|  | 
 | ||||||
|  | it("should not cause name conflicts", function() { | ||||||
|  | 	(typeof value).should.be.eql("undefined"); | ||||||
|  | }); | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | import a from "./cjs"; | ||||||
|  | 
 | ||||||
|  | var cjs_default; | ||||||
|  | 
 | ||||||
|  | export default cjs_default; | ||||||
		Loading…
	
		Reference in New Issue