@ai-ecoverse/slicc-kernel 1.102.5 → 1.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/kernel-worker.js +18 -3
- package/dist/kernel-worker.js.map +2 -2
- package/dist/node-process-worker.js +1 -1
- package/dist/node.js +18 -3
- package/dist/node.js.map +2 -2
- package/dist/process-worker.js +1 -1
- package/dist/types/body-idle.d.ts +3 -0
- package/dist/types/bytes.d.ts +1 -0
- package/dist/types/cdp/facade.d.ts +27 -0
- package/dist/types/cdp/hosts.d.ts +14 -0
- package/dist/types/cdp/port.d.ts +24 -0
- package/dist/types/cdp/types.d.ts +12 -0
- package/dist/types/cdp/websocket.d.ts +61 -0
- package/dist/types/client/attach.d.ts +132 -0
- package/dist/types/client/dial-stream.d.ts +23 -0
- package/dist/types/client/loopback-fetch.d.ts +5 -0
- package/dist/types/client/protocol.d.ts +153 -0
- package/dist/types/client/serve-client.d.ts +18 -0
- package/dist/types/clipboard-relay.d.ts +25 -0
- package/dist/types/commands.d.ts +38 -0
- package/dist/types/cron/clock.d.ts +13 -0
- package/dist/types/driver.d.ts +3 -0
- package/dist/types/facade/hosts.d.ts +12 -0
- package/dist/types/facade/port.d.ts +16 -0
- package/dist/types/facade/types.d.ts +23 -0
- package/dist/types/fs/access.d.ts +29 -0
- package/dist/types/fs/attest.d.ts +41 -0
- package/dist/types/fs/changes.d.ts +19 -0
- package/dist/types/fs/commands.d.ts +4 -0
- package/dist/types/fs/dac.d.ts +64 -0
- package/dist/types/fs/dev-removal.d.ts +9 -0
- package/dist/types/fs/fresh-modules.d.ts +9 -0
- package/dist/types/fs/integrity.d.ts +53 -0
- package/dist/types/fs/meta.d.ts +85 -0
- package/dist/types/fs/opfs.d.ts +141 -0
- package/dist/types/fs/owners.d.ts +17 -0
- package/dist/types/fs/pages.d.ts +41 -0
- package/dist/types/fs/path-map.d.ts +16 -0
- package/dist/types/fs/physical-path.d.ts +14 -0
- package/dist/types/fs/protect.d.ts +27 -0
- package/dist/types/fs/ranged.d.ts +73 -0
- package/dist/types/fs/remote.d.ts +45 -0
- package/dist/types/fs/types.d.ts +115 -0
- package/dist/types/fs/unlinked.d.ts +75 -0
- package/dist/types/fs/view.d.ts +1 -0
- package/dist/types/fs/walk.d.ts +12 -0
- package/dist/types/fs/watch.d.ts +23 -0
- package/dist/types/index.d.ts +159 -0
- package/dist/types/integrity-relay.d.ts +18 -0
- package/dist/types/kernel/children.d.ts +90 -0
- package/dist/types/kernel/clipboard.d.ts +49 -0
- package/dist/types/kernel/cpu-clock.d.ts +56 -0
- package/dist/types/kernel/cred.d.ts +17 -0
- package/dist/types/kernel/dgram.d.ts +56 -0
- package/dist/types/kernel/dial.d.ts +20 -0
- package/dist/types/kernel/epoll.d.ts +67 -0
- package/dist/types/kernel/eventfd.d.ts +19 -0
- package/dist/types/kernel/exec-ticket.d.ts +25 -0
- package/dist/types/kernel/fd-table.d.ts +107 -0
- package/dist/types/kernel/host-ops.d.ts +98 -0
- package/dist/types/kernel/host.d.ts +116 -0
- package/dist/types/kernel/jobs.d.ts +50 -0
- package/dist/types/kernel/locks.d.ts +40 -0
- package/dist/types/kernel/net/datagram-wire.d.ts +8 -0
- package/dist/types/kernel/net/http-syscalls.d.ts +58 -0
- package/dist/types/kernel/net/http1.d.ts +48 -0
- package/dist/types/kernel/net/loopback-names.d.ts +14 -0
- package/dist/types/kernel/net/loopback-transport.d.ts +13 -0
- package/dist/types/kernel/net/network.d.ts +29 -0
- package/dist/types/kernel/net/proxy-service.d.ts +70 -0
- package/dist/types/kernel/net/realm-ca.d.ts +28 -0
- package/dist/types/kernel/net/redirect-hops.d.ts +5 -0
- package/dist/types/kernel/net/remote-transport.d.ts +98 -0
- package/dist/types/kernel/net/resolver.d.ts +29 -0
- package/dist/types/kernel/net/routes.d.ts +15 -0
- package/dist/types/kernel/net/tls-engine.d.ts +46 -0
- package/dist/types/kernel/net/tls-tunnel.d.ts +35 -0
- package/dist/types/kernel/net/transport.d.ts +64 -0
- package/dist/types/kernel/net/uplink-socket.d.ts +11 -0
- package/dist/types/kernel/net/uplink.d.ts +163 -0
- package/dist/types/kernel/net/ws-queue.d.ts +21 -0
- package/dist/types/kernel/net/ws-syscalls.d.ts +45 -0
- package/dist/types/kernel/net/x509.d.ts +34 -0
- package/dist/types/kernel/pipe.d.ts +29 -0
- package/dist/types/kernel/proc-info.d.ts +44 -0
- package/dist/types/kernel/process.d.ts +525 -0
- package/dist/types/kernel/protocol.d.ts +126 -0
- package/dist/types/kernel/pty.d.ts +84 -0
- package/dist/types/kernel/run-child.d.ts +39 -0
- package/dist/types/kernel/scrub-file.d.ts +13 -0
- package/dist/types/kernel/sealed.d.ts +74 -0
- package/dist/types/kernel/select.d.ts +7 -0
- package/dist/types/kernel/sem.d.ts +72 -0
- package/dist/types/kernel/settling.d.ts +16 -0
- package/dist/types/kernel/signals.d.ts +44 -0
- package/dist/types/kernel/socket-syscalls.d.ts +74 -0
- package/dist/types/kernel/socket.d.ts +125 -0
- package/dist/types/kernel/timer.d.ts +4 -0
- package/dist/types/kernel/tty.d.ts +53 -0
- package/dist/types/kernel/vfs-file.d.ts +149 -0
- package/dist/types/launcher.d.ts +359 -0
- package/dist/types/local-proxy-transport.d.ts +39 -0
- package/dist/types/meta.d.ts +11 -0
- package/dist/types/mount/chunked.d.ts +9 -0
- package/dist/types/mount/connection.d.ts +35 -0
- package/dist/types/mount/driver.d.ts +50 -0
- package/dist/types/mount/fsa.d.ts +26 -0
- package/dist/types/mount/fstab.d.ts +17 -0
- package/dist/types/mount/host.d.ts +24 -0
- package/dist/types/mount/hostfs.d.ts +129 -0
- package/dist/types/mount/media.d.ts +8 -0
- package/dist/types/mount/medium.d.ts +12 -0
- package/dist/types/mount/mount-fs.d.ts +136 -0
- package/dist/types/mount/protocol.d.ts +140 -0
- package/dist/types/mount/syscall.d.ts +27 -0
- package/dist/types/mount/tmpfs.d.ts +2 -0
- package/dist/types/node/loopback.d.ts +11 -0
- package/dist/types/node/memory-root.d.ts +2 -0
- package/dist/types/node/ws-diagnose.d.ts +4 -0
- package/dist/types/node.d.ts +85 -0
- package/dist/types/process/fd-metadata.d.ts +4 -0
- package/dist/types/process/js/async-sab.d.ts +15 -0
- package/dist/types/process/js/js-children.d.ts +63 -0
- package/dist/types/process/js/js-context.d.ts +133 -0
- package/dist/types/process/js/js-dev.d.ts +50 -0
- package/dist/types/process/js/js-exit.d.ts +15 -0
- package/dist/types/process/js/js-fetch.d.ts +2 -0
- package/dist/types/process/js/js-io.d.ts +81 -0
- package/dist/types/process/js/js-kernel.d.ts +61 -0
- package/dist/types/process/js/js-net.d.ts +42 -0
- package/dist/types/process/js/js-proc.d.ts +31 -0
- package/dist/types/process/js/js-run.d.ts +35 -0
- package/dist/types/process/js/js-sync.d.ts +86 -0
- package/dist/types/process/js/js-tty.d.ts +30 -0
- package/dist/types/process/js/js-websocket.d.ts +21 -0
- package/dist/types/process/kernel-streams.d.ts +196 -0
- package/dist/types/process/process-fds.d.ts +95 -0
- package/dist/types/process/process-locks.d.ts +29 -0
- package/dist/types/process/process-pty.d.ts +20 -0
- package/dist/types/process/process-signals.d.ts +33 -0
- package/dist/types/process/procfs.d.ts +41 -0
- package/dist/types/process/wasi/dylink.d.ts +9 -0
- package/dist/types/process/wasi/slicc-lock.d.ts +26 -0
- package/dist/types/process/wasi/slicc-sem.d.ts +3 -0
- package/dist/types/process/wasi/wasi-abi.d.ts +156 -0
- package/dist/types/process/wasi/wasi-fds.d.ts +130 -0
- package/dist/types/process/wasi/wasi-files.d.ts +99 -0
- package/dist/types/process/wasi/wasi-host.d.ts +104 -0
- package/dist/types/process/wasi/wasi-memory.d.ts +16 -0
- package/dist/types/process/wasi/wasi-module.d.ts +13 -0
- package/dist/types/process/wasi/wasi-poll.d.ts +13 -0
- package/dist/types/process/wasi/wasi-procfs.d.ts +36 -0
- package/dist/types/process/wasi/wasi-sigmask.d.ts +19 -0
- package/dist/types/process/wasi/wasi-signals.d.ts +43 -0
- package/dist/types/process/wasi/wasi-termios.d.ts +10 -0
- package/dist/types/process/wasi/wasix-fork.d.ts +63 -0
- package/dist/types/process/wasi/wasix-linker.d.ts +108 -0
- package/dist/types/process/wasi/wasix-sockets.d.ts +9 -0
- package/dist/types/process/wasi/wasix-trampoline.d.ts +18 -0
- package/dist/types/process/wasi/wasm-functypes.d.ts +25 -0
- package/dist/types/process/wasi-errno.d.ts +1 -0
- package/dist/types/realm/emscripten-vfs-hook.d.ts +19 -0
- package/dist/types/realm/live-vfs-fs.d.ts +186 -0
- package/dist/types/realm/sync-fs-dispatch.d.ts +26 -0
- package/dist/types/realm/sync-fs-token-registry.d.ts +36 -0
- package/dist/types/realm/sync-fs-wire.d.ts +118 -0
- package/dist/types/realm/sync-sab-bridge.d.ts +21 -0
- package/dist/types/realm/sync-sab-responder.d.ts +16 -0
- package/dist/types/realm/sync-sab-wire.d.ts +64 -0
- package/dist/types/sealed-relay.d.ts +26 -0
- package/dist/types/serve.d.ts +190 -0
- package/dist/types/sudo-command.d.ts +4 -0
- package/dist/types/sudo.d.ts +105 -0
- package/dist/types/testing.d.ts +46 -0
- package/dist/types/transport.d.ts +25 -0
- package/dist/types/users.d.ts +86 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/websocket-transport.d.ts +12 -0
- package/package.json +22 -6
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { BlockedMask } from '../../realm/sync-sab-wire.js';
|
|
2
|
+
import type { WasiForkFd } from './wasi-fds.js';
|
|
3
|
+
import type { WasiMemory } from './wasi-memory.js';
|
|
4
|
+
import type { WasiSignalState } from './wasi-signals.js';
|
|
5
|
+
export interface WasiForkState {
|
|
6
|
+
asyncifyData: number;
|
|
7
|
+
globals: Array<[string, number]>;
|
|
8
|
+
fds: WasiForkFd[];
|
|
9
|
+
cloexec: number[];
|
|
10
|
+
cwd: string;
|
|
11
|
+
shared?: true;
|
|
12
|
+
setjmps?: WasiSetjmps;
|
|
13
|
+
signals?: WasiSignalState;
|
|
14
|
+
blocked?: BlockedMask;
|
|
15
|
+
tls?: Array<[number, number]>;
|
|
16
|
+
modules?: Record<string, WebAssembly.Module>;
|
|
17
|
+
entry?: ThreadEntry;
|
|
18
|
+
}
|
|
19
|
+
export interface ThreadEntry {
|
|
20
|
+
tid: number;
|
|
21
|
+
arg: number;
|
|
22
|
+
low: number;
|
|
23
|
+
}
|
|
24
|
+
export interface WasiSetjmps {
|
|
25
|
+
next: number;
|
|
26
|
+
snapshots: Array<[number, Snapshot]>;
|
|
27
|
+
}
|
|
28
|
+
interface Snapshot {
|
|
29
|
+
frames: Uint8Array;
|
|
30
|
+
globals: Array<[string, number]>;
|
|
31
|
+
}
|
|
32
|
+
export declare function reseatTls(exports: WebAssembly.Exports, bytes: (at: number, length: number) => Uint8Array): void;
|
|
33
|
+
export declare class AsyncifyDriver {
|
|
34
|
+
private exports;
|
|
35
|
+
private stackUpper;
|
|
36
|
+
private linked;
|
|
37
|
+
private pending;
|
|
38
|
+
private answer;
|
|
39
|
+
private readonly snapshots;
|
|
40
|
+
private nextSnapshot;
|
|
41
|
+
private readonly mem;
|
|
42
|
+
constructor(mem: WasiMemory);
|
|
43
|
+
useStack(pointer: WebAssembly.Global, low: number): void;
|
|
44
|
+
private threadStack;
|
|
45
|
+
useThreadStack(pointer: WebAssembly.Global, low: number): void;
|
|
46
|
+
bind(exports: WebAssembly.Exports): void;
|
|
47
|
+
get supported(): boolean;
|
|
48
|
+
get idle(): boolean;
|
|
49
|
+
resume(): boolean;
|
|
50
|
+
setjmps(): WasiSetjmps;
|
|
51
|
+
startChild(state: WasiForkState): void;
|
|
52
|
+
rewound(): number | undefined;
|
|
53
|
+
fork(fork: (asyncifyData: number, globals: Array<[string, number]>, sp: number) => number): number;
|
|
54
|
+
checkpoint(snapPtr: number, retPtr: number): number;
|
|
55
|
+
restore(snapPtr: number, val: bigint): number;
|
|
56
|
+
private stackGlobal;
|
|
57
|
+
private stackPointer;
|
|
58
|
+
private globals;
|
|
59
|
+
private dataPointer;
|
|
60
|
+
private unwind;
|
|
61
|
+
private restoreGlobals;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type DylinkInfo } from './dylink.js';
|
|
2
|
+
import { type Scalar, Trampolines } from './wasix-trampoline.js';
|
|
3
|
+
import { FuncTypes } from './wasm-functypes.js';
|
|
4
|
+
export declare const TABLE_BASE = 1;
|
|
5
|
+
export declare const STACK_SIZE: number;
|
|
6
|
+
export type LinkRecord = {
|
|
7
|
+
kind: 'load';
|
|
8
|
+
handle: number;
|
|
9
|
+
path: string;
|
|
10
|
+
memoryBase: number;
|
|
11
|
+
tableBase: number;
|
|
12
|
+
needed?: number[];
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'slot';
|
|
15
|
+
index: number;
|
|
16
|
+
handle: number;
|
|
17
|
+
name: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'closure';
|
|
20
|
+
index: number;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'closure-free';
|
|
23
|
+
index: number;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'closure-prepare';
|
|
26
|
+
index: number;
|
|
27
|
+
backing: number;
|
|
28
|
+
userData: number;
|
|
29
|
+
params: Scalar[];
|
|
30
|
+
results: Scalar[];
|
|
31
|
+
};
|
|
32
|
+
export interface LinkerHost {
|
|
33
|
+
read(path: string): Uint8Array<ArrayBuffer> | undefined;
|
|
34
|
+
hostImports(module: WebAssembly.Module): WebAssembly.Imports;
|
|
35
|
+
real?(path: string): string;
|
|
36
|
+
}
|
|
37
|
+
export declare class DlError extends Error {
|
|
38
|
+
}
|
|
39
|
+
export declare class WasixLinker {
|
|
40
|
+
readonly table: WebAssembly.Table;
|
|
41
|
+
readonly stackPointer: WebAssembly.Global;
|
|
42
|
+
readonly memoryBase: number;
|
|
43
|
+
readonly stackLow: number;
|
|
44
|
+
readonly stackHigh: number;
|
|
45
|
+
private readonly cLongjmp;
|
|
46
|
+
private readonly cppException;
|
|
47
|
+
private main;
|
|
48
|
+
private readonly modules;
|
|
49
|
+
forkedTls: Map<number, number> | undefined;
|
|
50
|
+
private readonly byPath;
|
|
51
|
+
private mainGot;
|
|
52
|
+
private readonly slots;
|
|
53
|
+
private nextHandle;
|
|
54
|
+
publisher: ((record: LinkRecord) => void) | undefined;
|
|
55
|
+
indices: {
|
|
56
|
+
reserve(floor: number, size: number): number;
|
|
57
|
+
load(floor: number, size: number): {
|
|
58
|
+
base: number;
|
|
59
|
+
handle: number;
|
|
60
|
+
};
|
|
61
|
+
lock(): void;
|
|
62
|
+
unlock(): void;
|
|
63
|
+
allocate(floor: number): number;
|
|
64
|
+
free(index: number): void;
|
|
65
|
+
} | undefined;
|
|
66
|
+
types: FuncTypes;
|
|
67
|
+
readonly trampolines: Trampolines;
|
|
68
|
+
private readonly memory;
|
|
69
|
+
private readonly host;
|
|
70
|
+
constructor(memory: WebAssembly.Memory, mainInfo: DylinkInfo, host: LinkerHost, thread?: boolean);
|
|
71
|
+
mainImports(module: WebAssembly.Module): Record<string, Record<string, WebAssembly.ImportValue>>;
|
|
72
|
+
bindMainGot(): void;
|
|
73
|
+
bindMain(instance: WebAssembly.Instance, relocate: boolean): void;
|
|
74
|
+
mainPath: string | undefined;
|
|
75
|
+
private isMain;
|
|
76
|
+
open(name: string, cwd: string, ldPath: readonly string[]): number;
|
|
77
|
+
symbol(handle: number, name: string): number;
|
|
78
|
+
invalid(handle: number): boolean;
|
|
79
|
+
cache: Readonly<Record<string, WebAssembly.Module>> | undefined;
|
|
80
|
+
compiled(): Record<string, WebAssembly.Module>;
|
|
81
|
+
allocateClosure(): number;
|
|
82
|
+
freeClosure(index: number): void;
|
|
83
|
+
private readonly live;
|
|
84
|
+
prepareClosure(record: Omit<Extract<LinkRecord, {
|
|
85
|
+
kind: 'closure-prepare';
|
|
86
|
+
}>, 'kind'>): void;
|
|
87
|
+
private install;
|
|
88
|
+
private reserveLoad;
|
|
89
|
+
private reserve;
|
|
90
|
+
tlsBases(): Array<[number, number]>;
|
|
91
|
+
private carryTls;
|
|
92
|
+
replay(record: LinkRecord): void;
|
|
93
|
+
private moduleAt;
|
|
94
|
+
private module;
|
|
95
|
+
private locate;
|
|
96
|
+
private load;
|
|
97
|
+
private instantiate;
|
|
98
|
+
private functionImport;
|
|
99
|
+
private addressOrNull;
|
|
100
|
+
private slotOrNull;
|
|
101
|
+
private find;
|
|
102
|
+
private findIn;
|
|
103
|
+
private baseOf;
|
|
104
|
+
private indexed;
|
|
105
|
+
private indexTable;
|
|
106
|
+
private slot;
|
|
107
|
+
private allocate;
|
|
108
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SockAddr } from '../../kernel/socket.js';
|
|
2
|
+
import type { WasiFunction, WasiHost } from './wasi-host.js';
|
|
3
|
+
export declare function readAddr(view: DataView, ptr: number): SockAddr;
|
|
4
|
+
export declare function writeAddr(view: DataView, ptr: number, addr: SockAddr | undefined): void;
|
|
5
|
+
export declare function datagramCalls(host: WasiHost): {
|
|
6
|
+
recvFrom(fd: number, nonblock: boolean, iovs: number, n: number, riflags: number, outLen: number, outFlags: number, outAddr: number): number;
|
|
7
|
+
sendTo(fd: number, nonblock: boolean, iovs: number, n: number, addr: number, out: number): 0;
|
|
8
|
+
};
|
|
9
|
+
export declare function wasixSocketImports(host: WasiHost, preview1: Record<string, WasiFunction>): Record<string, WasiFunction>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FuncSig } from './wasm-functypes.js';
|
|
2
|
+
export type Scalar = 'i32' | 'i64' | 'f32' | 'f64' | 'v128';
|
|
3
|
+
export declare function valueTypes(codes: Uint8Array): Scalar[] | undefined;
|
|
4
|
+
export declare function trampolineBytes(params: Scalar[], results: Scalar[], shared: boolean): Uint8Array<ArrayBuffer>;
|
|
5
|
+
export declare class Trampolines {
|
|
6
|
+
private readonly modules;
|
|
7
|
+
get compiled(): number;
|
|
8
|
+
make(params: Scalar[], results: Scalar[], env: {
|
|
9
|
+
memory: WebAssembly.Memory;
|
|
10
|
+
table: WebAssembly.Table;
|
|
11
|
+
stackPointer: WebAssembly.Global;
|
|
12
|
+
backing: number;
|
|
13
|
+
userData: number;
|
|
14
|
+
}): {
|
|
15
|
+
fn: (...args: unknown[]) => unknown;
|
|
16
|
+
sig: FuncSig;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type ValType = 'i32' | 'i64' | 'f32' | 'f64' | 'other';
|
|
2
|
+
export interface FuncSig {
|
|
3
|
+
params: ValType[];
|
|
4
|
+
results: ValType[];
|
|
5
|
+
}
|
|
6
|
+
export interface ElemSegment {
|
|
7
|
+
offset: number;
|
|
8
|
+
tableBase: boolean;
|
|
9
|
+
funcs: number[];
|
|
10
|
+
}
|
|
11
|
+
export interface FuncTypeInfo {
|
|
12
|
+
sigs: FuncSig[];
|
|
13
|
+
funcs: number[];
|
|
14
|
+
exports: Record<string, number>;
|
|
15
|
+
elems: ElemSegment[];
|
|
16
|
+
}
|
|
17
|
+
export declare function funcTypeInfo(bytes: Uint8Array): FuncTypeInfo;
|
|
18
|
+
export declare class FuncTypes {
|
|
19
|
+
private readonly known;
|
|
20
|
+
private pending;
|
|
21
|
+
register(read: () => Uint8Array | undefined, instance: WebAssembly.Instance, table: WebAssembly.Table | undefined, tableBase: number): void;
|
|
22
|
+
add(info: FuncTypeInfo, instance: WebAssembly.Instance, table: WebAssembly.Table | undefined, tableBase: number): void;
|
|
23
|
+
set(fn: object, sig: FuncSig): void;
|
|
24
|
+
of(fn: object): FuncSig | undefined;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function wasiErrno(code: string): number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type LiveCred, type LiveMountFsApi } from './live-vfs-fs.js';
|
|
2
|
+
import type { SyncFsPosixBridge } from './sync-fs-wire.js';
|
|
3
|
+
export interface EmscriptenFsForHook extends LiveMountFsApi {
|
|
4
|
+
chdir(path: string): void;
|
|
5
|
+
chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;
|
|
6
|
+
}
|
|
7
|
+
export interface EmscriptenVfsHandle {
|
|
8
|
+
mounted: string[];
|
|
9
|
+
flush(): void;
|
|
10
|
+
flushDirty(): void;
|
|
11
|
+
invalidate(): void;
|
|
12
|
+
}
|
|
13
|
+
export interface EmscriptenVfsHookDeps {
|
|
14
|
+
bridge: SyncFsPosixBridge;
|
|
15
|
+
cwd: string;
|
|
16
|
+
warn: (message: string) => void;
|
|
17
|
+
cred?: LiveCred;
|
|
18
|
+
}
|
|
19
|
+
export declare function mountVfsIntoEmscripten(Fs: EmscriptenFsForHook, deps: EmscriptenVfsHookDeps): EmscriptenVfsHandle;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { RangedFile, type RangedWatch } from '../fs/ranged.js';
|
|
2
|
+
import type { Cred } from '../kernel/cred.js';
|
|
3
|
+
import { type SyncFsBridgeStat, type SyncFsPosixBridge } from './sync-fs-wire.js';
|
|
4
|
+
export type LiveCred = Cred;
|
|
5
|
+
interface LiveNodeState {
|
|
6
|
+
named?: number | undefined;
|
|
7
|
+
watch?: RangedWatch | undefined;
|
|
8
|
+
stat?: SyncFsBridgeStat;
|
|
9
|
+
statAt?: number;
|
|
10
|
+
data?: Uint8Array;
|
|
11
|
+
len: number;
|
|
12
|
+
loaded: boolean;
|
|
13
|
+
dirty: boolean;
|
|
14
|
+
openCount: number;
|
|
15
|
+
writers?: number;
|
|
16
|
+
orphan?: boolean;
|
|
17
|
+
kept?: boolean;
|
|
18
|
+
id?: string;
|
|
19
|
+
listed?: Map<string, SyncFsBridgeStat>;
|
|
20
|
+
maxFile?: number;
|
|
21
|
+
ranges?: boolean;
|
|
22
|
+
ranged?: RangedFile;
|
|
23
|
+
seen?: number | undefined;
|
|
24
|
+
handle?: number;
|
|
25
|
+
created?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface LiveFsNode {
|
|
28
|
+
id: number;
|
|
29
|
+
name: string;
|
|
30
|
+
mode: number;
|
|
31
|
+
parent: LiveFsNode;
|
|
32
|
+
mount: LiveFsMount;
|
|
33
|
+
node_ops: LiveNodeOps;
|
|
34
|
+
stream_ops: LiveStreamOps;
|
|
35
|
+
live: LiveNodeState;
|
|
36
|
+
mounted?: unknown;
|
|
37
|
+
}
|
|
38
|
+
export interface LiveFsStream {
|
|
39
|
+
node: LiveFsNode;
|
|
40
|
+
position: number;
|
|
41
|
+
flags: number;
|
|
42
|
+
fd?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface LiveFsMount {
|
|
45
|
+
opts: LiveFsMountOpts;
|
|
46
|
+
mountpoint: string;
|
|
47
|
+
root: LiveFsNode;
|
|
48
|
+
}
|
|
49
|
+
export interface LiveFsMountOpts {
|
|
50
|
+
root: string;
|
|
51
|
+
bridge: SyncFsPosixBridge;
|
|
52
|
+
}
|
|
53
|
+
interface LiveAttr {
|
|
54
|
+
dev: number;
|
|
55
|
+
ino: number;
|
|
56
|
+
mode: number;
|
|
57
|
+
nlink: number;
|
|
58
|
+
uid: number;
|
|
59
|
+
gid: number;
|
|
60
|
+
rdev: number;
|
|
61
|
+
size: number;
|
|
62
|
+
atime: Date;
|
|
63
|
+
mtime: Date;
|
|
64
|
+
ctime: Date;
|
|
65
|
+
blksize: number;
|
|
66
|
+
blocks: number;
|
|
67
|
+
}
|
|
68
|
+
interface LiveSetAttr {
|
|
69
|
+
mode?: number;
|
|
70
|
+
size?: number;
|
|
71
|
+
atime?: number | Date | null;
|
|
72
|
+
mtime?: number | Date | null;
|
|
73
|
+
timestamp?: number;
|
|
74
|
+
}
|
|
75
|
+
export interface LiveNodeOps {
|
|
76
|
+
getattr(node: LiveFsNode): LiveAttr;
|
|
77
|
+
setattr(node: LiveFsNode, attr: LiveSetAttr): void;
|
|
78
|
+
lookup(parent: LiveFsNode, name: string): LiveFsNode;
|
|
79
|
+
mknod(parent: LiveFsNode, name: string, mode: number, dev: number): LiveFsNode;
|
|
80
|
+
rename(oldNode: LiveFsNode, newDir: LiveFsNode, newName: string): void;
|
|
81
|
+
unlink(parent: LiveFsNode, name: string): void;
|
|
82
|
+
rmdir(parent: LiveFsNode, name: string): void;
|
|
83
|
+
readdir(node: LiveFsNode): string[];
|
|
84
|
+
symlink(parent: LiveFsNode, newName: string, target: string): LiveFsNode;
|
|
85
|
+
readlink(node: LiveFsNode): string;
|
|
86
|
+
}
|
|
87
|
+
export interface LiveStreamOps {
|
|
88
|
+
open(stream: LiveFsStream): void;
|
|
89
|
+
dup(stream: LiveFsStream): void;
|
|
90
|
+
close(stream: LiveFsStream): void;
|
|
91
|
+
read(stream: LiveFsStream, buffer: ArrayBufferView, offset: number, length: number, position: number): number;
|
|
92
|
+
write(stream: LiveFsStream, buffer: ArrayBufferView, offset: number, length: number, position: number): number;
|
|
93
|
+
llseek(stream: LiveFsStream, offset: number, whence: number): number;
|
|
94
|
+
fsync(stream: LiveFsStream): void;
|
|
95
|
+
}
|
|
96
|
+
export interface LiveFsApi {
|
|
97
|
+
createNode(parent: LiveFsNode | null, name: string, mode: number, dev?: number): LiveFsNode;
|
|
98
|
+
isDir(mode: number): boolean;
|
|
99
|
+
isFile(mode: number): boolean;
|
|
100
|
+
isLink(mode: number): boolean;
|
|
101
|
+
ErrnoError: new (errno: number) => Error & {
|
|
102
|
+
errno: number;
|
|
103
|
+
};
|
|
104
|
+
closeStream?(fd: number): void;
|
|
105
|
+
sliccTouch?: boolean;
|
|
106
|
+
sliccReading?: LiveFsNode | undefined;
|
|
107
|
+
sliccCred?: LiveCred;
|
|
108
|
+
nameTable?: (LiveFsNode | null)[] | null;
|
|
109
|
+
hashRemoveNode?(node: LiveFsNode): void;
|
|
110
|
+
lookupNode?(parent: LiveFsNode, name: string): LiveFsNode;
|
|
111
|
+
open?(...args: unknown[]): unknown;
|
|
112
|
+
}
|
|
113
|
+
export interface LiveVfsPlugin {
|
|
114
|
+
mount(mount: LiveFsMount): LiveFsNode;
|
|
115
|
+
node_ops: LiveNodeOps;
|
|
116
|
+
stream_ops: LiveStreamOps;
|
|
117
|
+
flushDirty(): void;
|
|
118
|
+
mounts: Set<LiveFsMount>;
|
|
119
|
+
handled?: Set<LiveFsNode>;
|
|
120
|
+
}
|
|
121
|
+
export declare function liveNodePath(node: LiveFsNode): string;
|
|
122
|
+
export declare function createLiveVfsPlugin(Fs: LiveFsApi): LiveVfsPlugin;
|
|
123
|
+
export declare function flushLiveVfs(Fs: LiveFsApi, plugin: LiveVfsPlugin): void;
|
|
124
|
+
export declare function invalidateLiveVfs(Fs: LiveFsApi, plugin: LiveVfsPlugin): void;
|
|
125
|
+
export interface LiveMountFsApi extends LiveFsApi {
|
|
126
|
+
root?: MemfsRoot;
|
|
127
|
+
rename?(from: string, to: string): void;
|
|
128
|
+
lookupPath?(path: string, opts?: {
|
|
129
|
+
follow?: boolean;
|
|
130
|
+
parent?: boolean;
|
|
131
|
+
}): {
|
|
132
|
+
node: object;
|
|
133
|
+
};
|
|
134
|
+
sliccRename?: true;
|
|
135
|
+
sliccKept?: true;
|
|
136
|
+
sliccStale?: true;
|
|
137
|
+
open?(path: string, flags: number, mode?: number): unknown;
|
|
138
|
+
statfsNode?(node: LiveFsNode): Record<string, number>;
|
|
139
|
+
sliccStatfs?: true;
|
|
140
|
+
filesystems: {
|
|
141
|
+
SLICC_LIVE_FS?: LiveVfsPlugin;
|
|
142
|
+
};
|
|
143
|
+
mkdirTree(path: string): void;
|
|
144
|
+
mount(type: LiveVfsPlugin, opts: LiveFsMountOpts, mountpoint: string): unknown;
|
|
145
|
+
}
|
|
146
|
+
export declare function mountLiveVfsDirs(Fs: LiveMountFsApi, bridge: SyncFsPosixBridge, dirs: readonly string[], warn: (message: string) => void): {
|
|
147
|
+
plugin: LiveVfsPlugin;
|
|
148
|
+
mounted: string[];
|
|
149
|
+
};
|
|
150
|
+
type MemfsRoot = LiveFsNode & {
|
|
151
|
+
contents?: Record<string, unknown>;
|
|
152
|
+
memfs?: LiveNodeOps;
|
|
153
|
+
};
|
|
154
|
+
export declare function liveRoot(Fs: LiveMountFsApi, bridge: SyncFsPosixBridge): void;
|
|
155
|
+
export interface LiveChownFs extends LiveFsApi {
|
|
156
|
+
lookupPath(path: string, opts?: {
|
|
157
|
+
follow?: boolean;
|
|
158
|
+
}): {
|
|
159
|
+
node: object;
|
|
160
|
+
};
|
|
161
|
+
chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;
|
|
162
|
+
fchown?(fd: number, uid: number, gid: number): void;
|
|
163
|
+
getStreamChecked?(fd: number): {
|
|
164
|
+
node: object;
|
|
165
|
+
path?: string;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
export declare function useLiveChown(Fs: LiveChownFs): void;
|
|
169
|
+
export interface LiveLinkFs extends LiveFsApi {
|
|
170
|
+
lookupPath(path: string, opts?: {
|
|
171
|
+
follow?: boolean;
|
|
172
|
+
}): {
|
|
173
|
+
node: object;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
export declare function linkLive(Fs: LiveLinkFs, from: string, to: string, follow: boolean): boolean;
|
|
177
|
+
export interface LiveReadlinkFs extends LiveFsApi {
|
|
178
|
+
lookupPath(path: string, opts?: {
|
|
179
|
+
follow?: boolean;
|
|
180
|
+
}): {
|
|
181
|
+
node: object;
|
|
182
|
+
};
|
|
183
|
+
readlink?(path: string): string;
|
|
184
|
+
}
|
|
185
|
+
export declare function readingLinks(Fs: LiveReadlinkFs): void;
|
|
186
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Guard } from '../fs/dac.js';
|
|
2
|
+
import { type SyncFsTokenEntry } from './sync-fs-token-registry.js';
|
|
3
|
+
import { type SyncFsRequest, type SyncFsResult } from './sync-fs-wire.js';
|
|
4
|
+
export declare function toErrno(err: unknown): SyncFsResult;
|
|
5
|
+
export interface SyncFsStatJson {
|
|
6
|
+
isDirectory: boolean;
|
|
7
|
+
isFile: boolean;
|
|
8
|
+
isSymbolicLink: boolean;
|
|
9
|
+
size: number;
|
|
10
|
+
mode: number;
|
|
11
|
+
mtimeMs: number;
|
|
12
|
+
atimeMs: number;
|
|
13
|
+
ctimeMs: number;
|
|
14
|
+
ino: number;
|
|
15
|
+
nlink?: number;
|
|
16
|
+
dev?: number;
|
|
17
|
+
readonly?: boolean;
|
|
18
|
+
maxFile?: number;
|
|
19
|
+
ranged?: boolean;
|
|
20
|
+
linkable?: boolean;
|
|
21
|
+
version?: string;
|
|
22
|
+
uid?: number;
|
|
23
|
+
gid?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function guardOf(entry: SyncFsTokenEntry): Guard | undefined;
|
|
26
|
+
export declare function dispatchSyncFs(req: SyncFsRequest): Promise<SyncFsResult>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Created, Dac } from '../fs/dac.js';
|
|
2
|
+
import type { KernelFs } from '../fs/types.js';
|
|
3
|
+
import type { KeptFile } from '../fs/unlinked.js';
|
|
4
|
+
import type { Cred } from '../kernel/cred.js';
|
|
5
|
+
export interface SyncFsTokenEntry {
|
|
6
|
+
fs: KernelFs;
|
|
7
|
+
noLinks?: KernelFs;
|
|
8
|
+
cwd: string;
|
|
9
|
+
statfs?: (path: string) => Promise<{
|
|
10
|
+
quota: number;
|
|
11
|
+
usage: number;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
hold?: (path: string, held: boolean, open: boolean, real?: string, handle?: number) => number | undefined;
|
|
14
|
+
keptFor?: (handle: number) => KeptFile | undefined;
|
|
15
|
+
gate?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
|
|
16
|
+
unlinked?: (path: string) => KeptFile | undefined;
|
|
17
|
+
own?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
|
|
18
|
+
revoked?: (path: string) => boolean;
|
|
19
|
+
renamed?: (from: string, to: string) => void;
|
|
20
|
+
cred?: () => Readonly<Cred>;
|
|
21
|
+
umask?: () => number;
|
|
22
|
+
dac?: Dac;
|
|
23
|
+
pid?: number;
|
|
24
|
+
links?: number;
|
|
25
|
+
created?: Created;
|
|
26
|
+
holdsKept?: (path: string) => Promise<boolean>;
|
|
27
|
+
fresh?: (path: string) => void;
|
|
28
|
+
source?: SourceCheck;
|
|
29
|
+
}
|
|
30
|
+
export interface SourceCheck {
|
|
31
|
+
read(path: string, plain: () => Promise<Uint8Array>): Promise<Uint8Array>;
|
|
32
|
+
open(path: string, real?: string): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export declare function mintSyncFsToken(entry: SyncFsTokenEntry): string;
|
|
35
|
+
export declare function resolveSyncFsToken(token: string): SyncFsTokenEntry | null;
|
|
36
|
+
export declare function revokeSyncFsToken(token: string): void;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { ChangeView } from '../fs/changes.js';
|
|
2
|
+
export declare const SYNC_FS_OPS: readonly ['read', 'write', 'exists', 'stat', 'lstat', 'readdir', 'readdir-stat', 'mkdir', 'rm', 'rename', 'link', 'unlink', 'rmdir', 'symlink', 'readlink', 'chmod', 'utimes', 'lutimes', 'statfs', 'hold', 'create', 'kept', 'pread', 'pwrite', 'append', 'truncate', 'chown', 'lchown', 'access'];
|
|
3
|
+
export type AccessKind = 'open' | 'access' | 'eaccess' | 'follow';
|
|
4
|
+
export declare const HOLD_READ = 4;
|
|
5
|
+
export declare const HOLD_WRITE = 8;
|
|
6
|
+
export declare const HOLD_CREATED = 16;
|
|
7
|
+
export type SyncFsOp = (typeof SYNC_FS_OPS)[number];
|
|
8
|
+
export interface SyncFsRequest {
|
|
9
|
+
token: string;
|
|
10
|
+
op: SyncFsOp;
|
|
11
|
+
path: string;
|
|
12
|
+
body?: Uint8Array;
|
|
13
|
+
arg2?: string;
|
|
14
|
+
mode?: number;
|
|
15
|
+
atimeMs?: number;
|
|
16
|
+
mtimeMs?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
length?: number;
|
|
19
|
+
version?: string;
|
|
20
|
+
handle?: number;
|
|
21
|
+
uid?: number;
|
|
22
|
+
gid?: number;
|
|
23
|
+
exclusive?: boolean;
|
|
24
|
+
identity?: boolean;
|
|
25
|
+
now?: boolean;
|
|
26
|
+
nofollow?: boolean;
|
|
27
|
+
opening?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export type SyncFsResult = {
|
|
30
|
+
ok: true;
|
|
31
|
+
kind: 'bytes';
|
|
32
|
+
bytes: Uint8Array;
|
|
33
|
+
} | {
|
|
34
|
+
ok: true;
|
|
35
|
+
kind: 'json';
|
|
36
|
+
json: unknown;
|
|
37
|
+
} | {
|
|
38
|
+
ok: true;
|
|
39
|
+
kind: 'void';
|
|
40
|
+
} | {
|
|
41
|
+
ok: false;
|
|
42
|
+
errno: string;
|
|
43
|
+
message: string;
|
|
44
|
+
};
|
|
45
|
+
export declare const SYNC_FS_REQUEST_TIMEOUT_MS = 25000;
|
|
46
|
+
export interface SyncFsBridgeStat {
|
|
47
|
+
isFile: boolean;
|
|
48
|
+
isDirectory: boolean;
|
|
49
|
+
isSymbolicLink?: boolean;
|
|
50
|
+
size: number;
|
|
51
|
+
mode?: number;
|
|
52
|
+
mtimeMs?: number;
|
|
53
|
+
atimeMs?: number;
|
|
54
|
+
ctimeMs?: number;
|
|
55
|
+
ino?: number;
|
|
56
|
+
nlink?: number;
|
|
57
|
+
dev?: number;
|
|
58
|
+
readonly?: boolean;
|
|
59
|
+
maxFile?: number;
|
|
60
|
+
ranged?: boolean;
|
|
61
|
+
linkable?: boolean;
|
|
62
|
+
version?: string;
|
|
63
|
+
uid?: number;
|
|
64
|
+
gid?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface SyncFsUsage {
|
|
67
|
+
quota: number;
|
|
68
|
+
usage: number;
|
|
69
|
+
}
|
|
70
|
+
export declare function parseSyncFsUsage(json: unknown): SyncFsUsage | null;
|
|
71
|
+
export type SyncFsFileIo = Pick<SyncFsPosixBridge, 'readFile' | 'writeFile' | 'pread' | 'pwrite' | 'truncate' | 'append'>;
|
|
72
|
+
export type ChownArgs = [
|
|
73
|
+
uid: number | undefined,
|
|
74
|
+
gid: number | undefined,
|
|
75
|
+
follow?: boolean,
|
|
76
|
+
handle?: number
|
|
77
|
+
];
|
|
78
|
+
export interface SyncFsPosixBridge {
|
|
79
|
+
changes?: ChangeView;
|
|
80
|
+
pinned?(handle: number): SyncFsFileIo;
|
|
81
|
+
kept?(handle: number): boolean;
|
|
82
|
+
keptStat?(handle: number): SyncFsBridgeStat;
|
|
83
|
+
readFile(path: string): Uint8Array;
|
|
84
|
+
writeFile(path: string, bytes: Uint8Array, open?: boolean): void;
|
|
85
|
+
stat(path: string): SyncFsBridgeStat;
|
|
86
|
+
lstat(path: string): SyncFsBridgeStat;
|
|
87
|
+
readdir(path: string): string[];
|
|
88
|
+
exists(path: string): boolean;
|
|
89
|
+
mkdir(path: string, mode?: number): void;
|
|
90
|
+
rm(path: string): void;
|
|
91
|
+
rename(from: string, to: string): void;
|
|
92
|
+
link(from: string, to: string, follow?: boolean): void;
|
|
93
|
+
unlink(path: string): void;
|
|
94
|
+
rmdir(path: string): void;
|
|
95
|
+
symlink(target: string, linkPath: string): void;
|
|
96
|
+
readlink(path: string): string;
|
|
97
|
+
chmod(path: string, mode: number): void;
|
|
98
|
+
utimes(path: string, atimeMs: number, mtimeMs: number, now?: boolean): void;
|
|
99
|
+
lutimes(path: string, atimeMs: number, mtimeMs: number, now?: boolean): void;
|
|
100
|
+
hold?(path: string, held: boolean, open?: boolean, handle?: number, want?: number): number | undefined;
|
|
101
|
+
access?(path: string, mode: number, kind?: AccessKind, nofollow?: boolean): void;
|
|
102
|
+
create?(path: string, mode?: number, opening?: boolean): void;
|
|
103
|
+
chown?(path: string, ...rest: ChownArgs): void;
|
|
104
|
+
owners?: boolean;
|
|
105
|
+
links?: boolean;
|
|
106
|
+
readdirStat(path: string): Array<[string, SyncFsBridgeStat | null]>;
|
|
107
|
+
statfs?(path?: string): SyncFsUsage | null;
|
|
108
|
+
pread?(path: string, offset: number, length: number, version?: string): Uint8Array;
|
|
109
|
+
pwrite?(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): void;
|
|
110
|
+
truncate?(path: string, size: number): void;
|
|
111
|
+
append?(path: string, bytes: Uint8Array): number;
|
|
112
|
+
identify?(): void;
|
|
113
|
+
identified?(): SyncFsBridgeStat | null;
|
|
114
|
+
}
|
|
115
|
+
export declare function syncError(code: string, label: string): Error & {
|
|
116
|
+
code: string;
|
|
117
|
+
};
|
|
118
|
+
export declare function parseSyncFsStat(json: unknown): SyncFsBridgeStat | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type SyncFsPosixBridge, type SyncFsResult } from './sync-fs-wire.js';
|
|
2
|
+
import { type SyncSabRequestBody } from './sync-sab-wire.js';
|
|
3
|
+
export interface SabPostLike {
|
|
4
|
+
postMessage(message: unknown, transfer?: Transferable[]): void;
|
|
5
|
+
}
|
|
6
|
+
export interface SyncSabTransport {
|
|
7
|
+
call(req: SyncSabRequestBody, timeoutMs: number, label: string, transfer?: Transferable[]): SyncFsResult;
|
|
8
|
+
}
|
|
9
|
+
export type AtomicsWaitLike = (typedArray: Int32Array, index: number, value: number, timeout?: number) => 'ok' | 'not-equal' | 'timed-out';
|
|
10
|
+
export declare function syncCallCount(): number;
|
|
11
|
+
export declare function createSyncSabTransport(sab: SharedArrayBuffer, port: SabPostLike, deps?: {
|
|
12
|
+
wait?: AtomicsWaitLike;
|
|
13
|
+
now?: () => number;
|
|
14
|
+
memory?: () => number;
|
|
15
|
+
}): SyncSabTransport;
|
|
16
|
+
export declare function createSyncFsSabBridge(transport: SyncSabTransport, opts?: {
|
|
17
|
+
timeoutMs?: number;
|
|
18
|
+
owners?: boolean;
|
|
19
|
+
links?: boolean;
|
|
20
|
+
changes?: SharedArrayBuffer;
|
|
21
|
+
}): SyncFsPosixBridge;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WasmSyscall } from '../kernel/process.js';
|
|
2
|
+
import { type SyncFsRequest, type SyncFsResult } from './sync-fs-wire.js';
|
|
3
|
+
export interface SabPortLike {
|
|
4
|
+
addEventListener(type: 'message', handler: (event: MessageEvent) => void): void;
|
|
5
|
+
removeEventListener(type: 'message', handler: (event: MessageEvent) => void): void;
|
|
6
|
+
}
|
|
7
|
+
export interface SyncSabResponderHandle {
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
10
|
+
export type SyncSabDispatchRequest = SyncFsRequest | (WasmSyscall & {
|
|
11
|
+
token: string;
|
|
12
|
+
});
|
|
13
|
+
export interface SyncSabResponderOptions {
|
|
14
|
+
dispatch: (req: SyncSabDispatchRequest) => Promise<SyncFsResult>;
|
|
15
|
+
}
|
|
16
|
+
export declare function attachSyncSabResponder(port: SabPortLike, sab: SharedArrayBuffer, token: string, opts: SyncSabResponderOptions): SyncSabResponderHandle;
|