Class WASI

Implementation of a WASI runner for the browser. Explicitly designed for the browser context, where system resources must all be emulated. This WASI implementation relies on configuration and callbacks to decide on what system resources are available and defaults to providing none.

This implementation adapted from cloudflare/workers-wasi https://github.com/cloudflare/workers-wasi/blob/main/src/index.ts

Hierarchy

  • WASI

Implements

Constructors

Properties

context: WASIContext
drive: WASIDrive
hasBeenInitialized: boolean = false
instance: Instance
memory: Memory
module: Module

Accessors

Methods

  • Read command-line argument data. The size of the array should match that returned by args_sizes_get. Each argument is expected to be \0 terminated.

    Parameters

    • argv_ptr: number
    • argv_buf_ptr: number

    Returns number

  • Return the resolution of a clock. Implementations are required to provide a non-zero value for supported clocks. For unsupported clocks, return errno::inval. Note: This is similar to clock_getres in POSIX.

    Parameters

    • id: number
    • retptr0: number

    Returns number

  • Read environment variable data. The sizes of the buffers should match that returned by environ_sizes_get. Key/value pairs are expected to be joined with =s, and terminated with \0s.

    Parameters

    • env_ptr_ptr: number
    • env_buf_ptr: number

    Returns number

  • Get the attributes of a file descriptor. Note: This returns similar flags to fsync(fd, F_GETFL) in POSIX, as well as additional fields.

    Returns fdstat - the buffer where the file descriptor's attributes are stored.

    Parameters

    • fd: number
    • retptr0: number

    Returns number

    Result<fdstat, errno>

  • Read from a file descriptor, without using and updating the file descriptor's offset. Note: This is similar to preadv in POSIX.

    Parameters

    • fd: number
    • iovs_ptr: number
    • iovs_len: number
    • offset: bigint
    • retptr0: number

    Returns number

  • Write to a file descriptor, without using and updating the file descriptor's offset. Note: This is similar to pwritev in POSIX.

    Parameters

    • fd: number
    • ciovs_ptr: number
    • ciovs_len: number
    • offset: bigint
    • retptr0: number

    Returns number

  • Read from a file descriptor. Note: This is similar to readv in POSIX.

    Parameters

    • fd: number
    • iovs_ptr: number
    • iovs_len: number
    • retptr0: number

    Returns number

  • Read directory entries from a directory. When successful, the contents of the output buffer consist of a sequence of directory entries. Each directory entry consists of a dirent object, followed by dirent::d_namlen bytes holding the name of the directory entry. This function fills the output buffer as much as possible, potentially truncating the last directory entry. This allows the caller to grow its read buffer size in case it's too small to fit a single large directory entry, or skip the oversized directory entry.

    Parameters

    • fd: number
    • buf: number
    • buf_len: number
    • cookie: bigint
    • retptr0: number

    Returns number

  • Atomically replace a file descriptor by renumbering another file descriptor. Due to the strong focus on thread safety, this environment does not provide a mechanism to duplicate or renumber a file descriptor to an arbitrary number, like dup2(). This would be prone to race conditions, as an actual file descriptor with the same number could be allocated by a different thread at the same time. This function provides a way to atomically renumber file descriptors, which would disappear if dup2() were to be removed entirely.

    Parameters

    • old_fd: number
    • new_fd: number

    Returns number

  • Move the offset of a file descriptor.

    The offset is specified as a bigint here Note: This is similar to lseek in POSIX.

    The offset, and return type are FileSize (u64) which is represented by bigint in JavaScript.

    Parameters

    • fd: number
    • offset: bigint
    • whence: number
    • retptr0: number

    Returns Result

  • Return the current offset of a file descriptor. Note: This is similar to lseek(fd, 0, SEEK_CUR) in POSIX.

    The return type is FileSize (u64) which is represented by bigint in JS.

    Parameters

    • fd: number
    • retptr0: number

    Returns number

  • Write to a file descriptor. Note: This is similar to writev in POSIX.

    Parameters

    • fd: number
    • ciovs_ptr: number
    • ciovs_len: number
    • retptr0: number

    Returns number

  • Adjust the timestamps of a file or directory. Note: This is similar to utimensat in POSIX.

    Parameters

    • fd: number
    • _: number
    • path_ptr: number
    • path_len: number
    • atim: bigint
    • mtim: bigint
    • fst_flags: number

    Returns number

  • Open a file or directory. The returned file descriptor is not guaranteed to be the lowest-numbered file descriptor not currently open; it is randomized to prevent applications from depending on making assumptions about indexes, since this is error-prone in multi-threaded contexts. The returned file descriptor is guaranteed to be less than 2**31. Note: This is similar to openat in POSIX.

    Parameters

    • fd: number
    • _: number
    • path_ptr: number
    • path_len: number
    • oflags: number
    • rights_base: bigint
    • rights_inheriting: bigint
    • fdflags: number
    • retptr0: number

    Returns number

  • Rename a file or directory. Note: This is similar to renameat in POSIX.

    Parameters

    • old_fd_dir: number
    • old_path_ptr: number
    • old_path_len: number
    • new_fd_dir: number
    • new_path_ptr: number
    • new_path_len: number

    Returns number

  • Unlink a file. Return errno::isdir if the path refers to a directory. Note: This is similar to unlinkat(fd, path, 0) in POSIX.

    Parameters

    • fd: number
    • path_ptr: number
    • path_len: number

    Returns number

  • Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment.

    Parameters

    • code: number

    Returns void

  • Write high-quality random data into a buffer. This function blocks when the implementation is unable to immediately provide sufficient high-quality random data. This function may execute slowly, so when large mounts of random data are required, it's advisable to use this function to seed a pseudo-random number generator, rather than to provide the random data directly.

    Parameters

    • buffer_ptr: number
    • buffer_len: number

    Returns number

  • Return the attributes of an open file.

    Parameters

    • fd: number
    • retptr0: number
    • version: "unstable" | "preview1"

    Returns number

  • Return the attributes of a file or directory. Note: This is similar to stat in POSIX.

    Parameters

    • fd: number
    • _: number
    • path_ptr: number
    • path_len: number
    • retptr0: number
    • version: "unstable" | "preview1"

    Returns number

  • Return the attributes of an open file. This version is used

    Parameters

    • fd: number
    • retptr0: number

    Returns number

  • Parameters

    • fd: number
    • offset: bigint
    • whence: number
    • retptr0: number

    Returns Result

  • Parameters

    • fd: number
    • flags: number
    • path_ptr: number
    • path_len: number
    • retptr0: number

    Returns number

  • Initialize a WASI reactor.

    Returns the WebAssembly instance exports.

    Parameters

    Returns Promise<Exports>

Generated using TypeDoc