@hegeldev/hegel 0.2.3 → 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/README.md CHANGED
@@ -16,11 +16,17 @@ Hegel is a property-based testing library for TypeScript. Hegel is based on [Hyp
16
16
 
17
17
  To install: `npm install --save-dev @hegeldev/hegel`.
18
18
 
19
- Hegel requires Node 16+. Bun and Deno are not currently supported.
19
+ Hegel requires Node 20.11+. Bun and Deno are not currently supported.
20
20
 
21
- Hegel will use [uv](https://docs.astral.sh/uv/) to install the required [hegel-core](https://github.com/hegeldev/hegel-core) server component.
22
- If `uv` is already on your path, it will use that, otherwise it will download a private copy of it to ~/.cache/hegel and not put it on your path.
23
- See https://hegel.dev/reference/installation for details.
21
+ Hegel drives [libhegel](https://github.com/hegeldev/hegel-rust) the native Rust
22
+ engine directly via FFI. The prebuilt `libhegel` shared library for every
23
+ supported platform is bundled inside the npm package (under `native/`), so there
24
+ is nothing to download or compile at install time — `npm install` just works
25
+ offline. Set `HEGEL_LIBHEGEL_PATH` to point at a local build to override the
26
+ bundled library.
27
+
28
+ Supported platforms (those with a bundled libhegel artifact): Linux
29
+ amd64/arm64, macOS arm64 (Apple Silicon), and Windows amd64/arm64.
24
30
 
25
31
  ## Quickstart
26
32
 
package/dist/cbor.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * CBOR codec configured for the Hegel value encoding.
3
+ *
4
+ * libhegel returns generated strings (and the string-shaped format generators:
5
+ * emails, urls, domains, dates, …) as a CBOR **tag 91** wrapping WTF-8 bytes,
6
+ * so that lone surrogates survive the round trip. Registering the tag-91
7
+ * extension here — and routing all schema encoding / value decoding through
8
+ * this module's {@link encode} / {@link decode} — makes those values decode to
9
+ * JS strings everywhere.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import { encode, decode } from "cbor-x";
14
+ export { encode, decode };
15
+ //# sourceMappingURL=cbor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor.d.ts","sourceRoot":"","sources":["../src/cbor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAgB,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBtD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC"}
package/dist/cbor.js ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * CBOR codec configured for the Hegel value encoding.
3
+ *
4
+ * libhegel returns generated strings (and the string-shaped format generators:
5
+ * emails, urls, domains, dates, …) as a CBOR **tag 91** wrapping WTF-8 bytes,
6
+ * so that lone surrogates survive the round trip. Registering the tag-91
7
+ * extension here — and routing all schema encoding / value decoding through
8
+ * this module's {@link encode} / {@link decode} — makes those values decode to
9
+ * JS strings everywhere.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import { addExtension, encode, decode } from "cbor-x";
14
+ import { wtf8ToString } from "./wtf8.js";
15
+ // `addExtension` mutates cbor-x's global tag registry, so registering it once
16
+ // at module load configures every subsequent `decode` call in the process.
17
+ addExtension({
18
+ // cbor-x requires a Class for the extension, but tag 91 is only ever
19
+ // received (decoded), never produced by the client — so the encode path is
20
+ // unreachable.
21
+ /* v8 ignore start */
22
+ Class: class HegelString {
23
+ },
24
+ encode: () => Buffer.alloc(0),
25
+ /* v8 ignore stop */
26
+ tag: 91,
27
+ // The tag-91 payload is always a CBOR byte string, which cbor-x decodes to a
28
+ // Buffer; `wtf8ToString` also accepts a plain Uint8Array view.
29
+ decode: (data) => wtf8ToString(data),
30
+ });
31
+ export { encode, decode };
32
+ //# sourceMappingURL=cbor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor.js","sourceRoot":"","sources":["../src/cbor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,8EAA8E;AAC9E,2EAA2E;AAC3E,YAAY,CAAC;IACX,qEAAqE;IACrE,2EAA2E;IAC3E,eAAe;IACf,qBAAqB;IACrB,KAAK,EAAE,MAAM,WAAW;KAAG;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,oBAAoB;IACpB,GAAG,EAAE,EAAE;IACP,6EAA6E;IAC7E,+DAA+D;IAC/D,MAAM,EAAE,CAAC,IAAgB,EAAU,EAAE,CAAC,YAAY,CAAC,IAAc,CAAC;CACnE,CAAC,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * SHA-256 checksums for the published libhegel release artifacts.
3
+ *
4
+ * The auto-downloader (`locate.ts`) verifies a downloaded artifact against the
5
+ * entry for the host platform's asset before loading it. The digests are baked
6
+ * into the source on purpose: fetching a checksum file from the same release it
7
+ * is meant to verify provides no integrity guarantee, since a tampered release
8
+ * would simply ship a matching checksum.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ /** The pinned libhegel version this client targets. */
13
+ export declare const LIBHEGEL_VERSION = "0.23.0";
14
+ /** Map from published asset filename to its SHA-256 hex digest. */
15
+ export declare const LIBHEGEL_CHECKSUMS: Readonly<Record<string, string>>;
16
+ //# sourceMappingURL=checksums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksums.d.ts","sourceRoot":"","sources":["../src/checksums.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AAEH,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM/D,CAAC"}
@@ -0,0 +1,26 @@
1
+ // Code generated by scripts/update-checksums.mjs; DO NOT EDIT.
2
+ //
3
+ // Run `just update-checksums` to pull in the latest hegel-rust release, then
4
+ // commit the result.
5
+ /**
6
+ * SHA-256 checksums for the published libhegel release artifacts.
7
+ *
8
+ * The auto-downloader (`locate.ts`) verifies a downloaded artifact against the
9
+ * entry for the host platform's asset before loading it. The digests are baked
10
+ * into the source on purpose: fetching a checksum file from the same release it
11
+ * is meant to verify provides no integrity guarantee, since a tampered release
12
+ * would simply ship a matching checksum.
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ /** The pinned libhegel version this client targets. */
17
+ export const LIBHEGEL_VERSION = "0.23.0";
18
+ /** Map from published asset filename to its SHA-256 hex digest. */
19
+ export const LIBHEGEL_CHECKSUMS = {
20
+ "libhegel-darwin-arm64.dylib": "fdddf3e8bcd7bdda45c10a477e516b2782dd78d9b35e9516947c7b193becf0f0",
21
+ "libhegel-linux-amd64.so": "dcb415b65a2a3c142bbf63b3e72ae7700c50f1aa7cb73d8d012532f156926f5a",
22
+ "libhegel-linux-arm64.so": "c0d1c3e79f1bfcc45d0b5352fb04879e638cf92d816c2d40db1bd6da0eb9ad0a",
23
+ "libhegel-windows-amd64.dll": "4931dbfb71d4811bbae957a47c651a24d597e9ab2e3633f9873b8193b9d93548",
24
+ "libhegel-windows-arm64.dll": "2659253a4e868756386114cce3f153719b9bbe266c2c7821197317d090c43e66",
25
+ };
26
+ //# sourceMappingURL=checksums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksums.js","sourceRoot":"","sources":["../src/checksums.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,6EAA6E;AAC7E,qBAAqB;AAErB;;;;;;;;;;GAUG;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAEzC,mEAAmE;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,6BAA6B,EAAE,kEAAkE;IACjG,yBAAyB,EAAE,kEAAkE;IAC7F,yBAAyB,EAAE,kEAAkE;IAC7F,4BAA4B,EAAE,kEAAkE;IAChG,4BAA4B,EAAE,kEAAkE;CACjG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAiCD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAEpE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgCD,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAE1E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAwCD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAEhE;AAcD,+BAA+B;AAC/B,wBAAgB,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,CAE7C"}
1
+ {"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoCD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAEpE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyCD,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAE1E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAwCD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAEhE;AAcD,+BAA+B;AAC/B,wBAAgB,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,CAE7C"}
@@ -22,7 +22,10 @@ class IntegersGenerator extends Generator {
22
22
  if (min < Number.MIN_SAFE_INTEGER || max > Number.MAX_SAFE_INTEGER) {
23
23
  throw new Error("integers() bounds must be within Number.MIN_SAFE_INTEGER..Number.MAX_SAFE_INTEGER. Use bigIntegers() for larger ranges.");
24
24
  }
25
- this.schema = { type: "integer", min_value: min, max_value: max };
25
+ // Encode bounds as BigInt so they always serialize as CBOR integers: the
26
+ // native engine strictly rejects float-encoded integer bounds, and cbor-x
27
+ // encodes plain JS numbers above 2**32 as CBOR floats.
28
+ this.schema = { type: "integer", min_value: BigInt(min), max_value: BigInt(max) };
26
29
  }
27
30
  doDraw(tc) {
28
31
  return parseInteger(generateRaw(tc, this.schema));
@@ -44,6 +47,9 @@ function parseBigInt(raw) {
44
47
  return raw;
45
48
  return BigInt(raw);
46
49
  }
50
+ // Default bounds for an unbounded bigIntegers() side (signed 128-bit range).
51
+ const DEFAULT_BIGINT_MIN = -(2n ** 127n);
52
+ const DEFAULT_BIGINT_MAX = 2n ** 127n - 1n;
47
53
  class BigIntegersGenerator extends Generator {
48
54
  schema;
49
55
  constructor(options) {
@@ -53,12 +59,15 @@ class BigIntegersGenerator extends Generator {
53
59
  if (min !== undefined && max !== undefined && min > max) {
54
60
  throw new Error("Cannot have maxValue < minValue");
55
61
  }
56
- const schema = { type: "integer" };
57
- if (min !== undefined)
58
- schema["min_value"] = min;
59
- if (max !== undefined)
60
- schema["max_value"] = max;
61
- this.schema = schema;
62
+ // The native engine requires explicit integer bounds. For an unbounded
63
+ // side, default to the signed 128-bit range: the engine's draw is
64
+ // bit-width-weighted (favoring small magnitudes), so a wide finite range
65
+ // reproduces Hypothesis's unbounded-integer distribution closely.
66
+ this.schema = {
67
+ type: "integer",
68
+ min_value: min ?? DEFAULT_BIGINT_MIN,
69
+ max_value: max ?? DEFAULT_BIGINT_MAX,
70
+ };
62
71
  }
63
72
  doDraw(tc) {
64
73
  return parseBigInt(generateRaw(tc, this.schema));
@@ -1 +1 @@
1
- {"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@
16
16
  * npm install --save-dev @hegeldev/hegel
17
17
  * ```
18
18
  *
19
- * Hegel requires Node 16+. Bun and Deno are not currently supported.
19
+ * Hegel requires Node 20.11+. Bun and Deno are not currently supported.
20
20
  *
21
21
  * ## Write your first test
22
22
  *
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@
16
16
  * npm install --save-dev @hegeldev/hegel
17
17
  * ```
18
18
  *
19
- * Hegel requires Node 16+. Bun and Deno are not currently supported.
19
+ * Hegel requires Node 20.11+. Bun and Deno are not currently supported.
20
20
  *
21
21
  * ## Write your first test
22
22
  *
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Thin, typed binding to the native `libhegel` C ABI (see
3
+ * `hegel-rust/hegel-c/include/hegel.h`, version 0.23.0) via {@link koffi}.
4
+ *
5
+ * The {@link Libhegel} class owns the loaded library's function pointers and
6
+ * exposes ergonomic wrappers. Every fallible call takes a `hegel_context_t*`
7
+ * first argument and returns a `hegel_result_t` code (`HEGEL_OK` is zero;
8
+ * negatives are errors), writing any value it produces — a handle, a string, a
9
+ * count — through a trailing out-parameter. The wrappers map those codes to
10
+ * thrown errors ({@link StopTestError} / {@link AssumeError} for the
11
+ * choice-budget / rejected-draw cases, otherwise {@link LibhegelError} carrying
12
+ * the diagnostic from `hegel_context_last_error`) and read the out-parameters
13
+ * back into JS values.
14
+ *
15
+ * libhegel frees nothing for you: every handle from a constructor
16
+ * (`hegel_context_new`, `hegel_settings_new`, `hegel_run_start`,
17
+ * `hegel_test_case_from_blob`) must be released by the caller with its matching
18
+ * free (the runner does so in `finally` blocks). Test cases from
19
+ * `hegel_next_test_case` are borrowed and released by `hegel_run_free`.
20
+ *
21
+ * @packageDocumentation
22
+ */
23
+ import { type LibraryHandle } from "koffi";
24
+ /** Opaque libhegel handle (koffi pointer). `null` signals a failed call. */
25
+ export type Ptr = unknown;
26
+ /** `hegel_status_t` — outcome of a single test case. */
27
+ export declare const Status: {
28
+ readonly VALID: 0;
29
+ readonly INVALID: 1;
30
+ readonly OVERRUN: 2;
31
+ readonly INTERESTING: 3;
32
+ };
33
+ /** `hegel_run_status_t` — aggregate outcome of a finished run. */
34
+ export declare const RunStatus: {
35
+ readonly PASSED: 0;
36
+ readonly FAILED: 1;
37
+ readonly ERROR: 2;
38
+ };
39
+ /** `hegel_verbosity_t`. */
40
+ export declare const NativeVerbosity: {
41
+ readonly QUIET: 0;
42
+ readonly NORMAL: 1;
43
+ readonly VERBOSE: 2;
44
+ readonly DEBUG: 3;
45
+ };
46
+ /** An error returned by a fallible libhegel call. */
47
+ export declare class LibhegelError extends Error {
48
+ readonly code: number;
49
+ constructor(message: string, code: number);
50
+ }
51
+ /**
52
+ * The set of C functions bound from the shared library.
53
+ *
54
+ * Fallible calls return the `hegel_result_t` code and write their handle / value
55
+ * through a trailing JS out-array (`[null]`, `[0]`); the infallible-for-our-use
56
+ * accessors (constructors, frees, setters, result getters) are presented here as
57
+ * value-returning wrappers, with the C ABI's `out_*` marshalling and the
58
+ * always-`HEGEL_OK` return code absorbed by {@link bindLibrary}.
59
+ */
60
+ export interface Bindings {
61
+ contextNew: () => Ptr;
62
+ contextFree: (ctx: Ptr) => void;
63
+ contextLastError: (ctx: Ptr) => string | null;
64
+ settingsNew: () => Ptr;
65
+ settingsFree: (s: Ptr) => void;
66
+ settingsTestCases: (s: Ptr, n: number) => void;
67
+ settingsVerbosity: (s: Ptr, v: number) => void;
68
+ settingsSeed: (s: Ptr, seed: bigint, hasSeed: boolean) => void;
69
+ settingsDerandomize: (s: Ptr, on: boolean) => void;
70
+ settingsDatabase: (ctx: Ptr, s: Ptr, db: string | null) => void;
71
+ settingsDatabaseKey: (ctx: Ptr, s: Ptr, key: string | null) => void;
72
+ settingsSuppressHealthCheck: (s: Ptr, checks: number) => void;
73
+ runStart: (ctx: Ptr, settings: Ptr, out: Ptr[]) => number;
74
+ nextTestCase: (ctx: Ptr, run: Ptr, out: Ptr[]) => number;
75
+ runResult: (ctx: Ptr, run: Ptr, out: Ptr[]) => number;
76
+ runFree: (run: Ptr) => void;
77
+ testCaseFromBlob: (ctx: Ptr, s: Ptr, blob: string | null, out: Ptr[]) => number;
78
+ testCaseFree: (tc: Ptr) => void;
79
+ generate: (ctx: Ptr, tc: Ptr, schema: Buffer, schemaLen: number, out: Ptr[], outLen: (number | bigint)[]) => number;
80
+ startSpan: (ctx: Ptr, tc: Ptr, label: number) => number;
81
+ stopSpan: (ctx: Ptr, tc: Ptr, discard: boolean) => number;
82
+ newCollection: (ctx: Ptr, tc: Ptr, min: number, max: bigint, out: (number | bigint)[]) => number;
83
+ collectionMore: (ctx: Ptr, tc: Ptr, id: bigint, out: boolean[]) => number;
84
+ collectionReject: (ctx: Ptr, tc: Ptr, id: bigint, why: string | null) => number;
85
+ markComplete: (ctx: Ptr, tc: Ptr, status: number, origin: string | null) => number;
86
+ runResultStatus: (r: Ptr) => number;
87
+ runResultError: (r: Ptr) => string | null;
88
+ runResultFailureCount: (r: Ptr) => number;
89
+ runResultFailure: (r: Ptr, index: number) => Ptr;
90
+ failureOrigin: (f: Ptr) => string | null;
91
+ failureReproductionBlob: (f: Ptr) => string | null;
92
+ version: () => string;
93
+ }
94
+ /**
95
+ * Bind every libhegel function used by the client against a loaded koffi
96
+ * library handle.
97
+ *
98
+ * Calls that cannot fail for the inputs the client gives them (constructors,
99
+ * frees, setters, result getters) pass a NULL context — which the ABI accepts,
100
+ * simply opting out of error messages — and discard the result code here; the
101
+ * genuinely fallible calls return the code for {@link Libhegel} to map to an
102
+ * exception.
103
+ */
104
+ export declare function bindLibrary(lib: LibraryHandle): Bindings;
105
+ /**
106
+ * High-level wrapper over the libhegel C ABI.
107
+ */
108
+ export declare class Libhegel {
109
+ private readonly fns;
110
+ constructor(fns: Bindings);
111
+ /** Load libhegel from a shared-library path. */
112
+ static load(path: string): Libhegel;
113
+ version(): string;
114
+ newContext(): Ptr;
115
+ freeContext(ctx: Ptr): void;
116
+ lastError(ctx: Ptr): string;
117
+ newSettings(): Ptr;
118
+ freeSettings(s: Ptr): void;
119
+ setTestCases(s: Ptr, n: number): void;
120
+ setVerbosity(s: Ptr, v: number): void;
121
+ setSeed(s: Ptr, seed: bigint): void;
122
+ setDerandomize(s: Ptr, on: boolean): void;
123
+ setDatabase(ctx: Ptr, s: Ptr, db: string | null): void;
124
+ setDatabaseKey(ctx: Ptr, s: Ptr, key: string): void;
125
+ setSuppressHealthCheck(s: Ptr, checks: number): void;
126
+ /** Start a run. Throws {@link LibhegelError} on failure. */
127
+ runStart(ctx: Ptr, settings: Ptr): Ptr;
128
+ /**
129
+ * Pull the next test case, or `null` when the run is finished. Throws if the
130
+ * engine reported a mid-run error (e.g. the previous case was not completed).
131
+ */
132
+ nextTestCase(ctx: Ptr, run: Ptr): Ptr | null;
133
+ /** Read the aggregated run result. Throws on failure. */
134
+ runResult(ctx: Ptr, run: Ptr): Ptr;
135
+ freeRun(run: Ptr): void;
136
+ /**
137
+ * Build a standalone test case that replays a base64 failure blob (from
138
+ * {@link reproductionBlob}). Owned by the caller — release with
139
+ * {@link freeTestCase}. Throws {@link LibhegelError} on a malformed blob.
140
+ */
141
+ testCaseFromBlob(ctx: Ptr, settings: Ptr, blob: string | null): Ptr;
142
+ freeTestCase(tc: Ptr): void;
143
+ /**
144
+ * Map a fallible `int`-returning result code to an exception.
145
+ * `HEGEL_E_STOP_TEST` becomes {@link StopTestError}, `HEGEL_E_ASSUME` becomes
146
+ * {@link AssumeError}; any other non-OK code becomes a {@link LibhegelError}
147
+ * carrying the context diagnostic.
148
+ */
149
+ private check;
150
+ /** Draw a CBOR value for the given CBOR-encoded schema. */
151
+ generate(ctx: Ptr, tc: Ptr, schema: Buffer): Buffer;
152
+ startSpan(ctx: Ptr, tc: Ptr, label: number): void;
153
+ stopSpan(ctx: Ptr, tc: Ptr, discard: boolean): void;
154
+ newCollection(ctx: Ptr, tc: Ptr, min: number, max?: number): bigint;
155
+ collectionMore(ctx: Ptr, tc: Ptr, id: bigint): boolean;
156
+ collectionReject(ctx: Ptr, tc: Ptr, id: bigint, why: string | null): void;
157
+ markComplete(ctx: Ptr, tc: Ptr, status: number, origin: string | null): void;
158
+ runStatus(r: Ptr): number;
159
+ runError(r: Ptr): string | null;
160
+ failureCount(r: Ptr): number;
161
+ failure(r: Ptr, index: number): Ptr;
162
+ failureOrigin(fp: Ptr): string;
163
+ /**
164
+ * The failure's base64 reproduce blob, or `null` if the engine produced none.
165
+ * Replay it via {@link testCaseFromBlob} to surface the test's own error.
166
+ */
167
+ reproductionBlob(fp: Ptr): string | null;
168
+ }
169
+ //# sourceMappingURL=libhegel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libhegel.d.ts","sourceRoot":"","sources":["../src/libhegel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGlD,4EAA4E;AAC5E,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,wDAAwD;AACxD,eAAO,MAAM,MAAM;;;;;CAKT,CAAC;AAEX,kEAAkE;AAClE,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,2BAA2B;AAC3B,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AAOX,qDAAqD;AACrD,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,GAAG,CAAC;IACtB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC;IAE9C,WAAW,EAAE,MAAM,GAAG,CAAC;IACvB,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpE,2BAA2B,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9D,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;IAC1D,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;IACzD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;IACtD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAE5B,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;IAChF,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAEhC,QAAQ,EAAE,CACR,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,GAAG,EAAE,EACV,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KACxB,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAC1D,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC;IACjG,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IAC1E,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAChF,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAEnF,eAAe,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IAC1C,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC;IACzC,uBAAuB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC;IAEnD,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,QAAQ,CAwIxD;AAID;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;gBAEnB,GAAG,EAAE,QAAQ;IAIzB,gDAAgD;IAChD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAInC,OAAO,IAAI,MAAM;IAIjB,UAAU,IAAI,GAAG;IAIjB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAI3B,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAI3B,WAAW,IAAI,GAAG;IAIlB,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAI1B,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAIzC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItD,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAInD,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpD,4DAA4D;IAC5D,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG;IAMtC;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;IAM5C,yDAAyD;IACzD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG;IAMlC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAIvB;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG;IAUnE,YAAY,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,KAAK;IAeb,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IASnD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAInD,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAOnE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMtD,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIzE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI5E,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM;IAIzB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IAI/B,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM;IAI5B,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;IAInC,aAAa,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM;IAI9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;CAGzC"}