@jsage/wasi
v0.14.0
Published
Isomorphic Javascript library for interacting with WASI Modules in Node.js and the Browser.
Downloads
4
Maintainers
Readme
@jsage/wasi
Javascript library for interacting with WASI Modules in Node.js.
(TODO: and in the Browser.)
This is a fork of version 0.12.0 of @wasmer/wasi to keep it alive, since the Wasmer company decided to end it, and I would like to use it in JSage.
Table of Contents
Features
@jsage/wasi
uses the same API as the future WASI integration in Node.
However, @jsage/wasi
is focused on:
- Bringing WASI to an Isomorphic context (Node.js and the Browser)
- Make it easy to plug in different filesystems (via wasmfs)
- Make it type-safe using Typescript
- Pure JavaScript implementation (no Native bindings needed)
- Very small
Installation
To install @jsage/wasi
, run this command:
npm install @jsage/wasi
Quick Start
This quick start is for node. It's something like this. See lib/src/wasm.ts in the JSage source code for something that uses @jsage/wasi in a real application for a better tested example.
import { WASI } from "@jsage/wasi";
import fs from "fs";
import nodeBindings from "@jsage/wasi/dist/bindings/node";
const wasi = new WASI({
args: [],
env: {},
bindings: {...nodeBindings, fs}
});
const source = await readFile(pathToWasm);
const typedArray = new Uint8Array(source);
const result = await WebAssembly.instantiate(typedArray, wasmOpts);
wasi.start(result.instance);