virtual-machine 0.2.1 → 0.3.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/build/{chunk-XMDCIPCU.mjs → chunk-7SVGV3JI.mjs} +132 -17
- package/build/cli.js +133 -18
- package/build/index.d.ts +85 -6
- package/build/index.js +133 -18
- package/build/index.mjs +3 -3
- package/build/node-worker.js +133 -18
- package/build/{riscv_vm-USWLSVNQ.mjs → riscv_vm-B72XE6VL.mjs} +1 -1
- package/build/worker.js +25 -18
- package/native/index.d.ts +3 -0
- package/native/index.mjs +3 -0
- package/native/riscv-vm-native.darwin-arm64.node +0 -0
- package/native/riscv-vm-native.darwin-x64.node +0 -0
- package/native/riscv-vm-native.linux-arm64-gnu.node +0 -0
- package/native/riscv-vm-native.linux-arm64-musl.node +0 -0
- package/native/riscv-vm-native.linux-x64-gnu.node +0 -0
- package/native/riscv-vm-native.linux-x64-musl.node +0 -0
- package/native/riscv-vm-native.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -14,6 +14,18 @@ declare enum NetworkStatus {
|
|
|
14
14
|
declare class WasmVm {
|
|
15
15
|
free(): void;
|
|
16
16
|
[Symbol.dispose](): void;
|
|
17
|
+
/**
|
|
18
|
+
* Enable VirtIO GPU device for graphics rendering.
|
|
19
|
+
*
|
|
20
|
+
* The GPU device allows the kernel to render to a framebuffer which can
|
|
21
|
+
* then be displayed in a Canvas element. Use `get_gpu_frame()` to retrieve
|
|
22
|
+
* the rendered frame pixels.
|
|
23
|
+
*
|
|
24
|
+
* # Arguments
|
|
25
|
+
* * `width` - Display width in pixels (default 800 if 0)
|
|
26
|
+
* * `height` - Display height in pixels (default 600 if 0)
|
|
27
|
+
*/
|
|
28
|
+
enable_gpu(width: number, height: number): void;
|
|
17
29
|
/**
|
|
18
30
|
* Get a byte from the UART output buffer, if available.
|
|
19
31
|
*
|
|
@@ -21,6 +33,18 @@ declare class WasmVm {
|
|
|
21
33
|
* and the local UART buffer (for hart 0 output).
|
|
22
34
|
*/
|
|
23
35
|
get_output(): number | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Enable VirtIO Input device for keyboard input.
|
|
38
|
+
*
|
|
39
|
+
* After calling this, use `send_key_event()` to forward keyboard events
|
|
40
|
+
* from JavaScript to the guest kernel.
|
|
41
|
+
*/
|
|
42
|
+
enable_input(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get GPU display dimensions.
|
|
45
|
+
* Returns [width, height] or null if GPU is not enabled.
|
|
46
|
+
*/
|
|
47
|
+
get_gpu_size(): Uint32Array | undefined;
|
|
24
48
|
/**
|
|
25
49
|
* Print the VM banner to UART output (visible in browser).
|
|
26
50
|
* Call this after creating the VM to show a boot banner.
|
|
@@ -34,10 +58,27 @@ declare class WasmVm {
|
|
|
34
58
|
* Get CPU count (from kernel-reported value).
|
|
35
59
|
*/
|
|
36
60
|
get_cpu_count(): number;
|
|
61
|
+
/**
|
|
62
|
+
* Get GPU frame data as RGBA pixels.
|
|
63
|
+
* Returns a Uint8Array of pixel data, or null if no frame is available.
|
|
64
|
+
*
|
|
65
|
+
* The frame data is in RGBA format with 4 bytes per pixel (800x600 = 1,920,000 bytes).
|
|
66
|
+
*
|
|
67
|
+
* This reads from a fixed framebuffer address in guest memory (0x8100_0000).
|
|
68
|
+
* The kernel GPU driver writes pixels there, and we read them here.
|
|
69
|
+
*/
|
|
70
|
+
get_gpu_frame(): Uint8Array | undefined;
|
|
37
71
|
/**
|
|
38
72
|
* Get system uptime in milliseconds (from kernel-reported value).
|
|
39
73
|
*/
|
|
40
74
|
get_uptime_ms(): bigint;
|
|
75
|
+
/**
|
|
76
|
+
* Check if there's a GPU frame ready for rendering.
|
|
77
|
+
*
|
|
78
|
+
* With direct memory framebuffer, this always returns true when GPU is enabled.
|
|
79
|
+
* The framebuffer at FRAMEBUFFER_ADDR always contains the current frame.
|
|
80
|
+
*/
|
|
81
|
+
has_gpu_frame(): boolean;
|
|
41
82
|
/**
|
|
42
83
|
* Start worker threads for secondary harts (1..num_harts).
|
|
43
84
|
*
|
|
@@ -71,10 +112,32 @@ declare class WasmVm {
|
|
|
71
112
|
* * `num_harts` - Number of harts (0 = auto-detect)
|
|
72
113
|
*/
|
|
73
114
|
static new_with_harts(kernel: Uint8Array, num_harts: number): WasmVm;
|
|
115
|
+
/**
|
|
116
|
+
* Send a keyboard event to the guest.
|
|
117
|
+
*
|
|
118
|
+
* # Arguments
|
|
119
|
+
* * `key_code` - JavaScript keyCode (e.g., 65 for 'A')
|
|
120
|
+
* * `pressed` - true for keydown, false for keyup
|
|
121
|
+
*
|
|
122
|
+
* Returns true if the event was sent successfully.
|
|
123
|
+
*/
|
|
124
|
+
send_key_event(key_code: number, pressed: boolean): boolean;
|
|
74
125
|
/**
|
|
75
126
|
* Get current memory usage (DRAM size) in bytes.
|
|
76
127
|
*/
|
|
77
128
|
get_memory_usage(): bigint;
|
|
129
|
+
/**
|
|
130
|
+
* Send a mouse event to the guest.
|
|
131
|
+
*
|
|
132
|
+
* # Arguments
|
|
133
|
+
* * `x` - X position (0-799)
|
|
134
|
+
* * `y` - Y position (0-599)
|
|
135
|
+
* * `buttons` - Button state bitmask (bit 0 = left, bit 1 = right, bit 2 = middle)
|
|
136
|
+
* * `prev_buttons` - Previous button state to detect changes
|
|
137
|
+
*
|
|
138
|
+
* Returns true if the event was sent successfully.
|
|
139
|
+
*/
|
|
140
|
+
send_mouse_event(x: number, y: number, buttons: number): boolean;
|
|
78
141
|
/**
|
|
79
142
|
* Get the total disk capacity from attached VirtIO block devices.
|
|
80
143
|
* Returns total bytes across all block devices.
|
|
@@ -85,6 +148,14 @@ declare class WasmVm {
|
|
|
85
148
|
* Returns None if not in SMP mode.
|
|
86
149
|
*/
|
|
87
150
|
get_shared_buffer(): SharedArrayBuffer | undefined;
|
|
151
|
+
/**
|
|
152
|
+
* Send a mouse button event to the guest.
|
|
153
|
+
*
|
|
154
|
+
* # Arguments
|
|
155
|
+
* * `button` - Button number (0 = left, 1 = right, 2 = middle)
|
|
156
|
+
* * `pressed` - true for press, false for release
|
|
157
|
+
*/
|
|
158
|
+
send_mouse_button(button: number, pressed: boolean): boolean;
|
|
88
159
|
/**
|
|
89
160
|
* Terminate all workers.
|
|
90
161
|
*/
|
|
@@ -289,6 +360,8 @@ interface InitOutput {
|
|
|
289
360
|
readonly wasmvm_allow_workers_to_start: (a: number) => void;
|
|
290
361
|
readonly wasmvm_connect_webtransport: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
291
362
|
readonly wasmvm_disconnect_network: (a: number) => void;
|
|
363
|
+
readonly wasmvm_enable_gpu: (a: number, b: number, c: number) => void;
|
|
364
|
+
readonly wasmvm_enable_input: (a: number) => void;
|
|
292
365
|
readonly wasmvm_entry_pc: (a: number) => bigint;
|
|
293
366
|
readonly wasmvm_external_network_rx_pending: (a: number) => number;
|
|
294
367
|
readonly wasmvm_external_network_tx_pending: (a: number) => number;
|
|
@@ -297,12 +370,15 @@ interface InitOutput {
|
|
|
297
370
|
readonly wasmvm_get_cpu_count: (a: number) => number;
|
|
298
371
|
readonly wasmvm_get_disk_capacity: (a: number) => bigint;
|
|
299
372
|
readonly wasmvm_get_disk_usage: (a: number) => any;
|
|
373
|
+
readonly wasmvm_get_gpu_frame: (a: number) => any;
|
|
374
|
+
readonly wasmvm_get_gpu_size: (a: number) => any;
|
|
300
375
|
readonly wasmvm_get_heap_usage: (a: number) => any;
|
|
301
376
|
readonly wasmvm_get_memory_usage: (a: number) => bigint;
|
|
302
377
|
readonly wasmvm_get_output: (a: number) => number;
|
|
303
378
|
readonly wasmvm_get_shared_buffer: (a: number) => any;
|
|
304
379
|
readonly wasmvm_get_uptime_ms: (a: number) => bigint;
|
|
305
380
|
readonly wasmvm_halt_code: (a: number) => bigint;
|
|
381
|
+
readonly wasmvm_has_gpu_frame: (a: number) => number;
|
|
306
382
|
readonly wasmvm_inject_network_packet: (a: number, b: any) => number;
|
|
307
383
|
readonly wasmvm_input: (a: number, b: number) => void;
|
|
308
384
|
readonly wasmvm_is_external_network_connected: (a: number) => number;
|
|
@@ -315,6 +391,9 @@ interface InitOutput {
|
|
|
315
391
|
readonly wasmvm_num_harts: (a: number) => number;
|
|
316
392
|
readonly wasmvm_print_banner: (a: number) => void;
|
|
317
393
|
readonly wasmvm_print_status: (a: number, b: number, c: number) => void;
|
|
394
|
+
readonly wasmvm_send_key_event: (a: number, b: number, c: number) => number;
|
|
395
|
+
readonly wasmvm_send_mouse_button: (a: number, b: number, c: number) => number;
|
|
396
|
+
readonly wasmvm_send_mouse_event: (a: number, b: number, c: number, d: number) => number;
|
|
318
397
|
readonly wasmvm_set_external_network_ip: (a: number, b: any) => number;
|
|
319
398
|
readonly wasmvm_setup_external_network: (a: number, b: any) => [number, number];
|
|
320
399
|
readonly wasmvm_start_workers: (a: number, b: number, c: number) => [number, number];
|
|
@@ -328,12 +407,12 @@ interface InitOutput {
|
|
|
328
407
|
readonly workerstate_new: (a: number, b: any, c: bigint) => number;
|
|
329
408
|
readonly workerstate_step_batch: (a: number, b: number) => number;
|
|
330
409
|
readonly workerstate_step_count: (a: number) => bigint;
|
|
331
|
-
readonly
|
|
332
|
-
readonly
|
|
333
|
-
readonly
|
|
334
|
-
readonly
|
|
335
|
-
readonly
|
|
336
|
-
readonly
|
|
410
|
+
readonly wasm_bindgen__convert__closures_____invoke__he00a4f55faf9050f: (a: number, b: number) => void;
|
|
411
|
+
readonly wasm_bindgen__closure__destroy__h2f2b52f94c430d4b: (a: number, b: number) => void;
|
|
412
|
+
readonly wasm_bindgen__convert__closures_____invoke__h260170fb96639bcf: (a: number, b: number, c: any) => void;
|
|
413
|
+
readonly wasm_bindgen__closure__destroy__h612f8e24953b61d5: (a: number, b: number) => void;
|
|
414
|
+
readonly wasm_bindgen__convert__closures_____invoke__hd159192dfee36a06: (a: number, b: number) => void;
|
|
415
|
+
readonly wasm_bindgen__convert__closures_____invoke__hedae94b906f728f2: (a: number, b: number, c: any) => void;
|
|
337
416
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
|
338
417
|
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
339
418
|
readonly __wbindgen_exn_store: (a: number) => void;
|