33 lines
968 B
JavaScript
33 lines
968 B
JavaScript
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');
|
|
}
|