@ai-ecoverse/slicc-kernel 1.102.6 → 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 +1 -1
- package/dist/kernel-worker.js +1 -1
- package/dist/node-process-worker.js +1 -1
- package/dist/node.js +1 -1
- 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,130 @@
|
|
|
1
|
+
import { type DeviceAccess, type DeviceMeta, type KernelFdKind } from '../../kernel/fd-table.js';
|
|
2
|
+
import type { WasmSyscall } from '../../kernel/process.js';
|
|
3
|
+
import { type SyncFsBridgeStat, type SyncFsPosixBridge } from '../../realm/sync-fs-wire.js';
|
|
4
|
+
import type { ProcessSys } from '../kernel-streams.js';
|
|
5
|
+
import { type WasiEntry } from './wasi-files.js';
|
|
6
|
+
export interface WasiKernel {
|
|
7
|
+
sys: ProcessSys;
|
|
8
|
+
call(req: WasmSyscall): unknown;
|
|
9
|
+
}
|
|
10
|
+
type Device = 'null' | 'zero' | 'full' | 'urandom';
|
|
11
|
+
export type WasiForkFd = {
|
|
12
|
+
fd: number;
|
|
13
|
+
type: 'kernel';
|
|
14
|
+
nonblock: boolean;
|
|
15
|
+
append: boolean;
|
|
16
|
+
} | {
|
|
17
|
+
fd: number;
|
|
18
|
+
type: 'dir';
|
|
19
|
+
path: string;
|
|
20
|
+
preopen?: string;
|
|
21
|
+
twin?: number;
|
|
22
|
+
} | {
|
|
23
|
+
fd: number;
|
|
24
|
+
type: 'device';
|
|
25
|
+
device: Device;
|
|
26
|
+
access?: DeviceAccess;
|
|
27
|
+
};
|
|
28
|
+
export declare const SEALED_PATH = "/dev/sealed";
|
|
29
|
+
export declare const CLIPBOARD_PATH = "/dev/clipboard";
|
|
30
|
+
export declare function deviceOf(path: string): Device | undefined;
|
|
31
|
+
export declare class WasiFds {
|
|
32
|
+
private readonly table;
|
|
33
|
+
private readonly buffers;
|
|
34
|
+
private readonly reported;
|
|
35
|
+
private readonly byId;
|
|
36
|
+
private readonly ids;
|
|
37
|
+
private readonly kernel;
|
|
38
|
+
private readonly fs;
|
|
39
|
+
constructor(kernel: WasiKernel, fs: SyncFsPosixBridge);
|
|
40
|
+
setup(cwd: string, inherited: ReadonlyArray<{
|
|
41
|
+
fd: number;
|
|
42
|
+
kind?: KernelFdKind;
|
|
43
|
+
flags?: number;
|
|
44
|
+
device?: DeviceMeta;
|
|
45
|
+
}>, root?: boolean): void;
|
|
46
|
+
private preopens;
|
|
47
|
+
find(fd: number): WasiEntry | undefined;
|
|
48
|
+
private shared;
|
|
49
|
+
private seen;
|
|
50
|
+
get isShared(): boolean;
|
|
51
|
+
share(ids: Int32Array, fresh: boolean): void;
|
|
52
|
+
private sync;
|
|
53
|
+
private bump;
|
|
54
|
+
private stdioEntry;
|
|
55
|
+
private fetch;
|
|
56
|
+
private listed;
|
|
57
|
+
private publishFlags;
|
|
58
|
+
setFlags(fd: number, nonblock: boolean, append: boolean): void;
|
|
59
|
+
setCloexec(fd: number, on: boolean): void;
|
|
60
|
+
cwd(): string | undefined;
|
|
61
|
+
terminals(): number[];
|
|
62
|
+
sockets(): number[];
|
|
63
|
+
adopt(fd: number, kind: KernelFdKind, nonblock: boolean, dgram?: boolean): void;
|
|
64
|
+
get(fd: number): WasiEntry;
|
|
65
|
+
preopen(fd: number): Extract<WasiEntry, {
|
|
66
|
+
type: 'dir';
|
|
67
|
+
}> & {
|
|
68
|
+
preopen: string;
|
|
69
|
+
};
|
|
70
|
+
dir(fd: number): Extract<WasiEntry, {
|
|
71
|
+
type: 'dir';
|
|
72
|
+
}>;
|
|
73
|
+
private install;
|
|
74
|
+
readonly cloexec: Set<number>;
|
|
75
|
+
implicitCloexec: boolean;
|
|
76
|
+
dup(fd: number, min: number, cloexec: boolean): number;
|
|
77
|
+
pipe(): [number, number];
|
|
78
|
+
chdir(path: string): void;
|
|
79
|
+
promoteFiles(): void;
|
|
80
|
+
snapshot(): WasiForkFd[];
|
|
81
|
+
restore(fds: readonly WasiForkFd[], cloexec: readonly number[]): void;
|
|
82
|
+
inheritable(): Map<number, number>;
|
|
83
|
+
private locking;
|
|
84
|
+
holdLocks(): void;
|
|
85
|
+
private dropLocks;
|
|
86
|
+
close(fd: number): void;
|
|
87
|
+
renumber(from: number, to: number, keep?: boolean): void;
|
|
88
|
+
private release;
|
|
89
|
+
private drop;
|
|
90
|
+
private forget;
|
|
91
|
+
private know;
|
|
92
|
+
private identity;
|
|
93
|
+
private sharing;
|
|
94
|
+
private learn;
|
|
95
|
+
linked(from: string, to: string): void;
|
|
96
|
+
private letGo;
|
|
97
|
+
kind(fd: number, e: Extract<WasiEntry, {
|
|
98
|
+
type: 'kernel';
|
|
99
|
+
}>): KernelFdKind;
|
|
100
|
+
datagram(fd: number, e: Extract<WasiEntry, {
|
|
101
|
+
type: 'kernel';
|
|
102
|
+
}>): boolean;
|
|
103
|
+
flushAll(): void;
|
|
104
|
+
flushEarly(): void;
|
|
105
|
+
flushPath(path: string): void;
|
|
106
|
+
holdsUnder(path: string): boolean;
|
|
107
|
+
unlinking(path: string, linked?: SyncFsBridgeStat): void;
|
|
108
|
+
unlinked(path: string, linked?: SyncFsBridgeStat): void;
|
|
109
|
+
private openedIno;
|
|
110
|
+
private inoOf;
|
|
111
|
+
private survives;
|
|
112
|
+
private detach;
|
|
113
|
+
renamed(from: string, to: string, replacedLinked?: SyncFsBridgeStat): void;
|
|
114
|
+
resolve(dirfd: number, path: string): string;
|
|
115
|
+
private openKernelDevice;
|
|
116
|
+
private openCharDevice;
|
|
117
|
+
open(path: string, oflags: number, rights: bigint, fdflags: number): number;
|
|
118
|
+
private regular;
|
|
119
|
+
private kernelHolds;
|
|
120
|
+
private readonly learned;
|
|
121
|
+
private named;
|
|
122
|
+
private file;
|
|
123
|
+
private freshBuffer;
|
|
124
|
+
private kernelFile;
|
|
125
|
+
private createNew;
|
|
126
|
+
private isLink;
|
|
127
|
+
private statOrMissing;
|
|
128
|
+
private reopen;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type RangedWatch } from '../../fs/ranged.js';
|
|
2
|
+
import type { DeviceAccess, KernelFdKind } from '../../kernel/fd-table.js';
|
|
3
|
+
import type { SyncFsBridgeStat, SyncFsFileIo, SyncFsPosixBridge } from '../../realm/sync-fs-wire.js';
|
|
4
|
+
export declare class WasiError extends Error {
|
|
5
|
+
readonly code: string;
|
|
6
|
+
constructor(code: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class FileBuffer {
|
|
9
|
+
private data;
|
|
10
|
+
private length;
|
|
11
|
+
private dirty;
|
|
12
|
+
private whole;
|
|
13
|
+
private from;
|
|
14
|
+
private to;
|
|
15
|
+
private orphaned;
|
|
16
|
+
opens: number;
|
|
17
|
+
private readonly fs;
|
|
18
|
+
private where;
|
|
19
|
+
private readonly ranged;
|
|
20
|
+
private readonly watch;
|
|
21
|
+
private seen;
|
|
22
|
+
maxFile: number | undefined;
|
|
23
|
+
handle: number | undefined;
|
|
24
|
+
constructor(fs: SyncFsFileIo, path: string, empty: boolean, maxFile?: number, size?: number, version?: string, watch?: RangedWatch);
|
|
25
|
+
get path(): string;
|
|
26
|
+
set path(path: string);
|
|
27
|
+
get isRanged(): boolean;
|
|
28
|
+
get pin(): string | undefined;
|
|
29
|
+
keep(): void;
|
|
30
|
+
load(): Uint8Array;
|
|
31
|
+
size(): number;
|
|
32
|
+
pread(max: number, at: number): Uint8Array;
|
|
33
|
+
fits(end: number): void;
|
|
34
|
+
pwrite(bytes: Uint8Array, at: number): number;
|
|
35
|
+
append(bytes: Uint8Array): number | undefined;
|
|
36
|
+
truncate(size: number): void;
|
|
37
|
+
private ensure;
|
|
38
|
+
orphan(): void;
|
|
39
|
+
isOrphan(): boolean;
|
|
40
|
+
isDirty(): boolean;
|
|
41
|
+
contents(): Uint8Array;
|
|
42
|
+
flush(): void;
|
|
43
|
+
}
|
|
44
|
+
export declare class LocalFile {
|
|
45
|
+
offset: number;
|
|
46
|
+
refs: number;
|
|
47
|
+
readonly buffer: FileBuffer;
|
|
48
|
+
readonly readable: boolean;
|
|
49
|
+
readonly writable: boolean;
|
|
50
|
+
append: boolean;
|
|
51
|
+
constructor(buffer: FileBuffer, readable: boolean, writable: boolean, append: boolean);
|
|
52
|
+
get path(): string;
|
|
53
|
+
size(): number;
|
|
54
|
+
pread(max: number, at: number): Uint8Array;
|
|
55
|
+
read(max: number): Uint8Array;
|
|
56
|
+
pwrite(bytes: Uint8Array, at: number): number;
|
|
57
|
+
write(bytes: Uint8Array): number;
|
|
58
|
+
truncate(size: number): void;
|
|
59
|
+
flush(): void;
|
|
60
|
+
}
|
|
61
|
+
export interface DirListing {
|
|
62
|
+
names: string[];
|
|
63
|
+
stats: Map<string, SyncFsBridgeStat | null>;
|
|
64
|
+
}
|
|
65
|
+
export type WasiEntry = {
|
|
66
|
+
type: 'kernel';
|
|
67
|
+
kind?: KernelFdKind;
|
|
68
|
+
dgram?: boolean;
|
|
69
|
+
nonblock: boolean;
|
|
70
|
+
append: boolean;
|
|
71
|
+
path?: string;
|
|
72
|
+
ino?: number;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'file';
|
|
75
|
+
file: LocalFile;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'dir';
|
|
78
|
+
path: string;
|
|
79
|
+
preopen?: string;
|
|
80
|
+
twin?: number;
|
|
81
|
+
listing?: DirListing;
|
|
82
|
+
} | {
|
|
83
|
+
type: 'device';
|
|
84
|
+
device: 'null' | 'zero' | 'full' | 'urandom';
|
|
85
|
+
access?: DeviceAccess;
|
|
86
|
+
};
|
|
87
|
+
export declare function normalize(path: string): string;
|
|
88
|
+
export declare function physical(fs: Pick<SyncFsPosixBridge, 'lstat' | 'readlink' | 'access' | 'links'>, path: string): string;
|
|
89
|
+
export declare function realOf(fs: Pick<SyncFsPosixBridge, 'lstat' | 'readlink'>, path: string): string;
|
|
90
|
+
export declare function resolveUnder(dir: string, path: string): string;
|
|
91
|
+
export declare function pathInode(path: string): bigint;
|
|
92
|
+
export declare const MISS_TTL_MS = 20;
|
|
93
|
+
export declare const FS_GEN = 4;
|
|
94
|
+
export declare const SHARED_IDS_BYTES: number;
|
|
95
|
+
export declare function cachingBridge(bridge: SyncFsPosixBridge, now?: () => number, shared?: Int32Array): SyncFsPosixBridge & {
|
|
96
|
+
invalidate(): void;
|
|
97
|
+
touched(path?: string, ino?: number): void;
|
|
98
|
+
threaded(): void;
|
|
99
|
+
};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { DeviceMeta, KernelFdKind } from '../../kernel/fd-table.js';
|
|
2
|
+
import type { SyncFsPosixBridge } from '../../realm/sync-fs-wire.js';
|
|
3
|
+
import { WasiFds, type WasiForkFd, type WasiKernel } from './wasi-fds.js';
|
|
4
|
+
import { WasiMemory } from './wasi-memory.js';
|
|
5
|
+
import type { WasiSigmask } from './wasi-sigmask.js';
|
|
6
|
+
import type { WasiSignals } from './wasi-signals.js';
|
|
7
|
+
import type { ThreadEntry } from './wasix-fork.js';
|
|
8
|
+
export declare class WasiExit extends Error {
|
|
9
|
+
readonly code: number;
|
|
10
|
+
constructor(code: number);
|
|
11
|
+
}
|
|
12
|
+
export interface WasiHostOptions {
|
|
13
|
+
args: readonly string[];
|
|
14
|
+
env: Readonly<Record<string, string>>;
|
|
15
|
+
cwd: string;
|
|
16
|
+
pid: number;
|
|
17
|
+
ppid?: number;
|
|
18
|
+
parent?: () => number;
|
|
19
|
+
kernel: WasiKernel;
|
|
20
|
+
fs: SyncFsPosixBridge & {
|
|
21
|
+
invalidate?(): void;
|
|
22
|
+
touched?(path?: string, ino?: number): void;
|
|
23
|
+
};
|
|
24
|
+
inherited?: ReadonlyArray<{
|
|
25
|
+
fd: number;
|
|
26
|
+
kind?: KernelFdKind;
|
|
27
|
+
flags?: number;
|
|
28
|
+
device?: DeviceMeta;
|
|
29
|
+
}>;
|
|
30
|
+
shared?: Int32Array;
|
|
31
|
+
forked?: {
|
|
32
|
+
fds: readonly WasiForkFd[];
|
|
33
|
+
cloexec: readonly number[];
|
|
34
|
+
};
|
|
35
|
+
preopenRoot?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export type WasiFunction = (...args: never[]) => number | undefined;
|
|
38
|
+
export declare class WasiHost {
|
|
39
|
+
readonly mem: WasiMemory;
|
|
40
|
+
readonly fds: WasiFds;
|
|
41
|
+
private readonly started;
|
|
42
|
+
private cache;
|
|
43
|
+
private readonly startCwd;
|
|
44
|
+
interruptWakes: boolean;
|
|
45
|
+
entered: boolean;
|
|
46
|
+
onRaise: ((sig: number) => boolean) | undefined;
|
|
47
|
+
muted: ((fd: number, data: Uint8Array) => boolean) | undefined;
|
|
48
|
+
signals: WasiSignals | undefined;
|
|
49
|
+
sigmask: WasiSigmask | undefined;
|
|
50
|
+
linkedTls: (() => Array<[number, number]>) | undefined;
|
|
51
|
+
threadEntry: ThreadEntry | undefined;
|
|
52
|
+
linkedModules: (() => Record<string, WebAssembly.Module>) | undefined;
|
|
53
|
+
interrupted: (() => boolean) | undefined;
|
|
54
|
+
quietly: (fn: () => void) => void;
|
|
55
|
+
private readonly listening;
|
|
56
|
+
readonly o: WasiHostOptions;
|
|
57
|
+
constructor(o: WasiHostOptions);
|
|
58
|
+
get cwd(): string;
|
|
59
|
+
private created;
|
|
60
|
+
sliccTtyImports(): Record<string, WasiFunction>;
|
|
61
|
+
sliccFsImports(): Record<string, WasiFunction>;
|
|
62
|
+
sliccImports(): Record<string, WasiFunction>;
|
|
63
|
+
private poll;
|
|
64
|
+
private maskedPoll;
|
|
65
|
+
private suspend;
|
|
66
|
+
imports(): Record<string, WasiFunction>;
|
|
67
|
+
now(id: number): bigint;
|
|
68
|
+
private environ;
|
|
69
|
+
private processImports;
|
|
70
|
+
private ioImports;
|
|
71
|
+
private statImports;
|
|
72
|
+
private pathImports;
|
|
73
|
+
private socket;
|
|
74
|
+
private socketImports;
|
|
75
|
+
private recvAll;
|
|
76
|
+
private file;
|
|
77
|
+
private positional;
|
|
78
|
+
private readonly unnamed;
|
|
79
|
+
private changed;
|
|
80
|
+
private learnPath;
|
|
81
|
+
private lockedFile;
|
|
82
|
+
private kernelStat;
|
|
83
|
+
private write;
|
|
84
|
+
private read;
|
|
85
|
+
private local;
|
|
86
|
+
private seek;
|
|
87
|
+
private sync;
|
|
88
|
+
private fdstat;
|
|
89
|
+
private writeFilestat;
|
|
90
|
+
private fdFilestat;
|
|
91
|
+
private localFilestat;
|
|
92
|
+
private keptStat;
|
|
93
|
+
private sized;
|
|
94
|
+
private statOrphanable;
|
|
95
|
+
private synthetic;
|
|
96
|
+
private resolveForDev;
|
|
97
|
+
private pathFilestat;
|
|
98
|
+
private setTimes;
|
|
99
|
+
private readdir;
|
|
100
|
+
private list;
|
|
101
|
+
private lstatOrNull;
|
|
102
|
+
flushAll(): void;
|
|
103
|
+
}
|
|
104
|
+
export declare function wrap(table: Record<string, WasiFunction>): Record<string, WasiFunction>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class WasiMemory {
|
|
2
|
+
private memory;
|
|
3
|
+
bind(memory: WebAssembly.Memory): void;
|
|
4
|
+
private buffer;
|
|
5
|
+
view(): DataView;
|
|
6
|
+
bytes(ptr: number, len: number): Uint8Array;
|
|
7
|
+
string(ptr: number, len: number): string;
|
|
8
|
+
cString(ptr: number): string;
|
|
9
|
+
size(): number;
|
|
10
|
+
iovecs(ptr: number, count: number): Array<[number, number]>;
|
|
11
|
+
capacity(ptr: number, count: number): number;
|
|
12
|
+
gather(ptr: number, count: number): Uint8Array;
|
|
13
|
+
scatter(ptr: number, count: number, data: Uint8Array): number;
|
|
14
|
+
putStrings(list: readonly string[], ptrs: number, buf: number): void;
|
|
15
|
+
putSizes(list: readonly string[], countPtr: number, sizePtr: number): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ImportedMemory {
|
|
2
|
+
module: string;
|
|
3
|
+
name: string;
|
|
4
|
+
initial: number;
|
|
5
|
+
maximum?: number;
|
|
6
|
+
shared: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function importedMemory(bytes: Uint8Array): ImportedMemory | undefined;
|
|
9
|
+
export declare const RESERVED_NAMESPACES: ReadonlySet<string>;
|
|
10
|
+
export type ForeignResult = 'none' | 'i32' | 'i64' | 'f32' | 'f64' | 'other';
|
|
11
|
+
export type ForeignResults = Record<string, Record<string, ForeignResult>>;
|
|
12
|
+
export declare function foreignImports(bytes: Uint8Array): ForeignResults | undefined;
|
|
13
|
+
export declare function libcVersion(module: WebAssembly.Module): number | undefined;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WasiFds, WasiKernel } from './wasi-fds.js';
|
|
2
|
+
import type { WasiMemory } from './wasi-memory.js';
|
|
3
|
+
export type ClockNow = (id: number) => bigint;
|
|
4
|
+
interface PollDeps {
|
|
5
|
+
mem: WasiMemory;
|
|
6
|
+
fds: WasiFds;
|
|
7
|
+
kernel: WasiKernel;
|
|
8
|
+
now: ClockNow;
|
|
9
|
+
interruptWakes?: boolean;
|
|
10
|
+
entered?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function pollOneoff(deps: PollDeps, inPtr: number, outPtr: number, nsubs: number, neventsPtr: number): number;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { MountLine, ProcessListing } from '../../kernel/proc-info.js';
|
|
2
|
+
import { type SyncFsBridgeStat, type SyncFsPosixBridge } from '../../realm/sync-fs-wire.js';
|
|
3
|
+
import { type MemorySource } from '../procfs.js';
|
|
4
|
+
export interface ProcSource {
|
|
5
|
+
procList(): ProcessListing;
|
|
6
|
+
mountList(): MountLine[];
|
|
7
|
+
}
|
|
8
|
+
export declare function inProc(path: string): boolean;
|
|
9
|
+
export declare class ProcTree {
|
|
10
|
+
private readonly source;
|
|
11
|
+
private readonly pid;
|
|
12
|
+
private readonly memory;
|
|
13
|
+
constructor(source: ProcSource, pid: number, memory?: MemorySource);
|
|
14
|
+
private listing;
|
|
15
|
+
private alive;
|
|
16
|
+
private node;
|
|
17
|
+
private info;
|
|
18
|
+
private task;
|
|
19
|
+
private parts;
|
|
20
|
+
private find;
|
|
21
|
+
stat(path: string, follow?: boolean): SyncFsBridgeStat;
|
|
22
|
+
private bytes;
|
|
23
|
+
read(path: string): Uint8Array;
|
|
24
|
+
readdir(path: string): string[];
|
|
25
|
+
readlink(path: string): string;
|
|
26
|
+
exists(path: string): boolean;
|
|
27
|
+
}
|
|
28
|
+
type ProcRefusal = {
|
|
29
|
+
refused: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function procAlias(fs: {
|
|
32
|
+
readlink?(path: string): Promise<string>;
|
|
33
|
+
lstat?(path: string): Promise<unknown>;
|
|
34
|
+
}, path: string, follow: boolean): Promise<string | undefined | ProcRefusal>;
|
|
35
|
+
export declare function procfsBridge<T extends SyncFsPosixBridge>(fs: T, tree: ProcTree): T;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type BlockedMask } from '../../realm/sync-sab-wire.js';
|
|
2
|
+
export declare const kernelBits: (lo: number) => number;
|
|
3
|
+
export declare const libcBits: (bits: number) => number;
|
|
4
|
+
export declare class WasiSigmask {
|
|
5
|
+
private lo;
|
|
6
|
+
private hi;
|
|
7
|
+
private readonly header;
|
|
8
|
+
private readonly deliver;
|
|
9
|
+
private readonly process;
|
|
10
|
+
constructor(header: Int32Array, deliver: () => void, process?: Int32Array);
|
|
11
|
+
static unsupported(header: Int32Array): void;
|
|
12
|
+
set(how: number, setLo: number, setHi: number, old: (lo: number, hi: number) => void): number;
|
|
13
|
+
swap(setLo: number, setHi: number): [number, number];
|
|
14
|
+
deliverUnblocked(): boolean;
|
|
15
|
+
restore([lo, hi]: [number, number]): void;
|
|
16
|
+
inherited(): BlockedMask;
|
|
17
|
+
discard(sig: number): void;
|
|
18
|
+
pending(): number;
|
|
19
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { SignalHooks } from '../process-signals.js';
|
|
2
|
+
export interface WasiSignalState {
|
|
3
|
+
callback?: string;
|
|
4
|
+
hooked?: true;
|
|
5
|
+
handlers: number;
|
|
6
|
+
ignoring: number;
|
|
7
|
+
restarting: number;
|
|
8
|
+
uncaught: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class WasiSignals implements SignalHooks {
|
|
11
|
+
private exports;
|
|
12
|
+
private callback;
|
|
13
|
+
private uncaught;
|
|
14
|
+
private delivering;
|
|
15
|
+
private defaulted;
|
|
16
|
+
private libcDefault;
|
|
17
|
+
private hooked;
|
|
18
|
+
private handlers;
|
|
19
|
+
private ignoring;
|
|
20
|
+
private restarting;
|
|
21
|
+
private defaults;
|
|
22
|
+
private readonly fallBack;
|
|
23
|
+
private readonly onKilled;
|
|
24
|
+
constructor(fallBack: (sig: number) => void, onKilled?: (code: number) => void);
|
|
25
|
+
killed(code: number): void;
|
|
26
|
+
bind(exports: WebAssembly.Exports): void;
|
|
27
|
+
register(name: string): void;
|
|
28
|
+
useHook(): void;
|
|
29
|
+
disposition(sig: number, disposition: number, flags: number): number;
|
|
30
|
+
snapshot(): WasiSignalState;
|
|
31
|
+
restore(state: WasiSignalState): void;
|
|
32
|
+
masks(): {
|
|
33
|
+
caught: number;
|
|
34
|
+
ignored: number;
|
|
35
|
+
restart: number;
|
|
36
|
+
defaults?: number;
|
|
37
|
+
} | null;
|
|
38
|
+
raise(sig: number): void;
|
|
39
|
+
muted(fd: number, data: Uint8Array): boolean;
|
|
40
|
+
raised(sig: number): boolean;
|
|
41
|
+
private defaultAction;
|
|
42
|
+
private handler;
|
|
43
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Termios } from '../../kernel/tty.js';
|
|
2
|
+
import type { WasiFds, WasiKernel } from './wasi-fds.js';
|
|
3
|
+
import type { WasiMemory } from './wasi-memory.js';
|
|
4
|
+
export declare function writeTermios(mem: WasiMemory, ptr: number, termios: Termios): void;
|
|
5
|
+
export declare function readTermios(mem: WasiMemory, ptr: number): Termios;
|
|
6
|
+
export declare function sliccTty(mem: WasiMemory, fds: WasiFds, kernel: WasiKernel, interrupted?: () => void): {
|
|
7
|
+
tcgetattr: (fd: number, ptr: number) => undefined;
|
|
8
|
+
tcsetattr: (fd: number, actions: number, ptr: number) => undefined;
|
|
9
|
+
winsize: (fd: number, ptr: number) => undefined;
|
|
10
|
+
};
|
|
@@ -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>;
|