modestbench 0.0.3 → 0.2.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 (394) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +39 -31
  3. package/dist/bootstrap.cjs +10 -12
  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 -7
  8. package/dist/bootstrap.js.map +1 -1
  9. package/dist/cli/commands/history.cjs +108 -265
  10. package/dist/cli/commands/history.cjs.map +1 -1
  11. package/dist/cli/commands/history.d.cts +75 -12
  12. package/dist/cli/commands/history.d.cts.map +1 -1
  13. package/dist/cli/commands/history.d.ts +75 -12
  14. package/dist/cli/commands/history.d.ts.map +1 -1
  15. package/dist/cli/commands/history.js +105 -267
  16. package/dist/cli/commands/history.js.map +1 -1
  17. package/dist/cli/commands/init.cjs +5 -4
  18. package/dist/cli/commands/init.cjs.map +1 -1
  19. package/dist/cli/commands/init.d.cts.map +1 -1
  20. package/dist/cli/commands/init.d.ts.map +1 -1
  21. package/dist/cli/commands/init.js +5 -4
  22. package/dist/cli/commands/init.js.map +1 -1
  23. package/dist/cli/commands/run.cjs +32 -9
  24. package/dist/cli/commands/run.cjs.map +1 -1
  25. package/dist/cli/commands/run.d.cts +1 -0
  26. package/dist/cli/commands/run.d.cts.map +1 -1
  27. package/dist/cli/commands/run.d.ts +1 -0
  28. package/dist/cli/commands/run.d.ts.map +1 -1
  29. package/dist/cli/commands/run.js +32 -9
  30. package/dist/cli/commands/run.js.map +1 -1
  31. package/dist/cli/index.cjs +336 -103
  32. package/dist/cli/index.cjs.map +1 -1
  33. package/dist/cli/index.d.cts +1 -2
  34. package/dist/cli/index.d.cts.map +1 -1
  35. package/dist/cli/index.d.ts +1 -2
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +332 -99
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/constants.cjs +53 -1
  40. package/dist/constants.cjs.map +1 -1
  41. package/dist/constants.d.cts +36 -0
  42. package/dist/constants.d.cts.map +1 -1
  43. package/dist/constants.d.ts +36 -0
  44. package/dist/constants.d.ts.map +1 -1
  45. package/dist/constants.js +52 -0
  46. package/dist/constants.js.map +1 -1
  47. package/dist/core/engine.cjs +23 -43
  48. package/dist/core/engine.cjs.map +1 -1
  49. package/dist/core/engine.d.cts +4 -3
  50. package/dist/core/engine.d.cts.map +1 -1
  51. package/dist/core/engine.d.ts +4 -3
  52. package/dist/core/engine.d.ts.map +1 -1
  53. package/dist/core/engine.js +23 -43
  54. package/dist/core/engine.js.map +1 -1
  55. package/dist/core/engines/accurate-engine.cjs +2 -1
  56. package/dist/core/engines/accurate-engine.cjs.map +1 -1
  57. package/dist/core/engines/accurate-engine.d.cts.map +1 -1
  58. package/dist/core/engines/accurate-engine.d.ts.map +1 -1
  59. package/dist/core/engines/accurate-engine.js +2 -1
  60. package/dist/core/engines/accurate-engine.js.map +1 -1
  61. package/dist/core/engines/tinybench-engine.cjs +6 -5
  62. package/dist/core/engines/tinybench-engine.cjs.map +1 -1
  63. package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
  64. package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
  65. package/dist/core/engines/tinybench-engine.js +6 -5
  66. package/dist/core/engines/tinybench-engine.js.map +1 -1
  67. package/dist/core/output-path-resolver.cjs +34 -0
  68. package/dist/core/output-path-resolver.cjs.map +1 -0
  69. package/dist/core/output-path-resolver.d.cts +10 -0
  70. package/dist/core/output-path-resolver.d.cts.map +1 -0
  71. package/dist/core/output-path-resolver.d.ts +10 -0
  72. package/dist/core/output-path-resolver.d.ts.map +1 -0
  73. package/dist/core/output-path-resolver.js +30 -0
  74. package/dist/core/output-path-resolver.js.map +1 -0
  75. package/dist/errors/base.cjs +130 -0
  76. package/dist/errors/base.cjs.map +1 -0
  77. package/dist/errors/base.d.cts +97 -0
  78. package/dist/errors/base.d.cts.map +1 -0
  79. package/dist/errors/base.d.ts +97 -0
  80. package/dist/errors/base.d.ts.map +1 -0
  81. package/dist/errors/base.js +124 -0
  82. package/dist/errors/base.js.map +1 -0
  83. package/dist/errors/cli.cjs +58 -0
  84. package/dist/errors/cli.cjs.map +1 -0
  85. package/dist/errors/cli.d.cts +44 -0
  86. package/dist/errors/cli.d.cts.map +1 -0
  87. package/dist/errors/cli.d.ts +44 -0
  88. package/dist/errors/cli.d.ts.map +1 -0
  89. package/dist/errors/cli.js +52 -0
  90. package/dist/errors/cli.js.map +1 -0
  91. package/dist/errors/configuration.cjs +48 -0
  92. package/dist/errors/configuration.cjs.map +1 -0
  93. package/dist/errors/configuration.d.cts +41 -0
  94. package/dist/errors/configuration.d.cts.map +1 -0
  95. package/dist/errors/configuration.d.ts +41 -0
  96. package/dist/errors/configuration.d.ts.map +1 -0
  97. package/dist/errors/configuration.js +41 -0
  98. package/dist/errors/configuration.js.map +1 -0
  99. package/dist/errors/execution.cjs +65 -0
  100. package/dist/errors/execution.cjs.map +1 -0
  101. package/dist/errors/execution.d.cts +56 -0
  102. package/dist/errors/execution.d.cts.map +1 -0
  103. package/dist/errors/execution.d.ts +56 -0
  104. package/dist/errors/execution.d.ts.map +1 -0
  105. package/dist/errors/execution.js +56 -0
  106. package/dist/errors/execution.js.map +1 -0
  107. package/dist/errors/file.cjs +56 -0
  108. package/dist/errors/file.cjs.map +1 -0
  109. package/dist/errors/file.d.cts +48 -0
  110. package/dist/errors/file.d.cts.map +1 -0
  111. package/dist/errors/file.d.ts +48 -0
  112. package/dist/errors/file.d.ts.map +1 -0
  113. package/dist/errors/file.js +48 -0
  114. package/dist/errors/file.js.map +1 -0
  115. package/dist/errors/index.cjs +59 -0
  116. package/dist/errors/index.cjs.map +1 -0
  117. package/dist/errors/index.d.cts +16 -0
  118. package/dist/errors/index.d.cts.map +1 -0
  119. package/dist/errors/index.d.ts +16 -0
  120. package/dist/errors/index.d.ts.map +1 -0
  121. package/dist/errors/index.js +24 -0
  122. package/dist/errors/index.js.map +1 -0
  123. package/dist/errors/reporter.cjs +38 -0
  124. package/dist/errors/reporter.cjs.map +1 -0
  125. package/dist/errors/reporter.d.cts +32 -0
  126. package/dist/errors/reporter.d.cts.map +1 -0
  127. package/dist/errors/reporter.d.ts +32 -0
  128. package/dist/errors/reporter.d.ts.map +1 -0
  129. package/dist/errors/reporter.js +32 -0
  130. package/dist/errors/reporter.js.map +1 -0
  131. package/dist/errors/storage.cjs +55 -0
  132. package/dist/errors/storage.cjs.map +1 -0
  133. package/dist/errors/storage.d.cts +47 -0
  134. package/dist/errors/storage.d.cts.map +1 -0
  135. package/dist/errors/storage.d.ts +47 -0
  136. package/dist/errors/storage.d.ts.map +1 -0
  137. package/dist/errors/storage.js +47 -0
  138. package/dist/errors/storage.js.map +1 -0
  139. package/dist/errors/validation.cjs +38 -0
  140. package/dist/errors/validation.cjs.map +1 -0
  141. package/dist/errors/validation.d.cts +32 -0
  142. package/dist/errors/validation.d.cts.map +1 -0
  143. package/dist/errors/validation.d.ts +32 -0
  144. package/dist/errors/validation.d.ts.map +1 -0
  145. package/dist/errors/validation.js +32 -0
  146. package/dist/errors/validation.js.map +1 -0
  147. package/dist/formatters/history/base.cjs +9 -0
  148. package/dist/formatters/history/base.cjs.map +1 -0
  149. package/dist/formatters/history/base.d.cts +26 -0
  150. package/dist/formatters/history/base.d.cts.map +1 -0
  151. package/dist/formatters/history/base.d.ts +26 -0
  152. package/dist/formatters/history/base.d.ts.map +1 -0
  153. package/dist/formatters/history/base.js +8 -0
  154. package/dist/formatters/history/base.js.map +1 -0
  155. package/dist/formatters/history/compare.cjs +127 -0
  156. package/dist/formatters/history/compare.cjs.map +1 -0
  157. package/dist/formatters/history/compare.d.cts +21 -0
  158. package/dist/formatters/history/compare.d.cts.map +1 -0
  159. package/dist/formatters/history/compare.d.ts +21 -0
  160. package/dist/formatters/history/compare.d.ts.map +1 -0
  161. package/dist/formatters/history/compare.js +123 -0
  162. package/dist/formatters/history/compare.js.map +1 -0
  163. package/dist/formatters/history/list.cjs +74 -0
  164. package/dist/formatters/history/list.cjs.map +1 -0
  165. package/dist/formatters/history/list.d.cts +25 -0
  166. package/dist/formatters/history/list.d.cts.map +1 -0
  167. package/dist/formatters/history/list.d.ts +25 -0
  168. package/dist/formatters/history/list.d.ts.map +1 -0
  169. package/dist/formatters/history/list.js +70 -0
  170. package/dist/formatters/history/list.js.map +1 -0
  171. package/dist/formatters/history/show.cjs +98 -0
  172. package/dist/formatters/history/show.cjs.map +1 -0
  173. package/dist/formatters/history/show.d.cts +21 -0
  174. package/dist/formatters/history/show.d.cts.map +1 -0
  175. package/dist/formatters/history/show.d.ts +21 -0
  176. package/dist/formatters/history/show.d.ts.map +1 -0
  177. package/dist/formatters/history/show.js +94 -0
  178. package/dist/formatters/history/show.js.map +1 -0
  179. package/dist/formatters/history/trends.cjs +194 -0
  180. package/dist/formatters/history/trends.cjs.map +1 -0
  181. package/dist/formatters/history/trends.d.cts +22 -0
  182. package/dist/formatters/history/trends.d.cts.map +1 -0
  183. package/dist/formatters/history/trends.d.ts +22 -0
  184. package/dist/formatters/history/trends.d.ts.map +1 -0
  185. package/dist/formatters/history/trends.js +190 -0
  186. package/dist/formatters/history/trends.js.map +1 -0
  187. package/dist/formatters/history/visualization.cjs +79 -0
  188. package/dist/formatters/history/visualization.cjs.map +1 -0
  189. package/dist/formatters/history/visualization.d.cts +24 -0
  190. package/dist/formatters/history/visualization.d.cts.map +1 -0
  191. package/dist/formatters/history/visualization.d.ts +24 -0
  192. package/dist/formatters/history/visualization.d.ts.map +1 -0
  193. package/dist/formatters/history/visualization.js +74 -0
  194. package/dist/formatters/history/visualization.js.map +1 -0
  195. package/dist/index.cjs +17 -20
  196. package/dist/index.cjs.map +1 -1
  197. package/dist/index.d.cts +6 -6
  198. package/dist/index.d.cts.map +1 -1
  199. package/dist/index.d.ts +6 -6
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +9 -11
  202. package/dist/index.js.map +1 -1
  203. package/dist/reporters/csv.cjs +5 -4
  204. package/dist/reporters/csv.cjs.map +1 -1
  205. package/dist/reporters/csv.d.cts +1 -1
  206. package/dist/reporters/csv.d.cts.map +1 -1
  207. package/dist/reporters/csv.d.ts +1 -1
  208. package/dist/reporters/csv.d.ts.map +1 -1
  209. package/dist/reporters/csv.js +4 -3
  210. package/dist/reporters/csv.js.map +1 -1
  211. package/dist/reporters/human.cjs +24 -62
  212. package/dist/reporters/human.cjs.map +1 -1
  213. package/dist/reporters/human.d.cts +1 -1
  214. package/dist/reporters/human.d.cts.map +1 -1
  215. package/dist/reporters/human.d.ts +1 -1
  216. package/dist/reporters/human.d.ts.map +1 -1
  217. package/dist/reporters/human.js +3 -41
  218. package/dist/reporters/human.js.map +1 -1
  219. package/dist/reporters/json.cjs +5 -4
  220. package/dist/reporters/json.cjs.map +1 -1
  221. package/dist/reporters/json.d.cts +1 -1
  222. package/dist/reporters/json.d.cts.map +1 -1
  223. package/dist/reporters/json.d.ts +1 -1
  224. package/dist/reporters/json.d.ts.map +1 -1
  225. package/dist/reporters/json.js +4 -3
  226. package/dist/reporters/json.js.map +1 -1
  227. package/dist/reporters/simple.cjs +3 -3
  228. package/dist/reporters/simple.cjs.map +1 -1
  229. package/dist/reporters/simple.d.cts +1 -1
  230. package/dist/reporters/simple.d.cts.map +1 -1
  231. package/dist/reporters/simple.d.ts +1 -1
  232. package/dist/reporters/simple.d.ts.map +1 -1
  233. package/dist/reporters/simple.js +2 -2
  234. package/dist/reporters/simple.js.map +1 -1
  235. package/dist/{config/manager.cjs → services/config-manager.cjs} +10 -4
  236. package/dist/services/config-manager.cjs.map +1 -0
  237. package/dist/{config/manager.d.cts → services/config-manager.d.cts} +1 -1
  238. package/dist/services/config-manager.d.cts.map +1 -0
  239. package/dist/{config/manager.d.ts → services/config-manager.d.ts} +1 -1
  240. package/dist/services/config-manager.d.ts.map +1 -0
  241. package/dist/{config/manager.js → services/config-manager.js} +10 -4
  242. package/dist/services/config-manager.js.map +1 -0
  243. package/dist/{core/loader.cjs → services/file-loader.cjs} +18 -7
  244. package/dist/services/file-loader.cjs.map +1 -0
  245. package/dist/{core/loader.d.cts → services/file-loader.d.cts} +1 -1
  246. package/dist/services/file-loader.d.cts.map +1 -0
  247. package/dist/{core/loader.d.ts → services/file-loader.d.ts} +1 -1
  248. package/dist/services/file-loader.d.ts.map +1 -0
  249. package/dist/{core/loader.js → services/file-loader.js} +18 -7
  250. package/dist/services/file-loader.js.map +1 -0
  251. package/dist/services/history/comparison.cjs +124 -0
  252. package/dist/services/history/comparison.cjs.map +1 -0
  253. package/dist/services/history/comparison.d.cts +18 -0
  254. package/dist/services/history/comparison.d.cts.map +1 -0
  255. package/dist/services/history/comparison.d.ts +18 -0
  256. package/dist/services/history/comparison.d.ts.map +1 -0
  257. package/dist/services/history/comparison.js +120 -0
  258. package/dist/services/history/comparison.js.map +1 -0
  259. package/dist/services/history/models.cjs +9 -0
  260. package/dist/services/history/models.cjs.map +1 -0
  261. package/dist/services/history/models.d.cts +139 -0
  262. package/dist/services/history/models.d.cts.map +1 -0
  263. package/dist/services/history/models.d.ts +139 -0
  264. package/dist/services/history/models.d.ts.map +1 -0
  265. package/dist/services/history/models.js +8 -0
  266. package/dist/services/history/models.js.map +1 -0
  267. package/dist/services/history/query.cjs +97 -0
  268. package/dist/services/history/query.cjs.map +1 -0
  269. package/dist/services/history/query.d.cts +38 -0
  270. package/dist/services/history/query.d.cts.map +1 -0
  271. package/dist/services/history/query.d.ts +38 -0
  272. package/dist/services/history/query.d.ts.map +1 -0
  273. package/dist/services/history/query.js +92 -0
  274. package/dist/services/history/query.js.map +1 -0
  275. package/dist/services/history/trend-analysis.cjs +187 -0
  276. package/dist/services/history/trend-analysis.cjs.map +1 -0
  277. package/dist/services/history/trend-analysis.d.cts +34 -0
  278. package/dist/services/history/trend-analysis.d.cts.map +1 -0
  279. package/dist/services/history/trend-analysis.d.ts +34 -0
  280. package/dist/services/history/trend-analysis.d.ts.map +1 -0
  281. package/dist/services/history/trend-analysis.js +179 -0
  282. package/dist/services/history/trend-analysis.js.map +1 -0
  283. package/dist/{storage/history.cjs → services/history-storage.cjs} +33 -12
  284. package/dist/services/history-storage.cjs.map +1 -0
  285. package/dist/{storage/history.d.cts → services/history-storage.d.cts} +1 -1
  286. package/dist/services/history-storage.d.cts.map +1 -0
  287. package/dist/{storage/history.d.ts → services/history-storage.d.ts} +1 -1
  288. package/dist/services/history-storage.d.ts.map +1 -0
  289. package/dist/{storage/history.js → services/history-storage.js} +33 -12
  290. package/dist/services/history-storage.js.map +1 -0
  291. package/dist/{progress/manager.cjs → services/progress-manager.cjs} +1 -1
  292. package/dist/services/progress-manager.cjs.map +1 -0
  293. package/dist/{progress/manager.d.cts → services/progress-manager.d.cts} +1 -1
  294. package/dist/services/progress-manager.d.cts.map +1 -0
  295. package/dist/{progress/manager.d.ts → services/progress-manager.d.ts} +1 -1
  296. package/dist/services/progress-manager.d.ts.map +1 -0
  297. package/dist/{progress/manager.js → services/progress-manager.js} +1 -1
  298. package/dist/services/progress-manager.js.map +1 -0
  299. package/dist/{reporters/registry.cjs → services/reporter-registry.cjs} +4 -3
  300. package/dist/services/reporter-registry.cjs.map +1 -0
  301. package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +1 -1
  302. package/dist/services/reporter-registry.d.cts.map +1 -0
  303. package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +1 -1
  304. package/dist/services/reporter-registry.d.ts.map +1 -0
  305. package/dist/{reporters/registry.js → services/reporter-registry.js} +4 -3
  306. package/dist/services/reporter-registry.js.map +1 -0
  307. package/dist/types/cli.d.cts +3 -0
  308. package/dist/types/cli.d.cts.map +1 -1
  309. package/dist/types/cli.d.ts +3 -0
  310. package/dist/types/cli.d.ts.map +1 -1
  311. package/dist/types/interfaces.d.cts +1 -34
  312. package/dist/types/interfaces.d.cts.map +1 -1
  313. package/dist/types/interfaces.d.ts +1 -34
  314. package/dist/types/interfaces.d.ts.map +1 -1
  315. package/dist/utils/ansi.cjs +61 -0
  316. package/dist/utils/ansi.cjs.map +1 -0
  317. package/dist/utils/ansi.d.cts +53 -0
  318. package/dist/utils/ansi.d.cts.map +1 -0
  319. package/dist/utils/ansi.d.ts +53 -0
  320. package/dist/utils/ansi.d.ts.map +1 -0
  321. package/dist/utils/ansi.js +57 -0
  322. package/dist/utils/ansi.js.map +1 -0
  323. package/package.json +10 -8
  324. package/src/bootstrap.ts +5 -7
  325. package/src/cli/commands/history.ts +195 -341
  326. package/src/cli/commands/init.ts +14 -4
  327. package/src/cli/commands/run.ts +52 -7
  328. package/src/cli/index.ts +393 -119
  329. package/src/constants.ts +60 -0
  330. package/src/core/engine.ts +40 -48
  331. package/src/core/engines/accurate-engine.ts +4 -1
  332. package/src/core/engines/tinybench-engine.ts +12 -5
  333. package/src/core/output-path-resolver.ts +38 -0
  334. package/src/errors/base.ts +152 -0
  335. package/src/errors/cli.ts +59 -0
  336. package/src/errors/configuration.ts +45 -0
  337. package/src/errors/execution.ts +62 -0
  338. package/src/errors/file.ts +53 -0
  339. package/src/errors/index.ts +71 -0
  340. package/src/errors/reporter.ts +35 -0
  341. package/src/errors/storage.ts +52 -0
  342. package/src/errors/validation.ts +35 -0
  343. package/src/formatters/history/base.ts +28 -0
  344. package/src/formatters/history/compare.ts +186 -0
  345. package/src/formatters/history/list.ts +101 -0
  346. package/src/formatters/history/show.ts +155 -0
  347. package/src/formatters/history/trends.ts +281 -0
  348. package/src/formatters/history/visualization.ts +93 -0
  349. package/src/index.ts +10 -14
  350. package/src/reporters/csv.ts +5 -3
  351. package/src/reporters/human.ts +3 -43
  352. package/src/reporters/json.ts +5 -3
  353. package/src/reporters/simple.ts +2 -2
  354. package/src/{config/manager.ts → services/config-manager.ts} +13 -3
  355. package/src/{core/loader.ts → services/file-loader.ts} +28 -6
  356. package/src/services/history/comparison.ts +130 -0
  357. package/src/services/history/models.ts +148 -0
  358. package/src/services/history/query.ts +116 -0
  359. package/src/services/history/trend-analysis.ts +238 -0
  360. package/src/{storage/history.ts → services/history-storage.ts} +58 -11
  361. package/src/{reporters/registry.ts → services/reporter-registry.ts} +9 -2
  362. package/src/types/cli.ts +3 -0
  363. package/src/types/interfaces.ts +0 -43
  364. package/src/utils/ansi.ts +59 -0
  365. package/dist/config/manager.cjs.map +0 -1
  366. package/dist/config/manager.d.cts.map +0 -1
  367. package/dist/config/manager.d.ts.map +0 -1
  368. package/dist/config/manager.js.map +0 -1
  369. package/dist/core/error-manager.cjs +0 -303
  370. package/dist/core/error-manager.cjs.map +0 -1
  371. package/dist/core/error-manager.d.cts +0 -77
  372. package/dist/core/error-manager.d.cts.map +0 -1
  373. package/dist/core/error-manager.d.ts +0 -77
  374. package/dist/core/error-manager.d.ts.map +0 -1
  375. package/dist/core/error-manager.js +0 -299
  376. package/dist/core/error-manager.js.map +0 -1
  377. package/dist/core/loader.cjs.map +0 -1
  378. package/dist/core/loader.d.cts.map +0 -1
  379. package/dist/core/loader.d.ts.map +0 -1
  380. package/dist/core/loader.js.map +0 -1
  381. package/dist/progress/manager.cjs.map +0 -1
  382. package/dist/progress/manager.d.cts.map +0 -1
  383. package/dist/progress/manager.d.ts.map +0 -1
  384. package/dist/progress/manager.js.map +0 -1
  385. package/dist/reporters/registry.cjs.map +0 -1
  386. package/dist/reporters/registry.d.cts.map +0 -1
  387. package/dist/reporters/registry.d.ts.map +0 -1
  388. package/dist/reporters/registry.js.map +0 -1
  389. package/dist/storage/history.cjs.map +0 -1
  390. package/dist/storage/history.d.cts.map +0 -1
  391. package/dist/storage/history.d.ts.map +0 -1
  392. package/dist/storage/history.js.map +0 -1
  393. package/src/core/error-manager.ts +0 -372
  394. /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.0](https://github.com/boneskull/modestbench/compare/modestbench-v0.1.0...modestbench-v0.2.0) (2025-10-26)
4
+
5
+
6
+ ### Features
7
+
8
+ * add --output-file CLI option ([#66](https://github.com/boneskull/modestbench/issues/66)) ([09bb5ae](https://github.com/boneskull/modestbench/commit/09bb5ae7468c9d5eb9d1e9641c58350a5b3856dd))
9
+ * **history:** implement trend analysis and comparison ([#64](https://github.com/boneskull/modestbench/issues/64)) ([acf7dda](https://github.com/boneskull/modestbench/commit/acf7ddaa91f7ae242c2a2df86fd610ce88f8ac91))
10
+ * **history:** implement trends and comparison ([acf7dda](https://github.com/boneskull/modestbench/commit/acf7ddaa91f7ae242c2a2df86fd610ce88f8ac91))
11
+ * implement date parsing, compare, and trend analysis core ([acf7dda](https://github.com/boneskull/modestbench/commit/acf7ddaa91f7ae242c2a2df86fd610ce88f8ac91))
12
+ * implement full trends command with visualizations ([acf7dda](https://github.com/boneskull/modestbench/commit/acf7ddaa91f7ae242c2a2df86fd610ce88f8ac91))
13
+
14
+ ## [0.1.0](https://github.com/boneskull/modestbench/compare/modestbench-v0.0.3...modestbench-v0.1.0) (2025-10-24)
15
+
16
+
17
+ ### Features
18
+
19
+ * new-fangled errors ([dd9128d](https://github.com/boneskull/modestbench/commit/dd9128df0dea260af9d9216a310784cfe3b3126e))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **deps:** @pasqal-io/starlight-client-mermaid is now a dev dep ([82ecb85](https://github.com/boneskull/modestbench/commit/82ecb8555d9e58c630ad7c358b21be37c8bd68b9))
25
+ * **deps:** pin dependency @pasqal-io/starlight-client-mermaid to 0.1.0 ([#58](https://github.com/boneskull/modestbench/issues/58)) ([d167cf9](https://github.com/boneskull/modestbench/commit/d167cf95c0db583c72b605ea8b66a8d28118ed4d))
26
+ * **reporters:** it is a task, not a test ([07f9b5a](https://github.com/boneskull/modestbench/commit/07f9b5a91f847ebd57c4dfca285998b0a817c6b2))
27
+ * **reporters:** it is also a task even in the simple reporter ([592f7b4](https://github.com/boneskull/modestbench/commit/592f7b43a13a66ccbea6955808ea83614303f76e))
28
+
3
29
  ## [0.0.3](https://github.com/boneskull/modestbench/compare/modestbench-v0.0.2...modestbench-v0.0.3) (2025-10-23)
4
30
 
5
31
 
package/README.md CHANGED
@@ -130,37 +130,7 @@ modestbench --iterations 5000 --reporters human,json
130
130
 
131
131
  ### View Results
132
132
 
133
- ```text
134
- 🚀 ModestBench
135
-
136
- Environment:
137
- Node.js: v24.10.0
138
- Platform: darwin arm64
139
- CPU: Apple M4 Max (16 cores)
140
- Memory: 48.0 GB
141
-
142
- Found 1 benchmark file(s)
143
-
144
- ▶ benchmarks/example.bench.js
145
-
146
- ▶ Array Operations
147
- ✓ Array.push()
148
- 810.05μs ±2.45% (1.23M ops/sec)
149
- ✓ Array spread
150
- 81.01ms ±4.12% (12.34K ops/sec)
151
- ✓ 2 passed
152
-
153
- ✓ All 2 tasks passed
154
-
155
- 📊 Results
156
-
157
- ✓ All tests passed: 2
158
- 📁 Files: 1
159
- 📊 Suites: 1
160
- ⏱️ Duration: 1.82s
161
-
162
- 🎉 All benchmarks completed successfully!
163
- ```
133
+ ![Example output showing colorful terminal display with benchmark results](./public/human-reporter.png)
164
134
 
165
135
  ## Getting Started
166
136
 
@@ -273,6 +243,44 @@ modestbench --tags fast --exclude-tags experimental
273
243
 
274
244
  See [Tagging and Filtering](#tagging-and-filtering) for detailed examples.
275
245
 
246
+ #### Output Options
247
+
248
+ Control where and how benchmark results are saved:
249
+
250
+ ```bash
251
+ # Write to a directory (creates results.json, results.csv, etc.)
252
+ modestbench --reporters json,csv --output ./results
253
+
254
+ # Custom filename for single reporter
255
+ modestbench --reporters json --output-file my-benchmarks.json
256
+
257
+ # Custom filename in specific directory
258
+ modestbench --reporters json --output ./results --output-file benchmarks-2024.json
259
+
260
+ # Custom filename with absolute path
261
+ modestbench --reporters json --output-file /tmp/my-benchmarks.json
262
+
263
+ # With subdirectories
264
+ modestbench --reporters csv --output ./results --output-file reports/performance.csv
265
+
266
+ # Short flag alias
267
+ modestbench --reporters json --of custom.json
268
+ ```
269
+
270
+ **Key Options:**
271
+
272
+ - `--output <dir>`, `-o <dir>` - Directory to write output files (default: stdout)
273
+ - `--output-file <filename>`, `--of <filename>` - Custom filename for output
274
+ - Works with absolute or relative paths
275
+ - Requires exactly one reporter (e.g., `--reporters json`)
276
+ - When used with `--output`, the filename is relative to that directory
277
+ - When used alone, the path is relative to current working directory
278
+
279
+ **Limitations:**
280
+
281
+ - `--output-file` only works with a single reporter
282
+ - For multiple reporters, use `--output <dir>` (defaults to `results.json`, `results.csv`, etc.)
283
+
276
284
  ### History Management
277
285
 
278
286
  **modestbench** automatically tracks benchmark results over time in a local `.modestbench/` directory. This history enables you to:
@@ -7,13 +7,12 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.bootstrap = void 0;
10
- const manager_js_1 = require("./config/manager.cjs");
11
10
  const index_js_1 = require("./core/engines/index.cjs");
12
- const error_manager_js_1 = require("./core/error-manager.cjs");
13
- const loader_js_1 = require("./core/loader.cjs");
14
- const manager_js_2 = require("./progress/manager.cjs");
15
- const registry_js_1 = require("./reporters/registry.cjs");
16
- const history_js_1 = require("./storage/history.cjs");
11
+ const config_manager_js_1 = require("./services/config-manager.cjs");
12
+ const file_loader_js_1 = require("./services/file-loader.cjs");
13
+ const history_storage_js_1 = require("./services/history-storage.cjs");
14
+ const progress_manager_js_1 = require("./services/progress-manager.cjs");
15
+ const reporter_registry_js_1 = require("./services/reporter-registry.cjs");
17
16
  /**
18
17
  * Initializes the ModestBench engine with default dependencies.
19
18
  *
@@ -24,12 +23,11 @@ const history_js_1 = require("./storage/history.cjs");
24
23
  */
25
24
  const bootstrap = () => {
26
25
  const engine = new index_js_1.TinybenchEngine({
27
- configManager: new manager_js_1.ModestBenchConfigurationManager(),
28
- errorManager: new error_manager_js_1.ModestBenchErrorManager(),
29
- fileLoader: new loader_js_1.BenchmarkFileLoader(),
30
- historyStorage: new history_js_1.FileHistoryStorage(),
31
- progressManager: new manager_js_2.ModestBenchProgressManager(),
32
- reporterRegistry: new registry_js_1.ModestBenchReporterRegistry(),
26
+ configManager: new config_manager_js_1.ModestBenchConfigurationManager(),
27
+ fileLoader: new file_loader_js_1.BenchmarkFileLoader(),
28
+ historyStorage: new history_storage_js_1.FileHistoryStorage(),
29
+ progressManager: new progress_manager_js_1.ModestBenchProgressManager(),
30
+ reporterRegistry: new reporter_registry_js_1.ModestBenchReporterRegistry(),
33
31
  });
34
32
  return engine;
35
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qDAAsE;AAEtE,uDAA0D;AAC1D,+DAAkE;AAClE,iDAAuD;AACvD,uDAAmE;AACnE,0DAAsE;AACtE,sDAA0D;AAE1D;;;;;;;GAOG;AACI,MAAM,SAAS,GAAG,GAAsB,EAAE;IAC/C,MAAM,MAAM,GAAG,IAAI,0BAAe,CAAC;QACjC,aAAa,EAAE,IAAI,4CAA+B,EAAE;QACpD,YAAY,EAAE,IAAI,0CAAuB,EAAE;QAC3C,UAAU,EAAE,IAAI,+BAAmB,EAAE;QACrC,cAAc,EAAE,IAAI,+BAAkB,EAAE;QACxC,eAAe,EAAE,IAAI,uCAA0B,EAAE;QACjD,gBAAgB,EAAE,IAAI,yCAA2B,EAAE;KACpD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAVW,QAAA,SAAS,aAUpB"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,uDAA0D;AAC1D,qEAA+E;AAC/E,+DAAgE;AAChE,uEAAmE;AACnE,yEAA4E;AAC5E,2EAA8E;AAE9E;;;;;;;GAOG;AACI,MAAM,SAAS,GAAG,GAAsB,EAAE;IAC/C,MAAM,MAAM,GAAG,IAAI,0BAAe,CAAC;QACjC,aAAa,EAAE,IAAI,mDAA+B,EAAE;QACpD,UAAU,EAAE,IAAI,oCAAmB,EAAE;QACrC,cAAc,EAAE,IAAI,uCAAkB,EAAE;QACxC,eAAe,EAAE,IAAI,gDAA0B,EAAE;QACjD,gBAAgB,EAAE,IAAI,kDAA2B,EAAE;KACpD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AATW,QAAA,SAAS,aASpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,iBAAiB,EAAE,0BAAyB;AAQ1D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,QAAO,iBAU5B,CAAC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,iBAAiB,EAAE,0BAAyB;AAQ1D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,QAAO,iBAS5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,iBAAiB,EAAE,yBAAyB;AAQ1D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,QAAO,iBAU5B,CAAC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,iBAAiB,EAAE,yBAAyB;AAQ1D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,QAAO,iBAS5B,CAAC"}
package/dist/bootstrap.js CHANGED
@@ -4,13 +4,12 @@
4
4
  *
5
5
  * @packageDocumentation
6
6
  */
7
- import { ModestBenchConfigurationManager } from "./config/manager.js";
8
7
  import { TinybenchEngine } from "./core/engines/index.js";
9
- import { ModestBenchErrorManager } from "./core/error-manager.js";
10
- import { BenchmarkFileLoader } from "./core/loader.js";
11
- import { ModestBenchProgressManager } from "./progress/manager.js";
12
- import { ModestBenchReporterRegistry } from "./reporters/registry.js";
13
- import { FileHistoryStorage } from "./storage/history.js";
8
+ import { ModestBenchConfigurationManager } from "./services/config-manager.js";
9
+ import { BenchmarkFileLoader } from "./services/file-loader.js";
10
+ import { FileHistoryStorage } from "./services/history-storage.js";
11
+ import { ModestBenchProgressManager } from "./services/progress-manager.js";
12
+ import { ModestBenchReporterRegistry } from "./services/reporter-registry.js";
14
13
  /**
15
14
  * Initializes the ModestBench engine with default dependencies.
16
15
  *
@@ -22,7 +21,6 @@ import { FileHistoryStorage } from "./storage/history.js";
22
21
  export const bootstrap = () => {
23
22
  const engine = new TinybenchEngine({
24
23
  configManager: new ModestBenchConfigurationManager(),
25
- errorManager: new ModestBenchErrorManager(),
26
24
  fileLoader: new BenchmarkFileLoader(),
27
25
  historyStorage: new FileHistoryStorage(),
28
26
  progressManager: new ModestBenchProgressManager(),
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,+BAA+B,EAAE,4BAA4B;AAEtE,OAAO,EAAE,eAAe,EAAE,gCAAgC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,gCAAgC;AAClE,OAAO,EAAE,mBAAmB,EAAE,yBAAyB;AACvD,OAAO,EAAE,0BAA0B,EAAE,8BAA8B;AACnE,OAAO,EAAE,2BAA2B,EAAE,gCAAgC;AACtE,OAAO,EAAE,kBAAkB,EAAE,6BAA6B;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAsB,EAAE;IAC/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,aAAa,EAAE,IAAI,+BAA+B,EAAE;QACpD,YAAY,EAAE,IAAI,uBAAuB,EAAE;QAC3C,UAAU,EAAE,IAAI,mBAAmB,EAAE;QACrC,cAAc,EAAE,IAAI,kBAAkB,EAAE;QACxC,eAAe,EAAE,IAAI,0BAA0B,EAAE;QACjD,gBAAgB,EAAE,IAAI,2BAA2B,EAAE;KACpD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,gCAAgC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,sCAAsC;AACnE,OAAO,EAAE,0BAA0B,EAAE,uCAAuC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,wCAAwC;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAsB,EAAE;IAC/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,aAAa,EAAE,IAAI,+BAA+B,EAAE;QACpD,UAAU,EAAE,IAAI,mBAAmB,EAAE;QACrC,cAAc,EAAE,IAAI,kBAAkB,EAAE;QACxC,eAAe,EAAE,IAAI,0BAA0B,EAAE;QACjD,gBAAgB,EAAE,IAAI,2BAA2B,EAAE;KACpD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}