| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| const DependencyReference = require("./DependencyReference"); |
| const ModuleDependency = require("./ModuleDependency"); |
| const UnsupportedWebAssemblyFeatureError = require("../wasm/UnsupportedWebAssemblyFeatureError"); |
| |
| /** @typedef {import("@webassemblyjs/ast").ModuleImportDescription} ModuleImportDescription */ |
| |
| class WebAssemblyImportDependency extends ModuleDependency { |
| /** |
| * @param {string} request the request |
| * @param {string} name the imported name |
| * @param {ModuleImportDescription} description the WASM ast node |
| * @param {false | string} onlyDirectImport if only direct imports are allowed |
| */ |
| constructor(request, name, description, onlyDirectImport) { |
| super(request); |
| /** @type {string} */ |
| this.name = name; |
| /** @type {ModuleImportDescription} */ |
| this.description = description; |
| /** @type {false | string} */ |
| this.onlyDirectImport = onlyDirectImport; |
| } |
| |
| getReference() { |
| if (!this.module) return null; |
| return new DependencyReference(this.module, [this.name], false); |
| } |
| |
| getErrors() { |
| if ( |
| this.onlyDirectImport && |
| this.module && |
| !this.module.type.startsWith("webassembly") |
| ) { |
| return [ |
| new UnsupportedWebAssemblyFeatureError( |
| `Import "${this.name}" from "${this.request}" with ${this.onlyDirectImport} can only be used for direct wasm to wasm dependencies` |
| ) |
| ]; |
| } |
| } |
| |
| get type() { |
| return "wasm import"; |
| } |
| } |
| |
| module.exports = WebAssemblyImportDependency; |