@bytecodealliance/preview2-shim 0.0.8 → 0.0.10

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 (86) hide show
  1. package/README.md +1 -0
  2. package/lib/browser/cli-base.js +48 -0
  3. package/lib/browser/clocks.js +44 -0
  4. package/lib/browser/filesystem.js +134 -141
  5. package/lib/browser/http.js +114 -0
  6. package/lib/browser/index.js +15 -37
  7. package/lib/browser/io.js +60 -20
  8. package/lib/browser/{console.js → logging.js} +7 -5
  9. package/lib/browser/poll.js +9 -7
  10. package/lib/browser/random.js +48 -24
  11. package/lib/browser/sockets.js +200 -0
  12. package/lib/nodejs/{preopens.js → cli-base.js} +38 -8
  13. package/lib/nodejs/clocks.js +44 -0
  14. package/lib/nodejs/filesystem.js +240 -237
  15. package/lib/nodejs/http.js +114 -0
  16. package/lib/nodejs/index.js +15 -37
  17. package/lib/nodejs/io.js +148 -19
  18. package/lib/nodejs/{console.js → logging.js} +7 -5
  19. package/lib/nodejs/poll.js +9 -7
  20. package/lib/nodejs/random.js +27 -13
  21. package/lib/nodejs/sockets.js +200 -0
  22. package/package.json +1 -1
  23. package/types/exports/{HTTP.d.ts → wasi-http-incoming-handler.d.ts} +1 -1
  24. package/types/imports/environment.d.ts +14 -1
  25. package/types/imports/exit.d.ts +4 -1
  26. package/types/imports/filesystem.d.ts +695 -48
  27. package/types/imports/handler.d.ts +40 -0
  28. package/types/imports/insecure-seed.d.ts +22 -0
  29. package/types/imports/insecure.d.ts +20 -0
  30. package/types/imports/instance-network.d.ts +4 -1
  31. package/types/imports/ip-name-lookup.d.ts +66 -9
  32. package/types/imports/monotonic-clock.d.ts +18 -2
  33. package/types/imports/network.d.ts +171 -9
  34. package/types/imports/{default-outgoing-HTTP.d.ts → outgoing-handler.d.ts} +1 -1
  35. package/types/imports/poll.d.ts +38 -2
  36. package/types/imports/preopens.d.ts +6 -9
  37. package/types/imports/random.d.ts +19 -2
  38. package/types/imports/stderr.d.ts +5 -0
  39. package/types/imports/stdin.d.ts +5 -0
  40. package/types/imports/stdout.d.ts +5 -0
  41. package/types/imports/streams.d.ts +161 -4
  42. package/types/imports/tcp-create-socket.d.ts +27 -3
  43. package/types/imports/tcp.d.ts +248 -15
  44. package/types/imports/timezone.d.ts +60 -2
  45. package/types/imports/types.d.ts +28 -28
  46. package/types/imports/udp-create-socket.d.ts +27 -3
  47. package/types/imports/udp.d.ts +195 -12
  48. package/types/imports/wall-clock.d.ts +24 -1
  49. package/types/wasi-command.d.ts +23 -0
  50. package/types/wasi-proxy.d.ts +10 -44
  51. package/types/wasi-reactor.d.ts +23 -70
  52. package/lib/browser/default-outgoing-HTTP.js +0 -3
  53. package/lib/browser/environment.js +0 -17
  54. package/lib/browser/exit.js +0 -21
  55. package/lib/browser/instance-network.js +0 -3
  56. package/lib/browser/ip-name-lookup.js +0 -23
  57. package/lib/browser/monotonic-clock.js +0 -14
  58. package/lib/browser/network.js +0 -3
  59. package/lib/browser/preopens.js +0 -11
  60. package/lib/browser/stderr.js +0 -4
  61. package/lib/browser/streams.js +0 -60
  62. package/lib/browser/tcp-create-socket.js +0 -3
  63. package/lib/browser/tcp.js +0 -75
  64. package/lib/browser/timezone.js +0 -12
  65. package/lib/browser/types.js +0 -99
  66. package/lib/browser/udp-create-socket.js +0 -3
  67. package/lib/browser/udp.js +0 -75
  68. package/lib/browser/wall-clock.js +0 -9
  69. package/lib/nodejs/default-outgoing-HTTP.js +0 -3
  70. package/lib/nodejs/environment.js +0 -19
  71. package/lib/nodejs/exit.js +0 -3
  72. package/lib/nodejs/instance-network.js +0 -3
  73. package/lib/nodejs/ip-name-lookup.js +0 -23
  74. package/lib/nodejs/monotonic-clock.js +0 -14
  75. package/lib/nodejs/network.js +0 -3
  76. package/lib/nodejs/stderr.js +0 -4
  77. package/lib/nodejs/streams.js +0 -97
  78. package/lib/nodejs/tcp-create-socket.js +0 -3
  79. package/lib/nodejs/tcp.js +0 -75
  80. package/lib/nodejs/timezone.js +0 -12
  81. package/lib/nodejs/types.js +0 -99
  82. package/lib/nodejs/udp-create-socket.js +0 -3
  83. package/lib/nodejs/udp.js +0 -75
  84. package/lib/nodejs/wall-clock.js +0 -9
  85. package/types/imports/console.d.ts +0 -17
  86. package/types/index.d.ts +0 -8
@@ -1,32 +1,56 @@
1
1
  const MAX_BYTES = 65536;
2
2
 
3
- export function getRandomBytes(len) {
4
- const bytes = new Uint8Array(Number(len));
5
-
6
- if (len > MAX_BYTES) {
7
- // this is the max bytes crypto.getRandomValues
8
- // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
9
- for (var generated = 0; generated < len; generated += MAX_BYTES) {
10
- // buffer.slice automatically checks if the end is past the end of
11
- // the buffer so we don't have to here
12
- crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));
3
+ let insecureRandomValue1, insecureRandomValue2;
4
+
5
+ export const insecure = {
6
+ getInsecureRandomBytes (len) {
7
+ return random.getRandomBytes(len);
8
+ },
9
+ getInsecureRandomU64 () {
10
+ return random.getRandomU64();
11
+ }
12
+ };
13
+
14
+ let insecureSeedValue1, insecureSeedValue2;
15
+
16
+ export const insecureSeed = {
17
+ insecureSeed () {
18
+ if (insecureSeedValue1 === undefined) {
19
+ insecureSeedValue1 = random.getRandomU64();
20
+ insecureSeedValue2 = random.getRandomU64();
13
21
  }
14
- } else {
15
- crypto.getRandomValues(bytes);
22
+ return [insecureSeedValue1, insecureSeedValue2];
16
23
  }
24
+ };
17
25
 
18
- return bytes;
19
- }
26
+ export const random = {
27
+ getRandomBytes(len) {
28
+ const bytes = new Uint8Array(Number(len));
20
29
 
21
- export function getRandomU64 () {
22
- return crypto.getRandomValues(new BigUint64Array(1))[0];
23
- }
30
+ if (len > MAX_BYTES) {
31
+ // this is the max bytes crypto.getRandomValues
32
+ // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
33
+ for (var generated = 0; generated < len; generated += MAX_BYTES) {
34
+ // buffer.slice automatically checks if the end is past the end of
35
+ // the buffer so we don't have to here
36
+ crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));
37
+ }
38
+ } else {
39
+ crypto.getRandomValues(bytes);
40
+ }
24
41
 
25
- let insecureRandomValue1, insecureRandomValue2;
26
- export function insecureRandom () {
27
- if (insecureRandomValue1 === undefined) {
28
- insecureRandomValue1 = getRandomU64();
29
- insecureRandomValue2 = getRandomU64();
42
+ return bytes;
43
+ },
44
+
45
+ getRandomU64 () {
46
+ return crypto.getRandomValues(new BigUint64Array(1))[0];
47
+ },
48
+
49
+ insecureRandom () {
50
+ if (insecureRandomValue1 === undefined) {
51
+ insecureRandomValue1 = random.getRandomU64();
52
+ insecureRandomValue2 = random.getRandomU64();
53
+ }
54
+ return [insecureRandomValue1, insecureRandomValue2];
30
55
  }
31
- return [insecureRandomValue1, insecureRandomValue2];
32
- }
56
+ };
@@ -0,0 +1,200 @@
1
+ export const instanceNetwork = {
2
+ instanceNetwork () {
3
+ console.log(`[sockets] instance network`);
4
+ }
5
+ };
6
+
7
+ export const ipNameLookup = {
8
+ dropResolveAddressStream () {
9
+
10
+ },
11
+ subscribe () {
12
+
13
+ },
14
+ resolveAddresses () {
15
+
16
+ },
17
+ resolveNextAddress () {
18
+
19
+ },
20
+ nonBlocking () {
21
+
22
+ },
23
+ setNonBlocking () {
24
+
25
+ },
26
+ };
27
+
28
+ export const network = {
29
+ dropNetwork () {
30
+
31
+ }
32
+ };
33
+
34
+ export const tcpCreateSocket = {
35
+ createTcpSocket () {
36
+
37
+ }
38
+ };
39
+
40
+ export const tcp = {
41
+ subscribe () {
42
+
43
+ },
44
+ dropTcpSocket() {
45
+
46
+ },
47
+ bind() {
48
+
49
+ },
50
+ connect() {
51
+
52
+ },
53
+ listen() {
54
+
55
+ },
56
+ accept() {
57
+
58
+ },
59
+ localAddress() {
60
+
61
+ },
62
+ remoteAddress() {
63
+
64
+ },
65
+ addressFamily() {
66
+
67
+ },
68
+ ipv6Only() {
69
+
70
+ },
71
+ setIpv6Only() {
72
+
73
+ },
74
+ setListenBacklogSize() {
75
+
76
+ },
77
+ keepAlive() {
78
+
79
+ },
80
+ setKeepAlive() {
81
+
82
+ },
83
+ noDelay() {
84
+
85
+ },
86
+ setNoDelay() {
87
+
88
+ },
89
+ unicastHopLimit() {
90
+
91
+ },
92
+ setUnicastHopLimit() {
93
+
94
+ },
95
+ receiveBufferSize() {
96
+
97
+ },
98
+ setReceiveBufferSize() {
99
+
100
+ },
101
+ sendBufferSize() {
102
+
103
+ },
104
+ setSendBufferSize() {
105
+
106
+ },
107
+ nonBlocking() {
108
+
109
+ },
110
+ setNonBlocking() {
111
+
112
+ },
113
+ shutdown() {
114
+
115
+ }
116
+ };
117
+
118
+ export const udp = {
119
+ subscribe () {
120
+
121
+ },
122
+
123
+ dropUdpSocket () {
124
+
125
+ },
126
+
127
+ bind () {
128
+
129
+ },
130
+
131
+ connect () {
132
+
133
+ },
134
+
135
+ receive () {
136
+
137
+ },
138
+
139
+ send () {
140
+
141
+ },
142
+
143
+ localAddress () {
144
+
145
+ },
146
+
147
+ remoteAddress () {
148
+
149
+ },
150
+
151
+ addressFamily () {
152
+
153
+ },
154
+
155
+ ipv6Only () {
156
+
157
+ },
158
+
159
+ setIpv6Only () {
160
+
161
+ },
162
+
163
+ unicastHopLimit () {
164
+
165
+ },
166
+
167
+ setUnicastHopLimit () {
168
+
169
+ },
170
+
171
+ receiveBufferSize () {
172
+
173
+ },
174
+
175
+ setReceiveBufferSize () {
176
+
177
+ },
178
+
179
+ sendBufferSize () {
180
+
181
+ },
182
+
183
+ setSendBufferSize () {
184
+
185
+ },
186
+
187
+ nonBlocking () {
188
+
189
+ },
190
+
191
+ setNonBlocking () {
192
+
193
+ }
194
+ };
195
+
196
+ export const udpCreateSocket = {
197
+ createUdpSocket () {
198
+
199
+ }
200
+ };
@@ -56,14 +56,44 @@ export function _setPreopens (preopens) {
56
56
  }
57
57
  }
58
58
 
59
- export function getStdio () {
60
- return {
61
- stdin: 0,
62
- stdout: 1,
63
- stderr: 2,
64
- };
59
+ let _env;
60
+ export function _setEnv (envObj) {
61
+ _env = Object.entries(envObj);
65
62
  }
66
63
 
67
- export function getDirectories () {
68
- return directories;
64
+ export const environment = {
65
+ getEnvironment () {
66
+ if (!_env) _setEnv(process.env);
67
+ return _env;
68
+ }
69
+ };
70
+
71
+ export const exit = {
72
+ exit (status) {
73
+ process.exit(status.tag === 'err' ? 1 : 0);
74
+ }
75
+ };
76
+
77
+ export const preopens = {
78
+ getDirectories () {
79
+ return directories;
80
+ }
69
81
  }
82
+
83
+ export const stdin = {
84
+ getStdin () {
85
+ return 0;
86
+ }
87
+ };
88
+
89
+ export const stdout = {
90
+ getStdout () {
91
+ return 1;
92
+ }
93
+ };
94
+
95
+ export const stderr = {
96
+ getStderr () {
97
+ return 2;
98
+ }
99
+ };
@@ -0,0 +1,44 @@
1
+ import { hrtime } from "node:process";
2
+
3
+ let _hrStart = hrtime.bigint();
4
+
5
+ export const monotonicClock = {
6
+ resolution () {
7
+ return 1n;
8
+ },
9
+
10
+ now () {
11
+ return hrtime.bigint() - _hrStart;
12
+ },
13
+
14
+ subscribe (_when, _absolute) {
15
+ console.log(`[monotonic-clock] Subscribe`);
16
+ }
17
+ };
18
+
19
+ export const timezone = {
20
+ display (timezone, when) {
21
+ console.log(`[timezone] DISPLAY ${timezone} ${when}`);
22
+ },
23
+
24
+ utcOffset (timezone, when) {
25
+ console.log(`[timezone] UTC OFFSET ${timezone} ${when}`);
26
+ return 0;
27
+ },
28
+
29
+ dropTimezone (timezone) {
30
+ console.log(`[timezone] DROP ${timezone}`);
31
+ }
32
+ };
33
+
34
+ export const wallClock = {
35
+ now() {
36
+ const seconds = BigInt(Math.floor(Date.now() / 1e3));
37
+ const nanoseconds = (Date.now() % 1e3) * 1e6;
38
+ return { seconds, nanoseconds };
39
+ },
40
+
41
+ resolution() {
42
+ console.log(`[wall-clock] Wall clock resolution`);
43
+ }
44
+ };