node-wasi.mjs (515B)
1 // Node/V8 execution is not browser validation. Grant only the prepared data dir. 2 import {WASI} from 'node:wasi'; 3 import {readFile} from 'node:fs/promises'; 4 const [wasm,data,id,...rts]=process.argv.slice(2); 5 const wasi=new WASI({version:'preview1',args:[wasm,'/data','/data/'+id,...rts],preopens:{'/data':data}}); 6 const module=await WebAssembly.compile(await readFile(wasm)); 7 const instance=await WebAssembly.instantiate(module,{wasi_snapshot_preview1:wasi.wasiImport}); 8 process.exitCode=wasi.start(instance) ?? 0;