@bytecodealliance/jco 1.33.0 → 1.35.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 +4 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -1
- package/dist/cmd/componentize.d.ts +12 -2
- package/dist/cmd/componentize.d.ts.map +1 -1
- package/dist/cmd/componentize.js +16 -5
- package/dist/cmd/componentize.js.map +1 -1
- package/dist/cmd/new.js +2 -1
- package/dist/cmd/new.js.map +1 -1
- package/dist/cmd/transpile.d.ts.map +1 -1
- package/dist/cmd/transpile.js +28 -1
- package/dist/cmd/transpile.js.map +1 -1
- package/dist/engine-compat.d.ts +11 -0
- package/dist/engine-compat.d.ts.map +1 -0
- package/dist/engine-compat.js +56 -0
- package/dist/engine-compat.js.map +1 -0
- package/dist/jco.js +7 -2
- package/dist/jco.js.map +1 -1
- package/dist/node-builtins/assert.d.ts +3 -0
- package/dist/node-builtins/assert.d.ts.map +1 -0
- package/dist/node-builtins/assert.js +65 -0
- package/dist/node-builtins/assert.js.map +1 -0
- package/dist/node-builtins/async-hooks.d.ts +3 -0
- package/dist/node-builtins/async-hooks.d.ts.map +1 -0
- package/dist/node-builtins/async-hooks.js +27 -0
- package/dist/node-builtins/async-hooks.js.map +1 -0
- package/dist/node-builtins/buffer.d.ts +4 -0
- package/dist/node-builtins/buffer.d.ts.map +1 -0
- package/dist/node-builtins/buffer.js +87 -0
- package/dist/node-builtins/buffer.js.map +1 -0
- package/dist/node-builtins/child-process.d.ts +3 -0
- package/dist/node-builtins/child-process.d.ts.map +1 -0
- package/dist/node-builtins/child-process.js +23 -0
- package/dist/node-builtins/child-process.js.map +1 -0
- package/dist/node-builtins/cluster.d.ts +3 -0
- package/dist/node-builtins/cluster.d.ts.map +1 -0
- package/dist/node-builtins/cluster.js +28 -0
- package/dist/node-builtins/cluster.js.map +1 -0
- package/dist/node-builtins/console.d.ts +3 -0
- package/dist/node-builtins/console.d.ts.map +1 -0
- package/dist/node-builtins/console.js +39 -0
- package/dist/node-builtins/console.js.map +1 -0
- package/dist/node-builtins/crypto.d.ts +3 -0
- package/dist/node-builtins/crypto.d.ts.map +1 -0
- package/dist/node-builtins/crypto.js +5 -0
- package/dist/node-builtins/crypto.js.map +1 -0
- package/dist/node-builtins/dgram.d.ts +4 -0
- package/dist/node-builtins/dgram.d.ts.map +1 -0
- package/dist/node-builtins/dgram.js +13 -0
- package/dist/node-builtins/dgram.js.map +1 -0
- package/dist/node-builtins/diagnostics-channel.d.ts +3 -0
- package/dist/node-builtins/diagnostics-channel.d.ts.map +1 -0
- package/dist/node-builtins/diagnostics-channel.js +26 -0
- package/dist/node-builtins/diagnostics-channel.js.map +1 -0
- package/dist/node-builtins/dns.d.ts +3 -0
- package/dist/node-builtins/dns.d.ts.map +1 -0
- package/dist/node-builtins/dns.js +12 -0
- package/dist/node-builtins/dns.js.map +1 -0
- package/dist/node-builtins/domain.d.ts +3 -0
- package/dist/node-builtins/domain.d.ts.map +1 -0
- package/dist/node-builtins/domain.js +19 -0
- package/dist/node-builtins/domain.js.map +1 -0
- package/dist/node-builtins/events.d.ts +3 -0
- package/dist/node-builtins/events.d.ts.map +1 -0
- package/dist/node-builtins/events.js +39 -0
- package/dist/node-builtins/events.js.map +1 -0
- package/dist/node-builtins/ffi.d.ts +3 -0
- package/dist/node-builtins/ffi.d.ts.map +1 -0
- package/dist/node-builtins/ffi.js +59 -0
- package/dist/node-builtins/ffi.js.map +1 -0
- package/dist/node-builtins/fs.d.ts +3 -0
- package/dist/node-builtins/fs.d.ts.map +1 -0
- package/dist/node-builtins/fs.js +16 -0
- package/dist/node-builtins/fs.js.map +1 -0
- package/dist/node-builtins/globals.d.ts +19 -0
- package/dist/node-builtins/globals.d.ts.map +1 -0
- package/dist/node-builtins/globals.js +56 -0
- package/dist/node-builtins/globals.js.map +1 -0
- package/dist/node-builtins/http-common.d.ts +6 -0
- package/dist/node-builtins/http-common.d.ts.map +1 -0
- package/dist/node-builtins/http-common.js +111 -0
- package/dist/node-builtins/http-common.js.map +1 -0
- package/dist/node-builtins/http.d.ts +4 -0
- package/dist/node-builtins/http.d.ts.map +1 -0
- package/dist/node-builtins/http.js +15 -0
- package/dist/node-builtins/http.js.map +1 -0
- package/dist/node-builtins/http2.d.ts +4 -0
- package/dist/node-builtins/http2.d.ts.map +1 -0
- package/dist/node-builtins/http2.js +79 -0
- package/dist/node-builtins/http2.js.map +1 -0
- package/dist/node-builtins/https.d.ts +3 -0
- package/dist/node-builtins/https.d.ts.map +1 -0
- package/dist/node-builtins/https.js +5 -0
- package/dist/node-builtins/https.js.map +1 -0
- package/dist/node-builtins/index.d.ts +10 -0
- package/dist/node-builtins/index.d.ts.map +1 -0
- package/dist/node-builtins/index.js +164 -0
- package/dist/node-builtins/index.js.map +1 -0
- package/dist/node-builtins/inspector.d.ts +12 -0
- package/dist/node-builtins/inspector.d.ts.map +1 -0
- package/dist/node-builtins/inspector.js +70 -0
- package/dist/node-builtins/inspector.js.map +1 -0
- package/dist/node-builtins/module.d.ts +3 -0
- package/dist/node-builtins/module.d.ts.map +1 -0
- package/dist/node-builtins/module.js +55 -0
- package/dist/node-builtins/module.js.map +1 -0
- package/dist/node-builtins/net.d.ts +3 -0
- package/dist/node-builtins/net.d.ts.map +1 -0
- package/dist/node-builtins/net.js +46 -0
- package/dist/node-builtins/net.js.map +1 -0
- package/dist/node-builtins/os.d.ts +3 -0
- package/dist/node-builtins/os.d.ts.map +1 -0
- package/dist/node-builtins/os.js +39 -0
- package/dist/node-builtins/os.js.map +1 -0
- package/dist/node-builtins/path.d.ts +3 -0
- package/dist/node-builtins/path.d.ts.map +1 -0
- package/dist/node-builtins/path.js +91 -0
- package/dist/node-builtins/path.js.map +1 -0
- package/dist/node-builtins/perf-hooks.d.ts +3 -0
- package/dist/node-builtins/perf-hooks.d.ts.map +1 -0
- package/dist/node-builtins/perf-hooks.js +12 -0
- package/dist/node-builtins/perf-hooks.js.map +1 -0
- package/dist/node-builtins/process.d.ts +3 -0
- package/dist/node-builtins/process.d.ts.map +1 -0
- package/dist/node-builtins/process.js +9 -0
- package/dist/node-builtins/process.js.map +1 -0
- package/dist/node-builtins/querystring.d.ts +3 -0
- package/dist/node-builtins/querystring.d.ts.map +1 -0
- package/dist/node-builtins/querystring.js +18 -0
- package/dist/node-builtins/querystring.js.map +1 -0
- package/dist/node-builtins/readline.d.ts +3 -0
- package/dist/node-builtins/readline.d.ts.map +1 -0
- package/dist/node-builtins/readline.js +11 -0
- package/dist/node-builtins/readline.js.map +1 -0
- package/dist/node-builtins/repl.d.ts +9 -0
- package/dist/node-builtins/repl.d.ts.map +1 -0
- package/dist/node-builtins/repl.js +12 -0
- package/dist/node-builtins/repl.js.map +1 -0
- package/dist/node-builtins/shared.d.ts +24 -0
- package/dist/node-builtins/shared.d.ts.map +1 -0
- package/dist/node-builtins/shared.js +68 -0
- package/dist/node-builtins/shared.js.map +1 -0
- package/dist/node-builtins/sqlite.d.ts +3 -0
- package/dist/node-builtins/sqlite.d.ts.map +1 -0
- package/dist/node-builtins/sqlite.js +9 -0
- package/dist/node-builtins/sqlite.js.map +1 -0
- package/dist/node-builtins/stream.d.ts +3 -0
- package/dist/node-builtins/stream.d.ts.map +1 -0
- package/dist/node-builtins/stream.js +64 -0
- package/dist/node-builtins/stream.js.map +1 -0
- package/dist/node-builtins/string-decoder.d.ts +3 -0
- package/dist/node-builtins/string-decoder.d.ts.map +1 -0
- package/dist/node-builtins/string-decoder.js +14 -0
- package/dist/node-builtins/string-decoder.js.map +1 -0
- package/dist/node-builtins/test.d.ts +4 -0
- package/dist/node-builtins/test.d.ts.map +1 -0
- package/dist/node-builtins/test.js +8 -0
- package/dist/node-builtins/test.js.map +1 -0
- package/dist/node-builtins/timers.d.ts +4 -0
- package/dist/node-builtins/timers.d.ts.map +1 -0
- package/dist/node-builtins/timers.js +9 -0
- package/dist/node-builtins/timers.js.map +1 -0
- package/dist/node-builtins/tls.d.ts +3 -0
- package/dist/node-builtins/tls.d.ts.map +1 -0
- package/dist/node-builtins/tls.js +10 -0
- package/dist/node-builtins/tls.js.map +1 -0
- package/dist/node-builtins/trace-events.d.ts +3 -0
- package/dist/node-builtins/trace-events.d.ts.map +1 -0
- package/dist/node-builtins/trace-events.js +9 -0
- package/dist/node-builtins/trace-events.js.map +1 -0
- package/dist/node-builtins/tty.d.ts +8 -0
- package/dist/node-builtins/tty.d.ts.map +1 -0
- package/dist/node-builtins/tty.js +12 -0
- package/dist/node-builtins/tty.js.map +1 -0
- package/dist/{node-builtins.d.ts → node-builtins/types.d.ts} +73 -41
- package/dist/node-builtins/types.d.ts.map +1 -0
- package/dist/node-builtins/types.js +2 -0
- package/dist/node-builtins/types.js.map +1 -0
- package/dist/node-builtins/unenv.d.ts +6 -0
- package/dist/node-builtins/unenv.d.ts.map +1 -0
- package/dist/node-builtins/unenv.js +27 -0
- package/dist/node-builtins/unenv.js.map +1 -0
- package/dist/node-builtins/url-pattern.d.ts +8 -0
- package/dist/node-builtins/url-pattern.d.ts.map +1 -0
- package/dist/node-builtins/url-pattern.js +19 -0
- package/dist/node-builtins/url-pattern.js.map +1 -0
- package/dist/node-builtins/url.d.ts +4 -0
- package/dist/node-builtins/url.d.ts.map +1 -0
- package/dist/node-builtins/url.js +100 -0
- package/dist/node-builtins/url.js.map +1 -0
- package/dist/node-builtins/util.d.ts +3 -0
- package/dist/node-builtins/util.d.ts.map +1 -0
- package/dist/node-builtins/util.js +7 -0
- package/dist/node-builtins/util.js.map +1 -0
- package/dist/node-builtins/v8.d.ts +3 -0
- package/dist/node-builtins/v8.d.ts.map +1 -0
- package/dist/node-builtins/v8.js +6 -0
- package/dist/node-builtins/v8.js.map +1 -0
- package/dist/node-builtins/vfs.d.ts +3 -0
- package/dist/node-builtins/vfs.d.ts.map +1 -0
- package/dist/node-builtins/vfs.js +42 -0
- package/dist/node-builtins/vfs.js.map +1 -0
- package/dist/node-builtins/vm.d.ts +4 -0
- package/dist/node-builtins/vm.d.ts.map +1 -0
- package/dist/node-builtins/vm.js +6 -0
- package/dist/node-builtins/vm.js.map +1 -0
- package/dist/node-builtins/wasi-sockets.d.ts +10 -0
- package/dist/node-builtins/wasi-sockets.d.ts.map +1 -0
- package/dist/node-builtins/wasi-sockets.js +25 -0
- package/dist/node-builtins/wasi-sockets.js.map +1 -0
- package/dist/node-builtins/wasi.d.ts +10 -0
- package/dist/node-builtins/wasi.d.ts.map +1 -0
- package/dist/node-builtins/wasi.js +14 -0
- package/dist/node-builtins/wasi.js.map +1 -0
- package/dist/node-builtins/worker-threads.d.ts +3 -0
- package/dist/node-builtins/worker-threads.d.ts.map +1 -0
- package/dist/node-builtins/worker-threads.js +16 -0
- package/dist/node-builtins/worker-threads.js.map +1 -0
- package/dist/node-builtins/zlib.d.ts +3 -0
- package/dist/node-builtins/zlib.d.ts.map +1 -0
- package/dist/node-builtins/zlib.js +6 -0
- package/dist/node-builtins/zlib.js.map +1 -0
- package/dist/node-wit.d.ts +35 -0
- package/dist/node-wit.d.ts.map +1 -1
- package/dist/node-wit.js +135 -4
- package/dist/node-wit.js.map +1 -1
- package/lib/wit/builtin/jco-node-0.1.0/cluster.wit +3 -2
- package/lib/wit/builtin/jco-node-0.1.0/dgram.wit +142 -0
- package/lib/wit/builtin/jco-node-0.1.0/http.wit +7 -0
- package/lib/wit/builtin/jco-node-0.1.0/http2.wit +4 -5
- package/lib/wit/builtin/jco-node-0.1.0/process.wit +245 -0
- package/lib/wit/builtin/jco-node-0.1.0/sqlite.wit +154 -0
- package/lib/wit/builtin/jco-node-0.1.0/tls.wit +108 -0
- package/lib/wit/builtin/jco-node-0.1.0/trace-events.wit +27 -0
- package/lib/wit/builtin/jco-node-0.1.0/tty.wit +59 -0
- package/lib/wit/builtin/jco-node-0.1.0/v8.wit +102 -0
- package/lib/wit/builtin/jco-node-0.1.0/wasi.wit +57 -0
- package/lib/wit/builtin/jco-node-0.1.0/worker-threads.wit +67 -0
- package/lib/wit/builtin/jco-node-0.1.0/zlib.wit +77 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/LICENSE.md +8 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/README.md +25 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/deps/io/package.wit +66 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/types.wit +27 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/world.wit +8 -0
- package/package.json +8 -6
- package/dist/node-builtins.d.ts.map +0 -1
- package/dist/node-builtins.js +0 -1085
- package/dist/node-builtins.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Events are delivered after the initiating import returns, avoiding component reentrance.
|
|
4
|
+
interface tls-callbacks {
|
|
5
|
+
record event {
|
|
6
|
+
target: u32,
|
|
7
|
+
name: string,
|
|
8
|
+
value: string,
|
|
9
|
+
data: list<u8>,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
dispatch: func(event: event);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/// Primary TLS capability for Node APIs. Providers may delegate to wasi:tls.
|
|
16
|
+
interface tls {
|
|
17
|
+
use wasi:io/streams@0.2.12.{input-stream, output-stream};
|
|
18
|
+
use wasi:tls/types@0.2.0-draft.{future-client-streams};
|
|
19
|
+
|
|
20
|
+
/// Optional TLS upgrade over existing WASI streams. Ownership passes to the provider.
|
|
21
|
+
is-available: func() -> bool;
|
|
22
|
+
|
|
23
|
+
start-tls: func(server-name: string, input: input-stream, output: output-stream) -> future-client-streams;
|
|
24
|
+
|
|
25
|
+
record error {
|
|
26
|
+
name: string,
|
|
27
|
+
message: string,
|
|
28
|
+
code: option<string>,
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
enum query-operation {
|
|
32
|
+
ciphers,
|
|
33
|
+
compression-algorithms,
|
|
34
|
+
ca-certificates,
|
|
35
|
+
check-identity,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
enum socket-operation-kind {
|
|
39
|
+
state,
|
|
40
|
+
address,
|
|
41
|
+
certificate,
|
|
42
|
+
peer-certificate,
|
|
43
|
+
cipher,
|
|
44
|
+
ephemeral-key-info,
|
|
45
|
+
finished,
|
|
46
|
+
peer-finished,
|
|
47
|
+
protocol,
|
|
48
|
+
session,
|
|
49
|
+
shared-sigalgs,
|
|
50
|
+
tls-ticket,
|
|
51
|
+
session-reused,
|
|
52
|
+
export-keying-material,
|
|
53
|
+
disable-renegotiation,
|
|
54
|
+
enable-trace,
|
|
55
|
+
max-send-fragment,
|
|
56
|
+
key-cert,
|
|
57
|
+
timeout,
|
|
58
|
+
no-delay,
|
|
59
|
+
keep-alive,
|
|
60
|
+
ref,
|
|
61
|
+
unref,
|
|
62
|
+
resume,
|
|
63
|
+
pause,
|
|
64
|
+
destroy,
|
|
65
|
+
renegotiate,
|
|
66
|
+
set-session,
|
|
67
|
+
set-servername,
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
enum server-operation-kind {
|
|
71
|
+
state,
|
|
72
|
+
address,
|
|
73
|
+
listen,
|
|
74
|
+
close,
|
|
75
|
+
connections,
|
|
76
|
+
ref,
|
|
77
|
+
unref,
|
|
78
|
+
ticket-keys,
|
|
79
|
+
set-ticket-keys,
|
|
80
|
+
secure-context,
|
|
81
|
+
add-context,
|
|
82
|
+
max-connections,
|
|
83
|
+
drop-max-connection,
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Options and inspection values use the documented TLS graph-data encoding.
|
|
87
|
+
query: func(operation: query-operation, args: string) -> result<string, error>;
|
|
88
|
+
|
|
89
|
+
set-default-ca: func(certs: string) -> result<_, error>;
|
|
90
|
+
|
|
91
|
+
create-context: func(options: string) -> result<u32, error>;
|
|
92
|
+
|
|
93
|
+
release-context: func(id: u32);
|
|
94
|
+
|
|
95
|
+
connect: func(id: u32, options: string) -> result<_, error>;
|
|
96
|
+
|
|
97
|
+
create-server: func(id: u32, options: string) -> result<_, error>;
|
|
98
|
+
|
|
99
|
+
socket-operation: func(id: u32, operation: socket-operation-kind, args: string) -> result<string, error>;
|
|
100
|
+
|
|
101
|
+
server-operation: func(id: u32, operation: server-operation-kind, args: string) -> result<string, error>;
|
|
102
|
+
|
|
103
|
+
write: func(id: u32, token: u32, data: list<u8>) -> result<_, error>;
|
|
104
|
+
|
|
105
|
+
end: func(id: u32, token: u32) -> result<_, error>;
|
|
106
|
+
|
|
107
|
+
release: func(id: u32);
|
|
108
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Host trace capture. Importing this interface does not grant the capability;
|
|
4
|
+
/// applications must map it to a provider. The Node provider traces its host
|
|
5
|
+
/// runtime and uses that process's trace categories, flags, and output files.
|
|
6
|
+
interface trace-events {
|
|
7
|
+
record error {
|
|
8
|
+
name: string,
|
|
9
|
+
code: option<string>,
|
|
10
|
+
message: string,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/// Owns one enabled category set. Stop or drop releases only this owner's
|
|
14
|
+
/// categories; other sessions and host CLI categories remain enabled.
|
|
15
|
+
resource trace-session {
|
|
16
|
+
start: static func(categories: list<string>) -> result<trace-session, error>;
|
|
17
|
+
|
|
18
|
+
stop: func() -> result<_, error>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/// Consume a stopped session. Explicit ownership transfer releases the guest
|
|
22
|
+
/// handle even on engines without a JavaScript resource disposal hook.
|
|
23
|
+
release: func(session: trace-session);
|
|
24
|
+
|
|
25
|
+
/// Sorted union of all enabled host categories, or none when empty.
|
|
26
|
+
get-enabled-categories: func() -> result<option<string>, error>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Terminal access for `node:tty`. No capability is granted by default; the Node provider exposes
|
|
4
|
+
/// the terminals of the embedding process, addressed by file descriptor as Node does.
|
|
5
|
+
interface tty {
|
|
6
|
+
use types.{env-vars};
|
|
7
|
+
|
|
8
|
+
variant errno {
|
|
9
|
+
number(s64),
|
|
10
|
+
symbolic(string),
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/// The libuv failure Node attaches to `ERR_TTY_INIT_FAILED` as `info`.
|
|
14
|
+
record error-info {
|
|
15
|
+
errno: option<errno>,
|
|
16
|
+
code: option<string>,
|
|
17
|
+
message: option<string>,
|
|
18
|
+
syscall: option<string>,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
record error {
|
|
22
|
+
name: string,
|
|
23
|
+
message: string,
|
|
24
|
+
code: option<string>,
|
|
25
|
+
errno: option<errno>,
|
|
26
|
+
syscall: option<string>,
|
|
27
|
+
info: option<error-info>,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/// Which side of a terminal a stream uses.
|
|
31
|
+
enum direction {
|
|
32
|
+
read,
|
|
33
|
+
write,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
record terminal-size {
|
|
37
|
+
columns: u32,
|
|
38
|
+
rows: u32,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/// Whether `fd` refers to a terminal. The guest range-checks the descriptor first.
|
|
42
|
+
is-tty: func(fd: u32) -> result<bool, error>;
|
|
43
|
+
/// Acquire a terminal handle on `fd` for one direction. Fails the way Node's `uv_tty_init`
|
|
44
|
+
/// does when `fd` is not a terminal; a handle may be acquired more than once.
|
|
45
|
+
open: func(fd: u32, direction: direction) -> result<_, error>;
|
|
46
|
+
/// Release one acquisition of a handle. Raw mode is restored when the last read handle goes.
|
|
47
|
+
close: func(fd: u32, direction: direction) -> result<_, error>;
|
|
48
|
+
/// The terminal's current size; fails when the terminal does not report one.
|
|
49
|
+
window-size: func(fd: u32) -> result<terminal-size, error>;
|
|
50
|
+
/// Switch the terminal's input between cooked and raw mode.
|
|
51
|
+
set-raw-mode: func(fd: u32, enabled: bool) -> result<_, error>;
|
|
52
|
+
/// Block until input is available and return up to `max-bytes` of it; an empty list is the
|
|
53
|
+
/// end of input.
|
|
54
|
+
read: func(fd: u32, max-bytes: u32) -> result<list<u8>, error>;
|
|
55
|
+
/// Write all of `data` before returning.
|
|
56
|
+
write: func(fd: u32, data: list<u8>) -> result<_, error>;
|
|
57
|
+
/// The environment `getColorDepth()` and `hasColors()` consult when none is passed.
|
|
58
|
+
environment: func() -> result<env-vars, error>;
|
|
59
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Explicit access to a host V8 isolate. Diagnostics describe the host engine.
|
|
4
|
+
/// Structured graphs are private transport; returned serialization bytes use native V8 format.
|
|
5
|
+
interface v8 {
|
|
6
|
+
variant errno {
|
|
7
|
+
number(s64),
|
|
8
|
+
symbolic(string),
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
record error {
|
|
12
|
+
name: string,
|
|
13
|
+
message: string,
|
|
14
|
+
code: option<string>,
|
|
15
|
+
errno: option<errno>,
|
|
16
|
+
syscall: option<string>,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
enum statistics-kind {
|
|
20
|
+
heap,
|
|
21
|
+
spaces,
|
|
22
|
+
code,
|
|
23
|
+
cpp-brief,
|
|
24
|
+
cpp-detailed,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
record snapshot-options {
|
|
28
|
+
expose-internals: option<bool>,
|
|
29
|
+
expose-numeric-values: option<bool>,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
cached-data-version-tag: func() -> result<u32, error>;
|
|
33
|
+
|
|
34
|
+
/// JSON retains the version-specific native diagnostic schema.
|
|
35
|
+
statistics: func(kind: statistics-kind) -> result<string, error>;
|
|
36
|
+
|
|
37
|
+
get-heap-snapshot: func(options: snapshot-options) -> result<list<u8>, error>;
|
|
38
|
+
|
|
39
|
+
write-heap-snapshot: func(
|
|
40
|
+
filename: option<string>,
|
|
41
|
+
options: snapshot-options,
|
|
42
|
+
) -> result<string, error>;
|
|
43
|
+
|
|
44
|
+
set-flags-from-string: func(%flags: string) -> result<_, error>;
|
|
45
|
+
|
|
46
|
+
take-coverage: func() -> result<_, error>;
|
|
47
|
+
|
|
48
|
+
stop-coverage: func() -> result<_, error>;
|
|
49
|
+
|
|
50
|
+
set-heap-snapshot-near-heap-limit: func(limit: u32) -> result<_, error>;
|
|
51
|
+
|
|
52
|
+
open-writer: func(defaults: bool) -> result<writer, error>;
|
|
53
|
+
|
|
54
|
+
open-reader: func(data: list<u8>, defaults: bool) -> result<reader, error>;
|
|
55
|
+
|
|
56
|
+
start-profile: func(cpu: bool) -> result<profile, error>;
|
|
57
|
+
|
|
58
|
+
/// Consuming a handle releases the corresponding native state.
|
|
59
|
+
release-writer: func(handle: writer);
|
|
60
|
+
|
|
61
|
+
release-reader: func(handle: reader);
|
|
62
|
+
|
|
63
|
+
release-profile: func(handle: profile);
|
|
64
|
+
|
|
65
|
+
resource writer {
|
|
66
|
+
write-header: func() -> result<_, error>;
|
|
67
|
+
|
|
68
|
+
write-value: func(graph: string) -> result<bool, error>;
|
|
69
|
+
|
|
70
|
+
release-buffer: func() -> result<list<u8>, error>;
|
|
71
|
+
|
|
72
|
+
write-uint32: func(value: f64) -> result<_, error>;
|
|
73
|
+
|
|
74
|
+
write-uint64: func(hi: f64, lo: f64) -> result<_, error>;
|
|
75
|
+
|
|
76
|
+
write-double: func(value: f64) -> result<_, error>;
|
|
77
|
+
|
|
78
|
+
write-raw-bytes: func(data: list<u8>) -> result<_, error>;
|
|
79
|
+
|
|
80
|
+
set-treat-views-as-host-objects: func(flag: bool) -> result<_, error>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
resource reader {
|
|
84
|
+
read-header: func() -> result<bool, error>;
|
|
85
|
+
|
|
86
|
+
read-value: func() -> result<string, error>;
|
|
87
|
+
|
|
88
|
+
get-wire-format-version: func() -> result<u32, error>;
|
|
89
|
+
|
|
90
|
+
read-uint32: func() -> result<u32, error>;
|
|
91
|
+
|
|
92
|
+
read-uint64: func() -> result<tuple<u32, u32>, error>;
|
|
93
|
+
|
|
94
|
+
read-double: func() -> result<f64, error>;
|
|
95
|
+
|
|
96
|
+
read-raw-bytes: func(length: f64) -> result<list<u8>, error>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
resource profile {
|
|
100
|
+
stop: func() -> result<option<string>, error>;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Host initialisation for `node:wasi`.
|
|
4
|
+
///
|
|
5
|
+
/// Node's `new WASI(options)` validates its options in JavaScript and then initialises a uvwasi
|
|
6
|
+
/// context, which opens every preopen and checks the standard descriptors. That initialisation is
|
|
7
|
+
/// the only part of `node:wasi` a component can hand to a host: everything after it (`start`,
|
|
8
|
+
/// `initialize`, the `wasiImport` syscalls) reads and writes the linear memory of a core
|
|
9
|
+
/// WebAssembly instance the guest created itself, and a component can neither instantiate a
|
|
10
|
+
/// nested module nor share a memory across the component boundary. The interface therefore
|
|
11
|
+
/// exposes initialisation alone and returns no handle, since nothing could be done with one.
|
|
12
|
+
///
|
|
13
|
+
/// No capability is granted by default; the Node provider runs the real `node:wasi` constructor.
|
|
14
|
+
interface wasi {
|
|
15
|
+
use types.{env-vars};
|
|
16
|
+
|
|
17
|
+
variant errno {
|
|
18
|
+
number(s64),
|
|
19
|
+
symbolic(string),
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// The failure Node raises when `uvwasi_init` rejects the options: a plain `Error` whose
|
|
23
|
+
/// `code` is a `UVWASI_*` name (`UVWASI_ENOENT` for a missing preopen, `UVWASI_ENOTDIR` for
|
|
24
|
+
/// a preopen that is not a directory, `UVWASI_EBADF` for a closed descriptor), with the
|
|
25
|
+
/// numeric uvwasi `errno` and `syscall` set to `uvwasi_init`.
|
|
26
|
+
record error {
|
|
27
|
+
name: string,
|
|
28
|
+
message: string,
|
|
29
|
+
code: option<string>,
|
|
30
|
+
errno: option<errno>,
|
|
31
|
+
syscall: option<string>,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/// The WASI snapshot the module targets; selects the import namespace Node binds.
|
|
35
|
+
enum version {
|
|
36
|
+
unstable,
|
|
37
|
+
preview1,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// `new WASI(options)` after Node's validation and normalisation of every field.
|
|
41
|
+
record options {
|
|
42
|
+
version: version,
|
|
43
|
+
/// Command-line arguments, already coerced to strings.
|
|
44
|
+
args: list<string>,
|
|
45
|
+
/// Environment entries with `undefined` values already dropped and values coerced.
|
|
46
|
+
env: env-vars,
|
|
47
|
+
/// Guest path to host path, in the order `Object.entries` yields them.
|
|
48
|
+
preopens: list<tuple<string, string>>,
|
|
49
|
+
stdin: u32,
|
|
50
|
+
stdout: u32,
|
|
51
|
+
stderr: u32,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/// Initialise a WASI context for `options` exactly as Node's constructor does, failing the way
|
|
55
|
+
/// `uvwasi_init` fails. The context is discarded: it cannot be linked to a module from a guest.
|
|
56
|
+
init: func(options: options) -> result<_, error>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Explicit authority to execute worker scripts on the host. Data uses a private
|
|
4
|
+
/// structured-value graph encoding; native handles and shared memory are refused.
|
|
5
|
+
interface worker-threads {
|
|
6
|
+
variant errno {
|
|
7
|
+
number(s64),
|
|
8
|
+
symbolic(string),
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
record error {
|
|
12
|
+
name: string,
|
|
13
|
+
message: string,
|
|
14
|
+
code: option<string>,
|
|
15
|
+
errno: option<errno>,
|
|
16
|
+
syscall: option<string>,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
record resource-limits {
|
|
20
|
+
max-young-generation-size-mb: option<f64>,
|
|
21
|
+
max-old-generation-size-mb: option<f64>,
|
|
22
|
+
code-range-size-mb: option<f64>,
|
|
23
|
+
stack-size-mb: option<f64>,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
record worker-info {
|
|
27
|
+
thread-id: s32,
|
|
28
|
+
thread-name: string,
|
|
29
|
+
resource-limits: resource-limits,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
create-worker: func(
|
|
33
|
+
filename: string,
|
|
34
|
+
options: string,
|
|
35
|
+
environment: string,
|
|
36
|
+
listener: u32,
|
|
37
|
+
) -> result<worker, error>;
|
|
38
|
+
|
|
39
|
+
resource worker {
|
|
40
|
+
post-message: func(value: string) -> result<_, error>;
|
|
41
|
+
|
|
42
|
+
terminate: func();
|
|
43
|
+
|
|
44
|
+
set-ref: func(value: bool);
|
|
45
|
+
|
|
46
|
+
info: func() -> worker-info;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// A provider serializes callback entry and resource drops per component.
|
|
51
|
+
interface worker-threads-callbacks {
|
|
52
|
+
use worker-threads.{error};
|
|
53
|
+
|
|
54
|
+
variant worker-event {
|
|
55
|
+
online,
|
|
56
|
+
message(string),
|
|
57
|
+
messageerror(error),
|
|
58
|
+
error(error),
|
|
59
|
+
exit(s32),
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
resource worker-listener {
|
|
63
|
+
event: func(event: worker-event);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
take-worker-listener: func(id: u32) -> option<worker-listener>;
|
|
67
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
package jco:node@0.1.0;
|
|
2
|
+
|
|
3
|
+
/// Compression capability. Denied by default; explicitly map a host provider to enable it.
|
|
4
|
+
/// Byte arrays and native compression settings cross this boundary, never Node stream objects.
|
|
5
|
+
interface zlib {
|
|
6
|
+
variant errno {
|
|
7
|
+
number(s64),
|
|
8
|
+
symbolic(string),
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
record error {
|
|
12
|
+
name: string,
|
|
13
|
+
message: string,
|
|
14
|
+
code: option<string>,
|
|
15
|
+
errno: option<errno>,
|
|
16
|
+
syscall: option<string>,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
enum algorithm {
|
|
20
|
+
deflate,
|
|
21
|
+
inflate,
|
|
22
|
+
gzip,
|
|
23
|
+
gunzip,
|
|
24
|
+
deflateraw,
|
|
25
|
+
inflateraw,
|
|
26
|
+
unzip,
|
|
27
|
+
brotlicompress,
|
|
28
|
+
brotlidecompress,
|
|
29
|
+
zstdcompress,
|
|
30
|
+
zstddecompress,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
record options {
|
|
34
|
+
flush: option<f64>,
|
|
35
|
+
finish-flush: option<f64>,
|
|
36
|
+
chunk-size: option<f64>,
|
|
37
|
+
window-bits: option<f64>,
|
|
38
|
+
level: option<f64>,
|
|
39
|
+
mem-level: option<f64>,
|
|
40
|
+
strategy: option<f64>,
|
|
41
|
+
max-output-length: option<f64>,
|
|
42
|
+
pledged-src-size: option<f64>,
|
|
43
|
+
reject-garbage-after-end: option<bool>,
|
|
44
|
+
dictionary: option<list<u8>>,
|
|
45
|
+
params: option<list<tuple<string, f64>>>,
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
record output {
|
|
49
|
+
data: list<u8>,
|
|
50
|
+
bytes-written: f64,
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
compress: func(
|
|
54
|
+
algorithm: algorithm,
|
|
55
|
+
data: list<u8>,
|
|
56
|
+
options: options,
|
|
57
|
+
) -> result<output, error>;
|
|
58
|
+
|
|
59
|
+
crc32: func(data: list<u8>, value: u32) -> result<u32, error>;
|
|
60
|
+
|
|
61
|
+
open: func(algorithm: algorithm, options: options) -> result<engine, error>;
|
|
62
|
+
|
|
63
|
+
/// Owns native state. Explicit close or resource drop releases it.
|
|
64
|
+
resource engine {
|
|
65
|
+
write: func(data: list<u8>) -> result<output, error>;
|
|
66
|
+
|
|
67
|
+
finish: func() -> result<output, error>;
|
|
68
|
+
|
|
69
|
+
flush: func(kind: f64) -> result<output, error>;
|
|
70
|
+
|
|
71
|
+
params: func(level: f64, strategy: f64) -> result<output, error>;
|
|
72
|
+
|
|
73
|
+
reset: func() -> result<_, error>;
|
|
74
|
+
|
|
75
|
+
close: func() -> result<_, error>;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Copyright © 2019-2023 the Contributors to the WASI Specification, published
|
|
2
|
+
by the [WebAssembly Community Group][cg] under the
|
|
3
|
+
[W3C Community Contributor License Agreement (CLA)][cla]. A human-readable
|
|
4
|
+
[summary][summary] is available.
|
|
5
|
+
|
|
6
|
+
[cg]: https://www.w3.org/community/webassembly/
|
|
7
|
+
[cla]: https://www.w3.org/community/about/agreements/cla/
|
|
8
|
+
[summary]: https://www.w3.org/community/about/agreements/cla-deed/
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Local WASI TLS contract
|
|
2
|
+
|
|
3
|
+
This is a slightly modified copy of [WebAssembly/wasi-tls](https://github.com/WebAssembly/wasi-tls/tree/6781ae26084100c0628ef72cc44e4517c6c48ae5/wit)
|
|
4
|
+
at revision `6781ae26084100c0628ef72cc44e4517c6c48ae5`, under the W3C Community
|
|
5
|
+
Contributor License Agreement (see LICENSE.md).
|
|
6
|
+
|
|
7
|
+
It provides a provisional, shared interface for TLS implementations on Node.js,
|
|
8
|
+
the web, and other host platforms. It is not an unmodified upstream standard or
|
|
9
|
+
a claim that every host platform already has an implementation.
|
|
10
|
+
|
|
11
|
+
Local changes:
|
|
12
|
+
|
|
13
|
+
- Use `wasi:io@0.2.12` instead of `0.2.6`, sharing the sockets implementation's
|
|
14
|
+
stream resources directly without version bridging. IO WIT is copied from
|
|
15
|
+
Jco's existing `builtin/0.2.12/wasi-io/package.wit`.
|
|
16
|
+
- Add `is-available`, a side-effect-free capability query so denied TLS requests
|
|
17
|
+
fail before acquiring TCP resources.
|
|
18
|
+
- Omit upstream unstable-feature annotations so normal WIT tooling can consume
|
|
19
|
+
this explicitly imported local contract without TLS-specific feature handling.
|
|
20
|
+
|
|
21
|
+
The package retains `wasi:tls@0.2.0-draft`.
|
|
22
|
+
Hosts must implement this local contract. The upstream client handshake,
|
|
23
|
+
future polling, stream ownership, and output shutdown operations are retained.
|
|
24
|
+
Server TLS and guest trust/ALPN configuration remain outside the contract;
|
|
25
|
+
certificate verification and trust are host policy. No wit-deps tooling is used.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
package wasi:io@0.2.12;
|
|
2
|
+
interface error {
|
|
3
|
+
resource error {
|
|
4
|
+
to-debug-string: func() -> string;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
interface poll {
|
|
8
|
+
resource pollable {
|
|
9
|
+
ready: func() -> bool;
|
|
10
|
+
block: func();
|
|
11
|
+
}
|
|
12
|
+
poll: func(in: list<borrow<pollable>>) -> list<u32>;
|
|
13
|
+
}
|
|
14
|
+
interface streams {
|
|
15
|
+
use error.{error};
|
|
16
|
+
use poll.{pollable};
|
|
17
|
+
variant stream-error {
|
|
18
|
+
last-operation-failed(error),
|
|
19
|
+
closed
|
|
20
|
+
}
|
|
21
|
+
resource input-stream {
|
|
22
|
+
read: func(
|
|
23
|
+
len: u64
|
|
24
|
+
) -> result<list<u8>, stream-error>;
|
|
25
|
+
blocking-read: func(
|
|
26
|
+
len: u64
|
|
27
|
+
) -> result<list<u8>, stream-error>;
|
|
28
|
+
skip: func(
|
|
29
|
+
len: u64,
|
|
30
|
+
) -> result<u64, stream-error>;
|
|
31
|
+
blocking-skip: func(
|
|
32
|
+
len: u64,
|
|
33
|
+
) -> result<u64, stream-error>;
|
|
34
|
+
subscribe: func() -> pollable;
|
|
35
|
+
}
|
|
36
|
+
resource output-stream {
|
|
37
|
+
check-write: func() -> result<u64, stream-error>;
|
|
38
|
+
write: func(
|
|
39
|
+
contents: list<u8>
|
|
40
|
+
) -> result<_, stream-error>;
|
|
41
|
+
blocking-write-and-flush: func(
|
|
42
|
+
contents: list<u8>
|
|
43
|
+
) -> result<_, stream-error>;
|
|
44
|
+
flush: func() -> result<_, stream-error>;
|
|
45
|
+
blocking-flush: func() -> result<_, stream-error>;
|
|
46
|
+
subscribe: func() -> pollable;
|
|
47
|
+
write-zeroes: func(
|
|
48
|
+
len: u64
|
|
49
|
+
) -> result<_, stream-error>;
|
|
50
|
+
blocking-write-zeroes-and-flush: func(
|
|
51
|
+
len: u64
|
|
52
|
+
) -> result<_, stream-error>;
|
|
53
|
+
splice: func(
|
|
54
|
+
src: borrow<input-stream>,
|
|
55
|
+
len: u64,
|
|
56
|
+
) -> result<u64, stream-error>;
|
|
57
|
+
blocking-splice: func(
|
|
58
|
+
src: borrow<input-stream>,
|
|
59
|
+
len: u64,
|
|
60
|
+
) -> result<u64, stream-error>;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
world imports {
|
|
64
|
+
import streams;
|
|
65
|
+
import poll;
|
|
66
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Adapted from WebAssembly/wasi-tls wit/types.wit,
|
|
2
|
+
// 6781ae26084100c0628ef72cc44e4517c6c48ae5 (W3C Community CLA).
|
|
3
|
+
// Local changes: wasi:io@0.2.12 and an availability query. See README.md.
|
|
4
|
+
interface types {
|
|
5
|
+
/// Whether the host grants TLS connections. This query performs no IO.
|
|
6
|
+
is-available: func() -> bool;
|
|
7
|
+
|
|
8
|
+
use wasi:io/streams@0.2.12.{input-stream, output-stream};
|
|
9
|
+
use wasi:io/poll@0.2.12.{pollable};
|
|
10
|
+
use wasi:io/error@0.2.12.{error as io-error};
|
|
11
|
+
|
|
12
|
+
resource client-handshake {
|
|
13
|
+
constructor(server-name: string, input: input-stream, output: output-stream);
|
|
14
|
+
|
|
15
|
+
finish: static func(this: client-handshake) -> future-client-streams;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
resource client-connection {
|
|
19
|
+
close-output: func();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
resource future-client-streams {
|
|
23
|
+
subscribe: func() -> pollable;
|
|
24
|
+
|
|
25
|
+
get: func() -> option<result<result<tuple<client-connection, input-stream, output-stream>, io-error>>>;
|
|
26
|
+
}
|
|
27
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytecodealliance/jco",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.35.0",
|
|
4
4
|
"description": "JavaScript tooling for working with WebAssembly Components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Component",
|
|
@@ -50,13 +50,14 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@bytecodealliance/componentize-js": "^0.22.0",
|
|
52
52
|
"@bytecodealliance/componentize-js-0-19-3": "npm:@bytecodealliance/componentize-js@^0.19.3",
|
|
53
|
-
"@bytecodealliance/jco-std": "^0.
|
|
54
|
-
"@bytecodealliance/jco-transpile": "^0.
|
|
55
|
-
"@bytecodealliance/preview2-shim": "^0.
|
|
53
|
+
"@bytecodealliance/jco-std": "^0.5.0",
|
|
54
|
+
"@bytecodealliance/jco-transpile": "^0.15.0",
|
|
55
|
+
"@bytecodealliance/preview2-shim": "^0.26.0",
|
|
56
56
|
"binaryen": "^130.0.0",
|
|
57
57
|
"commander": "^14",
|
|
58
|
-
"componentize-qjs": "^0.4.
|
|
58
|
+
"componentize-qjs": "^0.4.5",
|
|
59
59
|
"mkdirp": "^3",
|
|
60
|
+
"regexpu-core": "6.4.0",
|
|
60
61
|
"rolldown": "^1.2.4",
|
|
61
62
|
"typescript": "7.0.2",
|
|
62
63
|
"typescript-compiler-api": "npm:typescript@6.0.3",
|
|
@@ -67,12 +68,13 @@
|
|
|
67
68
|
"@types/node": "^24.3.0",
|
|
68
69
|
"commitlint": "^19.8.1",
|
|
69
70
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
71
|
+
"express": "^5.2.1",
|
|
70
72
|
"mime": "^4.0.7",
|
|
71
73
|
"oxfmt": "^0.28.0",
|
|
72
74
|
"puppeteer": "^25.1.0",
|
|
73
75
|
"semver": "^7.7.1",
|
|
74
76
|
"vite": "^7.1.5",
|
|
75
|
-
"vitest": "^4.1.
|
|
77
|
+
"vitest": "^4.1.11",
|
|
76
78
|
"which": "^2.0.2"
|
|
77
79
|
},
|
|
78
80
|
"scripts": {
|