28 lines
906 B
JavaScript
28 lines
906 B
JavaScript
import { WASI, OpenFile, File, ConsoleStdout } from "https://cdn.jsdelivr.net/npm/@bjorn3/browser_wasi_shim@0.3.0/dist/index.js";
|
|
import ghc_wasm_jsffi from "./ghc_wasm_jsffi.js"
|
|
|
|
const args = [];
|
|
const env = ["GHCRTS=-H64m"];
|
|
const fds = [
|
|
new OpenFile(new File([])), // stdin
|
|
ConsoleStdout.lineBuffered((msg) => console.log(`[WASI stdout] ''${msg}`)),
|
|
ConsoleStdout.lineBuffered((msg) => console.warn(`[WASI stderr] ''${msg}`)),
|
|
];
|
|
const options = { debug: false };
|
|
const wasi = new WASI(args, env, fds, options);
|
|
|
|
let __exports = {};
|
|
|
|
const { instance } = await WebAssembly.instantiateStreaming(
|
|
fetch("numbersquare.wasm"),
|
|
{
|
|
ghc_wasm_jsffi: ghc_wasm_jsffi(__exports),
|
|
wasi_snapshot_preview1: wasi.wasiImport,
|
|
}
|
|
);
|
|
|
|
Object.assign(__exports, instance.exports);
|
|
|
|
wasi.initialize(instance);
|
|
console.log(instance)
|
|
await instance.exports.hs_start(globalThis.example);
|