mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| 	Author Tobias Koppers @sokra
 | |
| */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| const RuntimeGlobals = require("../RuntimeGlobals");
 | |
| 
 | |
| /** @typedef {import("../Module")} Module */
 | |
| /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
 | |
| /** @typedef {"exports" | "module.exports" | "this" | "Object.defineProperty(exports)" | "Object.defineProperty(module.exports)" | "Object.defineProperty(this)"} CommonJSDependencyBaseKeywords */
 | |
| 
 | |
| /**
 | |
|  * @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
 | |
|  * @param {Module} module module
 | |
|  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
 | |
|  * @returns {[string, string]} type and base
 | |
|  */
 | |
| module.exports.handleDependencyBase = (
 | |
| 	depBase,
 | |
| 	module,
 | |
| 	runtimeRequirements
 | |
| ) => {
 | |
| 	let base;
 | |
| 	let type;
 | |
| 	switch (depBase) {
 | |
| 		case "exports":
 | |
| 			runtimeRequirements.add(RuntimeGlobals.exports);
 | |
| 			base = module.exportsArgument;
 | |
| 			type = "expression";
 | |
| 			break;
 | |
| 		case "module.exports":
 | |
| 			runtimeRequirements.add(RuntimeGlobals.module);
 | |
| 			base = `${module.moduleArgument}.exports`;
 | |
| 			type = "expression";
 | |
| 			break;
 | |
| 		case "this":
 | |
| 			runtimeRequirements.add(RuntimeGlobals.thisAsExports);
 | |
| 			base = "this";
 | |
| 			type = "expression";
 | |
| 			break;
 | |
| 		case "Object.defineProperty(exports)":
 | |
| 			runtimeRequirements.add(RuntimeGlobals.exports);
 | |
| 			base = module.exportsArgument;
 | |
| 			type = "Object.defineProperty";
 | |
| 			break;
 | |
| 		case "Object.defineProperty(module.exports)":
 | |
| 			runtimeRequirements.add(RuntimeGlobals.module);
 | |
| 			base = `${module.moduleArgument}.exports`;
 | |
| 			type = "Object.defineProperty";
 | |
| 			break;
 | |
| 		case "Object.defineProperty(this)":
 | |
| 			runtimeRequirements.add(RuntimeGlobals.thisAsExports);
 | |
| 			base = "this";
 | |
| 			type = "Object.defineProperty";
 | |
| 			break;
 | |
| 		default:
 | |
| 			throw new Error(`Unsupported base ${depBase}`);
 | |
| 	}
 | |
| 
 | |
| 	return [type, base];
 | |
| };
 |