
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
@wasmer/wasi
Advanced tools
Isomorphic Javascript library for interacting with WASI Modules in Node.js and the Browser.
This repository consists of multiple packages:
Isomorphic Javascript library for interacting with WASI Modules in Node.js, the Browser and Deno. The Javascript Package supports:
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 https://github.com/wasmerio/wasmer-js/tree/main/examples/node
This package is published in Deno in the wasm
package, you can import it directly with:
import { init, WASI } from 'https://deno.land/x/wasm/wasi.ts';
Check the Deno usage Examples in https://github.com/wasmerio/wasmer-js/tree/main/examples/deno
// 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("https://deno.land/x/wasm/tests/demo.wasm");
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})`);
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 {
constructor();
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
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.
FAQs
Isomorphic Javascript library for interacting with WASI Modules in Node.js and the Browser.
The npm package @wasmer/wasi receives a total of 33,847 weekly downloads. As such, @wasmer/wasi popularity was classified as popular.
We found that @wasmer/wasi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.