1 | declare module 'wasi' {
|
---|
2 | interface WASIOptions {
|
---|
3 | /**
|
---|
4 | * An array of strings that the WebAssembly application will
|
---|
5 | * see as command line arguments. The first argument is the virtual path to the
|
---|
6 | * WASI command itself.
|
---|
7 | */
|
---|
8 | args?: string[] | undefined;
|
---|
9 |
|
---|
10 | /**
|
---|
11 | * An object similar to `process.env` that the WebAssembly
|
---|
12 | * application will see as its environment.
|
---|
13 | */
|
---|
14 | env?: object | undefined;
|
---|
15 |
|
---|
16 | /**
|
---|
17 | * This object represents the WebAssembly application's
|
---|
18 | * sandbox directory structure. The string keys of `preopens` are treated as
|
---|
19 | * directories within the sandbox. The corresponding values in `preopens` are
|
---|
20 | * the real paths to those directories on the host machine.
|
---|
21 | */
|
---|
22 | preopens?: NodeJS.Dict<string> | undefined;
|
---|
23 |
|
---|
24 | /**
|
---|
25 | * By default, WASI applications terminate the Node.js
|
---|
26 | * process via the `__wasi_proc_exit()` function. Setting this option to `true`
|
---|
27 | * causes `wasi.start()` to return the exit code rather than terminate the
|
---|
28 | * process.
|
---|
29 | * @default false
|
---|
30 | */
|
---|
31 | returnOnExit?: boolean | undefined;
|
---|
32 | }
|
---|
33 |
|
---|
34 | class WASI {
|
---|
35 | constructor(options?: WASIOptions);
|
---|
36 | /**
|
---|
37 | *
|
---|
38 | * Attempt to begin execution of `instance` by invoking its `_start()` export.
|
---|
39 | * If `instance` does not contain a `_start()` export, then `start()` attempts to
|
---|
40 | * invoke the `__wasi_unstable_reactor_start()` export. If neither of those exports
|
---|
41 | * is present on `instance`, then `start()` does nothing.
|
---|
42 | *
|
---|
43 | * `start()` requires that `instance` exports a [`WebAssembly.Memory`][] named
|
---|
44 | * `memory`. If `instance` does not have a `memory` export an exception is thrown.
|
---|
45 | */
|
---|
46 | start(instance: object): void; // TODO: avoid DOM dependency until WASM moved to own lib.
|
---|
47 |
|
---|
48 | /**
|
---|
49 | * Is an object that implements the WASI system call API. This object
|
---|
50 | * should be passed as the `wasi_snapshot_preview1` import during the instantiation of a
|
---|
51 | * [`WebAssembly.Instance`][].
|
---|
52 | */
|
---|
53 | readonly wasiImport: NodeJS.Dict<any>; // TODO: Narrow to DOM types
|
---|
54 | }
|
---|
55 | }
|
---|