@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/dist/runner.js CHANGED
@@ -1,13 +1,15 @@
1
1
  /**
2
- * Test runner: Hegel builder, Settings, and test lifecycle.
2
+ * Test runner: the `hegel.test` / `hegel.testAsync` entry points, Settings, and
3
+ * the test lifecycle driving the native libhegel run loop.
3
4
  *
4
5
  * @packageDocumentation
5
6
  */
6
7
  import * as fs from "node:fs";
7
8
  import * as path from "node:path";
8
- import { HegelSession } from "./session.js";
9
+ import { encode, decode } from "./cbor.js";
9
10
  import { TestCase, StopTestError, AssumeError } from "./testCase.js";
10
- import { encode, decode } from "cbor-x";
11
+ import { getLibhegel } from "./session.js";
12
+ import { Status, RunStatus, NativeVerbosity } from "./libhegel.js";
11
13
  export var Verbosity;
12
14
  (function (Verbosity) {
13
15
  Verbosity["Quiet"] = "quiet";
@@ -22,6 +24,19 @@ export var HealthCheck;
22
24
  HealthCheck["TestCasesTooLarge"] = "test_cases_too_large";
23
25
  HealthCheck["LargeInitialTestCase"] = "large_initial_test_case";
24
26
  })(HealthCheck || (HealthCheck = {}));
27
+ const VERBOSITY_TO_NATIVE = {
28
+ [Verbosity.Quiet]: NativeVerbosity.QUIET,
29
+ [Verbosity.Normal]: NativeVerbosity.NORMAL,
30
+ [Verbosity.Verbose]: NativeVerbosity.VERBOSE,
31
+ [Verbosity.Debug]: NativeVerbosity.DEBUG,
32
+ };
33
+ // `hegel_health_check_t` bit flags.
34
+ const HEALTH_CHECK_TO_BIT = {
35
+ [HealthCheck.FilterTooMuch]: 1 << 0,
36
+ [HealthCheck.TooSlow]: 1 << 1,
37
+ [HealthCheck.TestCasesTooLarge]: 1 << 2,
38
+ [HealthCheck.LargeInitialTestCase]: 1 << 3,
39
+ };
25
40
  export const Database = {
26
41
  unset: { kind: "unset" },
27
42
  disabled: { kind: "disabled" },
@@ -61,110 +76,56 @@ export function defaultSettings() {
61
76
  };
62
77
  }
63
78
  // ---------------------------------------------------------------------------
64
- // ServerDataSource
79
+ // NativeDataSource
65
80
  // ---------------------------------------------------------------------------
66
81
  /**
67
- * DataSource implementation that communicates with the hegel server
68
- * over a multiplexed stream connection.
82
+ * {@link DataSource} backed by a native libhegel test case. All draws, spans
83
+ * and collection operations dispatch to the engine via the {@link Libhegel}
84
+ * C-ABI wrapper.
69
85
  */
70
- export class ServerDataSource {
71
- stream;
72
- connection;
73
- _aborted = false;
74
- constructor(connection, stream) {
75
- this.connection = connection;
76
- this.stream = stream;
77
- }
78
- sendRequest(command, payload = {}) {
79
- /* v8 ignore start: reachable via stopSpan after abort, but swallowed by catch */
80
- if (this._aborted) {
81
- throw new StopTestError();
82
- }
83
- /* v8 ignore stop */
84
- const message = { command, ...payload };
85
- const encoded = encode(message);
86
- const id = this.stream.sendRequest(encoded);
87
- const responseBytes = this.stream.receiveReply(id);
88
- const response = decode(responseBytes);
89
- if ("error" in response) {
90
- const errorType = response["type"];
91
- const errorMsg = JSON.stringify(response["error"]);
92
- if (errorMsg.includes("overflow") ||
93
- errorMsg.includes("StopTest") ||
94
- errorType.includes("overflow") ||
95
- errorType.includes("StopTest")) {
96
- this.stream.markClosed();
97
- this._aborted = true;
98
- throw new StopTestError();
99
- }
100
- /* v8 ignore start: FlakyStrategyDefinition is detected in test_done results, not here */
101
- if (errorMsg.includes("FlakyStrategyDefinition") || errorMsg.includes("FlakyReplay")) {
102
- this.stream.markClosed();
103
- this._aborted = true;
104
- throw new StopTestError();
105
- }
106
- /* v8 ignore stop */
107
- /* v8 ignore start: requires server to crash mid-request */
108
- if (this.connection.hasServerExited()) {
109
- throw new Error(`Server process crashed`);
110
- }
111
- /* v8 ignore stop */
112
- throw new Error(`Server error (${errorType}): ${errorMsg}`);
113
- }
114
- return response["result"];
86
+ export class NativeDataSource {
87
+ lib;
88
+ ctx;
89
+ tc;
90
+ constructor(lib, ctx, tc) {
91
+ this.lib = lib;
92
+ this.ctx = ctx;
93
+ this.tc = tc;
115
94
  }
116
95
  generate(schema) {
117
- return this.sendRequest("generate", { schema });
96
+ const out = this.lib.generate(this.ctx, this.tc, encode(schema));
97
+ return decode(out);
118
98
  }
119
99
  startSpan(label) {
120
- this.sendRequest("start_span", { label });
100
+ this.lib.startSpan(this.ctx, this.tc, label);
121
101
  }
122
102
  stopSpan(discard) {
123
- this.sendRequest("stop_span", { discard });
103
+ this.lib.stopSpan(this.ctx, this.tc, discard);
124
104
  }
125
105
  newCollection(minSize, maxSize) {
126
- const payload = { min_size: minSize };
127
- if (maxSize !== undefined) {
128
- payload["max_size"] = maxSize;
129
- }
130
- return this.sendRequest("new_collection", payload);
106
+ return Number(this.lib.newCollection(this.ctx, this.tc, minSize, maxSize));
131
107
  }
132
108
  collectionMore(collectionId) {
133
- return this.sendRequest("collection_more", {
134
- collection_id: collectionId,
135
- });
109
+ return this.lib.collectionMore(this.ctx, this.tc, BigInt(collectionId));
136
110
  }
137
111
  collectionReject(collectionId, why) {
138
- const payload = {
139
- collection_id: collectionId,
140
- };
141
- /* v8 ignore start: callers always provide why */
142
- if (why !== undefined) {
143
- payload["why"] = why;
144
- }
145
- /* v8 ignore stop */
146
- this.sendRequest("collection_reject", payload);
112
+ this.lib.collectionReject(this.ctx, this.tc, BigInt(collectionId), why ?? null);
147
113
  }
148
114
  markComplete(status, origin) {
149
- try {
150
- const message = {
151
- command: "mark_complete",
152
- status,
153
- origin: origin ?? null,
154
- };
155
- const encoded = encode(message);
156
- const id = this.stream.sendRequest(encoded);
157
- this.stream.receiveReply(id);
158
- }
159
- catch {
160
- // ignore errors during mark_complete
161
- }
162
- this.stream.close();
163
- }
164
- testAborted() {
165
- return this._aborted;
115
+ this.lib.markComplete(this.ctx, this.tc, status, origin);
166
116
  }
167
117
  }
118
+ const RESULT_TO_STATUS = {
119
+ valid: Status.VALID,
120
+ invalid: Status.INVALID,
121
+ overrun: Status.OVERRUN,
122
+ interesting: Status.INTERESTING,
123
+ };
124
+ /**
125
+ * Extract a stable origin for a thrown error: the first stack frame outside
126
+ * `node_modules` (the user's test code). The shrinker groups failing inputs by
127
+ * this origin, so it must be stable across calls.
128
+ */
168
129
  function extractOrigin(error) {
169
130
  if (!(error instanceof Error) || !error.stack)
170
131
  return "<unknown>";
@@ -183,7 +144,7 @@ function classifyResult(e, isFinal) {
183
144
  if (e instanceof AssumeError)
184
145
  return { result: { status: "invalid" }, origin: null };
185
146
  if (e instanceof StopTestError)
186
- return { result: { status: "invalid" }, origin: null };
147
+ return { result: { status: "overrun" }, origin: null };
187
148
  if (isFinal) {
188
149
  const msg = e instanceof Error ? e.message : String(e);
189
150
  console.error(`\n${msg}`);
@@ -193,11 +154,8 @@ function classifyResult(e, isFinal) {
193
154
  }
194
155
  return { result: { status: "interesting", error: e }, origin: extractOrigin(e) };
195
156
  }
196
- function finalizeTestCase(tc, dataSource, result, origin) {
197
- if (tc.testAborted)
198
- return;
199
- const status = result.status === "valid" ? "VALID" : result.status === "invalid" ? "INVALID" : "INTERESTING";
200
- dataSource.markComplete(status, origin);
157
+ function finalizeTestCase(dataSource, result, origin) {
158
+ dataSource.markComplete(RESULT_TO_STATUS[result.status], origin);
201
159
  }
202
160
  export async function runTestCaseAsync(dataSource, testFn, isFinal) {
203
161
  const tc = new TestCase(dataSource, isFinal);
@@ -210,7 +168,7 @@ export async function runTestCaseAsync(dataSource, testFn, isFinal) {
210
168
  catch (e) {
211
169
  ({ result, origin } = classifyResult(e, isFinal));
212
170
  }
213
- finalizeTestCase(tc, dataSource, result, origin);
171
+ finalizeTestCase(dataSource, result, origin);
214
172
  return result;
215
173
  }
216
174
  export function runTestCase(dataSource, testFn, isFinal) {
@@ -224,7 +182,7 @@ export function runTestCase(dataSource, testFn, isFinal) {
224
182
  catch (e) {
225
183
  ({ result, origin } = classifyResult(e, isFinal));
226
184
  }
227
- finalizeTestCase(tc, dataSource, result, origin);
185
+ finalizeTestCase(dataSource, result, origin);
228
186
  return result;
229
187
  }
230
188
  /* v8 ignore start: only runs inside Antithesis */
@@ -270,7 +228,35 @@ function emitAntithesisAssertion(location, passed) {
270
228
  },
271
229
  };
272
230
  fs.appendFileSync(filePath, JSON.stringify(declaration) + "\n" + JSON.stringify(evaluation) + "\n");
273
- /* v8 ignore stop */
231
+ }
232
+ /* v8 ignore stop */
233
+ function databaseKey(testFn) {
234
+ return testFn.toString();
235
+ }
236
+ function configureSettings(lib, ctx, settings, s, testFn) {
237
+ lib.setTestCases(settings, s.testCases);
238
+ lib.setVerbosity(settings, VERBOSITY_TO_NATIVE[s.verbosity]);
239
+ lib.setDerandomize(settings, s.derandomize);
240
+ if (s.seed !== null) {
241
+ lib.setSeed(settings, BigInt(s.seed));
242
+ }
243
+ if (s.database.kind === "disabled") {
244
+ lib.setDatabase(ctx, settings, "");
245
+ }
246
+ else if (s.database.kind === "path") {
247
+ lib.setDatabase(ctx, settings, s.database.path);
248
+ lib.setDatabaseKey(ctx, settings, databaseKey(testFn));
249
+ }
250
+ else {
251
+ lib.setDatabaseKey(ctx, settings, databaseKey(testFn));
252
+ }
253
+ if (s.suppressHealthCheck.length > 0) {
254
+ let mask = 0;
255
+ for (const hc of s.suppressHealthCheck) {
256
+ mask |= HEALTH_CHECK_TO_BIT[hc];
257
+ }
258
+ lib.setSuppressHealthCheck(settings, mask);
259
+ }
274
260
  }
275
261
  export class Hegel {
276
262
  testFn;
@@ -293,113 +279,76 @@ export class Hegel {
293
279
  }
294
280
  /* v8 ignore stop */
295
281
  /**
296
- * Generator that drives the wire protocol but yields a `ServerDataSource`
297
- * (plus an `isFinal` flag) each time a test case needs to be executed.
298
- * The driver ({@link run} or {@link runSync}) calls the user's test body
299
- * and resumes the generator with the resulting {@link TestCaseResult}.
300
- * This factoring lets the sync and async drivers share one implementation
301
- * of the protocol loop.
282
+ * Generator that drives the libhegel run loop, yielding a
283
+ * {@link NativeDataSource} (plus an `isFinal` flag) for each test case the
284
+ * driver ({@link run} or {@link runSync}) should execute the body against. The
285
+ * driver runs the user's body and resumes the generator with the
286
+ * {@link TestCaseResult}. This factoring lets the sync and async drivers share
287
+ * one loop implementation.
288
+ *
289
+ * The engine only *explores* (generate / shrink), so every pumped case is
290
+ * non-final. The client owns the final replays: once the loop drains and the
291
+ * run has failed, each discovered counterexample's reproduce blob is replayed
292
+ * (via `hegel_test_case_from_blob`) as a final case to surface the test's own
293
+ * error for the thrown message.
302
294
  */
303
295
  *runSteps() {
304
- const session = HegelSession.get();
305
- const connection = session.connection;
306
- const testStream = connection.newStream();
307
- // Build run_test message
308
- const suppressNames = this._settings.suppressHealthCheck.map((c) => c);
309
- const runTestMsg = {
310
- command: "run_test",
311
- test_cases: this._settings.testCases,
312
- seed: this._settings.seed,
313
- stream_id: testStream.streamId,
314
- derandomize: this._settings.derandomize,
315
- database_key: Buffer.from(this.testFn.toString()),
316
- };
317
- if (this._settings.database.kind === "disabled") {
318
- runTestMsg["database"] = null;
319
- }
320
- else if (this._settings.database.kind === "path") {
321
- runTestMsg["database"] = this._settings.database.path;
322
- }
323
- if (suppressNames.length > 0) {
324
- runTestMsg["suppress_health_check"] = suppressNames;
325
- }
326
- // Send run_test on control stream
327
- const controlPayload = encode(runTestMsg);
328
- const reqId = session.controlStream.sendRequest(controlPayload);
329
- session.controlStream.receiveReply(reqId);
330
- // Event loop
331
- let resultData;
332
- const ackNull = encode({ result: null });
333
- while (true) {
334
- const [eventId, eventPayload] = testStream.receiveRequest();
335
- const event = decode(eventPayload);
336
- const eventType = event["event"];
337
- if (eventType === "test_case") {
338
- const streamId = event["stream_id"];
339
- const testCaseStream = connection.connectStream(streamId);
340
- // Ack BEFORE running the test
341
- testStream.writeReply(eventId, ackNull);
342
- const ds = new ServerDataSource(connection, testCaseStream);
343
- yield { ds, isFinal: false };
344
- }
345
- else {
346
- /* v8 ignore start: server only sends test_case and test_done events */
347
- if (eventType !== "test_done") {
348
- throw new Error(`Unknown event: ${eventType}`);
296
+ const lib = getLibhegel();
297
+ const ctx = lib.newContext();
298
+ const settings = lib.newSettings();
299
+ try {
300
+ configureSettings(lib, ctx, settings, this._settings, this.testFn);
301
+ const run = lib.runStart(ctx, settings);
302
+ try {
303
+ for (;;) {
304
+ const tc = lib.nextTestCase(ctx, run);
305
+ if (tc === null)
306
+ break;
307
+ const ds = new NativeDataSource(lib, ctx, tc);
308
+ yield { ds, isFinal: false };
309
+ }
310
+ const result = lib.runResult(ctx, run);
311
+ const status = lib.runStatus(result);
312
+ /* v8 ignore start: only runs inside Antithesis */
313
+ if (isRunningInAntithesis() && this._testLocation) {
314
+ emitAntithesisAssertion(this._testLocation, status === RunStatus.PASSED);
349
315
  }
350
316
  /* v8 ignore stop */
351
- const ackTrue = encode({ result: true });
352
- testStream.writeReply(eventId, ackTrue);
353
- resultData = event["results"];
354
- break;
317
+ if (status === RunStatus.PASSED) {
318
+ return;
319
+ }
320
+ if (status === RunStatus.ERROR) {
321
+ throw new Error(`Property test failed: ${lib.runError(result)}`);
322
+ }
323
+ // RunStatus.FAILED: replay each distinct counterexample's blob as a
324
+ // final, client-owned case. A genuine counterexample re-fails on replay,
325
+ // so the body throws its own error again — captured here for the message.
326
+ const count = lib.failureCount(result);
327
+ const origins = [];
328
+ let finalError = null;
329
+ for (let i = 0; i < count; i++) {
330
+ const failure = lib.failure(result, i);
331
+ origins.push(lib.failureOrigin(failure));
332
+ const replayTc = lib.testCaseFromBlob(ctx, settings, lib.reproductionBlob(failure));
333
+ try {
334
+ const ds = new NativeDataSource(lib, ctx, replayTc);
335
+ const replay = yield { ds, isFinal: true };
336
+ finalError = replay.error;
337
+ }
338
+ finally {
339
+ lib.freeTestCase(replayTc);
340
+ }
341
+ }
342
+ const detail = finalError instanceof Error ? finalError.message : String(finalError);
343
+ throw new Error(`Property test failed: ${detail} [${origins.join("; ")}]`);
355
344
  }
356
- }
357
- // Check for server-side errors
358
- /* v8 ignore start: requires server to report error in test_done results */
359
- if (resultData["error"]) {
360
- throw new Error(`Server error: ${resultData["error"]}`);
361
- }
362
- /* v8 ignore stop */
363
- if (resultData["health_check_failure"]) {
364
- throw new Error(`Health check failure:\n${resultData["health_check_failure"]}`);
365
- }
366
- if (resultData["flaky"]) {
367
- throw new Error(`Flaky test detected: ${resultData["flaky"]}`);
368
- }
369
- const nInteresting = resultData["interesting_test_cases"];
370
- // Final replays for interesting test cases
371
- let finalResult = null;
372
- for (let i = 0; i < nInteresting; i++) {
373
- const [eventId, eventPayload] = testStream.receiveRequest();
374
- const event = decode(eventPayload);
375
- const streamId = event["stream_id"];
376
- const testCaseStream = connection.connectStream(streamId);
377
- testStream.writeReply(eventId, ackNull);
378
- const ds = new ServerDataSource(connection, testCaseStream);
379
- const result = yield { ds, isFinal: true };
380
- /* v8 ignore start: replay cases are always interesting */
381
- if (result.status === "interesting") {
382
- finalResult = result;
345
+ finally {
346
+ lib.freeRun(run);
383
347
  }
384
- /* v8 ignore stop */
385
348
  }
386
- testStream.close();
387
- const passed = resultData["passed"];
388
- const testFailed = !passed;
389
- /* v8 ignore start: only runs inside Antithesis */
390
- if (isRunningInAntithesis() && this._testLocation) {
391
- emitAntithesisAssertion(this._testLocation, !testFailed);
392
- }
393
- /* v8 ignore stop */
394
- if (testFailed) {
395
- let msg = "unknown";
396
- /* v8 ignore start: finalResult is always set when test fails with interesting cases */
397
- if (finalResult && finalResult.status === "interesting") {
398
- const err = finalResult.error;
399
- msg = err instanceof Error ? err.message : String(err);
400
- }
401
- /* v8 ignore stop */
402
- throw new Error(`Property test failed: ${msg}`);
349
+ finally {
350
+ lib.freeSettings(settings);
351
+ lib.freeContext(ctx);
403
352
  }
404
353
  }
405
354
  async run() {
@@ -429,8 +378,8 @@ export class Hegel {
429
378
  * @example
430
379
  * ```ts
431
380
  * import { test } from 'vitest';
432
- * import * as hegel from 'hegel';
433
- * import * as gs from 'hegel/generators';
381
+ * import * as hegel from '@hegeldev/hegel';
382
+ * import * as gs from '@hegeldev/hegel/generators';
434
383
  *
435
384
  * test('addition is commutative', () =>
436
385
  * hegel.test((tc) => {
@@ -459,8 +408,8 @@ export function test(testFn, settings) {
459
408
  * @example
460
409
  * ```ts
461
410
  * import { test } from 'vitest';
462
- * import * as hegel from 'hegel';
463
- * import * as gs from 'hegel/generators';
411
+ * import * as hegel from '@hegeldev/hegel';
412
+ * import * as gs from '@hegeldev/hegel/generators';
464
413
  *
465
414
  * test('my async test', () =>
466
415
  * hegel.testAsync(async (tc) => {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -1,19 +1,22 @@
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 { Connection, Stream } from "./connection.js";
10
- export declare const HEGEL_SERVER_VERSION = "0.9.1";
11
- export declare class HegelSession {
12
- readonly connection: Connection;
13
- private _controlStream;
14
- private constructor();
15
- get controlStream(): Stream;
16
- static get(): HegelSession;
17
- private static init;
18
- }
11
+ import { Libhegel } from "./libhegel.js";
12
+ /**
13
+ * Verify the loaded library's version is ABI-compatible with the one this
14
+ * client was built against. libhegel is pre-1.0, so its C ABI can change
15
+ * between minor versions; we require the `major.minor` to match.
16
+ */
17
+ export declare function checkVersion(actual: string, expected?: string): void;
18
+ /** Locate, load and version-check the native library. */
19
+ export declare function loadLibhegel(): Libhegel;
20
+ /** Returns the process-global libhegel handle, loading it on first use. */
21
+ export declare function getLibhegel(): Libhegel;
19
22
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIrD,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAkD5C,qBAAa,YAAY;IACvB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO;IAKP,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,MAAM,CAAC,GAAG,IAAI,YAAY;IAO1B,OAAO,CAAC,MAAM,CAAC,IAAI;CA4EpB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAWzC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,IAAI,CAQtF;AAED,yDAAyD;AACzD,wBAAgB,YAAY,IAAI,QAAQ,CAIvC;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,IAAI,QAAQ,CAKtC"}