modestbench 0.1.0 → 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 (267) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +39 -31
  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/history.cjs +108 -266
  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 -268
  16. package/dist/cli/commands/history.js.map +1 -1
  17. package/dist/cli/commands/run.cjs +18 -5
  18. package/dist/cli/commands/run.cjs.map +1 -1
  19. package/dist/cli/commands/run.d.cts +1 -0
  20. package/dist/cli/commands/run.d.cts.map +1 -1
  21. package/dist/cli/commands/run.d.ts +1 -0
  22. package/dist/cli/commands/run.d.ts.map +1 -1
  23. package/dist/cli/commands/run.js +18 -5
  24. package/dist/cli/commands/run.js.map +1 -1
  25. package/dist/cli/index.cjs +307 -91
  26. package/dist/cli/index.cjs.map +1 -1
  27. package/dist/cli/index.d.cts.map +1 -1
  28. package/dist/cli/index.d.ts.map +1 -1
  29. package/dist/cli/index.js +308 -92
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/core/engine.cjs +8 -1
  32. package/dist/core/engine.cjs.map +1 -1
  33. package/dist/core/engine.d.cts +3 -0
  34. package/dist/core/engine.d.cts.map +1 -1
  35. package/dist/core/engine.d.ts +3 -0
  36. package/dist/core/engine.d.ts.map +1 -1
  37. package/dist/core/engine.js +8 -1
  38. package/dist/core/engine.js.map +1 -1
  39. package/dist/core/output-path-resolver.cjs +34 -0
  40. package/dist/core/output-path-resolver.cjs.map +1 -0
  41. package/dist/core/output-path-resolver.d.cts +10 -0
  42. package/dist/core/output-path-resolver.d.cts.map +1 -0
  43. package/dist/core/output-path-resolver.d.ts +10 -0
  44. package/dist/core/output-path-resolver.d.ts.map +1 -0
  45. package/dist/core/output-path-resolver.js +30 -0
  46. package/dist/core/output-path-resolver.js.map +1 -0
  47. package/dist/formatters/history/base.cjs +9 -0
  48. package/dist/formatters/history/base.cjs.map +1 -0
  49. package/dist/formatters/history/base.d.cts +26 -0
  50. package/dist/formatters/history/base.d.cts.map +1 -0
  51. package/dist/formatters/history/base.d.ts +26 -0
  52. package/dist/formatters/history/base.d.ts.map +1 -0
  53. package/dist/formatters/history/base.js +8 -0
  54. package/dist/formatters/history/base.js.map +1 -0
  55. package/dist/formatters/history/compare.cjs +127 -0
  56. package/dist/formatters/history/compare.cjs.map +1 -0
  57. package/dist/formatters/history/compare.d.cts +21 -0
  58. package/dist/formatters/history/compare.d.cts.map +1 -0
  59. package/dist/formatters/history/compare.d.ts +21 -0
  60. package/dist/formatters/history/compare.d.ts.map +1 -0
  61. package/dist/formatters/history/compare.js +123 -0
  62. package/dist/formatters/history/compare.js.map +1 -0
  63. package/dist/formatters/history/list.cjs +74 -0
  64. package/dist/formatters/history/list.cjs.map +1 -0
  65. package/dist/formatters/history/list.d.cts +25 -0
  66. package/dist/formatters/history/list.d.cts.map +1 -0
  67. package/dist/formatters/history/list.d.ts +25 -0
  68. package/dist/formatters/history/list.d.ts.map +1 -0
  69. package/dist/formatters/history/list.js +70 -0
  70. package/dist/formatters/history/list.js.map +1 -0
  71. package/dist/formatters/history/show.cjs +98 -0
  72. package/dist/formatters/history/show.cjs.map +1 -0
  73. package/dist/formatters/history/show.d.cts +21 -0
  74. package/dist/formatters/history/show.d.cts.map +1 -0
  75. package/dist/formatters/history/show.d.ts +21 -0
  76. package/dist/formatters/history/show.d.ts.map +1 -0
  77. package/dist/formatters/history/show.js +94 -0
  78. package/dist/formatters/history/show.js.map +1 -0
  79. package/dist/formatters/history/trends.cjs +194 -0
  80. package/dist/formatters/history/trends.cjs.map +1 -0
  81. package/dist/formatters/history/trends.d.cts +22 -0
  82. package/dist/formatters/history/trends.d.cts.map +1 -0
  83. package/dist/formatters/history/trends.d.ts +22 -0
  84. package/dist/formatters/history/trends.d.ts.map +1 -0
  85. package/dist/formatters/history/trends.js +190 -0
  86. package/dist/formatters/history/trends.js.map +1 -0
  87. package/dist/formatters/history/visualization.cjs +79 -0
  88. package/dist/formatters/history/visualization.cjs.map +1 -0
  89. package/dist/formatters/history/visualization.d.cts +24 -0
  90. package/dist/formatters/history/visualization.d.cts.map +1 -0
  91. package/dist/formatters/history/visualization.d.ts +24 -0
  92. package/dist/formatters/history/visualization.d.ts.map +1 -0
  93. package/dist/formatters/history/visualization.js +74 -0
  94. package/dist/formatters/history/visualization.js.map +1 -0
  95. package/dist/index.cjs +15 -17
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.cts +5 -5
  98. package/dist/index.d.cts.map +1 -1
  99. package/dist/index.d.ts +5 -5
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +7 -9
  102. package/dist/index.js.map +1 -1
  103. package/dist/reporters/csv.cjs +2 -2
  104. package/dist/reporters/csv.cjs.map +1 -1
  105. package/dist/reporters/csv.d.cts +1 -1
  106. package/dist/reporters/csv.d.cts.map +1 -1
  107. package/dist/reporters/csv.d.ts +1 -1
  108. package/dist/reporters/csv.d.ts.map +1 -1
  109. package/dist/reporters/csv.js +1 -1
  110. package/dist/reporters/csv.js.map +1 -1
  111. package/dist/reporters/human.cjs +24 -62
  112. package/dist/reporters/human.cjs.map +1 -1
  113. package/dist/reporters/human.d.cts +1 -1
  114. package/dist/reporters/human.d.cts.map +1 -1
  115. package/dist/reporters/human.d.ts +1 -1
  116. package/dist/reporters/human.d.ts.map +1 -1
  117. package/dist/reporters/human.js +2 -40
  118. package/dist/reporters/human.js.map +1 -1
  119. package/dist/reporters/json.cjs +2 -2
  120. package/dist/reporters/json.cjs.map +1 -1
  121. package/dist/reporters/json.d.cts +1 -1
  122. package/dist/reporters/json.d.cts.map +1 -1
  123. package/dist/reporters/json.d.ts +1 -1
  124. package/dist/reporters/json.d.ts.map +1 -1
  125. package/dist/reporters/json.js +1 -1
  126. package/dist/reporters/json.js.map +1 -1
  127. package/dist/reporters/simple.cjs +2 -2
  128. package/dist/reporters/simple.cjs.map +1 -1
  129. package/dist/reporters/simple.d.cts +1 -1
  130. package/dist/reporters/simple.d.cts.map +1 -1
  131. package/dist/reporters/simple.d.ts +1 -1
  132. package/dist/reporters/simple.d.ts.map +1 -1
  133. package/dist/reporters/simple.js +1 -1
  134. package/dist/reporters/simple.js.map +1 -1
  135. package/dist/{config/manager.cjs → services/config-manager.cjs} +2 -2
  136. package/dist/services/config-manager.cjs.map +1 -0
  137. package/dist/{config/manager.d.cts → services/config-manager.d.cts} +1 -1
  138. package/dist/services/config-manager.d.cts.map +1 -0
  139. package/dist/{config/manager.d.ts → services/config-manager.d.ts} +1 -1
  140. package/dist/services/config-manager.d.ts.map +1 -0
  141. package/dist/{config/manager.js → services/config-manager.js} +2 -2
  142. package/dist/services/config-manager.js.map +1 -0
  143. package/dist/{core/loader.cjs → services/file-loader.cjs} +2 -2
  144. package/dist/services/file-loader.cjs.map +1 -0
  145. package/dist/{core/loader.d.cts → services/file-loader.d.cts} +1 -1
  146. package/dist/services/file-loader.d.cts.map +1 -0
  147. package/dist/{core/loader.d.ts → services/file-loader.d.ts} +1 -1
  148. package/dist/services/file-loader.d.ts.map +1 -0
  149. package/dist/{core/loader.js → services/file-loader.js} +2 -2
  150. package/dist/services/file-loader.js.map +1 -0
  151. package/dist/services/history/comparison.cjs +124 -0
  152. package/dist/services/history/comparison.cjs.map +1 -0
  153. package/dist/services/history/comparison.d.cts +18 -0
  154. package/dist/services/history/comparison.d.cts.map +1 -0
  155. package/dist/services/history/comparison.d.ts +18 -0
  156. package/dist/services/history/comparison.d.ts.map +1 -0
  157. package/dist/services/history/comparison.js +120 -0
  158. package/dist/services/history/comparison.js.map +1 -0
  159. package/dist/services/history/models.cjs +9 -0
  160. package/dist/services/history/models.cjs.map +1 -0
  161. package/dist/services/history/models.d.cts +139 -0
  162. package/dist/services/history/models.d.cts.map +1 -0
  163. package/dist/services/history/models.d.ts +139 -0
  164. package/dist/services/history/models.d.ts.map +1 -0
  165. package/dist/services/history/models.js +8 -0
  166. package/dist/services/history/models.js.map +1 -0
  167. package/dist/services/history/query.cjs +97 -0
  168. package/dist/services/history/query.cjs.map +1 -0
  169. package/dist/services/history/query.d.cts +38 -0
  170. package/dist/services/history/query.d.cts.map +1 -0
  171. package/dist/services/history/query.d.ts +38 -0
  172. package/dist/services/history/query.d.ts.map +1 -0
  173. package/dist/services/history/query.js +92 -0
  174. package/dist/services/history/query.js.map +1 -0
  175. package/dist/services/history/trend-analysis.cjs +187 -0
  176. package/dist/services/history/trend-analysis.cjs.map +1 -0
  177. package/dist/services/history/trend-analysis.d.cts +34 -0
  178. package/dist/services/history/trend-analysis.d.cts.map +1 -0
  179. package/dist/services/history/trend-analysis.d.ts +34 -0
  180. package/dist/services/history/trend-analysis.d.ts.map +1 -0
  181. package/dist/services/history/trend-analysis.js +179 -0
  182. package/dist/services/history/trend-analysis.js.map +1 -0
  183. package/dist/{storage/history.cjs → services/history-storage.cjs} +1 -1
  184. package/dist/services/history-storage.cjs.map +1 -0
  185. package/dist/{storage/history.d.cts → services/history-storage.d.cts} +1 -1
  186. package/dist/services/history-storage.d.cts.map +1 -0
  187. package/dist/{storage/history.d.ts → services/history-storage.d.ts} +1 -1
  188. package/dist/services/history-storage.d.ts.map +1 -0
  189. package/dist/{storage/history.js → services/history-storage.js} +1 -1
  190. package/dist/services/history-storage.js.map +1 -0
  191. package/dist/{progress/manager.cjs → services/progress-manager.cjs} +1 -1
  192. package/dist/services/progress-manager.cjs.map +1 -0
  193. package/dist/{progress/manager.d.cts → services/progress-manager.d.cts} +1 -1
  194. package/dist/services/progress-manager.d.cts.map +1 -0
  195. package/dist/{progress/manager.d.ts → services/progress-manager.d.ts} +1 -1
  196. package/dist/services/progress-manager.d.ts.map +1 -0
  197. package/dist/{progress/manager.js → services/progress-manager.js} +1 -1
  198. package/dist/services/progress-manager.js.map +1 -0
  199. package/dist/{reporters/registry.cjs → services/reporter-registry.cjs} +1 -1
  200. package/dist/services/reporter-registry.cjs.map +1 -0
  201. package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +1 -1
  202. package/dist/services/reporter-registry.d.cts.map +1 -0
  203. package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +1 -1
  204. package/dist/services/reporter-registry.d.ts.map +1 -0
  205. package/dist/{reporters/registry.js → services/reporter-registry.js} +1 -1
  206. package/dist/services/reporter-registry.js.map +1 -0
  207. package/dist/types/cli.d.cts +3 -0
  208. package/dist/types/cli.d.cts.map +1 -1
  209. package/dist/types/cli.d.ts +3 -0
  210. package/dist/types/cli.d.ts.map +1 -1
  211. package/dist/utils/ansi.cjs +61 -0
  212. package/dist/utils/ansi.cjs.map +1 -0
  213. package/dist/utils/ansi.d.cts +53 -0
  214. package/dist/utils/ansi.d.cts.map +1 -0
  215. package/dist/utils/ansi.d.ts +53 -0
  216. package/dist/utils/ansi.d.ts.map +1 -0
  217. package/dist/utils/ansi.js +57 -0
  218. package/dist/utils/ansi.js.map +1 -0
  219. package/package.json +5 -4
  220. package/src/bootstrap.ts +5 -5
  221. package/src/cli/commands/history.ts +194 -342
  222. package/src/cli/commands/run.ts +32 -3
  223. package/src/cli/index.ts +361 -106
  224. package/src/core/engine.ts +9 -1
  225. package/src/core/output-path-resolver.ts +38 -0
  226. package/src/formatters/history/base.ts +28 -0
  227. package/src/formatters/history/compare.ts +186 -0
  228. package/src/formatters/history/list.ts +101 -0
  229. package/src/formatters/history/show.ts +155 -0
  230. package/src/formatters/history/trends.ts +281 -0
  231. package/src/formatters/history/visualization.ts +93 -0
  232. package/src/index.ts +7 -11
  233. package/src/reporters/csv.ts +1 -1
  234. package/src/reporters/human.ts +2 -42
  235. package/src/reporters/json.ts +1 -1
  236. package/src/reporters/simple.ts +1 -1
  237. package/src/{config/manager.ts → services/config-manager.ts} +1 -1
  238. package/src/{core/loader.ts → services/file-loader.ts} +1 -1
  239. package/src/services/history/comparison.ts +130 -0
  240. package/src/services/history/models.ts +148 -0
  241. package/src/services/history/query.ts +116 -0
  242. package/src/services/history/trend-analysis.ts +238 -0
  243. package/src/types/cli.ts +3 -0
  244. package/src/utils/ansi.ts +59 -0
  245. package/dist/config/manager.cjs.map +0 -1
  246. package/dist/config/manager.d.cts.map +0 -1
  247. package/dist/config/manager.d.ts.map +0 -1
  248. package/dist/config/manager.js.map +0 -1
  249. package/dist/core/loader.cjs.map +0 -1
  250. package/dist/core/loader.d.cts.map +0 -1
  251. package/dist/core/loader.d.ts.map +0 -1
  252. package/dist/core/loader.js.map +0 -1
  253. package/dist/progress/manager.cjs.map +0 -1
  254. package/dist/progress/manager.d.cts.map +0 -1
  255. package/dist/progress/manager.d.ts.map +0 -1
  256. package/dist/progress/manager.js.map +0 -1
  257. package/dist/reporters/registry.cjs.map +0 -1
  258. package/dist/reporters/registry.d.cts.map +0 -1
  259. package/dist/reporters/registry.d.ts.map +0 -1
  260. package/dist/reporters/registry.js.map +0 -1
  261. package/dist/storage/history.cjs.map +0 -1
  262. package/dist/storage/history.d.cts.map +0 -1
  263. package/dist/storage/history.d.ts.map +0 -1
  264. package/dist/storage/history.js.map +0 -1
  265. /package/src/{storage/history.ts → services/history-storage.ts} +0 -0
  266. /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
  267. /package/src/{reporters/registry.ts → services/reporter-registry.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAoB;AAU9C;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,UAAU,EACnB,SAAS,UAAU,KAClB,OAAO,CAAC,MAAM,CA+IhB,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAoB;AAW9C;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,UAAU,EACnB,SAAS,UAAU,KAClB,OAAO,CAAC,MAAM,CA+JhB,CAAC"}
@@ -19,6 +19,7 @@ interface RunOptions {
19
19
  json?: boolean | undefined;
20
20
  noColor?: boolean | undefined;
21
21
  outputDir?: string | undefined;
22
+ outputFile?: string | undefined;
22
23
  pattern: string[];
23
24
  progress?: boolean | undefined;
24
25
  quiet?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB;AAU9C;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,UAAU,EACnB,SAAS,UAAU,KAClB,OAAO,CAAC,MAAM,CA+IhB,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB;AAW9C;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,UAAU,EACnB,SAAS,UAAU,KAClB,OAAO,CAAC,MAAM,CA+JhB,CAAC"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { resolve } from 'node:path';
8
8
  import { ErrorCodes } from "../../constants.js";
9
+ import { resolveOutputPath } from "../../core/output-path-resolver.js";
9
10
  import { InvalidArgumentError, UnknownReporterError, } from "../../errors/index.js";
10
11
  import { ExitCodes } from "../../types/cli.js";
11
12
  /**
@@ -21,6 +22,13 @@ export const handleRunCommand = async (context, options) => {
21
22
  // CLI messages on stderr should only be suppressed by explicit --quiet, not JSON-forced quiet
22
23
  const showCliMessages = verbose && !options.quiet;
23
24
  try {
25
+ // Validate --output-file usage
26
+ if (options.outputFile &&
27
+ options.reporters &&
28
+ options.reporters.length > 1) {
29
+ throw new InvalidArgumentError('--output-file can only be used with a single reporter. ' +
30
+ 'Use --output <dir> for multiple reporters.');
31
+ }
24
32
  // Step 1: Load and merge configuration
25
33
  if (showCliMessages) {
26
34
  console.error('Loading configuration...');
@@ -30,7 +38,7 @@ export const handleRunCommand = async (context, options) => {
30
38
  if (showCliMessages) {
31
39
  console.error('Setting up reporters...');
32
40
  }
33
- const reporters = await setupReporters(context, config, shouldBeQuiet, verbose, showCliMessages, options.quiet ?? false, options.outputDir, options.progress);
41
+ const reporters = await setupReporters(context, config, shouldBeQuiet, verbose, showCliMessages, options.quiet ?? false, options.outputDir, options.outputFile, options.progress);
34
42
  // Step 3: Discovery phase
35
43
  if (showCliMessages) {
36
44
  console.error('Discovering benchmark files...');
@@ -94,10 +102,13 @@ export const handleRunCommand = async (context, options) => {
94
102
  return handleResults(executionResult, options, shouldBeQuiet);
95
103
  }
96
104
  catch (error) {
97
- // Re-throw FileDiscoveryError so yargs fail handler can show help
105
+ // Re-throw CLI errors so yargs fail handler can show help
98
106
  if (error.code === ErrorCodes.FILE_DISCOVERY_FAILED) {
99
107
  throw error;
100
108
  }
109
+ if (error.code === ErrorCodes.CLI_INVALID_ARGUMENT) {
110
+ throw error;
111
+ }
101
112
  if (!shouldBeQuiet) {
102
113
  console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
103
114
  }
@@ -199,7 +210,7 @@ const loadConfiguration = async (context, options) => {
199
210
  /**
200
211
  * Setup and configure reporters based on configuration
201
212
  */
202
- const setupReporters = async (context, config, shouldBeQuiet, isVerbose, showCliMessages, explicitQuiet, explicitOutputDir, progressOption) => {
213
+ const setupReporters = async (context, config, shouldBeQuiet, isVerbose, showCliMessages, explicitQuiet, explicitOutputDir, explicitOutputFile, progressOption) => {
203
214
  try {
204
215
  const reporters = [];
205
216
  const requestedReporters = config.reporters || ['human'];
@@ -225,18 +236,20 @@ const setupReporters = async (context, config, shouldBeQuiet, isVerbose, showCli
225
236
  });
226
237
  }
227
238
  else if (reporterName === 'json') {
239
+ const outputPath = resolveOutputPath(outputDir, explicitOutputFile, 'results.json');
228
240
  reporter = new JsonReporter({
229
- ...(outputDir ? { outputPath: `${outputDir}/results.json` } : {}),
241
+ ...(outputPath ? { outputPath } : {}),
230
242
  prettyPrint: true,
231
243
  quiet: shouldBeQuiet, // JSON uses shouldBeQuiet to avoid polluting stdout
232
244
  verbose: isVerbose,
233
245
  });
234
246
  }
235
247
  else if (reporterName === 'csv') {
248
+ const outputPath = resolveOutputPath(outputDir, explicitOutputFile, 'results.csv');
236
249
  reporter = new CsvReporter({
237
250
  includeHeaders: true,
238
251
  includeMetadata: true,
239
- ...(outputDir ? { outputPath: `${outputDir}/results.csv` } : {}),
252
+ ...(outputPath ? { outputPath } : {}),
240
253
  quiet: explicitQuiet, // Only applies explicit --quiet flag; CSV output can coexist with progress messages on different streams
241
254
  verbose: isVerbose,
242
255
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,7 @@ const main = async (argv, abortController) => {
56
56
  const cli = (0, yargs_1.default)(args);
57
57
  // Configure global options and commands
58
58
  await cli
59
+ .scriptName('modestbench')
59
60
  .option('config', {
60
61
  alias: 'c',
61
62
  description: 'Path to configuration file',
@@ -89,6 +90,7 @@ const main = async (argv, abortController) => {
89
90
  })
90
91
  .option('cwd', {
91
92
  default: process.cwd(),
93
+ defaultDescription: '.',
92
94
  description: 'Working directory',
93
95
  global: true,
94
96
  type: 'string',
@@ -132,6 +134,12 @@ const main = async (argv, abortController) => {
132
134
  alias: 'o',
133
135
  description: 'Output directory for reports',
134
136
  type: 'string',
137
+ })
138
+ .option('output-file', {
139
+ alias: 'of',
140
+ description: 'Custom filename for reporter output (use with single reporter only)',
141
+ requiresArg: true,
142
+ type: 'string',
135
143
  })
136
144
  .option('iterations', {
137
145
  alias: 'i',
@@ -234,6 +242,7 @@ const main = async (argv, abortController) => {
234
242
  json: argv.json,
235
243
  noColor: argv.noColor,
236
244
  outputDir: argv.output,
245
+ outputFile: argv['output-file'],
237
246
  pattern: argv.pattern,
238
247
  progress: argv.progress,
239
248
  quiet: argv.quiet,
@@ -246,103 +255,310 @@ const main = async (argv, abortController) => {
246
255
  });
247
256
  process.exit(exitCode);
248
257
  })
249
- .command('history <subcommand> [args..]', 'View and manage benchmark history', (yargs) => {
258
+ .command('history', 'View and manage benchmark history', (yargs) => {
250
259
  return yargs
251
- .positional('subcommand', {
252
- choices: [
253
- 'list',
254
- 'show',
255
- 'compare',
256
- 'trends',
257
- 'clean',
258
- 'export',
259
- ],
260
- demandOption: true,
261
- describe: 'History subcommand',
262
- type: 'string',
263
- })
264
- .positional('args', {
265
- array: true,
266
- describe: 'Additional arguments for the subcommand',
267
- type: 'string',
268
- })
269
- .option('since', {
270
- description: 'Show runs since date (ISO 8601 or relative like "1 week ago")',
271
- type: 'string',
272
- })
273
- .option('until', {
274
- description: 'Show runs until date (ISO 8601 or relative like "1 day ago")',
275
- type: 'string',
276
- })
277
- .option('pattern', {
278
- description: 'Filter by benchmark name pattern',
279
- type: 'string',
280
- })
281
- .option('tags', {
282
- description: 'Filter by tags',
283
- type: 'array',
284
- })
285
- .option('limit', {
286
- default: 10,
287
- description: 'Maximum number of results',
288
- type: 'number',
289
- })
290
- .option('format', {
291
- choices: ['human', 'json', 'csv'],
292
- default: 'human',
293
- description: 'Output format',
294
- type: 'string',
295
- })
296
- .option('maxAge', {
297
- description: 'Maximum age in days for cleanup',
298
- type: 'number',
299
- })
300
- .option('maxRuns', {
301
- description: 'Maximum number of runs to keep',
302
- type: 'number',
303
- })
304
- .option('maxSize', {
305
- description: 'Maximum storage size in bytes',
306
- type: 'number',
307
- })
308
- .option('confirm', {
309
- default: false,
310
- description: 'Confirm cleanup operations',
311
- type: 'boolean',
312
- })
313
- .option('output', {
314
- description: 'Output file path',
315
- type: 'string',
316
- })
260
+ .command('list', 'List recent benchmark runs', (yargs) => {
261
+ return yargs
262
+ .option('since', {
263
+ description: 'Show runs since date (ISO 8601 or relative like "1 week ago")',
264
+ type: 'string',
265
+ })
266
+ .option('until', {
267
+ description: 'Show runs until date (ISO 8601 or relative like "1 day ago")',
268
+ type: 'string',
269
+ })
270
+ .option('pattern', {
271
+ description: 'Filter by benchmark name pattern',
272
+ type: 'string',
273
+ })
274
+ .option('tags', {
275
+ description: 'Filter by tags (comma-separated)',
276
+ type: 'array',
277
+ })
278
+ .option('limit', {
279
+ default: 10,
280
+ description: 'Maximum number of results',
281
+ type: 'number',
282
+ })
283
+ .option('format', {
284
+ choices: ['human', 'json', 'csv'],
285
+ default: 'human',
286
+ description: 'Output format',
287
+ type: 'string',
288
+ })
289
+ .example([
290
+ ['$0 history list', 'List recent benchmark runs'],
291
+ [
292
+ '$0 history list --since "1 week ago"',
293
+ 'List runs from last week',
294
+ ],
295
+ ['$0 history list --limit 20', 'List 20 most recent runs'],
296
+ ['$0 history list --format json', 'List runs in JSON format'],
297
+ ]);
298
+ }, async (argv) => {
299
+ const context = await createCliContext(argv, abortController);
300
+ const exitCode = await (0, history_js_1.handleListCommand)(context, {
301
+ cwd: argv.cwd,
302
+ format: argv.format,
303
+ limit: argv.limit,
304
+ pattern: argv.pattern,
305
+ quiet: Boolean(argv.quiet),
306
+ since: argv.since,
307
+ tags: argv.tags,
308
+ until: argv.until,
309
+ verbose: argv.verbose,
310
+ });
311
+ process.exit(exitCode);
312
+ })
313
+ .command('show <run-id>', 'Show detailed results for a specific run', (yargs) => {
314
+ return yargs
315
+ .positional('run-id', {
316
+ describe: 'ID of the benchmark run to show',
317
+ type: 'string',
318
+ })
319
+ .option('format', {
320
+ choices: ['human', 'json', 'csv'],
321
+ default: 'human',
322
+ description: 'Output format',
323
+ type: 'string',
324
+ })
325
+ .example([
326
+ [
327
+ '$0 history show abc123',
328
+ 'Show detailed results for run abc123',
329
+ ],
330
+ [
331
+ '$0 history show abc123 --format json',
332
+ 'Show run in JSON format',
333
+ ],
334
+ ]);
335
+ }, async (argv) => {
336
+ const context = await createCliContext(argv, abortController);
337
+ const exitCode = await (0, history_js_1.handleShowCommand)(context, {
338
+ cwd: argv.cwd,
339
+ format: argv.format,
340
+ quiet: Boolean(argv.quiet),
341
+ runId: String(argv['run-id']),
342
+ verbose: argv.verbose,
343
+ });
344
+ process.exit(exitCode);
345
+ })
346
+ .command('compare <run-id1> <run-id2>', 'Compare two benchmark runs', (yargs) => {
347
+ return yargs
348
+ .positional('run-id1', {
349
+ describe: 'ID of the first benchmark run',
350
+ type: 'string',
351
+ })
352
+ .positional('run-id2', {
353
+ describe: 'ID of the second benchmark run',
354
+ type: 'string',
355
+ })
356
+ .option('format', {
357
+ choices: ['human', 'json'],
358
+ default: 'human',
359
+ description: 'Output format',
360
+ type: 'string',
361
+ })
362
+ .example([
363
+ ['$0 history compare abc123 def456', 'Compare two runs'],
364
+ [
365
+ '$0 history compare abc123 def456 --format json',
366
+ 'Compare in JSON format',
367
+ ],
368
+ ]);
369
+ }, async (argv) => {
370
+ const context = await createCliContext(argv, abortController);
371
+ const exitCode = await (0, history_js_1.handleCompareCommand)(context, {
372
+ cwd: argv.cwd,
373
+ format: argv.format,
374
+ quiet: Boolean(argv.quiet),
375
+ runId1: String(argv['run-id1']),
376
+ runId2: String(argv['run-id2']),
377
+ verbose: argv.verbose,
378
+ });
379
+ process.exit(exitCode);
380
+ })
381
+ .command('trends [pattern]', 'Show performance trends over time', (yargs) => {
382
+ return yargs
383
+ .positional('pattern', {
384
+ describe: 'Filter by benchmark name pattern',
385
+ type: 'string',
386
+ })
387
+ .option('since', {
388
+ description: 'Show trends since date (ISO 8601 or relative like "1 week ago")',
389
+ type: 'string',
390
+ })
391
+ .option('until', {
392
+ description: 'Show trends until date (ISO 8601 or relative like "1 day ago")',
393
+ type: 'string',
394
+ })
395
+ .option('tags', {
396
+ description: 'Filter by tags (comma-separated)',
397
+ type: 'array',
398
+ })
399
+ .option('limit', {
400
+ description: 'Maximum number of runs to analyze',
401
+ type: 'number',
402
+ })
403
+ .option('all', {
404
+ alias: 'a',
405
+ default: false,
406
+ description: 'Analyze all runs (ignore limit)',
407
+ type: 'boolean',
408
+ })
409
+ .option('format', {
410
+ choices: ['human', 'json'],
411
+ default: 'human',
412
+ description: 'Output format',
413
+ type: 'string',
414
+ })
415
+ .example([
416
+ [
417
+ '$0 history trends',
418
+ 'Show performance trends for all benchmarks',
419
+ ],
420
+ [
421
+ '$0 history trends --since "1 month ago"',
422
+ 'Show trends from last month',
423
+ ],
424
+ [
425
+ '$0 history trends "array-*"',
426
+ 'Show trends for array benchmarks',
427
+ ],
428
+ [
429
+ '$0 history trends --format json',
430
+ 'Output trends in JSON format',
431
+ ],
432
+ ]);
433
+ }, async (argv) => {
434
+ const context = await createCliContext(argv, abortController);
435
+ const exitCode = await (0, history_js_1.handleTrendsCommand)(context, {
436
+ all: Boolean(argv.all),
437
+ cwd: argv.cwd,
438
+ format: argv.format,
439
+ limit: argv.limit,
440
+ pattern: argv.pattern,
441
+ quiet: Boolean(argv.quiet),
442
+ since: argv.since,
443
+ tags: argv.tags,
444
+ until: argv.until,
445
+ verbose: argv.verbose,
446
+ });
447
+ process.exit(exitCode);
448
+ })
449
+ .command('clean', 'Clean up old benchmark history', (yargs) => {
450
+ return yargs
451
+ .option('max-age', {
452
+ description: 'Remove runs older than this many days',
453
+ type: 'number',
454
+ })
455
+ .option('max-runs', {
456
+ description: 'Keep only this many most recent runs',
457
+ type: 'number',
458
+ })
459
+ .option('max-size', {
460
+ description: 'Keep history under this size in bytes',
461
+ type: 'number',
462
+ })
463
+ .option('confirm', {
464
+ default: false,
465
+ description: 'Confirm cleanup without prompting',
466
+ type: 'boolean',
467
+ })
468
+ .check((argv) => {
469
+ if (!argv['max-age'] &&
470
+ !argv['max-runs'] &&
471
+ !argv['max-size']) {
472
+ throw new Error('At least one cleanup criterion must be specified (--max-age, --max-runs, or --max-size)');
473
+ }
474
+ return true;
475
+ })
476
+ .example([
477
+ [
478
+ '$0 history clean --max-runs 50 --confirm',
479
+ 'Keep only latest 50 runs',
480
+ ],
481
+ [
482
+ '$0 history clean --max-age 30',
483
+ 'Preview removing runs older than 30 days',
484
+ ],
485
+ [
486
+ '$0 history clean --max-size 10485760',
487
+ 'Keep history under 10MB',
488
+ ],
489
+ ]);
490
+ }, async (argv) => {
491
+ const context = await createCliContext(argv, abortController);
492
+ const exitCode = await (0, history_js_1.handleCleanCommand)(context, {
493
+ confirm: argv.confirm,
494
+ cwd: argv.cwd,
495
+ maxAge: argv['max-age'],
496
+ maxRuns: argv['max-runs'],
497
+ maxSize: argv['max-size'],
498
+ quiet: Boolean(argv.quiet),
499
+ verbose: argv.verbose,
500
+ });
501
+ process.exit(exitCode);
502
+ })
503
+ .command('export', 'Export benchmark history to a file', (yargs) => {
504
+ return yargs
505
+ .option('format', {
506
+ choices: ['json', 'csv'],
507
+ default: 'json',
508
+ description: 'Export format',
509
+ type: 'string',
510
+ })
511
+ .option('output', {
512
+ alias: 'o',
513
+ demandOption: true,
514
+ description: 'Output file path',
515
+ type: 'string',
516
+ })
517
+ .option('since', {
518
+ description: 'Export runs since date',
519
+ type: 'string',
520
+ })
521
+ .option('until', {
522
+ description: 'Export runs until date',
523
+ type: 'string',
524
+ })
525
+ .example([
526
+ [
527
+ '$0 history export -o history.json',
528
+ 'Export all history to JSON',
529
+ ],
530
+ [
531
+ '$0 history export -o history.csv --format csv',
532
+ 'Export to CSV',
533
+ ],
534
+ [
535
+ '$0 history export -o recent.json --since "1 week ago"',
536
+ 'Export recent runs',
537
+ ],
538
+ ]);
539
+ }, async (argv) => {
540
+ const context = await createCliContext(argv, abortController);
541
+ const exitCode = await (0, history_js_1.handleExportCommand)(context, {
542
+ cwd: argv.cwd,
543
+ format: argv.format,
544
+ outputPath: argv.output,
545
+ quiet: Boolean(argv.quiet),
546
+ since: argv.since,
547
+ until: argv.until,
548
+ verbose: argv.verbose,
549
+ });
550
+ process.exit(exitCode);
551
+ })
552
+ .demandCommand(1, 'You must specify a history subcommand')
553
+ .strict()
317
554
  .example([
318
555
  ['$0 history list', 'List recent benchmark runs'],
319
- ['$0 history show <run-id>', 'Show detailed results for run'],
556
+ ['$0 history show <run-id>', 'Show detailed results'],
320
557
  ['$0 history compare <run-id1> <run-id2>', 'Compare two runs'],
321
- ['$0 history trends [pattern]', 'Show performance trends'],
558
+ ['$0 history trends', 'Show performance trends'],
322
559
  ['$0 history clean --max-runs 50', 'Keep only latest 50 runs'],
323
- ['$0 history export --format csv', 'Export to CSV'],
560
+ ['$0 history export -o data.json', 'Export history'],
324
561
  ]);
325
- }, async (argv) => {
326
- const context = await createCliContext(argv, abortController);
327
- const exitCode = await (0, history_js_1.handleHistoryCommand)(context, {
328
- args: argv.args,
329
- confirm: argv.confirm,
330
- cwd: argv.cwd,
331
- format: argv.format,
332
- limit: argv.limit,
333
- maxAge: argv.maxAge,
334
- maxRuns: argv.maxRuns,
335
- maxSize: argv.maxSize,
336
- outputDir: argv.output,
337
- pattern: argv.pattern,
338
- quiet: Boolean(argv.quiet),
339
- since: argv.since,
340
- subcommand: argv.subcommand,
341
- tags: argv.tags,
342
- until: argv.until,
343
- verbose: argv.verbose,
344
- });
345
- process.exit(exitCode);
346
562
  })
347
563
  .command('init [type]', 'Initialize a new benchmark project', (yargs) => {
348
564
  return yargs