| | |
| | | const { UsageState } = require("../ExportsInfo"); |
| | | const Generator = require("../Generator"); |
| | | const InitFragment = require("../InitFragment"); |
| | | const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypesConstants"); |
| | | const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants"); |
| | | const RuntimeGlobals = require("../RuntimeGlobals"); |
| | | const Template = require("../Template"); |
| | | const ModuleDependency = require("../dependencies/ModuleDependency"); |
| | |
| | | /** @typedef {import("webpack-sources").Source} Source */ |
| | | /** @typedef {import("../Generator").GenerateContext} GenerateContext */ |
| | | /** @typedef {import("../Module")} Module */ |
| | | /** @typedef {import("../Module").SourceType} SourceType */ |
| | | /** @typedef {import("../Module").SourceTypes} SourceTypes */ |
| | | /** @typedef {import("../NormalModule")} NormalModule */ |
| | | |
| | | class WebAssemblyJavascriptGenerator extends Generator { |
| | | /** |
| | | * Returns the source types available for this module. |
| | | * @param {NormalModule} module fresh module |
| | | * @returns {SourceTypes} available types (do not mutate) |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * Returns the estimated size for the requested source type. |
| | | * @param {NormalModule} module the module |
| | | * @param {string=} type source type |
| | | * @param {SourceType=} type source type |
| | | * @returns {number} estimate size of the module |
| | | */ |
| | | getSize(module, type) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * Generates generated code for this runtime module. |
| | | * @param {NormalModule} module module for which the code should be generated |
| | | * @param {GenerateContext} generateContext context for generate |
| | | * @returns {Source | null} generated code |
| | |
| | | const exportsInfo = moduleGraph.getExportsInfo(module); |
| | | |
| | | let needExportsCopy = false; |
| | | /** @typedef {{ dependency: ModuleDependency | undefined, importVar: string, index: number, request: string | undefined, names: Set<string>, reexports: string[] }} ImportData */ |
| | | /** @type {Map<Module, ImportData>} */ |
| | | const importedModules = new Map(); |
| | | /** @type {string[]} */ |
| | | const initParams = []; |
| | | let index = 0; |
| | | for (const dep of module.dependencies) { |
| | | const moduleDep = |
| | | dep && dep instanceof ModuleDependency ? dep : undefined; |
| | | if (moduleGraph.getModule(dep)) { |
| | | let importData = importedModules.get(moduleGraph.getModule(dep)); |
| | | const mod = moduleGraph.getModule(dep); |
| | | if (mod) { |
| | | let importData = importedModules.get(mod); |
| | | if (importData === undefined) { |
| | | importedModules.set( |
| | | moduleGraph.getModule(dep), |
| | | mod, |
| | | (importData = { |
| | | dependency: moduleDep, |
| | | importVar: `m${index}`, |
| | |
| | | } |
| | | |
| | | /** |
| | | * Generates fallback output for the provided error condition. |
| | | * @param {Error} error the error |
| | | * @param {NormalModule} module module for which the code should be generated |
| | | * @param {GenerateContext} generateContext context for generate |