| // Flags: --no-experimental-wasm-modules |
| // This tests that module.registerHooks() can be used to support unknown formats, like |
| // import(wasm) (without --experimental-wasm-modules). |
| import '../common/index.mjs'; |
| |
| import assert from 'node:assert'; |
| import { registerHooks, createRequire } from 'node:module'; |
| import { readFileSync } from 'node:fs'; |
| |
| registerHooks({ |
| load(url, context, nextLoad) { |
| assert.match(url, /simple\.wasm$/); |
| const source = |
| `const buf = Buffer.from([${Array.from(readFileSync(new URL(url))).join(',')}]); |
| const compiled = new WebAssembly.Module(buf); |
| const { exports } = new WebAssembly.Instance(compiled); |
| export default exports; |
| export { exports as 'module.exports' }; |
| `; |
| return { |
| shortCircuit: true, |
| source, |
| format: 'module', |
| }; |
| }, |
| }); |
| |
| // Checks that it works with require. |
| const require = createRequire(import.meta.url); |
| const { add } = require('../fixtures/simple.wasm'); |
| assert.strictEqual(add(1, 2), 3); |
| |
| // Checks that it works with import. |
| const { default: { add: add2 } } = await import('../fixtures/simple.wasm'); |
| assert.strictEqual(add2(1, 2), 3); |