Neutral Point Measurement

    TypeScript icon, indicating that this package has built-in type declarations

    1.2.2 • Public • Published

    Wasmer logo Wasmer JS Wasmer Slack Channel

    This repository consists of multiple packages:

    Wasmer WASI

    Isomorphic Javascript library for interacting with WASI Modules in Node.js, the Browser and Deno. The Javascript Package supports:

    • [X] WASI (with command args, envs and stdio)
    • [X] In-Memory filesystem (MemFS)


    For instaling @wasmer/wasi run this command in your shell:

    npm install --save @wasmer/wasi

    And then import it in your server or client-side code with:

    import { init, WASI } from '@wasmer/wasi';

    Check the Node usage examples in


    This package is published in Deno in the wasm package, you can import it directly with:

    import { init, WASI } from '';

    Check the Deno usage Examples in


    // This is needed to load the WASI library first (since is a Wasm module)
    await init();
    let wasi = new WASI({
      env: {
          // 'ENVVAR1': '1',
          // 'ENVVAR2': '2'
      args: [
          // 'command', 'arg1', 'arg2'
    const moduleBytes = fetch("");
    const module = await WebAssembly.compileStreaming(moduleBytes);
    // Instantiate the WASI module
    await wasi.instantiate(module, {});
    // Run the start function
    let exitCode = wasi.start();
    let stdout = wasi.getStdoutString();
     // This should print "hello world (exit code: 0)"
    console.log(`${stdout}(exit code: ${exitCode})`);

    API Docs

    Typescript API

    export class WASI {
      constructor(config: any);
      readonly fs: MemFS;
      instantiate(module: any, imports: object): WebAssembly.Instance;
      // Start the WASI Instance, it returns the status code when calling the start
      // function
      start(instance: WebAssembly.Instance): number;
      // Get the stdout buffer
      // Note: this method flushes the stdout
      getStdoutBuffer(): Uint8Array;
      // Get the stdout data as a string
      // Note: this method flushes the stdout
      getStdoutString(): string;
      // Get the stderr buffer
      // Note: this method flushes the stderr
      getStderrBuffer(): Uint8Array;
      // Get the stderr data as a string
      // Note: this method flushes the stderr
      getStderrString(): string;
      // Set the stdin buffer
      setStdinBuffer(buf: Uint8Array): void;
      // Set the stdin data as a string
      setStdinString(input: string): void;
    export class MemFS {
      readDir(path: string): Array<any>;
      createDir(path: string): void;
      removeDir(path: string): void;
      removeFile(path: string): void;
      rename(path: string, to: string): void;
      metadata(path: string): object;
      open(path: string, options: any): JSVirtualFile;
    export class JSVirtualFile {
      lastAccessed(): BigInt;
      lastModified(): BigInt;
      createdTime(): BigInt;
      size(): BigInt;
      setLength(new_size: BigInt): void;
      read(): Uint8Array;
      readString(): string;
      write(buf: Uint8Array): number;
      writeString(buf: string): number;
      flush(): void;
      seek(position: number): number;


    To build this library you will need to have installed in your system:

    npm i
    npm run build


    Build the pkg and run the tests:

    npm run build
    npm run test

    What is WebAssembly?

    Quoting the WebAssembly site:

    WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.

    About speed:

    WebAssembly aims to execute at native speed by taking advantage of common hardware capabilities available on a wide range of platforms.

    About safety:

    WebAssembly describes a memory-safe, sandboxed execution environment […].


    The entire project is under the MIT License. Please read the LICENSE file.


    npm i @wasmer/wasi

    DownloadsWeekly Downloads






    Unpacked Size

    6.78 MB

    Total Files


    Last publish


    • michael-f-bryan
    • syrusakbary