@hegeldev/hegel 0.2.2 → 0.3.0

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 (61) hide show
  1. package/README.md +10 -4
  2. package/dist/cbor.d.ts +15 -0
  3. package/dist/cbor.d.ts.map +1 -0
  4. package/dist/cbor.js +32 -0
  5. package/dist/cbor.js.map +1 -0
  6. package/dist/checksums.d.ts +16 -0
  7. package/dist/checksums.d.ts.map +1 -0
  8. package/dist/checksums.js +26 -0
  9. package/dist/checksums.js.map +1 -0
  10. package/dist/generators/numeric.d.ts.map +1 -1
  11. package/dist/generators/numeric.js +16 -7
  12. package/dist/generators/numeric.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/libhegel.d.ts +169 -0
  16. package/dist/libhegel.d.ts.map +1 -0
  17. package/dist/libhegel.js +338 -0
  18. package/dist/libhegel.js.map +1 -0
  19. package/dist/locate.d.ts +42 -0
  20. package/dist/locate.d.ts.map +1 -0
  21. package/dist/locate.js +94 -0
  22. package/dist/locate.js.map +1 -0
  23. package/dist/runner.d.ts +30 -22
  24. package/dist/runner.d.ts.map +1 -1
  25. package/dist/runner.js +150 -201
  26. package/dist/runner.js.map +1 -1
  27. package/dist/session.d.ts +16 -13
  28. package/dist/session.d.ts.map +1 -1
  29. package/dist/session.js +32 -145
  30. package/dist/session.js.map +1 -1
  31. package/dist/testCase.d.ts +7 -7
  32. package/dist/testCase.d.ts.map +1 -1
  33. package/dist/testCase.js +1 -5
  34. package/dist/testCase.js.map +1 -1
  35. package/dist/wtf8.d.ts +2 -0
  36. package/dist/wtf8.d.ts.map +1 -1
  37. package/dist/wtf8.js +2 -0
  38. package/dist/wtf8.js.map +1 -1
  39. package/native/libhegel-darwin-arm64.dylib +0 -0
  40. package/native/libhegel-linux-amd64.so +0 -0
  41. package/native/libhegel-linux-arm64.so +0 -0
  42. package/native/libhegel-windows-amd64.dll +0 -0
  43. package/native/libhegel-windows-arm64.dll +0 -0
  44. package/package.json +9 -11
  45. package/dist/connection.d.ts +0 -82
  46. package/dist/connection.d.ts.map +0 -1
  47. package/dist/connection.js +0 -231
  48. package/dist/connection.js.map +0 -1
  49. package/dist/crc32.d.ts +0 -13
  50. package/dist/crc32.d.ts.map +0 -1
  51. package/dist/crc32.js +0 -30
  52. package/dist/crc32.js.map +0 -1
  53. package/dist/protocol.d.ts +0 -25
  54. package/dist/protocol.d.ts.map +0 -1
  55. package/dist/protocol.js +0 -77
  56. package/dist/protocol.js.map +0 -1
  57. package/dist/uv-install.sh +0 -2226
  58. package/dist/uv.d.ts +0 -20
  59. package/dist/uv.d.ts.map +0 -1
  60. package/dist/uv.js +0 -103
  61. package/dist/uv.js.map +0 -1
package/dist/session.js CHANGED
@@ -1,157 +1,44 @@
1
1
  /**
2
- * Global lazy session that manages the hegel server subprocess.
2
+ * Global lazy libhegel handle.
3
3
  *
4
- * The session is created on first use and persists for the lifetime of
5
- * the process.
4
+ * The native library is located (and, on first use, downloaded) and loaded the
5
+ * first time a test runs, then reused for the lifetime of the process. Unlike
6
+ * the previous subprocess-based client there is no server to manage: the engine
7
+ * runs on a worker thread inside libhegel, owned by each run handle.
6
8
  *
7
9
  * @packageDocumentation
8
10
  */
9
- import { spawn } from "node:child_process";
10
- import * as fs from "node:fs";
11
- import { Connection } from "./connection.js";
12
- import { HANDSHAKE_STRING } from "./protocol.js";
13
- import { findUv } from "./uv.js";
14
- export const HEGEL_SERVER_VERSION = "0.6.0";
15
- const SUPPORTED_PROTOCOL_MIN = "0.12";
16
- const SUPPORTED_PROTOCOL_MAX = "0.12";
17
- const HEGEL_SERVER_COMMAND_ENV = "HEGEL_SERVER_COMMAND";
18
- const HEGEL_SERVER_DIR = ".hegel";
19
- function parseVersion(s) {
20
- const parts = s.split(".");
21
- /* v8 ignore start */
22
- if (parts.length !== 2) {
23
- throw new Error(`Invalid version string '${s}': expected 'major.minor' format`);
24
- }
25
- /* v8 ignore stop */
26
- const major = parseInt(parts[0], 10);
27
- const minor = parseInt(parts[1], 10);
28
- /* v8 ignore start */
29
- if (!Number.isFinite(major) || !Number.isFinite(minor)) {
30
- throw new Error(`Invalid version string '${s}'`);
31
- }
32
- /* v8 ignore stop */
33
- return [major, minor];
34
- }
35
- function versionInRange(version, min, max) {
36
- const v = parseVersion(version);
37
- const lo = parseVersion(min);
38
- const hi = parseVersion(max);
39
- /* v8 ignore start */
40
- if (v[0] < lo[0] || (v[0] === lo[0] && v[1] < lo[1]))
41
- return false;
42
- if (v[0] > hi[0] || (v[0] === hi[0] && v[1] > hi[1]))
43
- return false;
44
- /* v8 ignore stop */
45
- return true;
11
+ import { Libhegel } from "./libhegel.js";
12
+ import { locateLibhegel } from "./locate.js";
13
+ import { LIBHEGEL_VERSION } from "./checksums.js";
14
+ let cached = null;
15
+ /** Returns the `major.minor` portion of a `major.minor.patch` version. */
16
+ function majorMinor(version) {
17
+ return version.split(".").slice(0, 2).join(".");
46
18
  }
47
- let logFileCounter = 0;
48
- function serverLogFile() {
49
- try {
50
- fs.mkdirSync(HEGEL_SERVER_DIR, { recursive: true });
51
- }
52
- catch {
53
- // ignore
19
+ /**
20
+ * Verify the loaded library's version is ABI-compatible with the one this
21
+ * client was built against. libhegel is pre-1.0, so its C ABI can change
22
+ * between minor versions; we require the `major.minor` to match.
23
+ */
24
+ export function checkVersion(actual, expected = LIBHEGEL_VERSION) {
25
+ if (majorMinor(actual) !== majorMinor(expected)) {
26
+ throw new Error(`Incompatible libhegel version: the loaded library is ${actual}, but ` +
27
+ `@hegeldev/hegel expects ${expected}. Update the package or the library so their ` +
28
+ `major.minor versions match.`);
54
29
  }
55
- const pid = process.pid;
56
- const ix = logFileCounter++;
57
- const path = `${HEGEL_SERVER_DIR}/server.${pid}-${ix}.log`;
58
- return fs.openSync(path, "a");
59
30
  }
60
- let session = null;
61
- export class HegelSession {
62
- connection;
63
- _controlStream;
64
- constructor(connection, controlStream) {
65
- this.connection = connection;
66
- this._controlStream = controlStream;
67
- }
68
- get controlStream() {
69
- return this._controlStream;
70
- }
71
- static get() {
72
- if (session === null) {
73
- session = HegelSession.init();
74
- }
75
- return session;
76
- }
77
- static init() {
78
- const { command, args } = hegelCommand();
79
- const logFd = serverLogFile();
80
- const child = spawn(command, [...args, "--verbosity", "normal"], {
81
- stdio: ["pipe", "pipe", logFd],
82
- env: { ...process.env, PYTHONUNBUFFERED: "1" },
83
- });
84
- // Prevent Node.js from consuming pipe data via its event loop
85
- child.stdout.pause();
86
- child.stdin.cork();
87
- // Unref the child and its pipes so they don't keep Node's event loop
88
- // alive. Otherwise a plain `node script.mjs` hangs after the last
89
- // Hegel.run() completes — Node waits for the subprocess, the subprocess
90
- // waits for more protocol commands, and the `exit` handler that would
91
- // kill the child never fires because Node never decides to exit.
92
- // stdin/stdout for piped stdio are Socket instances at runtime, but
93
- // TypeScript types them as Writable/Readable which don't declare unref().
94
- child.unref();
95
- child.stdout.unref();
96
- child.stdin.unref();
97
- // Extract raw file descriptors for synchronous I/O
98
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
- const readFd = child.stdout._handle.fd;
100
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
- const writeFd = child.stdin._handle.fd;
102
- const connection = new Connection(readFd, writeFd);
103
- const control = connection.controlStream();
104
- // Handshake: raw bytes, not CBOR-encoded
105
- const handshakePayload = Buffer.from(HANDSHAKE_STRING, "utf-8");
106
- const reqId = control.sendRequest(handshakePayload);
107
- const responseBytes = control.receiveReply(reqId);
108
- const responseStr = responseBytes.toString("utf-8");
109
- /* v8 ignore start */
110
- if (!responseStr.startsWith("Hegel/")) {
111
- child.kill();
112
- throw new Error(`Bad handshake response: ${JSON.stringify(responseStr)}`);
113
- }
114
- /* v8 ignore stop */
115
- const serverVersion = responseStr.slice("Hegel/".length);
116
- /* v8 ignore start */
117
- if (!versionInRange(serverVersion, SUPPORTED_PROTOCOL_MIN, SUPPORTED_PROTOCOL_MAX)) {
118
- child.kill();
119
- throw new Error(`hegel-typescript supports protocol versions ${SUPPORTED_PROTOCOL_MIN} through ${SUPPORTED_PROTOCOL_MAX}, ` +
120
- `but the connected server is using protocol version ${serverVersion}`);
121
- }
122
- /* v8 ignore stop */
123
- // Register cleanup on process exit
124
- /* v8 ignore start */
125
- process.on("exit", () => {
126
- try {
127
- child.kill();
128
- }
129
- catch {
130
- // ignore
131
- }
132
- });
133
- /* v8 ignore stop */
134
- // Close the log fd since the child has inherited it
135
- try {
136
- fs.closeSync(logFd);
137
- }
138
- catch {
139
- // ignore
140
- }
141
- return new HegelSession(connection, control);
142
- }
31
+ /** Locate, load and version-check the native library. */
32
+ export function loadLibhegel() {
33
+ const lib = Libhegel.load(locateLibhegel());
34
+ checkVersion(lib.version());
35
+ return lib;
143
36
  }
144
- function hegelCommand() {
145
- const override = process.env[HEGEL_SERVER_COMMAND_ENV];
146
- /* v8 ignore start */
147
- if (override) {
148
- return { command: override, args: [] };
37
+ /** Returns the process-global libhegel handle, loading it on first use. */
38
+ export function getLibhegel() {
39
+ if (cached === null) {
40
+ cached = loadLibhegel();
149
41
  }
150
- /* v8 ignore stop */
151
- // Default: use uv tool run
152
- return {
153
- command: findUv(),
154
- args: ["tool", "run", "--from", `hegel-core==${HEGEL_SERVER_VERSION}`, "hegel"],
155
- };
42
+ return cached;
156
43
  }
157
44
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,IAAI,MAAM,GAAoB,IAAI,CAAC;AAEnC,0EAA0E;AAC1E,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,WAAmB,gBAAgB;IAC9E,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,wDAAwD,MAAM,QAAQ;YACpE,2BAA2B,QAAQ,+CAA+C;YAClF,6BAA6B,CAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5C,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW;IACzB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,YAAY,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -33,9 +33,12 @@ export declare const Labels: {
33
33
  /**
34
34
  * Abstraction over the data backend for a test case.
35
35
  *
36
- * The default implementation (ServerDataSource) talks to the hegel server
37
- * over a multiplexed stream. Custom implementations can be used in tests
38
- * to inject specific behaviors without a server.
36
+ * The default implementation (NativeDataSource) drives the native libhegel
37
+ * test case via its C ABI. Custom implementations can be used in tests to
38
+ * inject specific behaviors without the engine.
39
+ *
40
+ * `status` passed to {@link DataSource.markComplete} is a `hegel_status_t`
41
+ * value (see {@link Status} in `libhegel.ts`).
39
42
  */
40
43
  export interface DataSource {
41
44
  generate(schema: Record<string, unknown>): unknown;
@@ -44,8 +47,7 @@ export interface DataSource {
44
47
  newCollection(minSize: number, maxSize?: number): number;
45
48
  collectionMore(collectionId: number): boolean;
46
49
  collectionReject(collectionId: number, why?: string): void;
47
- markComplete(status: string, origin: string | null): void;
48
- testAborted(): boolean;
50
+ markComplete(status: number, origin: string | null): void;
49
51
  }
50
52
  export declare class TestCase {
51
53
  private _dataSource;
@@ -58,8 +60,6 @@ export declare class TestCase {
58
60
  dataSource(): DataSource;
59
61
  /** @internal */
60
62
  get isLastRun(): boolean;
61
- /** @internal */
62
- get testAborted(): boolean;
63
63
  /**
64
64
  * Draw a value from a generator.
65
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"testCase.d.ts","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,aAAc,SAAQ,KAAK;;CAKvC;AAED,qBAAa,WAAY,SAAQ,KAAK;;CAKrC;AAMD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAgBT,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1D,WAAW,IAAI,OAAO,CAAC;CACxB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IAEtB,gBAAgB;gBACJ,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;IAKtD,gBAAgB;IAChB,UAAU,IAAI,UAAU;IAIxB,gBAAgB;IAChB,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gBAAgB;IAChB,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAWnC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMhC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,UAAQ,GAAG,IAAI;CAQhC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM3D,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,IAAI,IAAI,OAAO;IAkBf;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAK3B"}
1
+ {"version":3,"file":"testCase.d.ts","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,aAAc,SAAQ,KAAK;;CAKvC;AAED,qBAAa,WAAY,SAAQ,KAAK;;CAKrC;AAMD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAgBT,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3D;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IAEtB,gBAAgB;gBACJ,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;IAKtD,gBAAgB;IAChB,UAAU,IAAI,UAAU;IAIxB,gBAAgB;IAChB,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAWnC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMhC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,UAAQ,GAAG,IAAI;CAQhC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM3D,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,IAAI,IAAI,OAAO;IAkBf;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAK3B"}
package/dist/testCase.js CHANGED
@@ -9,7 +9,7 @@
9
9
  import { inspect } from "node:util";
10
10
  export class StopTestError extends Error {
11
11
  constructor() {
12
- super("Server ran out of data (StopTest)");
12
+ super("Hegel ran out of data (StopTest)");
13
13
  this.name = "StopTestError";
14
14
  }
15
15
  }
@@ -57,10 +57,6 @@ export class TestCase {
57
57
  get isLastRun() {
58
58
  return this._isLastRun;
59
59
  }
60
- /** @internal */
61
- get testAborted() {
62
- return this._dataSource.testAborted();
63
- }
64
60
  /**
65
61
  * Draw a value from a generator.
66
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"testCase.js","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testCase.js","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"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"}
package/dist/wtf8.d.ts CHANGED
@@ -4,6 +4,8 @@
4
4
  * WTF-8 is like UTF-8 but allows encoding of surrogate codepoints
5
5
  * (U+D800-U+DFFF). Node's `Buffer.toString("utf-8")` replaces these with
6
6
  * U+FFFD, but JS strings are UTF-16 and can represent lone surrogates natively.
7
+ * libhegel returns generated strings as a CBOR tag-91 value wrapping WTF-8
8
+ * bytes (see `cbor.ts`), so this decoder is needed to recover the JS string.
7
9
  *
8
10
  * Based on the test vectors from {@link https://github.com/mathiasbynens/wtf-8}.
9
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"wtf8.d.ts","sourceRoot":"","sources":["../src/wtf8.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgChD"}
1
+ {"version":3,"file":"wtf8.d.ts","sourceRoot":"","sources":["../src/wtf8.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgChD"}
package/dist/wtf8.js CHANGED
@@ -4,6 +4,8 @@
4
4
  * WTF-8 is like UTF-8 but allows encoding of surrogate codepoints
5
5
  * (U+D800-U+DFFF). Node's `Buffer.toString("utf-8")` replaces these with
6
6
  * U+FFFD, but JS strings are UTF-16 and can represent lone surrogates natively.
7
+ * libhegel returns generated strings as a CBOR tag-91 value wrapping WTF-8
8
+ * bytes (see `cbor.ts`), so this decoder is needed to recover the JS string.
7
9
  *
8
10
  * Based on the test vectors from {@link https://github.com/mathiasbynens/wtf-8}.
9
11
  *
package/dist/wtf8.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"wtf8.js","sourceRoot":"","sources":["../src/wtf8.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,EAAU,CAAC;QACf,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACb,EAAE,GAAG,CAAC,CAAC;YACP,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7C,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3E,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,EAAE;gBACA,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC3B,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YAClB,EAAE,IAAI,OAAO,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"wtf8.js","sourceRoot":"","sources":["../src/wtf8.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,EAAU,CAAC;QACf,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACb,EAAE,GAAG,CAAC,CAAC;YACP,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7C,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3E,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,EAAE;gBACA,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC3B,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YAClB,EAAE,IAAI,OAAO,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;AAC3C,CAAC"}
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hegeldev/hegel",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Property-based testing for TypeScript",
5
5
  "type": "module",
6
6
  "repository": {
@@ -24,10 +24,12 @@
24
24
  }
25
25
  },
26
26
  "files": [
27
- "dist"
27
+ "dist",
28
+ "native"
28
29
  ],
29
30
  "scripts": {
30
- "build": "tsc && cp src/uv-install.sh dist/uv-install.sh",
31
+ "build": "tsc",
32
+ "prepack": "node scripts/fetch-libhegel.mjs --all",
31
33
  "test": "vitest run --coverage",
32
34
  "lint": "prettier --check . && eslint . && tsc --noEmit",
33
35
  "format": "prettier --write .",
@@ -41,25 +43,21 @@
41
43
  "author": "David R. MacIver <david.maciver@antithesis.com>",
42
44
  "license": "MIT",
43
45
  "engines": {
44
- "node": ">=16.0.0"
46
+ "node": ">=20.11.0"
45
47
  },
46
48
  "devDependencies": {
47
49
  "@eslint/js": "^10.0.1",
48
- "@types/node": "^16.18.0",
50
+ "@types/node": "^20.11.0",
49
51
  "@vitest/coverage-v8": "^4.0.18",
50
52
  "eslint": "^10.0.2",
51
53
  "prettier": "^3.8.1",
52
- "tsx": "^4.19.3",
53
54
  "typedoc": "^0.28.17",
54
55
  "typescript": "^5.9.3",
55
56
  "typescript-eslint": "^8.56.1",
56
57
  "vitest": "^4.0.18"
57
58
  },
58
59
  "dependencies": {
59
- "cbor-x": "^1.6.0"
60
- },
61
- "//overrides": "fix vitest peerOptional declaring @types/node >=20, which is incompatible with us",
62
- "overrides": {
63
- "@types/node": "$@types/node"
60
+ "cbor-x": "^1.6.0",
61
+ "koffi": "^3.0.2"
64
62
  }
65
63
  }
@@ -1,82 +0,0 @@
1
- /**
2
- * Synchronous connection and stream multiplexing over stdio pipes.
3
- *
4
- * The Connection reads/writes raw bytes via file descriptors using
5
- * `fs.readSync`/`fs.writeSync`. The Stream class provides request/reply
6
- * semantics with CBOR encoding on top.
7
- *
8
- * @packageDocumentation
9
- */
10
- import { type Packet } from "./protocol.js";
11
- export declare class Connection {
12
- private readFd;
13
- private writeFd;
14
- private nextStreamCounter;
15
- private streamInboxes;
16
- private serverExited;
17
- constructor(readFd: number, writeFd: number);
18
- markServerExited(): void;
19
- hasServerExited(): boolean;
20
- /**
21
- * Read exactly `n` bytes from the pipe, blocking until available.
22
- * Handles EAGAIN from non-blocking file descriptors.
23
- */
24
- readExact(n: number): Buffer;
25
- /**
26
- * Write a packet to the server synchronously.
27
- */
28
- sendPacket(packet: Packet): void;
29
- /**
30
- * Read packets until one for the given stream arrives.
31
- * Packets for other streams are buffered in their inboxes.
32
- */
33
- readPacketForStream(streamId: number): Packet;
34
- /**
35
- * Create a new client-initiated stream (odd ID).
36
- */
37
- newStream(): Stream;
38
- /**
39
- * Connect to an existing server-allocated stream.
40
- */
41
- connectStream(streamId: number): Stream;
42
- /**
43
- * Get the control stream (stream ID 0).
44
- */
45
- controlStream(): Stream;
46
- /**
47
- * Remove buffered packets for a stream.
48
- */
49
- unregisterStream(streamId: number): void;
50
- }
51
- export declare class Stream {
52
- readonly streamId: number;
53
- private connection;
54
- private nextMessageId;
55
- private responses;
56
- private requests;
57
- private closed;
58
- constructor(streamId: number, connection: Connection);
59
- markClosed(): void;
60
- private checkClosed;
61
- /**
62
- * Send a request packet and return the message ID.
63
- */
64
- sendRequest(payload: Buffer): number;
65
- /**
66
- * Send a reply to an incoming request.
67
- */
68
- writeReply(messageId: number, payload: Buffer): void;
69
- /**
70
- * Wait for a reply to a previously sent request.
71
- */
72
- receiveReply(messageId: number): Buffer;
73
- /**
74
- * Wait for an incoming request from the server.
75
- */
76
- receiveRequest(): [number, Buffer];
77
- /**
78
- * Close this stream gracefully.
79
- */
80
- close(): void;
81
- }
82
- //# sourceMappingURL=connection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,MAAM,EAKZ,MAAM,eAAe,CAAC;AAgBvB,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK3C,gBAAgB,IAAI,IAAI;IAIxB,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACH,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IA2B5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKhC;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAyB7C;;OAEG;IACH,SAAS,IAAI,MAAM;IAKnB;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGzC;AAMD,qBAAa,MAAM;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAKpD,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAYpC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IASpD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAyBvC;;OAEG;IACH,cAAc,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAmBlC;;OAEG;IACH,KAAK,IAAI,IAAI;CAWd"}