xbintsc 0.3.8 → 0.3.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.
- package/README.md +14 -11
- package/README.zh-CN.md +13 -11
- package/dist/src/codegen/generator/calls/invocation.js +3 -0
- package/dist/src/codegen/generator/calls/invocation.js.map +1 -1
- package/dist/src/codegen/generator/context.d.ts +5 -0
- package/dist/src/codegen/generator/context.js +18 -2
- package/dist/src/codegen/generator/context.js.map +1 -1
- package/dist/src/codegen/generator/expressions/primary.js +17 -0
- package/dist/src/codegen/generator/expressions/primary.js.map +1 -1
- package/dist/src/codegen/generator/state.js +3 -0
- package/dist/src/codegen/generator/state.js.map +1 -1
- package/dist/src/codegen/generator/tables.js +3 -0
- package/dist/src/codegen/generator/tables.js.map +1 -1
- package/dist/src/driver/index.d.ts +1 -1
- package/dist/src/driver/index.js +1 -1
- package/dist/src/driver/index.js.map +1 -1
- package/dist/src/driver/paths.d.ts +7 -0
- package/dist/src/driver/paths.js +9 -0
- package/dist/src/driver/paths.js.map +1 -1
- package/dist/src/extensions/node/assert/index.d.ts +10 -0
- package/dist/src/extensions/node/assert/index.js +37 -0
- package/dist/src/extensions/node/assert/index.js.map +1 -0
- package/dist/src/extensions/node/buffer/index.js +16 -0
- package/dist/src/extensions/node/buffer/index.js.map +1 -1
- package/dist/src/extensions/node/dgram/index.js +4 -0
- package/dist/src/extensions/node/dgram/index.js.map +1 -1
- package/dist/src/extensions/node/events/index.js +1 -1
- package/dist/src/extensions/node/events/index.js.map +1 -1
- package/dist/src/extensions/node/fs/index.js +3 -1
- package/dist/src/extensions/node/fs/index.js.map +1 -1
- package/dist/src/extensions/node/fs/streams.d.ts +6 -0
- package/dist/src/extensions/node/fs/streams.js +9 -0
- package/dist/src/extensions/node/fs/streams.js.map +1 -0
- package/dist/src/extensions/node/http/index.js +3 -0
- package/dist/src/extensions/node/http/index.js.map +1 -1
- package/dist/src/extensions/node/index.js +10 -0
- package/dist/src/extensions/node/index.js.map +1 -1
- package/dist/src/extensions/node/net/index.js +7 -0
- package/dist/src/extensions/node/net/index.js.map +1 -1
- package/dist/src/extensions/node/stream/index.js +8 -0
- package/dist/src/extensions/node/stream/index.js.map +1 -1
- package/dist/src/extensions/node/stream-promises/index.d.ts +9 -0
- package/dist/src/extensions/node/stream-promises/index.js +16 -0
- package/dist/src/extensions/node/stream-promises/index.js.map +1 -0
- package/dist/src/extensions/node/test/index.d.ts +10 -0
- package/dist/src/extensions/node/test/index.js +30 -0
- package/dist/src/extensions/node/test/index.js.map +1 -0
- package/dist/src/extensions/node/worker_threads/index.d.ts +10 -0
- package/dist/src/extensions/node/worker_threads/index.js +22 -0
- package/dist/src/extensions/node/worker_threads/index.js.map +1 -0
- package/dist/src/extensions/node/zlib/index.d.ts +8 -0
- package/dist/src/extensions/node/zlib/index.js +15 -0
- package/dist/src/extensions/node/zlib/index.js.map +1 -0
- package/dist/src/extensions/registry.d.ts +6 -0
- package/dist/src/extensions/registry.js.map +1 -1
- package/dist/tests/driver/paths.test.js +11 -1
- package/dist/tests/driver/paths.test.js.map +1 -1
- package/dist/tests/e2e/compile-node.test.js +67 -1
- package/dist/tests/e2e/compile-node.test.js.map +1 -1
- package/dist/tests/e2e/compile.test.js +12 -0
- package/dist/tests/e2e/compile.test.js.map +1 -1
- package/dist/tests/e2e/node-modules.test.js +127 -3
- package/dist/tests/e2e/node-modules.test.js.map +1 -1
- package/package.json +1 -1
- package/runtime/ext_node/assert/assert.c +207 -0
- package/runtime/ext_node/crypto/crypto.c +230 -14
- package/runtime/ext_node/fs/streams.c +31 -0
- package/runtime/ext_node/stream/pipeline.c +147 -0
- package/runtime/ext_node/stream/stream.c +20 -0
- package/runtime/ext_node/test/test.c +102 -0
- package/runtime/ext_node/worker_threads/worker_threads.c +206 -0
- package/runtime/ext_node/zlib/zlib.c +19 -0
- package/runtime/xt_io.c +86 -0
- package/runtime/xt_stdlib/dispatch.inc +9 -1
- package/scripts/package-release.ts +11 -3
- package/src/codegen/generator/calls/invocation.ts +2 -0
- package/src/codegen/generator/context.ts +19 -2
- package/src/codegen/generator/expressions/primary.ts +17 -0
- package/src/codegen/generator/state.ts +3 -0
- package/src/codegen/generator/tables.ts +3 -0
- package/src/driver/index.ts +1 -1
- package/src/driver/paths.ts +14 -0
- package/src/extensions/node/assert/index.ts +44 -0
- package/src/extensions/node/buffer/index.ts +19 -0
- package/src/extensions/node/dgram/index.ts +6 -0
- package/src/extensions/node/events/index.ts +1 -1
- package/src/extensions/node/fs/index.ts +3 -1
- package/src/extensions/node/fs/streams.ts +11 -0
- package/src/extensions/node/http/index.ts +8 -0
- package/src/extensions/node/index.ts +10 -0
- package/src/extensions/node/net/index.ts +10 -0
- package/src/extensions/node/stream/index.ts +10 -0
- package/src/extensions/node/stream-promises/index.ts +18 -0
- package/src/extensions/node/test/index.ts +35 -0
- package/src/extensions/node/worker_threads/index.ts +26 -0
- package/src/extensions/node/zlib/index.ts +17 -0
- package/src/extensions/registry.ts +6 -0
|
@@ -724,6 +724,18 @@ describeE2E("end-to-end compilation", (harness) => {
|
|
|
724
724
|
`;
|
|
725
725
|
expect(runProgram(source)).toBe("function map 1\n2,4,6\nfunction bc a-b-c\n15\nthrew");
|
|
726
726
|
});
|
|
727
|
+
it("calls functions through computed and indexed element access", () => {
|
|
728
|
+
const source = `
|
|
729
|
+
const fns = [(n: number) => n + 1, (n: number) => n * 2];
|
|
730
|
+
console.log(fns[0](10), fns[1](10));
|
|
731
|
+
let total = 0;
|
|
732
|
+
for (let i = 0; i < fns.length; i++) total += fns[i](3);
|
|
733
|
+
const table: any = { a: () => "A", b: () => "B" };
|
|
734
|
+
const key = "b";
|
|
735
|
+
console.log(total, table[key]());
|
|
736
|
+
`;
|
|
737
|
+
expect(runProgram(source)).toBe("11 20\n10 B");
|
|
738
|
+
});
|
|
727
739
|
it("supports the Error family as first-class constructors", () => {
|
|
728
740
|
const source = `
|
|
729
741
|
console.log(typeof Error, typeof TypeError, typeof AggregateError);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,17 @@ describeWithClang("node compatibility modules", () => {
|
|
|
52
52
|
expect(status).toBe(0);
|
|
53
53
|
expect(stdout.trim()).toBe(["hello 5 true", "AAAA", "deadbeef", "foobar", "305419896 12345678"].join("\n"));
|
|
54
54
|
});
|
|
55
|
+
it("supports named imports from buffer", () => {
|
|
56
|
+
const source = `
|
|
57
|
+
import { Buffer, alloc, concat, from, isBuffer } from "buffer";
|
|
58
|
+
console.log(from("hello").toString(), alloc(4, 65).toString());
|
|
59
|
+
console.log(isBuffer(from("x")), concat([from("foo"), from("bar")]).toString());
|
|
60
|
+
console.log(new Buffer("hey").toString(), Buffer.from("yo").toString(), Buffer.isBuffer(Buffer.from("z")));
|
|
61
|
+
`;
|
|
62
|
+
const { status, stdout } = run(source);
|
|
63
|
+
expect(status).toBe(0);
|
|
64
|
+
expect(stdout.trim().split("\n")).toEqual(["hello AAAA", "true foobar", "hey yo true"]);
|
|
65
|
+
});
|
|
55
66
|
it("wraps fs operations in promises", () => {
|
|
56
67
|
const target = join(workdir, `promise_${Math.random().toString(36).slice(2)}.txt`);
|
|
57
68
|
const source = `
|
|
@@ -94,6 +105,43 @@ describeWithClang("node compatibility modules", () => {
|
|
|
94
105
|
expect(status).toBe(0);
|
|
95
106
|
expect(stdout.trim().split("\n")).toEqual(["data hello", "end", "upper ABC", "piped"]);
|
|
96
107
|
});
|
|
108
|
+
it("supports named imports from stream", () => {
|
|
109
|
+
const source = `
|
|
110
|
+
import { PassThrough, Readable, Transform, Writable } from "stream";
|
|
111
|
+
const readable = new Readable();
|
|
112
|
+
readable.on("data", (chunk: string) => console.log("data", chunk));
|
|
113
|
+
readable.push("hello");
|
|
114
|
+
readable.push(null);
|
|
115
|
+
const transform = new Transform({ transform(chunk: string, enc: string, cb: (err: unknown, out: string) => void) {
|
|
116
|
+
cb(null, chunk.toUpperCase());
|
|
117
|
+
} });
|
|
118
|
+
transform.on("data", (chunk: string) => console.log("upper", chunk));
|
|
119
|
+
transform.write("abc");
|
|
120
|
+
const pass = new PassThrough();
|
|
121
|
+
pass.on("data", (chunk: string) => console.log("pass", chunk));
|
|
122
|
+
pass.write("through");
|
|
123
|
+
const sink = new Writable();
|
|
124
|
+
sink.on("finish", () => console.log("finish"));
|
|
125
|
+
sink.end();
|
|
126
|
+
`;
|
|
127
|
+
const { status, stdout } = run(source);
|
|
128
|
+
expect(status).toBe(0);
|
|
129
|
+
expect(stdout.trim().split("\n")).toEqual(["data hello", "upper ABC", "pass through", "finish"]);
|
|
130
|
+
});
|
|
131
|
+
it("flushes chunks buffered before a data listener attaches", () => {
|
|
132
|
+
const source = `
|
|
133
|
+
const readable = new Readable();
|
|
134
|
+
readable.push("early");
|
|
135
|
+
readable.on("data", (chunk: string) => console.log("data", chunk));
|
|
136
|
+
readable.push(null);
|
|
137
|
+
|
|
138
|
+
const from = Readable.from(["a", "b"]);
|
|
139
|
+
from.on("data", (chunk: string) => console.log("from", chunk));
|
|
140
|
+
`;
|
|
141
|
+
const { status, stdout } = run(source);
|
|
142
|
+
expect(status).toBe(0);
|
|
143
|
+
expect(stdout.trim().split("\n")).toEqual(["data early", "from a", "from b"]);
|
|
144
|
+
});
|
|
97
145
|
it("exchanges data over a TCP server and client", () => {
|
|
98
146
|
const source = `
|
|
99
147
|
const server = net.createServer((socket: any) => {
|
|
@@ -116,6 +164,29 @@ describeWithClang("node compatibility modules", () => {
|
|
|
116
164
|
expect(status).toBe(0);
|
|
117
165
|
expect(stdout.trim().split("\n")).toEqual(["client echo:ping", "end"]);
|
|
118
166
|
});
|
|
167
|
+
it("supports named imports from node:net", () => {
|
|
168
|
+
const source = `
|
|
169
|
+
import { createServer, connect } from "node:net";
|
|
170
|
+
const server = createServer((socket: any) => {
|
|
171
|
+
socket.on("data", (data: string) => {
|
|
172
|
+
socket.write("echo:" + data);
|
|
173
|
+
socket.end();
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
server.listen(0, () => {
|
|
177
|
+
const client = connect(server.address().port, "127.0.0.1");
|
|
178
|
+
client.on("data", (data: string) => console.log("client", data));
|
|
179
|
+
client.on("end", () => {
|
|
180
|
+
console.log("end");
|
|
181
|
+
server.close();
|
|
182
|
+
});
|
|
183
|
+
client.write("ping");
|
|
184
|
+
});
|
|
185
|
+
`;
|
|
186
|
+
const { status, stdout } = run(source);
|
|
187
|
+
expect(status).toBe(0);
|
|
188
|
+
expect(stdout.trim().split("\n")).toEqual(["client echo:ping", "end"]);
|
|
189
|
+
});
|
|
119
190
|
it("exchanges a datagram over UDP", () => {
|
|
120
191
|
const source = `
|
|
121
192
|
const server = dgram.createSocket("udp4");
|
|
@@ -176,9 +247,54 @@ describeWithClang("node compatibility modules", () => {
|
|
|
176
247
|
"post hello /submit payload",
|
|
177
248
|
]);
|
|
178
249
|
});
|
|
250
|
+
it("supports named imports from node:http", () => {
|
|
251
|
+
const source = `
|
|
252
|
+
import { createServer, get } from "node:http";
|
|
253
|
+
const server = createServer((req: any, res: any) => {
|
|
254
|
+
res.writeHead(200, { "Content-Type": "text/plain" });
|
|
255
|
+
res.end("hello " + req.url);
|
|
256
|
+
});
|
|
257
|
+
server.listen(0, () => {
|
|
258
|
+
const port = server.address().port;
|
|
259
|
+
get("http://127.0.0.1:" + port + "/world", (res: any) => {
|
|
260
|
+
let body = "";
|
|
261
|
+
console.log("status", res.statusCode);
|
|
262
|
+
res.on("data", (chunk: string) => { body += chunk; });
|
|
263
|
+
res.on("end", () => {
|
|
264
|
+
console.log("get", body);
|
|
265
|
+
server.close();
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
`;
|
|
270
|
+
const { status, stdout } = run(source);
|
|
271
|
+
expect(status).toBe(0);
|
|
272
|
+
expect(stdout.trim().split("\n")).toEqual(["status 200", "get hello /world"]);
|
|
273
|
+
});
|
|
274
|
+
it("supports named imports from dgram", () => {
|
|
275
|
+
const source = `
|
|
276
|
+
import { createSocket } from "node:dgram";
|
|
277
|
+
const server = createSocket("udp4");
|
|
278
|
+
server.on("message", (msg: string, rinfo: any) => {
|
|
279
|
+
server.send("pong:" + msg, rinfo.port, rinfo.address);
|
|
280
|
+
});
|
|
281
|
+
server.bind(0, () => {
|
|
282
|
+
const client = createSocket("udp4");
|
|
283
|
+
client.on("message", (msg: string) => {
|
|
284
|
+
console.log(msg);
|
|
285
|
+
client.close();
|
|
286
|
+
server.close();
|
|
287
|
+
});
|
|
288
|
+
client.send("ping", server.address().port, "127.0.0.1");
|
|
289
|
+
});
|
|
290
|
+
`;
|
|
291
|
+
const { status, stdout } = run(source);
|
|
292
|
+
expect(status).toBe(0);
|
|
293
|
+
expect(stdout.trim()).toBe("pong:ping");
|
|
294
|
+
});
|
|
179
295
|
it("provides a standalone EventEmitter from events", () => {
|
|
180
296
|
const source = `
|
|
181
|
-
import { EventEmitter } from "events";
|
|
297
|
+
import { EventEmitter, addAbortListener, getEventListeners } from "events";
|
|
182
298
|
const em = new EventEmitter();
|
|
183
299
|
let count = 0;
|
|
184
300
|
let onceCount = 0;
|
|
@@ -195,11 +311,19 @@ describeWithClang("node compatibility modules", () => {
|
|
|
195
311
|
let seen = 0;
|
|
196
312
|
global.on("x", () => { seen++; });
|
|
197
313
|
global.emit("x");
|
|
198
|
-
console.log("global", seen);
|
|
314
|
+
console.log("global", seen, EventEmitter.listenerCount(global, "x"));
|
|
315
|
+
// addAbortListener registers on the signal's abort listeners.
|
|
316
|
+
const signal: any = {};
|
|
317
|
+
let aborted = 0;
|
|
318
|
+
addAbortListener(signal, () => { aborted++; });
|
|
319
|
+
const abortListeners = getEventListeners(signal, "abort");
|
|
320
|
+
const first: any = abortListeners[0];
|
|
321
|
+
first();
|
|
322
|
+
console.log("abort", aborted);
|
|
199
323
|
`;
|
|
200
324
|
const { status, stdout } = run(source);
|
|
201
325
|
expect(status).toBe(0);
|
|
202
|
-
expect(stdout.trim().split("\n")).toEqual(["before 2", "after 2 1 1", "names 0", "global 1"]);
|
|
326
|
+
expect(stdout.trim().split("\n")).toEqual(["before 2", "after 2 1 1", "names 0", "global 1 1", "abort 1"]);
|
|
203
327
|
});
|
|
204
328
|
it("implements util helpers", () => {
|
|
205
329
|
const source = `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-modules.test.js","sourceRoot":"","sources":["../../../tests/e2e/node-modules.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,iBAAiB,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEhE,iBAAiB,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACnD,IAAI,OAAe,CAAC;IACpB,IAAI,QAAgB,CAAC;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAC5D,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,SAAS,GAAG,CAAC,MAAc;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjF,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnE,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9G,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnG,CAAC;IAED,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG;;;;;;;;;KASd,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACxB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG;;;0BAGO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;sCACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;kCAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;mBAErC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;KAGpC,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;KAmBd,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;KAgBd,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;KAcd,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8Bd,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACxC,YAAY;YACZ,mBAAmB;YACnB,4BAA4B;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"node-modules.test.js","sourceRoot":"","sources":["../../../tests/e2e/node-modules.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Node.js `assert` module for xbintsc.
|
|
3
|
+
*
|
|
4
|
+
* Implements the commonly used assertion surface on top of the runtime's
|
|
5
|
+
* exception machinery: a failed assertion throws an `AssertionError`, exactly
|
|
6
|
+
* like Node. `node:test` catches that error and reports the test as failed.
|
|
7
|
+
*
|
|
8
|
+
* All entry points share the namespace dispatcher `xt_assert_static`, so both
|
|
9
|
+
* `import assert from "node:assert"` (`assert.strictEqual(...)`) and named
|
|
10
|
+
* imports (`import { strictEqual } from "assert"`) work.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
#include "../node_common.h"
|
|
14
|
+
|
|
15
|
+
#include <string.h>
|
|
16
|
+
|
|
17
|
+
/* An `AssertionError` is an ordinary Error-family object; set the error kind so
|
|
18
|
+
* `xt_to_string`/inspection formats it as `AssertionError: message`. */
|
|
19
|
+
static void assert_throw(xt_value actual, xt_value expected, xt_value message) {
|
|
20
|
+
xt_value error = xt_object_new();
|
|
21
|
+
((xt_object *)XT_GET_PTR(error))->header.kind = XT_OBJECT_KIND_ERROR;
|
|
22
|
+
xt_node_set(error, "name", xt_string_from_cstr("AssertionError"));
|
|
23
|
+
xt_node_set(error, "message", message);
|
|
24
|
+
xt_node_set(error, "code", xt_string_from_cstr("ERR_ASSERTION"));
|
|
25
|
+
if (!xt_truthy(xt_is_nullish(actual))) xt_node_set(error, "actual", actual);
|
|
26
|
+
if (!xt_truthy(xt_is_nullish(expected))) xt_node_set(error, "expected", expected);
|
|
27
|
+
xt_throw(error);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* `message` is the user supplied message (or undefined); otherwise `fallback`
|
|
31
|
+
* is used. */
|
|
32
|
+
static xt_value assert_message(xt_value message, const char *fallback) {
|
|
33
|
+
if (!xt_truthy(xt_is_nullish(message))) return xt_to_string(message);
|
|
34
|
+
return xt_string_from_cstr(fallback);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static xt_value assert_join3(xt_value a, const char *middle, xt_value b) {
|
|
38
|
+
xt_value left = xt_add(a, xt_string_from_cstr(middle));
|
|
39
|
+
return xt_add(left, xt_to_string(b));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* -- deep equality -------------------------------------------------------- */
|
|
43
|
+
|
|
44
|
+
static int assert_deep_equal(xt_value a, xt_value b, int depth) {
|
|
45
|
+
if (depth > 32) return xt_truthy(xt_seq(a, b));
|
|
46
|
+
if (XT_IS_ARRAY(a) && XT_IS_ARRAY(b)) {
|
|
47
|
+
int32_t count = (int32_t)xt_to_number(xt_array_length(a));
|
|
48
|
+
if (count != (int32_t)xt_to_number(xt_array_length(b))) return 0;
|
|
49
|
+
for (int32_t i = 0; i < count; i++) {
|
|
50
|
+
if (!assert_deep_equal(xt_array_get(a, xt_number(i)), xt_array_get(b, xt_number(i)), depth + 1)) return 0;
|
|
51
|
+
}
|
|
52
|
+
return 1;
|
|
53
|
+
}
|
|
54
|
+
if (XT_IS_OBJECT(a) && XT_IS_OBJECT(b)) {
|
|
55
|
+
xt_value keysA = xt_object_keys(a);
|
|
56
|
+
xt_value keysB = xt_object_keys(b);
|
|
57
|
+
int32_t count = (int32_t)xt_to_number(xt_array_length(keysA));
|
|
58
|
+
if (count != (int32_t)xt_to_number(xt_array_length(keysB))) return 0;
|
|
59
|
+
for (int32_t i = 0; i < count; i++) {
|
|
60
|
+
xt_value key = xt_array_get(keysA, xt_number(i));
|
|
61
|
+
if (!xt_truthy(xt_object_has(b, key))) return 0;
|
|
62
|
+
if (!assert_deep_equal(xt_object_get(a, key), xt_object_get(b, key), depth + 1)) return 0;
|
|
63
|
+
}
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
return xt_truthy(xt_seq(a, b));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* -- assertions ----------------------------------------------------------- */
|
|
70
|
+
|
|
71
|
+
static xt_value assert_ok(int32_t argc, xt_value *argv) {
|
|
72
|
+
xt_value value = xt_arg(argc, argv, 0);
|
|
73
|
+
if (!xt_truthy(value)) {
|
|
74
|
+
assert_throw(value, XT_UNDEFINED, assert_message(xt_arg(argc, argv, 1), "The expression evaluated to a falsy value"));
|
|
75
|
+
}
|
|
76
|
+
return xt_undefined();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static xt_value assert_equality(int32_t argc, xt_value *argv, int strict, const char *headline, const char *operator) {
|
|
80
|
+
xt_value actual = xt_arg(argc, argv, 0);
|
|
81
|
+
xt_value expected = xt_arg(argc, argv, 1);
|
|
82
|
+
xt_value message = xt_arg(argc, argv, 2);
|
|
83
|
+
int equal = strict ? xt_truthy(xt_seq(actual, expected)) : xt_truthy(xt_eq(actual, expected));
|
|
84
|
+
if (equal) return xt_undefined();
|
|
85
|
+
xt_value text = xt_string_from_cstr(headline);
|
|
86
|
+
text = xt_add(text, xt_to_string(actual));
|
|
87
|
+
text = xt_add(text, xt_string_from_cstr(operator));
|
|
88
|
+
text = xt_add(text, xt_to_string(expected));
|
|
89
|
+
text = xt_add(text, xt_string_from_cstr("\n"));
|
|
90
|
+
if (!xt_truthy(xt_is_nullish(message))) text = xt_to_string(message);
|
|
91
|
+
assert_throw(actual, expected, text);
|
|
92
|
+
return xt_undefined();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
static xt_value assert_deep(int32_t argc, xt_value *argv, int negate) {
|
|
96
|
+
xt_value actual = xt_arg(argc, argv, 0);
|
|
97
|
+
xt_value expected = xt_arg(argc, argv, 1);
|
|
98
|
+
xt_value message = xt_arg(argc, argv, 2);
|
|
99
|
+
int equal = assert_deep_equal(actual, expected, 0);
|
|
100
|
+
if (negate) equal = !equal;
|
|
101
|
+
if (equal) return xt_undefined();
|
|
102
|
+
xt_value text = xt_string_from_cstr(
|
|
103
|
+
negate ? "Expected values to be strictly not deep-equal:\n\n" : "Expected values to be strictly deep-equal:\n\n");
|
|
104
|
+
text = assert_join3(text, " !== ", expected);
|
|
105
|
+
text = xt_add(text, xt_string_from_cstr("\n"));
|
|
106
|
+
if (!xt_truthy(xt_is_nullish(message))) text = xt_to_string(message);
|
|
107
|
+
assert_throw(actual, expected, text);
|
|
108
|
+
return xt_undefined();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static xt_value assert_fail(int32_t argc, xt_value *argv) {
|
|
112
|
+
xt_value message = xt_arg(argc, argv, 0);
|
|
113
|
+
assert_throw(XT_UNDEFINED, XT_UNDEFINED, assert_message(message, "Failed"));
|
|
114
|
+
return xt_undefined();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
static xt_value assert_throws(int32_t argc, xt_value *argv, int negate) {
|
|
118
|
+
xt_value fn = xt_arg(argc, argv, 0);
|
|
119
|
+
xt_value message = xt_arg(argc, argv, 2);
|
|
120
|
+
if (!XT_IS_FUNCTION(fn)) {
|
|
121
|
+
assert_throw(XT_UNDEFINED, XT_UNDEFINED,
|
|
122
|
+
assert_message(message, negate ? "Expected a function" : "Expected a function to throw"));
|
|
123
|
+
}
|
|
124
|
+
void *frame = xt_try_enter();
|
|
125
|
+
if (xt_try_setjmp(frame) == 0) {
|
|
126
|
+
xt_closure_call(fn, 0, NULL);
|
|
127
|
+
xt_try_leave(frame);
|
|
128
|
+
if (negate) return xt_undefined();
|
|
129
|
+
assert_throw(XT_UNDEFINED, XT_UNDEFINED,
|
|
130
|
+
assert_message(message, "Missing expected exception"));
|
|
131
|
+
}
|
|
132
|
+
xt_value error = xt_try_exception(frame);
|
|
133
|
+
xt_try_leave(frame);
|
|
134
|
+
if (negate) {
|
|
135
|
+
xt_value text = xt_string_from_cstr("Got unwanted exception: ");
|
|
136
|
+
text = xt_add(text, xt_to_string(error));
|
|
137
|
+
assert_throw(XT_UNDEFINED, XT_UNDEFINED, xt_truthy(xt_is_nullish(message)) ? text : xt_to_string(message));
|
|
138
|
+
}
|
|
139
|
+
return xt_undefined();
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
static xt_value assert_if_error(int32_t argc, xt_value *argv) {
|
|
143
|
+
xt_value value = xt_arg(argc, argv, 0);
|
|
144
|
+
if (!xt_truthy(xt_is_nullish(value))) {
|
|
145
|
+
if (XT_IS_OBJECT(value)) xt_throw(value);
|
|
146
|
+
assert_throw(XT_UNDEFINED, XT_UNDEFINED, xt_to_string(value));
|
|
147
|
+
}
|
|
148
|
+
return xt_undefined();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
static xt_value assert_match(int32_t argc, xt_value *argv, int negate) {
|
|
152
|
+
xt_value value = xt_arg(argc, argv, 0);
|
|
153
|
+
xt_value pattern = xt_arg(argc, argv, 1);
|
|
154
|
+
xt_value message = xt_arg(argc, argv, 2);
|
|
155
|
+
xt_value text = xt_to_string(value);
|
|
156
|
+
int matched = 0;
|
|
157
|
+
if (xt_truthy(xt_is_nullish(pattern))) {
|
|
158
|
+
matched = 0;
|
|
159
|
+
} else if (XT_IS_STRING(pattern)) {
|
|
160
|
+
matched = strstr(xt_string_data(text), xt_string_data(pattern)) != NULL;
|
|
161
|
+
} else {
|
|
162
|
+
/* A RegExp (or anything else) is delegated to String.prototype.match. */
|
|
163
|
+
xt_value key = xt_string_from_cstr("match");
|
|
164
|
+
xt_value result = xt_call_method(text, key, 1, &pattern);
|
|
165
|
+
matched = !xt_truthy(xt_is_nullish(result));
|
|
166
|
+
}
|
|
167
|
+
if (negate) matched = !matched;
|
|
168
|
+
if (matched) return xt_undefined();
|
|
169
|
+
assert_throw(value, pattern, assert_message(message, "The input did not match the regular expression"));
|
|
170
|
+
return xt_undefined();
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
xt_value xt_assert_static(xt_value name, int32_t argc, xt_value *argv) {
|
|
174
|
+
const char *fn = xt_string_data(name);
|
|
175
|
+
if (!fn) return xt_undefined();
|
|
176
|
+
if (strcmp(fn, "ok") == 0) return assert_ok(argc, argv);
|
|
177
|
+
if (strcmp(fn, "fail") == 0) return assert_fail(argc, argv);
|
|
178
|
+
if (strcmp(fn, "equal") == 0) return assert_equality(argc, argv, 0, "Expected values to be loosely equal:\n\n", " != ");
|
|
179
|
+
if (strcmp(fn, "notEqual") == 0) {
|
|
180
|
+
/* `notEqual` succeeds when the values differ. */
|
|
181
|
+
if (xt_truthy(xt_eq(xt_arg(argc, argv, 0), xt_arg(argc, argv, 1)))) {
|
|
182
|
+
assert_throw(xt_arg(argc, argv, 0), xt_arg(argc, argv, 1),
|
|
183
|
+
assert_message(xt_arg(argc, argv, 2), "Expected values to not be loosely equal"));
|
|
184
|
+
}
|
|
185
|
+
return xt_undefined();
|
|
186
|
+
}
|
|
187
|
+
if (strcmp(fn, "strictEqual") == 0) return assert_equality(argc, argv, 1, "Expected values to be strictly equal:\n\n", " !== ");
|
|
188
|
+
if (strcmp(fn, "notStrictEqual") == 0) {
|
|
189
|
+
if (xt_truthy(xt_seq(xt_arg(argc, argv, 0), xt_arg(argc, argv, 1)))) {
|
|
190
|
+
assert_throw(xt_arg(argc, argv, 0), xt_arg(argc, argv, 1),
|
|
191
|
+
assert_message(xt_arg(argc, argv, 2), "Expected values to be strictly not equal"));
|
|
192
|
+
}
|
|
193
|
+
return xt_undefined();
|
|
194
|
+
}
|
|
195
|
+
if (strcmp(fn, "deepEqual") == 0 || strcmp(fn, "deepStrictEqual") == 0) return assert_deep(argc, argv, 0);
|
|
196
|
+
if (strcmp(fn, "notDeepEqual") == 0 || strcmp(fn, "notDeepStrictEqual") == 0) return assert_deep(argc, argv, 1);
|
|
197
|
+
if (strcmp(fn, "throws") == 0) return assert_throws(argc, argv, 0);
|
|
198
|
+
if (strcmp(fn, "doesNotThrow") == 0) return assert_throws(argc, argv, 1);
|
|
199
|
+
if (strcmp(fn, "ifError") == 0) return assert_if_error(argc, argv);
|
|
200
|
+
if (strcmp(fn, "match") == 0) return assert_match(argc, argv, 0);
|
|
201
|
+
if (strcmp(fn, "doesNotMatch") == 0) return assert_match(argc, argv, 1);
|
|
202
|
+
if (strcmp(fn, "rejects") == 0 || strcmp(fn, "doesNotReject") == 0) {
|
|
203
|
+
/* No async rejection surface yet: resolve immediately. */
|
|
204
|
+
return xt_promise_resolve(xt_undefined());
|
|
205
|
+
}
|
|
206
|
+
return xt_undefined();
|
|
207
|
+
}
|