@overkill-dev/run 0.0.62 → 0.0.64

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 (421) hide show
  1. package/assertion-protocol/assertion-node.d.ts +0 -15
  2. package/assertion-protocol/assertion-node.d.ts.map +1 -1
  3. package/assertion-protocol/assertion-reference.d.ts +0 -21
  4. package/assertion-protocol/assertion-reference.d.ts.map +1 -1
  5. package/assertion-protocol/assertion-reference.js +3 -30
  6. package/assertion-protocol/assertion-reference.js.map +1 -1
  7. package/assertion-protocol/assertions/boolean.d.ts +0 -7
  8. package/assertion-protocol/assertions/boolean.d.ts.map +1 -1
  9. package/assertion-protocol/assertions/collection.d.ts +0 -9
  10. package/assertion-protocol/assertions/collection.d.ts.map +1 -1
  11. package/assertion-protocol/assertions/equality.d.ts +0 -11
  12. package/assertion-protocol/assertions/equality.d.ts.map +1 -1
  13. package/assertion-protocol/assertions/fail.d.ts +0 -5
  14. package/assertion-protocol/assertions/fail.d.ts.map +1 -1
  15. package/assertion-protocol/assertions/numeric.d.ts +0 -13
  16. package/assertion-protocol/assertions/numeric.d.ts.map +1 -1
  17. package/assertion-protocol/assertions/partial.d.ts +0 -9
  18. package/assertion-protocol/assertions/partial.d.ts.map +1 -1
  19. package/assertion-protocol/assertions/presence.d.ts +0 -11
  20. package/assertion-protocol/assertions/presence.d.ts.map +1 -1
  21. package/assertion-protocol/assertions/string.d.ts +0 -13
  22. package/assertion-protocol/assertions/string.d.ts.map +1 -1
  23. package/assertion-protocol/assertions/type-shape.d.ts +0 -19
  24. package/assertion-protocol/assertions/type-shape.d.ts.map +1 -1
  25. package/assertion-protocol/source-location-forwarding.js +15 -9
  26. package/assertion-protocol/source-location-forwarding.js.map +1 -1
  27. package/assertion-protocol/source-location.js +1 -0
  28. package/assertion-protocol/source-location.js.map +1 -1
  29. package/assertion-protocol/thrown-error-record.d.ts +0 -1
  30. package/assertion-protocol/thrown-error-record.d.ts.map +1 -1
  31. package/assertion-protocol/thrown-matcher.d.ts +1 -18
  32. package/assertion-protocol/thrown-matcher.d.ts.map +1 -1
  33. package/compare/serialized-value-shape.d.ts +0 -9
  34. package/compare/serialized-value-shape.d.ts.map +1 -1
  35. package/compare/serialized-value.d.ts +1 -8
  36. package/compare/serialized-value.d.ts.map +1 -1
  37. package/engine/assertion-facade.d.ts +2 -5
  38. package/engine/assertion-facade.d.ts.map +1 -1
  39. package/engine/async-control.d.ts +0 -26
  40. package/engine/async-control.d.ts.map +1 -1
  41. package/engine/async-leak-diagnostics.js +9 -9
  42. package/engine/async-leak-diagnostics.js.map +1 -1
  43. package/engine/case-attempt-execution.js +191 -0
  44. package/engine/case-attempt-execution.js.map +1 -0
  45. package/engine/case-execution.d.ts +5 -16
  46. package/engine/case-execution.d.ts.map +1 -1
  47. package/engine/case-execution.js +25 -24
  48. package/engine/case-execution.js.map +1 -1
  49. package/engine/coverage-artifact.d.ts +1 -14
  50. package/engine/coverage-artifact.d.ts.map +1 -1
  51. package/engine/custom-assertion-recording.js +1 -1
  52. package/engine/custom-assertion-recording.js.map +1 -1
  53. package/engine/engine.d.ts +1 -8
  54. package/engine/engine.d.ts.map +1 -1
  55. package/engine/execution-async-leak-policy.js +3 -10
  56. package/engine/execution-async-leak-policy.js.map +1 -1
  57. package/engine/execution-global-error-observer.d.ts +2 -4
  58. package/engine/execution-global-error-observer.d.ts.map +1 -1
  59. package/engine/execution-global-error-observer.js +20 -46
  60. package/engine/execution-global-error-observer.js.map +1 -1
  61. package/engine/execution-options.d.ts +4 -7
  62. package/engine/execution-options.d.ts.map +1 -1
  63. package/engine/execution-options.js +7 -2
  64. package/engine/execution-options.js.map +1 -1
  65. package/engine/execution-resource-budget-breach.d.ts +0 -9
  66. package/engine/execution-resource-budget-breach.d.ts.map +1 -1
  67. package/engine/execution-resource-budget-tracking.js.map +1 -1
  68. package/engine/execution-resource-tracked-cases.js.map +1 -1
  69. package/engine/execution-result.js.map +1 -1
  70. package/engine/execution-supervision-state.js.map +1 -1
  71. package/engine/execution-supervision.d.ts +0 -16
  72. package/engine/execution-supervision.d.ts.map +1 -1
  73. package/engine/execution-supervision.js +50 -33
  74. package/engine/execution-supervision.js.map +1 -1
  75. package/engine/execution-test-plan-cases.js +6 -126
  76. package/engine/execution-test-plan-cases.js.map +1 -1
  77. package/engine/execution-test-plan-resource-usage.js.map +1 -1
  78. package/engine/execution.d.ts +1 -12
  79. package/engine/execution.d.ts.map +1 -1
  80. package/engine/execution.js +3 -3
  81. package/engine/execution.js.map +1 -1
  82. package/engine/identity.d.ts +3 -6
  83. package/engine/identity.d.ts.map +1 -1
  84. package/engine/reporter-dispatcher.d.ts +1 -11
  85. package/engine/reporter-dispatcher.d.ts.map +1 -1
  86. package/engine/reporter-dispatcher.js +1 -0
  87. package/engine/reporter-dispatcher.js.map +1 -1
  88. package/engine/reporter-event-queue.js.map +1 -1
  89. package/engine/reporter-output.d.ts +0 -6
  90. package/engine/reporter-output.d.ts.map +1 -1
  91. package/engine/reporter.d.ts +2 -17
  92. package/engine/reporter.d.ts.map +1 -1
  93. package/engine/reporter.js.map +1 -1
  94. package/engine/reporting-context.d.ts +1 -13
  95. package/engine/reporting-context.d.ts.map +1 -1
  96. package/engine/require-assertion-facade.d.ts +2 -5
  97. package/engine/require-assertion-facade.d.ts.map +1 -1
  98. package/engine/resource-usage.d.ts +22 -0
  99. package/engine/resource-usage.d.ts.map +1 -0
  100. package/engine/retry-policy.d.ts +4 -0
  101. package/engine/retry-policy.d.ts.map +1 -0
  102. package/engine/retry-policy.js +22 -0
  103. package/engine/retry-policy.js.map +1 -0
  104. package/engine/run-artifact.d.ts +45 -0
  105. package/engine/run-artifact.d.ts.map +1 -0
  106. package/engine/run-result.d.ts +18 -114
  107. package/engine/run-result.d.ts.map +1 -1
  108. package/engine/run-result.js +14 -0
  109. package/engine/run-result.js.map +1 -1
  110. package/engine/run-timings.d.ts +0 -18
  111. package/engine/run-timings.d.ts.map +1 -1
  112. package/engine/runner-error-reporting.js.map +1 -1
  113. package/engine/test-attempt-history.js +24 -0
  114. package/engine/test-attempt-history.js.map +1 -0
  115. package/engine/test-body-resource-attachment.d.ts +0 -12
  116. package/engine/test-body-resource-attachment.d.ts.map +1 -1
  117. package/engine/test-body-resource-attachment.js +3 -134
  118. package/engine/test-body-resource-attachment.js.map +1 -1
  119. package/engine/test-data.d.ts +0 -6
  120. package/engine/test-data.d.ts.map +1 -1
  121. package/engine/test-node.d.ts +0 -21
  122. package/engine/test-node.d.ts.map +1 -1
  123. package/engine/test-node.js +1 -20
  124. package/engine/test-node.js.map +1 -1
  125. package/engine/test-plan.d.ts +1 -4
  126. package/engine/test-plan.d.ts.map +1 -1
  127. package/package.json +21 -7
  128. package/packages/run/config.entry-point.d.ts +2 -0
  129. package/packages/run/config.entry-point.d.ts.map +1 -1
  130. package/packages/run/run.entry-point.d.ts +2 -0
  131. package/packages/run/run.entry-point.d.ts.map +1 -1
  132. package/packages/run/transcript-store.entry-point.d.ts +3 -0
  133. package/packages/run/transcript-store.entry-point.d.ts.map +1 -0
  134. package/packages/run/transcript-store.entry-point.js +2 -0
  135. package/packages/run/transcript-store.entry-point.js.map +1 -0
  136. package/packages/simulation/transcript.entry-point.js +2 -0
  137. package/packages/simulation/transcript.entry-point.js.map +1 -0
  138. package/readme.md +47 -2
  139. package/reporters/human-reporter-rendering.js +12 -3
  140. package/reporters/human-reporter-rendering.js.map +1 -1
  141. package/reporters/line-reporter.js +6 -1
  142. package/reporters/line-reporter.js.map +1 -1
  143. package/reporters/tree-reporter.js +2 -103
  144. package/reporters/tree-reporter.js.map +1 -1
  145. package/resources/resource-definition-shape.d.ts +0 -2
  146. package/resources/resource-definition-shape.d.ts.map +1 -1
  147. package/resources/resource-definition-types.d.ts +1 -96
  148. package/resources/resource-definition-types.d.ts.map +1 -1
  149. package/resources/resource-definition.js.map +1 -1
  150. package/resources/resource-lifecycle-error.d.ts +0 -1
  151. package/resources/resource-lifecycle-error.d.ts.map +1 -1
  152. package/resources/resource-lifecycle-error.js +17 -1
  153. package/resources/resource-lifecycle-error.js.map +1 -1
  154. package/resources/resource-scenario-binding.js +1 -69
  155. package/resources/resource-scenario-binding.js.map +1 -1
  156. package/resources/resource-scenario.d.ts +0 -19
  157. package/resources/resource-scenario.d.ts.map +1 -1
  158. package/resources/resource-session.d.ts +1 -20
  159. package/resources/resource-session.d.ts.map +1 -1
  160. package/resources/resources.d.ts +5 -88
  161. package/resources/resources.d.ts.map +1 -1
  162. package/resources/resources.js +5 -81
  163. package/resources/resources.js.map +1 -1
  164. package/resources/runtime-definition.d.ts +0 -7
  165. package/resources/runtime-definition.d.ts.map +1 -1
  166. package/resources/runtime-definition.js +2 -57
  167. package/resources/runtime-definition.js.map +1 -1
  168. package/resources/runtime-matrix-definition.d.ts +0 -36
  169. package/resources/runtime-matrix-definition.d.ts.map +1 -1
  170. package/run/capability-policy-snapshots.d.ts +0 -19
  171. package/run/capability-policy-snapshots.d.ts.map +1 -1
  172. package/run/capability-policy.js +10 -5
  173. package/run/capability-policy.js.map +1 -1
  174. package/run/collected-run-plan.js.map +1 -1
  175. package/run/command-line-command-namespace.d.ts +0 -5
  176. package/run/command-line-command-namespace.d.ts.map +1 -1
  177. package/run/command-line-command.d.ts +1 -4
  178. package/run/command-line-command.d.ts.map +1 -1
  179. package/run/command-line-runner.d.ts +0 -2
  180. package/run/command-line-runner.d.ts.map +1 -1
  181. package/run/coverage-loaded-sources.js +112 -0
  182. package/run/coverage-loaded-sources.js.map +1 -0
  183. package/run/coverage-native-data.js +18 -0
  184. package/run/coverage-native-data.js.map +1 -0
  185. package/run/coverage-paths.js +45 -4
  186. package/run/coverage-paths.js.map +1 -1
  187. package/run/coverage-reporting.js +37 -123
  188. package/run/coverage-reporting.js.map +1 -1
  189. package/run/coverage-run-record.js +50 -0
  190. package/run/coverage-run-record.js.map +1 -0
  191. package/run/coverage-runtime-source.js +37 -0
  192. package/run/coverage-runtime-source.js.map +1 -0
  193. package/run/coverage-session.js +344 -6
  194. package/run/coverage-session.js.map +1 -1
  195. package/run/coverage-source-map.js +125 -0
  196. package/run/coverage-source-map.js.map +1 -0
  197. package/run/coverage-source-selection.js +120 -0
  198. package/run/coverage-source-selection.js.map +1 -0
  199. package/run/current-process-run-orchestrator.d.ts +1 -5
  200. package/run/current-process-run-orchestrator.d.ts.map +1 -1
  201. package/run/duration-history.d.ts +0 -30
  202. package/run/duration-history.d.ts.map +1 -1
  203. package/run/duration-history.js +1 -0
  204. package/run/duration-history.js.map +1 -1
  205. package/run/node-run-execution.js +25 -0
  206. package/run/node-run-execution.js.map +1 -0
  207. package/run/node-runtime-state-store.js +38 -0
  208. package/run/node-runtime-state-store.js.map +1 -0
  209. package/run/node-worker-pool-factory.js +0 -31
  210. package/run/node-worker-pool-factory.js.map +1 -1
  211. package/run/path-containment.js +6 -1
  212. package/run/path-containment.js.map +1 -1
  213. package/run/permission-denial-runtime-policy.js +21 -13
  214. package/run/permission-denial-runtime-policy.js.map +1 -1
  215. package/run/placement-trace.d.ts +0 -18
  216. package/run/placement-trace.d.ts.map +1 -1
  217. package/run/recorded-coverage-run.js +45 -0
  218. package/run/recorded-coverage-run.js.map +1 -0
  219. package/run/recorded-coverage-session.js +50 -0
  220. package/run/recorded-coverage-session.js.map +1 -0
  221. package/run/resource-lifecycle-composition.d.ts +0 -3
  222. package/run/resource-lifecycle-composition.d.ts.map +1 -1
  223. package/run/resource-lifecycle-composition.js +1 -14
  224. package/run/resource-lifecycle-composition.js.map +1 -1
  225. package/run/resource-lifecycle-session-acquirer.js +11 -6
  226. package/run/resource-lifecycle-session-acquirer.js.map +1 -1
  227. package/run/resource-lifecycle-state.d.ts +4 -5
  228. package/run/resource-lifecycle-state.d.ts.map +1 -1
  229. package/run/resource-lifecycle-state.js +9 -3
  230. package/run/resource-lifecycle-state.js.map +1 -1
  231. package/run/resource-lifecycle.js +36 -10
  232. package/run/resource-lifecycle.js.map +1 -1
  233. package/run/resource-usage.js.map +1 -1
  234. package/run/retry-artifact-retention.js +37 -0
  235. package/run/retry-artifact-retention.js.map +1 -0
  236. package/run/run-collection-source.d.ts +1 -5
  237. package/run/run-collection-source.d.ts.map +1 -1
  238. package/run/run-config-schema.d.ts +25 -4
  239. package/run/run-config-schema.d.ts.map +1 -1
  240. package/run/run-config-schema.js +7 -0
  241. package/run/run-config-schema.js.map +1 -1
  242. package/run/run-config.d.ts +3 -3
  243. package/run/run-config.d.ts.map +1 -1
  244. package/run/run-config.js +4 -0
  245. package/run/run-config.js.map +1 -1
  246. package/run/run-coverage.js +5 -2
  247. package/run/run-coverage.js.map +1 -1
  248. package/run/run-discovery-types.d.ts +0 -14
  249. package/run/run-discovery-types.d.ts.map +1 -1
  250. package/run/run-engine-primitives.d.ts +11 -0
  251. package/run/run-engine-primitives.d.ts.map +1 -0
  252. package/run/run-engine-selection.d.ts +0 -10
  253. package/run/run-engine-selection.d.ts.map +1 -1
  254. package/run/run-errors.d.ts +0 -2
  255. package/run/run-errors.d.ts.map +1 -1
  256. package/run/run-errors.js +1 -0
  257. package/run/run-errors.js.map +1 -1
  258. package/run/run-execution-config.d.ts +5 -0
  259. package/run/run-execution-config.d.ts.map +1 -1
  260. package/run/run-facts.js +2 -0
  261. package/run/run-facts.js.map +1 -1
  262. package/run/run-if-main-options.d.ts +0 -7
  263. package/run/run-if-main-options.d.ts.map +1 -1
  264. package/run/run-if-main-profile.d.ts +0 -1
  265. package/run/run-if-main-profile.d.ts.map +1 -1
  266. package/run/run-if-main.d.ts +0 -1
  267. package/run/run-if-main.d.ts.map +1 -1
  268. package/run/run-isolated-command.js +2 -0
  269. package/run/run-isolated-command.js.map +1 -1
  270. package/run/run-local-command.js +8 -82
  271. package/run/run-local-command.js.map +1 -1
  272. package/run/run-local-coverage.js +72 -0
  273. package/run/run-local-coverage.js.map +1 -0
  274. package/run/run-local-execution.js +1 -0
  275. package/run/run-local-execution.js.map +1 -1
  276. package/run/run-local-resolution.js +6 -3
  277. package/run/run-local-resolution.js.map +1 -1
  278. package/run/run-orchestrator-dependencies.d.ts +2 -7
  279. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  280. package/run/run-orchestrator.d.ts +0 -8
  281. package/run/run-orchestrator.d.ts.map +1 -1
  282. package/run/run-orchestrator.entry-point.d.ts +1 -1
  283. package/run/run-orchestrator.entry-point.d.ts.map +1 -1
  284. package/run/run-orchestrator.js +6 -18
  285. package/run/run-orchestrator.js.map +1 -1
  286. package/run/run-record-error.js +26 -0
  287. package/run/run-record-error.js.map +1 -0
  288. package/run/run-record-input.js +34 -0
  289. package/run/run-record-input.js.map +1 -0
  290. package/run/run-record-outcomes.d.ts +46 -0
  291. package/run/run-record-outcomes.d.ts.map +1 -0
  292. package/run/run-record-result.js +58 -0
  293. package/run/run-record-result.js.map +1 -0
  294. package/run/run-record-storage.js +51 -0
  295. package/run/run-record-storage.js.map +1 -0
  296. package/run/run-record-types.d.ts +73 -0
  297. package/run/run-record-types.d.ts.map +1 -0
  298. package/run/run-record-versions.js +51 -0
  299. package/run/run-record-versions.js.map +1 -0
  300. package/run/run-record.js +48 -0
  301. package/run/run-record.js.map +1 -0
  302. package/run/run-result-reporting.js +16 -0
  303. package/run/run-result-reporting.js.map +1 -0
  304. package/run/run-selection-filters.d.ts +2 -11
  305. package/run/run-selection-filters.d.ts.map +1 -1
  306. package/run/run-supervised-finalization.js +8 -0
  307. package/run/run-supervised-finalization.js.map +1 -0
  308. package/run/run-supervised-process.js +34 -33
  309. package/run/run-supervised-process.js.map +1 -1
  310. package/run/run-support.js +17 -8
  311. package/run/run-support.js.map +1 -1
  312. package/run/run-test-modules.d.ts +0 -4
  313. package/run/run-test-modules.d.ts.map +1 -1
  314. package/run/run-timing-collection.d.ts +0 -21
  315. package/run/run-timing-collection.d.ts.map +1 -1
  316. package/run/run-types.d.ts +4 -2
  317. package/run/run-types.d.ts.map +1 -1
  318. package/run/run-types.js.map +1 -1
  319. package/run/run.d.ts +0 -3
  320. package/run/run.d.ts.map +1 -1
  321. package/run/supervised-child-execution.js +38 -0
  322. package/run/supervised-child-execution.js.map +1 -0
  323. package/run/supervised-child-process.d.ts +1 -53
  324. package/run/supervised-child-process.d.ts.map +1 -1
  325. package/run/supervised-child-process.js +1 -5
  326. package/run/supervised-child-process.js.map +1 -1
  327. package/run/supervised-child-test-plan.js +2 -0
  328. package/run/supervised-child-test-plan.js.map +1 -1
  329. package/run/supervised-child.js +5 -36
  330. package/run/supervised-child.js.map +1 -1
  331. package/run/supervised-output-capture.js +66 -0
  332. package/run/supervised-output-capture.js.map +1 -0
  333. package/run/supervised-protocol.js.map +1 -1
  334. package/run/supervised-run-collection.js +3 -1
  335. package/run/supervised-run-collection.js.map +1 -1
  336. package/run/supervised-run-resource-policy.js +12 -1
  337. package/run/supervised-run-resource-policy.js.map +1 -1
  338. package/run/supervised-run-runtime.js +16 -27
  339. package/run/supervised-run-runtime.js.map +1 -1
  340. package/run/supervised-run-state.js +64 -81
  341. package/run/supervised-run-state.js.map +1 -1
  342. package/run/supervised-run.js +3 -1
  343. package/run/supervised-run.js.map +1 -1
  344. package/run/worker-pool-collection.js +1 -0
  345. package/run/worker-pool-collection.js.map +1 -1
  346. package/run/worker-pool-command.js +1 -0
  347. package/run/worker-pool-command.js.map +1 -1
  348. package/run/worker-pool-execution.js +2 -1
  349. package/run/worker-pool-execution.js.map +1 -1
  350. package/run/worker-pool-hedged-arbitration.js +4 -0
  351. package/run/worker-pool-hedged-arbitration.js.map +1 -1
  352. package/run/worker-pool-host-process.js.map +1 -1
  353. package/run/worker-pool-host-protocol.js.map +1 -1
  354. package/run/worker-pool-output.js +1 -1
  355. package/run/worker-pool-output.js.map +1 -1
  356. package/run/worker-pool-protocol.js.map +1 -1
  357. package/run/worker-pool-resource-lifecycle-execution.js +1 -0
  358. package/run/worker-pool-resource-lifecycle-execution.js.map +1 -1
  359. package/run/worker-pool-resource-tracking.js +2 -2
  360. package/run/worker-pool-resource-tracking.js.map +1 -1
  361. package/run/worker-pool-results.js +7 -9
  362. package/run/worker-pool-results.js.map +1 -1
  363. package/run/worker-pool-run.js +3 -9
  364. package/run/worker-pool-run.js.map +1 -1
  365. package/run/worker-pool-task-events.js +7 -2
  366. package/run/worker-pool-task-events.js.map +1 -1
  367. package/run/worker-pool-warm-lane-affinity.d.ts +0 -11
  368. package/run/worker-pool-warm-lane-affinity.d.ts.map +1 -1
  369. package/run/worker-pool-worker-plan.js +1 -0
  370. package/run/worker-pool-worker-plan.js.map +1 -1
  371. package/run/worker-pool-worker-resources.js +1 -0
  372. package/run/worker-pool-worker-resources.js.map +1 -1
  373. package/run/worker-pool-worker.js +2 -1
  374. package/run/worker-pool-worker.js.map +1 -1
  375. package/sbom.cdx.json +66 -15
  376. package/transcript/http-transcript.js +3 -0
  377. package/transcript/http-transcript.js.map +1 -0
  378. package/transcript/transcript-store.d.ts +25 -0
  379. package/transcript/transcript-store.d.ts.map +1 -0
  380. package/transcript/transcript-store.js +73 -0
  381. package/transcript/transcript-store.js.map +1 -0
  382. package/assertion-protocol/assertion-evaluation.d.ts +0 -13
  383. package/assertion-protocol/assertion-evaluation.d.ts.map +0 -1
  384. package/assertion-protocol/evaluation.d.ts +0 -32
  385. package/assertion-protocol/evaluation.d.ts.map +0 -1
  386. package/assertion-protocol/source-location-forwarding.d.ts +0 -4
  387. package/assertion-protocol/source-location-forwarding.d.ts.map +0 -1
  388. package/assertion-protocol/source-location.d.ts +0 -8
  389. package/assertion-protocol/source-location.d.ts.map +0 -1
  390. package/compare/comparison-result.d.ts +0 -25
  391. package/compare/comparison-result.d.ts.map +0 -1
  392. package/compare/comparison.d.ts +0 -12
  393. package/compare/comparison.d.ts.map +0 -1
  394. package/engine/async-leak-diagnostics.d.ts +0 -27
  395. package/engine/async-leak-diagnostics.d.ts.map +0 -1
  396. package/engine/custom-assertion-recording.d.ts +0 -33
  397. package/engine/custom-assertion-recording.d.ts.map +0 -1
  398. package/engine/execution-async-leak-policy.d.ts +0 -24
  399. package/engine/execution-async-leak-policy.d.ts.map +0 -1
  400. package/engine/execution-supervision-state.d.ts +0 -30
  401. package/engine/execution-supervision-state.d.ts.map +0 -1
  402. package/engine/reporter-disposal.d.ts +0 -6
  403. package/engine/reporter-disposal.d.ts.map +0 -1
  404. package/packages/engine/assertion-protocol.entry-point.d.ts +0 -10
  405. package/packages/engine/assertion-protocol.entry-point.d.ts.map +0 -1
  406. package/packages/engine/assertion-protocol.entry-point.js +0 -5
  407. package/packages/engine/assertion-protocol.entry-point.js.map +0 -1
  408. package/packages/engine/engine.entry-point.d.ts +0 -58
  409. package/packages/engine/engine.entry-point.d.ts.map +0 -1
  410. package/packages/engine/engine.entry-point.js +0 -75
  411. package/packages/engine/engine.entry-point.js.map +0 -1
  412. package/resources/resource-definition-brand.d.ts +0 -2
  413. package/resources/resource-definition-brand.d.ts.map +0 -1
  414. package/resources/resource-graph.d.ts +0 -24
  415. package/resources/resource-graph.d.ts.map +0 -1
  416. package/resources/resource-scenario-binding.d.ts +0 -37
  417. package/resources/resource-scenario-binding.d.ts.map +0 -1
  418. package/run/duration-history-schema.d.ts +0 -251
  419. package/run/duration-history-schema.d.ts.map +0 -1
  420. package/run/supervised-run-state.d.ts +0 -44
  421. package/run/supervised-run-state.d.ts.map +0 -1
@@ -0,0 +1,112 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { isPathInside } from "./path-containment.js";
5
+ import { inspectCoverageSource, isSupportedCoverageSource } from "./coverage-runtime-source.js";
6
+ import { normalizedCoverageSourceMap, readCoverageSourceMap } from "./coverage-source-map.js";
7
+ function projectScriptPath(url, projectRoot) {
8
+ if (!url.startsWith('file:')) {
9
+ return null;
10
+ }
11
+ const filePath = fileURLToPath(url);
12
+ const insideProject = isPathInside(projectRoot, filePath) && !filePath.split(path.sep).includes('node_modules');
13
+ return insideProject && isSupportedCoverageSource(filePath) ? filePath : null;
14
+ }
15
+ async function readLoadedEntry(url, cached, projectRoot) {
16
+ const filePath = projectScriptPath(url, projectRoot);
17
+ if (filePath === null) {
18
+ return null;
19
+ }
20
+ const source = await readFile(filePath, 'utf8');
21
+ const map = await readCoverageSourceMap({ cached, source, url });
22
+ return { filePath, map, source, url };
23
+ }
24
+ async function loadedCoverageEntries(request) {
25
+ const entries = new Map();
26
+ for (const batch of request.batches) {
27
+ for (const entry of batch.entries) {
28
+ const loaded = await readLoadedEntry(entry.url, batch.sourceMaps[entry.url], request.projectRoot);
29
+ if (loaded !== null) {
30
+ entries.set(entry.url, loaded);
31
+ }
32
+ }
33
+ }
34
+ return Array.from(entries.values());
35
+ }
36
+ function singleOriginalTestFile(entry, excludedFiles) {
37
+ if (!excludedFiles.has(entry.filePath) || entry.map === null) {
38
+ return null;
39
+ }
40
+ const originals = entry.map.resolvedSources;
41
+ const original = originals[0] ?? '';
42
+ return originals.length === 1 && original.startsWith('file:') ? fileURLToPath(original) : null;
43
+ }
44
+ function originalTestFiles(entries, excludedFiles) {
45
+ const files = new Set(excludedFiles);
46
+ for (const entry of entries) {
47
+ const original = singleOriginalTestFile(entry, excludedFiles);
48
+ if (original !== null) {
49
+ files.add(original);
50
+ }
51
+ }
52
+ return files;
53
+ }
54
+ function selectedOriginalPath(url, request) {
55
+ if (!url.startsWith('file:')) {
56
+ return null;
57
+ }
58
+ const filePath = fileURLToPath(url);
59
+ return request.excludedFiles.has(filePath) || !request.includeSource(filePath) ? null : filePath;
60
+ }
61
+ async function originalSourceContent(original, request) {
62
+ const filePath = selectedOriginalPath(original.url, request);
63
+ if (filePath === null) {
64
+ return { content: original.content ?? '', filePath: null };
65
+ }
66
+ const content = original.content ?? await readFile(filePath, 'utf8');
67
+ const hasRuntime = isSupportedCoverageSource(filePath) && inspectCoverageSource(content, filePath).hasRuntime;
68
+ return { content, filePath: hasRuntime ? filePath : null };
69
+ }
70
+ async function selectLoadedEntry(entry, request) {
71
+ if (entry.map === null) {
72
+ return request.includeSource(entry.filePath) && inspectCoverageSource(entry.source, entry.filePath).hasRuntime
73
+ ? { map: null, sources: [entry.filePath], url: entry.url }
74
+ : null;
75
+ }
76
+ const { map } = entry;
77
+ const originals = await Promise.all(map.resolvedSources.map(async function resolveOriginal(url, index) {
78
+ return await originalSourceContent({ content: map.sourcesContent?.[index] ?? null, url }, request);
79
+ }));
80
+ return {
81
+ map: normalizedCoverageSourceMap(map, originals.map(function originalContent(original) {
82
+ return original.content;
83
+ })),
84
+ sources: originals.flatMap(function executableOriginal(original) {
85
+ return original.filePath === null ? [] : [original.filePath];
86
+ }),
87
+ url: entry.url
88
+ };
89
+ }
90
+ export async function prepareLoadedCoverageSources(request) {
91
+ const loaded = await loadedCoverageEntries(request);
92
+ const excludedFiles = originalTestFiles(loaded, request.excludedFiles);
93
+ const selected = await Promise.all(loaded.map(async function selectEntry(entry) {
94
+ return await selectLoadedEntry(entry, { ...request, excludedFiles });
95
+ }));
96
+ const retained = selected.filter(function isSelected(entry) {
97
+ return entry !== null;
98
+ });
99
+ return {
100
+ entries: new Set(retained.map(function entryUrl(entry) {
101
+ return entry.url;
102
+ })),
103
+ excludedFiles,
104
+ maps: new Map(retained.flatMap(function entryMap(entry) {
105
+ return entry.map === null ? [] : [[entry.url, entry.map]];
106
+ })),
107
+ sources: new Set(retained.flatMap(function entrySources(entry) {
108
+ return entry.sources;
109
+ }))
110
+ };
111
+ }
112
+ //# sourceMappingURL=coverage-loaded-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-loaded-sources.js","sourceRoot":"","sources":["../../../../source/run/coverage-loaded-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAoB,MAAM,0BAA0B,CAAC;AAqBhH,SAAS,iBAAiB,CAAC,GAAW,EAAE,WAAmB;IACvD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEhH,OAAO,aAAa,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,eAAe,CAC1B,GAAW,EACX,MAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAErD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAEjE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAA8B;IAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAElG,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA0B,EAAE,aAAkC;IAC1F,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpC,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnG,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuC,EAAE,aAAkC;IAClG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAE9D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAgBD,SAAS,oBAAoB,CAAC,GAAW,EAAE,OAA8B;IACrE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrG,CAAC;AAED,KAAK,UAAU,qBAAqB,CAChC,QAAgC,EAChC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE7D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC;IAE9G,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC5B,KAA0B,EAC1B,OAA8B;IAE9B,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU;YAC1G,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAE,KAAK,CAAC,QAAQ,CAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;YAC5D,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,UAAU,eAAe,CAAC,GAAG,EAAE,KAAK;QACjG,OAAO,MAAM,qBAAqB,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO;QACH,GAAG,EAAE,2BAA2B,CAC5B,GAAG,EACH,SAAS,CAAC,GAAG,CAAC,SAAS,eAAe,CAAC,QAAQ;YAC3C,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC5B,CAAC,CAAC,CACL;QACD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,kBAAkB,CAAC,QAAQ;YAC3D,OAAO,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,QAAQ,CAAE,CAAC;QACnE,CAAC,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,GAAG;KACjB,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC7E,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,WAAW,CAAC,KAAK;QAC1E,OAAO,MAAM,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,UAAU,CAAC,KAAK;QACtD,OAAO,KAAK,KAAK,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,OAAO,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,KAAK;YACjD,OAAO,KAAK,CAAC,GAAG,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,aAAa;QACb,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,KAAK;YAClD,OAAO,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAW,CAAE,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,YAAY,CAAC,KAAK;YACzD,OAAO,KAAK,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC,CAAC;KACN,CAAC;AACN,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { readFile, readdir } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { z } from 'zod/v4';
4
+ const nativeDataSchema = z.object({
5
+ result: z.array(z.looseObject({ url: z.string() })),
6
+ 'source-map-cache': z.record(z.string(), z.unknown()).default({})
7
+ });
8
+ export async function readNativeCoverageBatches(directory) {
9
+ const entries = await readdir(directory);
10
+ const files = entries.filter(function isNativeCoverage(file) {
11
+ return file.endsWith('.json') && !file.startsWith('source-');
12
+ });
13
+ return await Promise.all(files.map(async function readNativeCoverage(file) {
14
+ const data = nativeDataSchema.parse(JSON.parse(await readFile(path.join(directory, file), 'utf8')));
15
+ return { entries: data.result, sourceMaps: data['source-map-cache'] };
16
+ }));
17
+ }
18
+ //# sourceMappingURL=coverage-native-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-native-data.js","sourceRoot":"","sources":["../../../../source/run/coverage-native-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnD,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACpE,CAAC,CAAC;AAOH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,SAAiB;IAC7D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,gBAAgB,CAAC,IAAI;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAI;QACrE,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAEpG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -1,5 +1,46 @@
1
- import 'node:fs/promises';
2
- import 'node:path';
3
- import 'ulid';
4
- import "./path-containment.js";
1
+ import { mkdir, realpath } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { isPathInside } from "./path-containment.js";
4
+ async function nearestExistingPath(candidate) {
5
+ try {
6
+ return await realpath(candidate);
7
+ }
8
+ catch (error) {
9
+ const parentPath = path.dirname(candidate);
10
+ if (parentPath === candidate) {
11
+ throw error;
12
+ }
13
+ return await nearestExistingPath(parentPath);
14
+ }
15
+ }
16
+ async function validateCreatedCoverageDirectory(projectRoot, coverageDirectory) {
17
+ if (!isPathInside(projectRoot, await realpath(coverageDirectory))) {
18
+ throw new Error('Coverage output directory resolves outside the project root.');
19
+ }
20
+ }
21
+ async function assertCoveragePathInsideProject(projectRoot, coverageDirectory) {
22
+ const existingAncestor = await nearestExistingPath(coverageDirectory);
23
+ if ([coverageDirectory, existingAncestor].some(function escapesProject(candidate) {
24
+ return !isPathInside(projectRoot, candidate);
25
+ })) {
26
+ throw new Error('Coverage output directory must remain inside the project root.');
27
+ }
28
+ }
29
+ export function resolveCoveragePaths(request) {
30
+ const projectRoot = path.resolve(request.projectRoot);
31
+ const runtimeStateRoot = path.resolve(projectRoot, request.runtimeStateDir);
32
+ const coverageDirectory = request.coverage.outputDirectory ??
33
+ path.join(runtimeStateRoot, 'runs', request.runId, 'coverage');
34
+ const rawDataDirectory = request.coverage.outputDirectory === null
35
+ ? path.join(coverageDirectory, 'raw')
36
+ : path.join(coverageDirectory, 'raw', request.runId);
37
+ return { coverageDirectory, projectRoot, rawDataDirectory };
38
+ }
39
+ export async function createCoveragePaths(paths) {
40
+ const projectRoot = await realpath(paths.projectRoot);
41
+ await assertCoveragePathInsideProject(projectRoot, paths.coverageDirectory);
42
+ await mkdir(paths.rawDataDirectory, { recursive: true });
43
+ await validateCreatedCoverageDirectory(projectRoot, paths.coverageDirectory);
44
+ return { ...paths, projectRoot };
45
+ }
5
46
  //# sourceMappingURL=coverage-paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-paths.js","sourceRoot":"","sources":["../../../../source/run/coverage-paths.ts"],"names":[],"mappings":"AAAA,OAAgC,kBAAkB,CAAC;AACnD,OAAiB,WAAW,CAAC;AAC7B,OAAqB,MAAM,CAAC;AAC5B,OAA6B,uBAAuB,CAAC"}
1
+ {"version":3,"file":"coverage-paths.js","sourceRoot":"","sources":["../../../../source/run/coverage-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgBrD,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IAChD,IAAI,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,OAAO,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gCAAgC,CAAC,WAAmB,EAAE,iBAAyB;IAC1F,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;AACL,CAAC;AAED,KAAK,UAAU,+BAA+B,CAAC,WAAmB,EAAE,iBAAyB;IACzF,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAEtE,IACI,CAAE,iBAAiB,EAAE,gBAAgB,CAAE,CAAC,IAAI,CAAC,SAAS,cAAc,CAAC,SAAS;QAC1E,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,EACJ,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA4B;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5E,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,KAAK,IAAI;QAC9D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAoB;IAC1D,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEtD,MAAM,+BAA+B,CAAC,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5E,MAAM,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,gCAAgC,CAAC,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE7E,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC"}
@@ -1,116 +1,6 @@
1
- import { glob, readFile } from 'node:fs/promises';
2
1
  import path from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
2
  import { CoverageReport } from 'monocart-coverage-reports';
5
- import { transform } from 'sucrase';
6
- import { isPathInside } from "./path-containment.js";
7
- const supportedSourceExtensions = new Set(['.cjs', '.cts', '.js', '.mjs', '.mts', '.ts']);
8
- const typeScriptSourceExtensions = new Set(['.cts', '.mts', '.ts']);
9
- function entryFilePath(url) {
10
- if (!url.startsWith('file:')) {
11
- return null;
12
- }
13
- return path.resolve(fileURLToPath(url));
14
- }
15
- function sourceFilePath(sourcePath, projectRoot) {
16
- return path.resolve(projectRoot, sourcePath);
17
- }
18
- function includedProjectFile(filePath, projectRoot, excludedFiles) {
19
- const resolvedPath = path.resolve(filePath);
20
- return isPathInside(projectRoot, resolvedPath) &&
21
- !resolvedPath.split(path.sep).includes('node_modules') &&
22
- !excludedFiles.has(resolvedPath);
23
- }
24
- function matchesSourcePatterns(filePath, projectRoot, include, exclude) {
25
- const relativePath = path.relative(projectRoot, filePath).split(path.sep).join('/');
26
- return include.some(function matchesInclude(pattern) {
27
- return path.matchesGlob(relativePath, pattern);
28
- }) && exclude.every(function matchesExclude(pattern) {
29
- return !path.matchesGlob(relativePath, pattern);
30
- });
31
- }
32
- function includedSourceFile(filePath, request) {
33
- if (!includedProjectFile(filePath, request.projectRoot, request.sourceScope.excludedFiles)) {
34
- return false;
35
- }
36
- if (request.sourceScope.mode === 'all') {
37
- return matchesSourcePatterns(filePath, request.projectRoot, request.sourceScope.include, request.sourceScope.exclude);
38
- }
39
- return request.sourceScope.exclude.every(function matchesExclude(pattern) {
40
- const relativePath = path.relative(request.projectRoot, filePath).split(path.sep).join('/');
41
- return !path.matchesGlob(relativePath, pattern);
42
- });
43
- }
44
- function entryIncluded(entry, request) {
45
- const filePath = entryFilePath(entry.url);
46
- return filePath !== null && includedSourceFile(filePath, request);
47
- }
48
- function sourceIncluded(sourcePath, request) {
49
- return includedSourceFile(sourceFilePath(sourcePath, request.projectRoot), request);
50
- }
51
- function transformedTypeScript(source, filePath) {
52
- const result = transform(source, {
53
- filePath,
54
- sourceMapOptions: {
55
- compiledFilename: filePath.replace(/\.[cm]?ts$/u, '.js')
56
- },
57
- transforms: ['typescript']
58
- });
59
- return {
60
- source: result.code,
61
- sourceMap: { ...result.sourceMap, sourcesContent: [source] }
62
- };
63
- }
64
- function hasRuntimeTypeScript(source) {
65
- return source
66
- .replace(/^export \{\};?\s*$/mu, '')
67
- .replace(/^\/\/# sourceMappingURL=.*$/mu, '')
68
- .trim() !== '';
69
- }
70
- async function isRuntimeSourceFile(filePath, request) {
71
- const extension = path.extname(filePath);
72
- if (!supportedSourceExtensions.has(extension) || !includedSourceFile(filePath, request)) {
73
- return false;
74
- }
75
- if (!typeScriptSourceExtensions.has(extension)) {
76
- return true;
77
- }
78
- const transformed = transformedTypeScript(await readFile(filePath, 'utf8'), filePath);
79
- return hasRuntimeTypeScript(transformed.source);
80
- }
81
- async function allRuntimeFiles(request, sourceScope) {
82
- const runtimeFiles = new Set();
83
- const matchedFiles = glob(sourceScope.include, {
84
- cwd: request.projectRoot,
85
- exclude: sourceScope.exclude
86
- });
87
- for await (const relativePath of matchedFiles) {
88
- const filePath = path.resolve(request.projectRoot, relativePath);
89
- if (await isRuntimeSourceFile(filePath, request)) {
90
- runtimeFiles.add(filePath);
91
- }
92
- }
93
- return runtimeFiles;
94
- }
95
- async function allFilesOptions(request) {
96
- const { sourceScope } = request;
97
- if (sourceScope.mode === 'loaded') {
98
- return null;
99
- }
100
- const runtimeFiles = await allRuntimeFiles(request, sourceScope);
101
- return {
102
- dir: request.projectRoot,
103
- filter(filePath) {
104
- const resolvedPath = path.resolve(filePath);
105
- return runtimeFiles.has(resolvedPath);
106
- },
107
- async transformer(entry) {
108
- if (typeScriptSourceExtensions.has(path.extname(entry.url))) {
109
- Object.assign(entry, transformedTypeScript(entry.source, entry.url));
110
- }
111
- }
112
- };
113
- }
3
+ import { prepareCoverageSources } from "./coverage-source-selection.js";
114
4
  function coverageReportBackend(output, relativePath, projectRoot) {
115
5
  if (output === 'html') {
116
6
  return ['html', { subdir: 'html' }];
@@ -151,32 +41,56 @@ function metric(results, name) {
151
41
  const value = results.summary[name];
152
42
  return { covered: value.covered, total: value.total };
153
43
  }
44
+ async function initializeFilteredCoverage(report, batches) {
45
+ if (report.hasCache()) {
46
+ return;
47
+ }
48
+ const batch = batches.find(function hasNativeEntries(candidate) {
49
+ return candidate.entries.length > 0;
50
+ });
51
+ if (batch === undefined) {
52
+ throw new Error('Coverage collection produced no native V8 data.');
53
+ }
54
+ await report.add(Array.from(batch.entries));
55
+ }
56
+ function hasExecutableCoverage(results) {
57
+ return ['branches', 'functions', 'lines'].some(function hasExecutableMetric(name) {
58
+ return results.summary[name].total > 0;
59
+ });
60
+ }
61
+ async function generateExecutableCoverageReport(report) {
62
+ const results = await report.generate();
63
+ if (results === undefined) {
64
+ throw new Error('Coverage backend produced no result.');
65
+ }
66
+ if (!hasExecutableCoverage(results)) {
67
+ throw new Error('Coverage source selection contains no executable sources.');
68
+ }
69
+ return results;
70
+ }
154
71
  export async function generateCoverageReports(request) {
155
- const all = await allFilesOptions(request);
72
+ const sources = await prepareCoverageSources(request);
156
73
  const configuredReports = configuredCoverageReports(request);
157
74
  const report = new CoverageReport({
158
- ...all === null ? {} : { all },
75
+ ...sources.all === null ? {} : { all: sources.all },
159
76
  baseDir: request.projectRoot,
160
77
  clean: false,
161
- entryFilter(entry) {
162
- return entryIncluded(entry, request);
163
- },
78
+ cleanCache: true,
79
+ entryFilter: sources.entryIncluded,
164
80
  logging: 'off',
81
+ onEntry: sources.onEntry,
165
82
  outputDir: request.coverageDirectory,
166
83
  reports: configuredReports.length === 0
167
84
  ? [['none']]
168
85
  : configuredReports.map(function backendReport(configuredReport) {
169
86
  return configuredReport.backend;
170
87
  }),
171
- sourceFilter(sourcePath) {
172
- return sourceIncluded(sourcePath, request);
173
- }
88
+ sourceFilter: sources.sourceIncluded,
89
+ sourcePath: sources.sourcePath
174
90
  });
175
91
  await report.addFromDir(request.rawDataDirectory);
176
- const results = await report.generate();
177
- if (results === undefined) {
178
- throw new Error('Coverage backend produced no result.');
179
- }
92
+ await initializeFilteredCoverage(report, sources.batches);
93
+ const results = await generateExecutableCoverageReport(report);
180
94
  return {
181
95
  reports: configuredReports.map(function reportFile(configuredReport) {
182
96
  return configuredReport.file;
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-reporting.js","sourceRoot":"","sources":["../../../../source/run/coverage-reporting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage-reporting.js","sourceRoot":"","sources":["../../../../source/run/coverage-reporting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import path from 'node:path';
2
+ import { ulid } from 'ulid';
3
+ import { resolveCoveragePaths } from "./coverage-paths.js";
4
+ import { microtestCoveragePolicy } from "./run-coverage.js";
5
+ import { createRunRecordSession } from "./run-record.js";
6
+ import { runRecordVersions } from "./run-record-versions.js";
7
+ function relativePath(projectRoot, directory) {
8
+ return path.relative(projectRoot, directory).split(path.sep).join('/');
9
+ }
10
+ export async function createCoverageRunRecord(cwd, input, dependencies, timing) {
11
+ const record = createRunRecordSession(cwd, input, {
12
+ createId: ulid,
13
+ node: dependencies.node,
14
+ store: dependencies.runtimeStateStore,
15
+ versions: await runRecordVersions(input.engine, dependencies.node.version),
16
+ wallClock: dependencies.wallClock
17
+ });
18
+ const coverage = microtestCoveragePolicy(input.profile);
19
+ const paths = resolveCoveragePaths({
20
+ coverage,
21
+ projectRoot: input.projectRoot,
22
+ runId: record.id,
23
+ runtimeStateDir: input.config.runtimeStateDir
24
+ });
25
+ return {
26
+ record,
27
+ sessionRequest: {
28
+ coverage,
29
+ paths,
30
+ processModel: input.profile.execution.processModel === 'in-process' ? 'in-process' : 'supervised-process',
31
+ testFiles: input.files.map(function testFilePath(file) {
32
+ return file.file;
33
+ }),
34
+ timing
35
+ },
36
+ async start() {
37
+ await record.start({
38
+ directory: relativePath(input.projectRoot, paths.coverageDirectory),
39
+ policy: {
40
+ ...coverage,
41
+ outputDirectory: coverage.outputDirectory === null
42
+ ? null
43
+ : relativePath(input.projectRoot, coverage.outputDirectory)
44
+ },
45
+ rawDataDirectory: relativePath(input.projectRoot, paths.rawDataDirectory)
46
+ });
47
+ }
48
+ };
49
+ }
50
+ //# sourceMappingURL=coverage-run-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-run-record.js","sourceRoot":"","sources":["../../../../source/run/coverage-run-record.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAS7D,SAAS,YAAY,CAAC,WAAmB,EAAE,SAAiB;IACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,GAAW,EACX,KAAuB,EACvB,YAAyC,EACzC,MAAmC;IAEnC,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE;QAC9C,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,KAAK,EAAE,YAAY,CAAC,iBAAiB;QACrC,QAAQ,EAAE,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1E,SAAS,EAAE,YAAY,CAAC,SAAS;KACpC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,oBAAoB,CAAC;QAC/B,QAAQ;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,MAAM,CAAC,EAAE;QAChB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;KAChD,CAAC,CAAC;IAEH,OAAO;QACH,MAAM;QACN,cAAc,EAAE;YACZ,QAAQ;YACR,KAAK;YACL,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB;YACzG,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,IAAI;gBACjD,OAAO,IAAI,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC;YACF,MAAM;SACT;QACD,KAAK,CAAC,KAAK;YACP,MAAM,MAAM,CAAC,KAAK,CAAC;gBACf,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC;gBACnE,MAAM,EAAE;oBACJ,GAAG,QAAQ;oBACX,eAAe,EAAE,QAAQ,CAAC,eAAe,KAAK,IAAI;wBAC9C,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC;iBAClE;gBACD,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC;aAC5E,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,37 @@
1
+ import path from 'node:path';
2
+ import { parse } from 'acorn';
3
+ import { transform } from 'sucrase';
4
+ const typeScriptExtensions = new Set(['.cts', '.mts', '.ts']);
5
+ const sourceExtensions = new Set(['.cjs', '.cts', '.js', '.mjs', '.mts', '.ts']);
6
+ export function transformCoverageSource(source, filePath) {
7
+ const result = transform(source, {
8
+ filePath,
9
+ sourceMapOptions: { compiledFilename: filePath.replace(/\.[cm]?ts$/u, '.js') },
10
+ transforms: ['typescript']
11
+ });
12
+ return { source: result.code, sourceMap: { ...result.sourceMap, sourcesContent: [source] } };
13
+ }
14
+ export function isTypeScriptCoverageSource(filePath) {
15
+ return typeScriptExtensions.has(path.extname(filePath));
16
+ }
17
+ export function isSupportedCoverageSource(filePath) {
18
+ return sourceExtensions.has(path.extname(filePath));
19
+ }
20
+ export function inspectCoverageSource(source, filePath) {
21
+ const comments = [];
22
+ const program = parse(isTypeScriptCoverageSource(filePath) ? transformCoverageSource(source, filePath).source : source, {
23
+ allowReturnOutsideFunction: true,
24
+ ecmaVersion: 'latest',
25
+ onComment(block, value) {
26
+ comments.push(block ? `/*${value}*/` : `//${value}`);
27
+ },
28
+ sourceType: 'module'
29
+ });
30
+ const hasRuntime = program.body.some(function executesCode(statement) {
31
+ return statement.type !== 'EmptyStatement' &&
32
+ !(statement.type === 'ExportNamedDeclaration' && statement.declaration === null &&
33
+ statement.specifiers.length === 0 && statement.source === null);
34
+ });
35
+ return { comments, hasRuntime };
36
+ }
37
+ //# sourceMappingURL=coverage-runtime-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-runtime-source.js","sourceRoot":"","sources":["../../../../source/run/coverage-runtime-source.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAE,CAAC,CAAC;AAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAE,CAAC,CAAC;AAWnF,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,QAAgB;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;QAC7B,QAAQ;QACR,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;QAC9E,UAAU,EAAE,CAAE,YAAY,CAAE;KAC/B,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,CAAE,MAAM,CAAE,EAAE,EAAE,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACvD,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACtD,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,QAAgB;IAClE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CACjB,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAChG;QACI,0BAA0B,EAAE,IAAI;QAChC,WAAW,EAAE,QAAQ;QACrB,SAAS,CAAC,KAAK,EAAE,KAAK;YAClB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,UAAU,EAAE,QAAQ;KACvB,CACJ,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,SAAS;QAChE,OAAO,SAAS,CAAC,IAAI,KAAK,gBAAgB;YACtC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,wBAAwB,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI;gBAC3E,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC"}