reeval 0.0.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 (213) hide show
  1. package/LICENSE +202 -0
  2. package/THIRD_PARTY_NOTICES.md +2160 -0
  3. package/assets/package.json +9 -0
  4. package/assets/pnpm-lock.yaml +1336 -0
  5. package/dist/agent-DVHkx8aT.js +532 -0
  6. package/dist/agent-DVHkx8aT.js.map +1 -0
  7. package/dist/analysis-CxSCt1YY.js +16 -0
  8. package/dist/analysis-CxSCt1YY.js.map +1 -0
  9. package/dist/assemble-B-nmz8oH.js +695 -0
  10. package/dist/assemble-B-nmz8oH.js.map +1 -0
  11. package/dist/assemble-CmRVDZ2Q.js +2 -0
  12. package/dist/attempt-BdRQ9jKX.js +176 -0
  13. package/dist/attempt-BdRQ9jKX.js.map +1 -0
  14. package/dist/bridge/index.mjs +1911 -0
  15. package/dist/bridge/package.json +13 -0
  16. package/dist/bridge/pnpm-lock.yaml +1041 -0
  17. package/dist/bridge/pnpm-workspace.yaml +2 -0
  18. package/dist/budget-DBUrH4jX.js +8 -0
  19. package/dist/budget-DBUrH4jX.js.map +1 -0
  20. package/dist/cli--CQ3Iy9q.js +1865 -0
  21. package/dist/cli--CQ3Iy9q.js.map +1 -0
  22. package/dist/cli-spec-DKAu09Gi.js +478 -0
  23. package/dist/cli-spec-DKAu09Gi.js.map +1 -0
  24. package/dist/cli.d.ts +1 -0
  25. package/dist/cli.js +8 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/colors-QV9dFVhN.js +34 -0
  28. package/dist/colors-QV9dFVhN.js.map +1 -0
  29. package/dist/command-BSJzHMtP.js +280 -0
  30. package/dist/command-BSJzHMtP.js.map +1 -0
  31. package/dist/command-CEm8PZ1N.js +1043 -0
  32. package/dist/command-CEm8PZ1N.js.map +1 -0
  33. package/dist/command-D-jnQWVG.js +673 -0
  34. package/dist/command-D-jnQWVG.js.map +1 -0
  35. package/dist/command-DQAvbG7d.js +432 -0
  36. package/dist/command-DQAvbG7d.js.map +1 -0
  37. package/dist/commands-A4udfyKZ.js +2 -0
  38. package/dist/commands-CF8mOfiu.js +207 -0
  39. package/dist/commands-CF8mOfiu.js.map +1 -0
  40. package/dist/config-Cuj0kVYj.js +415 -0
  41. package/dist/config-Cuj0kVYj.js.map +1 -0
  42. package/dist/context-loi9OCZv.js +106 -0
  43. package/dist/context-loi9OCZv.js.map +1 -0
  44. package/dist/core-tLN-z1Be.js +96 -0
  45. package/dist/core-tLN-z1Be.js.map +1 -0
  46. package/dist/db-Cjj2ZsfQ.js +2 -0
  47. package/dist/db-DxDzMhtB.js +827 -0
  48. package/dist/db-DxDzMhtB.js.map +1 -0
  49. package/dist/debug-D24NOQH1.js +89 -0
  50. package/dist/debug-D24NOQH1.js.map +1 -0
  51. package/dist/debug-SEmW4w8f.js +2 -0
  52. package/dist/dist-BZXYHN2X.js +1673 -0
  53. package/dist/dist-BZXYHN2X.js.map +1 -0
  54. package/dist/docker-DQDZWXF9.js +20 -0
  55. package/dist/docker-DQDZWXF9.js.map +1 -0
  56. package/dist/docker-DnWAVdEm.js +2 -0
  57. package/dist/docker-oSbCExHL.js +153 -0
  58. package/dist/docker-oSbCExHL.js.map +1 -0
  59. package/dist/doctor-CxlH1pDM.js +525 -0
  60. package/dist/doctor-CxlH1pDM.js.map +1 -0
  61. package/dist/egress-73SQfKdx.js +619 -0
  62. package/dist/egress-73SQfKdx.js.map +1 -0
  63. package/dist/env-BQqj93gu.js +21 -0
  64. package/dist/env-BQqj93gu.js.map +1 -0
  65. package/dist/environment-Mz7wvrtD.js +552 -0
  66. package/dist/environment-Mz7wvrtD.js.map +1 -0
  67. package/dist/errors-C9w_ud7g.js +160 -0
  68. package/dist/errors-C9w_ud7g.js.map +1 -0
  69. package/dist/errors-CSxfJ4qu.js +11 -0
  70. package/dist/errors-CSxfJ4qu.js.map +1 -0
  71. package/dist/files--6CEUXm7.js +2 -0
  72. package/dist/files-BLlrhU4-.js +62 -0
  73. package/dist/files-BLlrhU4-.js.map +1 -0
  74. package/dist/files-Bd25OAQH.js +2 -0
  75. package/dist/files-BvHCFWgD.js +2 -0
  76. package/dist/files-D2-qn_Dl.js +275 -0
  77. package/dist/files-D2-qn_Dl.js.map +1 -0
  78. package/dist/files-bF2fPuT9.js +99 -0
  79. package/dist/files-bF2fPuT9.js.map +1 -0
  80. package/dist/git-D6hMeieS.js +44 -0
  81. package/dist/git-D6hMeieS.js.map +1 -0
  82. package/dist/harness-ls5aX1UO.js +131 -0
  83. package/dist/harness-ls5aX1UO.js.map +1 -0
  84. package/dist/harness.d.ts +74 -0
  85. package/dist/harness.js +2 -0
  86. package/dist/header-DzFDoMCI.js +78 -0
  87. package/dist/header-DzFDoMCI.js.map +1 -0
  88. package/dist/ids-Bp6ut7ZD.js +49 -0
  89. package/dist/ids-Bp6ut7ZD.js.map +1 -0
  90. package/dist/images-Cc1-coFc.js +286 -0
  91. package/dist/images-Cc1-coFc.js.map +1 -0
  92. package/dist/index.d.ts +97 -0
  93. package/dist/index.js +1959 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/init-CFljS8BJ.js +344 -0
  96. package/dist/init-CFljS8BJ.js.map +1 -0
  97. package/dist/init-z2ZPn9Tj.js +2 -0
  98. package/dist/invocations-rXktgSAn.js +157 -0
  99. package/dist/invocations-rXktgSAn.js.map +1 -0
  100. package/dist/jiti-BOLXpKyG.js +46 -0
  101. package/dist/jiti-BOLXpKyG.js.map +1 -0
  102. package/dist/judge-D8Uf4dA9.js +146 -0
  103. package/dist/judge-D8Uf4dA9.js.map +1 -0
  104. package/dist/judge.d.ts +21 -0
  105. package/dist/judge.js +19 -0
  106. package/dist/judge.js.map +1 -0
  107. package/dist/live-Bs3LReMV.js +98 -0
  108. package/dist/live-Bs3LReMV.js.map +1 -0
  109. package/dist/matchers-DyLvm7EG.js +374 -0
  110. package/dist/matchers-DyLvm7EG.js.map +1 -0
  111. package/dist/model-BdO79gWz.js +44 -0
  112. package/dist/model-BdO79gWz.js.map +1 -0
  113. package/dist/model-CDL98xue.js +725 -0
  114. package/dist/model-CDL98xue.js.map +1 -0
  115. package/dist/model-v-0_Ik7S.js +2 -0
  116. package/dist/node-kG64XxdE.js +506 -0
  117. package/dist/node-kG64XxdE.js.map +1 -0
  118. package/dist/opencode-providers-DZuD_oYt.js +3149 -0
  119. package/dist/opencode-providers-DZuD_oYt.js.map +1 -0
  120. package/dist/options-CAQhu--C.js +452 -0
  121. package/dist/options-CAQhu--C.js.map +1 -0
  122. package/dist/patch-BkKje4cp.js +69 -0
  123. package/dist/patch-BkKje4cp.js.map +1 -0
  124. package/dist/paths-CBvm6pap.js +72 -0
  125. package/dist/paths-CBvm6pap.js.map +1 -0
  126. package/dist/plan-gwk6dJ8c.js +237 -0
  127. package/dist/plan-gwk6dJ8c.js.map +1 -0
  128. package/dist/preflight-BtubXKQ8.js +2 -0
  129. package/dist/preflight-BypZMNBG.js +185 -0
  130. package/dist/preflight-BypZMNBG.js.map +1 -0
  131. package/dist/prepare-Cwv0bHs_.js +3 -0
  132. package/dist/prepare-D6Uzcubb.js +213 -0
  133. package/dist/prepare-D6Uzcubb.js.map +1 -0
  134. package/dist/provenance-Dfb8YY5Y.js +129 -0
  135. package/dist/provenance-Dfb8YY5Y.js.map +1 -0
  136. package/dist/provider-BDbNOQhQ.js +2 -0
  137. package/dist/provider-CmAYTQQs.js +14 -0
  138. package/dist/provider-CmAYTQQs.js.map +1 -0
  139. package/dist/providers-2p3ylMHI.js +107 -0
  140. package/dist/providers-2p3ylMHI.js.map +1 -0
  141. package/dist/providers-BUOxitcT.js +2 -0
  142. package/dist/query-CFATHZmV.js +91 -0
  143. package/dist/query-CFATHZmV.js.map +1 -0
  144. package/dist/query-DR4m6CXf.js +2 -0
  145. package/dist/record-DQ8wzyco.js +99 -0
  146. package/dist/record-DQ8wzyco.js.map +1 -0
  147. package/dist/redact-C4fL_bZP.js +167 -0
  148. package/dist/redact-C4fL_bZP.js.map +1 -0
  149. package/dist/results-CeXb8Wde.js +37 -0
  150. package/dist/results-CeXb8Wde.js.map +1 -0
  151. package/dist/root-CFDjpWuc.js +110 -0
  152. package/dist/root-CFDjpWuc.js.map +1 -0
  153. package/dist/sandbox-By2gkdkC.js +133 -0
  154. package/dist/sandbox-By2gkdkC.js.map +1 -0
  155. package/dist/sandbox.d.ts +41 -0
  156. package/dist/sandbox.js +2 -0
  157. package/dist/server-Bi61uiY0.js +350 -0
  158. package/dist/server-Bi61uiY0.js.map +1 -0
  159. package/dist/server-CsSBL8NC.js +2 -0
  160. package/dist/source-BXzrmof5.js +2 -0
  161. package/dist/source-Bsfa3LZH.js +40 -0
  162. package/dist/source-Bsfa3LZH.js.map +1 -0
  163. package/dist/src-55j1zNHH.js +3 -0
  164. package/dist/src-AEwxd1UP.js +602 -0
  165. package/dist/src-AEwxd1UP.js.map +1 -0
  166. package/dist/src-BDwSuyIo.js +3 -0
  167. package/dist/src-BQyMiWri.js +490 -0
  168. package/dist/src-BQyMiWri.js.map +1 -0
  169. package/dist/src-C-LHyTSV.js +3 -0
  170. package/dist/src-Cmp-7YrD.js +1136 -0
  171. package/dist/src-Cmp-7YrD.js.map +1 -0
  172. package/dist/src-D0RdqpNb.js +252 -0
  173. package/dist/src-D0RdqpNb.js.map +1 -0
  174. package/dist/src-D8KYzxBX.js +793 -0
  175. package/dist/src-D8KYzxBX.js.map +1 -0
  176. package/dist/src-DEgff9Z7.js +4 -0
  177. package/dist/src-DXx_29pq.js +567 -0
  178. package/dist/src-DXx_29pq.js.map +1 -0
  179. package/dist/src-DwwiVLqv.js +2937 -0
  180. package/dist/src-DwwiVLqv.js.map +1 -0
  181. package/dist/src-N7E_mfcZ.js +2 -0
  182. package/dist/src-W9g-y5X5.js +3 -0
  183. package/dist/src-daS0wKH2.js +3 -0
  184. package/dist/state-Cyw3QTsN.js +2 -0
  185. package/dist/state-DZ7eqb1F.js +167 -0
  186. package/dist/state-DZ7eqb1F.js.map +1 -0
  187. package/dist/stats-BNAHlNMD.js +114 -0
  188. package/dist/stats-BNAHlNMD.js.map +1 -0
  189. package/dist/studio-app/assets/index-D6XyfFSH.js +58 -0
  190. package/dist/studio-app/assets/index-xwzWdcE_.css +2 -0
  191. package/dist/studio-app/favicon.svg +1 -0
  192. package/dist/studio-app/index.html +15 -0
  193. package/dist/summary-D7Ttky0z.js +166 -0
  194. package/dist/summary-D7Ttky0z.js.map +1 -0
  195. package/dist/text-gEcKjAyp.js +29 -0
  196. package/dist/text-gEcKjAyp.js.map +1 -0
  197. package/dist/types-C5vI3g1C.js +9 -0
  198. package/dist/types-C5vI3g1C.js.map +1 -0
  199. package/dist/types-DLec-6Cx.d.ts +1535 -0
  200. package/dist/usage-DsYUqIUM.js +24 -0
  201. package/dist/usage-DsYUqIUM.js.map +1 -0
  202. package/dist/view/index.d.ts +645 -0
  203. package/dist/view/index.js +8 -0
  204. package/dist/views-BrHOv6wg.js +220 -0
  205. package/dist/views-BrHOv6wg.js.map +1 -0
  206. package/dist/views-CwCWLWqo.js +3 -0
  207. package/dist/worker-entry-DnYkANPG.js +506 -0
  208. package/dist/worker-entry-DnYkANPG.js.map +1 -0
  209. package/dist/workspace-C2S0Z6gl.js +327 -0
  210. package/dist/workspace-C2S0Z6gl.js.map +1 -0
  211. package/dist/workspace-CyoXG6CY.js +2 -0
  212. package/docker/Dockerfile +19 -0
  213. package/package.json +79 -0
@@ -0,0 +1,506 @@
1
+ import { t as UsageError } from "./errors-CSxfJ4qu.js";
2
+ import { c as relativeFile } from "./ids-Bp6ut7ZD.js";
3
+ import { t as esJiti } from "./jiti-BOLXpKyG.js";
4
+ import { d as attemptExpectError, f as createExpect, g as withAttemptExpect, h as unawaitedError, i as useSchedulerChannel, m as extendExpect, n as matchers, r as acquire, u as useEngine } from "./matchers-DyLvm7EG.js";
5
+ import { t as budgetMarker } from "./budget-DBUrH4jX.js";
6
+ import { t as codeFrame } from "./errors-C9w_ud7g.js";
7
+ import { existsSync, readFileSync } from "node:fs";
8
+ import { dirname } from "node:path";
9
+ import { AsyncLocalStorage } from "node:async_hooks";
10
+ import { format, stripVTControlCharacters } from "node:util";
11
+ import { DecodedMap, getOriginalPosition } from "@vitest/utils/source-map";
12
+ import { getTsconfig } from "get-tsconfig";
13
+ import { processError } from "@vitest/utils/error";
14
+ //#region src/engine/collector.ts
15
+ let collecting;
16
+ const collectingFile = () => collecting?.file;
17
+ function registerGroup(name, mode, factory) {
18
+ current().tasks.push({
19
+ type: "suite",
20
+ name,
21
+ mode,
22
+ factory,
23
+ tasks: [],
24
+ containsOnly: false
25
+ });
26
+ }
27
+ function registerTest(name, options, body) {
28
+ current().tasks.push({
29
+ type: "test",
30
+ index: -1,
31
+ name,
32
+ groups: [],
33
+ mode: options.mode,
34
+ options,
35
+ body
36
+ });
37
+ }
38
+ function current() {
39
+ if (!collecting) throw new UsageError("evaluate() and group() declare evals while reeval loads the file; they can't be called inside an eval.");
40
+ return collecting.current;
41
+ }
42
+ /** Loads the file with `load` and returns its tests in declaration order, with their modes. */
43
+ async function collect(file, load) {
44
+ const root = {
45
+ type: "suite",
46
+ name: "",
47
+ mode: "run",
48
+ tasks: [],
49
+ containsOnly: false
50
+ };
51
+ collecting = {
52
+ file,
53
+ current: root
54
+ };
55
+ try {
56
+ await load();
57
+ await collectSuite(root);
58
+ } finally {
59
+ collecting = void 0;
60
+ }
61
+ interpretModes(root, root.containsOnly, false);
62
+ const tests = [];
63
+ const walk = (suite, groups) => {
64
+ for (const task of suite.tasks) if (task.type === "suite") walk(task, [...groups, task.name]);
65
+ else tests.push(Object.assign(task, {
66
+ index: tests.length,
67
+ groups
68
+ }));
69
+ };
70
+ walk(root, []);
71
+ return tests;
72
+ }
73
+ async function collectSuite(suite) {
74
+ const state = collecting;
75
+ if (suite.factory) {
76
+ const outer = state.current;
77
+ state.current = suite;
78
+ try {
79
+ await suite.factory();
80
+ } finally {
81
+ state.current = outer;
82
+ }
83
+ }
84
+ for (const task of suite.tasks) if (task.type === "suite") await collectSuite(task);
85
+ suite.containsOnly = suite.tasks.some((t) => t.mode === "only" || t.type === "suite" && t.containsOnly);
86
+ }
87
+ /** Vitest's `interpretTaskModes`, without the filters reeval applies itself. */
88
+ function interpretModes(suite, onlyMode, parentIsOnly) {
89
+ const suiteIsOnly = parentIsOnly || suite.mode === "only";
90
+ const someOnly = onlyMode && suite.containsOnly;
91
+ for (const t of suite.tasks) {
92
+ const include = someOnly ? t.mode === "only" || t.type === "suite" && t.containsOnly : suiteIsOnly || t.mode === "only";
93
+ if (onlyMode) {
94
+ if (t.type === "suite" && (include || t.containsOnly)) {
95
+ if (t.mode === "only") t.mode = "run";
96
+ } else if (t.mode === "run" && !include) t.mode = "skip";
97
+ else if (t.mode === "only") t.mode = "run";
98
+ }
99
+ if (t.type === "suite") {
100
+ if (t.mode === "skip" || t.mode === "todo") markAll(t, t.mode);
101
+ else interpretModes(t, onlyMode, include);
102
+ }
103
+ }
104
+ }
105
+ function markAll(suite, mode) {
106
+ for (const t of suite.tasks) {
107
+ if (t.mode !== "run") continue;
108
+ t.mode = mode;
109
+ if (t.type === "suite") markAll(t, mode);
110
+ }
111
+ }
112
+ //#endregion
113
+ //#region src/engine/loader.ts
114
+ var TsconfigError = class extends Error {
115
+ name = "TsconfigError";
116
+ };
117
+ /** Each file jiti transformed: its source map, and how far jiti's wrapper shifts line 1. */
118
+ const transformed = /* @__PURE__ */ new Map();
119
+ const INLINE_MAP = /\/\/# sourceMappingURL=data:application\/json;(?:charset=utf-8;)?base64,([A-Za-z0-9+/=]+)\s*$/;
120
+ /** Imports `file` and whatever it imports. */
121
+ async function loadEvalFile(file, root) {
122
+ checkTsconfig(dirname(file), root);
123
+ const options = {
124
+ moduleCache: true,
125
+ fsCache: false,
126
+ sourceMaps: true
127
+ };
128
+ const base = await esJiti(file, options);
129
+ const jiti = await esJiti(file, {
130
+ ...options,
131
+ transform: (opts) => {
132
+ const code = base.transform(opts);
133
+ const inline = INLINE_MAP.exec(code);
134
+ if (opts.filename && inline?.[1]) {
135
+ const map = JSON.parse(Buffer.from(inline[1], "base64").toString("utf8"));
136
+ const shift = `(${opts.async ? "async " : ""}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { `.length;
137
+ transformed.set(opts.filename, {
138
+ map: new DecodedMap(map, opts.filename),
139
+ shift
140
+ });
141
+ }
142
+ return { code };
143
+ }
144
+ });
145
+ try {
146
+ return await jiti.import(file);
147
+ } catch (error) {
148
+ throw syntaxError(error, root) ?? missingModule(error);
149
+ }
150
+ }
151
+ /** jiti's `Cannot find module 'x'` plus a require stack, as `… imported from <file>`. */
152
+ function missingModule(error) {
153
+ const e = error;
154
+ if (e?.code !== "MODULE_NOT_FOUND") return error;
155
+ const parts = /^(Cannot find module '[^']+')\nRequire stack:\n- (.+)/.exec(e.message);
156
+ if (parts) e.message = `${parts[1]} imported from ${parts[2]}`;
157
+ return error;
158
+ }
159
+ /**
160
+ * jiti reports a parse error as a plain Error, `ParseError: <reason>` then ` <file>:<line>:<col>`
161
+ * (col 0-based): a SyntaxError again, naming the file and position, with a code frame.
162
+ */
163
+ function syntaxError(error, root) {
164
+ const parsed = /^ParseError: (.*?)\s*\n\s*(.+):(\d+):(\d+)$/.exec(error?.message ?? "");
165
+ if (!parsed) return void 0;
166
+ const [, said, file, line, column] = parsed;
167
+ const reason = said.replace(/^(?:[A-Za-z]:)?[\\/]\S*?: /, "");
168
+ const at = {
169
+ line: Number(line),
170
+ column: Number(column) + 1
171
+ };
172
+ let frame = "";
173
+ try {
174
+ frame = stripVTControlCharacters(codeFrame(readFileSync(file, "utf8"), 0, at, 200));
175
+ } catch {}
176
+ return /* @__PURE__ */ new SyntaxError(`${reason} (${relativeFile(root, file)}:${at.line}:${at.column})${frame ? `\n${frame}` : ""}`);
177
+ }
178
+ /** `stack` with positions in transformed files mapped back to their sources. */
179
+ function originalStack(stack) {
180
+ return stack.replace(/^(\s+at (?:.*\()?)(.+?):(\d+):(\d+)(\)?)$/gm, (whole, before, file, line, column, after) => {
181
+ const loaded = transformed.get(file);
182
+ const at0 = Number(column) - 1 - (line === "1" ? loaded?.shift ?? 0 : 0);
183
+ if (!loaded || at0 < 0) return whole;
184
+ const at = getOriginalPosition(loaded.map, {
185
+ line: Number(line),
186
+ column: at0
187
+ });
188
+ if (!at) return whole;
189
+ const original = at.line;
190
+ return `${before}${file}:${original}:${callee(file, original, at.column) + 1}${after}`;
191
+ });
192
+ }
193
+ /**
194
+ * Where V8 would put a call's position without the transform: jiti calls an imported function as
195
+ * `(0, _module.fn)()`, which V8 reports at the `(`, where a plain `fn()` reports at `fn`.
196
+ */
197
+ function callee(file, line, column) {
198
+ const text = readFileSync(file, "utf8").split(/\r?\n/)[line - 1] ?? "";
199
+ if (text[column] !== "(") return column;
200
+ let start = column;
201
+ while (start > 0 && /[\w$]/.test(text[start - 1])) start--;
202
+ return start;
203
+ }
204
+ /** Fails when the nearest tsconfig.json isn't valid JSON with comments, or extends a missing file. */
205
+ function checkTsconfig(dir, root) {
206
+ let found;
207
+ try {
208
+ found = getTsconfig(dir);
209
+ } catch (error) {
210
+ const message = error.message;
211
+ const missing = /^File '(.+)' not found\.$/.exec(message);
212
+ throw new TsconfigError(missing ? `Failed to load tsconfig '${missing[1]}': Tsconfig not found` : `Failed to load tsconfig: ${message}`);
213
+ }
214
+ if (!found) return;
215
+ try {
216
+ JSON.parse(stripJsonComments(readFileSync(found.path, "utf8")));
217
+ } catch (error) {
218
+ throw new TsconfigError(`Failed to load tsconfig '${relativeFile(root, found.path)}': ${error.message}`);
219
+ }
220
+ }
221
+ /** JSON with comments and trailing commas (tsconfig's dialect) as plain JSON. */
222
+ function stripJsonComments(text) {
223
+ return scan(scan(text, (rest) => {
224
+ if (rest.startsWith("//")) {
225
+ const end = rest.indexOf("\n");
226
+ return [end < 0 ? rest.length : end, ""];
227
+ }
228
+ if (rest.startsWith("/*")) {
229
+ const end = rest.indexOf("*/", 2);
230
+ return [end < 0 ? rest.length : end + 2, " "];
231
+ }
232
+ }), (rest) => /^,\s*[}\]]/.test(rest) ? [1, " "] : void 0);
233
+ }
234
+ /** Rewrites `text` outside its strings: `at` says how much to replace here, and with what. */
235
+ function scan(text, at) {
236
+ let out = "";
237
+ for (let i = 0; i < text.length;) {
238
+ if (text[i] === "\"") {
239
+ let end = i + 1;
240
+ while (end < text.length && text[end] !== "\"") end += text[end] === "\\" ? 2 : 1;
241
+ out += text.slice(i, end + 1);
242
+ i = end + 1;
243
+ continue;
244
+ }
245
+ const hit = at(text.slice(i));
246
+ if (hit) {
247
+ out += hit[1];
248
+ i += hit[0];
249
+ } else out += text[i++];
250
+ }
251
+ return out;
252
+ }
253
+ //#endregion
254
+ //#region src/engine/run.ts
255
+ /** An error as it crosses to the main process: its diff computed, then plain data. */
256
+ function serializeError(error) {
257
+ if (error instanceof Error && typeof error.stack === "string") try {
258
+ error.stack = originalStack(error.stack);
259
+ } catch {}
260
+ return processError(error);
261
+ }
262
+ const CONSOLE = {
263
+ log: "stdout",
264
+ info: "stdout",
265
+ debug: "stdout",
266
+ warn: "stderr",
267
+ error: "stderr"
268
+ };
269
+ const currentAttempt = new AsyncLocalStorage();
270
+ /** Sends console output to the attempt that wrote it, or to the file when no attempt did. */
271
+ function routeConsole(reporter) {
272
+ const target = globalThis.console;
273
+ for (const [method, stream] of Object.entries(CONSOLE)) target[method] = (...args) => reporter.log(currentAttempt.getStore(), Date.now(), stream, `${format(...args)}\n`);
274
+ }
275
+ /**
276
+ * Runs the tests in `select` whose mode is `run`, and reports the others as skipped. Resolves
277
+ * when every attempt has finished, its cleanup included (a timed-out attempt reports its result
278
+ * at the timeout, then keeps its lease until its sandbox is gone).
279
+ */
280
+ async function runTests(tests, select, options) {
281
+ const settled = [];
282
+ const bodies = /* @__PURE__ */ new Set();
283
+ for (const test of tests) {
284
+ if (!select.has(test.index) || test.mode !== "run") {
285
+ options.reporter.result(test.index, {
286
+ state: "skipped",
287
+ errors: [],
288
+ durationMs: 0
289
+ });
290
+ continue;
291
+ }
292
+ settled.push(runTest(test, options, bodies));
293
+ }
294
+ options.onReady();
295
+ await Promise.all(settled);
296
+ await Promise.allSettled(bodies);
297
+ }
298
+ async function runTest(test, { file, stagingDir, signal, reporter }, bodies) {
299
+ const { index, options } = test;
300
+ const calledAt = Date.now();
301
+ const skip = () => reporter.result(index, {
302
+ state: "skipped",
303
+ errors: [],
304
+ durationMs: Date.now() - calledAt
305
+ });
306
+ if (signal.aborted) return skip();
307
+ let lease;
308
+ if (options.gate) {
309
+ const { limits, rank } = options.gate;
310
+ try {
311
+ lease = await acquire(limits, {
312
+ rank,
313
+ signal
314
+ });
315
+ } catch (error) {
316
+ if (signal.aborted) return skip();
317
+ return fail(error);
318
+ }
319
+ }
320
+ if (existsSync(budgetMarker(stagingDir))) {
321
+ lease?.release();
322
+ return skip();
323
+ }
324
+ const startedAt = Date.now();
325
+ reporter.start(index, startedAt);
326
+ const task = {
327
+ type: "test",
328
+ name: test.name,
329
+ fullTestName: [...test.groups, test.name].join(" > ")
330
+ };
331
+ const own = createExpect(task);
332
+ const pending = [];
333
+ const timeout = new AbortController();
334
+ let reported = false;
335
+ let meta;
336
+ const body = currentAttempt.run(index, () => withAttemptExpect(own, pending, () => test.body({
337
+ file,
338
+ signal: AbortSignal.any([signal, timeout.signal]),
339
+ setMeta: (next) => {
340
+ meta = next;
341
+ if (reported) reporter.meta(index, next);
342
+ },
343
+ progress: (progress) => reporter.progress(index, progress),
344
+ debug: (line) => reporter.debug(index, line),
345
+ unawaited: async () => await unawaitedError(pending) ?? attemptExpectError(own, task)
346
+ })));
347
+ bodies.add(body);
348
+ const release = () => lease?.release();
349
+ body.then(release, release);
350
+ try {
351
+ await (options.timeout ? withTimeout(body, options.timeout, timeout) : body);
352
+ finish({
353
+ state: "passed",
354
+ errors: []
355
+ });
356
+ } catch (error) {
357
+ finish({
358
+ state: "failed",
359
+ errors: [serializeError(error)]
360
+ });
361
+ }
362
+ function finish(result) {
363
+ reported = true;
364
+ reporter.result(index, {
365
+ ...result,
366
+ durationMs: Date.now() - startedAt,
367
+ ...meta ? { meta } : {}
368
+ });
369
+ }
370
+ function fail(error) {
371
+ reporter.result(index, {
372
+ state: "failed",
373
+ errors: [serializeError(error)],
374
+ durationMs: Date.now() - calledAt
375
+ });
376
+ }
377
+ }
378
+ /** Fails after `ms`, aborting the body; the body keeps its lease until it has cleaned up. */
379
+ function withTimeout(running, ms, abort) {
380
+ let timer;
381
+ const timedOut = new Promise((_, reject) => {
382
+ timer = setTimeout(() => {
383
+ const error = /* @__PURE__ */ new Error(`Eval timed out after ${ms / 1e3}s`);
384
+ abort.abort(error);
385
+ reject(error);
386
+ }, ms);
387
+ });
388
+ return Promise.race([running, timedOut]).finally(() => clearTimeout(timer));
389
+ }
390
+ //#endregion
391
+ //#region src/engine/worker.ts
392
+ function startWorker(channel) {
393
+ const cancel = new AbortController();
394
+ let grant;
395
+ let working = Promise.resolve();
396
+ const stop = () => cancel.abort(/* @__PURE__ */ new Error("The run was cancelled"));
397
+ channel.onMessage((message) => {
398
+ if (message.t === "init") working = init(message.run, message.file, message.select);
399
+ else if (message.t === "grant") grant?.(message.id);
400
+ else stop();
401
+ });
402
+ channel.onDisconnect(() => {
403
+ stop();
404
+ working.finally(() => channel.exit(0));
405
+ });
406
+ const reporter = {
407
+ start: (index, at) => channel.send({
408
+ t: "start",
409
+ index,
410
+ at
411
+ }),
412
+ progress: (index, progress) => channel.send({
413
+ t: "progress",
414
+ index,
415
+ progress
416
+ }),
417
+ debug: (index, line) => channel.send({
418
+ t: "debug",
419
+ index,
420
+ line
421
+ }),
422
+ log: (index, at, stream, text) => channel.send({
423
+ t: "log",
424
+ ...index === void 0 ? {} : { index },
425
+ at,
426
+ stream,
427
+ text
428
+ }),
429
+ result: (index, result) => channel.send({
430
+ t: "result",
431
+ index,
432
+ result
433
+ }),
434
+ meta: (index, meta) => channel.send({
435
+ t: "meta",
436
+ index,
437
+ meta
438
+ })
439
+ };
440
+ async function init(run, file, select) {
441
+ useEngine({
442
+ registerTest,
443
+ registerGroup,
444
+ getRunContext: () => run,
445
+ collectingFile
446
+ });
447
+ extendExpect(matchers);
448
+ routeConsole(reporter);
449
+ try {
450
+ const tests = await collect(file, () => loadEvalFile(file, run.config.root));
451
+ channel.send({
452
+ t: "collected",
453
+ tests: tests.map(({ index, name, groups, mode, options }) => ({
454
+ index,
455
+ name,
456
+ groups,
457
+ mode,
458
+ ...options.attempt ? { attempt: options.attempt } : {}
459
+ }))
460
+ });
461
+ if (select) {
462
+ grant = useSchedulerChannel((message) => channel.send(message));
463
+ await runTests(tests, new Set(select), {
464
+ file,
465
+ stagingDir: run.stagingDir,
466
+ signal: cancel.signal,
467
+ reporter,
468
+ onReady: () => channel.send({ t: "ready" })
469
+ });
470
+ }
471
+ } catch (error) {
472
+ channel.send({
473
+ t: "load-error",
474
+ error: serializeError(error)
475
+ });
476
+ }
477
+ channel.send({ t: "done" }, () => channel.exit(0));
478
+ }
479
+ channel.send({
480
+ t: "hello",
481
+ protocol: 2
482
+ });
483
+ return { unhandled: (error) => channel.send({
484
+ t: "unhandled",
485
+ error: serializeError(error)
486
+ }) };
487
+ }
488
+ //#endregion
489
+ //#region src/engine/worker-entry.ts
490
+ if (!process.send) {
491
+ console.error("reeval __worker is the process reeval starts for each eval file; it isn't a command.");
492
+ process.exit(2);
493
+ }
494
+ process.on("SIGINT", () => {});
495
+ const worker = startWorker({
496
+ send: (message, sent) => process.send?.(message, void 0, {}, () => sent?.()),
497
+ onMessage: (listener) => process.on("message", listener),
498
+ onDisconnect: (listener) => process.on("disconnect", listener),
499
+ exit: (code) => process.exit(code)
500
+ });
501
+ process.on("unhandledRejection", (error) => worker.unhandled(error));
502
+ process.on("uncaughtException", (error) => worker.unhandled(error));
503
+ //#endregion
504
+ export {};
505
+
506
+ //# sourceMappingURL=worker-entry-DnYkANPG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-entry-DnYkANPG.js","names":[],"sources":["../src/engine/collector.ts","../src/engine/loader.ts","../src/engine/run.ts","../src/engine/worker.ts","../src/engine/worker-entry.ts"],"mappings":"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"}