@hegeldev/hegel 0.2.3 → 0.3.1

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 +171 -0
  16. package/dist/libhegel.d.ts.map +1 -0
  17. package/dist/libhegel.js +343 -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 +31 -22
  24. package/dist/runner.d.ts.map +1 -1
  25. package/dist/runner.js +152 -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" },
@@ -58,113 +73,60 @@ export function defaultSettings() {
58
73
  derandomize: inCI,
59
74
  database: inCI ? Database.disabled : Database.unset,
60
75
  suppressHealthCheck: [],
76
+ reportMultipleFailures: false,
61
77
  };
62
78
  }
63
79
  // ---------------------------------------------------------------------------
64
- // ServerDataSource
80
+ // NativeDataSource
65
81
  // ---------------------------------------------------------------------------
66
82
  /**
67
- * DataSource implementation that communicates with the hegel server
68
- * over a multiplexed stream connection.
83
+ * {@link DataSource} backed by a native libhegel test case. All draws, spans
84
+ * and collection operations dispatch to the engine via the {@link Libhegel}
85
+ * C-ABI wrapper.
69
86
  */
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"];
87
+ export class NativeDataSource {
88
+ lib;
89
+ ctx;
90
+ tc;
91
+ constructor(lib, ctx, tc) {
92
+ this.lib = lib;
93
+ this.ctx = ctx;
94
+ this.tc = tc;
115
95
  }
116
96
  generate(schema) {
117
- return this.sendRequest("generate", { schema });
97
+ const out = this.lib.generate(this.ctx, this.tc, encode(schema));
98
+ return decode(out);
118
99
  }
119
100
  startSpan(label) {
120
- this.sendRequest("start_span", { label });
101
+ this.lib.startSpan(this.ctx, this.tc, label);
121
102
  }
122
103
  stopSpan(discard) {
123
- this.sendRequest("stop_span", { discard });
104
+ this.lib.stopSpan(this.ctx, this.tc, discard);
124
105
  }
125
106
  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);
107
+ return Number(this.lib.newCollection(this.ctx, this.tc, minSize, maxSize));
131
108
  }
132
109
  collectionMore(collectionId) {
133
- return this.sendRequest("collection_more", {
134
- collection_id: collectionId,
135
- });
110
+ return this.lib.collectionMore(this.ctx, this.tc, BigInt(collectionId));
136
111
  }
137
112
  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);
113
+ this.lib.collectionReject(this.ctx, this.tc, BigInt(collectionId), why ?? null);
147
114
  }
148
115
  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;
116
+ this.lib.markComplete(this.ctx, this.tc, status, origin);
166
117
  }
167
118
  }
119
+ const RESULT_TO_STATUS = {
120
+ valid: Status.VALID,
121
+ invalid: Status.INVALID,
122
+ overrun: Status.OVERRUN,
123
+ interesting: Status.INTERESTING,
124
+ };
125
+ /**
126
+ * Extract a stable origin for a thrown error: the first stack frame outside
127
+ * `node_modules` (the user's test code). The shrinker groups failing inputs by
128
+ * this origin, so it must be stable across calls.
129
+ */
168
130
  function extractOrigin(error) {
169
131
  if (!(error instanceof Error) || !error.stack)
170
132
  return "<unknown>";
@@ -183,7 +145,7 @@ function classifyResult(e, isFinal) {
183
145
  if (e instanceof AssumeError)
184
146
  return { result: { status: "invalid" }, origin: null };
185
147
  if (e instanceof StopTestError)
186
- return { result: { status: "invalid" }, origin: null };
148
+ return { result: { status: "overrun" }, origin: null };
187
149
  if (isFinal) {
188
150
  const msg = e instanceof Error ? e.message : String(e);
189
151
  console.error(`\n${msg}`);
@@ -193,11 +155,8 @@ function classifyResult(e, isFinal) {
193
155
  }
194
156
  return { result: { status: "interesting", error: e }, origin: extractOrigin(e) };
195
157
  }
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);
158
+ function finalizeTestCase(dataSource, result, origin) {
159
+ dataSource.markComplete(RESULT_TO_STATUS[result.status], origin);
201
160
  }
202
161
  export async function runTestCaseAsync(dataSource, testFn, isFinal) {
203
162
  const tc = new TestCase(dataSource, isFinal);
@@ -210,7 +169,7 @@ export async function runTestCaseAsync(dataSource, testFn, isFinal) {
210
169
  catch (e) {
211
170
  ({ result, origin } = classifyResult(e, isFinal));
212
171
  }
213
- finalizeTestCase(tc, dataSource, result, origin);
172
+ finalizeTestCase(dataSource, result, origin);
214
173
  return result;
215
174
  }
216
175
  export function runTestCase(dataSource, testFn, isFinal) {
@@ -224,7 +183,7 @@ export function runTestCase(dataSource, testFn, isFinal) {
224
183
  catch (e) {
225
184
  ({ result, origin } = classifyResult(e, isFinal));
226
185
  }
227
- finalizeTestCase(tc, dataSource, result, origin);
186
+ finalizeTestCase(dataSource, result, origin);
228
187
  return result;
229
188
  }
230
189
  /* v8 ignore start: only runs inside Antithesis */
@@ -270,7 +229,36 @@ function emitAntithesisAssertion(location, passed) {
270
229
  },
271
230
  };
272
231
  fs.appendFileSync(filePath, JSON.stringify(declaration) + "\n" + JSON.stringify(evaluation) + "\n");
273
- /* v8 ignore stop */
232
+ }
233
+ /* v8 ignore stop */
234
+ function databaseKey(testFn) {
235
+ return testFn.toString();
236
+ }
237
+ function configureSettings(lib, ctx, settings, s, testFn) {
238
+ lib.setTestCases(settings, s.testCases);
239
+ lib.setVerbosity(settings, VERBOSITY_TO_NATIVE[s.verbosity]);
240
+ lib.setDerandomize(settings, s.derandomize);
241
+ lib.setReportMultipleFailures(settings, s.reportMultipleFailures);
242
+ if (s.seed !== null) {
243
+ lib.setSeed(settings, BigInt(s.seed));
244
+ }
245
+ if (s.database.kind === "disabled") {
246
+ lib.setDatabase(ctx, settings, "");
247
+ }
248
+ else if (s.database.kind === "path") {
249
+ lib.setDatabase(ctx, settings, s.database.path);
250
+ lib.setDatabaseKey(ctx, settings, databaseKey(testFn));
251
+ }
252
+ else {
253
+ lib.setDatabaseKey(ctx, settings, databaseKey(testFn));
254
+ }
255
+ if (s.suppressHealthCheck.length > 0) {
256
+ let mask = 0;
257
+ for (const hc of s.suppressHealthCheck) {
258
+ mask |= HEALTH_CHECK_TO_BIT[hc];
259
+ }
260
+ lib.setSuppressHealthCheck(settings, mask);
261
+ }
274
262
  }
275
263
  export class Hegel {
276
264
  testFn;
@@ -293,113 +281,76 @@ export class Hegel {
293
281
  }
294
282
  /* v8 ignore stop */
295
283
  /**
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.
284
+ * Generator that drives the libhegel run loop, yielding a
285
+ * {@link NativeDataSource} (plus an `isFinal` flag) for each test case the
286
+ * driver ({@link run} or {@link runSync}) should execute the body against. The
287
+ * driver runs the user's body and resumes the generator with the
288
+ * {@link TestCaseResult}. This factoring lets the sync and async drivers share
289
+ * one loop implementation.
290
+ *
291
+ * The engine only *explores* (generate / shrink), so every pumped case is
292
+ * non-final. The client owns the final replays: once the loop drains and the
293
+ * run has failed, each discovered counterexample's reproduce blob is replayed
294
+ * (via `hegel_test_case_from_blob`) as a final case to surface the test's own
295
+ * error for the thrown message.
302
296
  */
303
297
  *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}`);
298
+ const lib = getLibhegel();
299
+ const ctx = lib.newContext();
300
+ const settings = lib.newSettings();
301
+ try {
302
+ configureSettings(lib, ctx, settings, this._settings, this.testFn);
303
+ const run = lib.runStart(ctx, settings);
304
+ try {
305
+ for (;;) {
306
+ const tc = lib.nextTestCase(ctx, run);
307
+ if (tc === null)
308
+ break;
309
+ const ds = new NativeDataSource(lib, ctx, tc);
310
+ yield { ds, isFinal: false };
311
+ }
312
+ const result = lib.runResult(ctx, run);
313
+ const status = lib.runStatus(result);
314
+ /* v8 ignore start: only runs inside Antithesis */
315
+ if (isRunningInAntithesis() && this._testLocation) {
316
+ emitAntithesisAssertion(this._testLocation, status === RunStatus.PASSED);
349
317
  }
350
318
  /* v8 ignore stop */
351
- const ackTrue = encode({ result: true });
352
- testStream.writeReply(eventId, ackTrue);
353
- resultData = event["results"];
354
- break;
319
+ if (status === RunStatus.PASSED) {
320
+ return;
321
+ }
322
+ if (status === RunStatus.ERROR) {
323
+ throw new Error(`Property test failed: ${lib.runError(result)}`);
324
+ }
325
+ // RunStatus.FAILED: replay each distinct counterexample's blob as a
326
+ // final, client-owned case. A genuine counterexample re-fails on replay,
327
+ // so the body throws its own error again — captured here for the message.
328
+ const count = lib.failureCount(result);
329
+ const origins = [];
330
+ let finalError = null;
331
+ for (let i = 0; i < count; i++) {
332
+ const failure = lib.failure(result, i);
333
+ origins.push(lib.failureOrigin(failure));
334
+ const replayTc = lib.testCaseFromBlob(ctx, settings, lib.reproductionBlob(failure));
335
+ try {
336
+ const ds = new NativeDataSource(lib, ctx, replayTc);
337
+ const replay = yield { ds, isFinal: true };
338
+ finalError = replay.error;
339
+ }
340
+ finally {
341
+ lib.freeTestCase(replayTc);
342
+ }
343
+ }
344
+ const detail = finalError instanceof Error ? finalError.message : String(finalError);
345
+ throw new Error(`Property test failed: ${detail} [${origins.join("; ")}]`);
355
346
  }
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;
347
+ finally {
348
+ lib.freeRun(run);
383
349
  }
384
- /* v8 ignore stop */
385
350
  }
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}`);
351
+ finally {
352
+ lib.freeSettings(settings);
353
+ lib.freeContext(ctx);
403
354
  }
404
355
  }
405
356
  async run() {
@@ -429,8 +380,8 @@ export class Hegel {
429
380
  * @example
430
381
  * ```ts
431
382
  * import { test } from 'vitest';
432
- * import * as hegel from 'hegel';
433
- * import * as gs from 'hegel/generators';
383
+ * import * as hegel from '@hegeldev/hegel';
384
+ * import * as gs from '@hegeldev/hegel/generators';
434
385
  *
435
386
  * test('addition is commutative', () =>
436
387
  * hegel.test((tc) => {
@@ -459,8 +410,8 @@ export function test(testFn, settings) {
459
410
  * @example
460
411
  * ```ts
461
412
  * import { test } from 'vitest';
462
- * import * as hegel from 'hegel';
463
- * import * as gs from 'hegel/generators';
413
+ * import * as hegel from '@hegeldev/hegel';
414
+ * import * as gs from '@hegeldev/hegel/generators';
464
415
  *
465
416
  * test('my async test', () =>
466
417
  * 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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAmB,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAY,MAAM,EAAE,SAAS,EAAE,eAAe,EAAY,MAAM,eAAe,CAAC;AAEvF,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,gDAAiC,CAAA;IACjC,mCAAoB,CAAA;IACpB,yDAA0C,CAAA;IAC1C,+DAAgD,CAAA;AAClD,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,mBAAmB,GAA8B;IACrD,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK;IACxC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,MAAM;IAC1C,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO;IAC5C,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK;CACzC,CAAC;AAEF,oCAAoC;AACpC,MAAM,mBAAmB,GAAgC;IACvD,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC;IACnC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;IAC7B,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC;IACvC,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC;CAC3C,CAAC;AAIF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAc;IACpC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAc;IAC1C,QAAQ,EAAE,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC/D,CAAC;AAYF,SAAS,MAAM;IACb,MAAM,MAAM,GAAmC;QAC7C,CAAC,IAAI,EAAE,IAAI,CAAC;QACZ,CAAC,kBAAkB,EAAE,IAAI,CAAC;QAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;QACrB,CAAC,UAAU,EAAE,MAAM,CAAC;QACpB,CAAC,WAAW,EAAE,MAAM,CAAC;QACrB,CAAC,oBAAoB,EAAE,IAAI,CAAC;QAC5B,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAC1B,CAAC,WAAW,EAAE,IAAI,CAAC;QACnB,CAAC,oBAAoB,EAAE,IAAI,CAAC;QAC5B,CAAC,kBAAkB,EAAE,IAAI,CAAC;QAC1B,CAAC,UAAU,EAAE,MAAM,CAAC;QACpB,CAAC,iBAAiB,EAAE,IAAI,CAAC;KAC1B,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;QACxC,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO;QACL,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;QACnD,mBAAmB,EAAE,EAAE;QACvB,sBAAsB,EAAE,KAAK;KAC9B,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACV,GAAG,CAAW;IACd,GAAG,CAAM;IACT,EAAE,CAAM;IAEzB,YAAY,GAAa,EAAE,GAAQ,EAAE,EAAO;QAC1C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,MAA+B;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,OAAgB;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc,CAAC,YAAoB;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB,CAAC,YAAoB,EAAE,GAAY;QACjD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,MAAqB;QAChD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACF;AAYD,MAAM,gBAAgB,GAA6C;IACjE,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,WAAW,EAAE,MAAM,CAAC,WAAW;CAChC,CAAC;AAEF;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAClE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,4FAA4F;IAC5F,OAAO,WAAW,CAAC;IACnB,oBAAoB;AACtB,CAAC;AAED,SAAS,cAAc,CACrB,CAAU,EACV,OAAgB;IAEhB,IAAI,CAAC,YAAY,WAAW;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrF,IAAI,CAAC,YAAY,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAEvF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAsB,EACtB,MAAsB,EACtB,MAAqB;IAErB,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAsB,EACtB,MAA8C,EAC9C,OAAgB;IAEhB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE7C,IAAI,MAAsB,CAAC;IAC3B,IAAI,MAAM,GAAkB,IAAI,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,UAAsB,EACtB,MAA8B,EAC9B,OAAgB;IAEhB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE7C,IAAI,MAAsB,CAAC;IAC3B,IAAI,MAAM,GAAkB,IAAI,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,kDAAkD;AAClD,SAAS,qBAAqB;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACjD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC;AACzC,CAAC;AACD,SAAS,uBAAuB,CAAC,QAAsB,EAAE,MAAe;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,oBAAoB,CAAC;IAEvE,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,iBAAiB,EAAE;YACjB,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,QAAQ;YACrB,YAAY,EAAE,QAAQ;YACtB,SAAS,EAAE,KAAK;YAChB,EAAE;YACF,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,WAAW;SACtB;KACF,CAAC;IAEF,MAAM,UAAU,GAAG;QACjB,iBAAiB,EAAE;YACjB,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,QAAQ;YACrB,YAAY,EAAE,QAAQ;YACtB,SAAS,EAAE,MAAM;YACjB,EAAE;YACF,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,WAAW;SACtB;KACF,CAAC;IAEF,EAAE,CAAC,cAAc,CACf,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CACvE,CAAC;AACJ,CAAC;AACD,oBAAoB;AAEpB,SAAS,WAAW,CAAC,MAAiC;IACpD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAa,EACb,GAAQ,EACR,QAAa,EACb,CAAW,EACX,MAAiC;IAEjC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5C,GAAG,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACnC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;YACvC,IAAI,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,OAAO,KAAK;IACR,MAAM,CAAyC;IAC/C,SAAS,CAAW;IACpB,aAAa,GAAwB,IAAI,CAAC;IAElD,YAAY,MAA8C;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;IACrC,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,CAAoB;QAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wDAAwD;IACxD,kDAAkD;IAClD,YAAY,CAAC,QAAsB;QACjC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,oBAAoB;IAEpB;;;;;;;;;;;;;OAaG;IACK,CAAC,QAAQ;QACf,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,SAAS,CAAC;oBACR,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACtC,IAAI,EAAE,KAAK,IAAI;wBAAE,MAAM;oBACvB,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC9C,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC/B,CAAC;gBAED,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAErC,kDAAkD;gBAClD,IAAI,qBAAqB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBAClD,uBAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC3E,CAAC;gBACD,oBAAoB;gBAEpB,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;oBAChC,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,oEAAoE;gBACpE,yEAAyE;gBACzE,0EAA0E;gBAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,IAAI,UAAU,GAAY,IAAI,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpF,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;wBACpD,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC3C,UAAU,GAAI,MAA8B,CAAC,KAAK,CAAC;oBACrD,CAAC;4BAAS,CAAC;wBACT,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrF,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7E,CAAC;oBAAS,CAAC;gBACT,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3B,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,MAAgC,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,IAAI,CAAC,MAA8B,EAAE,QAA4B;IAC/E,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChD,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,QAAQ;QAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAA8C,EAC9C,QAA4B;IAE5B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,QAAQ;QAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
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"}