modestbench 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +162 -57
  3. package/dist/bootstrap.cjs +10 -10
  4. package/dist/bootstrap.cjs.map +1 -1
  5. package/dist/bootstrap.d.cts.map +1 -1
  6. package/dist/bootstrap.d.ts.map +1 -1
  7. package/dist/bootstrap.js +5 -5
  8. package/dist/bootstrap.js.map +1 -1
  9. package/dist/cli/commands/analyze.cjs +60 -0
  10. package/dist/cli/commands/analyze.cjs.map +1 -0
  11. package/dist/cli/commands/analyze.d.cts +35 -0
  12. package/dist/cli/commands/analyze.d.cts.map +1 -0
  13. package/dist/cli/commands/analyze.d.ts +35 -0
  14. package/dist/cli/commands/analyze.d.ts.map +1 -0
  15. package/dist/cli/commands/analyze.js +56 -0
  16. package/dist/cli/commands/analyze.js.map +1 -0
  17. package/dist/cli/commands/baseline.cjs +404 -0
  18. package/dist/cli/commands/baseline.cjs.map +1 -0
  19. package/dist/cli/commands/baseline.d.cts +72 -0
  20. package/dist/cli/commands/baseline.d.cts.map +1 -0
  21. package/dist/cli/commands/baseline.d.ts +72 -0
  22. package/dist/cli/commands/baseline.d.ts.map +1 -0
  23. package/dist/cli/commands/baseline.js +396 -0
  24. package/dist/cli/commands/baseline.js.map +1 -0
  25. package/dist/cli/commands/history.cjs +108 -266
  26. package/dist/cli/commands/history.cjs.map +1 -1
  27. package/dist/cli/commands/history.d.cts +75 -12
  28. package/dist/cli/commands/history.d.cts.map +1 -1
  29. package/dist/cli/commands/history.d.ts +75 -12
  30. package/dist/cli/commands/history.d.ts.map +1 -1
  31. package/dist/cli/commands/history.js +105 -268
  32. package/dist/cli/commands/history.js.map +1 -1
  33. package/dist/cli/commands/init.cjs +88 -155
  34. package/dist/cli/commands/init.cjs.map +1 -1
  35. package/dist/cli/commands/init.d.cts +4 -4
  36. package/dist/cli/commands/init.d.cts.map +1 -1
  37. package/dist/cli/commands/init.d.ts +4 -4
  38. package/dist/cli/commands/init.d.ts.map +1 -1
  39. package/dist/cli/commands/init.js +88 -155
  40. package/dist/cli/commands/init.js.map +1 -1
  41. package/dist/cli/commands/run.cjs +143 -112
  42. package/dist/cli/commands/run.cjs.map +1 -1
  43. package/dist/cli/commands/run.d.cts +17 -3
  44. package/dist/cli/commands/run.d.cts.map +1 -1
  45. package/dist/cli/commands/run.d.ts +17 -3
  46. package/dist/cli/commands/run.d.ts.map +1 -1
  47. package/dist/cli/commands/run.js +142 -78
  48. package/dist/cli/commands/run.js.map +1 -1
  49. package/dist/cli/index.cjs +671 -266
  50. package/dist/cli/index.cjs.map +1 -1
  51. package/dist/cli/index.d.cts +4 -16
  52. package/dist/cli/index.d.cts.map +1 -1
  53. package/dist/cli/index.d.ts +4 -16
  54. package/dist/cli/index.d.ts.map +1 -1
  55. package/dist/cli/index.js +664 -259
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/config/budget-schema.cjs +172 -0
  58. package/dist/config/budget-schema.cjs.map +1 -0
  59. package/dist/config/budget-schema.d.cts +59 -0
  60. package/dist/config/budget-schema.d.cts.map +1 -0
  61. package/dist/config/budget-schema.d.ts +59 -0
  62. package/dist/config/budget-schema.d.ts.map +1 -0
  63. package/dist/config/budget-schema.js +166 -0
  64. package/dist/config/budget-schema.js.map +1 -0
  65. package/dist/config/schema.cjs +182 -2
  66. package/dist/config/schema.cjs.map +1 -1
  67. package/dist/config/schema.d.cts +122 -3
  68. package/dist/config/schema.d.cts.map +1 -1
  69. package/dist/config/schema.d.ts +122 -3
  70. package/dist/config/schema.d.ts.map +1 -1
  71. package/dist/config/schema.js +180 -1
  72. package/dist/config/schema.js.map +1 -1
  73. package/dist/constants.cjs +45 -2
  74. package/dist/constants.cjs.map +1 -1
  75. package/dist/constants.d.cts +41 -0
  76. package/dist/constants.d.cts.map +1 -1
  77. package/dist/constants.d.ts +41 -0
  78. package/dist/constants.d.ts.map +1 -1
  79. package/dist/constants.js +44 -1
  80. package/dist/constants.js.map +1 -1
  81. package/dist/core/engine.cjs +104 -15
  82. package/dist/core/engine.cjs.map +1 -1
  83. package/dist/core/engine.d.cts +7 -4
  84. package/dist/core/engine.d.cts.map +1 -1
  85. package/dist/core/engine.d.ts +7 -4
  86. package/dist/core/engine.d.ts.map +1 -1
  87. package/dist/core/engine.js +105 -16
  88. package/dist/core/engine.js.map +1 -1
  89. package/dist/core/output-path-resolver.cjs +41 -0
  90. package/dist/core/output-path-resolver.cjs.map +1 -0
  91. package/dist/core/output-path-resolver.d.cts +10 -0
  92. package/dist/core/output-path-resolver.d.cts.map +1 -0
  93. package/dist/core/output-path-resolver.d.ts +10 -0
  94. package/dist/core/output-path-resolver.d.ts.map +1 -0
  95. package/dist/core/output-path-resolver.js +37 -0
  96. package/dist/core/output-path-resolver.js.map +1 -0
  97. package/dist/errors/base.cjs +12 -3
  98. package/dist/errors/base.cjs.map +1 -1
  99. package/dist/errors/base.d.cts +7 -0
  100. package/dist/errors/base.d.cts.map +1 -1
  101. package/dist/errors/base.d.ts +7 -0
  102. package/dist/errors/base.d.ts.map +1 -1
  103. package/dist/errors/base.js +10 -2
  104. package/dist/errors/base.js.map +1 -1
  105. package/dist/errors/budget.cjs +37 -0
  106. package/dist/errors/budget.cjs.map +1 -0
  107. package/dist/errors/budget.d.cts +31 -0
  108. package/dist/errors/budget.d.cts.map +1 -0
  109. package/dist/errors/budget.d.ts +31 -0
  110. package/dist/errors/budget.d.ts.map +1 -0
  111. package/dist/errors/budget.js +33 -0
  112. package/dist/errors/budget.js.map +1 -0
  113. package/dist/errors/index.cjs +4 -1
  114. package/dist/errors/index.cjs.map +1 -1
  115. package/dist/errors/index.d.cts +1 -0
  116. package/dist/errors/index.d.cts.map +1 -1
  117. package/dist/errors/index.d.ts +1 -0
  118. package/dist/errors/index.d.ts.map +1 -1
  119. package/dist/errors/index.js +2 -0
  120. package/dist/errors/index.js.map +1 -1
  121. package/dist/formatters/history/base.cjs +9 -0
  122. package/dist/formatters/history/base.cjs.map +1 -0
  123. package/dist/formatters/history/base.d.cts +26 -0
  124. package/dist/formatters/history/base.d.cts.map +1 -0
  125. package/dist/formatters/history/base.d.ts +26 -0
  126. package/dist/formatters/history/base.d.ts.map +1 -0
  127. package/dist/formatters/history/base.js +8 -0
  128. package/dist/formatters/history/base.js.map +1 -0
  129. package/dist/formatters/history/compare.cjs +127 -0
  130. package/dist/formatters/history/compare.cjs.map +1 -0
  131. package/dist/formatters/history/compare.d.cts +21 -0
  132. package/dist/formatters/history/compare.d.cts.map +1 -0
  133. package/dist/formatters/history/compare.d.ts +21 -0
  134. package/dist/formatters/history/compare.d.ts.map +1 -0
  135. package/dist/formatters/history/compare.js +123 -0
  136. package/dist/formatters/history/compare.js.map +1 -0
  137. package/dist/formatters/history/list.cjs +74 -0
  138. package/dist/formatters/history/list.cjs.map +1 -0
  139. package/dist/formatters/history/list.d.cts +25 -0
  140. package/dist/formatters/history/list.d.cts.map +1 -0
  141. package/dist/formatters/history/list.d.ts +25 -0
  142. package/dist/formatters/history/list.d.ts.map +1 -0
  143. package/dist/formatters/history/list.js +70 -0
  144. package/dist/formatters/history/list.js.map +1 -0
  145. package/dist/formatters/history/show.cjs +98 -0
  146. package/dist/formatters/history/show.cjs.map +1 -0
  147. package/dist/formatters/history/show.d.cts +21 -0
  148. package/dist/formatters/history/show.d.cts.map +1 -0
  149. package/dist/formatters/history/show.d.ts +21 -0
  150. package/dist/formatters/history/show.d.ts.map +1 -0
  151. package/dist/formatters/history/show.js +94 -0
  152. package/dist/formatters/history/show.js.map +1 -0
  153. package/dist/formatters/history/trends.cjs +194 -0
  154. package/dist/formatters/history/trends.cjs.map +1 -0
  155. package/dist/formatters/history/trends.d.cts +22 -0
  156. package/dist/formatters/history/trends.d.cts.map +1 -0
  157. package/dist/formatters/history/trends.d.ts +22 -0
  158. package/dist/formatters/history/trends.d.ts.map +1 -0
  159. package/dist/formatters/history/trends.js +190 -0
  160. package/dist/formatters/history/trends.js.map +1 -0
  161. package/dist/formatters/history/visualization.cjs +79 -0
  162. package/dist/formatters/history/visualization.cjs.map +1 -0
  163. package/dist/formatters/history/visualization.d.cts +24 -0
  164. package/dist/formatters/history/visualization.d.cts.map +1 -0
  165. package/dist/formatters/history/visualization.d.ts +24 -0
  166. package/dist/formatters/history/visualization.d.ts.map +1 -0
  167. package/dist/formatters/history/visualization.js +74 -0
  168. package/dist/formatters/history/visualization.js.map +1 -0
  169. package/dist/index.cjs +27 -17
  170. package/dist/index.cjs.map +1 -1
  171. package/dist/index.d.cts +10 -5
  172. package/dist/index.d.cts.map +1 -1
  173. package/dist/index.d.ts +10 -5
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +14 -9
  176. package/dist/index.js.map +1 -1
  177. package/dist/reporters/csv.cjs +39 -19
  178. package/dist/reporters/csv.cjs.map +1 -1
  179. package/dist/reporters/csv.d.cts +4 -7
  180. package/dist/reporters/csv.d.cts.map +1 -1
  181. package/dist/reporters/csv.d.ts +4 -7
  182. package/dist/reporters/csv.d.ts.map +1 -1
  183. package/dist/reporters/csv.js +38 -18
  184. package/dist/reporters/csv.js.map +1 -1
  185. package/dist/reporters/human.cjs +87 -99
  186. package/dist/reporters/human.cjs.map +1 -1
  187. package/dist/reporters/human.d.cts +15 -14
  188. package/dist/reporters/human.d.cts.map +1 -1
  189. package/dist/reporters/human.d.ts +15 -14
  190. package/dist/reporters/human.d.ts.map +1 -1
  191. package/dist/reporters/human.js +68 -80
  192. package/dist/reporters/human.js.map +1 -1
  193. package/dist/reporters/json.cjs +25 -50
  194. package/dist/reporters/json.cjs.map +1 -1
  195. package/dist/reporters/json.d.cts +3 -29
  196. package/dist/reporters/json.d.cts.map +1 -1
  197. package/dist/reporters/json.d.ts +3 -29
  198. package/dist/reporters/json.d.ts.map +1 -1
  199. package/dist/reporters/json.js +26 -51
  200. package/dist/reporters/json.js.map +1 -1
  201. package/dist/reporters/profile-human.cjs +149 -0
  202. package/dist/reporters/profile-human.cjs.map +1 -0
  203. package/dist/reporters/profile-human.d.cts +44 -0
  204. package/dist/reporters/profile-human.d.cts.map +1 -0
  205. package/dist/reporters/profile-human.d.ts +44 -0
  206. package/dist/reporters/profile-human.d.ts.map +1 -0
  207. package/dist/reporters/profile-human.js +142 -0
  208. package/dist/reporters/profile-human.js.map +1 -0
  209. package/dist/reporters/simple.cjs +66 -46
  210. package/dist/reporters/simple.cjs.map +1 -1
  211. package/dist/reporters/simple.d.cts +15 -15
  212. package/dist/reporters/simple.d.cts.map +1 -1
  213. package/dist/reporters/simple.d.ts +15 -15
  214. package/dist/reporters/simple.d.ts.map +1 -1
  215. package/dist/reporters/simple.js +65 -45
  216. package/dist/reporters/simple.js.map +1 -1
  217. package/dist/schema/modestbench-config.schema.json +153 -0
  218. package/dist/services/baseline-storage.cjs +151 -0
  219. package/dist/services/baseline-storage.cjs.map +1 -0
  220. package/dist/services/baseline-storage.d.cts +55 -0
  221. package/dist/services/baseline-storage.d.cts.map +1 -0
  222. package/dist/services/baseline-storage.d.ts +55 -0
  223. package/dist/services/baseline-storage.d.ts.map +1 -0
  224. package/dist/services/baseline-storage.js +147 -0
  225. package/dist/services/baseline-storage.js.map +1 -0
  226. package/dist/services/budget-evaluator.cjs +146 -0
  227. package/dist/services/budget-evaluator.cjs.map +1 -0
  228. package/dist/services/budget-evaluator.d.cts +29 -0
  229. package/dist/services/budget-evaluator.d.cts.map +1 -0
  230. package/dist/services/budget-evaluator.d.ts +29 -0
  231. package/dist/services/budget-evaluator.d.ts.map +1 -0
  232. package/dist/services/budget-evaluator.js +142 -0
  233. package/dist/services/budget-evaluator.js.map +1 -0
  234. package/dist/{config/manager.cjs → services/config-manager.cjs} +25 -11
  235. package/dist/services/config-manager.cjs.map +1 -0
  236. package/dist/{config/manager.d.cts → services/config-manager.d.cts} +7 -2
  237. package/dist/services/config-manager.d.cts.map +1 -0
  238. package/dist/{config/manager.d.ts → services/config-manager.d.ts} +7 -2
  239. package/dist/services/config-manager.d.ts.map +1 -0
  240. package/dist/{config/manager.js → services/config-manager.js} +25 -11
  241. package/dist/services/config-manager.js.map +1 -0
  242. package/dist/{core/loader.cjs → services/file-loader.cjs} +5 -8
  243. package/dist/services/file-loader.cjs.map +1 -0
  244. package/dist/{core/loader.d.cts → services/file-loader.d.cts} +1 -1
  245. package/dist/services/file-loader.d.cts.map +1 -0
  246. package/dist/{core/loader.d.ts → services/file-loader.d.ts} +1 -1
  247. package/dist/services/file-loader.d.ts.map +1 -0
  248. package/dist/{core/loader.js → services/file-loader.js} +5 -8
  249. package/dist/services/file-loader.js.map +1 -0
  250. package/dist/services/history/comparison.cjs +124 -0
  251. package/dist/services/history/comparison.cjs.map +1 -0
  252. package/dist/services/history/comparison.d.cts +18 -0
  253. package/dist/services/history/comparison.d.cts.map +1 -0
  254. package/dist/services/history/comparison.d.ts +18 -0
  255. package/dist/services/history/comparison.d.ts.map +1 -0
  256. package/dist/services/history/comparison.js +120 -0
  257. package/dist/services/history/comparison.js.map +1 -0
  258. package/dist/services/history/models.cjs +9 -0
  259. package/dist/services/history/models.cjs.map +1 -0
  260. package/dist/services/history/models.d.cts +139 -0
  261. package/dist/services/history/models.d.cts.map +1 -0
  262. package/dist/services/history/models.d.ts +139 -0
  263. package/dist/services/history/models.d.ts.map +1 -0
  264. package/dist/services/history/models.js +8 -0
  265. package/dist/services/history/models.js.map +1 -0
  266. package/dist/services/history/query.cjs +97 -0
  267. package/dist/services/history/query.cjs.map +1 -0
  268. package/dist/services/history/query.d.cts +38 -0
  269. package/dist/services/history/query.d.cts.map +1 -0
  270. package/dist/services/history/query.d.ts +38 -0
  271. package/dist/services/history/query.d.ts.map +1 -0
  272. package/dist/services/history/query.js +92 -0
  273. package/dist/services/history/query.js.map +1 -0
  274. package/dist/services/history/trend-analysis.cjs +187 -0
  275. package/dist/services/history/trend-analysis.cjs.map +1 -0
  276. package/dist/services/history/trend-analysis.d.cts +34 -0
  277. package/dist/services/history/trend-analysis.d.cts.map +1 -0
  278. package/dist/services/history/trend-analysis.d.ts +34 -0
  279. package/dist/services/history/trend-analysis.d.ts.map +1 -0
  280. package/dist/services/history/trend-analysis.js +179 -0
  281. package/dist/services/history/trend-analysis.js.map +1 -0
  282. package/dist/{storage/history.cjs → services/history-storage.cjs} +1 -1
  283. package/dist/services/history-storage.cjs.map +1 -0
  284. package/dist/{storage/history.d.cts → services/history-storage.d.cts} +1 -1
  285. package/dist/services/history-storage.d.cts.map +1 -0
  286. package/dist/{storage/history.d.ts → services/history-storage.d.ts} +1 -1
  287. package/dist/services/history-storage.d.ts.map +1 -0
  288. package/dist/{storage/history.js → services/history-storage.js} +1 -1
  289. package/dist/services/history-storage.js.map +1 -0
  290. package/dist/services/profiler/profile-filter.cjs +113 -0
  291. package/dist/services/profiler/profile-filter.cjs.map +1 -0
  292. package/dist/services/profiler/profile-filter.d.cts +20 -0
  293. package/dist/services/profiler/profile-filter.d.cts.map +1 -0
  294. package/dist/services/profiler/profile-filter.d.ts +20 -0
  295. package/dist/services/profiler/profile-filter.d.ts.map +1 -0
  296. package/dist/services/profiler/profile-filter.js +109 -0
  297. package/dist/services/profiler/profile-filter.js.map +1 -0
  298. package/dist/services/profiler/profile-parser.cjs +139 -0
  299. package/dist/services/profiler/profile-parser.cjs.map +1 -0
  300. package/dist/services/profiler/profile-parser.d.cts +18 -0
  301. package/dist/services/profiler/profile-parser.d.cts.map +1 -0
  302. package/dist/services/profiler/profile-parser.d.ts +18 -0
  303. package/dist/services/profiler/profile-parser.d.ts.map +1 -0
  304. package/dist/services/profiler/profile-parser.js +132 -0
  305. package/dist/services/profiler/profile-parser.js.map +1 -0
  306. package/dist/services/profiler/profile-runner.cjs +90 -0
  307. package/dist/services/profiler/profile-runner.cjs.map +1 -0
  308. package/dist/services/profiler/profile-runner.d.cts +29 -0
  309. package/dist/services/profiler/profile-runner.d.cts.map +1 -0
  310. package/dist/services/profiler/profile-runner.d.ts +29 -0
  311. package/dist/services/profiler/profile-runner.d.ts.map +1 -0
  312. package/dist/services/profiler/profile-runner.js +86 -0
  313. package/dist/services/profiler/profile-runner.js.map +1 -0
  314. package/dist/{progress/manager.cjs → services/progress-manager.cjs} +1 -1
  315. package/dist/services/progress-manager.cjs.map +1 -0
  316. package/dist/{progress/manager.d.cts → services/progress-manager.d.cts} +1 -1
  317. package/dist/services/progress-manager.d.cts.map +1 -0
  318. package/dist/{progress/manager.d.ts → services/progress-manager.d.ts} +1 -1
  319. package/dist/services/progress-manager.d.ts.map +1 -0
  320. package/dist/{progress/manager.js → services/progress-manager.js} +1 -1
  321. package/dist/services/progress-manager.js.map +1 -0
  322. package/dist/{reporters/registry.cjs → services/reporter-registry.cjs} +19 -25
  323. package/dist/services/reporter-registry.cjs.map +1 -0
  324. package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +19 -41
  325. package/dist/services/reporter-registry.d.cts.map +1 -0
  326. package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +19 -41
  327. package/dist/services/reporter-registry.d.ts.map +1 -0
  328. package/dist/{reporters/registry.js → services/reporter-registry.js} +19 -25
  329. package/dist/services/reporter-registry.js.map +1 -0
  330. package/dist/types/budgets.cjs +8 -0
  331. package/dist/types/budgets.cjs.map +1 -0
  332. package/dist/types/budgets.d.cts +149 -0
  333. package/dist/types/budgets.d.cts.map +1 -0
  334. package/dist/types/budgets.d.ts +149 -0
  335. package/dist/types/budgets.d.ts.map +1 -0
  336. package/dist/types/budgets.js +7 -0
  337. package/dist/types/budgets.js.map +1 -0
  338. package/dist/types/cli.cjs +2 -11
  339. package/dist/types/cli.cjs.map +1 -1
  340. package/dist/types/cli.d.cts +3 -224
  341. package/dist/types/cli.d.cts.map +1 -1
  342. package/dist/types/cli.d.ts +3 -224
  343. package/dist/types/cli.d.ts.map +1 -1
  344. package/dist/types/cli.js +2 -11
  345. package/dist/types/cli.js.map +1 -1
  346. package/dist/types/core.cjs +6 -1
  347. package/dist/types/core.cjs.map +1 -1
  348. package/dist/types/core.d.cts +13 -2
  349. package/dist/types/core.d.cts.map +1 -1
  350. package/dist/types/core.d.ts +13 -2
  351. package/dist/types/core.d.ts.map +1 -1
  352. package/dist/types/core.js +2 -1
  353. package/dist/types/core.js.map +1 -1
  354. package/dist/types/index.cjs +5 -0
  355. package/dist/types/index.cjs.map +1 -1
  356. package/dist/types/index.d.cts +2 -0
  357. package/dist/types/index.d.cts.map +1 -1
  358. package/dist/types/index.d.ts +2 -0
  359. package/dist/types/index.d.ts.map +1 -1
  360. package/dist/types/index.js +2 -0
  361. package/dist/types/index.js.map +1 -1
  362. package/dist/types/interfaces.d.cts +15 -8
  363. package/dist/types/interfaces.d.cts.map +1 -1
  364. package/dist/types/interfaces.d.ts +15 -8
  365. package/dist/types/interfaces.d.ts.map +1 -1
  366. package/dist/types/profiler.cjs +11 -0
  367. package/dist/types/profiler.cjs.map +1 -0
  368. package/dist/types/profiler.d.cts +100 -0
  369. package/dist/types/profiler.d.cts.map +1 -0
  370. package/dist/types/profiler.d.ts +100 -0
  371. package/dist/types/profiler.d.ts.map +1 -0
  372. package/dist/types/profiler.js +10 -0
  373. package/dist/types/profiler.js.map +1 -0
  374. package/dist/types/utility.cjs.map +1 -1
  375. package/dist/types/utility.d.cts +0 -8
  376. package/dist/types/utility.d.cts.map +1 -1
  377. package/dist/types/utility.d.ts +0 -8
  378. package/dist/types/utility.d.ts.map +1 -1
  379. package/dist/types/utility.js.map +1 -1
  380. package/dist/utils/ansi.cjs +61 -0
  381. package/dist/utils/ansi.cjs.map +1 -0
  382. package/dist/utils/ansi.d.cts +53 -0
  383. package/dist/utils/ansi.d.cts.map +1 -0
  384. package/dist/utils/ansi.d.ts +53 -0
  385. package/dist/utils/ansi.d.ts.map +1 -0
  386. package/dist/utils/ansi.js +57 -0
  387. package/dist/utils/ansi.js.map +1 -0
  388. package/dist/utils/identifiers.cjs +32 -0
  389. package/dist/utils/identifiers.cjs.map +1 -0
  390. package/dist/utils/identifiers.d.cts +32 -0
  391. package/dist/utils/identifiers.d.cts.map +1 -0
  392. package/dist/utils/identifiers.d.ts +32 -0
  393. package/dist/utils/identifiers.d.ts.map +1 -0
  394. package/dist/utils/identifiers.js +27 -0
  395. package/dist/utils/identifiers.js.map +1 -0
  396. package/dist/utils/package.cjs +40 -0
  397. package/dist/utils/package.cjs.map +1 -0
  398. package/dist/utils/package.d.cts +15 -0
  399. package/dist/utils/package.d.cts.map +1 -0
  400. package/dist/utils/package.d.ts +15 -0
  401. package/dist/utils/package.d.ts.map +1 -0
  402. package/dist/utils/package.js +33 -0
  403. package/dist/utils/package.js.map +1 -0
  404. package/dist/utils/type-guards.cjs +48 -0
  405. package/dist/utils/type-guards.cjs.map +1 -0
  406. package/dist/utils/type-guards.d.cts +22 -0
  407. package/dist/utils/type-guards.d.cts.map +1 -0
  408. package/dist/utils/type-guards.d.ts +22 -0
  409. package/dist/utils/type-guards.d.ts.map +1 -0
  410. package/dist/utils/type-guards.js +43 -0
  411. package/dist/utils/type-guards.js.map +1 -0
  412. package/package.json +14 -13
  413. package/src/bootstrap.ts +5 -5
  414. package/src/cli/commands/analyze.ts +101 -0
  415. package/src/cli/commands/baseline.ts +577 -0
  416. package/src/cli/commands/history.ts +194 -342
  417. package/src/cli/commands/init.ts +105 -183
  418. package/src/cli/commands/run.ts +186 -88
  419. package/src/cli/index.ts +731 -234
  420. package/src/config/budget-schema.ts +189 -0
  421. package/src/config/schema.ts +260 -1
  422. package/src/constants.ts +53 -1
  423. package/src/core/engine.ts +153 -14
  424. package/src/core/output-path-resolver.ts +46 -0
  425. package/src/errors/base.ts +11 -2
  426. package/src/errors/budget.ts +38 -0
  427. package/src/errors/index.ts +3 -0
  428. package/src/formatters/history/base.ts +28 -0
  429. package/src/formatters/history/compare.ts +186 -0
  430. package/src/formatters/history/list.ts +101 -0
  431. package/src/formatters/history/show.ts +155 -0
  432. package/src/formatters/history/trends.ts +281 -0
  433. package/src/formatters/history/visualization.ts +93 -0
  434. package/src/index.ts +17 -12
  435. package/src/reporters/csv.ts +55 -26
  436. package/src/reporters/human.ts +90 -89
  437. package/src/reporters/json.ts +27 -72
  438. package/src/reporters/profile-human.ts +204 -0
  439. package/src/reporters/simple.ts +85 -54
  440. package/src/services/baseline-storage.ts +199 -0
  441. package/src/services/budget-evaluator.ts +182 -0
  442. package/src/{config/manager.ts → services/config-manager.ts} +24 -9
  443. package/src/{core/loader.ts → services/file-loader.ts} +4 -7
  444. package/src/services/history/comparison.ts +130 -0
  445. package/src/services/history/models.ts +148 -0
  446. package/src/services/history/query.ts +116 -0
  447. package/src/services/history/trend-analysis.ts +238 -0
  448. package/src/services/profiler/profile-filter.ts +143 -0
  449. package/src/services/profiler/profile-parser.ts +194 -0
  450. package/src/services/profiler/profile-runner.ts +121 -0
  451. package/src/{reporters/registry.ts → services/reporter-registry.ts} +46 -81
  452. package/src/types/budgets.ts +180 -0
  453. package/src/types/cli.ts +5 -235
  454. package/src/types/core.ts +50 -10
  455. package/src/types/index.ts +5 -0
  456. package/src/types/interfaces.ts +16 -6
  457. package/src/types/profiler.ts +132 -0
  458. package/src/types/utility.ts +0 -10
  459. package/src/utils/ansi.ts +59 -0
  460. package/src/utils/identifiers.ts +58 -0
  461. package/src/utils/package.ts +35 -0
  462. package/src/utils/type-guards.ts +51 -0
  463. package/dist/config/manager.cjs.map +0 -1
  464. package/dist/config/manager.d.cts.map +0 -1
  465. package/dist/config/manager.d.ts.map +0 -1
  466. package/dist/config/manager.js.map +0 -1
  467. package/dist/core/loader.cjs.map +0 -1
  468. package/dist/core/loader.d.cts.map +0 -1
  469. package/dist/core/loader.d.ts.map +0 -1
  470. package/dist/core/loader.js.map +0 -1
  471. package/dist/progress/manager.cjs.map +0 -1
  472. package/dist/progress/manager.d.cts.map +0 -1
  473. package/dist/progress/manager.d.ts.map +0 -1
  474. package/dist/progress/manager.js.map +0 -1
  475. package/dist/reporters/registry.cjs.map +0 -1
  476. package/dist/reporters/registry.d.cts.map +0 -1
  477. package/dist/reporters/registry.d.ts.map +0 -1
  478. package/dist/reporters/registry.js.map +0 -1
  479. package/dist/storage/history.cjs.map +0 -1
  480. package/dist/storage/history.d.cts.map +0 -1
  481. package/dist/storage/history.d.ts.map +0 -1
  482. package/dist/storage/history.js.map +0 -1
  483. /package/src/{storage/history.ts → services/history-storage.ts} +0 -0
  484. /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ANSI Color Codes and Terminal Utilities
3
+ *
4
+ * Shared ANSI escape codes for colored terminal output. Used across reporters
5
+ * and CLI commands for consistent visual styling.
6
+ */
7
+ /**
8
+ * ANSI color codes for terminal output
9
+ */
10
+ export declare const colors: {
11
+ readonly bold: "\u001B[1m";
12
+ readonly brightBlue: "\u001B[94m";
13
+ readonly brightCyan: "\u001B[96m";
14
+ readonly brightMagenta: "\u001B[95m";
15
+ readonly brightRed: "\u001B[91m";
16
+ readonly brightWhite: "\u001B[97m";
17
+ readonly brightYellow: "\u001B[93m";
18
+ readonly cyan: "\u001B[36m";
19
+ readonly dim: "\u001B[2m";
20
+ readonly gray: "\u001B[90m";
21
+ readonly green: "\u001B[32m";
22
+ readonly magenta: "\u001B[35m";
23
+ readonly red: "\u001B[31m";
24
+ readonly reset: "\u001B[0m";
25
+ readonly underline: "\u001B[4m";
26
+ readonly white: "\u001B[37m";
27
+ };
28
+ /**
29
+ * CP437-inspired ANSI art characters
30
+ */
31
+ export declare const ansiChars: {
32
+ readonly approx: "≈";
33
+ readonly block: {
34
+ readonly dark: "▓";
35
+ readonly full: "█";
36
+ readonly light: "░";
37
+ readonly medium: "▒";
38
+ };
39
+ readonly bullet: "•";
40
+ readonly checkmark: "√";
41
+ readonly cross: "×";
42
+ readonly plusMinus: "±";
43
+ readonly smallSquare: "▪";
44
+ };
45
+ /**
46
+ * Apply ANSI color to text
47
+ *
48
+ * @param color - Color name from the colors object
49
+ * @param text - Text to colorize
50
+ * @returns Colorized text with reset code
51
+ */
52
+ export declare const colorize: (color: keyof typeof colors, text: string) => string;
53
+ //# sourceMappingURL=ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../src/utils/ansi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAiBT,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAeZ,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAEnE,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ANSI Color Codes and Terminal Utilities
3
+ *
4
+ * Shared ANSI escape codes for colored terminal output. Used across reporters
5
+ * and CLI commands for consistent visual styling.
6
+ */
7
+ /**
8
+ * ANSI color codes for terminal output
9
+ */
10
+ export declare const colors: {
11
+ readonly bold: "\u001B[1m";
12
+ readonly brightBlue: "\u001B[94m";
13
+ readonly brightCyan: "\u001B[96m";
14
+ readonly brightMagenta: "\u001B[95m";
15
+ readonly brightRed: "\u001B[91m";
16
+ readonly brightWhite: "\u001B[97m";
17
+ readonly brightYellow: "\u001B[93m";
18
+ readonly cyan: "\u001B[36m";
19
+ readonly dim: "\u001B[2m";
20
+ readonly gray: "\u001B[90m";
21
+ readonly green: "\u001B[32m";
22
+ readonly magenta: "\u001B[35m";
23
+ readonly red: "\u001B[31m";
24
+ readonly reset: "\u001B[0m";
25
+ readonly underline: "\u001B[4m";
26
+ readonly white: "\u001B[37m";
27
+ };
28
+ /**
29
+ * CP437-inspired ANSI art characters
30
+ */
31
+ export declare const ansiChars: {
32
+ readonly approx: "≈";
33
+ readonly block: {
34
+ readonly dark: "▓";
35
+ readonly full: "█";
36
+ readonly light: "░";
37
+ readonly medium: "▒";
38
+ };
39
+ readonly bullet: "•";
40
+ readonly checkmark: "√";
41
+ readonly cross: "×";
42
+ readonly plusMinus: "±";
43
+ readonly smallSquare: "▪";
44
+ };
45
+ /**
46
+ * Apply ANSI color to text
47
+ *
48
+ * @param color - Color name from the colors object
49
+ * @param text - Text to colorize
50
+ * @returns Colorized text with reset code
51
+ */
52
+ export declare const colorize: (color: keyof typeof colors, text: string) => string;
53
+ //# sourceMappingURL=ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../src/utils/ansi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAiBT,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAeZ,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAEnE,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * ANSI Color Codes and Terminal Utilities
3
+ *
4
+ * Shared ANSI escape codes for colored terminal output. Used across reporters
5
+ * and CLI commands for consistent visual styling.
6
+ */
7
+ /**
8
+ * ANSI color codes for terminal output
9
+ */
10
+ export const colors = {
11
+ bold: '\x1b[1m',
12
+ brightBlue: '\x1b[94m',
13
+ brightCyan: '\x1b[96m',
14
+ brightMagenta: '\x1b[95m',
15
+ brightRed: '\x1b[91m',
16
+ brightWhite: '\x1b[97m',
17
+ brightYellow: '\x1b[93m',
18
+ cyan: '\x1b[36m',
19
+ dim: '\x1b[2m',
20
+ gray: '\x1b[90m',
21
+ green: '\x1b[32m',
22
+ magenta: '\x1b[35m',
23
+ red: '\x1b[31m',
24
+ reset: '\x1b[0m',
25
+ underline: '\x1b[4m',
26
+ white: '\x1b[37m',
27
+ };
28
+ /**
29
+ * CP437-inspired ANSI art characters
30
+ */
31
+ export const ansiChars = {
32
+ approx: '≈',
33
+ // Block elements for gradients
34
+ block: {
35
+ dark: '▓',
36
+ full: '█',
37
+ light: '░',
38
+ medium: '▒',
39
+ },
40
+ bullet: '•',
41
+ // Symbols
42
+ checkmark: '√',
43
+ cross: '×',
44
+ plusMinus: '±',
45
+ smallSquare: '▪',
46
+ };
47
+ /**
48
+ * Apply ANSI color to text
49
+ *
50
+ * @param color - Color name from the colors object
51
+ * @param text - Text to colorize
52
+ * @returns Colorized text with reset code
53
+ */
54
+ export const colorize = (color, text) => {
55
+ return `${colors[color]}${text}${colors.reset}`;
56
+ };
57
+ //# sourceMappingURL=ansi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.js","sourceRoot":"","sources":["../../src/utils/ansi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,UAAU;CACT,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,GAAG;IACX,+BAA+B;IAC/B,KAAK,EAAE;QACL,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;KACZ;IACD,MAAM,EAAE,GAAG;IACX,UAAU;IACV,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,GAAG;CACR,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAE,IAAY,EAAU,EAAE;IAC3E,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for creating branded identifier types
4
+ *
5
+ * @module utils/identifiers
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createRunId = void 0;
9
+ exports.createTaskId = createTaskId;
10
+ /**
11
+ * Create a RunId from a string (validation should happen elsewhere)
12
+ *
13
+ * @param id - The run identifier string (typically 7 alphanumeric characters)
14
+ * @returns A branded RunId
15
+ */
16
+ const createRunId = (id) => id;
17
+ exports.createRunId = createRunId;
18
+ /**
19
+ * Create a TaskId from file, suite, and task names
20
+ *
21
+ * @param filePath - Path to the benchmark file
22
+ * @param suiteName - Name of the test suite
23
+ * @param taskName - Name of the benchmark task
24
+ * @returns A branded TaskId in the format `{filePath}/{suiteName}/{taskName}`
25
+ */
26
+ function createTaskId(filePath, suiteName, taskName) {
27
+ if (suiteName !== undefined && taskName !== undefined) {
28
+ return `${filePath}/${suiteName}/${taskName}`;
29
+ }
30
+ return filePath;
31
+ }
32
+ //# sourceMappingURL=identifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/utils/identifiers.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA4CH,oCASC;AAjDD;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,EAAU,EAAS,EAAE,CAAC,EAAW,CAAC;AAAjD,QAAA,WAAW,eAAsC;AA0B9D;;;;;;;GAOG;AACH,SAAgB,YAAY,CAC1B,QAAgB,EAChB,SAAkB,EAClB,QAAiB;IAEjB,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,GAAG,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAY,CAAC;IAC1D,CAAC;IACD,OAAO,QAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Utility functions for creating branded identifier types
3
+ *
4
+ * @module utils/identifiers
5
+ */
6
+ import type { RunId, TaskId } from "../types/budgets.cjs";
7
+ /**
8
+ * Create a RunId from a string (validation should happen elsewhere)
9
+ *
10
+ * @param id - The run identifier string (typically 7 alphanumeric characters)
11
+ * @returns A branded RunId
12
+ */
13
+ export declare const createRunId: (id: string) => RunId;
14
+ /**
15
+ * Create a TaskId from file, suite, and task names
16
+ *
17
+ * @param filePath - Path to the benchmark file
18
+ * @param suiteName - Name of the test suite
19
+ * @param taskName - Name of the benchmark task
20
+ * @returns A branded TaskId in the format `{filePath}/{suiteName}/{taskName}`
21
+ */
22
+ export declare function createTaskId(filePath: string, suiteName: string, taskName: string): TaskId;
23
+ /**
24
+ * Create a TaskId from a single string
25
+ *
26
+ * @param filePath - Path to the benchmark file
27
+ * @param suiteName - Name of the test suite
28
+ * @param taskName - Name of the benchmark task
29
+ * @returns A branded TaskId in the format `{filePath}/{suiteName}/{taskName}`
30
+ */
31
+ export declare function createTaskId(taskId: string): TaskId;
32
+ //# sourceMappingURL=identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/utils/identifiers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA4B;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,KAAoB,CAAC;AAE9D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC;AAEV;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Utility functions for creating branded identifier types
3
+ *
4
+ * @module utils/identifiers
5
+ */
6
+ import type { RunId, TaskId } from "../types/budgets.js";
7
+ /**
8
+ * Create a RunId from a string (validation should happen elsewhere)
9
+ *
10
+ * @param id - The run identifier string (typically 7 alphanumeric characters)
11
+ * @returns A branded RunId
12
+ */
13
+ export declare const createRunId: (id: string) => RunId;
14
+ /**
15
+ * Create a TaskId from file, suite, and task names
16
+ *
17
+ * @param filePath - Path to the benchmark file
18
+ * @param suiteName - Name of the test suite
19
+ * @param taskName - Name of the benchmark task
20
+ * @returns A branded TaskId in the format `{filePath}/{suiteName}/{taskName}`
21
+ */
22
+ export declare function createTaskId(filePath: string, suiteName: string, taskName: string): TaskId;
23
+ /**
24
+ * Create a TaskId from a single string
25
+ *
26
+ * @param filePath - Path to the benchmark file
27
+ * @param suiteName - Name of the test suite
28
+ * @param taskName - Name of the benchmark task
29
+ * @returns A branded TaskId in the format `{filePath}/{suiteName}/{taskName}`
30
+ */
31
+ export declare function createTaskId(taskId: string): TaskId;
32
+ //# sourceMappingURL=identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/utils/identifiers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,KAAoB,CAAC;AAE9D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC;AAEV;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility functions for creating branded identifier types
3
+ *
4
+ * @module utils/identifiers
5
+ */
6
+ /**
7
+ * Create a RunId from a string (validation should happen elsewhere)
8
+ *
9
+ * @param id - The run identifier string (typically 7 alphanumeric characters)
10
+ * @returns A branded RunId
11
+ */
12
+ export const createRunId = (id) => id;
13
+ /**
14
+ * Create a TaskId from file, suite, and task names
15
+ *
16
+ * @param filePath - Path to the benchmark file
17
+ * @param suiteName - Name of the test suite
18
+ * @param taskName - Name of the benchmark task
19
+ * @returns A branded TaskId in the format `{filePath}/{suiteName}/{taskName}`
20
+ */
21
+ export function createTaskId(filePath, suiteName, taskName) {
22
+ if (suiteName !== undefined && taskName !== undefined) {
23
+ return `${filePath}/${suiteName}/${taskName}`;
24
+ }
25
+ return filePath;
26
+ }
27
+ //# sourceMappingURL=identifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/utils/identifiers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAU,EAAS,EAAE,CAAC,EAAW,CAAC;AA0B9D;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,SAAkB,EAClB,QAAiB;IAEjB,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,GAAG,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAY,CAAC;IAC1D,CAAC;IACD,OAAO,QAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Package Utilities
4
+ *
5
+ * Utilities for working with package.json files and package structure.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.findPackageRoot = void 0;
14
+ const promises_1 = require("node:fs/promises");
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ /**
17
+ * Find the nearest package.json and return its directory
18
+ *
19
+ * @param startDir - Directory to start searching from
20
+ * @returns Path to directory containing package.json
21
+ */
22
+ const findPackageRoot = async (startDir) => {
23
+ let currentDir = node_path_1.default.resolve(startDir);
24
+ const root = node_path_1.default.parse(currentDir).root;
25
+ while (currentDir !== root) {
26
+ try {
27
+ const packagePath = node_path_1.default.join(currentDir, 'package.json');
28
+ await (0, promises_1.readFile)(packagePath, 'utf-8');
29
+ return currentDir;
30
+ }
31
+ catch {
32
+ // package.json not found, go up one directory
33
+ currentDir = node_path_1.default.dirname(currentDir);
34
+ }
35
+ }
36
+ // No package.json found, return starting directory
37
+ return startDir;
38
+ };
39
+ exports.findPackageRoot = findPackageRoot;
40
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,+CAA4C;AAC5C,0DAA6B;AAE7B;;;;;GAKG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,QAAgB,EAAmB,EAAE;IACzE,IAAI,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,mBAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAEzC,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAC1D,MAAM,IAAA,mBAAQ,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Package Utilities
3
+ *
4
+ * Utilities for working with package.json files and package structure.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Find the nearest package.json and return its directory
10
+ *
11
+ * @param startDir - Directory to start searching from
12
+ * @returns Path to directory containing package.json
13
+ */
14
+ export declare const findPackageRoot: (startDir: string) => Promise<string>;
15
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAiBtE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Package Utilities
3
+ *
4
+ * Utilities for working with package.json files and package structure.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Find the nearest package.json and return its directory
10
+ *
11
+ * @param startDir - Directory to start searching from
12
+ * @returns Path to directory containing package.json
13
+ */
14
+ export declare const findPackageRoot: (startDir: string) => Promise<string>;
15
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAiBtE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Package Utilities
3
+ *
4
+ * Utilities for working with package.json files and package structure.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import { readFile } from 'node:fs/promises';
9
+ import path from 'node:path';
10
+ /**
11
+ * Find the nearest package.json and return its directory
12
+ *
13
+ * @param startDir - Directory to start searching from
14
+ * @returns Path to directory containing package.json
15
+ */
16
+ export const findPackageRoot = async (startDir) => {
17
+ let currentDir = path.resolve(startDir);
18
+ const root = path.parse(currentDir).root;
19
+ while (currentDir !== root) {
20
+ try {
21
+ const packagePath = path.join(currentDir, 'package.json');
22
+ await readFile(packagePath, 'utf-8');
23
+ return currentDir;
24
+ }
25
+ catch {
26
+ // package.json not found, go up one directory
27
+ currentDir = path.dirname(currentDir);
28
+ }
29
+ }
30
+ // No package.json found, return starting directory
31
+ return startDir;
32
+ };
33
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAgB,EAAmB,EAAE;IACzE,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAEzC,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAC1D,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * Type Guard Utilities
4
+ *
5
+ * Reusable type guard functions for runtime type checking and narrowing.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.hasErrorCode = exports.isError = void 0;
9
+ /**
10
+ * Type guard to check if a value is an object (not null or array)
11
+ *
12
+ * @param value - Value to check
13
+ * @returns True if value is a non-null object
14
+ */
15
+ const isObject = (value) => {
16
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
17
+ };
18
+ /**
19
+ * Type guard to check if a value is an Error instance
20
+ *
21
+ * @param value - Value to check
22
+ * @returns True if value is an Error
23
+ */
24
+ const isError = (value) => {
25
+ return value instanceof Error;
26
+ };
27
+ exports.isError = isError;
28
+ /**
29
+ * Type guard to check if a value has a specific property
30
+ *
31
+ * @param value - Value to check
32
+ * @param property - Property name to check for
33
+ * @returns True if value is an object with the specified property
34
+ */
35
+ const hasProperty = (value, property) => {
36
+ return isObject(value) && property in value;
37
+ };
38
+ /**
39
+ * Type guard to check if an error has a code property
40
+ *
41
+ * @param error - Error to check
42
+ * @returns True if error has a code property
43
+ */
44
+ const hasErrorCode = (error) => {
45
+ return (0, exports.isError)(error) && hasProperty(error, 'code');
46
+ };
47
+ exports.hasErrorCode = hasErrorCode;
48
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE;IACpE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE;IACxD,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAClB,KAAc,EACd,QAAW,EACkB,EAAE;IAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CAC1B,KAAc,EACqB,EAAE;IACrC,OAAO,IAAA,eAAO,EAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC,CAAC;AAJW,QAAA,YAAY,gBAIvB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Type Guard Utilities
3
+ *
4
+ * Reusable type guard functions for runtime type checking and narrowing.
5
+ */
6
+ /**
7
+ * Type guard to check if a value is an Error instance
8
+ *
9
+ * @param value - Value to check
10
+ * @returns True if value is an Error
11
+ */
12
+ export declare const isError: (value: unknown) => value is Error;
13
+ /**
14
+ * Type guard to check if an error has a code property
15
+ *
16
+ * @param error - Error to check
17
+ * @returns True if error has a code property
18
+ */
19
+ export declare const hasErrorCode: (error: unknown) => error is Error & {
20
+ code: string;
21
+ };
22
+ //# sourceMappingURL=type-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAEjD,CAAC;AAgBF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,OAAO,KACb,KAAK,IAAI,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAEjC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Type Guard Utilities
3
+ *
4
+ * Reusable type guard functions for runtime type checking and narrowing.
5
+ */
6
+ /**
7
+ * Type guard to check if a value is an Error instance
8
+ *
9
+ * @param value - Value to check
10
+ * @returns True if value is an Error
11
+ */
12
+ export declare const isError: (value: unknown) => value is Error;
13
+ /**
14
+ * Type guard to check if an error has a code property
15
+ *
16
+ * @param error - Error to check
17
+ * @returns True if error has a code property
18
+ */
19
+ export declare const hasErrorCode: (error: unknown) => error is Error & {
20
+ code: string;
21
+ };
22
+ //# sourceMappingURL=type-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAEjD,CAAC;AAgBF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,OAAO,KACb,KAAK,IAAI,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAEjC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Type Guard Utilities
3
+ *
4
+ * Reusable type guard functions for runtime type checking and narrowing.
5
+ */
6
+ /**
7
+ * Type guard to check if a value is an object (not null or array)
8
+ *
9
+ * @param value - Value to check
10
+ * @returns True if value is a non-null object
11
+ */
12
+ const isObject = (value) => {
13
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
14
+ };
15
+ /**
16
+ * Type guard to check if a value is an Error instance
17
+ *
18
+ * @param value - Value to check
19
+ * @returns True if value is an Error
20
+ */
21
+ export const isError = (value) => {
22
+ return value instanceof Error;
23
+ };
24
+ /**
25
+ * Type guard to check if a value has a specific property
26
+ *
27
+ * @param value - Value to check
28
+ * @param property - Property name to check for
29
+ * @returns True if value is an object with the specified property
30
+ */
31
+ const hasProperty = (value, property) => {
32
+ return isObject(value) && property in value;
33
+ };
34
+ /**
35
+ * Type guard to check if an error has a code property
36
+ *
37
+ * @param error - Error to check
38
+ * @returns True if error has a code property
39
+ */
40
+ export const hasErrorCode = (error) => {
41
+ return isError(error) && hasProperty(error, 'code');
42
+ };
43
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE;IACpE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE;IACxD,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAClB,KAAc,EACd,QAAW,EACkB,EAAE;IAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAc,EACqB,EAAE;IACrC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC,CAAC"}