@bytecodealliance/preview2-shim 0.17.1 → 0.17.3

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.
Files changed (67) hide show
  1. package/lib/browser/cli.js +91 -94
  2. package/lib/browser/clocks.js +30 -29
  3. package/lib/browser/filesystem.js +298 -251
  4. package/lib/browser/http.js +129 -128
  5. package/lib/browser/index.js +8 -16
  6. package/lib/browser/io.js +143 -135
  7. package/lib/browser/random.js +44 -42
  8. package/lib/browser/sockets.js +68 -166
  9. package/lib/common/instantiation.js +127 -0
  10. package/lib/io/calls.js +7 -5
  11. package/lib/io/worker-http.js +175 -157
  12. package/lib/io/worker-io.js +402 -386
  13. package/lib/io/worker-socket-tcp.js +271 -219
  14. package/lib/io/worker-socket-udp.js +494 -429
  15. package/lib/io/worker-sockets.js +276 -262
  16. package/lib/io/worker-thread.js +946 -815
  17. package/lib/nodejs/cli.js +64 -63
  18. package/lib/nodejs/clocks.js +51 -45
  19. package/lib/nodejs/filesystem.js +788 -654
  20. package/lib/nodejs/http.js +693 -617
  21. package/lib/nodejs/index.js +8 -16
  22. package/lib/nodejs/random.js +32 -28
  23. package/lib/nodejs/sockets.js +538 -474
  24. package/lib/synckit/index.js +94 -85
  25. package/package.json +9 -5
  26. package/types/cli.d.ts +11 -23
  27. package/types/clocks.d.ts +2 -5
  28. package/types/filesystem.d.ts +2 -5
  29. package/types/http.d.ts +3 -7
  30. package/types/index.d.ts +6 -15
  31. package/types/instantiation.d.ts +112 -0
  32. package/types/interfaces/wasi-cli-environment.d.ts +21 -22
  33. package/types/interfaces/wasi-cli-exit.d.ts +5 -6
  34. package/types/interfaces/wasi-cli-run.d.ts +5 -6
  35. package/types/interfaces/wasi-cli-stderr.d.ts +3 -5
  36. package/types/interfaces/wasi-cli-stdin.d.ts +3 -5
  37. package/types/interfaces/wasi-cli-stdout.d.ts +3 -5
  38. package/types/interfaces/wasi-cli-terminal-input.d.ts +5 -3
  39. package/types/interfaces/wasi-cli-terminal-output.d.ts +5 -3
  40. package/types/interfaces/wasi-cli-terminal-stderr.d.ts +7 -9
  41. package/types/interfaces/wasi-cli-terminal-stdin.d.ts +7 -9
  42. package/types/interfaces/wasi-cli-terminal-stdout.d.ts +7 -9
  43. package/types/interfaces/wasi-clocks-monotonic-clock.d.ts +24 -26
  44. package/types/interfaces/wasi-clocks-wall-clock.d.ts +23 -24
  45. package/types/interfaces/wasi-filesystem-preopens.d.ts +6 -8
  46. package/types/interfaces/wasi-filesystem-types.d.ts +34 -33
  47. package/types/interfaces/wasi-http-incoming-handler.d.ts +16 -19
  48. package/types/interfaces/wasi-http-outgoing-handler.d.ts +18 -23
  49. package/types/interfaces/wasi-http-types.d.ts +49 -38
  50. package/types/interfaces/wasi-io-error.d.ts +5 -3
  51. package/types/interfaces/wasi-io-poll.d.ts +27 -25
  52. package/types/interfaces/wasi-io-streams.d.ts +24 -21
  53. package/types/interfaces/wasi-random-insecure-seed.d.ts +21 -22
  54. package/types/interfaces/wasi-random-insecure.d.ts +19 -20
  55. package/types/interfaces/wasi-random-random.d.ts +23 -24
  56. package/types/interfaces/wasi-sockets-instance-network.d.ts +6 -8
  57. package/types/interfaces/wasi-sockets-ip-name-lookup.d.ts +32 -34
  58. package/types/interfaces/wasi-sockets-network.d.ts +5 -3
  59. package/types/interfaces/wasi-sockets-tcp-create-socket.d.ts +28 -33
  60. package/types/interfaces/wasi-sockets-tcp.d.ts +17 -23
  61. package/types/interfaces/wasi-sockets-udp-create-socket.d.ts +28 -33
  62. package/types/interfaces/wasi-sockets-udp.d.ts +20 -17
  63. package/types/io.d.ts +3 -7
  64. package/types/random.d.ts +3 -7
  65. package/types/sockets.d.ts +7 -15
  66. package/types/wasi-cli-command.d.ts +29 -29
  67. package/types/wasi-http-proxy.d.ts +13 -13
@@ -4,125 +4,122 @@ const { InputStream, OutputStream } = streams;
4
4
 
5
5
  const symbolDispose = Symbol.dispose ?? Symbol.for('dispose');
6
6
 
7
- let _env = [], _args = [], _cwd = "/";
8
- export function _setEnv (envObj) {
9
- _env = Object.entries(envObj);
7
+ let _env = [],
8
+ _args = [],
9
+ _cwd = '/';
10
+ export function _setEnv(envObj) {
11
+ _env = Object.entries(envObj);
10
12
  }
11
- export function _setArgs (args) {
12
- _args = args;
13
+ export function _setArgs(args) {
14
+ _args = args;
13
15
  }
14
16
 
15
- export function _setCwd (cwd) {
16
- fsSetCwd(_cwd = cwd);
17
+ export function _setCwd(cwd) {
18
+ fsSetCwd((_cwd = cwd));
17
19
  }
18
20
 
19
21
  export const environment = {
20
- getEnvironment () {
21
- return _env;
22
- },
23
- getArguments () {
24
- return _args;
25
- },
26
- initialCwd () {
27
- return _cwd;
28
- }
22
+ getEnvironment() {
23
+ return _env;
24
+ },
25
+ getArguments() {
26
+ return _args;
27
+ },
28
+ initialCwd() {
29
+ return _cwd;
30
+ },
29
31
  };
30
32
 
31
33
  class ComponentExit extends Error {
32
- constructor(code) {
33
- super(`Component exited ${code === 0 ? 'successfully' : 'with error'}`);
34
- this.exitError = true;
35
- this.code = code;
36
- }
34
+ constructor(code) {
35
+ super(`Component exited ${code === 0 ? 'successfully' : 'with error'}`);
36
+ this.exitError = true;
37
+ this.code = code;
38
+ }
37
39
  }
38
40
 
39
41
  export const exit = {
40
- exit (status) {
41
- throw new ComponentExit(status.tag === 'err' ? 1 : 0);
42
- },
43
- exitWithCode (code) {
44
- throw new ComponentExit(code);
45
- }
42
+ exit(status) {
43
+ throw new ComponentExit(status.tag === 'err' ? 1 : 0);
44
+ },
45
+ exitWithCode(code) {
46
+ throw new ComponentExit(code);
47
+ },
46
48
  };
47
49
 
48
50
  /**
49
- * @param {import('../common/io.js').InputStreamHandler} handler
51
+ * @param {import('../common/io.js').InputStreamHandler} handler
50
52
  */
51
- export function _setStdin (handler) {
52
- stdinStream.handler = handler;
53
+ export function _setStdin(handler) {
54
+ stdinStream.handler = handler;
53
55
  }
54
56
  /**
55
- * @param {import('../common/io.js').OutputStreamHandler} handler
57
+ * @param {import('../common/io.js').OutputStreamHandler} handler
56
58
  */
57
- export function _setStderr (handler) {
58
- stderrStream.handler = handler;
59
+ export function _setStderr(handler) {
60
+ stderrStream.handler = handler;
59
61
  }
60
62
  /**
61
- * @param {import('../common/io.js').OutputStreamHandler} handler
63
+ * @param {import('../common/io.js').OutputStreamHandler} handler
62
64
  */
63
- export function _setStdout (handler) {
64
- stdoutStream.handler = handler;
65
+ export function _setStdout(handler) {
66
+ stdoutStream.handler = handler;
65
67
  }
66
68
 
67
69
  const stdinStream = new InputStream({
68
- blockingRead (_len) {
69
- // TODO
70
- },
71
- subscribe () {
72
- // TODO
73
- },
74
- [symbolDispose] () {
75
- // TODO
76
- }
70
+ blockingRead(_len) {
71
+ // TODO
72
+ },
73
+ subscribe() {
74
+ // TODO
75
+ },
76
+ [symbolDispose]() {
77
+ // TODO
78
+ },
77
79
  });
78
80
  let textDecoder = new TextDecoder();
79
81
  const stdoutStream = new OutputStream({
80
- write (contents) {
81
- if (contents[contents.length - 1] == 10) {
82
- // console.log already appends a new line
83
- contents = contents.subarray(0, contents.length - 1);
84
- }
85
- console.log(textDecoder.decode(contents));
86
- },
87
- blockingFlush () {
88
- },
89
- [symbolDispose] () {
90
- }
82
+ write(contents) {
83
+ if (contents[contents.length - 1] == 10) {
84
+ // console.log already appends a new line
85
+ contents = contents.subarray(0, contents.length - 1);
86
+ }
87
+ console.log(textDecoder.decode(contents));
88
+ },
89
+ blockingFlush() {},
90
+ [symbolDispose]() {},
91
91
  });
92
92
  const stderrStream = new OutputStream({
93
- write (contents) {
94
- if (contents[contents.length - 1] == 10) {
95
- // console.error already appends a new line
96
- contents = contents.subarray(0, contents.length - 1);
97
- }
98
- console.error(textDecoder.decode(contents));
99
- },
100
- blockingFlush () {
101
- },
102
- [symbolDispose] () {
103
-
104
- }
93
+ write(contents) {
94
+ if (contents[contents.length - 1] == 10) {
95
+ // console.error already appends a new line
96
+ contents = contents.subarray(0, contents.length - 1);
97
+ }
98
+ console.error(textDecoder.decode(contents));
99
+ },
100
+ blockingFlush() {},
101
+ [symbolDispose]() {},
105
102
  });
106
103
 
107
104
  export const stdin = {
108
- InputStream,
109
- getStdin () {
110
- return stdinStream;
111
- }
105
+ InputStream,
106
+ getStdin() {
107
+ return stdinStream;
108
+ },
112
109
  };
113
110
 
114
111
  export const stdout = {
115
- OutputStream,
116
- getStdout () {
117
- return stdoutStream;
118
- }
112
+ OutputStream,
113
+ getStdout() {
114
+ return stdoutStream;
115
+ },
119
116
  };
120
117
 
121
118
  export const stderr = {
122
- OutputStream,
123
- getStderr () {
124
- return stderrStream;
125
- }
119
+ OutputStream,
120
+ getStderr() {
121
+ return stderrStream;
122
+ },
126
123
  };
127
124
 
128
125
  class TerminalInput {}
@@ -133,30 +130,30 @@ const terminalStderrInstance = new TerminalOutput();
133
130
  const terminalStdinInstance = new TerminalInput();
134
131
 
135
132
  export const terminalInput = {
136
- TerminalInput
133
+ TerminalInput,
137
134
  };
138
135
 
139
136
  export const terminalOutput = {
140
- TerminalOutput
137
+ TerminalOutput,
141
138
  };
142
139
 
143
140
  export const terminalStderr = {
144
- TerminalOutput,
145
- getTerminalStderr () {
146
- return terminalStderrInstance;
147
- }
141
+ TerminalOutput,
142
+ getTerminalStderr() {
143
+ return terminalStderrInstance;
144
+ },
148
145
  };
149
146
 
150
147
  export const terminalStdin = {
151
- TerminalInput,
152
- getTerminalStdin () {
153
- return terminalStdinInstance;
154
- }
148
+ TerminalInput,
149
+ getTerminalStdin() {
150
+ return terminalStdinInstance;
151
+ },
155
152
  };
156
153
 
157
154
  export const terminalStdout = {
158
- TerminalOutput,
159
- getTerminalStdout () {
160
- return terminalStdoutInstance;
161
- }
155
+ TerminalOutput,
156
+ getTerminalStdout() {
157
+ return terminalStdoutInstance;
158
+ },
162
159
  };
@@ -1,34 +1,35 @@
1
1
  export const monotonicClock = {
2
- resolution() {
3
- // usually we dont get sub-millisecond accuracy in the browser
4
- // Note: is there a better way to determine this?
5
- return 1e6;
6
- },
7
- now () {
8
- // performance.now() is in milliseconds, but we want nanoseconds
9
- return BigInt(Math.floor(performance.now() * 1e6));
10
- },
11
- subscribeInstant (instant) {
12
- instant = BigInt(instant);
13
- const now = this.now();
14
- if (instant <= now)
15
- return this.subscribeDuration(0);
16
- return this.subscribeDuration(instant - now);
17
- },
18
- subscribeDuration (_duration) {
19
- _duration = BigInt(_duration);
20
- console.log(`[monotonic-clock] subscribe`);
21
- }
2
+ resolution() {
3
+ // usually we dont get sub-millisecond accuracy in the browser
4
+ // Note: is there a better way to determine this?
5
+ return 1e6;
6
+ },
7
+ now() {
8
+ // performance.now() is in milliseconds, but we want nanoseconds
9
+ return BigInt(Math.floor(performance.now() * 1e6));
10
+ },
11
+ subscribeInstant(instant) {
12
+ instant = BigInt(instant);
13
+ const now = this.now();
14
+ if (instant <= now) {
15
+ return this.subscribeDuration(0);
16
+ }
17
+ return this.subscribeDuration(instant - now);
18
+ },
19
+ subscribeDuration(_duration) {
20
+ _duration = BigInt(_duration);
21
+ console.log(`[monotonic-clock] subscribe`);
22
+ },
22
23
  };
23
24
 
24
25
  export const wallClock = {
25
- now() {
26
- let now = Date.now(); // in milliseconds
27
- const seconds = BigInt(Math.floor(now / 1e3));
28
- const nanoseconds = (now % 1e3) * 1e6;
29
- return { seconds, nanoseconds };
30
- },
31
- resolution() {
32
- return { seconds: 0n, nanoseconds: 1e6 };
33
- }
26
+ now() {
27
+ let now = Date.now(); // in milliseconds
28
+ const seconds = BigInt(Math.floor(now / 1e3));
29
+ const nanoseconds = (now % 1e3) * 1e6;
30
+ return { seconds, nanoseconds };
31
+ },
32
+ resolution() {
33
+ return { seconds: 0n, nanoseconds: 1e6 };
34
+ },
34
35
  };