JSPM

  • Created
  • Published
  • Downloads 2663
  • Score
    100M100P100Q130032F
  • License MIT

Isomorphic library to provide a sandboxed node fs implementation for Node and Browsers. 📂

Package Exports

  • @wasmer/wasmfs

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@wasmer/wasmfs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@wasmer/wasmfs

Isomorphic library to provide a sandboxed node fs implementation for Node and Browsers. 📂

Table of Contents

Features

This project heavily depends on memfs to provide the sandboxed fs implementation. 🙏😄

This package provides the following features:

  • In-memory file-system with Node's fs API using memfs. 🗄️
  • Scaffolds common files used by the Wasmer Runtime (e.g I/O Device files like /dev/stdout), to provide a similar experience to the Wasmer Runtime. 🔌
  • Provides convienence functions for grabbing Input / Output. ↔️
  • Allows overriding read/write of individual files to allow for custom implementations. 🛠️

Installation

For installing @wasmer/wasmfs, just run this command in your shell:

npm install --save @wasmer/wasmfs

Quick Start

import WasmFs from "@wasmer/wasmfs";

const wasmFs = new WasmFs();

wasmFs.fs.writeFileSync("/dev/stdout", "Quick Start!");

wasmFs.getStdOut().then(response => {
  console.log(response); // Would log: 'Quick Start!'
});

For a larger end-to-end example, please see the @wasmer/wasm-terminal package.

Reference API

wasmFs.fs

memfs' node fs implementation object. See the node fs documentation for API usage.

NOTE: The functions on this fs implementation can easily be overriden to provide custom functionality when your wasm module (running with @wasmer/wasi) tries to do file system operations. For example:

const wasmFs = new WasmFs();

const originalWriteFileSync = wasmFs.fs.writeFileSync;
wasmFs.fs.writeFileSync = (path, text) => {
  console.log("File written:", path);
  originalWriteFileSync(path, text);
};

wasmFs.fs.writeFileSync("/dev/stdout", "Quick Start!");

// Would log: "File written: /dev/stdout"

wasmFs.getStdOut()

Function that returns a promise that resolves a string. With the file contents of /dev/stdout.

Contributing

This project follows the all-contributors specification.

Contributions of any kind are welcome! 👍