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
|
@@ -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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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":"AAAA;;;;;;;;;;;GAWG;
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"compile-node.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-node.test.ts"],"names":[],"mappings":"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"}
|