@bytecodealliance/preview2-shim 0.0.21 → 0.14.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.
- package/README.md +4 -14
- package/lib/browser/cli.js +2 -4
- package/lib/browser/clocks.js +15 -27
- package/lib/browser/filesystem.js +2 -30
- package/lib/browser/http.js +1 -3
- package/lib/browser/io.js +4 -2
- package/lib/common/assert.js +7 -0
- package/lib/io/calls.js +64 -0
- package/lib/io/worker-http.js +95 -0
- package/lib/io/worker-io.js +322 -0
- package/lib/io/worker-thread.js +569 -0
- package/lib/nodejs/cli.js +45 -59
- package/lib/nodejs/clocks.js +13 -27
- package/lib/nodejs/filesystem.js +539 -459
- package/lib/nodejs/http.js +440 -173
- package/lib/nodejs/index.js +4 -1
- package/lib/nodejs/io.js +1 -0
- package/lib/nodejs/sockets/socket-common.js +116 -0
- package/lib/nodejs/sockets/socketopts-bindings.js +94 -0
- package/lib/nodejs/sockets/tcp-socket-impl.js +794 -0
- package/lib/nodejs/sockets/udp-socket-impl.js +628 -0
- package/lib/nodejs/sockets/wasi-sockets.js +320 -0
- package/lib/nodejs/sockets.js +11 -200
- package/lib/synckit/index.js +4 -2
- package/package.json +1 -5
- package/types/interfaces/wasi-cli-terminal-input.d.ts +4 -0
- package/types/interfaces/wasi-cli-terminal-output.d.ts +4 -0
- package/types/interfaces/wasi-clocks-monotonic-clock.d.ts +19 -6
- package/types/interfaces/wasi-filesystem-types.d.ts +1 -178
- package/types/interfaces/wasi-http-outgoing-handler.d.ts +2 -2
- package/types/interfaces/wasi-http-types.d.ts +412 -82
- package/types/interfaces/wasi-io-error.d.ts +16 -0
- package/types/interfaces/wasi-io-poll.d.ts +19 -8
- package/types/interfaces/wasi-io-streams.d.ts +26 -46
- package/types/interfaces/wasi-sockets-ip-name-lookup.d.ts +9 -21
- package/types/interfaces/wasi-sockets-network.d.ts +4 -0
- package/types/interfaces/wasi-sockets-tcp.d.ts +75 -18
- package/types/interfaces/wasi-sockets-udp-create-socket.d.ts +1 -1
- package/types/interfaces/wasi-sockets-udp.d.ts +282 -193
- package/types/wasi-cli-command.d.ts +28 -28
- package/types/wasi-http-proxy.d.ts +12 -12
- package/lib/common/io.js +0 -183
- package/lib/common/make-request.js +0 -30
- package/types/interfaces/wasi-clocks-timezone.d.ts +0 -56
package/lib/nodejs/cli.js
CHANGED
|
@@ -1,115 +1,101 @@
|
|
|
1
|
-
import { argv, env, cwd } from
|
|
2
|
-
import {
|
|
1
|
+
import { argv, env, cwd } from "node:process";
|
|
2
|
+
import {
|
|
3
|
+
streams,
|
|
4
|
+
inputStreamCreate,
|
|
5
|
+
outputStreamCreate,
|
|
6
|
+
} from "../io/worker-io.js";
|
|
7
|
+
import { STDIN, STDOUT, STDERR } from "../io/calls.js";
|
|
3
8
|
const { InputStream, OutputStream } = streams;
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
const
|
|
10
|
+
export const _setEnv = env => void (_env = Object.entries(env));
|
|
11
|
+
export const _setArgs = args => void (_args = args);
|
|
12
|
+
export const _setCwd = cwd => void (_cwd = cwd);
|
|
13
|
+
export const _setStdin = stdin => void (stdinStream = stdin);
|
|
14
|
+
export const _setStdout = stdout => void (stdoutStream = stdout);
|
|
15
|
+
export const _setStderr = stderr => void (stderrStream = stderr);
|
|
16
|
+
export const _setTerminalStdin = terminalStdin => void (terminalStdinInstance = terminalStdin);
|
|
17
|
+
export const _setTerminalStdout = terminalStdout => void (terminalStdoutInstance = terminalStdout);
|
|
18
|
+
export const _setTerminalStderr = terminalStderr => void (terminalStderrInstance = terminalStderr);
|
|
19
|
+
|
|
20
|
+
let _env = Object.entries(env),
|
|
21
|
+
_args = argv.slice(1),
|
|
22
|
+
_cwd = cwd();
|
|
7
23
|
|
|
8
24
|
export const environment = {
|
|
9
|
-
getEnvironment
|
|
25
|
+
getEnvironment() {
|
|
10
26
|
return _env;
|
|
11
27
|
},
|
|
12
|
-
getArguments
|
|
28
|
+
getArguments() {
|
|
13
29
|
return _args;
|
|
14
30
|
},
|
|
15
|
-
initialCwd
|
|
31
|
+
initialCwd() {
|
|
16
32
|
return _cwd;
|
|
17
|
-
}
|
|
33
|
+
},
|
|
18
34
|
};
|
|
19
35
|
|
|
20
36
|
export const exit = {
|
|
21
|
-
exit
|
|
22
|
-
process.exit(status.tag ===
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const stdinStream = new InputStream({
|
|
27
|
-
blockingRead (_len) {
|
|
28
|
-
// TODO
|
|
29
|
-
},
|
|
30
|
-
subscribe () {
|
|
31
|
-
// TODO
|
|
37
|
+
exit(status) {
|
|
38
|
+
process.exit(status.tag === "err" ? 1 : 0);
|
|
32
39
|
},
|
|
33
|
-
|
|
34
|
-
// TODO
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const stdoutStream = new OutputStream({
|
|
38
|
-
write (contents) {
|
|
39
|
-
process.stdout.write(contents);
|
|
40
|
-
},
|
|
41
|
-
blockingFlush () {
|
|
42
|
-
},
|
|
43
|
-
[symbolDispose] () {
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
const stderrStream = new OutputStream({
|
|
47
|
-
write (contents) {
|
|
48
|
-
process.stderr.write(contents);
|
|
49
|
-
},
|
|
50
|
-
blockingFlush () {
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
[symbolDispose] () {
|
|
40
|
+
};
|
|
54
41
|
|
|
55
|
-
|
|
56
|
-
|
|
42
|
+
let stdinStream = inputStreamCreate(STDIN, 1);
|
|
43
|
+
let stdoutStream = outputStreamCreate(STDOUT, 2);
|
|
44
|
+
let stderrStream = outputStreamCreate(STDERR, 3);
|
|
57
45
|
|
|
58
46
|
export const stdin = {
|
|
59
47
|
InputStream,
|
|
60
|
-
getStdin
|
|
48
|
+
getStdin() {
|
|
61
49
|
return stdinStream;
|
|
62
|
-
}
|
|
50
|
+
},
|
|
63
51
|
};
|
|
64
52
|
|
|
65
53
|
export const stdout = {
|
|
66
54
|
OutputStream,
|
|
67
|
-
getStdout
|
|
55
|
+
getStdout() {
|
|
68
56
|
return stdoutStream;
|
|
69
|
-
}
|
|
57
|
+
},
|
|
70
58
|
};
|
|
71
59
|
|
|
72
60
|
export const stderr = {
|
|
73
61
|
OutputStream,
|
|
74
|
-
getStderr
|
|
62
|
+
getStderr() {
|
|
75
63
|
return stderrStream;
|
|
76
|
-
}
|
|
64
|
+
},
|
|
77
65
|
};
|
|
78
66
|
|
|
79
67
|
class TerminalInput {}
|
|
80
68
|
class TerminalOutput {}
|
|
81
69
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
70
|
+
let terminalStdoutInstance = new TerminalOutput();
|
|
71
|
+
let terminalStderrInstance = new TerminalOutput();
|
|
72
|
+
let terminalStdinInstance = new TerminalInput();
|
|
85
73
|
|
|
86
74
|
export const terminalInput = {
|
|
87
75
|
TerminalInput,
|
|
88
|
-
dropTerminalInput () {}
|
|
89
76
|
};
|
|
90
77
|
|
|
91
78
|
export const terminalOutput = {
|
|
92
79
|
TerminalOutput,
|
|
93
|
-
dropTerminalOutput () {}
|
|
94
80
|
};
|
|
95
81
|
|
|
96
82
|
export const terminalStderr = {
|
|
97
83
|
TerminalOutput,
|
|
98
|
-
getTerminalStderr
|
|
84
|
+
getTerminalStderr() {
|
|
99
85
|
return terminalStderrInstance;
|
|
100
|
-
}
|
|
86
|
+
},
|
|
101
87
|
};
|
|
102
88
|
|
|
103
89
|
export const terminalStdin = {
|
|
104
90
|
TerminalInput,
|
|
105
|
-
getTerminalStdin
|
|
91
|
+
getTerminalStdin() {
|
|
106
92
|
return terminalStdinInstance;
|
|
107
|
-
}
|
|
93
|
+
},
|
|
108
94
|
};
|
|
109
95
|
|
|
110
96
|
export const terminalStdout = {
|
|
111
97
|
TerminalOutput,
|
|
112
|
-
getTerminalStdout
|
|
98
|
+
getTerminalStdout() {
|
|
113
99
|
return terminalStdoutInstance;
|
|
114
|
-
}
|
|
100
|
+
},
|
|
115
101
|
};
|
package/lib/nodejs/clocks.js
CHANGED
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
let _hrStart = hrtime.bigint();
|
|
1
|
+
import { ioCall, createPoll, resolvedPoll } from "../io/worker-io.js";
|
|
2
|
+
import * as calls from "../io/calls.js";
|
|
4
3
|
|
|
5
4
|
export const monotonicClock = {
|
|
6
|
-
resolution
|
|
5
|
+
resolution() {
|
|
7
6
|
return 1n;
|
|
8
7
|
},
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return hrtime.bigint() - _hrStart;
|
|
8
|
+
now() {
|
|
9
|
+
return ioCall(calls.CLOCKS_NOW);
|
|
12
10
|
},
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
console.log(`[monotonic-clock] Subscribe`);
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export const timezone = {
|
|
20
|
-
display (timezone, when) {
|
|
21
|
-
console.log(`[timezone] DISPLAY ${timezone} ${when}`);
|
|
11
|
+
subscribeInstant(instant) {
|
|
12
|
+
return createPoll(calls.CLOCKS_INSTANT_SUBSCRIBE, null, instant);
|
|
22
13
|
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return
|
|
14
|
+
subscribeDuration(duration) {
|
|
15
|
+
duration = BigInt(duration);
|
|
16
|
+
if (duration === 0n) return resolvedPoll();
|
|
17
|
+
return createPoll(calls.CLOCKS_DURATION_SUBSCRIBE, null, duration);
|
|
27
18
|
},
|
|
28
|
-
|
|
29
|
-
dropTimezone (timezone) {
|
|
30
|
-
console.log(`[timezone] DROP ${timezone}`);
|
|
31
|
-
}
|
|
32
19
|
};
|
|
33
20
|
|
|
34
21
|
export const wallClock = {
|
|
@@ -37,8 +24,7 @@ export const wallClock = {
|
|
|
37
24
|
const nanoseconds = (Date.now() % 1e3) * 1e6;
|
|
38
25
|
return { seconds, nanoseconds };
|
|
39
26
|
},
|
|
40
|
-
|
|
41
27
|
resolution() {
|
|
42
|
-
|
|
43
|
-
}
|
|
28
|
+
return { seconds: 0n, nanoseconds: 1e6 };
|
|
29
|
+
},
|
|
44
30
|
};
|