55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| 	Author Tobias Koppers @sokra
 | |
| */
 | |
| "use strict";
 | |
| const NullDependency = require("./NullDependency");
 | |
| 
 | |
| class HarmonyExportSpecifierDependency extends NullDependency {
 | |
| 	constructor(originModule, id, name, position, immutable) {
 | |
| 		super();
 | |
| 		this.originModule = originModule;
 | |
| 		this.id = id;
 | |
| 		this.name = name;
 | |
| 		this.position = position;
 | |
| 		this.immutable = immutable;
 | |
| 	}
 | |
| 
 | |
| 	get type() {
 | |
| 		return "harmony export specifier";
 | |
| 	}
 | |
| 
 | |
| 	getExports() {
 | |
| 		return {
 | |
| 			exports: [this.name]
 | |
| 		};
 | |
| 	}
 | |
| }
 | |
| 
 | |
| HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependencyTemplate {
 | |
| 	apply(dep, source) {
 | |
| 		const content = this.getPrefix(dep) + this.getContent(dep);
 | |
| 		source.insert(dep.position, content);
 | |
| 	}
 | |
| 
 | |
| 	getPrefix(dep) {
 | |
| 		return dep.position > 0 ? "\n" : "";
 | |
| 	}
 | |
| 
 | |
| 	getContent(dep) {
 | |
| 		const used = dep.originModule.isUsed(dep.name);
 | |
| 		if(!used) {
 | |
| 			return `/* unused harmony export ${(dep.name || "namespace")} */\n`;
 | |
| 		}
 | |
| 
 | |
| 		const exportsName = dep.originModule.exportsArgument || "exports";
 | |
| 		if(dep.immutable) {
 | |
| 			return `/* harmony export (immutable) */ ${exportsName}[${JSON.stringify(used)}] = ${dep.id};\n`;
 | |
| 		}
 | |
| 
 | |
| 		return `/* harmony export (binding) */ __webpack_require__.d(${exportsName}, ${JSON.stringify(used)}, function() { return ${dep.id}; });\n`;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| module.exports = HarmonyExportSpecifierDependency;
 |