|
|
- /*
- 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;
|