modestbench 0.1.0 → 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 (484) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +162 -57
  3. package/dist/bootstrap.cjs +10 -10
  4. package/dist/bootstrap.cjs.map +1 -1
  5. package/dist/bootstrap.d.cts.map +1 -1
  6. package/dist/bootstrap.d.ts.map +1 -1
  7. package/dist/bootstrap.js +5 -5
  8. package/dist/bootstrap.js.map +1 -1
  9. package/dist/cli/commands/analyze.cjs +60 -0
  10. package/dist/cli/commands/analyze.cjs.map +1 -0
  11. package/dist/cli/commands/analyze.d.cts +35 -0
  12. package/dist/cli/commands/analyze.d.cts.map +1 -0
  13. package/dist/cli/commands/analyze.d.ts +35 -0
  14. package/dist/cli/commands/analyze.d.ts.map +1 -0
  15. package/dist/cli/commands/analyze.js +56 -0
  16. package/dist/cli/commands/analyze.js.map +1 -0
  17. package/dist/cli/commands/baseline.cjs +404 -0
  18. package/dist/cli/commands/baseline.cjs.map +1 -0
  19. package/dist/cli/commands/baseline.d.cts +72 -0
  20. package/dist/cli/commands/baseline.d.cts.map +1 -0
  21. package/dist/cli/commands/baseline.d.ts +72 -0
  22. package/dist/cli/commands/baseline.d.ts.map +1 -0
  23. package/dist/cli/commands/baseline.js +396 -0
  24. package/dist/cli/commands/baseline.js.map +1 -0
  25. package/dist/cli/commands/history.cjs +108 -266
  26. package/dist/cli/commands/history.cjs.map +1 -1
  27. package/dist/cli/commands/history.d.cts +75 -12
  28. package/dist/cli/commands/history.d.cts.map +1 -1
  29. package/dist/cli/commands/history.d.ts +75 -12
  30. package/dist/cli/commands/history.d.ts.map +1 -1
  31. package/dist/cli/commands/history.js +105 -268
  32. package/dist/cli/commands/history.js.map +1 -1
  33. package/dist/cli/commands/init.cjs +88 -155
  34. package/dist/cli/commands/init.cjs.map +1 -1
  35. package/dist/cli/commands/init.d.cts +4 -4
  36. package/dist/cli/commands/init.d.cts.map +1 -1
  37. package/dist/cli/commands/init.d.ts +4 -4
  38. package/dist/cli/commands/init.d.ts.map +1 -1
  39. package/dist/cli/commands/init.js +88 -155
  40. package/dist/cli/commands/init.js.map +1 -1
  41. package/dist/cli/commands/run.cjs +143 -112
  42. package/dist/cli/commands/run.cjs.map +1 -1
  43. package/dist/cli/commands/run.d.cts +17 -3
  44. package/dist/cli/commands/run.d.cts.map +1 -1
  45. package/dist/cli/commands/run.d.ts +17 -3
  46. package/dist/cli/commands/run.d.ts.map +1 -1
  47. package/dist/cli/commands/run.js +142 -78
  48. package/dist/cli/commands/run.js.map +1 -1
  49. package/dist/cli/index.cjs +671 -266
  50. package/dist/cli/index.cjs.map +1 -1
  51. package/dist/cli/index.d.cts +4 -16
  52. package/dist/cli/index.d.cts.map +1 -1
  53. package/dist/cli/index.d.ts +4 -16
  54. package/dist/cli/index.d.ts.map +1 -1
  55. package/dist/cli/index.js +664 -259
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/config/budget-schema.cjs +172 -0
  58. package/dist/config/budget-schema.cjs.map +1 -0
  59. package/dist/config/budget-schema.d.cts +59 -0
  60. package/dist/config/budget-schema.d.cts.map +1 -0
  61. package/dist/config/budget-schema.d.ts +59 -0
  62. package/dist/config/budget-schema.d.ts.map +1 -0
  63. package/dist/config/budget-schema.js +166 -0
  64. package/dist/config/budget-schema.js.map +1 -0
  65. package/dist/config/schema.cjs +182 -2
  66. package/dist/config/schema.cjs.map +1 -1
  67. package/dist/config/schema.d.cts +122 -3
  68. package/dist/config/schema.d.cts.map +1 -1
  69. package/dist/config/schema.d.ts +122 -3
  70. package/dist/config/schema.d.ts.map +1 -1
  71. package/dist/config/schema.js +180 -1
  72. package/dist/config/schema.js.map +1 -1
  73. package/dist/constants.cjs +45 -2
  74. package/dist/constants.cjs.map +1 -1
  75. package/dist/constants.d.cts +41 -0
  76. package/dist/constants.d.cts.map +1 -1
  77. package/dist/constants.d.ts +41 -0
  78. package/dist/constants.d.ts.map +1 -1
  79. package/dist/constants.js +44 -1
  80. package/dist/constants.js.map +1 -1
  81. package/dist/core/engine.cjs +104 -15
  82. package/dist/core/engine.cjs.map +1 -1
  83. package/dist/core/engine.d.cts +7 -4
  84. package/dist/core/engine.d.cts.map +1 -1
  85. package/dist/core/engine.d.ts +7 -4
  86. package/dist/core/engine.d.ts.map +1 -1
  87. package/dist/core/engine.js +105 -16
  88. package/dist/core/engine.js.map +1 -1
  89. package/dist/core/output-path-resolver.cjs +41 -0
  90. package/dist/core/output-path-resolver.cjs.map +1 -0
  91. package/dist/core/output-path-resolver.d.cts +10 -0
  92. package/dist/core/output-path-resolver.d.cts.map +1 -0
  93. package/dist/core/output-path-resolver.d.ts +10 -0
  94. package/dist/core/output-path-resolver.d.ts.map +1 -0
  95. package/dist/core/output-path-resolver.js +37 -0
  96. package/dist/core/output-path-resolver.js.map +1 -0
  97. package/dist/errors/base.cjs +12 -3
  98. package/dist/errors/base.cjs.map +1 -1
  99. package/dist/errors/base.d.cts +7 -0
  100. package/dist/errors/base.d.cts.map +1 -1
  101. package/dist/errors/base.d.ts +7 -0
  102. package/dist/errors/base.d.ts.map +1 -1
  103. package/dist/errors/base.js +10 -2
  104. package/dist/errors/base.js.map +1 -1
  105. package/dist/errors/budget.cjs +37 -0
  106. package/dist/errors/budget.cjs.map +1 -0
  107. package/dist/errors/budget.d.cts +31 -0
  108. package/dist/errors/budget.d.cts.map +1 -0
  109. package/dist/errors/budget.d.ts +31 -0
  110. package/dist/errors/budget.d.ts.map +1 -0
  111. package/dist/errors/budget.js +33 -0
  112. package/dist/errors/budget.js.map +1 -0
  113. package/dist/errors/index.cjs +4 -1
  114. package/dist/errors/index.cjs.map +1 -1
  115. package/dist/errors/index.d.cts +1 -0
  116. package/dist/errors/index.d.cts.map +1 -1
  117. package/dist/errors/index.d.ts +1 -0
  118. package/dist/errors/index.d.ts.map +1 -1
  119. package/dist/errors/index.js +2 -0
  120. package/dist/errors/index.js.map +1 -1
  121. package/dist/formatters/history/base.cjs +9 -0
  122. package/dist/formatters/history/base.cjs.map +1 -0
  123. package/dist/formatters/history/base.d.cts +26 -0
  124. package/dist/formatters/history/base.d.cts.map +1 -0
  125. package/dist/formatters/history/base.d.ts +26 -0
  126. package/dist/formatters/history/base.d.ts.map +1 -0
  127. package/dist/formatters/history/base.js +8 -0
  128. package/dist/formatters/history/base.js.map +1 -0
  129. package/dist/formatters/history/compare.cjs +127 -0
  130. package/dist/formatters/history/compare.cjs.map +1 -0
  131. package/dist/formatters/history/compare.d.cts +21 -0
  132. package/dist/formatters/history/compare.d.cts.map +1 -0
  133. package/dist/formatters/history/compare.d.ts +21 -0
  134. package/dist/formatters/history/compare.d.ts.map +1 -0
  135. package/dist/formatters/history/compare.js +123 -0
  136. package/dist/formatters/history/compare.js.map +1 -0
  137. package/dist/formatters/history/list.cjs +74 -0
  138. package/dist/formatters/history/list.cjs.map +1 -0
  139. package/dist/formatters/history/list.d.cts +25 -0
  140. package/dist/formatters/history/list.d.cts.map +1 -0
  141. package/dist/formatters/history/list.d.ts +25 -0
  142. package/dist/formatters/history/list.d.ts.map +1 -0
  143. package/dist/formatters/history/list.js +70 -0
  144. package/dist/formatters/history/list.js.map +1 -0
  145. package/dist/formatters/history/show.cjs +98 -0
  146. package/dist/formatters/history/show.cjs.map +1 -0
  147. package/dist/formatters/history/show.d.cts +21 -0
  148. package/dist/formatters/history/show.d.cts.map +1 -0
  149. package/dist/formatters/history/show.d.ts +21 -0
  150. package/dist/formatters/history/show.d.ts.map +1 -0
  151. package/dist/formatters/history/show.js +94 -0
  152. package/dist/formatters/history/show.js.map +1 -0
  153. package/dist/formatters/history/trends.cjs +194 -0
  154. package/dist/formatters/history/trends.cjs.map +1 -0
  155. package/dist/formatters/history/trends.d.cts +22 -0
  156. package/dist/formatters/history/trends.d.cts.map +1 -0
  157. package/dist/formatters/history/trends.d.ts +22 -0
  158. package/dist/formatters/history/trends.d.ts.map +1 -0
  159. package/dist/formatters/history/trends.js +190 -0
  160. package/dist/formatters/history/trends.js.map +1 -0
  161. package/dist/formatters/history/visualization.cjs +79 -0
  162. package/dist/formatters/history/visualization.cjs.map +1 -0
  163. package/dist/formatters/history/visualization.d.cts +24 -0
  164. package/dist/formatters/history/visualization.d.cts.map +1 -0
  165. package/dist/formatters/history/visualization.d.ts +24 -0
  166. package/dist/formatters/history/visualization.d.ts.map +1 -0
  167. package/dist/formatters/history/visualization.js +74 -0
  168. package/dist/formatters/history/visualization.js.map +1 -0
  169. package/dist/index.cjs +27 -17
  170. package/dist/index.cjs.map +1 -1
  171. package/dist/index.d.cts +10 -5
  172. package/dist/index.d.cts.map +1 -1
  173. package/dist/index.d.ts +10 -5
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +14 -9
  176. package/dist/index.js.map +1 -1
  177. package/dist/reporters/csv.cjs +39 -19
  178. package/dist/reporters/csv.cjs.map +1 -1
  179. package/dist/reporters/csv.d.cts +4 -7
  180. package/dist/reporters/csv.d.cts.map +1 -1
  181. package/dist/reporters/csv.d.ts +4 -7
  182. package/dist/reporters/csv.d.ts.map +1 -1
  183. package/dist/reporters/csv.js +38 -18
  184. package/dist/reporters/csv.js.map +1 -1
  185. package/dist/reporters/human.cjs +87 -99
  186. package/dist/reporters/human.cjs.map +1 -1
  187. package/dist/reporters/human.d.cts +15 -14
  188. package/dist/reporters/human.d.cts.map +1 -1
  189. package/dist/reporters/human.d.ts +15 -14
  190. package/dist/reporters/human.d.ts.map +1 -1
  191. package/dist/reporters/human.js +68 -80
  192. package/dist/reporters/human.js.map +1 -1
  193. package/dist/reporters/json.cjs +25 -50
  194. package/dist/reporters/json.cjs.map +1 -1
  195. package/dist/reporters/json.d.cts +3 -29
  196. package/dist/reporters/json.d.cts.map +1 -1
  197. package/dist/reporters/json.d.ts +3 -29
  198. package/dist/reporters/json.d.ts.map +1 -1
  199. package/dist/reporters/json.js +26 -51
  200. package/dist/reporters/json.js.map +1 -1
  201. package/dist/reporters/profile-human.cjs +149 -0
  202. package/dist/reporters/profile-human.cjs.map +1 -0
  203. package/dist/reporters/profile-human.d.cts +44 -0
  204. package/dist/reporters/profile-human.d.cts.map +1 -0
  205. package/dist/reporters/profile-human.d.ts +44 -0
  206. package/dist/reporters/profile-human.d.ts.map +1 -0
  207. package/dist/reporters/profile-human.js +142 -0
  208. package/dist/reporters/profile-human.js.map +1 -0
  209. package/dist/reporters/simple.cjs +66 -46
  210. package/dist/reporters/simple.cjs.map +1 -1
  211. package/dist/reporters/simple.d.cts +15 -15
  212. package/dist/reporters/simple.d.cts.map +1 -1
  213. package/dist/reporters/simple.d.ts +15 -15
  214. package/dist/reporters/simple.d.ts.map +1 -1
  215. package/dist/reporters/simple.js +65 -45
  216. package/dist/reporters/simple.js.map +1 -1
  217. package/dist/schema/modestbench-config.schema.json +153 -0
  218. package/dist/services/baseline-storage.cjs +151 -0
  219. package/dist/services/baseline-storage.cjs.map +1 -0
  220. package/dist/services/baseline-storage.d.cts +55 -0
  221. package/dist/services/baseline-storage.d.cts.map +1 -0
  222. package/dist/services/baseline-storage.d.ts +55 -0
  223. package/dist/services/baseline-storage.d.ts.map +1 -0
  224. package/dist/services/baseline-storage.js +147 -0
  225. package/dist/services/baseline-storage.js.map +1 -0
  226. package/dist/services/budget-evaluator.cjs +146 -0
  227. package/dist/services/budget-evaluator.cjs.map +1 -0
  228. package/dist/services/budget-evaluator.d.cts +29 -0
  229. package/dist/services/budget-evaluator.d.cts.map +1 -0
  230. package/dist/services/budget-evaluator.d.ts +29 -0
  231. package/dist/services/budget-evaluator.d.ts.map +1 -0
  232. package/dist/services/budget-evaluator.js +142 -0
  233. package/dist/services/budget-evaluator.js.map +1 -0
  234. package/dist/{config/manager.cjs → services/config-manager.cjs} +25 -11
  235. package/dist/services/config-manager.cjs.map +1 -0
  236. package/dist/{config/manager.d.cts → services/config-manager.d.cts} +7 -2
  237. package/dist/services/config-manager.d.cts.map +1 -0
  238. package/dist/{config/manager.d.ts → services/config-manager.d.ts} +7 -2
  239. package/dist/services/config-manager.d.ts.map +1 -0
  240. package/dist/{config/manager.js → services/config-manager.js} +25 -11
  241. package/dist/services/config-manager.js.map +1 -0
  242. package/dist/{core/loader.cjs → services/file-loader.cjs} +5 -8
  243. package/dist/services/file-loader.cjs.map +1 -0
  244. package/dist/{core/loader.d.cts → services/file-loader.d.cts} +1 -1
  245. package/dist/services/file-loader.d.cts.map +1 -0
  246. package/dist/{core/loader.d.ts → services/file-loader.d.ts} +1 -1
  247. package/dist/services/file-loader.d.ts.map +1 -0
  248. package/dist/{core/loader.js → services/file-loader.js} +5 -8
  249. package/dist/services/file-loader.js.map +1 -0
  250. package/dist/services/history/comparison.cjs +124 -0
  251. package/dist/services/history/comparison.cjs.map +1 -0
  252. package/dist/services/history/comparison.d.cts +18 -0
  253. package/dist/services/history/comparison.d.cts.map +1 -0
  254. package/dist/services/history/comparison.d.ts +18 -0
  255. package/dist/services/history/comparison.d.ts.map +1 -0
  256. package/dist/services/history/comparison.js +120 -0
  257. package/dist/services/history/comparison.js.map +1 -0
  258. package/dist/services/history/models.cjs +9 -0
  259. package/dist/services/history/models.cjs.map +1 -0
  260. package/dist/services/history/models.d.cts +139 -0
  261. package/dist/services/history/models.d.cts.map +1 -0
  262. package/dist/services/history/models.d.ts +139 -0
  263. package/dist/services/history/models.d.ts.map +1 -0
  264. package/dist/services/history/models.js +8 -0
  265. package/dist/services/history/models.js.map +1 -0
  266. package/dist/services/history/query.cjs +97 -0
  267. package/dist/services/history/query.cjs.map +1 -0
  268. package/dist/services/history/query.d.cts +38 -0
  269. package/dist/services/history/query.d.cts.map +1 -0
  270. package/dist/services/history/query.d.ts +38 -0
  271. package/dist/services/history/query.d.ts.map +1 -0
  272. package/dist/services/history/query.js +92 -0
  273. package/dist/services/history/query.js.map +1 -0
  274. package/dist/services/history/trend-analysis.cjs +187 -0
  275. package/dist/services/history/trend-analysis.cjs.map +1 -0
  276. package/dist/services/history/trend-analysis.d.cts +34 -0
  277. package/dist/services/history/trend-analysis.d.cts.map +1 -0
  278. package/dist/services/history/trend-analysis.d.ts +34 -0
  279. package/dist/services/history/trend-analysis.d.ts.map +1 -0
  280. package/dist/services/history/trend-analysis.js +179 -0
  281. package/dist/services/history/trend-analysis.js.map +1 -0
  282. package/dist/{storage/history.cjs → services/history-storage.cjs} +1 -1
  283. package/dist/services/history-storage.cjs.map +1 -0
  284. package/dist/{storage/history.d.cts → services/history-storage.d.cts} +1 -1
  285. package/dist/services/history-storage.d.cts.map +1 -0
  286. package/dist/{storage/history.d.ts → services/history-storage.d.ts} +1 -1
  287. package/dist/services/history-storage.d.ts.map +1 -0
  288. package/dist/{storage/history.js → services/history-storage.js} +1 -1
  289. package/dist/services/history-storage.js.map +1 -0
  290. package/dist/services/profiler/profile-filter.cjs +113 -0
  291. package/dist/services/profiler/profile-filter.cjs.map +1 -0
  292. package/dist/services/profiler/profile-filter.d.cts +20 -0
  293. package/dist/services/profiler/profile-filter.d.cts.map +1 -0
  294. package/dist/services/profiler/profile-filter.d.ts +20 -0
  295. package/dist/services/profiler/profile-filter.d.ts.map +1 -0
  296. package/dist/services/profiler/profile-filter.js +109 -0
  297. package/dist/services/profiler/profile-filter.js.map +1 -0
  298. package/dist/services/profiler/profile-parser.cjs +139 -0
  299. package/dist/services/profiler/profile-parser.cjs.map +1 -0
  300. package/dist/services/profiler/profile-parser.d.cts +18 -0
  301. package/dist/services/profiler/profile-parser.d.cts.map +1 -0
  302. package/dist/services/profiler/profile-parser.d.ts +18 -0
  303. package/dist/services/profiler/profile-parser.d.ts.map +1 -0
  304. package/dist/services/profiler/profile-parser.js +132 -0
  305. package/dist/services/profiler/profile-parser.js.map +1 -0
  306. package/dist/services/profiler/profile-runner.cjs +90 -0
  307. package/dist/services/profiler/profile-runner.cjs.map +1 -0
  308. package/dist/services/profiler/profile-runner.d.cts +29 -0
  309. package/dist/services/profiler/profile-runner.d.cts.map +1 -0
  310. package/dist/services/profiler/profile-runner.d.ts +29 -0
  311. package/dist/services/profiler/profile-runner.d.ts.map +1 -0
  312. package/dist/services/profiler/profile-runner.js +86 -0
  313. package/dist/services/profiler/profile-runner.js.map +1 -0
  314. package/dist/{progress/manager.cjs → services/progress-manager.cjs} +1 -1
  315. package/dist/services/progress-manager.cjs.map +1 -0
  316. package/dist/{progress/manager.d.cts → services/progress-manager.d.cts} +1 -1
  317. package/dist/services/progress-manager.d.cts.map +1 -0
  318. package/dist/{progress/manager.d.ts → services/progress-manager.d.ts} +1 -1
  319. package/dist/services/progress-manager.d.ts.map +1 -0
  320. package/dist/{progress/manager.js → services/progress-manager.js} +1 -1
  321. package/dist/services/progress-manager.js.map +1 -0
  322. package/dist/{reporters/registry.cjs → services/reporter-registry.cjs} +19 -25
  323. package/dist/services/reporter-registry.cjs.map +1 -0
  324. package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +19 -41
  325. package/dist/services/reporter-registry.d.cts.map +1 -0
  326. package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +19 -41
  327. package/dist/services/reporter-registry.d.ts.map +1 -0
  328. package/dist/{reporters/registry.js → services/reporter-registry.js} +19 -25
  329. package/dist/services/reporter-registry.js.map +1 -0
  330. package/dist/types/budgets.cjs +8 -0
  331. package/dist/types/budgets.cjs.map +1 -0
  332. package/dist/types/budgets.d.cts +149 -0
  333. package/dist/types/budgets.d.cts.map +1 -0
  334. package/dist/types/budgets.d.ts +149 -0
  335. package/dist/types/budgets.d.ts.map +1 -0
  336. package/dist/types/budgets.js +7 -0
  337. package/dist/types/budgets.js.map +1 -0
  338. package/dist/types/cli.cjs +2 -11
  339. package/dist/types/cli.cjs.map +1 -1
  340. package/dist/types/cli.d.cts +3 -224
  341. package/dist/types/cli.d.cts.map +1 -1
  342. package/dist/types/cli.d.ts +3 -224
  343. package/dist/types/cli.d.ts.map +1 -1
  344. package/dist/types/cli.js +2 -11
  345. package/dist/types/cli.js.map +1 -1
  346. package/dist/types/core.cjs +6 -1
  347. package/dist/types/core.cjs.map +1 -1
  348. package/dist/types/core.d.cts +13 -2
  349. package/dist/types/core.d.cts.map +1 -1
  350. package/dist/types/core.d.ts +13 -2
  351. package/dist/types/core.d.ts.map +1 -1
  352. package/dist/types/core.js +2 -1
  353. package/dist/types/core.js.map +1 -1
  354. package/dist/types/index.cjs +5 -0
  355. package/dist/types/index.cjs.map +1 -1
  356. package/dist/types/index.d.cts +2 -0
  357. package/dist/types/index.d.cts.map +1 -1
  358. package/dist/types/index.d.ts +2 -0
  359. package/dist/types/index.d.ts.map +1 -1
  360. package/dist/types/index.js +2 -0
  361. package/dist/types/index.js.map +1 -1
  362. package/dist/types/interfaces.d.cts +15 -8
  363. package/dist/types/interfaces.d.cts.map +1 -1
  364. package/dist/types/interfaces.d.ts +15 -8
  365. package/dist/types/interfaces.d.ts.map +1 -1
  366. package/dist/types/profiler.cjs +11 -0
  367. package/dist/types/profiler.cjs.map +1 -0
  368. package/dist/types/profiler.d.cts +100 -0
  369. package/dist/types/profiler.d.cts.map +1 -0
  370. package/dist/types/profiler.d.ts +100 -0
  371. package/dist/types/profiler.d.ts.map +1 -0
  372. package/dist/types/profiler.js +10 -0
  373. package/dist/types/profiler.js.map +1 -0
  374. package/dist/types/utility.cjs.map +1 -1
  375. package/dist/types/utility.d.cts +0 -8
  376. package/dist/types/utility.d.cts.map +1 -1
  377. package/dist/types/utility.d.ts +0 -8
  378. package/dist/types/utility.d.ts.map +1 -1
  379. package/dist/types/utility.js.map +1 -1
  380. package/dist/utils/ansi.cjs +61 -0
  381. package/dist/utils/ansi.cjs.map +1 -0
  382. package/dist/utils/ansi.d.cts +53 -0
  383. package/dist/utils/ansi.d.cts.map +1 -0
  384. package/dist/utils/ansi.d.ts +53 -0
  385. package/dist/utils/ansi.d.ts.map +1 -0
  386. package/dist/utils/ansi.js +57 -0
  387. package/dist/utils/ansi.js.map +1 -0
  388. package/dist/utils/identifiers.cjs +32 -0
  389. package/dist/utils/identifiers.cjs.map +1 -0
  390. package/dist/utils/identifiers.d.cts +32 -0
  391. package/dist/utils/identifiers.d.cts.map +1 -0
  392. package/dist/utils/identifiers.d.ts +32 -0
  393. package/dist/utils/identifiers.d.ts.map +1 -0
  394. package/dist/utils/identifiers.js +27 -0
  395. package/dist/utils/identifiers.js.map +1 -0
  396. package/dist/utils/package.cjs +40 -0
  397. package/dist/utils/package.cjs.map +1 -0
  398. package/dist/utils/package.d.cts +15 -0
  399. package/dist/utils/package.d.cts.map +1 -0
  400. package/dist/utils/package.d.ts +15 -0
  401. package/dist/utils/package.d.ts.map +1 -0
  402. package/dist/utils/package.js +33 -0
  403. package/dist/utils/package.js.map +1 -0
  404. package/dist/utils/type-guards.cjs +48 -0
  405. package/dist/utils/type-guards.cjs.map +1 -0
  406. package/dist/utils/type-guards.d.cts +22 -0
  407. package/dist/utils/type-guards.d.cts.map +1 -0
  408. package/dist/utils/type-guards.d.ts +22 -0
  409. package/dist/utils/type-guards.d.ts.map +1 -0
  410. package/dist/utils/type-guards.js +43 -0
  411. package/dist/utils/type-guards.js.map +1 -0
  412. package/package.json +14 -13
  413. package/src/bootstrap.ts +5 -5
  414. package/src/cli/commands/analyze.ts +101 -0
  415. package/src/cli/commands/baseline.ts +577 -0
  416. package/src/cli/commands/history.ts +194 -342
  417. package/src/cli/commands/init.ts +105 -183
  418. package/src/cli/commands/run.ts +186 -88
  419. package/src/cli/index.ts +731 -234
  420. package/src/config/budget-schema.ts +189 -0
  421. package/src/config/schema.ts +260 -1
  422. package/src/constants.ts +53 -1
  423. package/src/core/engine.ts +153 -14
  424. package/src/core/output-path-resolver.ts +46 -0
  425. package/src/errors/base.ts +11 -2
  426. package/src/errors/budget.ts +38 -0
  427. package/src/errors/index.ts +3 -0
  428. package/src/formatters/history/base.ts +28 -0
  429. package/src/formatters/history/compare.ts +186 -0
  430. package/src/formatters/history/list.ts +101 -0
  431. package/src/formatters/history/show.ts +155 -0
  432. package/src/formatters/history/trends.ts +281 -0
  433. package/src/formatters/history/visualization.ts +93 -0
  434. package/src/index.ts +17 -12
  435. package/src/reporters/csv.ts +55 -26
  436. package/src/reporters/human.ts +90 -89
  437. package/src/reporters/json.ts +27 -72
  438. package/src/reporters/profile-human.ts +204 -0
  439. package/src/reporters/simple.ts +85 -54
  440. package/src/services/baseline-storage.ts +199 -0
  441. package/src/services/budget-evaluator.ts +182 -0
  442. package/src/{config/manager.ts → services/config-manager.ts} +24 -9
  443. package/src/{core/loader.ts → services/file-loader.ts} +4 -7
  444. package/src/services/history/comparison.ts +130 -0
  445. package/src/services/history/models.ts +148 -0
  446. package/src/services/history/query.ts +116 -0
  447. package/src/services/history/trend-analysis.ts +238 -0
  448. package/src/services/profiler/profile-filter.ts +143 -0
  449. package/src/services/profiler/profile-parser.ts +194 -0
  450. package/src/services/profiler/profile-runner.ts +121 -0
  451. package/src/{reporters/registry.ts → services/reporter-registry.ts} +46 -81
  452. package/src/types/budgets.ts +180 -0
  453. package/src/types/cli.ts +5 -235
  454. package/src/types/core.ts +50 -10
  455. package/src/types/index.ts +5 -0
  456. package/src/types/interfaces.ts +16 -6
  457. package/src/types/profiler.ts +132 -0
  458. package/src/types/utility.ts +0 -10
  459. package/src/utils/ansi.ts +59 -0
  460. package/src/utils/identifiers.ts +58 -0
  461. package/src/utils/package.ts +35 -0
  462. package/src/utils/type-guards.ts +51 -0
  463. package/dist/config/manager.cjs.map +0 -1
  464. package/dist/config/manager.d.cts.map +0 -1
  465. package/dist/config/manager.d.ts.map +0 -1
  466. package/dist/config/manager.js.map +0 -1
  467. package/dist/core/loader.cjs.map +0 -1
  468. package/dist/core/loader.d.cts.map +0 -1
  469. package/dist/core/loader.d.ts.map +0 -1
  470. package/dist/core/loader.js.map +0 -1
  471. package/dist/progress/manager.cjs.map +0 -1
  472. package/dist/progress/manager.d.cts.map +0 -1
  473. package/dist/progress/manager.d.ts.map +0 -1
  474. package/dist/progress/manager.js.map +0 -1
  475. package/dist/reporters/registry.cjs.map +0 -1
  476. package/dist/reporters/registry.d.cts.map +0 -1
  477. package/dist/reporters/registry.d.ts.map +0 -1
  478. package/dist/reporters/registry.js.map +0 -1
  479. package/dist/storage/history.cjs.map +0 -1
  480. package/dist/storage/history.d.cts.map +0 -1
  481. package/dist/storage/history.d.ts.map +0 -1
  482. package/dist/storage/history.js.map +0 -1
  483. /package/src/{storage/history.ts → services/history-storage.ts} +0 -0
  484. /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
@@ -41,7 +41,12 @@ var __importStar = (this && this.__importStar) || (function () {
41
41
  })();
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
43
  exports.ModestBenchEngine = void 0;
44
+ const node_crypto_1 = require("node:crypto");
45
+ const node_path_1 = require("node:path");
44
46
  const index_js_1 = require("../errors/index.cjs");
47
+ const baseline_storage_js_1 = require("../services/baseline-storage.cjs");
48
+ const budget_evaluator_js_1 = require("../services/budget-evaluator.cjs");
49
+ const index_js_2 = require("../types/index.cjs");
45
50
  /**
46
51
  * Abstract benchmark execution engine with dependency injection
47
52
  *
@@ -62,6 +67,19 @@ class ModestBenchEngine {
62
67
  this.historyStorage = dependencies.historyStorage;
63
68
  this.progressManager = dependencies.progressManager;
64
69
  }
70
+ /**
71
+ * Generate a unique run ID
72
+ *
73
+ * Uses crypto.randomBytes for cryptographically random 7-character IDs.
74
+ * Format: 7 lowercase alphanumeric characters (e.g., "k3m9x2p")
75
+ */
76
+ static generateRunId() {
77
+ // Generate random bytes, convert to hex, then to base36, take first 7 chars
78
+ const hex = (0, node_crypto_1.randomBytes)(4).toString('hex');
79
+ const num = parseInt(hex, 16);
80
+ const id = num.toString(36).padStart(7, '0').substring(0, 7);
81
+ return (0, index_js_2.createRunId)(id);
82
+ }
65
83
  /**
66
84
  * Discover benchmark files matching the pattern(s)
67
85
  */
@@ -99,7 +117,7 @@ class ModestBenchEngine {
99
117
  throw new index_js_1.SchemaValidationError(`Validation failed: ${validationResult.errors.map((e) => e.message).join(', ')}`);
100
118
  }
101
119
  // 4. Initialize progress tracking
102
- const runId = this.generateRunId();
120
+ const runId = ModestBenchEngine.generateRunId();
103
121
  // Pre-calculate total tasks for progress tracking
104
122
  let totalTasks = 0;
105
123
  let totalSuites = 0;
@@ -156,9 +174,9 @@ class ModestBenchEngine {
156
174
  this.progressManager.initialize(initialRun);
157
175
  // Register progress callbacks with reporters that support them
158
176
  for (const reporter of reporters) {
159
- if (typeof reporter.onProgress === 'function') {
177
+ if (reporter.onProgress) {
160
178
  this.progressManager.onProgress((state) => {
161
- void reporter.onProgress(state);
179
+ void reporter.onProgress?.(state);
162
180
  });
163
181
  }
164
182
  }
@@ -168,9 +186,12 @@ class ModestBenchEngine {
168
186
  const fileResults = [];
169
187
  for (const filePath of files) {
170
188
  try {
171
- // Call reporter onFileStart
172
- await this.callReporters(reporters, 'onFileStart', filePath);
173
- const fileResult = await this.executeBenchmarkFile(filePath, mergedConfig, reporters, signal);
189
+ // Normalize file path to be relative to cwd
190
+ const cwd = config.cwd || process.cwd();
191
+ const relativePath = (0, node_path_1.relative)(cwd, filePath);
192
+ // Call reporter onFileStart with relative path
193
+ await this.callReporters(reporters, 'onFileStart', relativePath);
194
+ const fileResult = await this.executeBenchmarkFile(filePath, mergedConfig, cwd, reporters, signal);
174
195
  fileResults.push(fileResult);
175
196
  // Call reporter onFileEnd
176
197
  await this.callReporters(reporters, 'onFileEnd', fileResult);
@@ -179,6 +200,13 @@ class ModestBenchEngine {
179
200
  currentFile: filePath,
180
201
  filesCompleted: fileResults.length,
181
202
  });
203
+ // Check for bail: stop execution if any task failed
204
+ if (mergedConfig.bail) {
205
+ const hasFailedTask = fileResult.suites.some((suite) => suite.tasks.some((task) => task.error));
206
+ if (hasFailedTask) {
207
+ break;
208
+ }
209
+ }
182
210
  }
183
211
  catch (error) {
184
212
  const fileError = error instanceof Error ? error : new Error(String(error));
@@ -197,6 +225,10 @@ class ModestBenchEngine {
197
225
  fileResults.push(errorResult);
198
226
  // Call reporter onFileEnd for error case
199
227
  await this.callReporters(reporters, 'onFileEnd', errorResult);
228
+ // Check bail flag for file-level errors
229
+ if (mergedConfig.bail) {
230
+ break;
231
+ }
200
232
  }
201
233
  }
202
234
  // Calculate summary statistics
@@ -222,9 +254,68 @@ class ModestBenchEngine {
222
254
  }
223
255
  }
224
256
  const overallMean = totalOperations > 0 ? totalTime / totalOperations : 0;
257
+ // Evaluate budgets if configured
258
+ let budgetSummary;
259
+ if (config.budgets && Object.keys(config.budgets).length > 0) {
260
+ const evaluator = new budget_evaluator_js_1.BudgetEvaluator();
261
+ const baselineStorage = new baseline_storage_js_1.BaselineStorageService(process.cwd());
262
+ // Collect task results
263
+ const taskResults = new Map();
264
+ for (const file of fileResults) {
265
+ for (const suite of file.suites) {
266
+ for (const task of suite.tasks) {
267
+ if (!task.error) {
268
+ // file.filePath is already relative to cwd
269
+ const taskId = (0, index_js_2.createTaskId)(file.filePath, suite.name, task.name);
270
+ taskResults.set(taskId, task);
271
+ }
272
+ }
273
+ }
274
+ }
275
+ // Load baseline data if needed for relative budgets
276
+ let baselineData;
277
+ // Check if any budgets use relative thresholds
278
+ const hasRelativeBudgets = Object.values(config.budgets).some((budget) => budget.relative);
279
+ if (hasRelativeBudgets) {
280
+ const baselineName = config.baseline || (await baselineStorage.getDefault());
281
+ if (baselineName) {
282
+ const baseline = await baselineStorage.getBaseline(baselineName);
283
+ if (baseline) {
284
+ // Cast keys to TaskId since they come from validated baseline storage
285
+ baselineData = new Map(Object.entries(baseline.summary));
286
+ }
287
+ else {
288
+ console.warn(`Warning: Baseline "${baselineName}" not found. Relative budgets will be skipped.`);
289
+ }
290
+ }
291
+ else {
292
+ console.warn('Warning: Relative budgets configured but no baseline specified. Relative budgets will be skipped.');
293
+ }
294
+ }
295
+ // Evaluate budgets
296
+ budgetSummary = evaluator.evaluateRun(config.budgets, taskResults, baselineData);
297
+ // Notify reporters of budget results
298
+ for (const reporter of reporters) {
299
+ if (reporter.onBudgetResult) {
300
+ await reporter.onBudgetResult(budgetSummary);
301
+ }
302
+ }
303
+ // Handle budget failures based on budgetMode
304
+ if (budgetSummary.failed > 0) {
305
+ const mode = config.budgetMode || 'fail';
306
+ if (mode === 'fail') {
307
+ throw new index_js_1.BudgetExceededError(`${budgetSummary.failed} of ${budgetSummary.total} budget(s) exceeded`, budgetSummary);
308
+ }
309
+ else if (mode === 'warn') {
310
+ console.warn(`Warning: ${budgetSummary.failed} of ${budgetSummary.total} budget(s) exceeded`);
311
+ }
312
+ // mode === 'report': just include in output, don't fail
313
+ }
314
+ }
225
315
  const endTime = new Date();
226
316
  const finalRun = {
227
317
  ...initialRun,
318
+ budgetSummary,
228
319
  duration: endTime.getTime() - startTime.getTime(),
229
320
  endTime,
230
321
  files: fileResults,
@@ -356,7 +447,7 @@ class ModestBenchEngine {
356
447
  /**
357
448
  * Execute a single benchmark file and return its results
358
449
  */
359
- async executeBenchmarkFile(filePath, config, reporters = [], signal) {
450
+ async executeBenchmarkFile(filePath, config, cwd, reporters = [], signal) {
360
451
  const startTime = new Date();
361
452
  try {
362
453
  // Load the benchmark file using the file loader
@@ -383,11 +474,13 @@ class ModestBenchEngine {
383
474
  }
384
475
  }
385
476
  const endTime = new Date();
477
+ // Normalize file path to be relative to cwd
478
+ const relativePath = (0, node_path_1.relative)(cwd, filePath);
386
479
  return {
387
480
  config: benchmarkDef.config,
388
481
  duration: endTime.getTime() - startTime.getTime(),
389
482
  endTime,
390
- filePath,
483
+ filePath: relativePath,
391
484
  startTime,
392
485
  suites: suiteResults,
393
486
  };
@@ -395,11 +488,13 @@ class ModestBenchEngine {
395
488
  catch (error) {
396
489
  const endTime = new Date();
397
490
  const executionError = error instanceof Error ? error : new Error(String(error));
491
+ // Normalize file path to be relative to cwd
492
+ const relativePath = (0, node_path_1.relative)(cwd, filePath);
398
493
  return {
399
494
  duration: endTime.getTime() - startTime.getTime(),
400
495
  endTime,
401
496
  error: executionError,
402
- filePath,
497
+ filePath: relativePath,
403
498
  startTime,
404
499
  suites: [],
405
500
  };
@@ -503,12 +598,6 @@ class ModestBenchEngine {
503
598
  };
504
599
  }
505
600
  }
506
- /**
507
- * Generate a unique run ID
508
- */
509
- generateRunId() {
510
- return `run-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
511
- }
512
601
  /**
513
602
  * Get CI/CD information if available
514
603
  */
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,13 @@ export declare abstract class ModestBenchEngine implements BenchmarkEngine {
30
30
  readonly progressManager: ProgressManager;
31
31
  readonly reporterRegistry: ReporterRegistry;
32
32
  constructor(dependencies: EngineDependencies);
33
+ /**
34
+ * Generate a unique run ID
35
+ *
36
+ * Uses crypto.randomBytes for cryptographically random 7-character IDs.
37
+ * Format: 7 lowercase alphanumeric characters (e.g., "k3m9x2p")
38
+ */
39
+ private static generateRunId;
33
40
  /**
34
41
  * Discover benchmark files matching the pattern(s)
35
42
  */
@@ -92,10 +99,6 @@ export declare abstract class ModestBenchEngine implements BenchmarkEngine {
92
99
  * Execute a single benchmark suite and return its results
93
100
  */
94
101
  private executeBenchmarkSuite;
95
- /**
96
- * Generate a unique run ID
97
- */
98
- private generateRunId;
99
102
  /**
100
103
  * Get CI/CD information if available
101
104
  */
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,eAAe,EACf,YAAY,EAEZ,aAAa,EAEb,oBAAoB,EAEpB,UAAU,EAGV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAEhB,UAAU,EAEV,gBAAgB,EAEjB,2BAA0B;AAU3B;;GAEG;AACH,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,8BAAsB,iBAAkB,YAAW,eAAe;IAChE,SAAgB,aAAa,EAAE,oBAAoB,CAAC;IAEpD,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;gBAEvC,YAAY,EAAE,kBAAkB;IAQ5C;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAapB;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,QAAQ,EAAO,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC;IAuPxB;;OAEG;IACH,gBAAgB,IAAI,oBAAoB;IAIxC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIxC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC1D;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAEtB;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,oBAAoB;IAiFlC;;OAEG;YACW,qBAAqB;IA+HnC;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;YACW,SAAS;IAqCvB;;OAEG;YACW,kBAAkB;IA2BhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAuChC;;OAEG;YACW,UAAU;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAGV,eAAe,EACf,YAAY,EAEZ,aAAa,EAIb,oBAAoB,EAEpB,UAAU,EAGV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAIhB,UAAU,EAEV,gBAAgB,EAEjB,2BAA0B;AAc3B;;GAEG;AACH,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,8BAAsB,iBAAkB,YAAW,eAAe;IAChE,SAAgB,aAAa,EAAE,oBAAoB,CAAC;IAEpD,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;gBAEvC,YAAY,EAAE,kBAAkB;IAQ5C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAapB;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,QAAQ,EAAO,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC;IAwWxB;;OAEG;IACH,gBAAgB,IAAI,oBAAoB;IAIxC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIxC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC1D;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAEtB;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,oBAAoB;IAwFlC;;OAEG;YACW,qBAAqB;IA+HnC;;OAEG;YACW,SAAS;IAqCvB;;OAEG;YACW,kBAAkB;IA2BhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAuChC;;OAEG;YACW,UAAU;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
@@ -30,6 +30,13 @@ export declare abstract class ModestBenchEngine implements BenchmarkEngine {
30
30
  readonly progressManager: ProgressManager;
31
31
  readonly reporterRegistry: ReporterRegistry;
32
32
  constructor(dependencies: EngineDependencies);
33
+ /**
34
+ * Generate a unique run ID
35
+ *
36
+ * Uses crypto.randomBytes for cryptographically random 7-character IDs.
37
+ * Format: 7 lowercase alphanumeric characters (e.g., "k3m9x2p")
38
+ */
39
+ private static generateRunId;
33
40
  /**
34
41
  * Discover benchmark files matching the pattern(s)
35
42
  */
@@ -92,10 +99,6 @@ export declare abstract class ModestBenchEngine implements BenchmarkEngine {
92
99
  * Execute a single benchmark suite and return its results
93
100
  */
94
101
  private executeBenchmarkSuite;
95
- /**
96
- * Generate a unique run ID
97
- */
98
- private generateRunId;
99
102
  /**
100
103
  * Get CI/CD information if available
101
104
  */
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,eAAe,EACf,YAAY,EAEZ,aAAa,EAEb,oBAAoB,EAEpB,UAAU,EAGV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAEhB,UAAU,EAEV,gBAAgB,EAEjB,0BAA0B;AAU3B;;GAEG;AACH,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,8BAAsB,iBAAkB,YAAW,eAAe;IAChE,SAAgB,aAAa,EAAE,oBAAoB,CAAC;IAEpD,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;gBAEvC,YAAY,EAAE,kBAAkB;IAQ5C;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAapB;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,QAAQ,EAAO,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC;IAuPxB;;OAEG;IACH,gBAAgB,IAAI,oBAAoB;IAIxC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIxC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC1D;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAEtB;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,oBAAoB;IAiFlC;;OAEG;YACW,qBAAqB;IA+HnC;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;YACW,SAAS;IAqCvB;;OAEG;YACW,kBAAkB;IA2BhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAuChC;;OAEG;YACW,UAAU;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAGV,eAAe,EACf,YAAY,EAEZ,aAAa,EAIb,oBAAoB,EAEpB,UAAU,EAGV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAIhB,UAAU,EAEV,gBAAgB,EAEjB,0BAA0B;AAc3B;;GAEG;AACH,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,8BAAsB,iBAAkB,YAAW,eAAe;IAChE,SAAgB,aAAa,EAAE,oBAAoB,CAAC;IAEpD,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;gBAEvC,YAAY,EAAE,kBAAkB;IAQ5C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAapB;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,QAAQ,EAAO,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC;IAwWxB;;OAEG;IACH,gBAAgB,IAAI,oBAAoB;IAIxC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIxC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC1D;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAEtB;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,oBAAoB;IAwFlC;;OAEG;YACW,qBAAqB;IA+HnC;;OAEG;YACW,SAAS;IAqCvB;;OAEG;YACW,kBAAkB;IA2BhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAuChC;;OAEG;YACW,UAAU;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
@@ -5,7 +5,12 @@
5
5
  * Implements the BenchmarkEngine interface with dependency injection
6
6
  * architecture.
7
7
  */
8
- import { BenchmarkExecutionError, FileDiscoveryError, SchemaValidationError, SetupError, StructureValidationError, } from "../errors/index.js";
8
+ import { randomBytes } from 'node:crypto';
9
+ import { relative as pathRelative } from 'node:path';
10
+ import { BenchmarkExecutionError, BudgetExceededError, FileDiscoveryError, SchemaValidationError, SetupError, StructureValidationError, } from "../errors/index.js";
11
+ import { BaselineStorageService } from "../services/baseline-storage.js";
12
+ import { BudgetEvaluator } from "../services/budget-evaluator.js";
13
+ import { createRunId, createTaskId } from "../types/index.js";
9
14
  /**
10
15
  * Abstract benchmark execution engine with dependency injection
11
16
  *
@@ -26,6 +31,19 @@ export class ModestBenchEngine {
26
31
  this.historyStorage = dependencies.historyStorage;
27
32
  this.progressManager = dependencies.progressManager;
28
33
  }
34
+ /**
35
+ * Generate a unique run ID
36
+ *
37
+ * Uses crypto.randomBytes for cryptographically random 7-character IDs.
38
+ * Format: 7 lowercase alphanumeric characters (e.g., "k3m9x2p")
39
+ */
40
+ static generateRunId() {
41
+ // Generate random bytes, convert to hex, then to base36, take first 7 chars
42
+ const hex = randomBytes(4).toString('hex');
43
+ const num = parseInt(hex, 16);
44
+ const id = num.toString(36).padStart(7, '0').substring(0, 7);
45
+ return createRunId(id);
46
+ }
29
47
  /**
30
48
  * Discover benchmark files matching the pattern(s)
31
49
  */
@@ -63,7 +81,7 @@ export class ModestBenchEngine {
63
81
  throw new SchemaValidationError(`Validation failed: ${validationResult.errors.map((e) => e.message).join(', ')}`);
64
82
  }
65
83
  // 4. Initialize progress tracking
66
- const runId = this.generateRunId();
84
+ const runId = ModestBenchEngine.generateRunId();
67
85
  // Pre-calculate total tasks for progress tracking
68
86
  let totalTasks = 0;
69
87
  let totalSuites = 0;
@@ -120,9 +138,9 @@ export class ModestBenchEngine {
120
138
  this.progressManager.initialize(initialRun);
121
139
  // Register progress callbacks with reporters that support them
122
140
  for (const reporter of reporters) {
123
- if (typeof reporter.onProgress === 'function') {
141
+ if (reporter.onProgress) {
124
142
  this.progressManager.onProgress((state) => {
125
- void reporter.onProgress(state);
143
+ void reporter.onProgress?.(state);
126
144
  });
127
145
  }
128
146
  }
@@ -132,9 +150,12 @@ export class ModestBenchEngine {
132
150
  const fileResults = [];
133
151
  for (const filePath of files) {
134
152
  try {
135
- // Call reporter onFileStart
136
- await this.callReporters(reporters, 'onFileStart', filePath);
137
- const fileResult = await this.executeBenchmarkFile(filePath, mergedConfig, reporters, signal);
153
+ // Normalize file path to be relative to cwd
154
+ const cwd = config.cwd || process.cwd();
155
+ const relativePath = pathRelative(cwd, filePath);
156
+ // Call reporter onFileStart with relative path
157
+ await this.callReporters(reporters, 'onFileStart', relativePath);
158
+ const fileResult = await this.executeBenchmarkFile(filePath, mergedConfig, cwd, reporters, signal);
138
159
  fileResults.push(fileResult);
139
160
  // Call reporter onFileEnd
140
161
  await this.callReporters(reporters, 'onFileEnd', fileResult);
@@ -143,6 +164,13 @@ export class ModestBenchEngine {
143
164
  currentFile: filePath,
144
165
  filesCompleted: fileResults.length,
145
166
  });
167
+ // Check for bail: stop execution if any task failed
168
+ if (mergedConfig.bail) {
169
+ const hasFailedTask = fileResult.suites.some((suite) => suite.tasks.some((task) => task.error));
170
+ if (hasFailedTask) {
171
+ break;
172
+ }
173
+ }
146
174
  }
147
175
  catch (error) {
148
176
  const fileError = error instanceof Error ? error : new Error(String(error));
@@ -161,6 +189,10 @@ export class ModestBenchEngine {
161
189
  fileResults.push(errorResult);
162
190
  // Call reporter onFileEnd for error case
163
191
  await this.callReporters(reporters, 'onFileEnd', errorResult);
192
+ // Check bail flag for file-level errors
193
+ if (mergedConfig.bail) {
194
+ break;
195
+ }
164
196
  }
165
197
  }
166
198
  // Calculate summary statistics
@@ -186,9 +218,68 @@ export class ModestBenchEngine {
186
218
  }
187
219
  }
188
220
  const overallMean = totalOperations > 0 ? totalTime / totalOperations : 0;
221
+ // Evaluate budgets if configured
222
+ let budgetSummary;
223
+ if (config.budgets && Object.keys(config.budgets).length > 0) {
224
+ const evaluator = new BudgetEvaluator();
225
+ const baselineStorage = new BaselineStorageService(process.cwd());
226
+ // Collect task results
227
+ const taskResults = new Map();
228
+ for (const file of fileResults) {
229
+ for (const suite of file.suites) {
230
+ for (const task of suite.tasks) {
231
+ if (!task.error) {
232
+ // file.filePath is already relative to cwd
233
+ const taskId = createTaskId(file.filePath, suite.name, task.name);
234
+ taskResults.set(taskId, task);
235
+ }
236
+ }
237
+ }
238
+ }
239
+ // Load baseline data if needed for relative budgets
240
+ let baselineData;
241
+ // Check if any budgets use relative thresholds
242
+ const hasRelativeBudgets = Object.values(config.budgets).some((budget) => budget.relative);
243
+ if (hasRelativeBudgets) {
244
+ const baselineName = config.baseline || (await baselineStorage.getDefault());
245
+ if (baselineName) {
246
+ const baseline = await baselineStorage.getBaseline(baselineName);
247
+ if (baseline) {
248
+ // Cast keys to TaskId since they come from validated baseline storage
249
+ baselineData = new Map(Object.entries(baseline.summary));
250
+ }
251
+ else {
252
+ console.warn(`Warning: Baseline "${baselineName}" not found. Relative budgets will be skipped.`);
253
+ }
254
+ }
255
+ else {
256
+ console.warn('Warning: Relative budgets configured but no baseline specified. Relative budgets will be skipped.');
257
+ }
258
+ }
259
+ // Evaluate budgets
260
+ budgetSummary = evaluator.evaluateRun(config.budgets, taskResults, baselineData);
261
+ // Notify reporters of budget results
262
+ for (const reporter of reporters) {
263
+ if (reporter.onBudgetResult) {
264
+ await reporter.onBudgetResult(budgetSummary);
265
+ }
266
+ }
267
+ // Handle budget failures based on budgetMode
268
+ if (budgetSummary.failed > 0) {
269
+ const mode = config.budgetMode || 'fail';
270
+ if (mode === 'fail') {
271
+ throw new BudgetExceededError(`${budgetSummary.failed} of ${budgetSummary.total} budget(s) exceeded`, budgetSummary);
272
+ }
273
+ else if (mode === 'warn') {
274
+ console.warn(`Warning: ${budgetSummary.failed} of ${budgetSummary.total} budget(s) exceeded`);
275
+ }
276
+ // mode === 'report': just include in output, don't fail
277
+ }
278
+ }
189
279
  const endTime = new Date();
190
280
  const finalRun = {
191
281
  ...initialRun,
282
+ budgetSummary,
192
283
  duration: endTime.getTime() - startTime.getTime(),
193
284
  endTime,
194
285
  files: fileResults,
@@ -320,7 +411,7 @@ export class ModestBenchEngine {
320
411
  /**
321
412
  * Execute a single benchmark file and return its results
322
413
  */
323
- async executeBenchmarkFile(filePath, config, reporters = [], signal) {
414
+ async executeBenchmarkFile(filePath, config, cwd, reporters = [], signal) {
324
415
  const startTime = new Date();
325
416
  try {
326
417
  // Load the benchmark file using the file loader
@@ -347,11 +438,13 @@ export class ModestBenchEngine {
347
438
  }
348
439
  }
349
440
  const endTime = new Date();
441
+ // Normalize file path to be relative to cwd
442
+ const relativePath = pathRelative(cwd, filePath);
350
443
  return {
351
444
  config: benchmarkDef.config,
352
445
  duration: endTime.getTime() - startTime.getTime(),
353
446
  endTime,
354
- filePath,
447
+ filePath: relativePath,
355
448
  startTime,
356
449
  suites: suiteResults,
357
450
  };
@@ -359,11 +452,13 @@ export class ModestBenchEngine {
359
452
  catch (error) {
360
453
  const endTime = new Date();
361
454
  const executionError = error instanceof Error ? error : new Error(String(error));
455
+ // Normalize file path to be relative to cwd
456
+ const relativePath = pathRelative(cwd, filePath);
362
457
  return {
363
458
  duration: endTime.getTime() - startTime.getTime(),
364
459
  endTime,
365
460
  error: executionError,
366
- filePath,
461
+ filePath: relativePath,
367
462
  startTime,
368
463
  suites: [],
369
464
  };
@@ -467,12 +562,6 @@ export class ModestBenchEngine {
467
562
  };
468
563
  }
469
564
  }
470
- /**
471
- * Generate a unique run ID
472
- */
473
- generateRunId() {
474
- return `run-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
475
- }
476
565
  /**
477
566
  * Get CI/CD information if available
478
567
  */