You can not 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.6 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.6 KiB
						
					
					
				/* | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php | 
						|
	Author Tobias Koppers @sokra | 
						|
*/ | 
						|
"use strict"; | 
						|
 | 
						|
const Template = require("../Template"); | 
						|
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency"); | 
						|
 | 
						|
/** @typedef {import("../Module")} Module */ | 
						|
 | 
						|
/** @typedef {Object} UsedWasmDependency | 
						|
 * @property {WebAssemblyImportDependency} dependency the dependency | 
						|
 * @property {string} name the export name | 
						|
 * @property {string} module the module name | 
						|
 */ | 
						|
 | 
						|
const MANGLED_MODULE = "a"; | 
						|
 | 
						|
/** | 
						|
 * @param {Module} module the module | 
						|
 * @param {boolean} mangle mangle module and export names | 
						|
 * @returns {UsedWasmDependency[]} used dependencies and (mangled) name | 
						|
 */ | 
						|
const getUsedDependencies = (module, mangle) => { | 
						|
	/** @type {UsedWasmDependency[]} */ | 
						|
	const array = []; | 
						|
	let importIndex = 0; | 
						|
	for (const dep of module.dependencies) { | 
						|
		if (dep instanceof WebAssemblyImportDependency) { | 
						|
			if (dep.description.type === "GlobalType" || dep.module === null) { | 
						|
				continue; | 
						|
			} | 
						|
 | 
						|
			const exportName = dep.name; | 
						|
			// TODO add the following 3 lines when removing of ModuleExport is possible | 
						|
			// const importedModule = dep.module; | 
						|
			// const usedName = importedModule && importedModule.isUsed(exportName); | 
						|
			// if (usedName !== false) { | 
						|
			if (mangle) { | 
						|
				array.push({ | 
						|
					dependency: dep, | 
						|
					name: Template.numberToIdentifer(importIndex++), | 
						|
					module: MANGLED_MODULE | 
						|
				}); | 
						|
			} else { | 
						|
				array.push({ | 
						|
					dependency: dep, | 
						|
					name: exportName, | 
						|
					module: dep.request | 
						|
				}); | 
						|
			} | 
						|
		} | 
						|
	} | 
						|
	return array; | 
						|
}; | 
						|
 | 
						|
exports.getUsedDependencies = getUsedDependencies; | 
						|
exports.MANGLED_MODULE = MANGLED_MODULE;
 | 
						|
 |