You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | /* | ||
|  | 	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 {"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 {Set<string>} runtimeRequirements runtime requirements | ||
|  |  * @returns {[string, string]} type and base | ||
|  |  */ | ||
|  | exports.handleDependencyBase = (depBase, module, runtimeRequirements) => { | ||
|  | 	let base = undefined; | ||
|  | 	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]; | ||
|  | }; |