| const fs = require('fs'); |
| const process = require('process'); |
| const assert = require('assert'); |
| const buffer = fs.readFileSync(process.argv[2]); |
| |
| let m = new WebAssembly.Module(buffer); |
| let list = WebAssembly.Module.imports(m); |
| console.log('imports', list); |
| if (list.length !== process.argv.length - 3) |
| throw new Error("wrong number of imports") |
| |
| const imports = new Map(); |
| for (let i = 3; i < process.argv.length; i++) { |
| const [module, name] = process.argv[i].split('/'); |
| if (!imports.has(module)) |
| imports.set(module, new Map()); |
| imports.get(module).set(name, true); |
| } |
| |
| for (let i of list) { |
| if (imports.get(i.module) === undefined || imports.get(i.module).get(i.name) === undefined) |
| throw new Error(`didn't find import of ${i.module}::${i.name}`); |
| imports.get(i.module).delete(i.name); |
| |
| if (imports.get(i.module).size === 0) |
| imports.delete(i.module); |
| } |
| |
| console.log(imports); |
| if (imports.size !== 0) { |
| throw new Error('extra imports'); |
| } |