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
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveOutputPath = void 0;
4
+ const node_path_1 = require("node:path");
5
+ /**
6
+ * Resolves the final output path for a reporter
7
+ *
8
+ * @param outputDir - Optional output directory from --output flag
9
+ * @param outputFile - Optional output filename from --output-file flag
10
+ * @param defaultFilename - Default filename to use if none specified
11
+ * @returns Resolved output path, or undefined if no output to file requested
12
+ */
13
+ const resolveOutputPath = (outputDir, outputFile, defaultFilename) => {
14
+ // If outputFile is provided
15
+ if (outputFile) {
16
+ // If outputFile is absolute, use as-is
17
+ if ((0, node_path_1.isAbsolute)(outputFile)) {
18
+ return outputFile;
19
+ }
20
+ // If outputDir specified, join them
21
+ if (outputDir) {
22
+ return (0, node_path_1.join)(outputDir, outputFile);
23
+ }
24
+ // Otherwise, resolve relative to cwd
25
+ return (0, node_path_1.resolve)(process.cwd(), outputFile);
26
+ }
27
+ // Fall back to default behavior
28
+ if (outputDir && defaultFilename) {
29
+ return (0, node_path_1.join)(outputDir, defaultFilename);
30
+ }
31
+ return undefined;
32
+ };
33
+ exports.resolveOutputPath = resolveOutputPath;
34
+ //# sourceMappingURL=output-path-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-path-resolver.js","sourceRoot":"","sources":["../../src/core/output-path-resolver.ts"],"names":[],"mappings":";;;AAAA,yCAAsD;AAEtD;;;;;;;GAOG;AACI,MAAM,iBAAiB,GAAG,CAC/B,SAAkB,EAClB,UAAmB,EACnB,eAAwB,EACJ,EAAE;IACtB,4BAA4B;IAC5B,IAAI,UAAU,EAAE,CAAC;QACf,uCAAuC;QACvC,IAAI,IAAA,sBAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,oCAAoC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAA,gBAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,qCAAqC;QACrC,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,IAAI,SAAS,IAAI,eAAe,EAAE,CAAC;QACjC,OAAO,IAAA,gBAAI,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AA3BW,QAAA,iBAAiB,qBA2B5B"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resolves the final output path for a reporter
3
+ *
4
+ * @param outputDir - Optional output directory from --output flag
5
+ * @param outputFile - Optional output filename from --output-file flag
6
+ * @param defaultFilename - Default filename to use if none specified
7
+ * @returns Resolved output path, or undefined if no output to file requested
8
+ */
9
+ export declare const resolveOutputPath: (outputDir?: string, outputFile?: string, defaultFilename?: string) => string | undefined;
10
+ //# sourceMappingURL=output-path-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-path-resolver.d.ts","sourceRoot":"","sources":["../../src/core/output-path-resolver.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,MAAM,EAClB,aAAa,MAAM,EACnB,kBAAkB,MAAM,KACvB,MAAM,GAAG,SAuBX,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resolves the final output path for a reporter
3
+ *
4
+ * @param outputDir - Optional output directory from --output flag
5
+ * @param outputFile - Optional output filename from --output-file flag
6
+ * @param defaultFilename - Default filename to use if none specified
7
+ * @returns Resolved output path, or undefined if no output to file requested
8
+ */
9
+ export declare const resolveOutputPath: (outputDir?: string, outputFile?: string, defaultFilename?: string) => string | undefined;
10
+ //# sourceMappingURL=output-path-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-path-resolver.d.ts","sourceRoot":"","sources":["../../src/core/output-path-resolver.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,MAAM,EAClB,aAAa,MAAM,EACnB,kBAAkB,MAAM,KACvB,MAAM,GAAG,SAuBX,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { isAbsolute, join, resolve } from 'node:path';
2
+ /**
3
+ * Resolves the final output path for a reporter
4
+ *
5
+ * @param outputDir - Optional output directory from --output flag
6
+ * @param outputFile - Optional output filename from --output-file flag
7
+ * @param defaultFilename - Default filename to use if none specified
8
+ * @returns Resolved output path, or undefined if no output to file requested
9
+ */
10
+ export const resolveOutputPath = (outputDir, outputFile, defaultFilename) => {
11
+ // If outputFile is provided
12
+ if (outputFile) {
13
+ // If outputFile is absolute, use as-is
14
+ if (isAbsolute(outputFile)) {
15
+ return outputFile;
16
+ }
17
+ // If outputDir specified, join them
18
+ if (outputDir) {
19
+ return join(outputDir, outputFile);
20
+ }
21
+ // Otherwise, resolve relative to cwd
22
+ return resolve(process.cwd(), outputFile);
23
+ }
24
+ // Fall back to default behavior
25
+ if (outputDir && defaultFilename) {
26
+ return join(outputDir, defaultFilename);
27
+ }
28
+ return undefined;
29
+ };
30
+ //# sourceMappingURL=output-path-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-path-resolver.js","sourceRoot":"","sources":["../../src/core/output-path-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,SAAkB,EAClB,UAAmB,EACnB,eAAwB,EACJ,EAAE;IACtB,4BAA4B;IAC5B,IAAI,UAAU,EAAE,CAAC;QACf,uCAAuC;QACvC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,oCAAoC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,qCAAqC;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,IAAI,SAAS,IAAI,eAAe,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Custom Error System
4
+ *
5
+ * Base error classes providing structured error handling with error codes,
6
+ * documentation URLs, and consistent error display.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.isModestBenchError = exports.ModestBenchError = exports.ModestBenchAggregateError = void 0;
10
+ /**
11
+ * Base URL for error documentation
12
+ */
13
+ const ERROR_DOC_BASE_URL = 'https://boneskull.github.io/modestbench/reference/errors';
14
+ /**
15
+ * Abstract base class for ModestBench aggregate errors
16
+ *
17
+ * Extends AggregateError to support multiple errors with ModestBench error
18
+ * system features.
19
+ */
20
+ class ModestBenchAggregateError extends AggregateError {
21
+ /**
22
+ * Error name (matches class name)
23
+ */
24
+ name;
25
+ /**
26
+ * Create a new ModestBench aggregate error
27
+ *
28
+ * @param errors - Array of errors that occurred
29
+ * @param message - Human-readable error message
30
+ * @param options - Optional Error options (e.g., cause)
31
+ */
32
+ constructor(errors, message, options) {
33
+ super(errors, message, options);
34
+ this.name = this.constructor.name;
35
+ }
36
+ /**
37
+ * Get the documentation URL for this error
38
+ *
39
+ * Returns a URL to the error reference page with an anchor to the specific
40
+ * error.
41
+ *
42
+ * @returns Documentation URL
43
+ */
44
+ getDocUrl() {
45
+ // Use the error class name as the anchor (e.g., ConfigValidationError -> #configvalidationerror)
46
+ const anchor = this.name.toLowerCase();
47
+ return `${ERROR_DOC_BASE_URL}#${anchor}`;
48
+ }
49
+ /**
50
+ * Convert error to string with code, documentation URL, and nested errors
51
+ *
52
+ * @returns Formatted error string
53
+ */
54
+ toString() {
55
+ let result = `${this.name} [${this.code}]: ${this.message}\n`;
56
+ result += `See: ${this.getDocUrl()}\n`;
57
+ if (this.errors.length > 0) {
58
+ result += `\nContains ${this.errors.length} error(s):\n`;
59
+ this.errors.forEach((err, index) => {
60
+ const errMsg = err instanceof Error ? err.message : String(err);
61
+ result += ` ${index + 1}. ${errMsg}\n`;
62
+ });
63
+ }
64
+ return result;
65
+ }
66
+ }
67
+ exports.ModestBenchAggregateError = ModestBenchAggregateError;
68
+ /**
69
+ * Abstract base class for all ModestBench errors
70
+ *
71
+ * Provides:
72
+ *
73
+ * - Unique error codes with ERR_MB_ prefix
74
+ * - Documentation URL generation
75
+ * - Consistent error display format
76
+ * - TypeScript type safety
77
+ */
78
+ class ModestBenchError extends Error {
79
+ /**
80
+ * Error name (matches class name)
81
+ */
82
+ name;
83
+ /**
84
+ * Create a new ModestBench error
85
+ *
86
+ * @param message - Human-readable error message
87
+ * @param options - Optional Error options (e.g., cause)
88
+ */
89
+ constructor(message, options) {
90
+ super(message, options);
91
+ this.name = this.constructor.name;
92
+ }
93
+ /**
94
+ * Get the documentation URL for this error
95
+ *
96
+ * Returns a URL to the error reference page with an anchor to the specific
97
+ * error.
98
+ *
99
+ * @returns Documentation URL
100
+ */
101
+ getDocUrl() {
102
+ // Use the error class name as the anchor (e.g., ConfigValidationError -> #configvalidationerror)
103
+ const anchor = this.name.toLowerCase();
104
+ return `${ERROR_DOC_BASE_URL}#${anchor}`;
105
+ }
106
+ /**
107
+ * Convert error to string with code and documentation URL
108
+ *
109
+ * @returns Formatted error string
110
+ */
111
+ toString() {
112
+ return `${this.name} [${this.code}]: ${this.message}\nSee: ${this.getDocUrl()}`;
113
+ }
114
+ }
115
+ exports.ModestBenchError = ModestBenchError;
116
+ /**
117
+ * Type guard to check if an error is a ModestBench error
118
+ *
119
+ * @param error - The error to check
120
+ * @returns True if the error is a ModestBench error
121
+ */
122
+ const isModestBenchError = (error) => {
123
+ return (typeof error === 'object' &&
124
+ error !== null &&
125
+ 'code' in error &&
126
+ typeof error.code === 'string' &&
127
+ error.code.startsWith('ERR_MB_'));
128
+ };
129
+ exports.isModestBenchError = isModestBenchError;
130
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH;;GAEG;AACH,MAAM,kBAAkB,GACtB,0DAA0D,CAAC;AAE7D;;;;;GAKG;AACH,MAAsB,yBAA0B,SAAQ,cAAc;IAOpE;;OAEG;IACsB,IAAI,CAAS;IAEtC;;;;;;OAMG;IACH,YAAY,MAAiB,EAAE,OAAe,EAAE,OAAsB;QACpE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,SAAS;QACP,iGAAiG;QACjG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,GAAG,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACM,QAAQ;QACf,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC;QAC9D,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,cAAc,IAAI,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAzDD,8DAyDC;AAED;;;;;;;;;GASG;AACH,MAAsB,gBAAiB,SAAQ,KAAK;IAOlD;;OAEG;IACsB,IAAI,CAAS;IAEtC;;;;;OAKG;IACH,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,SAAS;QACP,iGAAiG;QACjG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,GAAG,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACM,QAAQ;QACf,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;IAClF,CAAC;CACF;AA7CD,4CA6CC;AAED;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAChC,KAAc,EACa,EAAE;IAC7B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;QACpD,KAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CACvD,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,kBAAkB,sBAU7B"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * ModestBench Custom Error System
3
+ *
4
+ * Base error classes providing structured error handling with error codes,
5
+ * documentation URLs, and consistent error display.
6
+ */
7
+ /**
8
+ * Abstract base class for ModestBench aggregate errors
9
+ *
10
+ * Extends AggregateError to support multiple errors with ModestBench error
11
+ * system features.
12
+ */
13
+ export declare abstract class ModestBenchAggregateError extends AggregateError {
14
+ /**
15
+ * Unique error code for this error type Must be in format:
16
+ * ERR_MB_CATEGORY_DESCRIPTION
17
+ */
18
+ abstract readonly code: string;
19
+ /**
20
+ * Error name (matches class name)
21
+ */
22
+ readonly name: string;
23
+ /**
24
+ * Create a new ModestBench aggregate error
25
+ *
26
+ * @param errors - Array of errors that occurred
27
+ * @param message - Human-readable error message
28
+ * @param options - Optional Error options (e.g., cause)
29
+ */
30
+ constructor(errors: unknown[], message: string, options?: ErrorOptions);
31
+ /**
32
+ * Get the documentation URL for this error
33
+ *
34
+ * Returns a URL to the error reference page with an anchor to the specific
35
+ * error.
36
+ *
37
+ * @returns Documentation URL
38
+ */
39
+ getDocUrl(): string;
40
+ /**
41
+ * Convert error to string with code, documentation URL, and nested errors
42
+ *
43
+ * @returns Formatted error string
44
+ */
45
+ toString(): string;
46
+ }
47
+ /**
48
+ * Abstract base class for all ModestBench errors
49
+ *
50
+ * Provides:
51
+ *
52
+ * - Unique error codes with ERR_MB_ prefix
53
+ * - Documentation URL generation
54
+ * - Consistent error display format
55
+ * - TypeScript type safety
56
+ */
57
+ export declare abstract class ModestBenchError extends Error {
58
+ /**
59
+ * Unique error code for this error type Must be in format:
60
+ * ERR_MB_CATEGORY_DESCRIPTION
61
+ */
62
+ abstract readonly code: string;
63
+ /**
64
+ * Error name (matches class name)
65
+ */
66
+ readonly name: string;
67
+ /**
68
+ * Create a new ModestBench error
69
+ *
70
+ * @param message - Human-readable error message
71
+ * @param options - Optional Error options (e.g., cause)
72
+ */
73
+ constructor(message: string, options?: ErrorOptions);
74
+ /**
75
+ * Get the documentation URL for this error
76
+ *
77
+ * Returns a URL to the error reference page with an anchor to the specific
78
+ * error.
79
+ *
80
+ * @returns Documentation URL
81
+ */
82
+ getDocUrl(): string;
83
+ /**
84
+ * Convert error to string with code and documentation URL
85
+ *
86
+ * @returns Formatted error string
87
+ */
88
+ toString(): string;
89
+ }
90
+ /**
91
+ * Type guard to check if an error is a ModestBench error
92
+ *
93
+ * @param error - The error to check
94
+ * @returns True if the error is a ModestBench error
95
+ */
96
+ export declare const isModestBenchError: (error: unknown) => error is ModestBenchError;
97
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;GAKG;AACH,8BAAsB,yBAA0B,SAAQ,cAAc;IACpE;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC;;;;;;OAMG;gBACS,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;IAKtE;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM;IAMnB;;;;OAIG;IACM,QAAQ,IAAI,MAAM;CAc5B;AAED;;;;;;;;;GASG;AACH,8BAAsB,gBAAiB,SAAQ,KAAK;IAClD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;IAKnD;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM;IAMnB;;;;OAIG;IACM,QAAQ,IAAI,MAAM;CAG5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,KACb,KAAK,IAAI,gBAQX,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * ModestBench Custom Error System
3
+ *
4
+ * Base error classes providing structured error handling with error codes,
5
+ * documentation URLs, and consistent error display.
6
+ */
7
+ /**
8
+ * Abstract base class for ModestBench aggregate errors
9
+ *
10
+ * Extends AggregateError to support multiple errors with ModestBench error
11
+ * system features.
12
+ */
13
+ export declare abstract class ModestBenchAggregateError extends AggregateError {
14
+ /**
15
+ * Unique error code for this error type Must be in format:
16
+ * ERR_MB_CATEGORY_DESCRIPTION
17
+ */
18
+ abstract readonly code: string;
19
+ /**
20
+ * Error name (matches class name)
21
+ */
22
+ readonly name: string;
23
+ /**
24
+ * Create a new ModestBench aggregate error
25
+ *
26
+ * @param errors - Array of errors that occurred
27
+ * @param message - Human-readable error message
28
+ * @param options - Optional Error options (e.g., cause)
29
+ */
30
+ constructor(errors: unknown[], message: string, options?: ErrorOptions);
31
+ /**
32
+ * Get the documentation URL for this error
33
+ *
34
+ * Returns a URL to the error reference page with an anchor to the specific
35
+ * error.
36
+ *
37
+ * @returns Documentation URL
38
+ */
39
+ getDocUrl(): string;
40
+ /**
41
+ * Convert error to string with code, documentation URL, and nested errors
42
+ *
43
+ * @returns Formatted error string
44
+ */
45
+ toString(): string;
46
+ }
47
+ /**
48
+ * Abstract base class for all ModestBench errors
49
+ *
50
+ * Provides:
51
+ *
52
+ * - Unique error codes with ERR_MB_ prefix
53
+ * - Documentation URL generation
54
+ * - Consistent error display format
55
+ * - TypeScript type safety
56
+ */
57
+ export declare abstract class ModestBenchError extends Error {
58
+ /**
59
+ * Unique error code for this error type Must be in format:
60
+ * ERR_MB_CATEGORY_DESCRIPTION
61
+ */
62
+ abstract readonly code: string;
63
+ /**
64
+ * Error name (matches class name)
65
+ */
66
+ readonly name: string;
67
+ /**
68
+ * Create a new ModestBench error
69
+ *
70
+ * @param message - Human-readable error message
71
+ * @param options - Optional Error options (e.g., cause)
72
+ */
73
+ constructor(message: string, options?: ErrorOptions);
74
+ /**
75
+ * Get the documentation URL for this error
76
+ *
77
+ * Returns a URL to the error reference page with an anchor to the specific
78
+ * error.
79
+ *
80
+ * @returns Documentation URL
81
+ */
82
+ getDocUrl(): string;
83
+ /**
84
+ * Convert error to string with code and documentation URL
85
+ *
86
+ * @returns Formatted error string
87
+ */
88
+ toString(): string;
89
+ }
90
+ /**
91
+ * Type guard to check if an error is a ModestBench error
92
+ *
93
+ * @param error - The error to check
94
+ * @returns True if the error is a ModestBench error
95
+ */
96
+ export declare const isModestBenchError: (error: unknown) => error is ModestBenchError;
97
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;GAKG;AACH,8BAAsB,yBAA0B,SAAQ,cAAc;IACpE;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC;;;;;;OAMG;gBACS,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;IAKtE;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM;IAMnB;;;;OAIG;IACM,QAAQ,IAAI,MAAM;CAc5B;AAED;;;;;;;;;GASG;AACH,8BAAsB,gBAAiB,SAAQ,KAAK;IAClD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;IAKnD;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM;IAMnB;;;;OAIG;IACM,QAAQ,IAAI,MAAM;CAG5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,KACb,KAAK,IAAI,gBAQX,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * ModestBench Custom Error System
3
+ *
4
+ * Base error classes providing structured error handling with error codes,
5
+ * documentation URLs, and consistent error display.
6
+ */
7
+ /**
8
+ * Base URL for error documentation
9
+ */
10
+ const ERROR_DOC_BASE_URL = 'https://boneskull.github.io/modestbench/reference/errors';
11
+ /**
12
+ * Abstract base class for ModestBench aggregate errors
13
+ *
14
+ * Extends AggregateError to support multiple errors with ModestBench error
15
+ * system features.
16
+ */
17
+ export class ModestBenchAggregateError extends AggregateError {
18
+ /**
19
+ * Error name (matches class name)
20
+ */
21
+ name;
22
+ /**
23
+ * Create a new ModestBench aggregate error
24
+ *
25
+ * @param errors - Array of errors that occurred
26
+ * @param message - Human-readable error message
27
+ * @param options - Optional Error options (e.g., cause)
28
+ */
29
+ constructor(errors, message, options) {
30
+ super(errors, message, options);
31
+ this.name = this.constructor.name;
32
+ }
33
+ /**
34
+ * Get the documentation URL for this error
35
+ *
36
+ * Returns a URL to the error reference page with an anchor to the specific
37
+ * error.
38
+ *
39
+ * @returns Documentation URL
40
+ */
41
+ getDocUrl() {
42
+ // Use the error class name as the anchor (e.g., ConfigValidationError -> #configvalidationerror)
43
+ const anchor = this.name.toLowerCase();
44
+ return `${ERROR_DOC_BASE_URL}#${anchor}`;
45
+ }
46
+ /**
47
+ * Convert error to string with code, documentation URL, and nested errors
48
+ *
49
+ * @returns Formatted error string
50
+ */
51
+ toString() {
52
+ let result = `${this.name} [${this.code}]: ${this.message}\n`;
53
+ result += `See: ${this.getDocUrl()}\n`;
54
+ if (this.errors.length > 0) {
55
+ result += `\nContains ${this.errors.length} error(s):\n`;
56
+ this.errors.forEach((err, index) => {
57
+ const errMsg = err instanceof Error ? err.message : String(err);
58
+ result += ` ${index + 1}. ${errMsg}\n`;
59
+ });
60
+ }
61
+ return result;
62
+ }
63
+ }
64
+ /**
65
+ * Abstract base class for all ModestBench errors
66
+ *
67
+ * Provides:
68
+ *
69
+ * - Unique error codes with ERR_MB_ prefix
70
+ * - Documentation URL generation
71
+ * - Consistent error display format
72
+ * - TypeScript type safety
73
+ */
74
+ export class ModestBenchError extends Error {
75
+ /**
76
+ * Error name (matches class name)
77
+ */
78
+ name;
79
+ /**
80
+ * Create a new ModestBench error
81
+ *
82
+ * @param message - Human-readable error message
83
+ * @param options - Optional Error options (e.g., cause)
84
+ */
85
+ constructor(message, options) {
86
+ super(message, options);
87
+ this.name = this.constructor.name;
88
+ }
89
+ /**
90
+ * Get the documentation URL for this error
91
+ *
92
+ * Returns a URL to the error reference page with an anchor to the specific
93
+ * error.
94
+ *
95
+ * @returns Documentation URL
96
+ */
97
+ getDocUrl() {
98
+ // Use the error class name as the anchor (e.g., ConfigValidationError -> #configvalidationerror)
99
+ const anchor = this.name.toLowerCase();
100
+ return `${ERROR_DOC_BASE_URL}#${anchor}`;
101
+ }
102
+ /**
103
+ * Convert error to string with code and documentation URL
104
+ *
105
+ * @returns Formatted error string
106
+ */
107
+ toString() {
108
+ return `${this.name} [${this.code}]: ${this.message}\nSee: ${this.getDocUrl()}`;
109
+ }
110
+ }
111
+ /**
112
+ * Type guard to check if an error is a ModestBench error
113
+ *
114
+ * @param error - The error to check
115
+ * @returns True if the error is a ModestBench error
116
+ */
117
+ export const isModestBenchError = (error) => {
118
+ return (typeof error === 'object' &&
119
+ error !== null &&
120
+ 'code' in error &&
121
+ typeof error.code === 'string' &&
122
+ error.code.startsWith('ERR_MB_'));
123
+ };
124
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,kBAAkB,GACtB,0DAA0D,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,OAAgB,yBAA0B,SAAQ,cAAc;IAOpE;;OAEG;IACsB,IAAI,CAAS;IAEtC;;;;;;OAMG;IACH,YAAY,MAAiB,EAAE,OAAe,EAAE,OAAsB;QACpE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,SAAS;QACP,iGAAiG;QACjG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,GAAG,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACM,QAAQ;QACf,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC;QAC9D,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,cAAc,IAAI,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,KAAK;IAOlD;;OAEG;IACsB,IAAI,CAAS;IAEtC;;;;;OAKG;IACH,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,SAAS;QACP,iGAAiG;QACjG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,GAAG,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACM,QAAQ;QACf,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;IAClF,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAc,EACa,EAAE;IAC7B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;QACpD,KAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CACvD,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * CLI-related errors
4
+ *
5
+ * Errors that occur during command-line interface operations.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.UnknownError = exports.InvalidDateFormatError = exports.InvalidArgumentError = void 0;
9
+ const base_js_1 = require("./base.cjs");
10
+ /**
11
+ * Invalid CLI argument
12
+ *
13
+ * Thrown when a CLI argument is invalid or cannot be parsed.
14
+ */
15
+ class InvalidArgumentError extends base_js_1.ModestBenchError {
16
+ code = 'ERR_MB_CLI_INVALID_ARGUMENT';
17
+ }
18
+ exports.InvalidArgumentError = InvalidArgumentError;
19
+ /**
20
+ * Invalid date format
21
+ *
22
+ * Thrown when a date string cannot be parsed into a valid date.
23
+ */
24
+ class InvalidDateFormatError extends base_js_1.ModestBenchError {
25
+ code = 'ERR_MB_CLI_INVALID_DATE_FORMAT';
26
+ }
27
+ exports.InvalidDateFormatError = InvalidDateFormatError;
28
+ /**
29
+ * Unknown error
30
+ *
31
+ * Thrown at the CLI boundary to wrap unexpected errors that are not ModestBench
32
+ * errors. This ensures all errors have proper structure and documentation
33
+ * links.
34
+ */
35
+ class UnknownError extends base_js_1.ModestBenchError {
36
+ code = 'ERR_MB_UNKNOWN';
37
+ /**
38
+ * Create a new UnknownError wrapping an unexpected error
39
+ *
40
+ * @param message - The error message (typically from the original error)
41
+ * @param options - Error options with the original error as the cause
42
+ */
43
+ constructor(message, options) {
44
+ super(message, options);
45
+ }
46
+ /**
47
+ * Override toString to show full details of the wrapped error
48
+ */
49
+ toString() {
50
+ let result = super.toString();
51
+ if (this.cause instanceof Error && this.cause.stack) {
52
+ result += '\n\nOriginal error:\n' + this.cause.stack;
53
+ }
54
+ return result;
55
+ }
56
+ }
57
+ exports.UnknownError = UnknownError;
58
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/errors/cli.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wCAA6C;AAE7C;;;;GAIG;AACH,MAAa,oBAAqB,SAAQ,0BAAgB;IAC/C,IAAI,GAAG,6BAA6B,CAAC;CAC/C;AAFD,oDAEC;AAED;;;;GAIG;AACH,MAAa,sBAAuB,SAAQ,0BAAgB;IACjD,IAAI,GAAG,gCAAgC,CAAC;CAClD;AAFD,wDAEC;AAED;;;;;;GAMG;AACH,MAAa,YAAa,SAAQ,0BAAgB;IACvC,IAAI,GAAG,gBAAgB,CAAC;IAEjC;;;;;OAKG;IACH,YAAY,OAAe,EAAE,OAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACM,QAAQ;QACf,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,KAAK,YAAY,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpD,MAAM,IAAI,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACvD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAzBD,oCAyBC"}