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
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Trends Formatter
3
+ *
4
+ * Formats performance trend analysis with visualizations in human and JSON
5
+ * formats.
6
+ */
7
+ import { stripVTControlCharacters } from 'node:util';
8
+ import { colorize } from "../../utils/ansi.js";
9
+ import { generateBarChart, generateSparkline } from "./visualization.js";
10
+ /**
11
+ * Nanoseconds per millisecond conversion constant
12
+ */
13
+ const NS_PER_MS = 1_000_000;
14
+ /**
15
+ * Nanoseconds per microsecond conversion constant
16
+ */
17
+ const NS_PER_US = 1_000;
18
+ /**
19
+ * Intelligently format a time range with appropriate precision Displays
20
+ * microseconds for small values (< 1ms) for better clarity
21
+ */
22
+ const formatTimeRange = (minNs, maxNs) => {
23
+ // If both values are below 1ms, show in microseconds for better precision
24
+ if (maxNs < NS_PER_MS) {
25
+ const minUs = minNs / NS_PER_US;
26
+ const maxUs = maxNs / NS_PER_US;
27
+ return `${minUs.toFixed(2)}-${maxUs.toFixed(2)}µs`;
28
+ }
29
+ // Otherwise show in milliseconds
30
+ const minMs = minNs / NS_PER_MS;
31
+ const maxMs = maxNs / NS_PER_MS;
32
+ return `${minMs.toFixed(3)}-${maxMs.toFixed(3)}ms`;
33
+ };
34
+ /**
35
+ * Calculate visible string length, stripping ANSI escape codes
36
+ */
37
+ const getVisualLength = (str) => stripVTControlCharacters(str).length;
38
+ /**
39
+ * Formatter for history trends command
40
+ */
41
+ export class HistoryTrendsFormatter {
42
+ /**
43
+ * Format as human-readable trends with visualizations
44
+ */
45
+ formatHuman(data) {
46
+ const lines = [];
47
+ lines.push(colorize('brightMagenta', colorize('bold', `\nPerformance Trends (${data.runs} runs)`)));
48
+ if (data.timespan.start && data.timespan.end) {
49
+ lines.push(colorize('dim', `Time range: ${data.timespan.start.toLocaleDateString()} to ${data.timespan.end.toLocaleDateString()}`));
50
+ }
51
+ lines.push('');
52
+ // Summary statistics
53
+ lines.push(colorize('brightBlue', 'Summary:'));
54
+ lines.push(` ${colorize('brightCyan', '▲')} ${data.summary.improvingTasks} improving ${colorize('brightRed', '▼')} ${data.summary.degradingTasks} degrading ${colorize('dim', '→')} ${data.summary.stableTasks} stable`);
55
+ lines.push('');
56
+ // Task Performance Summary Table
57
+ lines.push(colorize('brightMagenta', 'Task Performance Summary:'));
58
+ lines.push('');
59
+ for (const trendData of data.trends) {
60
+ // Show top 20
61
+ const trendIcon = trendData.trend === 'improving'
62
+ ? colorize('brightCyan', '▲')
63
+ : trendData.trend === 'degrading'
64
+ ? colorize('brightRed', '▼')
65
+ : colorize('dim', '→');
66
+ const changeColor = trendData.percentChange < -5
67
+ ? 'brightCyan'
68
+ : trendData.percentChange > 5
69
+ ? 'brightRed'
70
+ : 'dim';
71
+ const changeSign = trendData.percentChange >= 0 ? '+' : '';
72
+ const changeStr = `${changeSign}${trendData.percentChange.toFixed(1)}%`;
73
+ // Generate sparkline - scale with number of data points (min 12, max 20)
74
+ const values = trendData.dataPoints.map((dp) => dp.mean);
75
+ const sparklineWidth = Math.min(20, Math.max(12, trendData.runs));
76
+ const sparkline = generateSparkline(values, sparklineWidth);
77
+ const sparklineColor = trendData.trend === 'improving'
78
+ ? 'brightCyan'
79
+ : trendData.trend === 'degrading'
80
+ ? 'brightRed'
81
+ : 'cyan';
82
+ const taskName = colorize('white', trendData.task);
83
+ const percentDisplay = colorize(changeColor, changeStr.padStart(8));
84
+ const sparklineDisplay = colorize(sparklineColor, sparkline);
85
+ // Layout: icon (2) + task name + padding + percent (8) + spaces (2) + sparkline
86
+ // Position percent+graph at visual column 60 for consistent alignment
87
+ const prefix = ` ${trendIcon} ${taskName}`;
88
+ const prefixVisualLength = getVisualLength(prefix);
89
+ const targetColumn = 60;
90
+ if (prefixVisualLength > targetColumn) {
91
+ // Task name is too long, wrap to next line
92
+ lines.push(prefix);
93
+ lines.push(`${' '.repeat(targetColumn)}${percentDisplay} ${sparklineDisplay}`);
94
+ }
95
+ else {
96
+ // Fit on one line with padding
97
+ const padding = Math.max(1, targetColumn - prefixVisualLength);
98
+ const paddingStr = ' '.repeat(padding);
99
+ lines.push(`${prefix}${paddingStr}${percentDisplay} ${sparklineDisplay}`);
100
+ }
101
+ }
102
+ // Show all trends (no limit)
103
+ lines.push('');
104
+ // Show regressions if any
105
+ if (data.regressions.length > 0) {
106
+ lines.push(colorize('brightRed', colorize('bold', 'Regressions Detected:')));
107
+ lines.push('');
108
+ for (const regression of data.regressions) {
109
+ lines.push(` ${colorize('brightRed', '▼')} ${colorize('white', regression.task)}: ${colorize('brightRed', `${regression.percentChange.toFixed(1)}% slower`)} (${regression.runs} runs)`);
110
+ }
111
+ lines.push('');
112
+ }
113
+ // Show low-confidence regressions (insufficient data)
114
+ if (data.lowConfidenceRegressions.length > 0) {
115
+ lines.push(colorize('brightYellow', colorize('bold', '! Potential Regressions (insufficient data):')));
116
+ lines.push('');
117
+ for (const regression of data.lowConfidenceRegressions) {
118
+ lines.push(` ${colorize('brightYellow', '!')} ${colorize('white', regression.task)}: ${colorize('brightYellow', `${regression.percentChange.toFixed(1)}% slower`)} (${regression.runs} run${regression.runs !== 1 ? 's' : ''})`);
119
+ }
120
+ lines.push('');
121
+ }
122
+ // Show performance distribution for most important task (highest RME) if we have enough data
123
+ // Find task with highest relative margin of error - the most variable/unreliable one
124
+ const mostImportantTrend = data.trends
125
+ .filter((t) => t.runs >= 5)
126
+ .sort((a, b) => {
127
+ const rmeA = (a.statistics.stdDeviation / a.statistics.mean) * 100;
128
+ const rmeB = (b.statistics.stdDeviation / b.statistics.mean) * 100;
129
+ return rmeB - rmeA; // Descending order (highest RME first)
130
+ })[0];
131
+ if (mostImportantTrend) {
132
+ lines.push(colorize('brightMagenta', 'Performance Distribution (most variable task):'));
133
+ lines.push(colorize('white', mostImportantTrend.task));
134
+ const cv = ((mostImportantTrend.statistics.stdDeviation /
135
+ mostImportantTrend.statistics.mean) *
136
+ 100).toFixed(1);
137
+ lines.push(colorize('dim', ` Variability: ${cv}%`));
138
+ lines.push('');
139
+ // Create distribution buckets
140
+ const values = mostImportantTrend.dataPoints.map((dp) => dp.mean);
141
+ const min = Math.min(...values);
142
+ const max = Math.max(...values);
143
+ const range = max - min;
144
+ const numBuckets = Math.min(5, mostImportantTrend.runs);
145
+ const bucketSize = range / numBuckets;
146
+ const buckets = [];
147
+ for (let i = 0; i < numBuckets; i++) {
148
+ const bucketMin = min + i * bucketSize;
149
+ const bucketMax = min + (i + 1) * bucketSize;
150
+ const count = values.filter((v) => v >= bucketMin &&
151
+ (i === numBuckets - 1 ? v <= bucketMax : v < bucketMax)).length;
152
+ const label = formatTimeRange(bucketMin, bucketMax);
153
+ buckets.push({
154
+ count,
155
+ label,
156
+ max: bucketMax,
157
+ min: bucketMin,
158
+ });
159
+ }
160
+ // Filter out empty buckets for cleaner display
161
+ const nonEmptyBuckets = buckets.filter((b) => b.count > 0);
162
+ const chart = generateBarChart(nonEmptyBuckets, 25);
163
+ for (const line of chart) {
164
+ lines.push(colorize('brightCyan', line));
165
+ }
166
+ lines.push('');
167
+ lines.push(colorize('dim', ` Mean: ${(mostImportantTrend.statistics.mean / NS_PER_MS).toFixed(3)}ms Median: ${(mostImportantTrend.statistics.median / NS_PER_MS).toFixed(3)}ms StdDev: ${(mostImportantTrend.statistics.stdDeviation / NS_PER_MS).toFixed(3)}ms`));
168
+ lines.push('');
169
+ }
170
+ return lines.join('\n');
171
+ }
172
+ /**
173
+ * Format as JSON
174
+ */
175
+ formatJson(data) {
176
+ return JSON.stringify({
177
+ regressions: data.regressions,
178
+ summary: {
179
+ degradingTasks: data.summary.degradingTasks,
180
+ improvingTasks: data.summary.improvingTasks,
181
+ runs: data.runs,
182
+ stableTasks: data.summary.stableTasks,
183
+ timespan: data.timespan,
184
+ totalTasks: data.summary.totalTasks,
185
+ },
186
+ trends: data.trends,
187
+ }, null, 2);
188
+ }
189
+ }
190
+ //# sourceMappingURL=trends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trends.js","sourceRoot":"","sources":["../../../src/formatters/history/trends.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * Visualization Utilities for History Formatters
4
+ *
5
+ * Pure functions for generating ASCII visualizations (sparklines, bar charts)
6
+ * for trend analysis and performance distribution displays.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.generateSparkline = exports.generateBarChart = void 0;
10
+ /**
11
+ * Generate bar chart histogram from distribution buckets
12
+ *
13
+ * @param distribution - Array of distribution buckets with counts
14
+ * @param maxWidth - Maximum width of bars (default 20)
15
+ * @returns Array of formatted bar chart lines
16
+ */
17
+ const generateBarChart = (distribution, maxWidth = 20) => {
18
+ if (distribution.length === 0) {
19
+ return [];
20
+ }
21
+ // Find maximum count for scaling
22
+ const maxCount = Math.max(...distribution.map((b) => b.count));
23
+ if (maxCount === 0) {
24
+ return distribution.map((bucket) => ` ${bucket.label} (0 runs)`);
25
+ }
26
+ // Block characters for bar visualization
27
+ const fullBlock = '█';
28
+ const lightBlock = '░';
29
+ return distribution.map((bucket) => {
30
+ const ratio = bucket.count / maxCount;
31
+ const barLength = Math.round(ratio * maxWidth);
32
+ const fullBlocks = fullBlock.repeat(barLength);
33
+ const emptyBlocks = lightBlock.repeat(maxWidth - barLength);
34
+ return ` ${fullBlocks}${emptyBlocks} ${bucket.label} (${bucket.count} run${bucket.count !== 1 ? 's' : ''})`;
35
+ });
36
+ };
37
+ exports.generateBarChart = generateBarChart;
38
+ /**
39
+ * Generate ASCII sparkline from values
40
+ *
41
+ * @param values - Array of numeric values to visualize
42
+ * @param width - Maximum width of sparkline (downsamples if needed)
43
+ * @returns ASCII sparkline string using block characters
44
+ */
45
+ const generateSparkline = (values, width) => {
46
+ if (values.length === 0) {
47
+ return '';
48
+ }
49
+ // Sparkline characters from lowest to highest
50
+ const sparkChars = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
51
+ // Downsample if width is specified and values exceed it
52
+ let processedValues = values;
53
+ if (width && values.length > width) {
54
+ const step = values.length / width;
55
+ processedValues = [];
56
+ for (let i = 0; i < width; i++) {
57
+ const idx = Math.floor(i * step);
58
+ processedValues.push(values[idx] ?? 0);
59
+ }
60
+ }
61
+ // Find min and max for scaling
62
+ const min = Math.min(...processedValues);
63
+ const max = Math.max(...processedValues);
64
+ const range = max - min;
65
+ // Handle case where all values are the same
66
+ if (range === 0) {
67
+ return (sparkChars[4] ?? '▄').repeat(processedValues.length); // Use middle character
68
+ }
69
+ // Map each value to a sparkline character
70
+ return processedValues
71
+ .map((value) => {
72
+ const normalized = (value - min) / range;
73
+ const index = Math.min(Math.floor(normalized * sparkChars.length), sparkChars.length - 1);
74
+ return sparkChars[index] ?? '▄';
75
+ })
76
+ .join('');
77
+ };
78
+ exports.generateSparkline = generateSparkline;
79
+ //# sourceMappingURL=visualization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualization.js","sourceRoot":"","sources":["../../../src/formatters/history/visualization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Visualization Utilities for History Formatters
3
+ *
4
+ * Pure functions for generating ASCII visualizations (sparklines, bar charts)
5
+ * for trend analysis and performance distribution displays.
6
+ */
7
+ import type { DistributionBucket } from "../../services/history/models.cjs";
8
+ /**
9
+ * Generate bar chart histogram from distribution buckets
10
+ *
11
+ * @param distribution - Array of distribution buckets with counts
12
+ * @param maxWidth - Maximum width of bars (default 20)
13
+ * @returns Array of formatted bar chart lines
14
+ */
15
+ export declare const generateBarChart: (distribution: DistributionBucket[], maxWidth?: number) => string[];
16
+ /**
17
+ * Generate ASCII sparkline from values
18
+ *
19
+ * @param values - Array of numeric values to visualize
20
+ * @param width - Maximum width of sparkline (downsamples if needed)
21
+ * @returns ASCII sparkline string using block characters
22
+ */
23
+ export declare const generateSparkline: (values: number[], width?: number) => string;
24
+ //# sourceMappingURL=visualization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualization.d.ts","sourceRoot":"","sources":["../../../src/formatters/history/visualization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,0CAAyC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,cAAc,kBAAkB,EAAE,EAClC,iBAAa,KACZ,MAAM,EAwBR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,KAAG,MAwCpE,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Visualization Utilities for History Formatters
3
+ *
4
+ * Pure functions for generating ASCII visualizations (sparklines, bar charts)
5
+ * for trend analysis and performance distribution displays.
6
+ */
7
+ import type { DistributionBucket } from "../../services/history/models.js";
8
+ /**
9
+ * Generate bar chart histogram from distribution buckets
10
+ *
11
+ * @param distribution - Array of distribution buckets with counts
12
+ * @param maxWidth - Maximum width of bars (default 20)
13
+ * @returns Array of formatted bar chart lines
14
+ */
15
+ export declare const generateBarChart: (distribution: DistributionBucket[], maxWidth?: number) => string[];
16
+ /**
17
+ * Generate ASCII sparkline from values
18
+ *
19
+ * @param values - Array of numeric values to visualize
20
+ * @param width - Maximum width of sparkline (downsamples if needed)
21
+ * @returns ASCII sparkline string using block characters
22
+ */
23
+ export declare const generateSparkline: (values: number[], width?: number) => string;
24
+ //# sourceMappingURL=visualization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualization.d.ts","sourceRoot":"","sources":["../../../src/formatters/history/visualization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,yCAAyC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,cAAc,kBAAkB,EAAE,EAClC,iBAAa,KACZ,MAAM,EAwBR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,KAAG,MAwCpE,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Visualization Utilities for History Formatters
3
+ *
4
+ * Pure functions for generating ASCII visualizations (sparklines, bar charts)
5
+ * for trend analysis and performance distribution displays.
6
+ */
7
+ /**
8
+ * Generate bar chart histogram from distribution buckets
9
+ *
10
+ * @param distribution - Array of distribution buckets with counts
11
+ * @param maxWidth - Maximum width of bars (default 20)
12
+ * @returns Array of formatted bar chart lines
13
+ */
14
+ export const generateBarChart = (distribution, maxWidth = 20) => {
15
+ if (distribution.length === 0) {
16
+ return [];
17
+ }
18
+ // Find maximum count for scaling
19
+ const maxCount = Math.max(...distribution.map((b) => b.count));
20
+ if (maxCount === 0) {
21
+ return distribution.map((bucket) => ` ${bucket.label} (0 runs)`);
22
+ }
23
+ // Block characters for bar visualization
24
+ const fullBlock = '█';
25
+ const lightBlock = '░';
26
+ return distribution.map((bucket) => {
27
+ const ratio = bucket.count / maxCount;
28
+ const barLength = Math.round(ratio * maxWidth);
29
+ const fullBlocks = fullBlock.repeat(barLength);
30
+ const emptyBlocks = lightBlock.repeat(maxWidth - barLength);
31
+ return ` ${fullBlocks}${emptyBlocks} ${bucket.label} (${bucket.count} run${bucket.count !== 1 ? 's' : ''})`;
32
+ });
33
+ };
34
+ /**
35
+ * Generate ASCII sparkline from values
36
+ *
37
+ * @param values - Array of numeric values to visualize
38
+ * @param width - Maximum width of sparkline (downsamples if needed)
39
+ * @returns ASCII sparkline string using block characters
40
+ */
41
+ export const generateSparkline = (values, width) => {
42
+ if (values.length === 0) {
43
+ return '';
44
+ }
45
+ // Sparkline characters from lowest to highest
46
+ const sparkChars = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
47
+ // Downsample if width is specified and values exceed it
48
+ let processedValues = values;
49
+ if (width && values.length > width) {
50
+ const step = values.length / width;
51
+ processedValues = [];
52
+ for (let i = 0; i < width; i++) {
53
+ const idx = Math.floor(i * step);
54
+ processedValues.push(values[idx] ?? 0);
55
+ }
56
+ }
57
+ // Find min and max for scaling
58
+ const min = Math.min(...processedValues);
59
+ const max = Math.max(...processedValues);
60
+ const range = max - min;
61
+ // Handle case where all values are the same
62
+ if (range === 0) {
63
+ return (sparkChars[4] ?? '▄').repeat(processedValues.length); // Use middle character
64
+ }
65
+ // Map each value to a sparkline character
66
+ return processedValues
67
+ .map((value) => {
68
+ const normalized = (value - min) / range;
69
+ const index = Math.min(Math.floor(normalized * sparkChars.length), sparkChars.length - 1);
70
+ return sparkChars[index] ?? '▄';
71
+ })
72
+ .join('');
73
+ };
74
+ //# sourceMappingURL=visualization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualization.js","sourceRoot":"","sources":["../../../src/formatters/history/visualization.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -21,29 +21,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
21
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.FileHistoryStorage = exports.ModestBenchReporterRegistry = exports.CompositeReporter = exports.BaseReporter = exports.JsonReporter = exports.HumanReporter = exports.CsvReporter = exports.ModestBenchProgressManager = exports.removeOutliersIQR = exports.calculateStatistics = exports.BenchmarkFileLoader = exports.TinybenchEngine = exports.AccurateEngine = exports.ModestBenchEngine = exports.ModestBenchConfigurationManager = exports.modestbench = void 0;
24
+ exports.findPackageRoot = exports.ModestBenchReporterRegistry = exports.CompositeReporter = exports.BaseReporter = exports.ModestBenchProgressManager = exports.runWithProfiling = exports.parseProfile = exports.filterProfile = exports.FileHistoryStorage = exports.BenchmarkFileLoader = exports.ModestBenchConfigurationManager = exports.ProfileHumanReporter = exports.JsonReporter = exports.HumanReporter = exports.CsvReporter = exports.removeOutliersIQR = exports.calculateStatistics = exports.TinybenchEngine = exports.AccurateEngine = exports.ModestBenchEngine = exports.modestbench = void 0;
25
25
  var bootstrap_js_1 = require("./bootstrap.cjs");
26
26
  Object.defineProperty(exports, "modestbench", { enumerable: true, get: function () { return bootstrap_js_1.bootstrap; } });
27
- // Configuration management
28
- var manager_js_1 = require("./config/manager.cjs");
29
- Object.defineProperty(exports, "ModestBenchConfigurationManager", { enumerable: true, get: function () { return manager_js_1.ModestBenchConfigurationManager; } });
30
- // Core engine and loader
27
+ // Core engine
31
28
  var engine_js_1 = require("./core/engine.cjs");
32
29
  Object.defineProperty(exports, "ModestBenchEngine", { enumerable: true, get: function () { return engine_js_1.ModestBenchEngine; } });
33
30
  var index_js_1 = require("./core/engines/index.cjs");
34
31
  Object.defineProperty(exports, "AccurateEngine", { enumerable: true, get: function () { return index_js_1.AccurateEngine; } });
35
32
  Object.defineProperty(exports, "TinybenchEngine", { enumerable: true, get: function () { return index_js_1.TinybenchEngine; } });
36
- var loader_js_1 = require("./core/loader.cjs");
37
- Object.defineProperty(exports, "BenchmarkFileLoader", { enumerable: true, get: function () { return loader_js_1.BenchmarkFileLoader; } });
38
33
  // Statistical utilities
39
34
  var stats_utils_js_1 = require("./core/stats-utils.cjs");
40
35
  Object.defineProperty(exports, "calculateStatistics", { enumerable: true, get: function () { return stats_utils_js_1.calculateStatistics; } });
41
36
  Object.defineProperty(exports, "removeOutliersIQR", { enumerable: true, get: function () { return stats_utils_js_1.removeOutliersIQR; } });
42
37
  // Error classes
43
38
  __exportStar(require("./errors/index.cjs"), exports);
44
- // Progress tracking
45
- var manager_js_2 = require("./progress/manager.cjs");
46
- Object.defineProperty(exports, "ModestBenchProgressManager", { enumerable: true, get: function () { return manager_js_2.ModestBenchProgressManager; } });
47
39
  // Reporters
48
40
  var csv_js_1 = require("./reporters/csv.cjs");
49
41
  Object.defineProperty(exports, "CsvReporter", { enumerable: true, get: function () { return csv_js_1.CsvReporter; } });
@@ -51,13 +43,31 @@ var human_js_1 = require("./reporters/human.cjs");
51
43
  Object.defineProperty(exports, "HumanReporter", { enumerable: true, get: function () { return human_js_1.HumanReporter; } });
52
44
  var json_js_1 = require("./reporters/json.cjs");
53
45
  Object.defineProperty(exports, "JsonReporter", { enumerable: true, get: function () { return json_js_1.JsonReporter; } });
54
- var registry_js_1 = require("./reporters/registry.cjs");
55
- Object.defineProperty(exports, "BaseReporter", { enumerable: true, get: function () { return registry_js_1.BaseReporter; } });
56
- Object.defineProperty(exports, "CompositeReporter", { enumerable: true, get: function () { return registry_js_1.CompositeReporter; } });
57
- Object.defineProperty(exports, "ModestBenchReporterRegistry", { enumerable: true, get: function () { return registry_js_1.ModestBenchReporterRegistry; } });
58
- // Storage
59
- var history_js_1 = require("./storage/history.cjs");
60
- Object.defineProperty(exports, "FileHistoryStorage", { enumerable: true, get: function () { return history_js_1.FileHistoryStorage; } });
46
+ var profile_human_js_1 = require("./reporters/profile-human.cjs");
47
+ Object.defineProperty(exports, "ProfileHumanReporter", { enumerable: true, get: function () { return profile_human_js_1.ProfileHumanReporter; } });
48
+ // Services
49
+ var config_manager_js_1 = require("./services/config-manager.cjs");
50
+ Object.defineProperty(exports, "ModestBenchConfigurationManager", { enumerable: true, get: function () { return config_manager_js_1.ModestBenchConfigurationManager; } });
51
+ var file_loader_js_1 = require("./services/file-loader.cjs");
52
+ Object.defineProperty(exports, "BenchmarkFileLoader", { enumerable: true, get: function () { return file_loader_js_1.BenchmarkFileLoader; } });
53
+ var history_storage_js_1 = require("./services/history-storage.cjs");
54
+ Object.defineProperty(exports, "FileHistoryStorage", { enumerable: true, get: function () { return history_storage_js_1.FileHistoryStorage; } });
55
+ // Profiler services
56
+ var profile_filter_js_1 = require("./services/profiler/profile-filter.cjs");
57
+ Object.defineProperty(exports, "filterProfile", { enumerable: true, get: function () { return profile_filter_js_1.filterProfile; } });
58
+ var profile_parser_js_1 = require("./services/profiler/profile-parser.cjs");
59
+ Object.defineProperty(exports, "parseProfile", { enumerable: true, get: function () { return profile_parser_js_1.parseProfile; } });
60
+ var profile_runner_js_1 = require("./services/profiler/profile-runner.cjs");
61
+ Object.defineProperty(exports, "runWithProfiling", { enumerable: true, get: function () { return profile_runner_js_1.runWithProfiling; } });
62
+ var progress_manager_js_1 = require("./services/progress-manager.cjs");
63
+ Object.defineProperty(exports, "ModestBenchProgressManager", { enumerable: true, get: function () { return progress_manager_js_1.ModestBenchProgressManager; } });
64
+ var reporter_registry_js_1 = require("./services/reporter-registry.cjs");
65
+ Object.defineProperty(exports, "BaseReporter", { enumerable: true, get: function () { return reporter_registry_js_1.BaseReporter; } });
66
+ Object.defineProperty(exports, "CompositeReporter", { enumerable: true, get: function () { return reporter_registry_js_1.CompositeReporter; } });
67
+ Object.defineProperty(exports, "ModestBenchReporterRegistry", { enumerable: true, get: function () { return reporter_registry_js_1.ModestBenchReporterRegistry; } });
61
68
  // Export all types
62
69
  __exportStar(require("./types/index.cjs"), exports);
70
+ // Utilities
71
+ var package_js_1 = require("./utils/package.cjs");
72
+ Object.defineProperty(exports, "findPackageRoot", { enumerable: true, get: function () { return package_js_1.findPackageRoot; } });
63
73
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,gDAA0D;AAAjD,2GAAA,SAAS,OAAe;AACjC,2BAA2B;AAC3B,mDAAsE;AAA7D,6HAAA,+BAA+B,OAAA;AAExC,yBAAyB;AACzB,+CAAqD;AAA5C,8GAAA,iBAAiB,OAAA;AAC1B,qDAA0E;AAAjE,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAExC,+CAAuD;AAA9C,gHAAA,mBAAmB,OAAA;AAE5B,wBAAwB;AACxB,yDAI+B;AAH7B,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AAInB,gBAAgB;AAChB,qDAAkC;AAElC,oBAAoB;AACpB,qDAAmE;AAA1D,wHAAA,0BAA0B,OAAA;AACnC,YAAY;AACZ,8CAAiD;AAAxC,qGAAA,WAAW,OAAA;AACpB,kDAAqD;AAA5C,yGAAA,aAAa,OAAA;AACtB,gDAAmD;AAA1C,uGAAA,YAAY,OAAA;AAErB,wDAIiC;AAH/B,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,0HAAA,2BAA2B,OAAA;AAG7B,UAAU;AACV,oDAA0D;AAAjD,gHAAA,kBAAkB,OAAA;AAE3B,mBAAmB;AACnB,oDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,gDAA0D;AAAjD,2GAAA,SAAS,OAAe;AAEjC,cAAc;AACd,+CAAqD;AAA5C,8GAAA,iBAAiB,OAAA;AAC1B,qDAA0E;AAAjE,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAExC,wBAAwB;AACxB,yDAI+B;AAH7B,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AAInB,gBAAgB;AAChB,qDAAkC;AAElC,YAAY;AACZ,8CAAiD;AAAxC,qGAAA,WAAW,OAAA;AACpB,kDAAqD;AAA5C,yGAAA,aAAa,OAAA;AACtB,gDAAmD;AAA1C,uGAAA,YAAY,OAAA;AACrB,kEAAoE;AAA3D,wHAAA,oBAAoB,OAAA;AAE7B,WAAW;AACX,mEAA+E;AAAtE,oIAAA,+BAA+B,OAAA;AACxC,6DAAgE;AAAvD,qHAAA,mBAAmB,OAAA;AAC5B,qEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAC3B,oBAAoB;AACpB,4EAAsE;AAA7D,kHAAA,aAAa,OAAA;AACtB,4EAAqE;AAA5D,iHAAA,YAAY,OAAA;AAErB,4EAAyE;AAAhE,qHAAA,gBAAgB,OAAA;AACzB,uEAA4E;AAAnE,iIAAA,0BAA0B,OAAA;AACnC,yEAIyC;AAHvC,oHAAA,YAAY,OAAA;AACZ,yHAAA,iBAAiB,OAAA;AACjB,mIAAA,2BAA2B,OAAA;AAG7B,mBAAmB;AACnB,oDAAiC;AAEjC,YAAY;AACZ,kDAAqD;AAA5C,6GAAA,eAAe,OAAA"}
package/dist/index.d.cts CHANGED
@@ -6,17 +6,22 @@
6
6
  * library.
7
7
  */
8
8
  export { bootstrap as modestbench } from "./bootstrap.cjs";
9
- export { ModestBenchConfigurationManager } from "./config/manager.cjs";
10
9
  export { ModestBenchEngine } from "./core/engine.cjs";
11
10
  export { AccurateEngine, TinybenchEngine } from "./core/engines/index.cjs";
12
- export { BenchmarkFileLoader } from "./core/loader.cjs";
13
11
  export { calculateStatistics, removeOutliersIQR, type SampleStatistics, } from "./core/stats-utils.cjs";
14
12
  export * from "./errors/index.cjs";
15
- export { ModestBenchProgressManager } from "./progress/manager.cjs";
16
13
  export { CsvReporter } from "./reporters/csv.cjs";
17
14
  export { HumanReporter } from "./reporters/human.cjs";
18
15
  export { JsonReporter } from "./reporters/json.cjs";
19
- export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./reporters/registry.cjs";
20
- export { FileHistoryStorage } from "./storage/history.cjs";
16
+ export { ProfileHumanReporter } from "./reporters/profile-human.cjs";
17
+ export { ModestBenchConfigurationManager } from "./services/config-manager.cjs";
18
+ export { BenchmarkFileLoader } from "./services/file-loader.cjs";
19
+ export { FileHistoryStorage } from "./services/history-storage.cjs";
20
+ export { filterProfile } from "./services/profiler/profile-filter.cjs";
21
+ export { parseProfile } from "./services/profiler/profile-parser.cjs";
22
+ export { runWithProfiling } from "./services/profiler/profile-runner.cjs";
23
+ export { ModestBenchProgressManager } from "./services/progress-manager.cjs";
24
+ export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./services/reporter-registry.cjs";
21
25
  export * from "./types/index.cjs";
26
+ export { findPackageRoot } from "./utils/package.cjs";
22
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,wBAAuB;AAE1D,OAAO,EAAE,+BAA+B,EAAE,6BAA4B;AAGtE,OAAO,EAAE,iBAAiB,EAAE,0BAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iCAAgC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,0BAAyB;AAGvD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,+BAA8B;AAG/B,mCAAkC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,+BAA8B;AAEnE,OAAO,EAAE,WAAW,EAAE,4BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,8BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,6BAA4B;AAEnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,iCAAgC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,8BAA6B;AAG1D,kCAAiC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,wBAAuB;AAG1D,OAAO,EAAE,iBAAiB,EAAE,0BAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iCAAgC;AAG1E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,+BAA8B;AAG/B,mCAAkC;AAGlC,OAAO,EAAE,WAAW,EAAE,4BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,8BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,6BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,sCAAqC;AAGpE,OAAO,EAAE,+BAA+B,EAAE,sCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,mCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,uCAAsC;AAEnE,OAAO,EAAE,aAAa,EAAE,+CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,+CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,+CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,wCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,yCAAwC;AAGzC,kCAAiC;AAGjC,OAAO,EAAE,eAAe,EAAE,4BAA2B"}
package/dist/index.d.ts CHANGED
@@ -6,17 +6,22 @@
6
6
  * library.
7
7
  */
8
8
  export { bootstrap as modestbench } from "./bootstrap.js";
9
- export { ModestBenchConfigurationManager } from "./config/manager.js";
10
9
  export { ModestBenchEngine } from "./core/engine.js";
11
10
  export { AccurateEngine, TinybenchEngine } from "./core/engines/index.js";
12
- export { BenchmarkFileLoader } from "./core/loader.js";
13
11
  export { calculateStatistics, removeOutliersIQR, type SampleStatistics, } from "./core/stats-utils.js";
14
12
  export * from "./errors/index.js";
15
- export { ModestBenchProgressManager } from "./progress/manager.js";
16
13
  export { CsvReporter } from "./reporters/csv.js";
17
14
  export { HumanReporter } from "./reporters/human.js";
18
15
  export { JsonReporter } from "./reporters/json.js";
19
- export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./reporters/registry.js";
20
- export { FileHistoryStorage } from "./storage/history.js";
16
+ export { ProfileHumanReporter } from "./reporters/profile-human.js";
17
+ export { ModestBenchConfigurationManager } from "./services/config-manager.js";
18
+ export { BenchmarkFileLoader } from "./services/file-loader.js";
19
+ export { FileHistoryStorage } from "./services/history-storage.js";
20
+ export { filterProfile } from "./services/profiler/profile-filter.js";
21
+ export { parseProfile } from "./services/profiler/profile-parser.js";
22
+ export { runWithProfiling } from "./services/profiler/profile-runner.js";
23
+ export { ModestBenchProgressManager } from "./services/progress-manager.js";
24
+ export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./services/reporter-registry.js";
21
25
  export * from "./types/index.js";
26
+ export { findPackageRoot } from "./utils/package.js";
22
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAE1D,OAAO,EAAE,+BAA+B,EAAE,4BAA4B;AAGtE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB;AAGvD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,8BAA8B;AAG/B,kCAAkC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,8BAA8B;AAEnE,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AAEnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,gCAAgC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,6BAA6B;AAG1D,iCAAiC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAG1D,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAG1E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,8BAA8B;AAG/B,kCAAkC;AAGlC,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AAGpE,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,sCAAsC;AAEnE,OAAO,EAAE,aAAa,EAAE,8CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,8CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,8CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,uCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,wCAAwC;AAGzC,iCAAiC;AAGjC,OAAO,EAAE,eAAe,EAAE,2BAA2B"}
package/dist/index.js CHANGED
@@ -6,25 +6,30 @@
6
6
  * library.
7
7
  */
8
8
  export { bootstrap as modestbench } from "./bootstrap.js";
9
- // Configuration management
10
- export { ModestBenchConfigurationManager } from "./config/manager.js";
11
- // Core engine and loader
9
+ // Core engine
12
10
  export { ModestBenchEngine } from "./core/engine.js";
13
11
  export { AccurateEngine, TinybenchEngine } from "./core/engines/index.js";
14
- export { BenchmarkFileLoader } from "./core/loader.js";
15
12
  // Statistical utilities
16
13
  export { calculateStatistics, removeOutliersIQR, } from "./core/stats-utils.js";
17
14
  // Error classes
18
15
  export * from "./errors/index.js";
19
- // Progress tracking
20
- export { ModestBenchProgressManager } from "./progress/manager.js";
21
16
  // Reporters
22
17
  export { CsvReporter } from "./reporters/csv.js";
23
18
  export { HumanReporter } from "./reporters/human.js";
24
19
  export { JsonReporter } from "./reporters/json.js";
25
- export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./reporters/registry.js";
26
- // Storage
27
- export { FileHistoryStorage } from "./storage/history.js";
20
+ export { ProfileHumanReporter } from "./reporters/profile-human.js";
21
+ // Services
22
+ export { ModestBenchConfigurationManager } from "./services/config-manager.js";
23
+ export { BenchmarkFileLoader } from "./services/file-loader.js";
24
+ export { FileHistoryStorage } from "./services/history-storage.js";
25
+ // Profiler services
26
+ export { filterProfile } from "./services/profiler/profile-filter.js";
27
+ export { parseProfile } from "./services/profiler/profile-parser.js";
28
+ export { runWithProfiling } from "./services/profiler/profile-runner.js";
29
+ export { ModestBenchProgressManager } from "./services/progress-manager.js";
30
+ export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./services/reporter-registry.js";
28
31
  // Export all types
29
32
  export * from "./types/index.js";
33
+ // Utilities
34
+ export { findPackageRoot } from "./utils/package.js";
30
35
  //# sourceMappingURL=index.js.map