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.
Files changed (97) hide show
  1. package/README.md +14 -11
  2. package/README.zh-CN.md +13 -11
  3. package/dist/src/codegen/generator/calls/invocation.js +3 -0
  4. package/dist/src/codegen/generator/calls/invocation.js.map +1 -1
  5. package/dist/src/codegen/generator/context.d.ts +5 -0
  6. package/dist/src/codegen/generator/context.js +18 -2
  7. package/dist/src/codegen/generator/context.js.map +1 -1
  8. package/dist/src/codegen/generator/expressions/primary.js +17 -0
  9. package/dist/src/codegen/generator/expressions/primary.js.map +1 -1
  10. package/dist/src/codegen/generator/state.js +3 -0
  11. package/dist/src/codegen/generator/state.js.map +1 -1
  12. package/dist/src/codegen/generator/tables.js +3 -0
  13. package/dist/src/codegen/generator/tables.js.map +1 -1
  14. package/dist/src/driver/index.d.ts +1 -1
  15. package/dist/src/driver/index.js +1 -1
  16. package/dist/src/driver/index.js.map +1 -1
  17. package/dist/src/driver/paths.d.ts +7 -0
  18. package/dist/src/driver/paths.js +9 -0
  19. package/dist/src/driver/paths.js.map +1 -1
  20. package/dist/src/extensions/node/assert/index.d.ts +10 -0
  21. package/dist/src/extensions/node/assert/index.js +37 -0
  22. package/dist/src/extensions/node/assert/index.js.map +1 -0
  23. package/dist/src/extensions/node/buffer/index.js +16 -0
  24. package/dist/src/extensions/node/buffer/index.js.map +1 -1
  25. package/dist/src/extensions/node/dgram/index.js +4 -0
  26. package/dist/src/extensions/node/dgram/index.js.map +1 -1
  27. package/dist/src/extensions/node/events/index.js +1 -1
  28. package/dist/src/extensions/node/events/index.js.map +1 -1
  29. package/dist/src/extensions/node/fs/index.js +3 -1
  30. package/dist/src/extensions/node/fs/index.js.map +1 -1
  31. package/dist/src/extensions/node/fs/streams.d.ts +6 -0
  32. package/dist/src/extensions/node/fs/streams.js +9 -0
  33. package/dist/src/extensions/node/fs/streams.js.map +1 -0
  34. package/dist/src/extensions/node/http/index.js +3 -0
  35. package/dist/src/extensions/node/http/index.js.map +1 -1
  36. package/dist/src/extensions/node/index.js +10 -0
  37. package/dist/src/extensions/node/index.js.map +1 -1
  38. package/dist/src/extensions/node/net/index.js +7 -0
  39. package/dist/src/extensions/node/net/index.js.map +1 -1
  40. package/dist/src/extensions/node/stream/index.js +8 -0
  41. package/dist/src/extensions/node/stream/index.js.map +1 -1
  42. package/dist/src/extensions/node/stream-promises/index.d.ts +9 -0
  43. package/dist/src/extensions/node/stream-promises/index.js +16 -0
  44. package/dist/src/extensions/node/stream-promises/index.js.map +1 -0
  45. package/dist/src/extensions/node/test/index.d.ts +10 -0
  46. package/dist/src/extensions/node/test/index.js +30 -0
  47. package/dist/src/extensions/node/test/index.js.map +1 -0
  48. package/dist/src/extensions/node/worker_threads/index.d.ts +10 -0
  49. package/dist/src/extensions/node/worker_threads/index.js +22 -0
  50. package/dist/src/extensions/node/worker_threads/index.js.map +1 -0
  51. package/dist/src/extensions/node/zlib/index.d.ts +8 -0
  52. package/dist/src/extensions/node/zlib/index.js +15 -0
  53. package/dist/src/extensions/node/zlib/index.js.map +1 -0
  54. package/dist/src/extensions/registry.d.ts +6 -0
  55. package/dist/src/extensions/registry.js.map +1 -1
  56. package/dist/tests/driver/paths.test.js +11 -1
  57. package/dist/tests/driver/paths.test.js.map +1 -1
  58. package/dist/tests/e2e/compile-node.test.js +67 -1
  59. package/dist/tests/e2e/compile-node.test.js.map +1 -1
  60. package/dist/tests/e2e/compile.test.js +12 -0
  61. package/dist/tests/e2e/compile.test.js.map +1 -1
  62. package/dist/tests/e2e/node-modules.test.js +127 -3
  63. package/dist/tests/e2e/node-modules.test.js.map +1 -1
  64. package/package.json +1 -1
  65. package/runtime/ext_node/assert/assert.c +207 -0
  66. package/runtime/ext_node/crypto/crypto.c +230 -14
  67. package/runtime/ext_node/fs/streams.c +31 -0
  68. package/runtime/ext_node/stream/pipeline.c +147 -0
  69. package/runtime/ext_node/stream/stream.c +20 -0
  70. package/runtime/ext_node/test/test.c +102 -0
  71. package/runtime/ext_node/worker_threads/worker_threads.c +206 -0
  72. package/runtime/ext_node/zlib/zlib.c +19 -0
  73. package/runtime/xt_io.c +86 -0
  74. package/runtime/xt_stdlib/dispatch.inc +9 -1
  75. package/scripts/package-release.ts +11 -3
  76. package/src/codegen/generator/calls/invocation.ts +2 -0
  77. package/src/codegen/generator/context.ts +19 -2
  78. package/src/codegen/generator/expressions/primary.ts +17 -0
  79. package/src/codegen/generator/state.ts +3 -0
  80. package/src/codegen/generator/tables.ts +3 -0
  81. package/src/driver/index.ts +1 -1
  82. package/src/driver/paths.ts +14 -0
  83. package/src/extensions/node/assert/index.ts +44 -0
  84. package/src/extensions/node/buffer/index.ts +19 -0
  85. package/src/extensions/node/dgram/index.ts +6 -0
  86. package/src/extensions/node/events/index.ts +1 -1
  87. package/src/extensions/node/fs/index.ts +3 -1
  88. package/src/extensions/node/fs/streams.ts +11 -0
  89. package/src/extensions/node/http/index.ts +8 -0
  90. package/src/extensions/node/index.ts +10 -0
  91. package/src/extensions/node/net/index.ts +10 -0
  92. package/src/extensions/node/stream/index.ts +10 -0
  93. package/src/extensions/node/stream-promises/index.ts +18 -0
  94. package/src/extensions/node/test/index.ts +35 -0
  95. package/src/extensions/node/worker_threads/index.ts +26 -0
  96. package/src/extensions/node/zlib/index.ts +17 -0
  97. package/src/extensions/registry.ts +6 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Node's `assert` module.
3
+ *
4
+ * All assertions dispatch through `runtime/ext_node/assert` via the `assert`
5
+ * namespace (`xt_assert_static`). `import assert from "node:assert"` binds the
6
+ * namespace, so `assert.strictEqual(...)` works, and named imports such as
7
+ * `import { strictEqual } from "assert"` lower to the same dispatcher.
8
+ */
9
+ import { resolveFrom } from "../module.js";
10
+ const methods = [
11
+ "ok",
12
+ "fail",
13
+ "equal",
14
+ "notEqual",
15
+ "strictEqual",
16
+ "notStrictEqual",
17
+ "deepEqual",
18
+ "notDeepEqual",
19
+ "deepStrictEqual",
20
+ "notDeepStrictEqual",
21
+ "throws",
22
+ "doesNotThrow",
23
+ "rejects",
24
+ "doesNotReject",
25
+ "match",
26
+ "doesNotMatch",
27
+ "ifError",
28
+ ];
29
+ const exports = Object.fromEntries(methods.map((method) => [method, { namespace: "assert", method }]));
30
+ export const assertModule = {
31
+ name: "assert",
32
+ namespace: "assert",
33
+ runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/assert/assert.c")],
34
+ builtins: () => ({}),
35
+ exports: () => exports,
36
+ };
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/assert/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG;IACd,IAAI;IACJ,MAAM;IACN,OAAO;IACP,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,oBAAoB;IACpB,QAAQ;IACR,cAAc;IACd,SAAS;IACT,eAAe;IACf,OAAO;IACP,cAAc;IACd,SAAS;CACD,CAAC;AAEX,MAAM,OAAO,GAAkB,MAAM,CAAC,WAAW,CAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -7,10 +7,26 @@
7
7
  * without a dedicated binary value type in the compiler.
8
8
  */
9
9
  import { resolveFrom } from "../module.js";
10
+ const statics = [
11
+ "from",
12
+ "of",
13
+ "alloc",
14
+ "allocUnsafe",
15
+ "allocUnsafeSlow",
16
+ "isBuffer",
17
+ "byteLength",
18
+ "concat",
19
+ "compare",
20
+ ];
21
+ const exports = {
22
+ Buffer: { symbol: "xt_buffer_ctor", isConstructor: true },
23
+ ...Object.fromEntries(statics.map((method) => [method, { namespace: "Buffer", method }])),
24
+ };
10
25
  export const bufferModule = {
11
26
  name: "buffer",
12
27
  namespace: "Buffer",
13
28
  runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/buffer/buffer.c")],
14
29
  builtins: () => ({}),
30
+ exports: () => exports,
15
31
  };
16
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/buffer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/buffer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG;IACd,MAAM;IACN,IAAI;IACJ,OAAO;IACP,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,OAAO,GAAkB;IAC7B,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC1F,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -5,10 +5,14 @@
5
5
  * emit `message` events with an `rinfo` describing the sender.
6
6
  */
7
7
  import { resolveFrom } from "../module.js";
8
+ const exports = {
9
+ createSocket: { namespace: "dgram", method: "createSocket" },
10
+ };
8
11
  export const dgramModule = {
9
12
  name: "dgram",
10
13
  namespace: "dgram",
11
14
  runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/dgram/dgram.c")],
12
15
  builtins: () => ({}),
16
+ exports: () => exports,
13
17
  };
14
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/dgram/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,4CAA4C,CAAC,CAAC;IAClG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/dgram/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAkB;IAC7B,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,4CAA4C,CAAC,CAAC;IAClG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * The implementation lives in `runtime/ext_node/events/events.c`.
8
8
  */
9
9
  import { resolveFrom } from "../module.js";
10
- const methods = ["listenerCount", "getEventListeners", "getMaxListeners", "setMaxListeners", "once"];
10
+ const methods = ["listenerCount", "getEventListeners", "getMaxListeners", "setMaxListeners", "once", "addAbortListener"];
11
11
  const exports = {
12
12
  EventEmitter: { symbol: "xt_event_emitter_ctor", isConstructor: true },
13
13
  ...Object.fromEntries(methods.map((method) => [method, { namespace: "events", method }])),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,CAAU,CAAC;AAE9G,MAAM,OAAO,GAAkB;IAC7B,YAAY,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,aAAa,EAAE,IAAI,EAAE;IACtE,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC1F,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,CAAU,CAAC;AAElI,MAAM,OAAO,GAAkB;IAC7B,YAAY,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,aAAa,EAAE,IAAI,EAAE;IACtE,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC1F,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -8,13 +8,15 @@ import { resolveFrom } from "../module.js";
8
8
  import { readFileBuiltins } from "./read-file.js";
9
9
  import { writeFileBuiltins } from "./write-file.js";
10
10
  import { fsOpsBuiltins } from "./fs-ops.js";
11
+ import { fsStreamBuiltins } from "./streams.js";
11
12
  export const fsModule = {
12
13
  name: "fs",
13
14
  runtimeSources: () => [
14
15
  resolveFrom(import.meta.url, "../../../../runtime/ext_node/fs/read_file.c"),
15
16
  resolveFrom(import.meta.url, "../../../../runtime/ext_node/fs/write_file.c"),
16
17
  resolveFrom(import.meta.url, "../../../../runtime/ext_node/fs/fs_ops.c"),
18
+ resolveFrom(import.meta.url, "../../../../runtime/ext_node/fs/streams.c"),
17
19
  ],
18
- builtins: () => ({ ...readFileBuiltins, ...writeFileBuiltins, ...fsOpsBuiltins }),
20
+ builtins: () => ({ ...readFileBuiltins, ...writeFileBuiltins, ...fsOpsBuiltins, ...fsStreamBuiltins }),
19
21
  };
20
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/fs/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,IAAI,EAAE,IAAI;IACV,cAAc,EAAE,GAAG,EAAE,CAAC;QACpB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,6CAA6C,CAAC;QAC3E,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC;QAC5E,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC;KACzE;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,iBAAiB,EAAE,GAAG,aAAa,EAAE,CAAC;CAClF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/fs/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,IAAI,EAAE,IAAI;IACV,cAAc,EAAE,GAAG,EAAE,CAAC;QACpB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,6CAA6C,CAAC;QAC3E,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC;QAC5E,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC;QACxE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,2CAA2C,CAAC;KAC1E;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,iBAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,gBAAgB,EAAE,CAAC;CACvG,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Builtins for Node's `fs` streaming factories. xbintsc has no asynchronous
3
+ * streaming, so these return descriptor objects consumed by `stream/promises`.
4
+ */
5
+ import type { BuiltinFunction } from "../../registry.js";
6
+ export declare const fsStreamBuiltins: Readonly<Record<string, BuiltinFunction>>;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Builtins for Node's `fs` streaming factories. xbintsc has no asynchronous
3
+ * streaming, so these return descriptor objects consumed by `stream/promises`.
4
+ */
5
+ export const fsStreamBuiltins = {
6
+ createReadStream: { symbol: "xt_node_create_read_stream" },
7
+ createWriteStream: { symbol: "xt_node_create_write_stream" },
8
+ };
9
+ //# sourceMappingURL=streams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../../../src/extensions/node/fs/streams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAA8C;IACzE,gBAAgB,EAAE,EAAE,MAAM,EAAE,4BAA4B,EAAE;IAC1D,iBAAiB,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;CAC7D,CAAC"}
@@ -7,6 +7,8 @@
7
7
  * `runtime/ext_node/http/http.c`.
8
8
  */
9
9
  import { resolveFrom } from "../module.js";
10
+ const methods = ["createServer", "request", "get"];
11
+ const exports = Object.fromEntries(methods.map((method) => [method, { namespace: "http", method }]));
10
12
  export const httpModule = {
11
13
  name: "http",
12
14
  namespace: "http",
@@ -15,5 +17,6 @@ export const httpModule = {
15
17
  resolveFrom(import.meta.url, "../../../../runtime/ext_node/http/http.c"),
16
18
  ],
17
19
  builtins: () => ({}),
20
+ exports: () => exports,
18
21
  };
19
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,GAAG,EAAE,CAAC;QACpB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC;QACtE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC;KACzE;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;AAE5D,MAAM,OAAO,GAAkB,MAAM,CAAC,WAAW,CAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACjE,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,GAAG,EAAE,CAAC;QACpB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC;QACtE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC;KACzE;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -16,6 +16,9 @@ import { osModule } from "./os/index.js";
16
16
  import { processModule } from "./process/index.js";
17
17
  import { bufferModule } from "./buffer/index.js";
18
18
  import { streamModule } from "./stream/index.js";
19
+ import { streamPromisesModule } from "./stream-promises/index.js";
20
+ import { zlibModule } from "./zlib/index.js";
21
+ import { workerThreadsModule } from "./worker_threads/index.js";
19
22
  import { netModule } from "./net/index.js";
20
23
  import { dgramModule } from "./dgram/index.js";
21
24
  import { httpModule } from "./http/index.js";
@@ -25,6 +28,8 @@ import { childProcessModule } from "./child_process/index.js";
25
28
  import { eventsModule } from "./events/index.js";
26
29
  import { utilModule } from "./util/index.js";
27
30
  import { querystringModule } from "./querystring/index.js";
31
+ import { assertModule } from "./assert/index.js";
32
+ import { testModule } from "./test/index.js";
28
33
  /** Every Node module the extension currently provides. */
29
34
  const modules = [
30
35
  fsModule,
@@ -34,6 +39,9 @@ const modules = [
34
39
  processModule,
35
40
  bufferModule,
36
41
  streamModule,
42
+ streamPromisesModule,
43
+ zlibModule,
44
+ workerThreadsModule,
37
45
  netModule,
38
46
  dgramModule,
39
47
  httpModule,
@@ -43,6 +51,8 @@ const modules = [
43
51
  eventsModule,
44
52
  utilModule,
45
53
  querystringModule,
54
+ assertModule,
55
+ testModule,
46
56
  ];
47
57
  export const nodeExtension = {
48
58
  name: "node",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,0DAA0D;AAC1D,MAAM,OAAO,GAA0B;IACrC,QAAQ;IACR,gBAAgB;IAChB,UAAU;IACV,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,WAAW;IACX,UAAU;IACV,SAAS;IACT,YAAY;IACZ,kBAAkB;IAClB,YAAY;IACZ,UAAU;IACV,iBAAiB;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,6EAA6E;IAC1F,2EAA2E;IAC3E,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxF,2EAA2E;IAC3E,+DAA+D;IAC/D,uEAAuE;IACvE,yEAAyE;IACzE,uDAAuD;IACvD,OAAO,EAAE,GAAG,EAAE;QACZ,MAAM,OAAO,GAAoC,EAAE,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAoB;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC/D,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7B,OAAO,CAAC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,0DAA0D;AAC1D,MAAM,OAAO,GAA0B;IACrC,QAAQ;IACR,gBAAgB;IAChB,UAAU;IACV,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,oBAAoB;IACpB,UAAU;IACV,mBAAmB;IACnB,SAAS;IACT,WAAW;IACX,UAAU;IACV,SAAS;IACT,YAAY;IACZ,kBAAkB;IAClB,YAAY;IACZ,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,6EAA6E;IAC1F,2EAA2E;IAC3E,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxF,2EAA2E;IAC3E,+DAA+D;IAC/D,uEAAuE;IACvE,yEAAyE;IACzE,uDAAuD;IACvD,OAAO,EAAE,GAAG,EAAE;QACZ,MAAM,OAAO,GAAoC,EAAE,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAoB;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC/D,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7B,OAAO,CAAC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
@@ -6,10 +6,17 @@
6
6
  * backed by `runtime/ext_node/net/net.c`.
7
7
  */
8
8
  import { resolveFrom } from "../module.js";
9
+ const methods = ["createServer", "connect", "createConnection", "isIP", "isIPv4", "isIPv6"];
10
+ const exports = {
11
+ ...Object.fromEntries(methods.map((method) => [method, { namespace: "net", method }])),
12
+ Server: { symbol: "xt_net_server_ctor", isConstructor: true },
13
+ Socket: { symbol: "xt_net_socket_ctor", isConstructor: true },
14
+ };
9
15
  export const netModule = {
10
16
  name: "net",
11
17
  namespace: "net",
12
18
  runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/net/net.c")],
13
19
  builtins: () => ({}),
20
+ exports: () => exports,
14
21
  };
15
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/net/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,KAAK;IAChB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC,CAAC;IAC9F,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/net/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAErG,MAAM,OAAO,GAAkB;IAC7B,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,IAAI,EAAE;IAC7D,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,IAAI,EAAE;CAC9D,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,KAAK;IAChB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC,CAAC;IAC9F,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -7,10 +7,18 @@
7
7
  * the C runtime's synchronous stream implementation.
8
8
  */
9
9
  import { resolveFrom } from "../module.js";
10
+ const exports = {
11
+ Readable: { symbol: "xt_readable_ctor", isConstructor: true },
12
+ Writable: { symbol: "xt_writable_ctor", isConstructor: true },
13
+ Duplex: { symbol: "xt_duplex_ctor", isConstructor: true },
14
+ Transform: { symbol: "xt_transform_ctor", isConstructor: true },
15
+ PassThrough: { symbol: "xt_pass_through_ctor", isConstructor: true },
16
+ };
10
17
  export const streamModule = {
11
18
  name: "stream",
12
19
  namespace: "stream",
13
20
  runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/stream/stream.c")],
14
21
  builtins: () => ({}),
22
+ exports: () => exports,
15
23
  };
16
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAkB;IAC7B,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE;IAC7D,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE;IAC7D,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,SAAS,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,IAAI,EAAE;IAC/D,WAAW,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,aAAa,EAAE,IAAI,EAAE;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IACpG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Node's `stream/promises` module.
3
+ *
4
+ * Provides `pipeline`, implemented synchronously in
5
+ * `runtime/ext_node/stream/pipeline.c` and returned as an already-resolved
6
+ * promise so `await pipeline(...)` works.
7
+ */
8
+ import type { NodeModule } from "../module.js";
9
+ export declare const streamPromisesModule: NodeModule;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Node's `stream/promises` module.
3
+ *
4
+ * Provides `pipeline`, implemented synchronously in
5
+ * `runtime/ext_node/stream/pipeline.c` and returned as an already-resolved
6
+ * promise so `await pipeline(...)` works.
7
+ */
8
+ import { resolveFrom } from "../module.js";
9
+ export const streamPromisesModule = {
10
+ name: "stream/promises",
11
+ runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/stream/pipeline.c")],
12
+ builtins: () => ({
13
+ pipeline: { symbol: "xt_node_stream_pipeline" },
14
+ }),
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/stream-promises/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C,IAAI,EAAE,iBAAiB;IACvB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,gDAAgD,CAAC,CAAC;IACtG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,QAAQ,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE;KAChD,CAAC;CACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Node's `test` module (`node:test`).
3
+ *
4
+ * A minimal synchronous test runner: `test(name, fn)` executes `fn` immediately,
5
+ * catching assertion failures and reporting TAP output. `import test from
6
+ * "node:test"` binds the callable default export; `import { test }` and
7
+ * `test.skip` / `test.todo` / `test.only` are also provided.
8
+ */
9
+ import type { NodeModule } from "../module.js";
10
+ export declare const testModule: NodeModule;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Node's `test` module (`node:test`).
3
+ *
4
+ * A minimal synchronous test runner: `test(name, fn)` executes `fn` immediately,
5
+ * catching assertion failures and reporting TAP output. `import test from
6
+ * "node:test"` binds the callable default export; `import { test }` and
7
+ * `test.skip` / `test.todo` / `test.only` are also provided.
8
+ */
9
+ import { resolveFrom } from "../module.js";
10
+ const runTest = { symbol: "xt_node_test" };
11
+ const exports = {
12
+ default: runTest,
13
+ test: runTest,
14
+ it: runTest,
15
+ describe: runTest,
16
+ skip: { symbol: "xt_node_test_skip" },
17
+ todo: { symbol: "xt_node_test_todo" },
18
+ only: { symbol: "xt_node_test" },
19
+ before: { symbol: "xt_node_test_hook" },
20
+ after: { symbol: "xt_node_test_hook" },
21
+ beforeEach: { symbol: "xt_node_test_hook" },
22
+ afterEach: { symbol: "xt_node_test_hook" },
23
+ };
24
+ export const testModule = {
25
+ name: "test",
26
+ runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/test/test.c")],
27
+ builtins: () => ({}),
28
+ exports: () => exports,
29
+ };
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/test/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,cAAc,EAAW,CAAC;AAEpD,MAAM,OAAO,GAAkB;IAC7B,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,OAAO;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACrC,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACrC,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;IAChC,MAAM,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACvC,KAAK,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACtC,UAAU,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC3C,SAAS,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;IAChG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Node's `worker_threads` module.
3
+ *
4
+ * xbintsc emulates a worker by re-running the current executable as a child
5
+ * process; `isMainThread`, `workerData` and `parentPort` become value bindings
6
+ * (nullary runtime getters) and `Worker` is a constructor. See
7
+ * `runtime/ext_node/worker_threads/worker_threads.c`.
8
+ */
9
+ import type { NodeModule } from "../module.js";
10
+ export declare const workerThreadsModule: NodeModule;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Node's `worker_threads` module.
3
+ *
4
+ * xbintsc emulates a worker by re-running the current executable as a child
5
+ * process; `isMainThread`, `workerData` and `parentPort` become value bindings
6
+ * (nullary runtime getters) and `Worker` is a constructor. See
7
+ * `runtime/ext_node/worker_threads/worker_threads.c`.
8
+ */
9
+ import { resolveFrom } from "../module.js";
10
+ const exports = {
11
+ Worker: { symbol: "xt_worker_ctor", isConstructor: true },
12
+ isMainThread: { valueSymbol: "xt_worker_is_main_thread" },
13
+ workerData: { valueSymbol: "xt_worker_data" },
14
+ parentPort: { valueSymbol: "xt_worker_parent_port" },
15
+ };
16
+ export const workerThreadsModule = {
17
+ name: "worker_threads",
18
+ runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/worker_threads/worker_threads.c")],
19
+ builtins: () => ({}),
20
+ exports: () => exports,
21
+ };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/worker_threads/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,GAAkB;IAC7B,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,YAAY,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACzD,UAAU,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE;IAC7C,UAAU,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;CACrD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,IAAI,EAAE,gBAAgB;IACtB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,8DAA8D,CAAC,CAAC;IACpH,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;CACvB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Node's `zlib` module.
3
+ *
4
+ * Only `createGzip()` is implemented. It returns a descriptor consumed by
5
+ * `stream/promises`' `pipeline`; see `runtime/ext_node/zlib/zlib.c`.
6
+ */
7
+ import type { NodeModule } from "../module.js";
8
+ export declare const zlibModule: NodeModule;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Node's `zlib` module.
3
+ *
4
+ * Only `createGzip()` is implemented. It returns a descriptor consumed by
5
+ * `stream/promises`' `pipeline`; see `runtime/ext_node/zlib/zlib.c`.
6
+ */
7
+ import { resolveFrom } from "../module.js";
8
+ export const zlibModule = {
9
+ name: "zlib",
10
+ runtimeSources: () => [resolveFrom(import.meta.url, "../../../../runtime/ext_node/zlib/zlib.c")],
11
+ builtins: () => ({
12
+ createGzip: { symbol: "xt_node_create_gzip" },
13
+ }),
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/node/zlib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;IAChG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,UAAU,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE;KAC9C,CAAC;CACH,CAAC"}
@@ -26,6 +26,12 @@ export interface ModuleExport {
26
26
  readonly returnVoid?: boolean;
27
27
  readonly namespace?: string;
28
28
  readonly method?: string;
29
+ /**
30
+ * Runtime getter used when the binding is read as a *value* rather than
31
+ * called (e.g. `import { isMainThread } from "worker_threads"`). The symbol
32
+ * has the uniform `(i32, i64*)` ABI and is invoked with no arguments.
33
+ */
34
+ readonly valueSymbol?: string;
29
35
  /**
30
36
  * Marks a runtime symbol as a constructor callable with `new` (it has the
31
37
  * `(i32, i64*)` signature). Lets `import { EventEmitter } from "events"` be
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/extensions/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/extensions/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoEH,MAAM,OAAO,iBAAiB;IACX,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE3D,QAAQ,CAAC,SAAoB;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,yBAAyB,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,8DAA8D;IAC9D,QAAQ;QACN,MAAM,MAAM,GAAoC,EAAE,CAAC;QACnD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxC,IAAI,QAAQ;gBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+DAA+D;IAC/D,OAAO;QACL,MAAM,MAAM,GAAoC,EAAE,CAAC;QACnD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,GAAG;oBAClB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS;oBAClD,OAAO,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;iBACrD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,qEAAqE;IACrE,aAAa;QACX,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW;QACT,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,uCAAuC;IACpD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;KAChC,CAAC;CACH,CAAC;AAEF,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,iBAAiB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACzD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { join } from "node:path";
3
3
  import { existsSync } from "node:fs";
4
- import { findPackageRoot, findRuntimeDir, platformSlug, releaseArchiveBase, releaseArchiveExtension, vendorRootDir, } from "../../src/driver/paths.js";
4
+ import { findPackageRoot, findRuntimeDir, platformSlug, releaseArchiveBase, releaseArchiveExtension, releaseArchiveFileName, vendorRootDir, } from "../../src/driver/paths.js";
5
5
  describe("platformSlug", () => {
6
6
  it("joins the platform and architecture", () => {
7
7
  expect(platformSlug()).toBe(`${process.platform}-${process.arch}`);
@@ -17,6 +17,16 @@ describe("releaseArchiveBase", () => {
17
17
  expect(releaseArchiveBase()).toBe(`xbintsc-${process.platform}-${process.arch}`);
18
18
  });
19
19
  });
20
+ describe("releaseArchiveFileName", () => {
21
+ it("embeds the version between the name and the platform", () => {
22
+ expect(releaseArchiveFileName("0.3.8", "linux", "x64")).toBe("xbintsc-0.3.8-linux-x64");
23
+ expect(releaseArchiveFileName("1.0.0", "darwin", "arm64")).toBe("xbintsc-1.0.0-darwin-arm64");
24
+ expect(releaseArchiveFileName("1.0.0", "win32", "x64")).toBe("xbintsc-1.0.0-win32-x64");
25
+ });
26
+ it("defaults to the host platform", () => {
27
+ expect(releaseArchiveFileName("0.3.8")).toBe(`xbintsc-0.3.8-${process.platform}-${process.arch}`);
28
+ });
29
+ });
20
30
  describe("releaseArchiveExtension", () => {
21
31
  it("uses .tar.zst when zstd is available", () => {
22
32
  expect(releaseArchiveExtension(true)).toBe(".tar.zst");
@@ -1 +1 @@
1
- {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../tests/driver/paths.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAEnC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC3E,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;QAC/B,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../tests/driver/paths.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * to a native binary and executed through the shared {@link describeE2E}
5
5
  * harness, so the suite is skipped when no clang-compatible compiler is found.
6
6
  */
7
- import { writeFileSync } from "node:fs";
7
+ import { readFileSync, writeFileSync } from "node:fs";
8
+ import { gunzipSync } from "node:zlib";
8
9
  import { join } from "node:path";
9
10
  import { expect, it } from "vitest";
10
11
  import { describeE2E } from "./harness.js";
@@ -132,5 +133,70 @@ describeE2E("end-to-end compilation (node extension)", (harness) => {
132
133
  expect(stdout).toContain("hello-from-child");
133
134
  expect(stdout).toContain("status 0");
134
135
  });
136
+ it("hashes with SHA-1 and the streaming crypto API", () => {
137
+ const source = `
138
+ import { createHash } from "node:crypto";
139
+ const hasher = createHash("sha1");
140
+ hasher.setEncoding("hex");
141
+ hasher.write("abc");
142
+ hasher.end();
143
+ console.log(hasher.read());
144
+ console.log(createHash("sha256").update("abc").digest("hex"));
145
+ `;
146
+ expect(runProgram(source, { extensions: true })).toBe("a9993e364706816aba3e25717850c26c9cd0d89d\nba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
147
+ });
148
+ it("runs node:test assertions through node:assert", () => {
149
+ const source = `
150
+ import assert from "node:assert";
151
+ import test from "node:test";
152
+ test("strict and deep equality", () => {
153
+ assert.strictEqual(1, 1);
154
+ assert.deepStrictEqual({ a: [1, 2] }, { a: [1, 2] });
155
+ assert.throws(() => { throw new Error("boom"); });
156
+ });
157
+ `;
158
+ const result = runProgramFull(source, { extensions: true });
159
+ expect(result.status).toBe(0);
160
+ expect(result.stdout).toContain("ok 1 - strict and deep equality");
161
+ });
162
+ it("exits non-zero when a node:test assertion fails", () => {
163
+ const source = `
164
+ import assert from "node:assert";
165
+ import test from "node:test";
166
+ test("fails", () => { assert.strictEqual(1, 2); });
167
+ `;
168
+ const result = runProgramFull(source, { extensions: true });
169
+ expect(result.status).toBe(1);
170
+ expect(result.stdout).toContain("not ok 1 - fails");
171
+ });
172
+ it("pipes a file through gzip with stream/promises", () => {
173
+ const sourcePath = join(harness.workdir, `pipe-src-${Math.random().toString(36).slice(2)}.txt`);
174
+ const destPath = join(harness.workdir, `pipe-dest-${Math.random().toString(36).slice(2)}.gz`);
175
+ writeFileSync(sourcePath, "hello gzip");
176
+ const source = `
177
+ import { createReadStream, createWriteStream } from "node:fs";
178
+ import { pipeline } from "node:stream/promises";
179
+ import { createGzip } from "node:zlib";
180
+ await pipeline(
181
+ createReadStream(${JSON.stringify(sourcePath)}),
182
+ createGzip(),
183
+ createWriteStream(${JSON.stringify(destPath)}),
184
+ );
185
+ `;
186
+ expect(runProgram(source, { extensions: true })).toBe("");
187
+ expect(gunzipSync(readFileSync(destPath)).toString("utf8")).toBe("hello gzip");
188
+ });
189
+ it("runs a worker_threads worker and relays its message", () => {
190
+ const source = `
191
+ import { Worker, isMainThread, workerData, parentPort } from "node:worker_threads";
192
+ if (isMainThread) {
193
+ const worker = new Worker(import.meta.filename, { workerData: "some data" });
194
+ worker.on("message", (msg) => console.log("Reply from Thread:", msg));
195
+ } else {
196
+ parentPort.postMessage(btoa(workerData.toUpperCase()));
197
+ }
198
+ `;
199
+ expect(runProgram(source, { extensions: true })).toBe("Reply from Thread: U09NRSBEQVRB");
200
+ });
135
201
  });
136
202
  //# sourceMappingURL=compile-node.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile-node.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-node.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile-node.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-node.test.ts"],"names":[],"mappings":"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"}