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
@@ -6,29 +6,92 @@
6
6
  */
7
7
  import type { CliContext } from "../index.js";
8
8
  /**
9
- * History command options interface
9
+ * Base options shared by all history subcommands
10
10
  */
11
- interface HistoryOptions {
12
- args?: string[] | undefined;
13
- confirm?: boolean | undefined;
11
+ interface BaseHistoryOptions {
14
12
  cwd: string;
15
- format?: 'csv' | 'human' | 'json' | undefined;
16
- limit?: number | undefined;
13
+ quiet?: boolean | undefined;
14
+ verbose?: boolean | undefined;
15
+ }
16
+ /**
17
+ * Options for history clean command
18
+ */
19
+ interface HistoryCleanOptions extends BaseHistoryOptions {
20
+ confirm?: boolean | undefined;
17
21
  maxAge?: number | undefined;
18
22
  maxRuns?: number | undefined;
19
23
  maxSize?: number | undefined;
20
- outputDir?: string | undefined;
24
+ }
25
+ /**
26
+ * Options for history compare command
27
+ */
28
+ interface HistoryCompareOptions extends BaseHistoryOptions {
29
+ format?: 'human' | 'json' | undefined;
30
+ runId1: string;
31
+ runId2: string;
32
+ }
33
+ /**
34
+ * Options for history export command
35
+ */
36
+ interface HistoryExportOptions extends BaseHistoryOptions {
37
+ format?: 'csv' | 'json' | undefined;
38
+ outputPath: string;
39
+ since?: string | undefined;
40
+ until?: string | undefined;
41
+ }
42
+ /**
43
+ * Options for history list command
44
+ */
45
+ interface HistoryListOptions extends BaseHistoryOptions {
46
+ format?: 'csv' | 'human' | 'json' | undefined;
47
+ limit?: number | undefined;
21
48
  pattern?: string | undefined;
22
- quiet?: boolean | undefined;
23
49
  since?: string | undefined;
24
- subcommand: 'clean' | 'compare' | 'export' | 'list' | 'show' | 'trends';
25
50
  tags?: string[] | undefined;
26
51
  until?: string | undefined;
27
- verbose?: boolean | undefined;
28
52
  }
29
53
  /**
30
- * Handle history command
54
+ * Options for history show command
55
+ */
56
+ interface HistoryShowOptions extends BaseHistoryOptions {
57
+ format?: 'csv' | 'human' | 'json' | undefined;
58
+ runId: string;
59
+ }
60
+ /**
61
+ * Options for history trends command
62
+ */
63
+ interface HistoryTrendsOptions extends BaseHistoryOptions {
64
+ all?: boolean | undefined;
65
+ format?: 'human' | 'json' | undefined;
66
+ limit?: number | undefined;
67
+ pattern?: string | undefined;
68
+ since?: string | undefined;
69
+ tags?: string[] | undefined;
70
+ until?: string | undefined;
71
+ }
72
+ /**
73
+ * Handle the clean subcommand
74
+ */
75
+ export declare const handleCleanCommand: (context: CliContext, options: HistoryCleanOptions) => Promise<number>;
76
+ /**
77
+ * Handle the compare subcommand
78
+ */
79
+ export declare const handleCompareCommand: (context: CliContext, options: HistoryCompareOptions) => Promise<number>;
80
+ /**
81
+ * Handle the export subcommand
82
+ */
83
+ export declare const handleExportCommand: (context: CliContext, options: HistoryExportOptions) => Promise<number>;
84
+ /**
85
+ * Handle the list subcommand
86
+ */
87
+ export declare const handleListCommand: (context: CliContext, options: HistoryListOptions) => Promise<number>;
88
+ /**
89
+ * Handle the show subcommand
90
+ */
91
+ export declare const handleShowCommand: (context: CliContext, options: HistoryShowOptions) => Promise<number>;
92
+ /**
93
+ * Handle the trends subcommand
31
94
  */
32
- export declare const handleHistoryCommand: (context: CliContext, options: HistoryOptions) => Promise<number>;
95
+ export declare const handleTrendsCommand: (context: CliContext, options: HistoryTrendsOptions) => Promise<number>;
33
96
  export {};
34
97
  //# sourceMappingURL=history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB;AAE9C;;GAEG;AACH,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,UAAU,EACnB,SAAS,cAAc,KACtB,OAAO,CAAC,MAAM,CAgChB,CAAC"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/history.ts"],"names":[],"mappings":"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"}
@@ -4,37 +4,13 @@
4
4
  * View and manage benchmark run history with subcommands for listing, showing,
5
5
  * comparing, and cleaning historical data.
6
6
  */
7
- /**
8
- * Handle history command
9
- */
10
- export const handleHistoryCommand = async (context, options) => {
11
- try {
12
- // Get the subcommand
13
- const subcommand = options.subcommand;
14
- switch (subcommand) {
15
- case 'clean':
16
- return await handleCleanCommand(context, options);
17
- case 'compare':
18
- return await handleCompareCommand(context, options);
19
- case 'export':
20
- return await handleExportCommand(context, options);
21
- case 'list':
22
- return await handleListCommand(context, options);
23
- case 'show':
24
- return await handleShowCommand(context, options);
25
- case 'trends':
26
- return await handleTrendsCommand(context, options);
27
- default:
28
- console.error(`Unknown history subcommand: ${subcommand || '(none)'}`);
29
- console.error('Available subcommands: list, show, compare, trends, clean, export');
30
- return 2; // Config error
31
- }
32
- }
33
- catch (error) {
34
- console.error('History command failed:', error instanceof Error ? error.message : String(error));
35
- return 2; // Configuration/runtime errors
36
- }
37
- };
7
+ import { HistoryCompareFormatter } from "../../formatters/history/compare.js";
8
+ import { HistoryListFormatter } from "../../formatters/history/list.js";
9
+ import { HistoryShowFormatter } from "../../formatters/history/show.js";
10
+ import { HistoryTrendsFormatter } from "../../formatters/history/trends.js";
11
+ import { ComparisonService } from "../../services/history/comparison.js";
12
+ import { HistoryQueryService, parseDate, } from "../../services/history/query.js";
13
+ import { TrendAnalysisService } from "../../services/history/trend-analysis.js";
38
14
  /**
39
15
  * Format bytes in human-readable format
40
16
  */
@@ -48,10 +24,29 @@ const formatBytes = (bytes) => {
48
24
  }
49
25
  return `${size.toFixed(1)} ${units[unitIndex]}`;
50
26
  };
27
+ /**
28
+ * Resolve a partial run ID to a full ID by checking prefix match
29
+ *
30
+ * Supports Git-style partial ID matching (e.g., "k3m" matches "k3m9x2p")
31
+ */
32
+ const resolveRunId = async (storage, partialId) => {
33
+ // First try exact match
34
+ const exactRun = await storage.loadRun(partialId);
35
+ if (exactRun) {
36
+ return partialId;
37
+ }
38
+ // Query all runs to find a prefix match
39
+ const allRuns = await storage.queryRuns({});
40
+ const prefixMatch = allRuns.find((run) => run.id.startsWith(partialId));
41
+ if (prefixMatch) {
42
+ return prefixMatch.id;
43
+ }
44
+ return null;
45
+ };
51
46
  /**
52
47
  * Handle the clean subcommand
53
48
  */
54
- const handleCleanCommand = async (context, options) => {
49
+ export const handleCleanCommand = async (context, options) => {
55
50
  try {
56
51
  // Build retention policy from arguments
57
52
  const policy = {
@@ -102,51 +97,29 @@ const handleCleanCommand = async (context, options) => {
102
97
  /**
103
98
  * Handle the compare subcommand
104
99
  */
105
- const handleCompareCommand = async (context, options) => {
100
+ export const handleCompareCommand = async (context, options) => {
106
101
  try {
107
- // For compare command, IDs come from args after the subcommand
108
- const id1 = options.args?.[0];
109
- const id2 = options.args?.[1];
110
- if (!id1 || !id2) {
111
- console.error('Two run IDs are required for compare command');
112
- console.error('Usage: modestbench history compare <run-id1> <run-id2>');
113
- return 2;
114
- }
115
102
  const [run1, run2] = await Promise.all([
116
- context.historyStorage.loadRun(id1),
117
- context.historyStorage.loadRun(id2),
103
+ context.historyStorage.loadRun(options.runId1),
104
+ context.historyStorage.loadRun(options.runId2),
118
105
  ]);
119
106
  if (!run1) {
120
- console.error(`Run not found: ${id1}`);
107
+ console.error(`Run not found: ${options.runId1}`);
121
108
  return 1;
122
109
  }
123
110
  if (!run2) {
124
- console.error(`Run not found: ${id2}`);
111
+ console.error(`Run not found: ${options.runId2}`);
125
112
  return 1;
126
113
  }
127
- if (options.format === 'json') {
128
- const comparison = {
129
- run1: { id: run1.id, summary: run1.summary },
130
- run2: { id: run2.id, summary: run2.summary },
131
- // TODO: Add detailed comparison logic
132
- };
133
- console.log(JSON.stringify(comparison, null, 2));
134
- }
135
- else {
136
- // Human format comparison
137
- console.log(`Comparing runs:`);
138
- console.log(` Run 1: ${run1.id} (${run1.startTime.toLocaleString()})`);
139
- console.log(` Run 2: ${run2.id} (${run2.startTime.toLocaleString()})`);
140
- console.log();
141
- console.log('Summary comparison:');
142
- console.log(` Files: ${run1.summary.totalFiles} vs ${run2.summary.totalFiles}`);
143
- console.log(` Tasks: ${run1.summary.totalTasks} vs ${run2.summary.totalTasks}`);
144
- console.log(` Passed: ${run1.summary.passedTasks} vs ${run2.summary.passedTasks}`);
145
- console.log(` Failed: ${run1.summary.failedTasks} vs ${run2.summary.failedTasks}`);
146
- // TODO: Add detailed performance comparison
147
- console.log();
148
- console.log('Note: Detailed performance comparison not yet implemented.');
149
- }
114
+ // Compare using service
115
+ const comparisonService = new ComparisonService();
116
+ const result = comparisonService.compareRuns(run1, run2);
117
+ // Format output
118
+ const formatter = new HistoryCompareFormatter();
119
+ const output = options.format === 'json'
120
+ ? formatter.formatJson(result)
121
+ : formatter.formatHuman(result);
122
+ console.log(output);
150
123
  return 0;
151
124
  }
152
125
  catch (error) {
@@ -157,7 +130,7 @@ const handleCompareCommand = async (context, options) => {
157
130
  /**
158
131
  * Handle the export subcommand
159
132
  */
160
- const handleExportCommand = async (context, options) => {
133
+ export const handleExportCommand = async (context, options) => {
161
134
  try {
162
135
  const format = options.format || 'json';
163
136
  // Build query for export
@@ -166,17 +139,11 @@ const handleExportCommand = async (context, options) => {
166
139
  ...(options.until && { until: parseDate(options.until) }),
167
140
  };
168
141
  const exportData = await context.historyStorage.export(format, query);
169
- if (options.outputDir) {
170
- // Write to file
171
- const fs = await import('node:fs/promises');
172
- await fs.writeFile(options.outputDir, exportData, 'utf8');
173
- if (!options.quiet) {
174
- console.log(`Exported history to ${options.outputDir}`);
175
- }
176
- }
177
- else {
178
- // Write to stdout
179
- console.log(exportData);
142
+ // Write to file
143
+ const fs = await import('node:fs/promises');
144
+ await fs.writeFile(options.outputPath, exportData, 'utf8');
145
+ if (!options.quiet) {
146
+ console.log(`Exported history to ${options.outputPath}`);
180
147
  }
181
148
  return 0;
182
149
  }
@@ -188,86 +155,34 @@ const handleExportCommand = async (context, options) => {
188
155
  /**
189
156
  * Handle the list subcommand
190
157
  */
191
- const handleListCommand = async (context, options) => {
158
+ export const handleListCommand = async (context, options) => {
192
159
  try {
193
- // Build query from command line arguments
194
- let parsedSince;
195
- let parsedUntil;
196
- if (options.since) {
197
- try {
198
- parsedSince = parseDate(options.since);
199
- }
200
- catch (error) {
201
- console.error('Invalid since date:', error instanceof Error ? error.message : String(error));
202
- return 2; // Invalid date format
203
- }
204
- }
205
- if (options.until) {
206
- try {
207
- parsedUntil = parseDate(options.until);
208
- }
209
- catch (error) {
210
- console.error('Invalid until date:', error instanceof Error ? error.message : String(error));
211
- return 2; // Invalid date format
212
- }
213
- }
214
- const query = {
215
- ...(parsedSince && { since: parsedSince }),
216
- ...(parsedUntil && { until: parsedUntil }),
217
- ...(options.pattern && { pattern: options.pattern }),
218
- ...(options.tags && options.tags.length > 0 && { tags: options.tags }),
219
- ...(options.limit && { limit: options.limit }),
160
+ // Query runs using service
161
+ const queryService = new HistoryQueryService(context.historyStorage);
162
+ const runs = await queryService.queryWithDateParsing(options);
163
+ // Transform to result format
164
+ const result = {
165
+ runs: runs.map((run) => ({
166
+ duration: run.duration,
167
+ id: run.id,
168
+ startTime: run.startTime,
169
+ summary: run.summary,
170
+ })),
171
+ totalCount: runs.length,
220
172
  };
221
- // Query historical runs
222
- const runs = await context.historyStorage.queryRuns(query);
223
- // Display results based on format
173
+ // Format output
174
+ const formatter = new HistoryListFormatter();
175
+ let output;
224
176
  if (options.format === 'json') {
225
- if (runs.length === 0) {
226
- console.log('[]'); // Empty JSON array for no data
227
- }
228
- else {
229
- console.log(JSON.stringify(runs.map((run) => ({
230
- duration: run.duration,
231
- failed: run.summary.failedTasks,
232
- files: run.summary.totalFiles,
233
- id: run.id,
234
- passed: run.summary.passedTasks,
235
- startTime: run.startTime,
236
- tasks: run.summary.totalTasks,
237
- })), null, 2));
238
- }
177
+ output = formatter.formatJson(result);
239
178
  }
240
179
  else if (options.format === 'csv') {
241
- console.log('id,startTime,duration,files,tasks,passed,failed');
242
- if (runs.length > 0) {
243
- for (const run of runs) {
244
- console.log(`${run.id},${run.startTime.toISOString()},${run.duration},${run.summary.totalFiles},${run.summary.totalTasks},${run.summary.passedTasks},${run.summary.failedTasks}`);
245
- }
246
- }
247
- // For CSV, no additional message needed - header is sufficient
180
+ output = formatter.formatCsv(result);
248
181
  }
249
182
  else {
250
- // Human format
251
- if (runs.length === 0) {
252
- if (!options.quiet) {
253
- console.log('No historical data found matching criteria.');
254
- }
255
- }
256
- else {
257
- console.log('Recent benchmark runs:');
258
- console.log();
259
- for (const run of runs) {
260
- const dateStr = run.startTime.toLocaleString();
261
- const durationStr = `${(run.duration / 1000).toFixed(1)}s`;
262
- const statusStr = run.summary.failedTasks > 0
263
- ? `${run.summary.passedTasks} passed, ${run.summary.failedTasks} failed`
264
- : `${run.summary.passedTasks} passed`;
265
- console.log(` ${run.id.substring(0, 8)} - ${dateStr} (${durationStr})`);
266
- console.log(` ${run.summary.totalFiles} files, ${run.summary.totalTasks} tasks: ${statusStr}`);
267
- console.log();
268
- }
269
- }
183
+ output = formatter.formatHuman(result);
270
184
  }
185
+ console.log(output);
271
186
  return 0;
272
187
  }
273
188
  catch (error) {
@@ -278,56 +193,25 @@ const handleListCommand = async (context, options) => {
278
193
  /**
279
194
  * Handle the show subcommand
280
195
  */
281
- const handleShowCommand = async (context, options) => {
196
+ export const handleShowCommand = async (context, options) => {
282
197
  try {
283
- // For show command, ID comes from the args after the subcommand
284
- const runId = options.args?.[0];
285
- if (!runId) {
286
- console.error('Run ID is required for show command');
287
- console.error('Usage: modestbench history show <run-id>');
288
- return 2;
198
+ // Resolve partial ID to full ID
199
+ const fullRunId = await resolveRunId(context.historyStorage, options.runId);
200
+ if (!fullRunId) {
201
+ console.error(`Run not found: ${options.runId}`);
202
+ return 1;
289
203
  }
290
- const run = await context.historyStorage.loadRun(runId);
204
+ const run = await context.historyStorage.loadRun(fullRunId);
291
205
  if (!run) {
292
- console.error(`Run not found: ${runId}`);
206
+ console.error(`Run not found: ${options.runId}`);
293
207
  return 1;
294
208
  }
295
- if (options.format === 'json') {
296
- console.log(JSON.stringify(run, null, 2));
297
- }
298
- else {
299
- // Human format
300
- console.log(`Benchmark Run: ${run.id}`);
301
- console.log(`Date: ${run.startTime.toLocaleString()}`);
302
- console.log(`Duration: ${(run.duration / 1000).toFixed(1)}s`);
303
- console.log(`Environment: Node.js ${run.environment.nodeVersion} on ${run.environment.platform}`);
304
- if (run.git) {
305
- console.log(`Git: ${run.git.branch}@${run.git.commit.substring(0, 8)}`);
306
- }
307
- console.log();
308
- console.log('Summary:');
309
- console.log(` Files: ${run.summary.totalFiles}`);
310
- console.log(` Suites: ${run.summary.totalSuites}`);
311
- console.log(` Tasks: ${run.summary.totalTasks}`);
312
- console.log(` Passed: ${run.summary.passedTasks}`);
313
- console.log(` Failed: ${run.summary.failedTasks}`);
314
- // TODO: Show detailed file/suite/task results
315
- console.log();
316
- console.log('Detailed results:');
317
- for (const file of run.files) {
318
- console.log(` 📁 ${file.filePath}`);
319
- for (const suite of file.suites) {
320
- console.log(` 📊 ${suite.name}`);
321
- for (const task of suite.tasks) {
322
- const status = task.error ? '❌' : '✅';
323
- const timing = task.error
324
- ? 'failed'
325
- : `${(task.mean / 1000000).toFixed(2)}ms`;
326
- console.log(` ${status} ${task.name} - ${timing}`);
327
- }
328
- }
329
- }
330
- }
209
+ // Format output
210
+ const formatter = new HistoryShowFormatter();
211
+ const output = options.format === 'json'
212
+ ? formatter.formatJson(run)
213
+ : formatter.formatHuman(run);
214
+ console.log(output);
331
215
  return 0;
332
216
  }
333
217
  catch (error) {
@@ -338,85 +222,39 @@ const handleShowCommand = async (context, options) => {
338
222
  /**
339
223
  * Handle the trends subcommand
340
224
  */
341
- const handleTrendsCommand = async (context, options) => {
225
+ export const handleTrendsCommand = async (context, options) => {
342
226
  try {
343
- // Build query from command line arguments (same as list command)
344
- let parsedSince;
345
- let parsedUntil;
346
- if (options.since) {
347
- try {
348
- parsedSince = parseDate(options.since);
349
- }
350
- catch (error) {
351
- console.error('Invalid since date:', error instanceof Error ? error.message : String(error));
352
- return 2; // Invalid date format
353
- }
354
- }
355
- if (options.until) {
356
- try {
357
- parsedUntil = parseDate(options.until);
358
- }
359
- catch (error) {
360
- console.error('Invalid until date:', error instanceof Error ? error.message : String(error));
361
- return 2; // Invalid date format
362
- }
363
- }
364
- // Get pattern from args or explicit pattern option
365
- const pattern = options.args?.[0] || options.pattern;
366
- const query = {
367
- ...(parsedSince && { since: parsedSince }),
368
- ...(parsedUntil && { until: parsedUntil }),
369
- ...(pattern && { pattern }),
370
- ...(options.tags && options.tags.length > 0 && { tags: options.tags }),
371
- ...(options.limit && { limit: options.limit }),
372
- };
373
- // Query historical runs
374
- const runs = await context.historyStorage.queryRuns(query);
227
+ // Query runs using service
228
+ const queryService = new HistoryQueryService(context.historyStorage);
229
+ const runs = await queryService.queryWithDateParsing({
230
+ limit: options.all ? undefined : options.limit,
231
+ pattern: options.pattern,
232
+ since: options.since,
233
+ tags: options.tags,
234
+ until: options.until,
235
+ });
375
236
  if (runs.length === 0) {
376
237
  if (!options.quiet) {
377
238
  console.log('No historical data found matching criteria');
378
239
  }
379
- return 0; // Success - no data is not an error
380
- }
381
- if (options.format === 'json') {
382
- // TODO: Generate trends data in JSON format
383
- const trendsData = {
384
- runs: runs.length,
385
- timespan: {
386
- end: runs[0]?.startTime,
387
- start: runs[runs.length - 1]?.startTime,
388
- },
389
- // TODO: Add actual trend calculations
390
- };
391
- console.log(JSON.stringify(trendsData, null, 2));
240
+ return 0;
392
241
  }
393
- else {
394
- // Human format trends
395
- if (!options.quiet) {
396
- console.log(`Performance trends for ${runs.length} runs:`);
397
- console.log(`Time range: ${runs[runs.length - 1]?.startTime} to ${runs[0]?.startTime}`);
398
- // TODO: Add trend analysis and visualization
399
- console.log('(Trend analysis not yet implemented)');
400
- }
242
+ // Analyze trends using service
243
+ const analysisService = new TrendAnalysisService();
244
+ const result = analysisService.analyzeTrends(runs);
245
+ // Format output
246
+ const formatter = new HistoryTrendsFormatter();
247
+ const output = options.format === 'json'
248
+ ? formatter.formatJson(result)
249
+ : formatter.formatHuman(result);
250
+ if (!options.quiet || options.format !== 'human') {
251
+ console.log(output);
401
252
  }
402
- return 0; // Success
253
+ return 0;
403
254
  }
404
255
  catch (error) {
405
- console.error('Error showing trends:', error);
406
- return 3; // Runtime error
407
- }
408
- };
409
- /**
410
- * Parse date string (ISO 8601 or relative)
411
- */
412
- const parseDate = (dateStr) => {
413
- // Try parsing as ISO 8601 first
414
- const isoDate = new Date(dateStr);
415
- if (!isNaN(isoDate.getTime())) {
416
- return isoDate;
256
+ console.error('Failed to show trends:', error instanceof Error ? error.message : String(error));
257
+ return 5;
417
258
  }
418
- // TODO: Parse relative dates like "1 week ago", "3 days ago", etc.
419
- // For now, throw error for invalid dates
420
- throw new Error(`Invalid date format: "${dateStr}"`);
421
259
  };
422
260
  //# sourceMappingURL=history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/cli/commands/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/cli/commands/history.ts"],"names":[],"mappings":"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"}