@c9up/helix 0.1.3 → 0.1.5

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 (235) hide show
  1. package/dist/cli/coverage/aggregate.d.ts +24 -0
  2. package/dist/cli/coverage/aggregate.d.ts.map +1 -0
  3. package/dist/cli/coverage/aggregate.js +215 -0
  4. package/dist/cli/coverage/aggregate.js.map +1 -0
  5. package/dist/cli/coverage/collect.d.ts +13 -0
  6. package/dist/cli/coverage/collect.d.ts.map +1 -0
  7. package/dist/cli/coverage/collect.js +66 -0
  8. package/dist/cli/coverage/collect.js.map +1 -0
  9. package/dist/cli/coverage/diff/base.d.ts +17 -0
  10. package/dist/cli/coverage/diff/base.d.ts.map +1 -0
  11. package/dist/cli/coverage/diff/base.js +44 -0
  12. package/dist/cli/coverage/diff/base.js.map +1 -0
  13. package/dist/cli/coverage/diff/index.d.ts +25 -0
  14. package/dist/cli/coverage/diff/index.d.ts.map +1 -0
  15. package/dist/cli/coverage/diff/index.js +119 -0
  16. package/dist/cli/coverage/diff/index.js.map +1 -0
  17. package/dist/cli/coverage/diff/overlay.d.ts +19 -0
  18. package/dist/cli/coverage/diff/overlay.d.ts.map +1 -0
  19. package/dist/cli/coverage/diff/overlay.js +58 -0
  20. package/dist/cli/coverage/diff/overlay.js.map +1 -0
  21. package/dist/cli/coverage/diff/parse.d.ts +27 -0
  22. package/dist/cli/coverage/diff/parse.d.ts.map +1 -0
  23. package/dist/cli/coverage/diff/parse.js +105 -0
  24. package/dist/cli/coverage/diff/parse.js.map +1 -0
  25. package/dist/cli/coverage/diff/reporters.d.ts +12 -0
  26. package/dist/cli/coverage/diff/reporters.d.ts.map +1 -0
  27. package/dist/cli/coverage/diff/reporters.js +59 -0
  28. package/dist/cli/coverage/diff/reporters.js.map +1 -0
  29. package/dist/cli/coverage/diff/types.d.ts +46 -0
  30. package/dist/cli/coverage/diff/types.d.ts.map +1 -0
  31. package/dist/cli/coverage/diff/types.js +15 -0
  32. package/dist/cli/coverage/diff/types.js.map +1 -0
  33. package/dist/cli/coverage/filter.d.ts +13 -0
  34. package/dist/cli/coverage/filter.d.ts.map +1 -0
  35. package/dist/cli/coverage/filter.js +60 -0
  36. package/dist/cli/coverage/filter.js.map +1 -0
  37. package/dist/cli/coverage/glob.d.ts +4 -0
  38. package/dist/cli/coverage/glob.d.ts.map +1 -0
  39. package/dist/cli/coverage/glob.js +0 -0
  40. package/dist/cli/coverage/glob.js.map +1 -0
  41. package/dist/cli/coverage/index.d.ts +40 -0
  42. package/dist/cli/coverage/index.d.ts.map +1 -0
  43. package/dist/cli/coverage/index.js +85 -0
  44. package/dist/cli/coverage/index.js.map +1 -0
  45. package/dist/cli/coverage/reporters/json.d.ts +13 -0
  46. package/dist/cli/coverage/reporters/json.d.ts.map +1 -0
  47. package/dist/cli/coverage/reporters/json.js +37 -0
  48. package/dist/cli/coverage/reporters/json.js.map +1 -0
  49. package/dist/cli/coverage/reporters/lcov.d.ts +13 -0
  50. package/dist/cli/coverage/reporters/lcov.d.ts.map +1 -0
  51. package/dist/cli/coverage/reporters/lcov.js +51 -0
  52. package/dist/cli/coverage/reporters/lcov.js.map +1 -0
  53. package/dist/cli/coverage/reporters/text.d.ts +8 -0
  54. package/dist/cli/coverage/reporters/text.d.ts.map +1 -0
  55. package/dist/cli/coverage/reporters/text.js +39 -0
  56. package/dist/cli/coverage/reporters/text.js.map +1 -0
  57. package/dist/cli/coverage/thresholds.d.ts +14 -0
  58. package/dist/cli/coverage/thresholds.d.ts.map +1 -0
  59. package/dist/cli/coverage/thresholds.js +58 -0
  60. package/dist/cli/coverage/thresholds.js.map +1 -0
  61. package/dist/cli/coverage/types.d.ts +118 -0
  62. package/dist/cli/coverage/types.d.ts.map +1 -0
  63. package/dist/cli/coverage/types.js +8 -0
  64. package/dist/cli/coverage/types.js.map +1 -0
  65. package/dist/cli/discover.d.ts +27 -0
  66. package/dist/cli/discover.d.ts.map +1 -0
  67. package/dist/cli/discover.js +142 -0
  68. package/dist/cli/discover.js.map +1 -0
  69. package/dist/cli/native.d.ts +43 -0
  70. package/dist/cli/native.d.ts.map +1 -0
  71. package/dist/cli/native.js +64 -0
  72. package/dist/cli/native.js.map +1 -0
  73. package/dist/cli/pool.d.ts +55 -0
  74. package/dist/cli/pool.d.ts.map +1 -0
  75. package/dist/cli/pool.js +404 -0
  76. package/dist/cli/pool.js.map +1 -0
  77. package/dist/cli/reporter.d.ts +51 -0
  78. package/dist/cli/reporter.d.ts.map +1 -0
  79. package/dist/cli/reporter.js +124 -0
  80. package/dist/cli/reporter.js.map +1 -0
  81. package/dist/cli/run.d.ts +61 -0
  82. package/dist/cli/run.d.ts.map +1 -0
  83. package/dist/cli/run.js +302 -0
  84. package/dist/cli/run.js.map +1 -0
  85. package/dist/cli/summary.d.ts +18 -0
  86. package/dist/cli/summary.d.ts.map +1 -0
  87. package/dist/cli/summary.js +20 -0
  88. package/dist/cli/summary.js.map +1 -0
  89. package/dist/cli/watch/loop.d.ts +26 -0
  90. package/dist/cli/watch/loop.d.ts.map +1 -0
  91. package/dist/cli/watch/loop.js +133 -0
  92. package/dist/cli/watch/loop.js.map +1 -0
  93. package/dist/cli/watch/types.d.ts +22 -0
  94. package/dist/cli/watch/types.d.ts.map +1 -0
  95. package/dist/cli/watch/types.js +6 -0
  96. package/dist/cli/watch/types.js.map +1 -0
  97. package/dist/cli/watch/watcher.d.ts +25 -0
  98. package/dist/cli/watch/watcher.d.ts.map +1 -0
  99. package/dist/cli/watch/watcher.js +122 -0
  100. package/dist/cli/watch/watcher.js.map +1 -0
  101. package/dist/container/index.d.ts +7 -0
  102. package/dist/container/index.d.ts.map +1 -0
  103. package/dist/container/index.js +6 -0
  104. package/dist/container/index.js.map +1 -0
  105. package/{src/container/override.ts → dist/container/override.d.ts} +6 -46
  106. package/dist/container/override.d.ts.map +1 -0
  107. package/dist/container/override.js +67 -0
  108. package/dist/container/override.js.map +1 -0
  109. package/{src/container/spy.ts → dist/container/spy.d.ts} +2 -6
  110. package/dist/container/spy.d.ts.map +1 -0
  111. package/dist/container/spy.js +23 -0
  112. package/dist/container/spy.js.map +1 -0
  113. package/dist/index.d.ts +20 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/{src/index.ts → dist/index.js} +2 -25
  116. package/dist/index.js.map +1 -0
  117. package/dist/runtime/assertion-error.d.ts +20 -0
  118. package/dist/runtime/assertion-error.d.ts.map +1 -0
  119. package/dist/runtime/assertion-error.js +23 -0
  120. package/dist/runtime/assertion-error.js.map +1 -0
  121. package/dist/runtime/cli-worker.d.ts +25 -0
  122. package/dist/runtime/cli-worker.d.ts.map +1 -0
  123. package/dist/runtime/cli-worker.js +128 -0
  124. package/dist/runtime/cli-worker.js.map +1 -0
  125. package/dist/runtime/equals.d.ts +25 -0
  126. package/dist/runtime/equals.d.ts.map +1 -0
  127. package/dist/runtime/equals.js +343 -0
  128. package/dist/runtime/equals.js.map +1 -0
  129. package/dist/runtime/expect.d.ts +32 -0
  130. package/dist/runtime/expect.d.ts.map +1 -0
  131. package/dist/runtime/expect.js +121 -0
  132. package/dist/runtime/expect.js.map +1 -0
  133. package/{src/runtime/index.ts → dist/runtime/index.d.ts} +5 -27
  134. package/dist/runtime/index.d.ts.map +1 -0
  135. package/dist/runtime/index.js +17 -0
  136. package/dist/runtime/index.js.map +1 -0
  137. package/{src/runtime/lifecycle.ts → dist/runtime/lifecycle.d.ts} +2 -8
  138. package/dist/runtime/lifecycle.d.ts.map +1 -0
  139. package/dist/runtime/lifecycle.js +10 -0
  140. package/dist/runtime/lifecycle.js.map +1 -0
  141. package/dist/runtime/matchers.d.ts +42 -0
  142. package/dist/runtime/matchers.d.ts.map +1 -0
  143. package/dist/runtime/matchers.js +375 -0
  144. package/dist/runtime/matchers.js.map +1 -0
  145. package/dist/runtime/run.d.ts +55 -0
  146. package/dist/runtime/run.d.ts.map +1 -0
  147. package/dist/runtime/run.js +456 -0
  148. package/dist/runtime/run.js.map +1 -0
  149. package/dist/runtime/suite.d.ts +91 -0
  150. package/dist/runtime/suite.d.ts.map +1 -0
  151. package/dist/runtime/suite.js +206 -0
  152. package/dist/runtime/suite.js.map +1 -0
  153. package/dist/runtime/test-context.d.ts +25 -0
  154. package/dist/runtime/test-context.d.ts.map +1 -0
  155. package/dist/runtime/test-context.js +52 -0
  156. package/dist/runtime/test-context.js.map +1 -0
  157. package/dist/runtime/vi/fake-timers.d.ts +48 -0
  158. package/dist/runtime/vi/fake-timers.d.ts.map +1 -0
  159. package/dist/runtime/vi/fake-timers.js +317 -0
  160. package/dist/runtime/vi/fake-timers.js.map +1 -0
  161. package/dist/runtime/vi/index.d.ts +70 -0
  162. package/dist/runtime/vi/index.d.ts.map +1 -0
  163. package/dist/runtime/vi/index.js +209 -0
  164. package/dist/runtime/vi/index.js.map +1 -0
  165. package/dist/runtime/vi/spy.d.ts +54 -0
  166. package/dist/runtime/vi/spy.d.ts.map +1 -0
  167. package/dist/runtime/vi/spy.js +159 -0
  168. package/dist/runtime/vi/spy.js.map +1 -0
  169. package/dist/runtime/vi/spyOn.d.ts +28 -0
  170. package/dist/runtime/vi/spyOn.d.ts.map +1 -0
  171. package/dist/runtime/vi/spyOn.js +121 -0
  172. package/dist/runtime/vi/spyOn.js.map +1 -0
  173. package/dist/runtime/vi/system-time.d.ts +30 -0
  174. package/dist/runtime/vi/system-time.d.ts.map +1 -0
  175. package/dist/runtime/vi/system-time.js +100 -0
  176. package/dist/runtime/vi/system-time.js.map +1 -0
  177. package/dist/runtime/worker.d.ts +26 -0
  178. package/dist/runtime/worker.d.ts.map +1 -0
  179. package/dist/runtime/worker.js +195 -0
  180. package/dist/runtime/worker.js.map +1 -0
  181. package/dist/time/freeze.d.ts +80 -0
  182. package/dist/time/freeze.d.ts.map +1 -0
  183. package/dist/time/freeze.js +184 -0
  184. package/dist/time/freeze.js.map +1 -0
  185. package/{src/time/index.ts → dist/time/index.d.ts} +1 -1
  186. package/dist/time/index.d.ts.map +1 -0
  187. package/dist/time/index.js +15 -0
  188. package/dist/time/index.js.map +1 -0
  189. package/index.darwin-arm64.node +0 -0
  190. package/index.darwin-x64.node +0 -0
  191. package/index.linux-arm64-gnu.node +0 -0
  192. package/index.linux-x64-gnu.node +0 -0
  193. package/index.win32-x64-msvc.node +0 -0
  194. package/package.json +2 -2
  195. package/src/cli/coverage/aggregate.ts +0 -231
  196. package/src/cli/coverage/collect.ts +0 -63
  197. package/src/cli/coverage/diff/base.ts +0 -46
  198. package/src/cli/coverage/diff/index.ts +0 -160
  199. package/src/cli/coverage/diff/overlay.ts +0 -62
  200. package/src/cli/coverage/diff/parse.ts +0 -121
  201. package/src/cli/coverage/diff/reporters.ts +0 -82
  202. package/src/cli/coverage/diff/types.ts +0 -46
  203. package/src/cli/coverage/filter.ts +0 -71
  204. package/src/cli/coverage/glob.ts +0 -0
  205. package/src/cli/coverage/index.ts +0 -126
  206. package/src/cli/coverage/reporters/json.ts +0 -40
  207. package/src/cli/coverage/reporters/lcov.ts +0 -54
  208. package/src/cli/coverage/reporters/text.ts +0 -48
  209. package/src/cli/coverage/thresholds.ts +0 -73
  210. package/src/cli/coverage/types.ts +0 -93
  211. package/src/cli/discover.ts +0 -174
  212. package/src/cli/native.ts +0 -104
  213. package/src/cli/pool.ts +0 -486
  214. package/src/cli/reporter.ts +0 -155
  215. package/src/cli/run.ts +0 -440
  216. package/src/cli/summary.ts +0 -42
  217. package/src/cli/watch/loop.ts +0 -159
  218. package/src/cli/watch/types.ts +0 -22
  219. package/src/cli/watch/watcher.ts +0 -145
  220. package/src/container/index.ts +0 -16
  221. package/src/runtime/assertion-error.ts +0 -38
  222. package/src/runtime/cli-worker.ts +0 -140
  223. package/src/runtime/equals.ts +0 -400
  224. package/src/runtime/expect.ts +0 -173
  225. package/src/runtime/matchers.ts +0 -452
  226. package/src/runtime/run.ts +0 -573
  227. package/src/runtime/suite.ts +0 -310
  228. package/src/runtime/test-context.ts +0 -59
  229. package/src/runtime/vi/fake-timers.ts +0 -410
  230. package/src/runtime/vi/index.ts +0 -254
  231. package/src/runtime/vi/spy.ts +0 -224
  232. package/src/runtime/vi/spyOn.ts +0 -155
  233. package/src/runtime/vi/system-time.ts +0 -121
  234. package/src/runtime/worker.ts +0 -239
  235. package/src/time/freeze.ts +0 -229
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-error.d.ts","sourceRoot":"","sources":["../../src/runtime/assertion-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEf,IAAI,EAAE,kBAAkB;CAepC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE"}
@@ -0,0 +1,23 @@
1
+ export class AssertionError extends Error {
2
+ actual;
3
+ expected;
4
+ operator;
5
+ showDiff;
6
+ constructor(init) {
7
+ super(init.message);
8
+ this.name = "AssertionError";
9
+ this.actual = init.actual;
10
+ this.expected = init.expected;
11
+ this.operator = init.operator;
12
+ this.showDiff = init.showDiff ?? true;
13
+ // V8 only: strip framework frames so the stack points at user code.
14
+ const capture = Error.captureStackTrace;
15
+ if (typeof capture === "function") {
16
+ capture(this, AssertionError);
17
+ }
18
+ }
19
+ }
20
+ export function isAssertionError(value) {
21
+ return value instanceof AssertionError;
22
+ }
23
+ //# sourceMappingURL=assertion-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-error.js","sourceRoot":"","sources":["../../src/runtime/assertion-error.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC/B,MAAM,CAAU;IAChB,QAAQ,CAAU;IAClB,QAAQ,CAAqB;IAC7B,QAAQ,CAAU;IAE3B,YAAY,IAAwB;QACnC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;QACtC,oEAAoE;QACpE,MAAM,OAAO,GACZ,KACA,CAAC,iBAAiB,CAAC;QACpB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;CACD;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC9C,OAAO,KAAK,YAAY,cAAc,CAAC;AACxC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * CLI worker entry — what the orchestrator spawns as a child process.
3
+ *
4
+ * Protocol:
5
+ * 1. Parent writes one `{ "type":"run", "file":"...", "timeoutMs":n, "nonce":"..." }`
6
+ * line to stdin, then closes stdin.
7
+ * 2. We run the file via `runTestFile`.
8
+ * 3. We emit a single framed line on **stderr** prefixed with
9
+ * `__HELIX_RESULT__`, with the parent's `nonce` echoed back so a
10
+ * test that happens to print that prefix can't spoof the result.
11
+ * 4. Exit with code 0 on `result`, 1 on `error`.
12
+ *
13
+ * Pre-handshake errors (e.g. malformed instruction on stdin) are emitted
14
+ * with the `__helix_pre_handshake__` magic nonce — the parent accepts
15
+ * those only for `type === "error"` so a fixture can't use the magic to
16
+ * fake success.
17
+ *
18
+ * Flush discipline: on the happy path we await the stream drain callback
19
+ * before setting `process.exitCode` so the frame always reaches the
20
+ * parent. For the fatal `unhandledRejection` path we use `fs.writeSync`
21
+ * on fd 2 to guarantee the bytes hit the pipe before Node tears the
22
+ * process down.
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=cli-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-worker.d.ts","sourceRoot":"","sources":["../../src/runtime/cli-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * CLI worker entry — what the orchestrator spawns as a child process.
3
+ *
4
+ * Protocol:
5
+ * 1. Parent writes one `{ "type":"run", "file":"...", "timeoutMs":n, "nonce":"..." }`
6
+ * line to stdin, then closes stdin.
7
+ * 2. We run the file via `runTestFile`.
8
+ * 3. We emit a single framed line on **stderr** prefixed with
9
+ * `__HELIX_RESULT__`, with the parent's `nonce` echoed back so a
10
+ * test that happens to print that prefix can't spoof the result.
11
+ * 4. Exit with code 0 on `result`, 1 on `error`.
12
+ *
13
+ * Pre-handshake errors (e.g. malformed instruction on stdin) are emitted
14
+ * with the `__helix_pre_handshake__` magic nonce — the parent accepts
15
+ * those only for `type === "error"` so a fixture can't use the magic to
16
+ * fake success.
17
+ *
18
+ * Flush discipline: on the happy path we await the stream drain callback
19
+ * before setting `process.exitCode` so the frame always reaches the
20
+ * parent. For the fatal `unhandledRejection` path we use `fs.writeSync`
21
+ * on fd 2 to guarantee the bytes hit the pipe before Node tears the
22
+ * process down.
23
+ */
24
+ import { writeSync } from "node:fs";
25
+ import { createInterface } from "node:readline";
26
+ import { runTestFile } from "./worker.js";
27
+ const FRAME_PREFIX = "__HELIX_RESULT__";
28
+ const PRE_HANDSHAKE_NONCE = "__helix_pre_handshake__";
29
+ async function emit(msg) {
30
+ const line = `${FRAME_PREFIX}${JSON.stringify(msg)}\n`;
31
+ await new Promise((resolve, reject) => {
32
+ process.stderr.write(line, (err) => {
33
+ if (err)
34
+ reject(err);
35
+ else
36
+ resolve();
37
+ });
38
+ });
39
+ }
40
+ /**
41
+ * Synchronous emit used from fatal handlers (unhandledRejection) where
42
+ * we can't afford to lose the frame to the process tear-down racing the
43
+ * pipe drain. `writeSync` blocks until the kernel accepts the bytes.
44
+ */
45
+ function emitSync(msg) {
46
+ try {
47
+ writeSync(2, `${FRAME_PREFIX}${JSON.stringify(msg)}\n`);
48
+ }
49
+ catch {
50
+ /* pipe broken — nothing we can do */
51
+ }
52
+ }
53
+ async function readInstruction() {
54
+ const rl = createInterface({ input: process.stdin });
55
+ for await (const line of rl) {
56
+ const trimmed = line.trim();
57
+ if (!trimmed)
58
+ continue;
59
+ // Parse inside try so a bad JSON line propagates as a typed error
60
+ // rather than leaking a SyntaxError that escapes `for await`.
61
+ let parsed;
62
+ try {
63
+ parsed = JSON.parse(trimmed);
64
+ }
65
+ catch (err) {
66
+ throw new Error(`malformed instruction JSON: ${err instanceof Error ? err.message : String(err)}`);
67
+ }
68
+ if (parsed &&
69
+ typeof parsed === "object" &&
70
+ parsed.type === "run" &&
71
+ typeof parsed.file === "string" &&
72
+ typeof parsed.nonce === "string") {
73
+ return parsed;
74
+ }
75
+ throw new Error(`invalid instruction shape: ${trimmed}`);
76
+ }
77
+ throw new Error("stdin closed before instruction arrived");
78
+ }
79
+ async function main() {
80
+ let instr;
81
+ try {
82
+ instr = await readInstruction();
83
+ }
84
+ catch (err) {
85
+ // We don't know the real nonce yet — emit with the pre-handshake
86
+ // magic so the parent accepts this specific error path.
87
+ await emit({
88
+ type: "error",
89
+ file: undefined,
90
+ message: err instanceof Error ? err.message : String(err),
91
+ stack: err instanceof Error ? err.stack : undefined,
92
+ nonce: PRE_HANDSHAKE_NONCE,
93
+ }).catch(() => { });
94
+ process.exitCode = 1;
95
+ return;
96
+ }
97
+ // Installed AFTER the instruction is read so we can echo the right nonce.
98
+ // Synchronous write so Node's default "crash on unhandledRejection"
99
+ // behaviour can't evict the frame before the parent reads it.
100
+ process.on("unhandledRejection", (reason) => {
101
+ emitSync({
102
+ type: "error",
103
+ file: instr.file,
104
+ message: `unhandledRejection: ${reason instanceof Error ? reason.message : String(reason)}`,
105
+ stack: reason instanceof Error ? reason.stack : undefined,
106
+ nonce: instr.nonce,
107
+ });
108
+ });
109
+ try {
110
+ const result = await runTestFile(instr.file, {
111
+ timeoutMs: instr.timeoutMs,
112
+ });
113
+ await emit({ type: "result", result, nonce: instr.nonce });
114
+ process.exitCode = result.totals.fail > 0 ? 1 : 0;
115
+ }
116
+ catch (err) {
117
+ await emit({
118
+ type: "error",
119
+ file: instr.file,
120
+ message: err instanceof Error ? err.message : String(err),
121
+ stack: err instanceof Error ? err.stack : undefined,
122
+ nonce: instr.nonce,
123
+ }).catch(() => { });
124
+ process.exitCode = 1;
125
+ }
126
+ }
127
+ void main();
128
+ //# sourceMappingURL=cli-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-worker.js","sourceRoot":"","sources":["../../src/runtime/cli-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Deep structural equality — Vitest-compatible semantics.
3
+ *
4
+ * Handles: primitives (Object.is for NaN; ±0 treated equal in non-strict toEqual),
5
+ * Date, RegExp, Map, Set, Array, Buffer, typed arrays, DataView, boxed primitives
6
+ * (Number/String/Boolean), Error instances, circular refs, Symbol-keyed props.
7
+ * Ignores prototypes for plain objects (matches Jest/Vitest `toEqual`).
8
+ *
9
+ * `toStrictEqual` semantics (checks prototype + undefined-vs-missing keys)
10
+ * are supported via the `strict` option.
11
+ */
12
+ export interface EqualsOptions {
13
+ /** `toStrictEqual` semantics — prototypes matched, undefined keys distinguished from missing. */
14
+ strict?: boolean;
15
+ }
16
+ export declare function equals(a: unknown, b: unknown, options?: EqualsOptions): boolean;
17
+ /**
18
+ * Partial match — every key/element in `expected` must match in `actual`.
19
+ * Extra keys in `actual` are allowed for plain objects.
20
+ * Arrays must have the same length (Vitest v1+ semantics, not Jest).
21
+ * Date / RegExp / Error / Map / Set / TypedArray / Buffer / DataView delegate
22
+ * to `equals` — "partial" is ill-defined for them.
23
+ */
24
+ export declare function partialEquals(actual: unknown, expected: unknown): boolean;
25
+ //# sourceMappingURL=equals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/runtime/equals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,aAAa;IAC7B,iGAAiG;IACjG,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAID,wBAAgB,MAAM,CACrB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,OAAO,GAAE,aAAkB,GACzB,OAAO,CAET;AA0TD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAEzE"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Deep structural equality — Vitest-compatible semantics.
3
+ *
4
+ * Handles: primitives (Object.is for NaN; ±0 treated equal in non-strict toEqual),
5
+ * Date, RegExp, Map, Set, Array, Buffer, typed arrays, DataView, boxed primitives
6
+ * (Number/String/Boolean), Error instances, circular refs, Symbol-keyed props.
7
+ * Ignores prototypes for plain objects (matches Jest/Vitest `toEqual`).
8
+ *
9
+ * `toStrictEqual` semantics (checks prototype + undefined-vs-missing keys)
10
+ * are supported via the `strict` option.
11
+ */
12
+ export function equals(a, b, options = {}) {
13
+ return eq(a, b, options, new WeakMap());
14
+ }
15
+ /**
16
+ * Record a pair as "in progress" in BOTH directions so a later visit to the
17
+ * mirrored pair (b,a) is detected as a cycle too.
18
+ */
19
+ function markSeen(seen, a, b) {
20
+ let setA = seen.get(a);
21
+ if (!setA) {
22
+ setA = new WeakSet();
23
+ seen.set(a, setA);
24
+ }
25
+ setA.add(b);
26
+ let setB = seen.get(b);
27
+ if (!setB) {
28
+ setB = new WeakSet();
29
+ seen.set(b, setB);
30
+ }
31
+ setB.add(a);
32
+ }
33
+ function seenPair(seen, a, b) {
34
+ return seen.get(a)?.has(b) ?? false;
35
+ }
36
+ function isBoxedPrimitive(v) {
37
+ return v instanceof Number || v instanceof String || v instanceof Boolean;
38
+ }
39
+ // Boxed primitives — unwrap so `new Number(1)` vs `new Number(2)` differ
40
+ // properly; a box compared against anything not the same box type is unequal.
41
+ function compareBoxed(a, b) {
42
+ if (a instanceof Number && b instanceof Number)
43
+ return Object.is(a.valueOf(), b.valueOf());
44
+ if (a instanceof String && b instanceof String)
45
+ return Object.is(a.valueOf(), b.valueOf());
46
+ if (a instanceof Boolean && b instanceof Boolean)
47
+ return Object.is(a.valueOf(), b.valueOf());
48
+ if (isBoxedPrimitive(a) || isBoxedPrimitive(b))
49
+ return false;
50
+ return undefined;
51
+ }
52
+ function compareDate(a, b) {
53
+ if (!(a instanceof Date) && !(b instanceof Date))
54
+ return undefined;
55
+ return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();
56
+ }
57
+ function compareRegExp(a, b) {
58
+ if (!(a instanceof RegExp) && !(b instanceof RegExp))
59
+ return undefined;
60
+ return (a instanceof RegExp &&
61
+ b instanceof RegExp &&
62
+ a.source === b.source &&
63
+ a.flags === b.flags);
64
+ }
65
+ // Error instances — compare name + message + own enumerable keys. The built-in
66
+ // fields are non-enumerable so plain-keys comparison alone would report any two
67
+ // Errors as equal.
68
+ function compareError(a, b, opts, seen) {
69
+ if (!(a instanceof Error) && !(b instanceof Error))
70
+ return undefined;
71
+ if (!(a instanceof Error && b instanceof Error))
72
+ return false;
73
+ if (a.name !== b.name)
74
+ return false;
75
+ if (a.message !== b.message)
76
+ return false;
77
+ return compareOwnKeys(a, b, opts, seen);
78
+ }
79
+ // DataView — compare by byteLength + getUint8 byte-for-byte.
80
+ function compareDataView(a, b) {
81
+ if (!(a instanceof DataView) && !(b instanceof DataView))
82
+ return undefined;
83
+ if (!(a instanceof DataView && b instanceof DataView))
84
+ return false;
85
+ if (a.byteLength !== b.byteLength)
86
+ return false;
87
+ for (let i = 0; i < a.byteLength; i += 1) {
88
+ if (a.getUint8(i) !== b.getUint8(i))
89
+ return false;
90
+ }
91
+ return true;
92
+ }
93
+ // Buffer — shortcut via Buffer.equals when both are Buffers. When only one is a
94
+ // Buffer, return `undefined` so the typed-array comparator handles it (a Buffer
95
+ // is a Uint8Array): a constructor mismatch there yields the correct inequality.
96
+ function compareBuffer(a, b) {
97
+ if (typeof Buffer === "undefined")
98
+ return undefined;
99
+ if (Buffer.isBuffer(a) && Buffer.isBuffer(b))
100
+ return a.equals(b);
101
+ return undefined;
102
+ }
103
+ // Typed arrays (Uint8Array, Int16Array, Float64Array, BigInt64Array, …).
104
+ // Require matching constructor so Uint8Array !== Int8Array even when values coincide.
105
+ function compareTypedArray(a, b, opts) {
106
+ const viewA = asNumericTypedArray(a);
107
+ const viewB = asNumericTypedArray(b);
108
+ if (!viewA && !viewB)
109
+ return undefined;
110
+ if (!viewA || !viewB)
111
+ return false;
112
+ if (a.constructor !== b.constructor)
113
+ return false;
114
+ if (viewA.length !== viewB.length)
115
+ return false;
116
+ for (let i = 0; i < viewA.length; i += 1) {
117
+ const av = viewA[i];
118
+ const bv = viewB[i];
119
+ // Object.is so NaN === NaN inside Float32/64Array.
120
+ if (Object.is(av, bv))
121
+ continue;
122
+ if (opts.strict)
123
+ return false;
124
+ if (av !== bv)
125
+ return false; // non-strict: ±0 already caught by `===`.
126
+ }
127
+ return true;
128
+ }
129
+ function compareArray(a, b, opts, seen) {
130
+ if (!Array.isArray(a) && !Array.isArray(b))
131
+ return undefined;
132
+ if (!(Array.isArray(a) && Array.isArray(b)))
133
+ return false;
134
+ if (a.length !== b.length)
135
+ return false;
136
+ for (let i = 0; i < a.length; i += 1) {
137
+ if (!eq(a[i], b[i], opts, seen))
138
+ return false;
139
+ }
140
+ return true;
141
+ }
142
+ // Maps — structural key comparison supporting object keys.
143
+ function compareMap(a, b, opts, seen) {
144
+ if (!(a instanceof Map) && !(b instanceof Map))
145
+ return undefined;
146
+ if (!(a instanceof Map && b instanceof Map))
147
+ return false;
148
+ if (a.size !== b.size)
149
+ return false;
150
+ for (const [kA, vA] of a) {
151
+ // Fast path: identity/primitive key hit.
152
+ if (b.has(kA) && eq(vA, b.get(kA), opts, seen))
153
+ continue;
154
+ // Structural search across remaining entries.
155
+ let matched = false;
156
+ for (const [kB, vB] of b) {
157
+ if (eq(kA, kB, opts, seen) && eq(vA, vB, opts, seen)) {
158
+ matched = true;
159
+ break;
160
+ }
161
+ }
162
+ if (!matched)
163
+ return false;
164
+ }
165
+ return true;
166
+ }
167
+ // Sets — deep structural. Use a fresh WeakMap per inner comparison so an
168
+ // earlier failed candidate does not poison the next one via cycle cache.
169
+ function compareSet(a, b, opts) {
170
+ if (!(a instanceof Set) && !(b instanceof Set))
171
+ return undefined;
172
+ if (!(a instanceof Set && b instanceof Set))
173
+ return false;
174
+ if (a.size !== b.size)
175
+ return false;
176
+ for (const v of a) {
177
+ let found = false;
178
+ for (const w of b) {
179
+ if (eq(v, w, opts, new WeakMap())) {
180
+ found = true;
181
+ break;
182
+ }
183
+ }
184
+ if (!found)
185
+ return false;
186
+ }
187
+ return true;
188
+ }
189
+ // Order matters — mirrors the original `instanceof` ladder. Buffer sits before
190
+ // typed arrays so the both-Buffer fast path wins before the generic view check.
191
+ const STRUCTURAL_COMPARATORS = [
192
+ compareDate,
193
+ compareRegExp,
194
+ compareError,
195
+ compareDataView,
196
+ compareBuffer,
197
+ compareTypedArray,
198
+ compareArray,
199
+ compareMap,
200
+ compareSet,
201
+ ];
202
+ function eq(a, b, opts, seen) {
203
+ // Identity / NaN (Object.is). In non-strict mode, ±0 are also equal.
204
+ if (Object.is(a, b))
205
+ return true;
206
+ if (!opts.strict && a === b)
207
+ return true;
208
+ if (a === null || b === null)
209
+ return false;
210
+ if (typeof a !== typeof b)
211
+ return false;
212
+ if (typeof a !== "object")
213
+ return false;
214
+ const objA = a;
215
+ const objB = b;
216
+ if (seenPair(seen, objA, objB))
217
+ return true;
218
+ markSeen(seen, objA, objB);
219
+ const boxed = compareBoxed(objA, objB);
220
+ if (boxed !== undefined)
221
+ return boxed;
222
+ // Strict: differing prototypes → not equal (plain `{}` vs class instance).
223
+ if (opts.strict &&
224
+ Object.getPrototypeOf(objA) !== Object.getPrototypeOf(objB)) {
225
+ return false;
226
+ }
227
+ for (const compare of STRUCTURAL_COMPARATORS) {
228
+ const result = compare(objA, objB, opts, seen);
229
+ if (result !== undefined)
230
+ return result;
231
+ }
232
+ return compareOwnKeys(objA, objB, opts, seen);
233
+ }
234
+ function getProp(obj, key) {
235
+ return Reflect.get(obj, key);
236
+ }
237
+ function asNumericTypedArray(v) {
238
+ if (v instanceof Int8Array ||
239
+ v instanceof Uint8Array ||
240
+ v instanceof Uint8ClampedArray ||
241
+ v instanceof Int16Array ||
242
+ v instanceof Uint16Array ||
243
+ v instanceof Int32Array ||
244
+ v instanceof Uint32Array ||
245
+ v instanceof Float32Array ||
246
+ v instanceof Float64Array ||
247
+ v instanceof BigInt64Array ||
248
+ v instanceof BigUint64Array) {
249
+ return v;
250
+ }
251
+ return undefined;
252
+ }
253
+ function compareOwnKeys(objA, objB, opts, seen) {
254
+ const keysA = ownEnumerableKeys(objA);
255
+ const keysB = ownEnumerableKeys(objB);
256
+ if (opts.strict) {
257
+ if (keysA.length !== keysB.length)
258
+ return false;
259
+ for (const k of keysA) {
260
+ if (!Object.prototype.propertyIsEnumerable.call(objB, k))
261
+ return false;
262
+ if (!eq(getProp(objA, k), getProp(objB, k), opts, seen))
263
+ return false;
264
+ }
265
+ return true;
266
+ }
267
+ // Non-strict: undefined value ≡ missing key.
268
+ const union = new Set([...keysA, ...keysB]);
269
+ for (const k of union) {
270
+ const va = getProp(objA, k);
271
+ const vb = getProp(objB, k);
272
+ if (va === undefined && vb === undefined)
273
+ continue;
274
+ if (!eq(va, vb, opts, seen))
275
+ return false;
276
+ }
277
+ return true;
278
+ }
279
+ function ownEnumerableKeys(obj) {
280
+ const strings = Object.keys(obj);
281
+ const symbols = Object.getOwnPropertySymbols(obj).filter((s) => Object.prototype.propertyIsEnumerable.call(obj, s));
282
+ return [...strings, ...symbols];
283
+ }
284
+ /**
285
+ * Partial match — every key/element in `expected` must match in `actual`.
286
+ * Extra keys in `actual` are allowed for plain objects.
287
+ * Arrays must have the same length (Vitest v1+ semantics, not Jest).
288
+ * Date / RegExp / Error / Map / Set / TypedArray / Buffer / DataView delegate
289
+ * to `equals` — "partial" is ill-defined for them.
290
+ */
291
+ export function partialEquals(actual, expected) {
292
+ return partial(actual, expected, new WeakMap());
293
+ }
294
+ function partial(actual, expected, seen) {
295
+ if (Object.is(actual, expected))
296
+ return true;
297
+ if (expected === null || expected === undefined) {
298
+ return actual === expected;
299
+ }
300
+ if (typeof expected !== "object") {
301
+ return equals(actual, expected);
302
+ }
303
+ if (typeof actual !== "object" || actual === null)
304
+ return false;
305
+ // Both narrowed to object by the guards above — no cast needed.
306
+ const objE = expected;
307
+ const objA = actual;
308
+ if (seenPair(seen, objA, objE))
309
+ return true;
310
+ markSeen(seen, objA, objE);
311
+ // Types with no "partial" semantics — fall through to full equality.
312
+ if (lacksPartialSemantics(objE)) {
313
+ return equals(actual, expected);
314
+ }
315
+ if (Array.isArray(expected)) {
316
+ if (!Array.isArray(actual))
317
+ return false;
318
+ if (actual.length !== expected.length)
319
+ return false;
320
+ for (let i = 0; i < expected.length; i += 1) {
321
+ if (!partial(actual[i], expected[i], seen))
322
+ return false;
323
+ }
324
+ return true;
325
+ }
326
+ for (const key of ownEnumerableKeys(objE)) {
327
+ if (!partial(getProp(objA, key), getProp(objE, key), seen))
328
+ return false;
329
+ }
330
+ return true;
331
+ }
332
+ /** Object kinds for which "partial" is ill-defined → fall back to full equals. */
333
+ function lacksPartialSemantics(value) {
334
+ return (value instanceof Date ||
335
+ value instanceof RegExp ||
336
+ value instanceof Error ||
337
+ value instanceof Map ||
338
+ value instanceof Set ||
339
+ value instanceof DataView ||
340
+ (typeof Buffer !== "undefined" && Buffer.isBuffer(value)) ||
341
+ (ArrayBuffer.isView(value) && !(value instanceof DataView)));
342
+ }
343
+ //# sourceMappingURL=equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../src/runtime/equals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `expect(value)` engine — chainable assertion API compatible with Vitest.
3
+ *
4
+ * Supports:
5
+ * - All matchers in `./matchers.ts`
6
+ * - `.not.<matcher>()` — inverts pass/fail
7
+ * - `.resolves.<matcher>()` / `.rejects.<matcher>()` — async awaits on received
8
+ * - All four combinations: `.resolves.not`, `.rejects.not`, `.not.resolves`, `.not.rejects`
9
+ */
10
+ import { type MatcherName, matchers } from "./matchers.js";
11
+ type MatcherArgs<Name extends MatcherName> = (typeof matchers)[Name] extends (received: unknown, ...args: infer A) => unknown ? A : never;
12
+ type SyncChain = {
13
+ [K in MatcherName]: (...args: MatcherArgs<K>) => void;
14
+ };
15
+ type AsyncChain = {
16
+ [K in MatcherName]: (...args: MatcherArgs<K>) => Promise<void>;
17
+ };
18
+ export type Assertion = SyncChain & {
19
+ not: SyncChain & {
20
+ resolves: AsyncChain;
21
+ rejects: AsyncChain;
22
+ };
23
+ resolves: AsyncChain & {
24
+ not: AsyncChain;
25
+ };
26
+ rejects: AsyncChain & {
27
+ not: AsyncChain;
28
+ };
29
+ };
30
+ export declare function expect(received: unknown): Assertion;
31
+ export {};
32
+ //# sourceMappingURL=expect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/runtime/expect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE3D,KAAK,WAAW,CAAC,IAAI,SAAS,WAAW,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAC5E,QAAQ,EAAE,OAAO,EACjB,GAAG,IAAI,EAAE,MAAM,CAAC,KACZ,OAAO,GACT,CAAC,GACD,KAAK,CAAC;AAET,KAAK,SAAS,GAAG;KACf,CAAC,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;CACrD,CAAC;AAEF,KAAK,UAAU,GAAG;KAChB,CAAC,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG;IACnC,GAAG,EAAE,SAAS,GAAG;QAChB,QAAQ,EAAE,UAAU,CAAC;QACrB,OAAO,EAAE,UAAU,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,UAAU,GAAG;QAAE,GAAG,EAAE,UAAU,CAAA;KAAE,CAAC;IAC3C,OAAO,EAAE,UAAU,GAAG;QAAE,GAAG,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1C,CAAC;AAkHF,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAuBnD"}