quickjs-wasi-reactor 0.0.1

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.
@@ -0,0 +1,255 @@
1
+ import * as wasi from "./wasi-defs.js";
2
+ import { Fd, Inode, PollResult } from "./fd.js";
3
+ export declare class OpenFile extends Fd {
4
+ file: File;
5
+ file_pos: bigint;
6
+ constructor(file: File);
7
+ fd_allocate(offset: bigint, len: bigint): number;
8
+ fd_fdstat_get(): {
9
+ ret: number;
10
+ fdstat: wasi.Fdstat | null;
11
+ };
12
+ fd_filestat_set_size(size: bigint): number;
13
+ fd_read(size: number): {
14
+ ret: number;
15
+ data: Uint8Array;
16
+ };
17
+ fd_pread(size: number, offset: bigint): {
18
+ ret: number;
19
+ data: Uint8Array;
20
+ };
21
+ fd_seek(offset: bigint, whence: number): {
22
+ ret: number;
23
+ offset: bigint;
24
+ };
25
+ fd_tell(): {
26
+ ret: number;
27
+ offset: bigint;
28
+ };
29
+ fd_write(data: Uint8Array): {
30
+ ret: number;
31
+ nwritten: number;
32
+ };
33
+ fd_pwrite(data: Uint8Array, offset: bigint): {
34
+ ret: number;
35
+ nwritten: number;
36
+ };
37
+ fd_filestat_get(): {
38
+ ret: number;
39
+ filestat: wasi.Filestat;
40
+ };
41
+ }
42
+ export declare class OpenDirectory extends Fd {
43
+ dir: Directory;
44
+ constructor(dir: Directory);
45
+ fd_seek(_offset: bigint, _whence: number): {
46
+ ret: number;
47
+ offset: bigint;
48
+ };
49
+ fd_tell(): {
50
+ ret: number;
51
+ offset: bigint;
52
+ };
53
+ fd_allocate(_offset: bigint, _len: bigint): number;
54
+ fd_fdstat_get(): {
55
+ ret: number;
56
+ fdstat: wasi.Fdstat | null;
57
+ };
58
+ fd_readdir_single(cookie: bigint): {
59
+ ret: number;
60
+ dirent: wasi.Dirent | null;
61
+ };
62
+ path_filestat_get(_flags: number, path_str: string): {
63
+ ret: number;
64
+ filestat: wasi.Filestat | null;
65
+ };
66
+ path_lookup(path_str: string, _dirflags: number): {
67
+ ret: number;
68
+ inode_obj: Inode | null;
69
+ };
70
+ path_open(_dirflags: number, path_str: string, oflags: number, fs_rights_base: bigint, _fs_rights_inheriting: bigint, fd_flags: number): {
71
+ ret: number;
72
+ fd_obj: Fd | null;
73
+ };
74
+ path_create_directory(path: string): number;
75
+ path_link(path_str: string, inode: Inode, allow_dir: boolean): number;
76
+ path_unlink(path_str: string): {
77
+ ret: number;
78
+ inode_obj: Inode | null;
79
+ };
80
+ path_unlink_file(path_str: string): number;
81
+ path_remove_directory(path_str: string): number;
82
+ fd_filestat_get(): {
83
+ ret: number;
84
+ filestat: wasi.Filestat;
85
+ };
86
+ fd_filestat_set_size(_size: bigint): number;
87
+ fd_read(_size: number): {
88
+ ret: number;
89
+ data: Uint8Array;
90
+ };
91
+ fd_pread(_size: number, _offset: bigint): {
92
+ ret: number;
93
+ data: Uint8Array;
94
+ };
95
+ fd_write(_data: Uint8Array): {
96
+ ret: number;
97
+ nwritten: number;
98
+ };
99
+ fd_pwrite(_data: Uint8Array, _offset: bigint): {
100
+ ret: number;
101
+ nwritten: number;
102
+ };
103
+ }
104
+ export declare class PreopenDirectory extends OpenDirectory {
105
+ prestat_name: string;
106
+ constructor(name: string, contents: Map<string, Inode>);
107
+ fd_prestat_get(): {
108
+ ret: number;
109
+ prestat: wasi.Prestat | null;
110
+ };
111
+ }
112
+ export declare class File extends Inode {
113
+ data: Uint8Array;
114
+ readonly: boolean;
115
+ constructor(data: ArrayBufferLike | ArrayLike<number>, options?: Partial<{
116
+ readonly: boolean;
117
+ }>);
118
+ path_open(oflags: number, fs_rights_base: bigint, fd_flags: number): {
119
+ ret: number;
120
+ fd_obj: null;
121
+ } | {
122
+ ret: number;
123
+ fd_obj: OpenFile;
124
+ };
125
+ get size(): bigint;
126
+ stat(): wasi.Filestat;
127
+ }
128
+ declare class Path {
129
+ parts: string[];
130
+ is_dir: boolean;
131
+ static from(path: string): {
132
+ ret: number;
133
+ path: Path | null;
134
+ };
135
+ to_path_string(): string;
136
+ }
137
+ export declare class Directory extends Inode {
138
+ contents: Map<string, Inode>;
139
+ private parent;
140
+ constructor(contents: Map<string, Inode> | [string, Inode][]);
141
+ parent_ino(): bigint;
142
+ path_open(_oflags: number, _fs_rights_base: bigint, _fd_flags: number): {
143
+ ret: number;
144
+ fd_obj: OpenDirectory;
145
+ };
146
+ stat(): wasi.Filestat;
147
+ get_entry_for_path(path: Path): {
148
+ ret: number;
149
+ entry: Inode | null;
150
+ };
151
+ get_parent_dir_and_entry_for_path(path: Path, allow_undefined: boolean): {
152
+ ret: number;
153
+ parent_entry: Directory | null;
154
+ filename: string | null;
155
+ entry: Inode | null;
156
+ };
157
+ create_entry_for_path(path_str: string, is_dir: boolean): {
158
+ ret: number;
159
+ entry: Inode | null;
160
+ };
161
+ }
162
+ export declare class ConsoleStdout extends Fd {
163
+ private ino;
164
+ write: (buffer: Uint8Array) => void;
165
+ constructor(write: (buffer: Uint8Array) => void);
166
+ fd_filestat_get(): {
167
+ ret: number;
168
+ filestat: wasi.Filestat;
169
+ };
170
+ fd_fdstat_get(): {
171
+ ret: number;
172
+ fdstat: wasi.Fdstat | null;
173
+ };
174
+ fd_write(data: Uint8Array): {
175
+ ret: number;
176
+ nwritten: number;
177
+ };
178
+ static lineBuffered(write: (line: string) => void): ConsoleStdout;
179
+ }
180
+ /**
181
+ * PollableStdin is a stdin implementation that supports async polling.
182
+ * Data can be pushed to it at any time, and poll_oneoff will detect when data is available.
183
+ */
184
+ export declare class PollableStdin extends Fd {
185
+ private ino;
186
+ private buffer;
187
+ private bufferSize;
188
+ private closed;
189
+ constructor();
190
+ /** Push data to be read from stdin */
191
+ push(data: Uint8Array): void;
192
+ /** Close stdin (future reads will return EOF) */
193
+ close(): void;
194
+ /** Check if data is available */
195
+ hasData(): boolean;
196
+ /** Check if closed */
197
+ isClosed(): boolean;
198
+ fd_fdstat_get(): {
199
+ ret: number;
200
+ fdstat: wasi.Fdstat | null;
201
+ };
202
+ fd_filestat_get(): {
203
+ ret: number;
204
+ filestat: wasi.Filestat;
205
+ };
206
+ fd_read(size: number): {
207
+ ret: number;
208
+ data: Uint8Array;
209
+ };
210
+ fd_poll(eventtype: number): PollResult;
211
+ }
212
+ /**
213
+ * DevOut is a write-only file descriptor for output.
214
+ * Used for /dev/out to send data from QuickJS to the host.
215
+ */
216
+ export declare class DevOut extends Fd {
217
+ private ino;
218
+ private onWrite;
219
+ constructor(onWrite: (data: Uint8Array) => void);
220
+ fd_fdstat_get(): {
221
+ ret: number;
222
+ fdstat: wasi.Fdstat | null;
223
+ };
224
+ fd_filestat_get(): {
225
+ ret: number;
226
+ filestat: wasi.Filestat;
227
+ };
228
+ fd_write(data: Uint8Array): {
229
+ ret: number;
230
+ nwritten: number;
231
+ };
232
+ fd_poll(eventtype: number): PollResult;
233
+ }
234
+ /**
235
+ * DevDirectory is a preopened directory that contains custom device files.
236
+ */
237
+ export declare class DevDirectory extends Fd {
238
+ private devices;
239
+ private prestat_name;
240
+ constructor(name: string, devices: Map<string, Fd>);
241
+ fd_fdstat_get(): {
242
+ ret: number;
243
+ fdstat: wasi.Fdstat | null;
244
+ };
245
+ fd_prestat_get(): {
246
+ ret: number;
247
+ prestat: wasi.Prestat | null;
248
+ };
249
+ path_open(_dirflags: number, path: string, _oflags: number, _fs_rights_base: bigint, _fs_rights_inheriting: bigint, _fd_flags: number): {
250
+ ret: number;
251
+ fd_obj: Fd | null;
252
+ };
253
+ }
254
+ export {};
255
+ //# sourceMappingURL=fs-mem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-mem.d.ts","sourceRoot":"","sources":["../src/fs-mem.ts"],"names":[],"mappings":"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"}