@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.
- package/README.md +10 -4
- package/dist/cbor.d.ts +15 -0
- package/dist/cbor.d.ts.map +1 -0
- package/dist/cbor.js +32 -0
- package/dist/cbor.js.map +1 -0
- package/dist/checksums.d.ts +16 -0
- package/dist/checksums.d.ts.map +1 -0
- package/dist/checksums.js +26 -0
- package/dist/checksums.js.map +1 -0
- package/dist/generators/numeric.d.ts.map +1 -1
- package/dist/generators/numeric.js +16 -7
- package/dist/generators/numeric.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/libhegel.d.ts +169 -0
- package/dist/libhegel.d.ts.map +1 -0
- package/dist/libhegel.js +338 -0
- package/dist/libhegel.js.map +1 -0
- package/dist/locate.d.ts +42 -0
- package/dist/locate.d.ts.map +1 -0
- package/dist/locate.js +94 -0
- package/dist/locate.js.map +1 -0
- package/dist/runner.d.ts +30 -22
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +150 -201
- package/dist/runner.js.map +1 -1
- package/dist/session.d.ts +16 -13
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +32 -145
- package/dist/session.js.map +1 -1
- package/dist/testCase.d.ts +7 -7
- package/dist/testCase.d.ts.map +1 -1
- package/dist/testCase.js +1 -5
- package/dist/testCase.js.map +1 -1
- package/dist/wtf8.d.ts +2 -0
- package/dist/wtf8.d.ts.map +1 -1
- package/dist/wtf8.js +2 -0
- package/dist/wtf8.js.map +1 -1
- package/native/libhegel-darwin-arm64.dylib +0 -0
- package/native/libhegel-linux-amd64.so +0 -0
- package/native/libhegel-linux-arm64.so +0 -0
- package/native/libhegel-windows-amd64.dll +0 -0
- package/native/libhegel-windows-arm64.dll +0 -0
- package/package.json +9 -11
- package/dist/connection.d.ts +0 -82
- package/dist/connection.d.ts.map +0 -1
- package/dist/connection.js +0 -231
- package/dist/connection.js.map +0 -1
- package/dist/crc32.d.ts +0 -13
- package/dist/crc32.d.ts.map +0 -1
- package/dist/crc32.js +0 -30
- package/dist/crc32.js.map +0 -1
- package/dist/protocol.d.ts +0 -25
- package/dist/protocol.d.ts.map +0 -1
- package/dist/protocol.js +0 -77
- package/dist/protocol.js.map +0 -1
- package/dist/uv-install.sh +0 -2226
- package/dist/uv.d.ts +0 -20
- package/dist/uv.d.ts.map +0 -1
- package/dist/uv.js +0 -103
- 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
|
|
19
|
+
Hegel requires Node 20.11+. Bun and Deno are not currently supported.
|
|
20
20
|
|
|
21
|
-
Hegel
|
|
22
|
-
|
|
23
|
-
|
|
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
|
package/dist/cbor.js.map
ADDED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOtD,SAAS,YAAY,CAAC,GAAY;IAChC,oEAAoE;IACpE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,GAAa,CAAC;AACvB,CAAC;AAED,MAAM,iBAAkB,SAAQ,SAAiB;IAC9B,MAAM,CAA0B;IAEjD,YAAY,OAAwB;QAClC,KAAK,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,gBAAgB,CAAC;QACzD,MAAM,GAAG,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,gBAAgB,CAAC;QACzD,IAAI,GAAG,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAClE,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -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"}
|