@gfdelarue/testkit 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1548) hide show
  1. package/LICENSE +68 -0
  2. package/README.md +1125 -0
  3. package/bin/testkit-windows-owner-arm64.exe +0 -0
  4. package/bin/testkit-windows-owner-x64.exe +0 -0
  5. package/bin/testkit.mjs +60 -0
  6. package/dist/app/cleanup/index.d.ts +52 -0
  7. package/dist/app/cleanup/index.js +1 -0
  8. package/dist/app/cloud/campaigns.d.ts +6 -0
  9. package/dist/app/cloud/campaigns.js +1 -0
  10. package/dist/app/cloud/control-actions.d.ts +12 -0
  11. package/dist/app/cloud/control-actions.js +2 -0
  12. package/dist/app/cloud/control-links.d.ts +5 -0
  13. package/dist/app/cloud/control-links.js +1 -0
  14. package/dist/app/cloud/control-read.d.ts +24 -0
  15. package/dist/app/cloud/control-read.js +1 -0
  16. package/dist/app/cloud/control-resources.d.ts +3 -0
  17. package/dist/app/cloud/control-resources.js +1 -0
  18. package/dist/app/cloud/control.d.ts +34 -0
  19. package/dist/app/cloud/control.js +5 -0
  20. package/dist/app/cloud/credentials.d.ts +11 -0
  21. package/dist/app/cloud/credentials.js +2 -0
  22. package/dist/app/cloud/index.d.ts +22 -0
  23. package/dist/app/cloud/index.js +2 -0
  24. package/dist/app/cloud/login.d.ts +63 -0
  25. package/dist/app/cloud/login.js +2 -0
  26. package/dist/app/cloud/migration/archive.d.ts +13 -0
  27. package/dist/app/cloud/migration/archive.js +1 -0
  28. package/dist/app/cloud/migration/commands.d.ts +8 -0
  29. package/dist/app/cloud/migration/commands.js +1 -0
  30. package/dist/app/cloud/migration/evidence.d.ts +13 -0
  31. package/dist/app/cloud/migration/evidence.js +2 -0
  32. package/dist/app/cloud/migration/files.d.ts +16 -0
  33. package/dist/app/cloud/migration/files.js +2 -0
  34. package/dist/app/cloud/migration/index.d.ts +6 -0
  35. package/dist/app/cloud/migration/index.js +1 -0
  36. package/dist/app/cloud/migration/journal.d.ts +64 -0
  37. package/dist/app/cloud/migration/journal.js +1 -0
  38. package/dist/app/cloud/migration/mapping-dispositions.d.ts +3 -0
  39. package/dist/app/cloud/migration/mapping-dispositions.js +1 -0
  40. package/dist/app/cloud/migration/mapping.d.ts +11 -0
  41. package/dist/app/cloud/migration/mapping.js +2 -0
  42. package/dist/app/cloud/migration/model.d.ts +175 -0
  43. package/dist/app/cloud/migration/model.js +1 -0
  44. package/dist/app/cloud/migration/plan.d.ts +7 -0
  45. package/dist/app/cloud/migration/plan.js +1 -0
  46. package/dist/app/cloud/migration/progress.d.ts +19 -0
  47. package/dist/app/cloud/migration/progress.js +1 -0
  48. package/dist/app/cloud/migration/reconcile.d.ts +22 -0
  49. package/dist/app/cloud/migration/reconcile.js +1 -0
  50. package/dist/app/cloud/migration/reconciliation-spool.d.ts +4 -0
  51. package/dist/app/cloud/migration/reconciliation-spool.js +1 -0
  52. package/dist/app/cloud/migration/state.d.ts +15 -0
  53. package/dist/app/cloud/migration/state.js +1 -0
  54. package/dist/app/cloud/migration/transfer.d.ts +6 -0
  55. package/dist/app/cloud/migration/transfer.js +1 -0
  56. package/dist/app/db-schema/prepare.d.ts +11 -0
  57. package/dist/app/db-schema/prepare.js +1 -0
  58. package/dist/app/db-schema/refresh.d.ts +17 -0
  59. package/dist/app/db-schema/refresh.js +1 -0
  60. package/dist/app/db-schema/verify.d.ts +11 -0
  61. package/dist/app/db-schema/verify.js +1 -0
  62. package/dist/app/destroy/index.d.ts +16 -0
  63. package/dist/app/destroy/index.js +1 -0
  64. package/dist/app/discover/index.d.ts +8 -0
  65. package/dist/app/discover/index.js +2 -0
  66. package/dist/app/doctor/index.d.ts +17 -0
  67. package/dist/app/doctor/index.js +1 -0
  68. package/dist/app/file-selection.d.ts +1 -0
  69. package/dist/app/file-selection.js +1 -0
  70. package/dist/app/inspect/artifacts.d.ts +29 -0
  71. package/dist/app/inspect/artifacts.js +1 -0
  72. package/dist/app/inspect/index.d.ts +112 -0
  73. package/dist/app/inspect/index.js +1 -0
  74. package/dist/app/lint/index.d.ts +28 -0
  75. package/dist/app/lint/index.js +2 -0
  76. package/dist/app/lint/native.d.ts +10 -0
  77. package/dist/app/lint/native.js +1 -0
  78. package/dist/app/lint/options.d.ts +67 -0
  79. package/dist/app/lint/options.js +1 -0
  80. package/dist/app/lint/policy.d.ts +21 -0
  81. package/dist/app/lint/policy.js +1 -0
  82. package/dist/app/lint/rules/data.d.ts +3 -0
  83. package/dist/app/lint/rules/data.js +1 -0
  84. package/dist/app/lint/rules/engine-imports.d.ts +3 -0
  85. package/dist/app/lint/rules/engine-imports.js +1 -0
  86. package/dist/app/lint/rules/syntax.d.ts +4 -0
  87. package/dist/app/lint/rules/syntax.js +1 -0
  88. package/dist/app/lint/rules/unit.d.ts +3 -0
  89. package/dist/app/lint/rules/unit.js +1 -0
  90. package/dist/app/lint/shared.d.ts +36 -0
  91. package/dist/app/lint/shared.js +1 -0
  92. package/dist/app/package-inspection.d.ts +20 -0
  93. package/dist/app/package-inspection.js +1 -0
  94. package/dist/app/run/endpoint-readiness.d.ts +43 -0
  95. package/dist/app/run/endpoint-readiness.js +1 -0
  96. package/dist/app/run/engine-evidence-persistence.d.ts +39 -0
  97. package/dist/app/run/engine-evidence-persistence.js +1 -0
  98. package/dist/app/run/engine-execution-cleanup.d.ts +8 -0
  99. package/dist/app/run/engine-execution-cleanup.js +1 -0
  100. package/dist/app/run/engine-execution-failures.d.ts +41 -0
  101. package/dist/app/run/engine-execution-failures.js +1 -0
  102. package/dist/app/run/engine-execution-observer.d.ts +21 -0
  103. package/dist/app/run/engine-execution-observer.js +1 -0
  104. package/dist/app/run/engine-execution-reporting.d.ts +17 -0
  105. package/dist/app/run/engine-execution-reporting.js +1 -0
  106. package/dist/app/run/engine-execution.d.ts +60 -0
  107. package/dist/app/run/engine-execution.js +1 -0
  108. package/dist/app/run/engine-orchestration.d.ts +49 -0
  109. package/dist/app/run/engine-orchestration.js +1 -0
  110. package/dist/app/run/failure-details.d.ts +36 -0
  111. package/dist/app/run/failure-details.js +1 -0
  112. package/dist/app/run/live-run.d.ts +27 -0
  113. package/dist/app/run/live-run.js +1 -0
  114. package/dist/app/run/operation-progress.d.ts +13 -0
  115. package/dist/app/run/operation-progress.js +1 -0
  116. package/dist/app/run/orchestrator.d.ts +68 -0
  117. package/dist/app/run/orchestrator.js +1 -0
  118. package/dist/app/run/planning-types.d.ts +68 -0
  119. package/dist/app/run/planning-types.js +1 -0
  120. package/dist/app/run/planning.d.ts +15 -0
  121. package/dist/app/run/planning.js +1 -0
  122. package/dist/app/run/playwright-configuration.d.ts +2 -0
  123. package/dist/app/run/playwright-configuration.js +1 -0
  124. package/dist/app/run/request.d.ts +30 -0
  125. package/dist/app/run/request.js +1 -0
  126. package/dist/app/run/results.d.ts +161 -0
  127. package/dist/app/run/results.js +1 -0
  128. package/dist/app/run/run-events.d.ts +144 -0
  129. package/dist/app/run/run-events.js +1 -0
  130. package/dist/app/run/run-finalization.d.ts +52 -0
  131. package/dist/app/run/run-finalization.js +1 -0
  132. package/dist/app/run/run-guards.d.ts +3 -0
  133. package/dist/app/run/run-guards.js +3 -0
  134. package/dist/app/run/runtime-failures.d.ts +18 -0
  135. package/dist/app/run/runtime-failures.js +1 -0
  136. package/dist/app/run/runtime-fixtures.d.ts +2 -0
  137. package/dist/app/run/runtime-fixtures.js +1 -0
  138. package/dist/app/run/runtime-task-types.d.ts +20 -0
  139. package/dist/app/run/runtime-task-types.js +1 -0
  140. package/dist/app/run/scheduler/estimates.d.ts +32 -0
  141. package/dist/app/run/scheduler/estimates.js +1 -0
  142. package/dist/app/run/scheduler/identity.d.ts +9 -0
  143. package/dist/app/run/scheduler/identity.js +1 -0
  144. package/dist/app/run/scheduler/index.d.ts +124 -0
  145. package/dist/app/run/scheduler/index.js +1 -0
  146. package/dist/app/run/scheduler/observations.d.ts +20 -0
  147. package/dist/app/run/scheduler/observations.js +1 -0
  148. package/dist/app/run/selection.d.ts +10 -0
  149. package/dist/app/run/selection.js +1 -0
  150. package/dist/app/run/setup/runtime-node-setup-errors.d.ts +13 -0
  151. package/dist/app/run/setup/runtime-node-setup-errors.js +1 -0
  152. package/dist/app/run/setup/runtime-node-setup-protocol.d.ts +85 -0
  153. package/dist/app/run/setup/runtime-node-setup-protocol.js +1 -0
  154. package/dist/app/run/setup/runtime-node-setup-worker.d.ts +1 -0
  155. package/dist/app/run/setup/runtime-node-setup-worker.js +1 -0
  156. package/dist/app/run/setup/runtime-node-setup.d.ts +48 -0
  157. package/dist/app/run/setup/runtime-node-setup.js +3 -0
  158. package/dist/app/run/task-batches.d.ts +23 -0
  159. package/dist/app/run/task-batches.js +1 -0
  160. package/dist/app/run/worker-loop.d.ts +57 -0
  161. package/dist/app/run/worker-loop.js +1 -0
  162. package/dist/app/setup/playwright.d.ts +22 -0
  163. package/dist/app/setup/playwright.js +1 -0
  164. package/dist/app/status/index.d.ts +7 -0
  165. package/dist/app/status/index.js +1 -0
  166. package/dist/app/status/model.d.ts +29 -0
  167. package/dist/app/status/model.js +1 -0
  168. package/dist/app/status/runs.d.ts +99 -0
  169. package/dist/app/status/runs.js +1 -0
  170. package/dist/app/stop/index.d.ts +14 -0
  171. package/dist/app/stop/index.js +1 -0
  172. package/dist/app/typecheck/index.d.ts +61 -0
  173. package/dist/app/typecheck/index.js +4 -0
  174. package/dist/app/typecheck/unavailable.d.ts +1 -0
  175. package/dist/app/typecheck/unavailable.js +1 -0
  176. package/dist/cli/cloud-apply-help.d.ts +1 -0
  177. package/dist/cli/cloud-apply-help.js +56 -0
  178. package/dist/cli/cloud-selection.d.ts +2 -0
  179. package/dist/cli/cloud-selection.js +3 -0
  180. package/dist/cli/command-catalog.d.ts +238 -0
  181. package/dist/cli/command-catalog.js +1 -0
  182. package/dist/cli/command-flags.d.ts +19 -0
  183. package/dist/cli/command-flags.js +1 -0
  184. package/dist/cli/command-registry.d.ts +2 -0
  185. package/dist/cli/command-registry.js +1 -0
  186. package/dist/cli/commands/artifacts.d.ts +48 -0
  187. package/dist/cli/commands/artifacts.js +3 -0
  188. package/dist/cli/commands/cleanup.d.ts +13 -0
  189. package/dist/cli/commands/cleanup.js +1 -0
  190. package/dist/cli/commands/cloud/apply.d.ts +5 -0
  191. package/dist/cli/commands/cloud/apply.js +1 -0
  192. package/dist/cli/commands/cloud/campaign/create.d.ts +5 -0
  193. package/dist/cli/commands/cloud/campaign/create.js +1 -0
  194. package/dist/cli/commands/cloud/download.d.ts +5 -0
  195. package/dist/cli/commands/cloud/download.js +1 -0
  196. package/dist/cli/commands/cloud/list.d.ts +5 -0
  197. package/dist/cli/commands/cloud/list.js +1 -0
  198. package/dist/cli/commands/cloud/login.d.ts +13 -0
  199. package/dist/cli/commands/cloud/login.js +2 -0
  200. package/dist/cli/commands/cloud/logout.d.ts +7 -0
  201. package/dist/cli/commands/cloud/logout.js +1 -0
  202. package/dist/cli/commands/cloud/migrate/apply.d.ts +2 -0
  203. package/dist/cli/commands/cloud/migrate/apply.js +1 -0
  204. package/dist/cli/commands/cloud/migrate/plan.d.ts +7 -0
  205. package/dist/cli/commands/cloud/migrate/plan.js +1 -0
  206. package/dist/cli/commands/cloud/migrate/progress.d.ts +2 -0
  207. package/dist/cli/commands/cloud/migrate/progress.js +2 -0
  208. package/dist/cli/commands/cloud/migrate/reconcile.d.ts +2 -0
  209. package/dist/cli/commands/cloud/migrate/reconcile.js +1 -0
  210. package/dist/cli/commands/cloud/policy/preview.d.ts +5 -0
  211. package/dist/cli/commands/cloud/policy/preview.js +1 -0
  212. package/dist/cli/commands/cloud/project/create.d.ts +5 -0
  213. package/dist/cli/commands/cloud/project/create.js +1 -0
  214. package/dist/cli/commands/cloud/publish.d.ts +7 -0
  215. package/dist/cli/commands/cloud/publish.js +1 -0
  216. package/dist/cli/commands/cloud/session/revoke.d.ts +8 -0
  217. package/dist/cli/commands/cloud/session/revoke.js +1 -0
  218. package/dist/cli/commands/cloud/show.d.ts +5 -0
  219. package/dist/cli/commands/cloud/show.js +1 -0
  220. package/dist/cli/commands/cloud/snapshot.d.ts +5 -0
  221. package/dist/cli/commands/cloud/snapshot.js +1 -0
  222. package/dist/cli/commands/cloud/status.d.ts +33 -0
  223. package/dist/cli/commands/cloud/status.js +1 -0
  224. package/dist/cli/commands/db/schema/refresh.d.ts +2 -0
  225. package/dist/cli/commands/db/schema/refresh.js +1 -0
  226. package/dist/cli/commands/db/schema/verify.d.ts +2 -0
  227. package/dist/cli/commands/db/schema/verify.js +1 -0
  228. package/dist/cli/commands/destroy.d.ts +9 -0
  229. package/dist/cli/commands/destroy.js +1 -0
  230. package/dist/cli/commands/discover.d.ts +2 -0
  231. package/dist/cli/commands/discover.js +1 -0
  232. package/dist/cli/commands/doctor.d.ts +2 -0
  233. package/dist/cli/commands/doctor.js +1 -0
  234. package/dist/cli/commands/guard/unsafe-entrypoint.d.ts +2 -0
  235. package/dist/cli/commands/guard/unsafe-entrypoint.js +2 -0
  236. package/dist/cli/commands/lint.d.ts +2 -0
  237. package/dist/cli/commands/lint.js +1 -0
  238. package/dist/cli/commands/run/status.d.ts +5 -0
  239. package/dist/cli/commands/run/status.js +1 -0
  240. package/dist/cli/commands/run/stop.d.ts +7 -0
  241. package/dist/cli/commands/run/stop.js +1 -0
  242. package/dist/cli/commands/run.d.ts +9 -0
  243. package/dist/cli/commands/run.js +1 -0
  244. package/dist/cli/commands/setup/playwright.d.ts +2 -0
  245. package/dist/cli/commands/setup/playwright.js +1 -0
  246. package/dist/cli/commands/status.d.ts +5 -0
  247. package/dist/cli/commands/status.js +1 -0
  248. package/dist/cli/commands/stop.d.ts +12 -0
  249. package/dist/cli/commands/stop.js +1 -0
  250. package/dist/cli/commands/typecheck.d.ts +2 -0
  251. package/dist/cli/commands/typecheck.js +1 -0
  252. package/dist/cli/commands/workspace.d.ts +2 -0
  253. package/dist/cli/commands/workspace.js +1 -0
  254. package/dist/cli/entrypoint.d.ts +1 -0
  255. package/dist/cli/entrypoint.js +1 -0
  256. package/dist/cli/framework/command.d.ts +21 -0
  257. package/dist/cli/framework/command.js +1 -0
  258. package/dist/cli/framework/definitions.d.ts +100 -0
  259. package/dist/cli/framework/definitions.js +1 -0
  260. package/dist/cli/framework/errors.d.ts +6 -0
  261. package/dist/cli/framework/errors.js +1 -0
  262. package/dist/cli/framework/execute.d.ts +13 -0
  263. package/dist/cli/framework/execute.js +6 -0
  264. package/dist/cli/framework/help.d.ts +11 -0
  265. package/dist/cli/framework/help.js +8 -0
  266. package/dist/cli/framework/index.d.ts +3 -0
  267. package/dist/cli/framework/index.js +1 -0
  268. package/dist/cli/framework/parser.d.ts +6 -0
  269. package/dist/cli/framework/parser.js +1 -0
  270. package/dist/cli/index.d.ts +4 -0
  271. package/dist/cli/index.js +1 -0
  272. package/dist/cli/json-errors.d.ts +3 -0
  273. package/dist/cli/json-errors.js +1 -0
  274. package/dist/cli/operations/db/schema/refresh/operation.d.ts +6 -0
  275. package/dist/cli/operations/db/schema/refresh/operation.js +1 -0
  276. package/dist/cli/operations/db/schema/verify/operation.d.ts +6 -0
  277. package/dist/cli/operations/db/schema/verify/operation.js +1 -0
  278. package/dist/cli/operations/run/operation.d.ts +24 -0
  279. package/dist/cli/operations/run/operation.js +2 -0
  280. package/dist/cli/process-signal.d.ts +1 -0
  281. package/dist/cli/process-signal.js +1 -0
  282. package/dist/cli/renderers/artifact-preview.d.ts +4 -0
  283. package/dist/cli/renderers/artifact-preview.js +1 -0
  284. package/dist/cli/renderers/cleanup/format.d.ts +14 -0
  285. package/dist/cli/renderers/cleanup/format.js +1 -0
  286. package/dist/cli/renderers/db-schema/text.d.ts +4 -0
  287. package/dist/cli/renderers/db-schema/text.js +1 -0
  288. package/dist/cli/renderers/destroy/text.d.ts +4 -0
  289. package/dist/cli/renderers/destroy/text.js +1 -0
  290. package/dist/cli/renderers/discover/report.d.ts +7 -0
  291. package/dist/cli/renderers/discover/report.js +1 -0
  292. package/dist/cli/renderers/discover/text.d.ts +3 -0
  293. package/dist/cli/renderers/discover/text.js +1 -0
  294. package/dist/cli/renderers/doctor/text.d.ts +2 -0
  295. package/dist/cli/renderers/doctor/text.js +1 -0
  296. package/dist/cli/renderers/lint/text.d.ts +2 -0
  297. package/dist/cli/renderers/lint/text.js +1 -0
  298. package/dist/cli/renderers/run/events.d.ts +8 -0
  299. package/dist/cli/renderers/run/events.js +2 -0
  300. package/dist/cli/renderers/run/failure.d.ts +8 -0
  301. package/dist/cli/renderers/run/failure.js +1 -0
  302. package/dist/cli/renderers/run/formatting.d.ts +79 -0
  303. package/dist/cli/renderers/run/formatting.js +1 -0
  304. package/dist/cli/renderers/run/status.d.ts +6 -0
  305. package/dist/cli/renderers/run/status.js +1 -0
  306. package/dist/cli/renderers/run/text-reporter.d.ts +19 -0
  307. package/dist/cli/renderers/run/text-reporter.js +23 -0
  308. package/dist/cli/renderers/status/text.d.ts +2 -0
  309. package/dist/cli/renderers/status/text.js +1 -0
  310. package/dist/cli/renderers/stop/text.d.ts +7 -0
  311. package/dist/cli/renderers/stop/text.js +1 -0
  312. package/dist/cli/renderers/typecheck/text.d.ts +2 -0
  313. package/dist/cli/renderers/typecheck/text.js +1 -0
  314. package/dist/cli/terminal/colors.d.ts +10 -0
  315. package/dist/cli/terminal/colors.js +1 -0
  316. package/dist/cli/terminal/layout.d.ts +11 -0
  317. package/dist/cli/terminal/layout.js +2 -0
  318. package/dist/cli/version-drift.d.ts +25 -0
  319. package/dist/cli/version-drift.js +7 -0
  320. package/dist/cloud/account.d.ts +34 -0
  321. package/dist/cloud/account.js +1 -0
  322. package/dist/cloud/archive-contract.d.ts +1 -0
  323. package/dist/cloud/archive-contract.js +1 -0
  324. package/dist/cloud/archive.d.ts +12 -0
  325. package/dist/cloud/archive.js +1 -0
  326. package/dist/cloud/campaigns.d.ts +200 -0
  327. package/dist/cloud/campaigns.js +2 -0
  328. package/dist/cloud/client.d.ts +68 -0
  329. package/dist/cloud/client.js +4 -0
  330. package/dist/cloud/download.d.ts +5 -0
  331. package/dist/cloud/download.js +1 -0
  332. package/dist/cloud/historical-contract.d.ts +224 -0
  333. package/dist/cloud/historical-contract.js +1 -0
  334. package/dist/cloud/historical-json.d.ts +16 -0
  335. package/dist/cloud/historical-json.js +1 -0
  336. package/dist/cloud/historical.d.ts +69 -0
  337. package/dist/cloud/historical.js +1 -0
  338. package/dist/cloud/pagination.d.ts +5 -0
  339. package/dist/cloud/pagination.js +1 -0
  340. package/dist/cloud/transport.d.ts +18 -0
  341. package/dist/cloud/transport.js +1 -0
  342. package/dist/config/authoring/build-config-contract.d.ts +27 -0
  343. package/dist/config/authoring/build-config-contract.js +1 -0
  344. package/dist/config/authoring/configured-step-contract.d.ts +18 -0
  345. package/dist/config/authoring/configured-step-contract.js +1 -0
  346. package/dist/config/authoring/http-execution-contract.d.ts +70 -0
  347. package/dist/config/authoring/http-execution-contract.js +1 -0
  348. package/dist/config/authoring/http-methods.d.ts +18 -0
  349. package/dist/config/authoring/http-methods.js +1 -0
  350. package/dist/config/authoring/index.d.ts +376 -0
  351. package/dist/config/authoring/index.js +1 -0
  352. package/dist/config/authoring/preset-env.d.ts +19 -0
  353. package/dist/config/authoring/preset-env.js +1 -0
  354. package/dist/config/authoring/runtime.d.ts +64 -0
  355. package/dist/config/authoring/runtime.js +1 -0
  356. package/dist/config/loader/cloud.d.ts +2 -0
  357. package/dist/config/loader/cloud.js +1 -0
  358. package/dist/config/loader/config-loader.d.ts +9 -0
  359. package/dist/config/loader/config-loader.js +1 -0
  360. package/dist/config/loader/database-materialization.d.ts +19 -0
  361. package/dist/config/loader/database-materialization.js +1 -0
  362. package/dist/config/loader/database-roles.d.ts +2 -0
  363. package/dist/config/loader/database-roles.js +1 -0
  364. package/dist/config/loader/database.d.ts +55 -0
  365. package/dist/config/loader/database.js +1 -0
  366. package/dist/config/loader/decode-discovery.d.ts +5 -0
  367. package/dist/config/loader/decode-discovery.js +1 -0
  368. package/dist/config/loader/decode-execution.d.ts +9 -0
  369. package/dist/config/loader/decode-execution.js +1 -0
  370. package/dist/config/loader/dependencies.d.ts +7 -0
  371. package/dist/config/loader/dependencies.js +1 -0
  372. package/dist/config/loader/discover-tests.d.ts +101 -0
  373. package/dist/config/loader/discover-tests.js +1 -0
  374. package/dist/config/loader/discovery-summary.d.ts +29 -0
  375. package/dist/config/loader/discovery-summary.js +1 -0
  376. package/dist/config/loader/discovery.d.ts +54 -0
  377. package/dist/config/loader/discovery.js +2 -0
  378. package/dist/config/loader/env.d.ts +4 -0
  379. package/dist/config/loader/env.js +1 -0
  380. package/dist/config/loader/execution-model.d.ts +16 -0
  381. package/dist/config/loader/execution-model.js +1 -0
  382. package/dist/config/loader/file-metadata.d.ts +19 -0
  383. package/dist/config/loader/file-metadata.js +1 -0
  384. package/dist/config/loader/index.d.ts +10 -0
  385. package/dist/config/loader/index.js +1 -0
  386. package/dist/config/loader/load.d.ts +89 -0
  387. package/dist/config/loader/load.js +1 -0
  388. package/dist/config/loader/managed-configs.d.ts +21 -0
  389. package/dist/config/loader/managed-configs.js +1 -0
  390. package/dist/config/loader/path-policy.d.ts +9 -0
  391. package/dist/config/loader/path-policy.js +1 -0
  392. package/dist/config/loader/paths.d.ts +5 -0
  393. package/dist/config/loader/paths.js +1 -0
  394. package/dist/config/loader/runtime-isolation.d.ts +44 -0
  395. package/dist/config/loader/runtime-isolation.js +1 -0
  396. package/dist/config/loader/runtime.d.ts +25 -0
  397. package/dist/config/loader/runtime.js +1 -0
  398. package/dist/config/loader/skip-config.d.ts +44 -0
  399. package/dist/config/loader/skip-config.js +1 -0
  400. package/dist/config/loader/validation.d.ts +16 -0
  401. package/dist/config/loader/validation.js +1 -0
  402. package/dist/config/loader/values.d.ts +4 -0
  403. package/dist/config/loader/values.js +1 -0
  404. package/dist/config/runtime/build-assets.d.ts +6 -0
  405. package/dist/config/runtime/build-assets.js +1 -0
  406. package/dist/config/runtime/env/index.d.ts +35 -0
  407. package/dist/config/runtime/env/index.js +1 -0
  408. package/dist/config/runtime/next-runtime-tsconfig.d.ts +6 -0
  409. package/dist/config/runtime/next-runtime-tsconfig.js +2 -0
  410. package/dist/database/activity-gate.d.ts +22 -0
  411. package/dist/database/activity-gate.js +1 -0
  412. package/dist/database/admin.d.ts +31 -0
  413. package/dist/database/admin.js +2 -0
  414. package/dist/database/cleanup.d.ts +36 -0
  415. package/dist/database/cleanup.js +1 -0
  416. package/dist/database/configured-steps.d.ts +27 -0
  417. package/dist/database/configured-steps.js +1 -0
  418. package/dist/database/constants.d.ts +11 -0
  419. package/dist/database/constants.js +1 -0
  420. package/dist/database/docker.d.ts +65 -0
  421. package/dist/database/docker.js +5 -0
  422. package/dist/database/drizzle/index.d.ts +13 -0
  423. package/dist/database/drizzle/index.js +1 -0
  424. package/dist/database/fingerprint.d.ts +12 -0
  425. package/dist/database/fingerprint.js +1 -0
  426. package/dist/database/index.d.ts +41 -0
  427. package/dist/database/index.js +1 -0
  428. package/dist/database/local-postgres.d.ts +71 -0
  429. package/dist/database/local-postgres.js +2 -0
  430. package/dist/database/naming.d.ts +17 -0
  431. package/dist/database/naming.js +1 -0
  432. package/dist/database/postgres/index.d.ts +71 -0
  433. package/dist/database/postgres/index.js +2 -0
  434. package/dist/database/progress.d.ts +6 -0
  435. package/dist/database/progress.js +1 -0
  436. package/dist/database/roles.d.ts +19 -0
  437. package/dist/database/roles.js +41 -0
  438. package/dist/database/runtime-config.d.ts +16 -0
  439. package/dist/database/runtime-config.js +1 -0
  440. package/dist/database/runtime-reservations.d.ts +19 -0
  441. package/dist/database/runtime-reservations.js +1 -0
  442. package/dist/database/schema-operations.d.ts +18 -0
  443. package/dist/database/schema-operations.js +1 -0
  444. package/dist/database/schema-source.d.ts +93 -0
  445. package/dist/database/schema-source.js +3 -0
  446. package/dist/database/source-refresh-lock.d.ts +8 -0
  447. package/dist/database/source-refresh-lock.js +1 -0
  448. package/dist/database/source-url.d.ts +22 -0
  449. package/dist/database/source-url.js +2 -0
  450. package/dist/database/state-files.d.ts +13 -0
  451. package/dist/database/state-files.js +1 -0
  452. package/dist/database/state.d.ts +26 -0
  453. package/dist/database/state.js +1 -0
  454. package/dist/database/steps.d.ts +16 -0
  455. package/dist/database/steps.js +4 -0
  456. package/dist/database/template-steps.d.ts +35 -0
  457. package/dist/database/template-steps.js +4 -0
  458. package/dist/domain/file-timeout.d.ts +28 -0
  459. package/dist/domain/file-timeout.js +1 -0
  460. package/dist/domain/identifiers.d.ts +9 -0
  461. package/dist/domain/identifiers.js +1 -0
  462. package/dist/domain/operation-display.d.ts +10 -0
  463. package/dist/domain/operation-display.js +1 -0
  464. package/dist/domain/operation-reason.d.ts +5 -0
  465. package/dist/domain/operation-reason.js +1 -0
  466. package/dist/domain/postgres-route.d.ts +4 -0
  467. package/dist/domain/postgres-route.js +1 -0
  468. package/dist/domain/runtime-identity.d.ts +1 -0
  469. package/dist/domain/runtime-identity.js +1 -0
  470. package/dist/domain/runtime-isolation-contract.d.ts +5 -0
  471. package/dist/domain/runtime-isolation-contract.js +1 -0
  472. package/dist/domain/service-name.d.ts +2 -0
  473. package/dist/domain/service-name.js +1 -0
  474. package/dist/domain/suite-selection.d.ts +20 -0
  475. package/dist/domain/suite-selection.js +1 -0
  476. package/dist/domain/test-outcomes.d.ts +3 -0
  477. package/dist/domain/test-outcomes.js +1 -0
  478. package/dist/domain/test-types.d.ts +16 -0
  479. package/dist/domain/test-types.js +1 -0
  480. package/dist/engines/adapters/evidence-files.d.ts +32 -0
  481. package/dist/engines/adapters/evidence-files.js +1 -0
  482. package/dist/engines/adapters/evidence-identity.d.ts +12 -0
  483. package/dist/engines/adapters/evidence-identity.js +1 -0
  484. package/dist/engines/adapters/execution.d.ts +38 -0
  485. package/dist/engines/adapters/execution.js +1 -0
  486. package/dist/engines/adapters/native-report.d.ts +25 -0
  487. package/dist/engines/adapters/native-report.js +1 -0
  488. package/dist/engines/adapters/workspace.d.ts +4 -0
  489. package/dist/engines/adapters/workspace.js +1 -0
  490. package/dist/engines/api/capabilities.d.ts +31 -0
  491. package/dist/engines/api/capabilities.js +1 -0
  492. package/dist/engines/api/evidence.d.ts +38 -0
  493. package/dist/engines/api/evidence.js +1 -0
  494. package/dist/engines/api/execution-observer.d.ts +8 -0
  495. package/dist/engines/api/execution-observer.js +1 -0
  496. package/dist/engines/api/execution-scope.d.ts +17 -0
  497. package/dist/engines/api/execution-scope.js +1 -0
  498. package/dist/engines/api/execution.d.ts +99 -0
  499. package/dist/engines/api/execution.js +1 -0
  500. package/dist/engines/api/index.d.ts +5 -0
  501. package/dist/engines/api/index.js +1 -0
  502. package/dist/engines/api/k6-runtime-input.d.ts +26 -0
  503. package/dist/engines/api/k6-runtime-input.js +1 -0
  504. package/dist/engines/api/runtime-artifact.d.ts +19 -0
  505. package/dist/engines/api/runtime-artifact.js +1 -0
  506. package/dist/engines/bundle-cache.d.ts +32 -0
  507. package/dist/engines/bundle-cache.js +1 -0
  508. package/dist/engines/catalog.d.ts +32 -0
  509. package/dist/engines/catalog.js +1 -0
  510. package/dist/engines/contracts/fixture-manifest.d.ts +34 -0
  511. package/dist/engines/contracts/fixture-manifest.js +1 -0
  512. package/dist/engines/contracts/json-bounds.d.ts +36 -0
  513. package/dist/engines/contracts/json-bounds.js +2 -0
  514. package/dist/engines/contracts/k6-repository-configuration.d.ts +12 -0
  515. package/dist/engines/contracts/k6-repository-configuration.js +1 -0
  516. package/dist/engines/contracts/test-context.d.ts +15 -0
  517. package/dist/engines/contracts/test-context.js +1 -0
  518. package/dist/engines/definitions.d.ts +15 -0
  519. package/dist/engines/definitions.js +1 -0
  520. package/dist/engines/factory.d.ts +6 -0
  521. package/dist/engines/factory.js +1 -0
  522. package/dist/engines/installation-catalog.d.ts +27 -0
  523. package/dist/engines/installation-catalog.js +1 -0
  524. package/dist/engines/installations/k6.d.ts +98 -0
  525. package/dist/engines/installations/k6.js +1 -0
  526. package/dist/engines/installations/node-vitest.d.ts +47 -0
  527. package/dist/engines/installations/node-vitest.js +1 -0
  528. package/dist/engines/installations/package-resolution.d.ts +51 -0
  529. package/dist/engines/installations/package-resolution.js +1 -0
  530. package/dist/engines/installations/playwright-resolution-child.d.ts +1 -0
  531. package/dist/engines/installations/playwright-resolution-child.js +2 -0
  532. package/dist/engines/installations/playwright.d.ts +85 -0
  533. package/dist/engines/installations/playwright.js +1 -0
  534. package/dist/engines/installations/types.d.ts +10 -0
  535. package/dist/engines/installations/types.js +1 -0
  536. package/dist/engines/k6/adapter/bundle.d.ts +25 -0
  537. package/dist/engines/k6/adapter/bundle.js +112 -0
  538. package/dist/engines/k6/adapter/evidence.d.ts +15 -0
  539. package/dist/engines/k6/adapter/evidence.js +4 -0
  540. package/dist/engines/k6/adapter/executor.d.ts +13 -0
  541. package/dist/engines/k6/adapter/executor.js +1 -0
  542. package/dist/engines/k6/adapter/index.d.ts +1 -0
  543. package/dist/engines/k6/adapter/index.js +1 -0
  544. package/dist/engines/k6/adapter/input.d.ts +21 -0
  545. package/dist/engines/k6/adapter/input.js +1 -0
  546. package/dist/engines/k6/adapter/native-summary.d.ts +11 -0
  547. package/dist/engines/k6/adapter/native-summary.js +1 -0
  548. package/dist/engines/k6/adapter/repository-configuration.d.ts +2 -0
  549. package/dist/engines/k6/adapter/repository-configuration.js +1 -0
  550. package/dist/engines/k6/authoring-type-paths.d.ts +3 -0
  551. package/dist/engines/k6/authoring-type-paths.js +1 -0
  552. package/dist/engines/k6/runtime/ambient-types/bundle-manifest.json +146 -0
  553. package/dist/engines/k6/runtime/ambient-types/k6/LICENSE +21 -0
  554. package/dist/engines/k6/runtime/ambient-types/k6/browser/index.d.ts +6332 -0
  555. package/dist/engines/k6/runtime/ambient-types/k6/crypto/index.d.ts +218 -0
  556. package/dist/engines/k6/runtime/ambient-types/k6/data/index.d.ts +16 -0
  557. package/dist/engines/k6/runtime/ambient-types/k6/encoding/index.d.ts +46 -0
  558. package/dist/engines/k6/runtime/ambient-types/k6/execution/index.d.ts +127 -0
  559. package/dist/engines/k6/runtime/ambient-types/k6/experimental/csv/index.d.ts +96 -0
  560. package/dist/engines/k6/runtime/ambient-types/k6/experimental/fs/index.d.ts +104 -0
  561. package/dist/engines/k6/runtime/ambient-types/k6/experimental/redis/index.d.ts +821 -0
  562. package/dist/engines/k6/runtime/ambient-types/k6/experimental/streams/index.d.ts +198 -0
  563. package/dist/engines/k6/runtime/ambient-types/k6/global.d.ts +83 -0
  564. package/dist/engines/k6/runtime/ambient-types/k6/html/index.d.ts +1325 -0
  565. package/dist/engines/k6/runtime/ambient-types/k6/http/index.d.ts +806 -0
  566. package/dist/engines/k6/runtime/ambient-types/k6/index.d.ts +126 -0
  567. package/dist/engines/k6/runtime/ambient-types/k6/metrics/index.d.ts +66 -0
  568. package/dist/engines/k6/runtime/ambient-types/k6/net/grpc/index.d.ts +247 -0
  569. package/dist/engines/k6/runtime/ambient-types/k6/options/index.d.ts +459 -0
  570. package/dist/engines/k6/runtime/ambient-types/k6/package.json +79 -0
  571. package/dist/engines/k6/runtime/ambient-types/k6/secrets/index.d.ts +36 -0
  572. package/dist/engines/k6/runtime/ambient-types/k6/timers/index.d.ts +47 -0
  573. package/dist/engines/k6/runtime/ambient-types/k6/websockets/index.d.ts +324 -0
  574. package/dist/engines/k6/runtime/ambient-types/k6/ws/index.d.ts +283 -0
  575. package/dist/engines/k6/runtime/ambient-types/xk6-sql/LICENSE +201 -0
  576. package/dist/engines/k6/runtime/ambient-types/xk6-sql/index.d.ts +397 -0
  577. package/dist/engines/k6/runtime/ambient-types/xk6-sql/package.json +15 -0
  578. package/dist/engines/k6/runtime/artifacts.d.ts +2 -0
  579. package/dist/engines/k6/runtime/artifacts.js +1 -0
  580. package/dist/engines/k6/runtime/checks.d.ts +17 -0
  581. package/dist/engines/k6/runtime/checks.js +1 -0
  582. package/dist/engines/k6/runtime/dal-fixtures.d.ts +24 -0
  583. package/dist/engines/k6/runtime/dal-fixtures.js +1 -0
  584. package/dist/engines/k6/runtime/dal-suite.d.ts +24 -0
  585. package/dist/engines/k6/runtime/dal-suite.js +1 -0
  586. package/dist/engines/k6/runtime/dal.d.ts +10 -0
  587. package/dist/engines/k6/runtime/dal.js +1 -0
  588. package/dist/engines/k6/runtime/fixtures.d.ts +3 -0
  589. package/dist/engines/k6/runtime/fixtures.js +1 -0
  590. package/dist/engines/k6/runtime/http-assertions.d.ts +19 -0
  591. package/dist/engines/k6/runtime/http-assertions.js +1 -0
  592. package/dist/engines/k6/runtime/http-checks.d.ts +19 -0
  593. package/dist/engines/k6/runtime/http-checks.js +1 -0
  594. package/dist/engines/k6/runtime/http-suite-runtime.d.ts +103 -0
  595. package/dist/engines/k6/runtime/http-suite-runtime.js +1 -0
  596. package/dist/engines/k6/runtime/http.d.ts +15 -0
  597. package/dist/engines/k6/runtime/http.js +1 -0
  598. package/dist/engines/k6/runtime/index.d.ts +11 -0
  599. package/dist/engines/k6/runtime/index.js +1 -0
  600. package/dist/engines/k6/runtime/input.d.ts +3 -0
  601. package/dist/engines/k6/runtime/input.js +1 -0
  602. package/dist/engines/k6/runtime/k6-repository-configuration.d.ts +9 -0
  603. package/dist/engines/k6/runtime/k6-repository-configuration.js +1 -0
  604. package/dist/engines/k6/runtime/node-setup.d.ts +13 -0
  605. package/dist/engines/k6/runtime/node-setup.js +1 -0
  606. package/dist/engines/k6/runtime/runtime-globals.d.ts +10 -0
  607. package/dist/engines/k6/runtime/runtime-globals.js +1 -0
  608. package/dist/engines/k6/runtime/runtime.d.ts +54 -0
  609. package/dist/engines/k6/runtime/runtime.js +1 -0
  610. package/dist/engines/k6/runtime/shared/assertion-details.d.ts +19 -0
  611. package/dist/engines/k6/runtime/shared/assertion-details.js +2 -0
  612. package/dist/engines/k6/runtime/shared/db-normalization.d.ts +19 -0
  613. package/dist/engines/k6/runtime/shared/db-normalization.js +1 -0
  614. package/dist/engines/k6/runtime/shared/error-body.d.ts +3 -0
  615. package/dist/engines/k6/runtime/shared/error-body.js +1 -0
  616. package/dist/engines/k6/runtime/shared/file-data.d.ts +1 -0
  617. package/dist/engines/k6/runtime/shared/file-data.js +1 -0
  618. package/dist/engines/k6/runtime/shared/fixture-engine.d.ts +8 -0
  619. package/dist/engines/k6/runtime/shared/fixture-engine.js +2 -0
  620. package/dist/engines/k6/runtime/shared/http-check-plan.d.ts +29 -0
  621. package/dist/engines/k6/runtime/shared/http-check-plan.js +1 -0
  622. package/dist/engines/k6/runtime/shared/http-parsing.d.ts +10 -0
  623. package/dist/engines/k6/runtime/shared/http-parsing.js +3 -0
  624. package/dist/engines/k6/runtime/shared/ordering.d.ts +2 -0
  625. package/dist/engines/k6/runtime/shared/ordering.js +1 -0
  626. package/dist/engines/k6/runtime/shared/properties.d.ts +1 -0
  627. package/dist/engines/k6/runtime/shared/properties.js +1 -0
  628. package/dist/engines/k6/runtime/suite.d.ts +4 -0
  629. package/dist/engines/k6/runtime/suite.js +1 -0
  630. package/dist/engines/k6/runtime/types.d.ts +242 -0
  631. package/dist/engines/k6/runtime/types.js +1 -0
  632. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.d.ts +7 -0
  633. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.js +1 -0
  634. package/dist/engines/managed-module-resolution-policy-input.d.ts +9 -0
  635. package/dist/engines/managed-module-resolution-policy-input.js +1 -0
  636. package/dist/engines/managed-module-resolution-policy.d.ts +25 -0
  637. package/dist/engines/managed-module-resolution-policy.js +1 -0
  638. package/dist/engines/managed-module-resolution.d.ts +13 -0
  639. package/dist/engines/managed-module-resolution.js +697 -0
  640. package/dist/engines/manager.d.ts +24 -0
  641. package/dist/engines/manager.js +1 -0
  642. package/dist/engines/node-vitest/adapter/adapter.d.ts +16 -0
  643. package/dist/engines/node-vitest/adapter/adapter.js +1 -0
  644. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.d.ts +17 -0
  645. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.js +3 -0
  646. package/dist/engines/node-vitest/adapter/evidence.d.ts +33 -0
  647. package/dist/engines/node-vitest/adapter/evidence.js +2 -0
  648. package/dist/engines/node-vitest/adapter/failure-details.d.ts +2 -0
  649. package/dist/engines/node-vitest/adapter/failure-details.js +2 -0
  650. package/dist/engines/node-vitest/adapter/index.d.ts +1 -0
  651. package/dist/engines/node-vitest/adapter/index.js +1 -0
  652. package/dist/engines/node-vitest/adapter/reporter.d.ts +7 -0
  653. package/dist/engines/node-vitest/adapter/reporter.js +1 -0
  654. package/dist/engines/node-vitest/adapter/resolution.d.ts +12 -0
  655. package/dist/engines/node-vitest/adapter/resolution.js +1 -0
  656. package/dist/engines/node-vitest/adapter/workspace.d.ts +19 -0
  657. package/dist/engines/node-vitest/adapter/workspace.js +177 -0
  658. package/dist/engines/node-vitest/runtime/contract/index.d.ts +64 -0
  659. package/dist/engines/node-vitest/runtime/contract/index.js +1 -0
  660. package/dist/engines/node-vitest/runtime/data/http.d.ts +4 -0
  661. package/dist/engines/node-vitest/runtime/data/http.js +1 -0
  662. package/dist/engines/node-vitest/runtime/data/index.d.ts +8 -0
  663. package/dist/engines/node-vitest/runtime/data/index.js +1 -0
  664. package/dist/engines/node-vitest/runtime/data/primitives.d.ts +1 -0
  665. package/dist/engines/node-vitest/runtime/data/primitives.js +1 -0
  666. package/dist/engines/node-vitest/runtime/data/report.d.ts +3 -0
  667. package/dist/engines/node-vitest/runtime/data/report.js +6 -0
  668. package/dist/engines/node-vitest/runtime/data/runner.d.ts +4 -0
  669. package/dist/engines/node-vitest/runtime/data/runner.js +1 -0
  670. package/dist/engines/node-vitest/runtime/data/scenario.d.ts +12 -0
  671. package/dist/engines/node-vitest/runtime/data/scenario.js +2 -0
  672. package/dist/engines/node-vitest/runtime/data/types.d.ts +412 -0
  673. package/dist/engines/node-vitest/runtime/data/types.js +1 -0
  674. package/dist/engines/node-vitest/runtime/runtime-input.d.ts +63 -0
  675. package/dist/engines/node-vitest/runtime/runtime-input.js +1 -0
  676. package/dist/engines/playwright/adapter/adapter.d.ts +18 -0
  677. package/dist/engines/playwright/adapter/adapter.js +1 -0
  678. package/dist/engines/playwright/adapter/attachments.d.ts +25 -0
  679. package/dist/engines/playwright/adapter/attachments.js +1 -0
  680. package/dist/engines/playwright/adapter/config.d.ts +45 -0
  681. package/dist/engines/playwright/adapter/config.js +167 -0
  682. package/dist/engines/playwright/adapter/evidence-validation.d.ts +12 -0
  683. package/dist/engines/playwright/adapter/evidence-validation.js +1 -0
  684. package/dist/engines/playwright/adapter/evidence.d.ts +32 -0
  685. package/dist/engines/playwright/adapter/evidence.js +1 -0
  686. package/dist/engines/playwright/adapter/failure-details.d.ts +2 -0
  687. package/dist/engines/playwright/adapter/failure-details.js +2 -0
  688. package/dist/engines/playwright/adapter/index.d.ts +3 -0
  689. package/dist/engines/playwright/adapter/index.js +1 -0
  690. package/dist/engines/playwright/adapter/reporter.d.ts +12 -0
  691. package/dist/engines/playwright/adapter/reporter.js +1 -0
  692. package/dist/engines/playwright/runtime/config-file.d.ts +2 -0
  693. package/dist/engines/playwright/runtime/config-file.js +1 -0
  694. package/dist/engines/playwright/runtime/config.d.ts +24 -0
  695. package/dist/engines/playwright/runtime/config.js +1 -0
  696. package/dist/engines/playwright/runtime/index.d.ts +4 -0
  697. package/dist/engines/playwright/runtime/index.js +1 -0
  698. package/dist/engines/playwright/runtime/runtime-input.d.ts +36 -0
  699. package/dist/engines/playwright/runtime/runtime-input.js +151 -0
  700. package/dist/engines/playwright/runtime/sandbox.d.ts +84 -0
  701. package/dist/engines/playwright/runtime/sandbox.js +1 -0
  702. package/dist/engines/runtime-input-file.d.ts +25 -0
  703. package/dist/engines/runtime-input-file.js +1 -0
  704. package/dist/environment/lifecycle-artifacts.d.ts +7 -0
  705. package/dist/environment/lifecycle-artifacts.js +1 -0
  706. package/dist/environment/lifecycle-controller.d.ts +71 -0
  707. package/dist/environment/lifecycle-controller.js +1 -0
  708. package/dist/environment/lifecycle.d.ts +29 -0
  709. package/dist/environment/lifecycle.js +1 -0
  710. package/dist/environment/maintenance.d.ts +68 -0
  711. package/dist/environment/maintenance.js +1 -0
  712. package/dist/environment/planning-types.d.ts +35 -0
  713. package/dist/environment/planning-types.js +1 -0
  714. package/dist/environment/readiness.d.ts +12 -0
  715. package/dist/environment/readiness.js +1 -0
  716. package/dist/environment/ready-environment.d.ts +17 -0
  717. package/dist/environment/ready-environment.js +1 -0
  718. package/dist/environment/run-environment.d.ts +38 -0
  719. package/dist/environment/run-environment.js +1 -0
  720. package/dist/environment/run-stopping.d.ts +13 -0
  721. package/dist/environment/run-stopping.js +1 -0
  722. package/dist/environment/runtime-contexts.d.ts +32 -0
  723. package/dist/environment/runtime-contexts.js +1 -0
  724. package/dist/environment/runtime-manager.d.ts +95 -0
  725. package/dist/environment/runtime-manager.js +1 -0
  726. package/dist/environment/runtime-planning.d.ts +16 -0
  727. package/dist/environment/runtime-planning.js +1 -0
  728. package/dist/environment/runtime-preparation.d.ts +30 -0
  729. package/dist/environment/runtime-preparation.js +1 -0
  730. package/dist/environment/runtime-service.d.ts +18 -0
  731. package/dist/environment/runtime-service.js +1 -0
  732. package/dist/environment/services.d.ts +48 -0
  733. package/dist/environment/services.js +1 -0
  734. package/dist/environment/state.d.ts +18 -0
  735. package/dist/environment/state.js +1 -0
  736. package/dist/environment/status-runtime.d.ts +53 -0
  737. package/dist/environment/status-runtime.js +1 -0
  738. package/dist/environment/template.d.ts +180 -0
  739. package/dist/environment/template.js +1 -0
  740. package/dist/evidence/artifact-config.d.ts +14 -0
  741. package/dist/evidence/artifact-config.js +1 -0
  742. package/dist/evidence/artifact-validation.d.ts +5 -0
  743. package/dist/evidence/artifact-validation.js +1 -0
  744. package/dist/evidence/artifacts.d.ts +75 -0
  745. package/dist/evidence/artifacts.js +2 -0
  746. package/dist/evidence/bundles.d.ts +28 -0
  747. package/dist/evidence/bundles.js +1 -0
  748. package/dist/evidence/ci-provenance.d.ts +9 -0
  749. package/dist/evidence/ci-provenance.js +1 -0
  750. package/dist/evidence/contracts.d.ts +162 -0
  751. package/dist/evidence/contracts.js +1 -0
  752. package/dist/evidence/file-evidence.d.ts +23 -0
  753. package/dist/evidence/file-evidence.js +1 -0
  754. package/dist/evidence/finalization.d.ts +9 -0
  755. package/dist/evidence/finalization.js +1 -0
  756. package/dist/evidence/index.d.ts +8 -0
  757. package/dist/evidence/index.js +1 -0
  758. package/dist/evidence/logs.d.ts +31 -0
  759. package/dist/evidence/logs.js +2 -0
  760. package/dist/evidence/operation-timings.d.ts +60 -0
  761. package/dist/evidence/operation-timings.js +1 -0
  762. package/dist/evidence/read-bundle.d.ts +4 -0
  763. package/dist/evidence/read-bundle.js +1 -0
  764. package/dist/evidence/read-fields.d.ts +22 -0
  765. package/dist/evidence/read-fields.js +1 -0
  766. package/dist/evidence/read-provenance.d.ts +2 -0
  767. package/dist/evidence/read-provenance.js +1 -0
  768. package/dist/evidence/read-redaction.d.ts +2 -0
  769. package/dist/evidence/read-redaction.js +1 -0
  770. package/dist/evidence/read-retention.d.ts +2 -0
  771. package/dist/evidence/read-retention.js +1 -0
  772. package/dist/evidence/read-run.d.ts +2 -0
  773. package/dist/evidence/read-run.js +1 -0
  774. package/dist/evidence/reading.d.ts +28 -0
  775. package/dist/evidence/reading.js +1 -0
  776. package/dist/evidence/reporting-types.d.ts +330 -0
  777. package/dist/evidence/reporting-types.js +1 -0
  778. package/dist/evidence/reporting.d.ts +3 -0
  779. package/dist/evidence/reporting.js +1 -0
  780. package/dist/evidence/secure-file-copy.d.ts +24 -0
  781. package/dist/evidence/secure-file-copy.js +1 -0
  782. package/dist/evidence/setup-progress.d.ts +63 -0
  783. package/dist/evidence/setup-progress.js +1 -0
  784. package/dist/evidence/step-output.d.ts +16 -0
  785. package/dist/evidence/step-output.js +6 -0
  786. package/dist/evidence/storage-inventory.d.ts +27 -0
  787. package/dist/evidence/storage-inventory.js +1 -0
  788. package/dist/evidence/storage.d.ts +27 -0
  789. package/dist/evidence/storage.js +2 -0
  790. package/dist/evidence/timing.d.ts +23 -0
  791. package/dist/evidence/timing.js +1 -0
  792. package/dist/file.d.ts +11 -0
  793. package/dist/file.js +1 -0
  794. package/dist/index.d.ts +4 -0
  795. package/dist/index.js +1 -0
  796. package/dist/kernel/error-serialization.d.ts +38 -0
  797. package/dist/kernel/error-serialization.js +1 -0
  798. package/dist/kernel/redaction.d.ts +1 -0
  799. package/dist/kernel/redaction.js +1 -0
  800. package/dist/kernel/unknown-values.d.ts +6 -0
  801. package/dist/kernel/unknown-values.js +1 -0
  802. package/dist/process/capture-output.d.ts +7 -0
  803. package/dist/process/capture-output.js +1 -0
  804. package/dist/process/command-shell.d.ts +1 -0
  805. package/dist/process/command-shell.js +1 -0
  806. package/dist/process/environment-overlay.d.ts +17 -0
  807. package/dist/process/environment-overlay.js +1 -0
  808. package/dist/process/environment.d.ts +33 -0
  809. package/dist/process/environment.js +1 -0
  810. package/dist/process/files/contained-path.d.ts +8 -0
  811. package/dist/process/files/contained-path.js +1 -0
  812. package/dist/process/files/directory-status.d.ts +14 -0
  813. package/dist/process/files/directory-status.js +1 -0
  814. package/dist/process/files/dotenv.d.ts +2 -0
  815. package/dist/process/files/dotenv.js +1 -0
  816. package/dist/process/files/file-snapshot.d.ts +34 -0
  817. package/dist/process/files/file-snapshot.js +1 -0
  818. package/dist/process/files/json-file.d.ts +11 -0
  819. package/dist/process/files/json-file.js +1 -0
  820. package/dist/process/files/paths.d.ts +1 -0
  821. package/dist/process/files/paths.js +1 -0
  822. package/dist/process/files/temp-dir.d.ts +11 -0
  823. package/dist/process/files/temp-dir.js +1 -0
  824. package/dist/process/host/metadata.d.ts +6 -0
  825. package/dist/process/host/metadata.js +1 -0
  826. package/dist/process/host/platform.d.ts +57 -0
  827. package/dist/process/host/platform.js +1 -0
  828. package/dist/process/host-command.d.ts +4 -0
  829. package/dist/process/host-command.js +3 -0
  830. package/dist/process/host-inspection-command.d.ts +13 -0
  831. package/dist/process/host-inspection-command.js +1 -0
  832. package/dist/process/host-process.d.ts +14 -0
  833. package/dist/process/host-process.js +1 -0
  834. package/dist/process/index.d.ts +9 -0
  835. package/dist/process/index.js +1 -0
  836. package/dist/process/lifecycle-fence.d.ts +11 -0
  837. package/dist/process/lifecycle-fence.js +1 -0
  838. package/dist/process/locks.d.ts +28 -0
  839. package/dist/process/locks.js +4 -0
  840. package/dist/process/process-contracts.d.ts +70 -0
  841. package/dist/process/process-contracts.js +1 -0
  842. package/dist/process/process-group.d.ts +12 -0
  843. package/dist/process/process-group.js +1 -0
  844. package/dist/process/process-identity.d.ts +27 -0
  845. package/dist/process/process-identity.js +1 -0
  846. package/dist/process/process-limits.d.ts +6 -0
  847. package/dist/process/process-limits.js +1 -0
  848. package/dist/process/process.d.ts +11 -0
  849. package/dist/process/process.js +1 -0
  850. package/dist/process/readiness.d.ts +37 -0
  851. package/dist/process/readiness.js +1 -0
  852. package/dist/process/recovery.d.ts +3 -0
  853. package/dist/process/recovery.js +1 -0
  854. package/dist/process/runs/manifest.d.ts +85 -0
  855. package/dist/process/runs/manifest.js +1 -0
  856. package/dist/process/runs/ownership.d.ts +11 -0
  857. package/dist/process/runs/ownership.js +1 -0
  858. package/dist/process/runs/product-state.d.ts +2 -0
  859. package/dist/process/runs/product-state.js +1 -0
  860. package/dist/process/runs/schema.d.ts +3 -0
  861. package/dist/process/runs/schema.js +1 -0
  862. package/dist/process/runs/stop.d.ts +19 -0
  863. package/dist/process/runs/stop.js +1 -0
  864. package/dist/process/runtime-socket.d.ts +4 -0
  865. package/dist/process/runtime-socket.js +1 -0
  866. package/dist/process/service-processes.d.ts +13 -0
  867. package/dist/process/service-processes.js +1 -0
  868. package/dist/process/shutdown.d.ts +10 -0
  869. package/dist/process/shutdown.js +1 -0
  870. package/dist/process/windows-cli-owner.d.ts +2 -0
  871. package/dist/process/windows-cli-owner.js +3 -0
  872. package/dist/process/windows-native.d.ts +6 -0
  873. package/dist/process/windows-native.js +1 -0
  874. package/dist/process/windows-process-identity.d.ts +4 -0
  875. package/dist/process/windows-process-identity.js +1 -0
  876. package/dist/repo/ci-environment.d.ts +7 -0
  877. package/dist/repo/ci-environment.js +1 -0
  878. package/dist/repo/fingerprint-policy.d.ts +15 -0
  879. package/dist/repo/fingerprint-policy.js +1 -0
  880. package/dist/repo/git-path.d.ts +2 -0
  881. package/dist/repo/git-path.js +1 -0
  882. package/dist/repo/managed-git.d.ts +10 -0
  883. package/dist/repo/managed-git.js +1 -0
  884. package/dist/repo/metadata.d.ts +3 -0
  885. package/dist/repo/metadata.js +1 -0
  886. package/dist/repo/physical-tree.d.ts +37 -0
  887. package/dist/repo/physical-tree.js +1 -0
  888. package/dist/repo/remote.d.ts +6 -0
  889. package/dist/repo/remote.js +1 -0
  890. package/dist/repo/state.d.ts +25 -0
  891. package/dist/repo/state.js +5 -0
  892. package/dist/steps/build-config.d.ts +35 -0
  893. package/dist/steps/build-config.js +1 -0
  894. package/dist/steps/configured-step-testkit-modules.d.ts +19 -0
  895. package/dist/steps/configured-step-testkit-modules.js +1 -0
  896. package/dist/steps/configured-steps.d.ts +51 -0
  897. package/dist/steps/configured-steps.js +1 -0
  898. package/dist/steps/environment.d.ts +78 -0
  899. package/dist/steps/environment.js +1 -0
  900. package/dist/steps/index.d.ts +2 -0
  901. package/dist/steps/index.js +1 -0
  902. package/dist/steps/module-runner.d.ts +1 -0
  903. package/dist/steps/module-runner.js +1 -0
  904. package/dist/steps/run.d.ts +36 -0
  905. package/dist/steps/run.js +3 -0
  906. package/dist/toolchains/archive.d.ts +53 -0
  907. package/dist/toolchains/archive.js +1 -0
  908. package/dist/toolchains/esbuild.d.ts +9 -0
  909. package/dist/toolchains/esbuild.js +1 -0
  910. package/dist/toolchains/host-node-support.d.ts +3 -0
  911. package/dist/toolchains/host-node-support.js +1 -0
  912. package/dist/toolchains/index.d.ts +114 -0
  913. package/dist/toolchains/index.js +4 -0
  914. package/dist/toolchains/managed-node-releases.d.ts +28 -0
  915. package/dist/toolchains/managed-node-releases.js +1 -0
  916. package/dist/toolchains/node-cache.d.ts +20 -0
  917. package/dist/toolchains/node-cache.js +1 -0
  918. package/dist/toolchains/node-integrity.d.ts +16 -0
  919. package/dist/toolchains/node-integrity.js +1 -0
  920. package/dist/toolchains/node-provisioning.d.ts +29 -0
  921. package/dist/toolchains/node-provisioning.js +2 -0
  922. package/dist/toolchains/semver.d.ts +13 -0
  923. package/dist/toolchains/semver.js +1 -0
  924. package/dist/toolchains/shared-operation.d.ts +11 -0
  925. package/dist/toolchains/shared-operation.js +1 -0
  926. package/dist/toolchains/timeouts.d.ts +1 -0
  927. package/dist/toolchains/timeouts.js +1 -0
  928. package/dist/toolchains/vitest/index.d.ts +13 -0
  929. package/dist/toolchains/vitest/index.js +1 -0
  930. package/docs/cloud-control.md +105 -0
  931. package/docs/engine-architecture.md +631 -0
  932. package/docs/test-types.md +120 -0
  933. package/docs/testkit-cloud-boundary.md +640 -0
  934. package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  935. package/node_modules/@isaacs/fs-minipass/README.md +71 -0
  936. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
  937. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
  938. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  939. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
  940. package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  941. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
  942. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
  943. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  944. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
  945. package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  946. package/node_modules/@isaacs/fs-minipass/package.json +72 -0
  947. package/node_modules/buffer-crc32/LICENSE +19 -0
  948. package/node_modules/buffer-crc32/README.md +55 -0
  949. package/node_modules/buffer-crc32/dist/index.cjs +306 -0
  950. package/node_modules/buffer-crc32/dist/index.d.cts +35 -0
  951. package/node_modules/buffer-crc32/dist/index.d.mts +35 -0
  952. package/node_modules/buffer-crc32/dist/index.mjs +304 -0
  953. package/node_modules/buffer-crc32/index.d.ts +35 -0
  954. package/node_modules/buffer-crc32/package.json +54 -0
  955. package/node_modules/chownr/LICENSE.md +63 -0
  956. package/node_modules/chownr/README.md +3 -0
  957. package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
  958. package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
  959. package/node_modules/chownr/dist/commonjs/index.js +93 -0
  960. package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
  961. package/node_modules/chownr/dist/commonjs/package.json +3 -0
  962. package/node_modules/chownr/dist/esm/index.d.ts +3 -0
  963. package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
  964. package/node_modules/chownr/dist/esm/index.js +85 -0
  965. package/node_modules/chownr/dist/esm/index.js.map +1 -0
  966. package/node_modules/chownr/dist/esm/package.json +3 -0
  967. package/node_modules/chownr/package.json +69 -0
  968. package/node_modules/diff/CONTRIBUTING.md +28 -0
  969. package/node_modules/diff/LICENSE +29 -0
  970. package/node_modules/diff/README.md +468 -0
  971. package/node_modules/diff/dist/diff.js +2313 -0
  972. package/node_modules/diff/dist/diff.min.js +1 -0
  973. package/node_modules/diff/eslint.config.mjs +182 -0
  974. package/node_modules/diff/libcjs/convert/dmp.d.ts +8 -0
  975. package/node_modules/diff/libcjs/convert/dmp.d.ts.map +1 -0
  976. package/node_modules/diff/libcjs/convert/dmp.js +24 -0
  977. package/node_modules/diff/libcjs/convert/xml.d.ts +6 -0
  978. package/node_modules/diff/libcjs/convert/xml.d.ts.map +1 -0
  979. package/node_modules/diff/libcjs/convert/xml.js +34 -0
  980. package/node_modules/diff/libcjs/diff/array.d.ts +19 -0
  981. package/node_modules/diff/libcjs/diff/array.d.ts.map +1 -0
  982. package/node_modules/diff/libcjs/diff/array.js +23 -0
  983. package/node_modules/diff/libcjs/diff/base.d.ts +20 -0
  984. package/node_modules/diff/libcjs/diff/base.d.ts.map +1 -0
  985. package/node_modules/diff/libcjs/diff/base.js +256 -0
  986. package/node_modules/diff/libcjs/diff/character.d.ts +19 -0
  987. package/node_modules/diff/libcjs/diff/character.d.ts.map +1 -0
  988. package/node_modules/diff/libcjs/diff/character.js +14 -0
  989. package/node_modules/diff/libcjs/diff/css.d.ts +18 -0
  990. package/node_modules/diff/libcjs/diff/css.d.ts.map +1 -0
  991. package/node_modules/diff/libcjs/diff/css.js +17 -0
  992. package/node_modules/diff/libcjs/diff/json.d.ts +24 -0
  993. package/node_modules/diff/libcjs/diff/json.d.ts.map +1 -0
  994. package/node_modules/diff/libcjs/diff/json.js +86 -0
  995. package/node_modules/diff/libcjs/diff/line.d.ts +24 -0
  996. package/node_modules/diff/libcjs/diff/line.d.ts.map +1 -0
  997. package/node_modules/diff/libcjs/diff/line.js +74 -0
  998. package/node_modules/diff/libcjs/diff/sentence.d.ts +21 -0
  999. package/node_modules/diff/libcjs/diff/sentence.d.ts.map +1 -0
  1000. package/node_modules/diff/libcjs/diff/sentence.js +50 -0
  1001. package/node_modules/diff/libcjs/diff/word.d.ts +35 -0
  1002. package/node_modules/diff/libcjs/diff/word.d.ts.map +1 -0
  1003. package/node_modules/diff/libcjs/diff/word.js +289 -0
  1004. package/node_modules/diff/libcjs/index.d.ts +20 -0
  1005. package/node_modules/diff/libcjs/index.d.ts.map +1 -0
  1006. package/node_modules/diff/libcjs/index.js +67 -0
  1007. package/node_modules/diff/libcjs/package.json +1 -0
  1008. package/node_modules/diff/libcjs/patch/apply.d.ts +62 -0
  1009. package/node_modules/diff/libcjs/patch/apply.d.ts.map +1 -0
  1010. package/node_modules/diff/libcjs/patch/apply.js +264 -0
  1011. package/node_modules/diff/libcjs/patch/create.d.ts +131 -0
  1012. package/node_modules/diff/libcjs/patch/create.d.ts.map +1 -0
  1013. package/node_modules/diff/libcjs/patch/create.js +364 -0
  1014. package/node_modules/diff/libcjs/patch/line-endings.d.ts +17 -0
  1015. package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +1 -0
  1016. package/node_modules/diff/libcjs/patch/line-endings.js +50 -0
  1017. package/node_modules/diff/libcjs/patch/parse.d.ts +16 -0
  1018. package/node_modules/diff/libcjs/patch/parse.d.ts.map +1 -0
  1019. package/node_modules/diff/libcjs/patch/parse.js +515 -0
  1020. package/node_modules/diff/libcjs/patch/reverse.d.ts +22 -0
  1021. package/node_modules/diff/libcjs/patch/reverse.d.ts.map +1 -0
  1022. package/node_modules/diff/libcjs/patch/reverse.js +63 -0
  1023. package/node_modules/diff/libcjs/types.d.ts +260 -0
  1024. package/node_modules/diff/libcjs/types.d.ts.map +1 -0
  1025. package/node_modules/diff/libcjs/types.js +2 -0
  1026. package/node_modules/diff/libcjs/util/array.d.ts +3 -0
  1027. package/node_modules/diff/libcjs/util/array.d.ts.map +1 -0
  1028. package/node_modules/diff/libcjs/util/array.js +21 -0
  1029. package/node_modules/diff/libcjs/util/distance-iterator.d.ts +2 -0
  1030. package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +1 -0
  1031. package/node_modules/diff/libcjs/util/distance-iterator.js +40 -0
  1032. package/node_modules/diff/libcjs/util/params.d.ts +4 -0
  1033. package/node_modules/diff/libcjs/util/params.d.ts.map +1 -0
  1034. package/node_modules/diff/libcjs/util/params.js +17 -0
  1035. package/node_modules/diff/libcjs/util/string.d.ts +30 -0
  1036. package/node_modules/diff/libcjs/util/string.d.ts.map +1 -0
  1037. package/node_modules/diff/libcjs/util/string.js +199 -0
  1038. package/node_modules/diff/libesm/convert/dmp.d.ts +8 -0
  1039. package/node_modules/diff/libesm/convert/dmp.d.ts.map +1 -0
  1040. package/node_modules/diff/libesm/convert/dmp.js +21 -0
  1041. package/node_modules/diff/libesm/convert/xml.d.ts +6 -0
  1042. package/node_modules/diff/libesm/convert/xml.d.ts.map +1 -0
  1043. package/node_modules/diff/libesm/convert/xml.js +31 -0
  1044. package/node_modules/diff/libesm/diff/array.d.ts +19 -0
  1045. package/node_modules/diff/libesm/diff/array.d.ts.map +1 -0
  1046. package/node_modules/diff/libesm/diff/array.js +16 -0
  1047. package/node_modules/diff/libesm/diff/base.d.ts +20 -0
  1048. package/node_modules/diff/libesm/diff/base.d.ts.map +1 -0
  1049. package/node_modules/diff/libesm/diff/base.js +253 -0
  1050. package/node_modules/diff/libesm/diff/character.d.ts +19 -0
  1051. package/node_modules/diff/libesm/diff/character.d.ts.map +1 -0
  1052. package/node_modules/diff/libesm/diff/character.js +7 -0
  1053. package/node_modules/diff/libesm/diff/css.d.ts +18 -0
  1054. package/node_modules/diff/libesm/diff/css.d.ts.map +1 -0
  1055. package/node_modules/diff/libesm/diff/css.js +10 -0
  1056. package/node_modules/diff/libesm/diff/json.d.ts +24 -0
  1057. package/node_modules/diff/libesm/diff/json.d.ts.map +1 -0
  1058. package/node_modules/diff/libesm/diff/json.js +78 -0
  1059. package/node_modules/diff/libesm/diff/line.d.ts +24 -0
  1060. package/node_modules/diff/libesm/diff/line.d.ts.map +1 -0
  1061. package/node_modules/diff/libesm/diff/line.js +65 -0
  1062. package/node_modules/diff/libesm/diff/sentence.d.ts +21 -0
  1063. package/node_modules/diff/libesm/diff/sentence.d.ts.map +1 -0
  1064. package/node_modules/diff/libesm/diff/sentence.js +43 -0
  1065. package/node_modules/diff/libesm/diff/word.d.ts +35 -0
  1066. package/node_modules/diff/libesm/diff/word.d.ts.map +1 -0
  1067. package/node_modules/diff/libesm/diff/word.js +281 -0
  1068. package/node_modules/diff/libesm/index.d.ts +20 -0
  1069. package/node_modules/diff/libesm/index.d.ts.map +1 -0
  1070. package/node_modules/diff/libesm/index.js +30 -0
  1071. package/node_modules/diff/libesm/package.json +1 -0
  1072. package/node_modules/diff/libesm/patch/apply.d.ts +62 -0
  1073. package/node_modules/diff/libesm/patch/apply.d.ts.map +1 -0
  1074. package/node_modules/diff/libesm/patch/apply.js +257 -0
  1075. package/node_modules/diff/libesm/patch/create.d.ts +131 -0
  1076. package/node_modules/diff/libesm/patch/create.d.ts.map +1 -0
  1077. package/node_modules/diff/libesm/patch/create.js +357 -0
  1078. package/node_modules/diff/libesm/patch/line-endings.d.ts +17 -0
  1079. package/node_modules/diff/libesm/patch/line-endings.d.ts.map +1 -0
  1080. package/node_modules/diff/libesm/patch/line-endings.js +44 -0
  1081. package/node_modules/diff/libesm/patch/parse.d.ts +16 -0
  1082. package/node_modules/diff/libesm/patch/parse.d.ts.map +1 -0
  1083. package/node_modules/diff/libesm/patch/parse.js +512 -0
  1084. package/node_modules/diff/libesm/patch/reverse.d.ts +22 -0
  1085. package/node_modules/diff/libesm/patch/reverse.d.ts.map +1 -0
  1086. package/node_modules/diff/libesm/patch/reverse.js +60 -0
  1087. package/node_modules/diff/libesm/types.d.ts +260 -0
  1088. package/node_modules/diff/libesm/types.d.ts.map +1 -0
  1089. package/node_modules/diff/libesm/types.js +1 -0
  1090. package/node_modules/diff/libesm/util/array.d.ts +3 -0
  1091. package/node_modules/diff/libesm/util/array.d.ts.map +1 -0
  1092. package/node_modules/diff/libesm/util/array.js +17 -0
  1093. package/node_modules/diff/libesm/util/distance-iterator.d.ts +2 -0
  1094. package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +1 -0
  1095. package/node_modules/diff/libesm/util/distance-iterator.js +37 -0
  1096. package/node_modules/diff/libesm/util/params.d.ts +4 -0
  1097. package/node_modules/diff/libesm/util/params.d.ts.map +1 -0
  1098. package/node_modules/diff/libesm/util/params.js +14 -0
  1099. package/node_modules/diff/libesm/util/string.d.ts +30 -0
  1100. package/node_modules/diff/libesm/util/string.d.ts.map +1 -0
  1101. package/node_modules/diff/libesm/util/string.js +184 -0
  1102. package/node_modules/diff/package.json +130 -0
  1103. package/node_modules/diff/release-notes.md +474 -0
  1104. package/node_modules/minipass/LICENSE.md +55 -0
  1105. package/node_modules/minipass/README.md +825 -0
  1106. package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
  1107. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  1108. package/node_modules/minipass/dist/commonjs/index.js +1038 -0
  1109. package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  1110. package/node_modules/minipass/dist/commonjs/package.json +3 -0
  1111. package/node_modules/minipass/dist/esm/index.d.ts +545 -0
  1112. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  1113. package/node_modules/minipass/dist/esm/index.js +1020 -0
  1114. package/node_modules/minipass/dist/esm/index.js.map +1 -0
  1115. package/node_modules/minipass/dist/esm/package.json +3 -0
  1116. package/node_modules/minipass/package.json +77 -0
  1117. package/node_modules/minizlib/LICENSE +26 -0
  1118. package/node_modules/minizlib/README.md +64 -0
  1119. package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
  1120. package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
  1121. package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  1122. package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
  1123. package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
  1124. package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
  1125. package/node_modules/minizlib/dist/commonjs/index.js +416 -0
  1126. package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
  1127. package/node_modules/minizlib/dist/commonjs/package.json +3 -0
  1128. package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
  1129. package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
  1130. package/node_modules/minizlib/dist/esm/constants.js +117 -0
  1131. package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
  1132. package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
  1133. package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
  1134. package/node_modules/minizlib/dist/esm/index.js +363 -0
  1135. package/node_modules/minizlib/dist/esm/index.js.map +1 -0
  1136. package/node_modules/minizlib/dist/esm/package.json +3 -0
  1137. package/node_modules/minizlib/package.json +80 -0
  1138. package/node_modules/pend/LICENSE +23 -0
  1139. package/node_modules/pend/README.md +41 -0
  1140. package/node_modules/pend/index.js +55 -0
  1141. package/node_modules/pend/package.json +18 -0
  1142. package/node_modules/pend/test.js +137 -0
  1143. package/node_modules/tar/LICENSE.md +55 -0
  1144. package/node_modules/tar/README.md +1233 -0
  1145. package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
  1146. package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
  1147. package/node_modules/tar/dist/commonjs/create.js +82 -0
  1148. package/node_modules/tar/dist/commonjs/create.js.map +1 -0
  1149. package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
  1150. package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
  1151. package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  1152. package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
  1153. package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
  1154. package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
  1155. package/node_modules/tar/dist/commonjs/extract.js +88 -0
  1156. package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
  1157. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
  1158. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
  1159. package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  1160. package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
  1161. package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
  1162. package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
  1163. package/node_modules/tar/dist/commonjs/header.js +348 -0
  1164. package/node_modules/tar/dist/commonjs/header.js.map +1 -0
  1165. package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
  1166. package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
  1167. package/node_modules/tar/dist/commonjs/index.js +64 -0
  1168. package/node_modules/tar/dist/commonjs/index.js.map +1 -0
  1169. package/node_modules/tar/dist/commonjs/index.min.js +4 -0
  1170. package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
  1171. package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
  1172. package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
  1173. package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  1174. package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
  1175. package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
  1176. package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
  1177. package/node_modules/tar/dist/commonjs/list.js +153 -0
  1178. package/node_modules/tar/dist/commonjs/list.js.map +1 -0
  1179. package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
  1180. package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
  1181. package/node_modules/tar/dist/commonjs/make-command.js +52 -0
  1182. package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
  1183. package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
  1184. package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
  1185. package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  1186. package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
  1187. package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
  1188. package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
  1189. package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  1190. package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
  1191. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
  1192. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
  1193. package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  1194. package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
  1195. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
  1196. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
  1197. package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  1198. package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
  1199. package/node_modules/tar/dist/commonjs/options.d.ts +604 -0
  1200. package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
  1201. package/node_modules/tar/dist/commonjs/options.js +66 -0
  1202. package/node_modules/tar/dist/commonjs/options.js.map +1 -0
  1203. package/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
  1204. package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
  1205. package/node_modules/tar/dist/commonjs/pack.js +544 -0
  1206. package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
  1207. package/node_modules/tar/dist/commonjs/package.json +3 -0
  1208. package/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
  1209. package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
  1210. package/node_modules/tar/dist/commonjs/parse.js +655 -0
  1211. package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
  1212. package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
  1213. package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
  1214. package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  1215. package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
  1216. package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
  1217. package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
  1218. package/node_modules/tar/dist/commonjs/pax.js +182 -0
  1219. package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
  1220. package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
  1221. package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
  1222. package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  1223. package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
  1224. package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
  1225. package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
  1226. package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  1227. package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
  1228. package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
  1229. package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
  1230. package/node_modules/tar/dist/commonjs/replace.js +227 -0
  1231. package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
  1232. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
  1233. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
  1234. package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  1235. package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
  1236. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
  1237. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
  1238. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  1239. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
  1240. package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
  1241. package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
  1242. package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  1243. package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
  1244. package/node_modules/tar/dist/commonjs/types.d.ts +16 -0
  1245. package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
  1246. package/node_modules/tar/dist/commonjs/types.js +70 -0
  1247. package/node_modules/tar/dist/commonjs/types.js.map +1 -0
  1248. package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
  1249. package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
  1250. package/node_modules/tar/dist/commonjs/unpack.js +932 -0
  1251. package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
  1252. package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
  1253. package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
  1254. package/node_modules/tar/dist/commonjs/update.js +33 -0
  1255. package/node_modules/tar/dist/commonjs/update.js.map +1 -0
  1256. package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
  1257. package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
  1258. package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  1259. package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
  1260. package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
  1261. package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
  1262. package/node_modules/tar/dist/commonjs/winchars.js +14 -0
  1263. package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
  1264. package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
  1265. package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
  1266. package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  1267. package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
  1268. package/node_modules/tar/dist/esm/create.d.ts +3 -0
  1269. package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
  1270. package/node_modules/tar/dist/esm/create.js +76 -0
  1271. package/node_modules/tar/dist/esm/create.js.map +1 -0
  1272. package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
  1273. package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
  1274. package/node_modules/tar/dist/esm/cwd-error.js +14 -0
  1275. package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
  1276. package/node_modules/tar/dist/esm/extract.d.ts +3 -0
  1277. package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
  1278. package/node_modules/tar/dist/esm/extract.js +49 -0
  1279. package/node_modules/tar/dist/esm/extract.js.map +1 -0
  1280. package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
  1281. package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
  1282. package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  1283. package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
  1284. package/node_modules/tar/dist/esm/header.d.ts +53 -0
  1285. package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
  1286. package/node_modules/tar/dist/esm/header.js +311 -0
  1287. package/node_modules/tar/dist/esm/header.js.map +1 -0
  1288. package/node_modules/tar/dist/esm/index.d.ts +20 -0
  1289. package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
  1290. package/node_modules/tar/dist/esm/index.js +20 -0
  1291. package/node_modules/tar/dist/esm/index.js.map +1 -0
  1292. package/node_modules/tar/dist/esm/index.min.js +4 -0
  1293. package/node_modules/tar/dist/esm/index.min.js.map +7 -0
  1294. package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
  1295. package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
  1296. package/node_modules/tar/dist/esm/large-numbers.js +94 -0
  1297. package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
  1298. package/node_modules/tar/dist/esm/list.d.ts +7 -0
  1299. package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
  1300. package/node_modules/tar/dist/esm/list.js +113 -0
  1301. package/node_modules/tar/dist/esm/list.js.map +1 -0
  1302. package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
  1303. package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
  1304. package/node_modules/tar/dist/esm/make-command.js +48 -0
  1305. package/node_modules/tar/dist/esm/make-command.js.map +1 -0
  1306. package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
  1307. package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
  1308. package/node_modules/tar/dist/esm/mkdir.js +179 -0
  1309. package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
  1310. package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
  1311. package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
  1312. package/node_modules/tar/dist/esm/mode-fix.js +25 -0
  1313. package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
  1314. package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
  1315. package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
  1316. package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  1317. package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
  1318. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
  1319. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
  1320. package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  1321. package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
  1322. package/node_modules/tar/dist/esm/options.d.ts +604 -0
  1323. package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
  1324. package/node_modules/tar/dist/esm/options.js +54 -0
  1325. package/node_modules/tar/dist/esm/options.js.map +1 -0
  1326. package/node_modules/tar/dist/esm/pack.d.ts +105 -0
  1327. package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
  1328. package/node_modules/tar/dist/esm/pack.js +502 -0
  1329. package/node_modules/tar/dist/esm/pack.js.map +1 -0
  1330. package/node_modules/tar/dist/esm/package.json +3 -0
  1331. package/node_modules/tar/dist/esm/parse.d.ts +92 -0
  1332. package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
  1333. package/node_modules/tar/dist/esm/parse.js +651 -0
  1334. package/node_modules/tar/dist/esm/parse.js.map +1 -0
  1335. package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
  1336. package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
  1337. package/node_modules/tar/dist/esm/path-reservations.js +166 -0
  1338. package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
  1339. package/node_modules/tar/dist/esm/pax.d.ts +26 -0
  1340. package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
  1341. package/node_modules/tar/dist/esm/pax.js +178 -0
  1342. package/node_modules/tar/dist/esm/pax.js.map +1 -0
  1343. package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
  1344. package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
  1345. package/node_modules/tar/dist/esm/process-umask.js +3 -0
  1346. package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
  1347. package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
  1348. package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
  1349. package/node_modules/tar/dist/esm/read-entry.js +132 -0
  1350. package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
  1351. package/node_modules/tar/dist/esm/replace.d.ts +2 -0
  1352. package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
  1353. package/node_modules/tar/dist/esm/replace.js +221 -0
  1354. package/node_modules/tar/dist/esm/replace.js.map +1 -0
  1355. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
  1356. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
  1357. package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  1358. package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
  1359. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
  1360. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
  1361. package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  1362. package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
  1363. package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
  1364. package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
  1365. package/node_modules/tar/dist/esm/symlink-error.js +15 -0
  1366. package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
  1367. package/node_modules/tar/dist/esm/types.d.ts +16 -0
  1368. package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
  1369. package/node_modules/tar/dist/esm/types.js +65 -0
  1370. package/node_modules/tar/dist/esm/types.js.map +1 -0
  1371. package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
  1372. package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
  1373. package/node_modules/tar/dist/esm/unpack.js +891 -0
  1374. package/node_modules/tar/dist/esm/unpack.js.map +1 -0
  1375. package/node_modules/tar/dist/esm/update.d.ts +2 -0
  1376. package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
  1377. package/node_modules/tar/dist/esm/update.js +30 -0
  1378. package/node_modules/tar/dist/esm/update.js.map +1 -0
  1379. package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
  1380. package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
  1381. package/node_modules/tar/dist/esm/warn-method.js +27 -0
  1382. package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
  1383. package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
  1384. package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
  1385. package/node_modules/tar/dist/esm/winchars.js +9 -0
  1386. package/node_modules/tar/dist/esm/winchars.js.map +1 -0
  1387. package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
  1388. package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
  1389. package/node_modules/tar/dist/esm/write-entry.js +656 -0
  1390. package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
  1391. package/node_modules/tar/package.json +298 -0
  1392. package/node_modules/typescript/LICENSE.txt +55 -0
  1393. package/node_modules/typescript/README.md +50 -0
  1394. package/node_modules/typescript/SECURITY.md +41 -0
  1395. package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  1396. package/node_modules/typescript/bin/tsc +2 -0
  1397. package/node_modules/typescript/bin/tsserver +2 -0
  1398. package/node_modules/typescript/lib/_tsc.js +133818 -0
  1399. package/node_modules/typescript/lib/_tsserver.js +659 -0
  1400. package/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  1401. package/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  1402. package/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  1403. package/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  1404. package/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  1405. package/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  1406. package/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  1407. package/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  1408. package/node_modules/typescript/lib/lib.d.ts +22 -0
  1409. package/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  1410. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  1411. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  1412. package/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  1413. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  1414. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  1415. package/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  1416. package/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  1417. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  1418. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  1419. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  1420. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  1421. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  1422. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  1423. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  1424. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  1425. package/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  1426. package/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  1427. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  1428. package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  1429. package/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  1430. package/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  1431. package/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  1432. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  1433. package/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  1434. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  1435. package/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  1436. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  1437. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  1438. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  1439. package/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  1440. package/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  1441. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  1442. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  1443. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  1444. package/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  1445. package/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  1446. package/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  1447. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  1448. package/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  1449. package/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  1450. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  1451. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  1452. package/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  1453. package/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  1454. package/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  1455. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  1456. package/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  1457. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  1458. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  1459. package/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  1460. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  1461. package/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  1462. package/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  1463. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  1464. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  1465. package/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  1466. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  1467. package/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  1468. package/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  1469. package/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  1470. package/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  1471. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  1472. package/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  1473. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  1474. package/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  1475. package/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  1476. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  1477. package/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  1478. package/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  1479. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  1480. package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  1481. package/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  1482. package/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  1483. package/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  1484. package/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  1485. package/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  1486. package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  1487. package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  1488. package/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  1489. package/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  1490. package/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  1491. package/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  1492. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  1493. package/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  1494. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  1495. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  1496. package/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  1497. package/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  1498. package/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  1499. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  1500. package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  1501. package/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  1502. package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  1503. package/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  1504. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  1505. package/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  1506. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  1507. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  1508. package/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  1509. package/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  1510. package/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  1511. package/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  1512. package/node_modules/typescript/lib/tsc.js +8 -0
  1513. package/node_modules/typescript/lib/tsserver.js +8 -0
  1514. package/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  1515. package/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  1516. package/node_modules/typescript/lib/typesMap.json +497 -0
  1517. package/node_modules/typescript/lib/typescript.d.ts +11437 -0
  1518. package/node_modules/typescript/lib/typescript.js +200276 -0
  1519. package/node_modules/typescript/lib/typingsInstaller.js +8 -0
  1520. package/node_modules/typescript/lib/watchGuard.js +53 -0
  1521. package/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  1522. package/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  1523. package/node_modules/typescript/package.json +120 -0
  1524. package/node_modules/yallist/LICENSE.md +63 -0
  1525. package/node_modules/yallist/README.md +205 -0
  1526. package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
  1527. package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
  1528. package/node_modules/yallist/dist/commonjs/index.js +384 -0
  1529. package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
  1530. package/node_modules/yallist/dist/commonjs/package.json +3 -0
  1531. package/node_modules/yallist/dist/esm/index.d.ts +39 -0
  1532. package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
  1533. package/node_modules/yallist/dist/esm/index.js +379 -0
  1534. package/node_modules/yallist/dist/esm/index.js.map +1 -0
  1535. package/node_modules/yallist/dist/esm/package.json +3 -0
  1536. package/node_modules/yallist/package.json +68 -0
  1537. package/node_modules/yauzl/LICENSE +21 -0
  1538. package/node_modules/yauzl/README.md +1015 -0
  1539. package/node_modules/yauzl/crc32.js +45 -0
  1540. package/node_modules/yauzl/fd-slicer.js +188 -0
  1541. package/node_modules/yauzl/index.js +1096 -0
  1542. package/node_modules/yauzl/package.json +40 -0
  1543. package/node_modules/yazl/LICENSE +21 -0
  1544. package/node_modules/yazl/README.md +457 -0
  1545. package/node_modules/yazl/index.js +826 -0
  1546. package/node_modules/yazl/package.json +34 -0
  1547. package/package.json +163 -0
  1548. package/testkit-config-schema.md +718 -0
@@ -0,0 +1,93 @@
1
+ import type { Hash } from "crypto";
2
+ import type { NormalizedSourceSchemaConfig } from "../config/loader/index.js";
3
+ import { type RepoState } from "../repo/state.js";
4
+ import { type DatabaseTemplateServiceConfig, type DatabaseTemplateStepOptions } from "./template-steps.js";
5
+ import { type SourceSchemaDumpResolution } from "./source-url.js";
6
+ type UnknownRecord = Record<string, unknown>;
7
+ type SourceSchemaUnavailableMode = "fail" | "warn-cache";
8
+ type SourceSchemaTestkitConfig = DatabaseTemplateServiceConfig["testkit"] & {
9
+ fingerprints?: unknown;
10
+ };
11
+ export interface SourceSchemaCacheConfig {
12
+ name: string;
13
+ productDir: string;
14
+ testkit?: Pick<SourceSchemaTestkitConfig, "fingerprints">;
15
+ }
16
+ export interface SourceSchemaServiceConfig extends DatabaseTemplateServiceConfig {
17
+ testkit: SourceSchemaTestkitConfig;
18
+ }
19
+ export interface SourceSchemaCacheLocationOptions {
20
+ repoState?: RepoState | null;
21
+ }
22
+ export interface SourceSchemaCacheLocation {
23
+ cacheDir: string;
24
+ cacheKey: string;
25
+ cacheKind: string;
26
+ cachePath: string;
27
+ indexPath: string;
28
+ metadataPath: string;
29
+ repoState: RepoState;
30
+ rootDir: string;
31
+ }
32
+ type SourceSchemaOperationOptions = Pick<DatabaseTemplateStepOptions, "ownedContainer" | "parentOperation" | "reporter" | "setupRegistry">;
33
+ export interface SourceSchemaOptions extends SourceSchemaCacheLocationOptions, SourceSchemaOperationOptions {
34
+ env?: NodeJS.ProcessEnv | null;
35
+ signal?: AbortSignal;
36
+ skipSchemaSourceVerify?: boolean;
37
+ }
38
+ export interface InactiveSourceSchemaState {
39
+ active: false;
40
+ cachePath?: string;
41
+ }
42
+ export interface ActiveSourceSchemaState extends SourceSchemaCacheLocation {
43
+ active: true;
44
+ cacheExists: boolean;
45
+ ci: boolean;
46
+ envName: string | null;
47
+ refreshed: boolean;
48
+ refreshError?: unknown;
49
+ refreshInfo?: SourceSchemaRefreshInfo;
50
+ sourceSchema: NormalizedSourceSchemaConfig;
51
+ sourceUrl: string | null;
52
+ unavailableMode: SourceSchemaUnavailableMode;
53
+ }
54
+ export interface RefreshedSourceSchemaState extends ActiveSourceSchemaState {
55
+ cacheExists: true;
56
+ refreshed: true;
57
+ refreshInfo: SourceSchemaRefreshInfo;
58
+ }
59
+ export type SourceSchemaState = ActiveSourceSchemaState | InactiveSourceSchemaState;
60
+ interface SourceSchemaMetadata extends UnknownRecord {
61
+ refreshedAt: string;
62
+ sourceUrl?: SourceSchemaDumpResolution["metadata"];
63
+ }
64
+ export interface SourceSchemaRefreshInfo {
65
+ metadata: SourceSchemaMetadata;
66
+ reusedExistingRefresh: boolean;
67
+ waitedForLock: boolean;
68
+ }
69
+ export interface SourceSchemaMismatchDiagnostics {
70
+ diffPath: string;
71
+ localPath: string;
72
+ metaPath: string;
73
+ sourceCachePath: string;
74
+ sourcePath: string;
75
+ }
76
+ export type SourceSchemaVerification = {
77
+ status: "disabled" | "matched" | "skipped";
78
+ } | {
79
+ diagnostics: SourceSchemaMismatchDiagnostics;
80
+ status: "mismatch";
81
+ };
82
+ export declare function getSourceSchemaRootDir(config: Readonly<SourceSchemaCacheConfig>): string;
83
+ export declare function getSourceSchemaCachePath(config: Readonly<SourceSchemaCacheConfig>, options?: Readonly<SourceSchemaCacheLocationOptions>): Promise<string>;
84
+ export declare function resolveSourceSchemaCacheLocation(config: Readonly<SourceSchemaCacheConfig>, options?: Readonly<SourceSchemaCacheLocationOptions>): Promise<SourceSchemaCacheLocation>;
85
+ export declare function resolveSourceSchemaState(config: Readonly<SourceSchemaServiceConfig>, options?: Readonly<SourceSchemaOptions>): Promise<SourceSchemaState>;
86
+ export declare function prepareSourceSchemaCache(config: Readonly<SourceSchemaServiceConfig>, options?: Readonly<SourceSchemaOptions>): Promise<SourceSchemaState>;
87
+ export declare function forceRefreshSourceSchemaCache(config: Readonly<SourceSchemaServiceConfig>, previousState: Readonly<SourceSchemaState> | null, options?: Readonly<SourceSchemaOptions>): Promise<RefreshedSourceSchemaState>;
88
+ export declare function applySourceSchemaCache(config: Readonly<SourceSchemaServiceConfig>, databaseUrl: string, state: Readonly<SourceSchemaState> | null | undefined, options?: Readonly<SourceSchemaOptions>): Promise<boolean>;
89
+ export declare function verifyLocalSchemaMatchesSource(config: Readonly<SourceSchemaServiceConfig>, databaseUrl: string, state: Readonly<SourceSchemaState> | null | undefined, options?: Readonly<SourceSchemaOptions>): Promise<SourceSchemaVerification>;
90
+ export declare function createSourceSchemaMismatchError(config: Readonly<SourceSchemaServiceConfig>, state: Readonly<ActiveSourceSchemaState>, verification: Readonly<SourceSchemaVerification> | null | undefined): Error;
91
+ export declare function appendSourceSchemaCacheToHash(hash: Pick<Hash, "update">, config: Readonly<SourceSchemaServiceConfig>, state?: Readonly<SourceSchemaState> | null): Promise<void>;
92
+ export declare function buildUnifiedDiffText(leftText: unknown, rightText: unknown, leftLabel?: string, rightLabel?: string): string;
93
+ export {};
@@ -0,0 +1,3 @@
1
+ import o from"fs";import s from"path";import{createTwoFilesPatch as q}from"diff";import{collectRepoState as z,summarizeRepoStateForMetadata as x}from"../repo/state.js";import{buildExecutionEnv as J}from"../steps/index.js";import{dumpPostgresSchemaToFile as W,captureTemplateSnapshotText as V,resolvePgDumpClientImage as X,runTemplateStep as Z,sanitizeSnapshotText as G}from"./template-steps.js";import{getSourceSchemaRefreshLockPath as Q,withSourceSchemaRefreshLock as Y}from"./source-refresh-lock.js";import{resolveSourceSchemaDumpUrl as ee}from"./source-url.js";import{makeTempDir as re,removeTempDir as te}from"../process/files/temp-dir.js";import{requireContainedDatabaseStateDirectory as C,resolveContainedDatabaseStateDirectory as v}from"./state.js";const K="db",R="source-schemas",w="source-schema.sql",P="source-schema.meta.json",ce="index.json",U=20,p=String;export function getSourceSchemaRootDir(e){return v(e.productDir,K,e.name,R)}export async function getSourceSchemaCachePath(e,r={}){return(await resolveSourceSchemaCacheLocation(e,r)).cachePath}export async function resolveSourceSchemaCacheLocation(e,r={}){const t=r.repoState||await z(e.productDir,{fingerprints:e.testkit?.fingerprints}),a=getSourceSchemaRootDir(e),c=v(e.productDir,K,e.name,R,...t.cacheKey.split("/").map(D));return{rootDir:a,cacheDir:c,cachePath:s.join(c,w),metadataPath:s.join(c,P),indexPath:s.join(a,ce),cacheKey:t.cacheKey,cacheKind:t.kind,repoState:t}}export async function resolveSourceSchemaState(e,r={}){const t=e.testkit.database?.sourceSchema||null;if(!t)return{active:!1};const a=await resolveSourceSchemaCacheLocation(e,r),c=a.cachePath,n=o.existsSync(c);n&&A(c);const i=r.env||process.env,u=J(e,{},i),h=(t.kind==="env"?[t.env]:[I(e.name),"TESTKIT_SCHEMA_SOURCE_DATABASE_URL"]).find(B=>{const _=u[B];return typeof _=="string"&&_.trim().length>0})||null,S=h?u[h]:void 0,f=typeof S=="string"?S.trim():null;return t.kind==="env"||!!f||n?{active:!0,cachePath:c,metadataPath:a.metadataPath,indexPath:a.indexPath,rootDir:a.rootDir,cacheDir:a.cacheDir,cacheKey:a.cacheKey,cacheKind:a.cacheKind,repoState:a.repoState,envName:h,sourceUrl:f,sourceSchema:t,cacheExists:n,refreshed:!1,ci:u.CI==="true",unavailableMode:ve(t.unavailable,i)}:{active:!1,cachePath:c}}export async function prepareSourceSchemaCache(e,r={}){r.signal?.throwIfAborted();const t=await resolveSourceSchemaState(e,r);if(!t.active)return t;if(j(t)){if(he(t))try{const c=await M(e,t,r),n={...t,refreshed:!0,cacheExists:!0,refreshInfo:c};return y(e,n,{refreshed:!0}),n}catch(c){r.signal?.throwIfAborted();const n=ae(e,t,c,r);if(n)return n;throw c}return y(e,t),r.setupRegistry?.recordCached({config:e,stage:"source-schema",kind:"database-source-schema",summary:"source schema cache hit"}),t}if(t.cacheExists&&t.unavailableMode==="warn-cache")return y(e,t),r.setupRegistry?.recordCached({config:e,stage:"source-schema",kind:"database-source-schema",summary:"source unavailable; using cached source schema"}),t;const a=t.sourceSchema.kind==="env"?t.sourceSchema.env:`${I(e.name)} or TESTKIT_SCHEMA_SOURCE_DATABASE_URL`;throw new Error(`Source schema database URL is unavailable for service "${e.name}". Set ${a}.`)}function ae(e,r,t,a={}){if(r.unavailableMode!=="warn-cache")return null;const c=ne(e,r);if(!c)return null;const n={...r,...c,cacheExists:!0,refreshed:!1,refreshError:Pe(t)};return a.setupRegistry?.recordCached({config:e,stage:"source-schema",kind:"database-source-schema",summary:`source unavailable; using cached source schema: ${s.relative(e.productDir,c.cachePath)}`}),n}function ne(e,r){const t=k(e,r,{cachePath:r.cachePath,metadataPath:r.metadataPath,cacheKey:r.cacheKey,cacheKind:r.cacheKind});if(t)return t;const a=L(r.indexPath);a.sort((c,n)=>Date.parse(n.lastUsedAt||n.refreshedAt||"0")-Date.parse(c.lastUsedAt||c.refreshedAt||"0"));for(const c of a){if(!c.cachePath)continue;const n=s.resolve(e.productDir,c.cachePath),i=k(e,r,{cachePath:n,metadataPath:s.join(s.dirname(n),P),cacheKey:c.cacheKey,cacheKind:c.kind||"unknown"});if(i)return i}return null}function k(e,r,t){const a=s.resolve(t.cachePath);if(s.basename(a)!==w)return null;const c=C(e.productDir,s.dirname(a),`Service "${e.name}" source schema cache directory`),n=s.join(c,w),i=s.resolve(r.rootDir);if(n!==i&&!n.startsWith(`${i}${s.sep}`)||!o.existsSync(n))return null;const u=o.lstatSync(n);if(u.isSymbolicLink()||!u.isFile())throw new Error(`Refusing unsafe source schema cache file at ${n}`);return{cachePath:n,metadataPath:s.join(c,P),cacheDir:c,cacheKey:t.cacheKey,cacheKind:t.cacheKind,indexPath:r.indexPath,rootDir:r.rootDir}}export async function forceRefreshSourceSchemaCache(e,r,t={}){const a=await resolveSourceSchemaState(e,t);if(!a.active||!j(a)){const i=r?.active?r.envName:null,u=r?.active&&r.sourceSchema.kind==="env"?r.sourceSchema.env:null,m=i||u||"source schema env";throw new Error(`Cannot refresh source schema for service "${e.name}" because ${m} is unavailable.`)}const c=await M(e,a,t),n={...a,refreshed:!0,cacheExists:!0,refreshInfo:c};return y(e,n,{refreshed:!0}),n}export async function applySourceSchemaCache(e,r,t,a={}){if(!t?.active)return!1;if(!o.existsSync(t.cachePath))throw new Error(`Missing source schema cache for service "${e.name}": ${t.cachePath}`);const c={kind:"sql-file",path:s.relative(e.productDir,t.cachePath).split(s.sep).join("/"),cwd:null,inputs:[]};return await Z(e,"source-schema",c,0,r,a),!0}export async function verifyLocalSchemaMatchesSource(e,r,t,a={}){if(!t?.active)return{status:"disabled"};if(!t.sourceSchema.verify||a.skipSchemaSourceVerify)return a.setupRegistry?.recordCached({config:e,stage:"source-schema:verify",kind:"database-source-schema",summary:"source schema verification skipped"}),{status:"skipped"};fe(e);const c=ue(t.cachePath),n=await V(e,r,{ownedContainer:a.ownedContainer||null,reporter:a.reporter||null,signal:a.signal});return n===c?{status:"matched"}:{status:"mismatch",diagnostics:await pe(e,t,c,n)}}export function createSourceSchemaMismatchError(e,r,t){const a=[`Local schema replay does not match source schema for service "${e.name}".`,`Source cache: ${s.relative(e.productDir,r.cachePath)}`];return t?.status==="mismatch"&&a.push(`Diff: ${s.relative(e.productDir,t.diagnostics.diffPath)}`),new Error(a.join(`
2
+ `))}export async function appendSourceSchemaCacheToHash(e,r,t=null){if(!(r.testkit.database?.sourceSchema||null))return;const c=t?.cachePath||await getSourceSchemaCachePath(r),n=t?.active&&t.cacheKey?t.cacheKey:s.relative(getSourceSchemaRootDir(r),s.dirname(c));if(e.update(`source-schema-key:${n}`),e.update(`source-schema-cache:${s.relative(r.productDir,c)}`),!o.existsSync(c)){e.update(":missing");return}const i=o.statSync(c);e.update(`:${i.size.toString()}:${i.mtimeMs.toString()}`),e.update(o.readFileSync(c))}async function M(e,r,t={}){const a=t.setupRegistry,c=a?.start({config:e,stage:"source-schema:refresh",kind:"database-source-schema",summary:`source schema refresh: ${s.relative(e.productDir,r.cachePath)}`});try{const n=await Y(Q(r.cachePath),async({waited:u,requestedAt:m})=>{const h=oe(r,m);if(h)return{reusedExistingRefresh:!0,waitedForLock:u,metadata:h};const S=await se(e,r.sourceUrl,r.cachePath,{reporter:t.reporter||null,logRecord:c?._logRecord||null,env:t.env||process.env,signal:t.signal}),f=ie(e,r,S);return de(r.metadataPath,f),{reusedExistingRefresh:!1,waitedForLock:u,metadata:f}},{signal:t.signal}),i=c&&a?a.finish(c,{status:"passed",summary:`source schema refresh: ${s.relative(e.productDir,r.cachePath)}`}):null;return i&&t.reporter?.setupOperationFinished?.(i),n}catch(n){const i=c?a?.finish(c,{status:"failed",summary:`source schema refresh: ${s.relative(e.productDir,r.cachePath)}`,error:Ee(n)}):null;throw i&&t.reporter?.setupOperationFinished?.(i),n}}async function se(e,r,t,a={}){const c=ee(r);o.mkdirSync(s.dirname(t),{recursive:!0});const n=re(".source-schema-",{parentDir:s.dirname(t)}),i=s.join(n,s.basename(t));try{const u=await X(e,c.dumpUrl,{env:a.env||process.env,pgApplicationName:E(e.name),signal:a.signal});return await W(e,i,c.dumpUrl,{...a,image:u,pgApplicationName:E(e.name)}),o.renameSync(i,t),{resolution:c,pgDump:{args:["--schema-only","--no-owner","--no-privileges"],applicationName:E(e.name),image:u}}}finally{te(n)}}function ie(e,r,t){return{refreshedAt:new Date().toISOString(),serviceName:e.name,envName:r.envName,cacheKey:r.cacheKey,cacheKind:r.cacheKind,cachePath:s.relative(e.productDir,r.cachePath),repo:x(r.repoState),sourceUrl:t.resolution.metadata,pgDump:t.pgDump}}function oe(e,r){if(!o.existsSync(e.cachePath))return null;const t=b(e.metadataPath);if(!ge(t))return null;const a=Date.parse(t.refreshedAt);return!Number.isFinite(a)||a<r?null:t}function E(e){return`testkit:schema-source:${e.replace(/[^a-zA-Z0-9._:-]+/g,"-").slice(0,24)||"service"}`}function ue(e){return G(o.readFileSync(e,"utf8"))}function he(e){if(!e.cacheExists)return!0;if(e.sourceSchema.refresh.mode==="auto")return e.ci;if(e.sourceSchema.refresh.mode==="ttl"){const r=g(e.metadataPath),t=r?Date.parse(r):0;return!Number.isFinite(t)||t<=0?!0:Date.now()-t>=e.sourceSchema.refresh.ttlSeconds*1e3}return!0}function y(e,r,t={}){if(!r?.active)return;const a=new Date().toISOString(),c=L(r.indexPath).filter(u=>u.cacheKey!==r.cacheKey),n=g(r.metadataPath);c.push({cacheKey:r.cacheKey,kind:r.cacheKind,commitSha:r.repoState.commitSha||null,branch:r.repoState.branch||null,detached:r.repoState.detached,dirty:r.repoState.dirty,dirtyFingerprint:r.repoState.dirtyFingerprint||null,contentFingerprint:r.repoState.contentFingerprint||null,remoteUrl:r.repoState.remoteUrl||null,repository:r.repoState.repository,cachePath:s.relative(e.productDir,r.cachePath),refreshedAt:t.refreshed?a:n,lastUsedAt:a});const i=me(e,r,c);$(r.indexPath,{version:1,entries:i})}function me(e,r,t){if(t.length<=U)return t;const a=[...t].sort((n,i)=>Date.parse(i.lastUsedAt||"0")-Date.parse(n.lastUsedAt||"0")),c=new Set(a.slice(0,U).map(n=>n.cacheKey));c.add(r.cacheKey);for(const n of t){if(c.has(n.cacheKey))continue;const i=n.cachePath?s.join(e.productDir,n.cachePath):null,u=i?s.resolve(i):null,m=s.resolve(r.rootDir);if(!i||!u||u!==m&&!u.startsWith(`${m}${s.sep}`))continue;const h=C(e.productDir,s.dirname(i),`Service "${e.name}" pruned source schema cache directory`);o.rmSync(h,{recursive:!0,force:!0})}return t.filter(n=>c.has(n.cacheKey))}function de(e,r){F(e,r)}function $(e,r){F(e,r)}function F(e,r){o.mkdirSync(s.dirname(e),{recursive:!0}),A(e),o.writeFileSync(e,we(r))}function b(e){if(!e||!o.existsSync(e))return null;A(e);try{return JSON.parse(o.readFileSync(e,"utf8"))}catch{return null}}function N(e){return v(e.productDir,"results","schema")}function A(e){if(!o.existsSync(e))return;const r=o.lstatSync(e);if(r.isSymbolicLink()||!r.isFile())throw new Error(`Refusing unsafe source schema state file at ${e}`)}function le(e){return`${D(e.runtimeLabel||e.name)}__${D(e.name)}`}function fe(e){const r=N(e);if(!o.existsSync(r))return;const t=D(e.name);for(const a of o.readdirSync(r))Se(a,t)&&o.rmSync(s.join(r,a),{force:!0})}function Se(e,r){for(const t of["__source-schema.sql","__local-replay-schema.sql","__schema.diff","__schema.meta.json"])if(e.endsWith(t))return e.slice(0,-t.length).endsWith(`__${r}`);return!1}async function pe(e,r,t,a){const c=N(e);o.mkdirSync(c,{recursive:!0});const n=le(e),i=s.join(c,`${n}__source-schema.sql`),u=s.join(c,`${n}__local-replay-schema.sql`),m=s.join(c,`${n}__schema.diff`),h=s.join(c,`${n}__schema.meta.json`);return o.writeFileSync(i,t),o.writeFileSync(u,a),o.writeFileSync(m,await De(i,u)),$(h,ye(e,r)),{sourceCachePath:r.cachePath,sourcePath:i,localPath:u,diffPath:m,metaPath:h}}function ye(e,r){const t=g(r.metadataPath);return{version:1,createdAt:new Date().toISOString(),serviceName:e.name,runtimeLabel:e.runtimeLabel||e.name,sourceSchema:{envName:r.envName||null,cacheKey:r.cacheKey||null,cacheKind:r.cacheKind||null,cachePath:s.relative(e.productDir,r.cachePath),refreshedAt:t},repo:x(r.repoState)}}function De(e,r){return new Promise(t=>{t(buildUnifiedDiffText(o.readFileSync(e,"utf8"),o.readFileSync(r,"utf8"),e,r))})}export function buildUnifiedDiffText(e,r,t="source",a="target"){return e===r?"":q(t,a,p(e),p(r),"","",{context:3})}function ve(e,r){return e==="fail"||e==="warn-cache"?e:r.CI==="true"?"fail":"warn-cache"}function I(e){return`TESTKIT_${e.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}_SCHEMA_SOURCE_DATABASE_URL`}function D(e){return e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"schema"}function L(e){const r=b(e);return!l(r)||!Array.isArray(r.entries)?[]:r.entries.filter(be)}function g(e){const r=b(e);return l(r)&&typeof r.refreshedAt=="string"?r.refreshedAt:null}function we(e){return`${p(JSON.stringify(e,null,2))}
3
+ `}function Pe(e){const r=T(e,"message");return!!r?r:p(e)}function Ee(e){const r=T(e,"message");return!!r?r:e}function T(e,r){if(!(e===null||typeof e!="object"&&typeof e!="function"))return Reflect.get(e,r)}function j(e){return!!e.sourceUrl}function be(e){return!l(e)||typeof e.cacheKey!="string"||e.cacheKey.length===0?!1:d(e.branch)&&d(e.cachePath)&&d(e.commitSha)&&d(e.contentFingerprint)&&H(e.detached)&&H(e.dirty)&&d(e.dirtyFingerprint)&&d(e.kind)&&d(e.lastUsedAt)&&d(e.refreshedAt)&&d(e.remoteUrl)&&Ae(e.repository)}function Ae(e){return e==null||l(e)&&typeof e.host=="string"&&typeof e.owner=="string"&&typeof e.name=="string"}function ge(e){return l(e)&&typeof e.refreshedAt=="string"&&(e.sourceUrl===void 0||_e(e.sourceUrl))}function _e(e){return l(e)&&typeof e.originalHost=="string"&&O(e.originalClassification)&&typeof e.resolvedHost=="string"&&O(e.resolvedClassification)&&typeof e.rewritten=="boolean"}function O(e){return e==="neon-pooler"||e==="neon-direct"||e==="unsupported-pooler"||e==="unknown-direct"}function xe(e){return e===null||typeof e=="string"}function d(e){return e===void 0||xe(e)}function H(e){return e===void 0||typeof e=="boolean"}function l(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}
@@ -0,0 +1,8 @@
1
+ import { type ProcessLockOptions } from "../process/locks.js";
2
+ export interface SourceSchemaRefreshLockContext {
3
+ requestedAt: number;
4
+ waited: boolean;
5
+ }
6
+ export type SourceSchemaRefreshLockOptions = Pick<ProcessLockOptions, "retryIntervalMs" | "signal">;
7
+ export declare function withSourceSchemaRefreshLock<Result>(lockPath: string, task: (context: Readonly<SourceSchemaRefreshLockContext>) => Promise<Result> | Result, options?: Readonly<SourceSchemaRefreshLockOptions>): Promise<Result>;
8
+ export declare function getSourceSchemaRefreshLockPath(cachePath: string): string;
@@ -0,0 +1 @@
1
+ import a from"node:fs";import r from"node:path";import{tryWithProcessLock as m,withProcessLock as n}from"../process/locks.js";export async function withSourceSchemaRefreshLock(e,t,o={}){a.mkdirSync(r.dirname(e),{recursive:!0});const c=Date.now(),i=await m(e,()=>t({requestedAt:c,waited:!1}),o);return i.acquired?i.value:n(e,()=>t({requestedAt:c,waited:!0}),o)}export function getSourceSchemaRefreshLockPath(e){return r.join(r.dirname(e),"source-schema.refresh.lock")}
@@ -0,0 +1,22 @@
1
+ export type DatabaseHostKind = "neon-pooler" | "neon-direct" | "unsupported-pooler" | "unknown-direct";
2
+ export interface DatabaseHostClassification {
3
+ kind: DatabaseHostKind;
4
+ host: string;
5
+ }
6
+ export interface SourceSchemaDumpResolution {
7
+ originalUrl: string;
8
+ dumpUrl: string;
9
+ rewritten: boolean;
10
+ notice: string | null;
11
+ metadata: {
12
+ originalHost: string;
13
+ originalClassification: DatabaseHostKind;
14
+ resolvedHost: string;
15
+ resolvedClassification: DatabaseHostKind;
16
+ rewritten: boolean;
17
+ };
18
+ }
19
+ export declare function resolveSourceSchemaDumpUrl(databaseUrl: string): SourceSchemaDumpResolution;
20
+ export declare function classifyDatabaseHost(hostname: string): DatabaseHostClassification;
21
+ export declare function redactDatabaseUrl(databaseUrl: string): string;
22
+ export declare function assertPgDumpArgsAreSourceSafe(args: readonly string[]): void;
@@ -0,0 +1,2 @@
1
+ import{errorMessage as c}from"../kernel/error-serialization.js";const s=".neon.tech",a="-pooler.",l=/(^|[-.])(pgbouncer|pooler)([-.]|$)/i;export function resolveSourceSchemaDumpUrl(o){const e=d(o),r=classifyDatabaseHost(e.hostname);if(r.kind==="neon-pooler"){const n=new URL(e.url.href);return n.hostname=e.hostname.replace(a,"."),i({original:e,resolved:n,originalClassification:r,resolvedClassification:classifyDatabaseHost(n.hostname),rewritten:!0,notice:"Source schema URL uses Neon pooler; Testkit is using the direct endpoint for pg_dump."})}if(r.kind==="unsupported-pooler")throw new Error(["Refusing to run pg_dump through a pooled source database URL.",`Host: ${e.hostname}`,"Configure a direct source database URL."].join(`
2
+ `));return i({original:e,resolved:e.url,originalClassification:r,resolvedClassification:r,rewritten:!1,notice:null})}export function classifyDatabaseHost(o){const e=o.toLowerCase();return e.endsWith(s)&&e.includes(a)?{kind:"neon-pooler",host:e}:e.endsWith(s)?{kind:"neon-direct",host:e}:l.test(e)?{kind:"unsupported-pooler",host:e}:{kind:"unknown-direct",host:e}}export function redactDatabaseUrl(o){try{const e=new URL(o);return e.username&&(e.username="REDACTED"),e.password&&(e.password="REDACTED"),e.toString()}catch{return"[invalid database URL]"}}export function assertPgDumpArgsAreSourceSafe(o){for(let e=0;e<o.length;e+=1){const r=o[e];if(r==="-j"||r==="--jobs"||r.startsWith("--jobs="))throw new Error("Source schema pg_dump must not use parallel jobs.")}}function d(o){try{const e=new URL(o);if(!e.hostname)throw new Error("missing host");return{url:e,hostname:e.hostname.toLowerCase()}}catch(e){throw new Error(`Invalid source database URL: ${c(e)}`,{cause:e})}}function i({original:o,resolved:e,originalClassification:r,resolvedClassification:n,rewritten:t,notice:u}){return{originalUrl:o.url.href,dumpUrl:e.href,rewritten:t,notice:u,metadata:{originalHost:o.hostname,originalClassification:r.kind,resolvedHost:e.hostname.toLowerCase(),resolvedClassification:n.kind,rewritten:t}}}
@@ -0,0 +1,13 @@
1
+ import type { DatabaseConnection } from "./naming.js";
2
+ export interface LocalPostgresState extends DatabaseConnection {
3
+ containerId: string;
4
+ containerName: string;
5
+ containerPort: number;
6
+ image: string;
7
+ maxConnections: number;
8
+ volumeMountPath?: string | null;
9
+ volumeName?: string | null;
10
+ }
11
+ export declare function writeLocalInfraState(infraDir: string, infra: Readonly<LocalPostgresState>): void;
12
+ export declare function writeCacheState(cacheDir: string, infra: Readonly<LocalPostgresState>, templateDbName: string, fingerprint: string): void;
13
+ export declare function writeStateValue(filePath: string, value: unknown): void;
@@ -0,0 +1 @@
1
+ import m from"fs";import e from"path";import{buildProductIdentity as p}from"./docker.js";const s=String;export function writeLocalInfraState(o,t){const n=p(e.resolve(o,"..","..",".."));writeStateValue(e.join(o,"database_backend"),""),writeStateValue(e.join(o,"container_name"),t.containerName),writeStateValue(e.join(o,"container_id"),t.containerId),t.volumeName&&writeStateValue(e.join(o,"volume_name"),t.volumeName),t.volumeMountPath&&writeStateValue(e.join(o,"volume_mount_path"),t.volumeMountPath),writeStateValue(e.join(o,"ownership_product_id"),n.id),writeStateValue(e.join(o,"image"),t.image),writeStateValue(e.join(o,"user"),t.user),writeStateValue(e.join(o,"password"),t.password),writeStateValue(e.join(o,"max_connections"),String(t.maxConnections)),writeStateValue(e.join(o,"host"),t.host),writeStateValue(e.join(o,"port"),String(t.port))}export function writeCacheState(o,t,n,u){writeStateValue(e.join(o,"database_backend"),""),writeStateValue(e.join(o,"template_database_name"),n),writeStateValue(e.join(o,"template_fingerprint"),u),writeStateValue(e.join(o,"container_name"),t.containerName),t.volumeName&&writeStateValue(e.join(o,"volume_name"),t.volumeName),t.volumeMountPath&&writeStateValue(e.join(o,"volume_mount_path"),t.volumeMountPath)}export function writeStateValue(o,t){m.writeFileSync(o,s(t??""),{mode:384}),m.chmodSync(o,384)}
@@ -0,0 +1,26 @@
1
+ export type OwnedDatabaseStateKind = "cache" | "infra" | "legacy" | "runtime";
2
+ export interface OwnedDatabaseStateDir {
3
+ readonly dir: string;
4
+ readonly kind: OwnedDatabaseStateKind;
5
+ }
6
+ export interface DatabaseInfo {
7
+ database: string;
8
+ host: string;
9
+ password: string;
10
+ port: number;
11
+ ssl: boolean;
12
+ sslMode: string;
13
+ url: string;
14
+ user: string;
15
+ }
16
+ export declare function getLocalInfraDir(productDir: string): string;
17
+ export declare function getLocalLocksDir(productDir: string): string;
18
+ export declare function getLocalServiceCacheDir(productDir: string, serviceName: string): string;
19
+ export declare function listOwnedDatabaseStateDirs(productDir: string): OwnedDatabaseStateDir[];
20
+ export declare function hasRemainingLocalArtifacts(productDir: string): boolean;
21
+ export declare function readOwnedStateValues(productDir: string, fileNames: readonly string[]): Set<string>;
22
+ export declare function readStateValue(filePath: string): string | null;
23
+ export declare function readDatabaseUrl(stateDir: string): string | null;
24
+ export declare function readDatabaseInfo(stateDir: string): DatabaseInfo | null;
25
+ export declare function resolveContainedDatabaseStateDirectory(productDir: string, ...segments: readonly string[]): string;
26
+ export declare function requireContainedDatabaseStateDirectory(productDir: string, candidateDirectory: string, label?: string): string;
@@ -0,0 +1 @@
1
+ import u from"fs";import o from"path";import{requireContainedTestkitStateDirectory as D,resolveContainedTestkitStateDirectory as b}from"../process/runs/product-state.js";const y=new Set(["_bundles","_config","_dbcache","_graphs","_infra","_locks","_runs","_template-steps","_toolchains","_typecheck","engines","history","lint","results"]);export function getLocalInfraDir(e){return resolveContainedDatabaseStateDirectory(e,"_infra","local-postgres")}export function getLocalLocksDir(e){return resolveContainedDatabaseStateDirectory(e,"_locks","local-postgres")}export function getLocalServiceCacheDir(e,t){return resolveContainedDatabaseStateDirectory(e,"_dbcache",t)}export function listOwnedDatabaseStateDirs(e){const t=resolveContainedDatabaseStateDirectory(e),r=[],n=getLocalInfraDir(e);u.existsSync(n)&&r.push({dir:n,kind:"infra"});const l=o.join(t,"_dbcache");for(const a of f(l))r.push({dir:a,kind:"cache"});const s=o.join(t,"_graphs");for(const a of f(s))for(const c of f(o.join(a,"runtimes")))for(const m of f(o.join(c,"services")))r.push({dir:m,kind:"runtime"});for(const a of p(t)){if(y.has(a.name)||!a.isDirectory())continue;const c=o.join(t,a.name);d(o.join(c,"database_backend"))&&r.push({dir:c,kind:"legacy"})}return r}export function hasRemainingLocalArtifacts(e){return listOwnedDatabaseStateDirs(e).map(({dir:t,kind:r})=>{const n=d(o.join(t,"database_backend"));return r!=="infra"&&(r==="cache"||n)}).some(Boolean)}export function readOwnedStateValues(e,t){const r=new Set;for(const{dir:n}of listOwnedDatabaseStateDirs(e))for(const l of t){const s=readStateValue(o.join(n,l));s&&r.add(s)}return r}function f(e){return p(e).flatMap(t=>{const r=o.join(e,t.name);if(t.isSymbolicLink())throw i(r,"symlink");if(!t.isDirectory()&&!t.isFile())throw i(r,"special node");return t.isDirectory()?[r]:[]})}function p(e){const t=h(e);if(!t)return[];if(!t.isDirectory())throw i(e,"non-directory node");return u.readdirSync(e,{withFileTypes:!0}).sort((r,n)=>r.name.localeCompare(n.name))}function d(e){const t=h(e);if(t&&!t.isFile())throw i(e,"non-file node");return!!t}function h(e){const t=u.lstatSync(e,{throwIfNoEntry:!1});if(t?.isSymbolicLink())throw i(e,"symlink");return t}export function readStateValue(e){return d(e)?u.readFileSync(e,"utf8").trim():null}export function readDatabaseUrl(e){return readStateValue(o.join(e,"database_url"))}export function readDatabaseInfo(e){return S(readDatabaseUrl(e))}function S(e){if(!e)return null;try{const t=new URL(e),r=Number(t.port||"5432"),n=t.searchParams.get("sslmode")||"disable";return{url:e,host:t.hostname,port:Number.isInteger(r)&&r>0?r:5432,database:t.pathname.replace(/^\//,""),user:decodeURIComponent(t.username||""),password:decodeURIComponent(t.password||""),sslMode:n,ssl:n!=="disable"}}catch{return null}}export function resolveContainedDatabaseStateDirectory(e,...t){return b(e,...t)}export function requireContainedDatabaseStateDirectory(e,t,r="Testkit database state directory"){return D(e,t,r)}function i(e,t){return new Error(`Refusing unsafe Testkit database state ${t} at ${e}`)}
@@ -0,0 +1,16 @@
1
+ import type { OwnedPostgresContainerRoute } from "../domain/postgres-route.js";
2
+ export interface DatabaseStepContext {
3
+ args?: unknown;
4
+ cwd?: string;
5
+ databaseUrl?: string;
6
+ env?: Record<string, string | undefined>;
7
+ ownedContainer?: OwnedPostgresContainerRoute | null;
8
+ productDir?: string;
9
+ }
10
+ export declare function verifySeed(context?: DatabaseStepContext): Promise<void>;
11
+ export declare function verifyRows(context?: DatabaseStepContext): Promise<void>;
12
+ export declare function queryScalar(context?: DatabaseStepContext): Promise<string>;
13
+ export declare function runSql(context?: DatabaseStepContext): Promise<void>;
14
+ export declare function seedRows(context?: DatabaseStepContext): Promise<void>;
15
+ export declare function materializePostgresBinding(context?: DatabaseStepContext): Promise<void>;
16
+ export declare function updateRows(context?: DatabaseStepContext): Promise<void>;
@@ -0,0 +1,4 @@
1
+ import j from"node:fs";import U from"node:path";import{runDockerPsql as P}from"./postgres/index.js";const d=String;export async function verifySeed(r={}){const e=f(r),t=l(e.table,"verifySeed.args.table"),n=_(e.where),s=z(e.minRows??1,"verifySeed.args.minRows"),o=g(r),u=`select count(*)::int from ${t}${n?` where ${n}`:""}`,i=Number(await q(o,u,r));if(!Number.isInteger(i)||i<s)throw new Error(`Expected at least ${String(s)} row(s) in ${t}, found ${String(i||0)}`)}export async function verifyRows(r={}){const e=f(r),t=Array.isArray(e.checks)?e.checks:[e],n=g(r),s=[];for(const[o,u]of t.entries()){const i=`verifyRows.args.checks[${String(o)}]`,a=S(u)?u:{},m=l(a.table,`${i}.table`),w=_(a.where),c=z(a.minRows??1,`${i}.minRows`),$=a.severity==="warn"?"warn":"error",k=`select count(*)::int from ${m}${w?` where ${w}`:""}`,y=Number(await q(n,k,r));if(!Number.isInteger(y)||y<c){const N=`Expected at least ${String(c)} row(s) in ${m}, found ${String(y||0)}`;$==="warn"?J(r,{code:"database_verify_rows_min_rows",message:N,table:m,where:w||null,expectedMinRows:c,actualRows:Number.isInteger(y)?y:0}):s.push(N)}}if(s.length>0)throw new Error(`Database row verification failed:
2
+ ${s.map(o=>`- ${o}`).join(`
3
+ `)}`)}export async function queryScalar(r={}){const e=f(r),t=g(r),n=O(e.statement??e.query,"queryScalar.args.statement");return q(t,n,r)}export async function runSql(r={}){const e=f(r),t=L(e.statements??e.statement,"runSql.args.statements"),n=g(r);for(const s of t){const o=await b(n,s,r);o.stdout&&process.stdout.write(o.stdout),o.stderr&&process.stderr.write(o.stderr)}}export async function seedRows(r={}){const e=f(r),t=l(e.table,"seedRows.args.table"),n=D(e.rows,"seedRows.args.rows"),s=g(r);if(e.truncate===!0&&await b(s,`truncate table ${t}`,r),n.length===0)return;const o=I(e.columns,n),u=o.map(a=>l(a,`seedRows.args.columns.${a}`)),i=n.map(a=>`(${o.map(m=>E(a[m],r)).join(", ")})`);await b(s,`insert into ${t} (${u.join(", ")}) values ${i.join(", ")}`,r)}export async function materializePostgresBinding(r={}){const e=f(r),t=l(e.table,"materializePostgresBinding.args.table"),n=l(e.keyColumn||"slug","materializePostgresBinding.args.keyColumn"),s=T(e.key,"materializePostgresBinding.args.key"),o=R(e.values,"materializePostgresBinding.args.values"),u=g(r),i=Object.keys(o);if(i.length===0)throw new Error("materializePostgresBinding.args.values must contain at least one column");const a=i.map($=>`${l($,`materializePostgresBinding.args.values.${$}`)} = ${E(o[$],r)}`),m=`with updated as (update ${t} set ${a.join(", ")} where ${n} = ${h(s)} returning 1) select count(*)::int from updated`,w=await b(u,m,r,{scalar:!0}),c=Number((w.stdout||"").trim()||"0");if(c!==1)throw new Error(`Expected to materialize 1 ${t} row for ${n}=${String(s)}, updated ${String(c||0)}`)}export async function updateRows(r={}){const e=f(r),t=l(e.table,"updateRows.args.table"),n=B(e.where,"updateRows.args.where"),s=R(e.values??e.set,"updateRows.args.values"),o=g(r),u=e.expectRows==null?null:z(e.expectRows,"updateRows.args.expectRows"),i=Object.keys(s).map(c=>`${l(c,`updateRows.args.values.${c}`)} = ${E(s[c],r)}`);if(i.length===0)throw new Error("updateRows.args.values must contain at least one column");const a=`with updated as (update ${t} set ${i.join(", ")} where ${W(n,r)} returning 1) select count(*)::int from updated`,m=await b(o,a,r,{scalar:!0}),w=Number((m.stdout||"").trim()||"0");if(u!==null&&w!==u)throw new Error(`Expected to update ${String(u)} ${t} row(s), updated ${String(w||0)}`)}function f(r){return S(r.args)?r.args:{}}function g(r){const e=(r.databaseUrl||r.env?.DATABASE_URL||"").trim();if(!e)throw new Error("Database template step requires DATABASE_URL");return e}async function q(r,e,t){return((await b(r,e,t,{scalar:!0})).stdout||"").trim()}async function b(r,e,t,n={}){const s={args:[r,"-v","ON_ERROR_STOP=1","-X",...n.scalar?["-q","-t","-A"]:[],"-c",e],cwd:t.cwd||t.productDir||process.cwd(),env:t.env||process.env,databaseUrl:r,ownedContainer:t.ownedContainer||null},o=await P(s);if(o.exitCode!==0)throw new Error(o.stderr||`psql failed with exit code ${String(o.exitCode)}`);return o}function L(r,e){const t=Array.isArray(r)?r:r==null?[]:[r];if(t.length===0)throw new Error(`${e} must contain at least one SQL statement`);return t.map((n,s)=>O(n,`${e}[${String(s)}]`))}function O(r,e){const t=d(r||"").trim();if(!t||/;\s*\S/.test(t))throw new Error(`${e} must be one SQL statement`);return t}function D(r,e){if(!Array.isArray(r))throw new Error(`${e} must be an array`);return r.map((n,s)=>R(n,`${e}[${String(s)}]`))}function I(r,e){if(r!=null){if(!Array.isArray(r)||r.length===0)throw new Error("seedRows.args.columns must be a non-empty array");return r.map(n=>String(n))}return[...new Set(e.flatMap(t=>Object.keys(t)))].sort((t,n)=>t.localeCompare(n))}function B(r,e){const t=R(r,e);if(Object.keys(t).length===0)throw new Error(`${e} must contain at least one column`);return t}function W(r,e){return Object.entries(r).map(([t,n])=>`${l(t,`where.${t}`)} = ${E(n,e)}`).join(" and ")}function l(r,e){const t=d(r||"").trim();if(!/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(t))throw new Error(`${e} must be a SQL identifier or schema-qualified identifier`);return t}function _(r){if(r==null||r==="")return"";const e=d(r).trim();if(!e||/;|--|\/\*/.test(e))throw new Error("verifySeed.args.where must be a single SQL predicate without comments or semicolons");return e}function z(r,e){const t=Number(r);if(!Number.isInteger(t)||t<0)throw new Error(`${e} must be a non-negative integer`);return t}function R(r,e){if(!S(r))throw new Error(`${e} must be an object`);return r}function T(r,e){if(r==null||d(r).length===0)throw new Error(`${e} is required`);return r}function h(r){return r===null?"null":typeof r=="number"&&Number.isFinite(r)?String(r):typeof r=="boolean"?r?"true":"false":`'${d(r).replaceAll("'","''")}'`}function E(r,e){if(!v(r))return h(r);switch(r.kind){case"now":return"now()";case"env":return h(p(e.env||process.env,r.name));case"json":return`${h(JSON.stringify(A(r.value,e)))}::jsonb`;case"postgres-connection-from-env":return`${h(JSON.stringify(C(e.env||process.env,r.prefix)))}::jsonb`;default:throw new Error(`Unsupported database value descriptor "${r.kind}"`)}}function v(r){return S(r)&&typeof r.kind=="string"}function A(r,e){if(Array.isArray(r))return r.map(n=>A(n,e));if(!S(r))return r;if(v(r)){if(r.kind==="env")return p(e.env||process.env,r.name);if(r.kind==="postgres-connection-from-env")return C(e.env||process.env,r.prefix)}return Object.fromEntries(Object.entries(r).map(([t,n])=>[t,A(n,e)]))}function C(r,e){const t=d(e||"").trim();if(!t)throw new Error("postgresConnectionFromEnv requires a non-empty prefix");return{host:p(r,`${t}_HOST`),port:F(r,`${t}_PORT`),database:p(r,`${t}_NAME`),username:p(r,`${t}_USER`),password:p(r,`${t}_PASSWORD`),ssl:Q(r[`${t}_SSL`])}}function p(r,e){const t=String(e),n=r?.[t];if(n==null||n.trim().length===0)throw new Error(`${t} environment variable is required`);return n.trim()}function F(r,e){const t=Number.parseInt(p(r,e),10);if(!Number.isInteger(t)||t<=0)throw new Error(`${e} must be a positive integer`);return t}function Q(r){return r?["1","true","yes","on"].includes(r.trim().toLowerCase()):!1}function J(r,e){const t={severity:"warn",source:"database.verifyRows",serviceName:r.serviceName||null,runtimeId:r.runtimeId||null,timestamp:new Date().toISOString(),...e};typeof r.recordWarning=="function"&&r.recordWarning(t);const n=r.warningFile;n&&(j.mkdirSync(U.dirname(n),{recursive:!0}),j.appendFileSync(n,JSON.stringify(t)+`
4
+ `)),Z(r)&&console.warn(t.message)}function Z(r){const e=r.emitWarningsToStderr;return e==null?!0:!["0","false","no","off"].includes(d(e).trim().toLowerCase())}function S(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}
@@ -0,0 +1,35 @@
1
+ import type { NormalizedDatabaseConfig, NormalizedDatabaseTemplateConfig } from "../config/loader/index.js";
2
+ import { type ConfiguredStepReporter, type ConfiguredStepServiceConfig, type ExecutionEnvironmentConfig, type ExecutionEnvironmentTestkitConfig } from "../steps/index.js";
3
+ import { type RunConfiguredStepsOptions } from "./configured-steps.js";
4
+ import { type StepLogRecord } from "../evidence/setup-progress.js";
5
+ import type { NormalizedConfiguredStep } from "../steps/configured-steps.js";
6
+ import type { OwnedPostgresContainerRoute } from "../domain/postgres-route.js";
7
+ export type DatabaseTemplateStageName = "migrate" | "seed" | "verify";
8
+ type DatabaseTemplateTestkitConfig = ExecutionEnvironmentTestkitConfig & ConfiguredStepServiceConfig["testkit"] & {
9
+ database?: Partial<Pick<NormalizedDatabaseConfig, "sourceSchema" | "template">> | null;
10
+ };
11
+ export interface DatabaseTemplateServiceConfig extends ExecutionEnvironmentConfig, ConfiguredStepServiceConfig {
12
+ runtimeLabel?: string | null;
13
+ testkit: DatabaseTemplateTestkitConfig;
14
+ }
15
+ export type DatabaseTemplateStepOptions = Pick<RunConfiguredStepsOptions, "afterStep" | "ownedContainer" | "parentOperation" | "reporter" | "setupRegistry" | "signal" | "stepTimeoutMs">;
16
+ export interface PostgresDumpOptions {
17
+ env?: NodeJS.ProcessEnv | null;
18
+ image?: string | null;
19
+ logRecord?: StepLogRecord | null;
20
+ ownedContainer?: OwnedPostgresContainerRoute | null;
21
+ pgApplicationName?: string | null;
22
+ reporter?: ConfiguredStepReporter | null;
23
+ signal?: AbortSignal;
24
+ }
25
+ export declare function runTemplateStage(config: Readonly<DatabaseTemplateServiceConfig>, stageName: DatabaseTemplateStageName, databaseUrl: string, options?: Readonly<DatabaseTemplateStepOptions>): Promise<void>;
26
+ export declare function runTemplateStep(config: Readonly<DatabaseTemplateServiceConfig>, stageName: string, step: Readonly<NormalizedConfiguredStep>, stepIndex: number, databaseUrl: string, options?: Readonly<DatabaseTemplateStepOptions>): Promise<void>;
27
+ export declare function collectTemplateInputs(productDir: string, template?: Partial<Readonly<NormalizedDatabaseTemplateConfig>>): string[];
28
+ export declare function captureTemplateSnapshotText(config: Readonly<DatabaseTemplateServiceConfig>, databaseUrl: string, options?: Readonly<PostgresDumpOptions>): Promise<string>;
29
+ export declare function dumpPostgresSchemaToFile(config: Readonly<DatabaseTemplateServiceConfig>, outputPath: string, databaseUrl: string, options?: Readonly<PostgresDumpOptions>): Promise<void>;
30
+ export declare function pgDumpArgs(): string[];
31
+ export declare function resolvePgDumpClientImage(config: Readonly<DatabaseTemplateServiceConfig>, databaseUrl: string, options?: Readonly<PostgresDumpOptions>): Promise<string>;
32
+ export declare function postgresClientImageForServerVersion(serverVersionNum: unknown): string;
33
+ export declare function sanitizeSnapshotFile(filePath: string): void;
34
+ export declare function sanitizeSnapshotText(dump: unknown): string;
35
+ export {};
@@ -0,0 +1,4 @@
1
+ import a from"fs";import h from"path";import{buildTemplateExecutionEnv as m,collectConfiguredInputs as P}from"../steps/index.js";import{runConfiguredSteps as w}from"./configured-steps.js";import"../evidence/setup-progress.js";import{makeTempDir as T,removeTempDir as A}from"../process/files/temp-dir.js";import{captureOutput as E}from"../process/index.js";import{assertPgDumpArgsAreSourceSafe as D}from"./source-url.js";import{runDockerPsql as v,startDockerPgDump as x}from"./postgres/index.js";const p=String,y=["migrate","seed","verify"];export function runTemplateStage(e,r,t,n={}){const o=e.testkit.database?.template?.[r]||[];return l(e,r,o,0,t,n)}export function runTemplateStep(e,r,t,n,o,i={}){return l(e,r,[t],n,o,i)}async function l(e,r,t,n,o,i){await w({...i,config:e,steps:t,env:{...m(e,{},process.env),DATABASE_URL:o},labelPrefix:`template:${r}`,startIndex:n})}export function collectTemplateInputs(e,r={}){const t=y.flatMap(n=>r[n]||[]);return P(e,{inputs:r.inputs||[],steps:t})}export async function captureTemplateSnapshotText(e,r,t={}){const n=T("testkit-schema-snapshot-"),o=h.join(n,"schema.sql");try{const i=t.image||await resolvePgDumpClientImage(e,r,t);return await dumpPostgresSchemaToFile(e,o,r,{...t,image:i}),a.readFileSync(o,"utf8")}finally{A(n)}}export async function dumpPostgresSchemaToFile(e,r,t,n={}){const o={...m(e,{},n.env||process.env),...f(t,{applicationName:n.pgApplicationName})},i=pgDumpArgs();D(i);const s=await b(e,i,o,n);if(s.exitCode!==0)throw new Error(s.shortMessage||s.stderr||s.stdout||"pg_dump failed");a.writeFileSync(r,s.stdout),sanitizeSnapshotFile(r)}export function pgDumpArgs(){return["--schema-only","--no-owner","--no-privileges"]}function d(e){return{host:e.PGHOST,port:e.PGPORT||5432,database:e.PGDATABASE,user:e.PGUSER,password:e.PGPASSWORD,sslMode:e.PGSSLMODE}}async function b(e,r,t,n={}){const o=x({args:r,cwd:e.productDir,env:t,image:n.image||null,ownedContainer:n.ownedContainer||null,signal:n.signal,connection:d(t)}),i=n.reporter,s=i?.outputMode==="debug"?c=>i.writeDebugLine?.(c):null,u=n.logRecord||null,g=[E(o.stderr,{livePrefix:`[${e.runtimeLabel||e.name}:${e.name}]`,liveWriter:s,onLine(c){u&&u.write(`${new Date().toISOString()} [stderr] ${c}
2
+ `)}})],S=await o;return await Promise.all(g),S}export async function resolvePgDumpClientImage(e,r,t={}){const n=t.env||process.env,o=C(n);if(o)return o;const i={...n,...f(r,{applicationName:t.pgApplicationName})},s=await v({args:["-tAc","SHOW server_version_num"],cwd:e.productDir,env:i,ownedContainer:t.ownedContainer||null,signal:t.signal,connection:d(i)});if(s.exitCode!==0)throw new Error(s.shortMessage||s.stderr||s.stdout||"Failed to detect source Postgres version");return postgresClientImageForServerVersion(s.stdout)}export function postgresClientImageForServerVersion(e){const r=Number(p(_(e,"")).trim());if(!Number.isFinite(r)||r<1e5)throw new Error(`Unable to determine Postgres major version from server_version_num: ${JSON.stringify(e)}`);return`postgres:${String(Math.floor(r/1e4))}`}function C(e){return e.TESTKIT_POSTGRES_CLIENT_IMAGE||null}function f(e,r={}){const t=new URL(e);return G({PGHOST:t.hostname,PGPORT:t.port||"5432",PGDATABASE:decodeURIComponent(t.pathname.replace(/^\//,"")),PGUSER:decodeURIComponent(t.username||""),PGPASSWORD:decodeURIComponent(t.password||""),PGSSLMODE:t.searchParams.get("sslmode")||void 0,PGAPPNAME:r.applicationName||void 0})}function G(e){const r={};for(const[t,n]of Object.entries(e))n!=null&&n!==""&&(r[t]=n);return r}export function sanitizeSnapshotFile(e){const r=a.readFileSync(e,"utf8"),t=sanitizeSnapshotText(r);t!==r&&a.writeFileSync(e,t)}export function sanitizeSnapshotText(e){return O(p(e).split(`
3
+ `)).filter(r=>{const t=r.trim();return!t.startsWith("-- Dumped from database version ")&&!t.startsWith("-- Dumped by pg_dump version ")&&t!=="SET transaction_timeout = 0;"&&!t.startsWith("\\restrict ")&&!t.startsWith("\\unrestrict ")}).join(`
4
+ `)}function O(e){const r=[];for(let t=0;t<e.length;t+=1){if(e[t]?.trim()==="--"&&e[t+1]?.startsWith("-- Name: public; Type: SCHEMA;")){let n=t+1;for(;n<e.length&&!e[n]?.includes("*not* creating schema");)n+=1;if(n<e.length){for(;n+1<e.length&&e[n+1]?.trim()==="";)n+=1;t=n;continue}}r.push(e[t])}return r}function _(e,r){return!!e?e:r}
@@ -0,0 +1,28 @@
1
+ export declare const DEFAULT_FILE_TIMEOUT_SECONDS = 60;
2
+ export declare const FILE_TIMEOUT_INTERVAL_SECONDS = 0.25;
3
+ export declare const FILE_TIMEOUT_COOPERATIVE_ERROR_RESERVE_MAX_MS = 2000;
4
+ export declare const FILE_TIMEOUT_COOPERATIVE_ERROR_RESERVE_MIN_MS = 250;
5
+ export declare const FILE_TIMEOUT_COOPERATIVE_ERROR_RESERVE_RATIO = 0.2;
6
+ export declare const FILE_TIMEOUT_SUBPROCESS_EXIT_GRACE_MS = 1000;
7
+ export declare const INTERNAL_FILE_TIMEOUT_SECONDS_ENV = "TESTKIT_INTERNAL_FILE_TIMEOUT_SECONDS";
8
+ export declare const INTERNAL_FILE_DEADLINE_MS_ENV = "TESTKIT_INTERNAL_FILE_DEADLINE_MS";
9
+ export interface FileTimeoutBudget {
10
+ deadlineMs: number;
11
+ fileTimeoutSeconds: number;
12
+ }
13
+ export interface FileTimeoutEnv {
14
+ [INTERNAL_FILE_DEADLINE_MS_ENV]: string;
15
+ [INTERNAL_FILE_TIMEOUT_SECONDS_ENV]: string;
16
+ }
17
+ export declare function parseFileTimeoutOption(value: unknown): number;
18
+ export declare function normalizeFileTimeoutSeconds(value: unknown, label?: string): number;
19
+ export declare function normalizeWaitIntervalSeconds(value?: unknown): number;
20
+ export declare function buildFileTimeoutEnv(fileTimeoutSeconds: number, startedAtMs: number): FileTimeoutEnv;
21
+ export declare function readFileTimeoutBudget(env: unknown): FileTimeoutBudget;
22
+ export declare function remainingFileTimeoutMs(budget: FileTimeoutBudget, nowMs?: number): number;
23
+ export declare function remainingFileTimeoutSeconds(budget: FileTimeoutBudget, nowMs?: number): number;
24
+ export declare function remainingCooperativeFileTimeoutMs(budget: FileTimeoutBudget, nowMs?: number): number;
25
+ export declare function cooperativeFileTimeoutErrorReserveMs(fileTimeoutSeconds: number): number;
26
+ export declare function subprocessFileTimeoutMs(fileTimeoutSeconds: number): number;
27
+ export declare function formatWaitForTimeoutError(description: unknown, fileTimeoutSeconds: number): string;
28
+ export declare function formatFileTimeoutBudgetError(fileTimeoutSeconds: number): string;
@@ -0,0 +1 @@
1
+ export const DEFAULT_FILE_TIMEOUT_SECONDS=60,FILE_TIMEOUT_INTERVAL_SECONDS=.25,FILE_TIMEOUT_COOPERATIVE_ERROR_RESERVE_MAX_MS=2e3,FILE_TIMEOUT_COOPERATIVE_ERROR_RESERVE_MIN_MS=250,FILE_TIMEOUT_COOPERATIVE_ERROR_RESERVE_RATIO=.2,FILE_TIMEOUT_SUBPROCESS_EXIT_GRACE_MS=1e3,INTERNAL_FILE_TIMEOUT_SECONDS_ENV="TESTKIT_INTERNAL_FILE_TIMEOUT_SECONDS",INTERNAL_FILE_DEADLINE_MS_ENV="TESTKIT_INTERNAL_FILE_DEADLINE_MS";export function parseFileTimeoutOption(e){return i(e,"--file-timeout-seconds")}export function normalizeFileTimeoutSeconds(e,t="execution.fileTimeoutSeconds"){return o(e,t)}export function normalizeWaitIntervalSeconds(e){if(e==null)return .25;const t=Number(e);if(!Number.isFinite(t)||t<=0)throw new Error("waitFor intervalSeconds must be a positive number.");return t}export function buildFileTimeoutEnv(e,t){return{[INTERNAL_FILE_TIMEOUT_SECONDS_ENV]:String(e),[INTERNAL_FILE_DEADLINE_MS_ENV]:String(t+e*1e3)}}export function readFileTimeoutBudget(e){if(!E(e))throw new Error("Runtime file timeout budget is missing.");return{fileTimeoutSeconds:normalizeFileTimeoutSeconds(e[INTERNAL_FILE_TIMEOUT_SECONDS_ENV],INTERNAL_FILE_TIMEOUT_SECONDS_ENV),deadlineMs:n(e[INTERNAL_FILE_DEADLINE_MS_ENV],INTERNAL_FILE_DEADLINE_MS_ENV)}}export function remainingFileTimeoutMs(e,t=Date.now()){return Math.max(0,e.deadlineMs-t)}export function remainingFileTimeoutSeconds(e,t=Date.now()){return remainingFileTimeoutMs(e,t)/1e3}export function remainingCooperativeFileTimeoutMs(e,t=Date.now()){return Math.max(0,remainingFileTimeoutMs(e,t)-cooperativeFileTimeoutErrorReserveMs(e.fileTimeoutSeconds))}export function cooperativeFileTimeoutErrorReserveMs(e){return Math.min(2e3,Math.max(250,Math.floor(e*1e3*.2)))}export function subprocessFileTimeoutMs(e){return e*1e3+cooperativeFileTimeoutErrorReserveMs(e)+1e3}export function formatWaitForTimeoutError(e,t){return`Timed out waiting for ${String(e||"condition").trim()||"condition"} before the ${String(t)}s test file timeout`}export function formatFileTimeoutBudgetError(e){return`Test file exceeded the ${String(e)}s wall-clock timeout`}function i(e,t){const r=Number.parseInt(String(e),10);if(!Number.isInteger(r)||r<=0)throw new Error(`Invalid ${t} value "${String(e)}". Expected a positive integer.`);return r}function o(e,t){const r=Number(e);if(!Number.isInteger(r)||r<=0)throw new Error(`${t} must be a positive integer.`);return r}function n(e,t){const r=Number(e);if(!Number.isInteger(r)||r<=0)throw new Error(`${t} must be a positive integer timestamp.`);return r}function E(e){return e!==null&&typeof e=="object"}
@@ -0,0 +1,9 @@
1
+ export declare const ENGINE_IDS: readonly ["k6", "node-vitest", "playwright"];
2
+ export type EngineId = (typeof ENGINE_IDS)[number];
3
+ export declare const PUBLIC_TEST_TYPES: readonly ["ui", "e2e", "int", "contract", "data", "dal", "load"];
4
+ export type PublicTestType = (typeof PUBLIC_TEST_TYPES)[number];
5
+ export declare const RUNNER_PROFILE_IDS: readonly ["k6-http", "k6-dal", "node-vitest-data", "node-vitest-contract", "playwright-ui"];
6
+ export type RunnerProfileId = (typeof RUNNER_PROFILE_IDS)[number];
7
+ export declare function isEngineId(value: unknown): value is EngineId;
8
+ export declare function isPublicTestType(value: unknown): value is PublicTestType;
9
+ export declare function isRunnerProfileId(value: unknown): value is RunnerProfileId;
@@ -0,0 +1 @@
1
+ export const ENGINE_IDS=Object.freeze(["k6","node-vitest","playwright"]),PUBLIC_TEST_TYPES=Object.freeze(["ui","e2e","int","contract","data","dal","load"]),RUNNER_PROFILE_IDS=Object.freeze(["k6-http","k6-dal","node-vitest-data","node-vitest-contract","playwright-ui"]);const e=new Set(ENGINE_IDS),n=new Set(PUBLIC_TEST_TYPES),o=new Set(RUNNER_PROFILE_IDS);export function isEngineId(t){return typeof t=="string"&&e.has(t)}export function isPublicTestType(t){return typeof t=="string"&&n.has(t)}export function isRunnerProfileId(t){return typeof t=="string"&&o.has(t)}
@@ -0,0 +1,10 @@
1
+ export type OperationStatusKind = "failed" | "passed" | "running" | "skipped" | "unknown";
2
+ export interface OperationStatusLabelOptions {
3
+ runningLabel?: string;
4
+ }
5
+ export declare function normalizeOperationStatus(status: unknown): string;
6
+ export declare function operationStatusKind(status: unknown): OperationStatusKind;
7
+ export declare function operationStatusLabel(status: unknown, { runningLabel }?: Readonly<OperationStatusLabelOptions>): string;
8
+ export declare function isNeutralOperationStatus(status: unknown): boolean;
9
+ export declare function isSuccessfulOperationStatus(status: unknown): boolean;
10
+ export declare function formatOperationSummary(operation?: unknown): string;
@@ -0,0 +1 @@
1
+ import{redactSensitiveText as i}from"../kernel/redaction.js";const g=new Set(["passed","succeeded","success","ready","cached"]),h=new Set(["running","pending","queued","starting","applying","cancelling"]),y=new Set(["skipped","skip","noop","no-op","not_applicable","not-applicable","cancelled","canceled","interrupted"]),A=new Set(["failed","error"]);export function normalizeOperationStatus(n){return S(n||"unknown").trim().toLowerCase().replaceAll(" ","_")}export function operationStatusKind(n){const e=normalizeOperationStatus(n);return g.has(e)?"passed":h.has(e)?"running":y.has(e)?"skipped":A.has(e)?"failed":"unknown"}export function operationStatusLabel(n,{runningLabel:e="RUN"}={}){const t=operationStatusKind(n);return t==="passed"?"PASS":t==="running"?e:t==="skipped"?"SKIP":"FAIL"}export function isNeutralOperationStatus(n){return operationStatusKind(n)==="skipped"}export function isSuccessfulOperationStatus(n){return operationStatusKind(n)==="passed"}export function formatOperationSummary(n={}){const e=l(n),t=l(e.metadata),r=[];e.message?r.push(i(e.message)):e.summary?r.push(i(e.summary)):e.error&&r.push(i(e.error));const a=o(t.phase||e.phase),c=o(t.action||e.action),s=o(t.resource||e.resource),u=o(t.decision),p=o(t.reason),f=k(e.logRefs);if(!r.length&&(a||c||s)){const m=[a,c].filter(Boolean).join(".");r.push(m+(s?` ${s}`:""))}return u&&r.push(`decision=${i(u)}`),p&&r.push(`reason=${i(p)}`),f&&r.push(`log=${f}`),r.filter(Boolean).join(" \xB7 ")}function k(n=[]){if(!Array.isArray(n))return"";const e=n.find(d);if(!e)return"";const t=o(e.service||e.serviceName),r=o(e.category||e.kind),a=o(e.step||e.name),c=o(e.state),s=[t,[r,a].filter(Boolean).join("."),c].filter(Boolean).join(" ");return s?i(s):""}function l(n){return d(n)?n:{}}function d(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function o(n){return n?S(n):""}const S=String;
@@ -0,0 +1,5 @@
1
+ export declare const MAX_OPERATION_REASON_LENGTH = 240;
2
+ export interface OperationReasonOptions {
3
+ maxLength?: number;
4
+ }
5
+ export declare function normalizeOperationReason(value: unknown, fallback?: unknown, options?: OperationReasonOptions): string;
@@ -0,0 +1 @@
1
+ import{redactSensitiveText as i}from"../kernel/redaction.js";export const MAX_OPERATION_REASON_LENGTH=240;export function normalizeOperationReason(r,n="requested",e={}){return o(r,e)||o(n,e)||"requested"}function o(r,n={}){const e=Math.floor(n.maxLength??MAX_OPERATION_REASON_LENGTH),t=i(r).replace(/\s+/g," ").trim();return t?t.length<=e?t:e<=3?t.slice(0,e):`${t.slice(0,e-3)}...`:""}
@@ -0,0 +1,4 @@
1
+ export interface OwnedPostgresContainerRoute {
2
+ containerId: string;
3
+ containerPort?: number | null;
4
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export declare function buildRuntimeIds(count: number): string[];
@@ -0,0 +1 @@
1
+ export function buildRuntimeIds(n){return Array.from({length:n},(t,r)=>`runtime-${String(r+1)}`)}
@@ -0,0 +1,5 @@
1
+ export declare const DEFAULT_RUNTIME_ISOLATION_POLICY: "shared";
2
+ export declare const RUNTIME_ISOLATION_POLICIES: readonly ["shared", "resetBefore", "resetAfter", "exclusive"];
3
+ export type RuntimeIsolationPolicy = (typeof RUNTIME_ISOLATION_POLICIES)[number];
4
+ export declare function isRuntimeIsolationPolicy(value: unknown): value is RuntimeIsolationPolicy;
5
+ export declare function normalizeRuntimeIsolationPolicy(value: unknown, label: string): RuntimeIsolationPolicy;
@@ -0,0 +1 @@
1
+ export const DEFAULT_RUNTIME_ISOLATION_POLICY="shared",RUNTIME_ISOLATION_POLICIES=Object.freeze(["shared","resetBefore","resetAfter","exclusive"]);const r=new Set(RUNTIME_ISOLATION_POLICIES);export function isRuntimeIsolationPolicy(e){return typeof e=="string"&&r.has(e)}export function normalizeRuntimeIsolationPolicy(e,t){if(isRuntimeIsolationPolicy(e))return e;throw new Error(`${t} must be one of ${RUNTIME_ISOLATION_POLICIES.map(o=>JSON.stringify(o)).join(", ")}`)}
@@ -0,0 +1,2 @@
1
+ export declare function requireServiceName(value: unknown, label?: string): string;
2
+ export declare function assertPortableServiceNameSet(serviceNames: readonly string[]): void;
@@ -0,0 +1 @@
1
+ const E=128,o=/^[A-Za-z0-9][A-Za-z0-9._-]*$/u,i=/^(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(?:\.|$)/iu;export function requireServiceName(e,t="Testkit service name"){if(typeof e=="string"&&e.length<=128&&o.test(e)&&!e.endsWith(".")&&!i.test(e))return e;throw new Error(`${t} must be 1-128 characters using only ASCII letters, digits, dot, underscore, or hyphen, must start with a letter or digit, must not end with a dot, and must not use a reserved Windows device name`)}export function assertPortableServiceNameSet(e){const t=new Map;for(const s of e){const r=s.toLowerCase(),n=t.get(r);if(n!==void 0&&n!==s)throw new Error(`Service names "${n}" and "${s}" collide on case-insensitive filesystems`);t.set(r,s)}}
@@ -0,0 +1,20 @@
1
+ import { type PublicTestType } from "./identifiers.js";
2
+ export interface PlainSuiteSelector {
3
+ kind: "plain";
4
+ name: string;
5
+ raw: string;
6
+ }
7
+ export interface TypedSuiteSelector {
8
+ kind: "typed";
9
+ name: string;
10
+ raw: string;
11
+ testType: PublicTestType;
12
+ }
13
+ export type SuiteSelector = PlainSuiteSelector | TypedSuiteSelector;
14
+ export declare function normalizeTypeValues(values?: readonly unknown[]): string[];
15
+ export declare function isAllTypeSelection(typeValues?: readonly string[]): boolean;
16
+ export declare function parseSuiteSelectors(values?: readonly unknown[]): SuiteSelector[];
17
+ export declare function matchesSelectedTypes(selectionType: string, typeValues: readonly string[]): boolean;
18
+ export declare function matchesSuiteSelectors(selectionType: null | string | undefined, suiteName: string, selectors?: null | readonly SuiteSelector[]): boolean;
19
+ export declare function parseTypeOption(values: unknown, positionalType?: null | string): string[];
20
+ export declare function parseSuiteOption(values: unknown): SuiteSelector[];
@@ -0,0 +1 @@
1
+ import{RUN_TYPE_ORDER as s,RUN_TYPES as a,isPublicTestType as d,publicTestTypeListText as f}from"./test-types.js";import"./identifiers.js";const l=String;export function normalizeTypeValues(t=[]){const n=[];for(const r of t)if(r!=null)for(const o of l(r).split(",")){const i=o.trim();if(!i)continue;const c=i;if(!a.has(c))throw new Error(`Unknown type "${i}". Expected one of: ${f({includeAll:!0})}.`);n.push(c)}if(n.length===0)return["all"];const e=[...new Set(n)];if(e.includes("all")&&e.length>1)throw new Error('"--type all" cannot be combined with other types.');return e.sort((r,o)=>s.indexOf(r)-s.indexOf(o))}export function isAllTypeSelection(t=[]){return t.length===0||t.length===1&&t[0]==="all"}export function parseSuiteSelectors(t=[]){const n=[];for(const e of t)if(e!=null)for(const r of l(e).split(",")){const o=r.trim();if(!o)continue;const i=o.match(/^([a-z]+):(.*)$/);if(!i){n.push({kind:"plain",name:o,raw:o});continue}const c=i[1],p=i[2].trim(),u=c.trim();if(!d(u))throw new Error(`Unknown suite selector type "${c}". Expected one of: ${f()}.`);if(!p)throw new Error(`Invalid suite selector "${o}". Expected "<type>:<suite-name>".`);n.push({kind:"typed",testType:u,name:p,raw:`${u}:${p}`})}return n}export function matchesSelectedTypes(t,n){return isAllTypeSelection(n)||n.includes(t)}export function matchesSuiteSelectors(t,n,e=[]){return!e||e.length===0?!0:e.some(r=>(r.kind==="plain"||r.testType===t)&&r.name===n)}export function parseTypeOption(t,n=null){const e=[];if(n&&e.push(n),Array.isArray(t)){const r=t;e.push(...r)}else t&&e.push(t);return normalizeTypeValues(e)}export function parseSuiteOption(t){const n=Array.isArray(t)?t:t?[t]:[];return parseSuiteSelectors(n)}
@@ -0,0 +1,3 @@
1
+ export declare const TEST_OUTCOME_STATUS_ORDER: readonly ["passed", "failed", "skipped", "not_run", "cancelled", "interrupted"];
2
+ export type TestOutcomeStatus = (typeof TEST_OUTCOME_STATUS_ORDER)[number];
3
+ export declare function isTestOutcomeStatus(value: unknown): value is TestOutcomeStatus;
@@ -0,0 +1 @@
1
+ export const TEST_OUTCOME_STATUS_ORDER=Object.freeze(["passed","failed","skipped","not_run","cancelled","interrupted"]);const t=new Set(TEST_OUTCOME_STATUS_ORDER);export function isTestOutcomeStatus(e){return typeof e=="string"&&t.has(e)}
@@ -0,0 +1,16 @@
1
+ import { type PublicTestType } from "./identifiers.js";
2
+ export declare const TEST_TYPE_ORDER: readonly string[];
3
+ declare const RUN_TYPE_VALUES: readonly ["ui", "e2e", "int", "contract", "data", "dal", "load", "all"];
4
+ export type RunType = (typeof RUN_TYPE_VALUES)[number];
5
+ export declare const RUN_TYPE_ORDER: readonly string[];
6
+ export declare const RUN_TYPES: ReadonlySet<string>;
7
+ export interface PublicTestTypeListOptions {
8
+ includeAll?: boolean;
9
+ }
10
+ export declare function isPublicTestType(value: unknown): value is PublicTestType;
11
+ export declare function isRunType(value: unknown): value is RunType;
12
+ export declare function formatPublicTestType(value: unknown): string;
13
+ export declare function publicTestTypeList({ includeAll }?: PublicTestTypeListOptions): RunType[];
14
+ export declare function publicTestTypeListText(options?: PublicTestTypeListOptions): string;
15
+ export declare function formatTestTypeLabel(testType: PublicTestType): string;
16
+ export {};
@@ -0,0 +1 @@
1
+ import{PUBLIC_TEST_TYPES as e,isPublicTestType as T}from"./identifiers.js";export const TEST_TYPE_ORDER=e;const o=[...e,"all"];export const RUN_TYPE_ORDER=o,RUN_TYPES=new Set(RUN_TYPE_ORDER);const s={ui:"UI",e2e:"E2E",int:"INT",contract:"Contract",data:"Data",dal:"DAL",load:"Load"},i=String;export function isPublicTestType(t){return T(n(t))}export function isRunType(t){return RUN_TYPES.has(n(t))}export function formatPublicTestType(t){const r=n(t);return isPublicTestType(r)?s[r]:i(t||"")}export function publicTestTypeList({includeAll:t=!1}={}){return t?[...o]:[...e]}export function publicTestTypeListText(t={}){return publicTestTypeList(t).join(", ")}function n(t){return i(t||"").trim()}export function formatTestTypeLabel(t){return t==="int"?"Integration":formatPublicTestType(t)}
@@ -0,0 +1,32 @@
1
+ import { type BigIntStats } from "node:fs";
2
+ import fs from "node:fs/promises";
3
+ import type { EngineArtifactEvidence } from "../api/index.js";
4
+ export interface EvidenceFileAccess {
5
+ lstat(filePath: string): Promise<BigIntStats>;
6
+ openReadOnly(filePath: string): Promise<fs.FileHandle>;
7
+ readonly platform: NodeJS.Platform;
8
+ readChunk(handle: fs.FileHandle, buffer: Buffer): Promise<number>;
9
+ statHandle(handle: fs.FileHandle): Promise<BigIntStats>;
10
+ }
11
+ export declare const evidenceFileAccess: EvidenceFileAccess;
12
+ export interface EvidenceFileIdentity {
13
+ readonly sha256: string;
14
+ readonly sizeBytes: number;
15
+ }
16
+ export interface StableEvidenceFile extends EvidenceFileIdentity {
17
+ readonly contents: Buffer;
18
+ }
19
+ export interface OwnedEvidenceSnapshot {
20
+ readonly filePath: string;
21
+ readonly identity: EvidenceFileIdentity;
22
+ }
23
+ export interface StableJsonFile {
24
+ readonly file: StableEvidenceFile | null;
25
+ readonly value: unknown;
26
+ }
27
+ export declare function stableEvidenceFromBuffer(contents: Buffer): StableEvidenceFile;
28
+ export declare function readStableJsonFile(filePath: string, maximumBytes: number, label: string, fileAccess: EvidenceFileAccess): Promise<StableJsonFile>;
29
+ export declare function readStableEvidenceFile(filePath: string, maximumBytes: number, label: string, fileAccess: EvidenceFileAccess, expectedIdentity?: BigIntStats): Promise<StableEvidenceFile>;
30
+ export declare function writeOwnedEvidenceFile(directory: string, filename: string, contents: Buffer | string): Promise<string>;
31
+ export declare function snapshotStableEvidenceFile(sourcePath: string, maximumBytes: number, label: string, fileAccess: EvidenceFileAccess, expectedIdentity: BigIntStats, targetDirectory: string, filename: string): Promise<OwnedEvidenceSnapshot>;
32
+ export declare function evidenceArtifact(filePath: string, file: EvidenceFileIdentity, contentType: string, kind: string, name: string, summary: string): EngineArtifactEvidence;
@@ -0,0 +1 @@
1
+ import{requireNativeEvidenceJson as O}from"./native-report.js";import S from"node:crypto";import{constants as R}from"node:fs";import d from"node:fs/promises";import F from"node:path";import{readOnlyNoFollowOpenFlags as I,sameFileSnapshot as U,samePathAndHandleFileSnapshot as C}from"../../process/files/file-snapshot.js";const z=64*1024;export const evidenceFileAccess={lstat:async t=>d.lstat(t,{bigint:!0}),openReadOnly:async t=>d.open(t,I(process.platform,R)),platform:process.platform,readChunk:async(t,e)=>(await t.read(e,0,e.byteLength,null)).bytesRead,statHandle:async t=>t.stat({bigint:!0})};export function stableEvidenceFromBuffer(t){return{contents:t,sha256:S.createHash("sha256").update(t).digest("hex"),sizeBytes:t.byteLength}}export async function readStableJsonFile(t,e,n,r){let o;try{o=await readStableEvidenceFile(t,e,n,r)}catch(i){if(L(i))return{file:null,value:null};throw i}let a;try{a=JSON.parse(o.contents.toString("utf8"))}catch(i){throw new Error(`${n} is not valid JSON`,{cause:i})}return O(a,n),{file:o,value:a}}export async function readStableEvidenceFile(t,e,n,r,o){const a=await r.lstat(t);u(a,e,n),o!==void 0&&E(o,a,n);const i=await r.openReadOnly(t);try{const w=await r.statHandle(i);u(w,e,n),m(a,w,n,r.platform);const p=[],l=S.createHash("sha256");let h=0;const s=Buffer.allocUnsafe(z);for(;;){const f=await r.readChunk(i,s);if(N(f,s.byteLength,n),f===0)break;if(h+=f,h>e)throw new Error(`${n} exceeds its ${e.toString()} byte limit`);const g=Buffer.from(s.subarray(0,f));p.push(g),l.update(g)}const c=await r.statHandle(i),y=await r.lstat(t);if(u(c,e,n),u(y,e,n),E(w,c,n),E(a,y,n),m(y,c,n,r.platform),BigInt(h)!==w.size)throw new Error(`${n} changed while it was read`);return{contents:Buffer.concat(p,h),sha256:l.digest("hex"),sizeBytes:h}}finally{await i.close()}}export async function writeOwnedEvidenceFile(t,e,n){const r=F.join(t,e),o=F.join(t,`.${e}.${S.randomUUID()}.tmp`);let a=null;try{return a=await d.open(o,"wx",384),await a.writeFile(n),await a.sync(),await a.close(),a=null,await d.rename(o,r),process.platform!=="win32"&&await d.chmod(r,384),r}catch(i){throw a!==null&&await a.close().catch(()=>{}),await d.rm(o,{force:!0}).catch(()=>{}),i}}export async function snapshotStableEvidenceFile(t,e,n,r,o,a,i){const w=await r.lstat(t);u(w,e,n),E(o,w,n);const p=await r.openReadOnly(t),l=F.join(a,i),h=F.join(a,`.${i}.${S.randomUUID()}.tmp`);let s=null;try{const c=await r.statHandle(p);u(c,e,n),m(w,c,n,r.platform),s=await d.open(h,"wx",384);const y=S.createHash("sha256");let f=0;const g=Buffer.allocUnsafe(z);for(;;){const $=await r.readChunk(p,g);if(N($,g.byteLength,n),$===0)break;if(f+=$,f>e)throw new Error(`${n} exceeds its ${e.toString()} byte limit`);const k=g.subarray(0,$);await s.write(k),y.update(k)}const v=await r.statHandle(p),H=await r.lstat(t);if(u(v,e,n),u(H,e,n),E(c,v,n),E(w,H,n),m(H,v,n,r.platform),BigInt(f)!==c.size)throw new Error(`${n} changed while it was read`);return await s.sync(),await s.close(),s=null,await d.rename(h,l),process.platform!=="win32"&&await d.chmod(l,384),{filePath:l,identity:{sha256:y.digest("hex"),sizeBytes:f}}}catch(c){throw s!==null&&await s.close().catch(()=>{}),await d.rm(h,{force:!0}).catch(()=>{}),c}finally{await p.close()}}export function evidenceArtifact(t,e,n,r,o,a){return{contentType:n,kind:r,metadata:{sha256:e.sha256,sizeBytes:e.sizeBytes},name:o,path:t,summary:a}}function N(t,e,n){if(!Number.isSafeInteger(t)||t<0||t>e)throw new Error(`${n} returned an invalid read length`)}function u(t,e,n){if(!t.isFile()||t.isSymbolicLink())throw new Error(`${n} must be a regular non-symbolic-link file`);if(t.size<0n||t.size>BigInt(e))throw new Error(`${n} exceeds its ${e.toString()} byte limit`)}function E(t,e,n){if(!U(t,e))throw new Error(`${n} changed while it was read`)}function m(t,e,n,r){if(!C(t,e,r))throw new Error(`${n} changed while it was read`)}function L(t){return t instanceof Error&&"code"in t&&t.code==="ENOENT"}
@@ -0,0 +1,12 @@
1
+ import type { EngineJsonObject, RunnerProfileDescriptor } from "../api/index.js";
2
+ import type { EngineId } from "../../domain/identifiers.js";
3
+ import { type PlatformTarget } from "../../process/host/platform.js";
4
+ export type EngineInstallationKind = "direct-package" | "root-direct-packages" | "root-playwright-family";
5
+ interface EngineEvidenceIdentityRequest {
6
+ readonly engineId: EngineId;
7
+ readonly installationKind: EngineInstallationKind;
8
+ readonly profile: Readonly<RunnerProfileDescriptor>;
9
+ readonly target?: Readonly<PlatformTarget>;
10
+ }
11
+ export declare function engineEvidenceIdentity(request: Readonly<EngineEvidenceIdentityRequest>): EngineJsonObject;
12
+ export {};
@@ -0,0 +1 @@
1
+ import o from"node:fs";import{fileURLToPath as i}from"node:url";import{currentPlatformTarget as a,platformTargetKey as n,SUPPORTED_PLATFORM_TARGETS as f,UnsupportedPlatformTargetError as p}from"../../process/host/platform.js";const s=c();export function engineEvidenceIdentity(e){if(e.profile.engineId!==e.engineId)throw new TypeError(`Evidence profile ${e.profile.id} belongs to ${e.profile.engineId}, expected ${e.engineId}`);const t=e.target??a();if(!f.some(r=>n(r)===n(t)))throw new p(t.platform,t.arch,"engine evidence target");return Object.freeze({engineId:e.engineId,installationKind:e.installationKind,nodeVersion:process.versions.node,profileId:e.profile.id,target:Object.freeze({arch:t.arch,platform:t.platform}),testkitVersion:s})}function c(){const e=i(new URL("../../../package.json",import.meta.url));let t;try{t=JSON.parse(o.readFileSync(e,"utf8"))}catch(r){throw new TypeError(`Root Testkit package manifest could not be read from ${e}`,{cause:r})}if(!d(t)||t.name!=="@gfdelarue/testkit")throw new TypeError(`Root Testkit package manifest at ${e} has an invalid package identity`);if(typeof t.version!="string"||!/^(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u.test(t.version))throw new TypeError(`Root Testkit package manifest at ${e} has an invalid version`);return t.version}function d(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}