Open preveen-stack opened 2 months ago
sh-3.2$ cat file.wat // file.wat (module (import "uvwasi_snapshot_preview1" "fd_read" (func $fd_read (param i32 i32 i32 i32) (result i32))) (memory 1) (data (i32.const 0) "Hello, world!") (export "read_file" (func $read_file)) )
sh-3.2$ cat ex-uvwasi.js const fs = require('fs'); const uvwasi = require('uvwasi'); const { WASI } = require('wasi'); async function main() { const module = await WebAssembly.compile(fs.readFileSync('./file.wasm')); const wasi = new WASI({ preopens: { '/sandbox': './sandbox' }, args: [ './file.wasm' ] }); const importObject = { uvwasi_snapshot_preview1: uvwasi.snapshot_preview1 }; const instance = await WebAssembly.instantiate(module, { ...importObject, wasi_snapshot_preview1: wasi.wasiImport }); wasi.start(instance); const { read_file } = instance.exports; const buffer = new Uint8Array(256); const bytesRead = read_file(3, buffer.byteOffset, buffer.byteLength, 0); const text = new TextDecoder().decode(buffer.slice(0, bytesRead)); console.log(text); } main().catch((err) => { console.error(err); });