modestbench 0.2.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 (332) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +131 -34
  3. package/dist/cli/commands/analyze.cjs +60 -0
  4. package/dist/cli/commands/analyze.cjs.map +1 -0
  5. package/dist/cli/commands/analyze.d.cts +35 -0
  6. package/dist/cli/commands/analyze.d.cts.map +1 -0
  7. package/dist/cli/commands/analyze.d.ts +35 -0
  8. package/dist/cli/commands/analyze.d.ts.map +1 -0
  9. package/dist/cli/commands/analyze.js +56 -0
  10. package/dist/cli/commands/analyze.js.map +1 -0
  11. package/dist/cli/commands/baseline.cjs +404 -0
  12. package/dist/cli/commands/baseline.cjs.map +1 -0
  13. package/dist/cli/commands/baseline.d.cts +72 -0
  14. package/dist/cli/commands/baseline.d.cts.map +1 -0
  15. package/dist/cli/commands/baseline.d.ts +72 -0
  16. package/dist/cli/commands/baseline.d.ts.map +1 -0
  17. package/dist/cli/commands/baseline.js +396 -0
  18. package/dist/cli/commands/baseline.js.map +1 -0
  19. package/dist/cli/commands/history.d.cts +1 -1
  20. package/dist/cli/commands/history.d.cts.map +1 -1
  21. package/dist/cli/commands/history.d.ts +1 -1
  22. package/dist/cli/commands/history.d.ts.map +1 -1
  23. package/dist/cli/commands/init.cjs +88 -155
  24. package/dist/cli/commands/init.cjs.map +1 -1
  25. package/dist/cli/commands/init.d.cts +4 -4
  26. package/dist/cli/commands/init.d.cts.map +1 -1
  27. package/dist/cli/commands/init.d.ts +4 -4
  28. package/dist/cli/commands/init.d.ts.map +1 -1
  29. package/dist/cli/commands/init.js +88 -155
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/run.cjs +132 -114
  32. package/dist/cli/commands/run.cjs.map +1 -1
  33. package/dist/cli/commands/run.d.cts +16 -3
  34. package/dist/cli/commands/run.d.cts.map +1 -1
  35. package/dist/cli/commands/run.d.ts +16 -3
  36. package/dist/cli/commands/run.d.ts.map +1 -1
  37. package/dist/cli/commands/run.js +131 -80
  38. package/dist/cli/commands/run.js.map +1 -1
  39. package/dist/cli/index.cjs +583 -394
  40. package/dist/cli/index.cjs.map +1 -1
  41. package/dist/cli/index.d.cts +4 -16
  42. package/dist/cli/index.d.cts.map +1 -1
  43. package/dist/cli/index.d.ts +4 -16
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli/index.js +575 -386
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/config/budget-schema.cjs +172 -0
  48. package/dist/config/budget-schema.cjs.map +1 -0
  49. package/dist/config/budget-schema.d.cts +59 -0
  50. package/dist/config/budget-schema.d.cts.map +1 -0
  51. package/dist/config/budget-schema.d.ts +59 -0
  52. package/dist/config/budget-schema.d.ts.map +1 -0
  53. package/dist/config/budget-schema.js +166 -0
  54. package/dist/config/budget-schema.js.map +1 -0
  55. package/dist/config/schema.cjs +182 -2
  56. package/dist/config/schema.cjs.map +1 -1
  57. package/dist/config/schema.d.cts +122 -3
  58. package/dist/config/schema.d.cts.map +1 -1
  59. package/dist/config/schema.d.ts +122 -3
  60. package/dist/config/schema.d.ts.map +1 -1
  61. package/dist/config/schema.js +180 -1
  62. package/dist/config/schema.js.map +1 -1
  63. package/dist/constants.cjs +45 -2
  64. package/dist/constants.cjs.map +1 -1
  65. package/dist/constants.d.cts +41 -0
  66. package/dist/constants.d.cts.map +1 -1
  67. package/dist/constants.d.ts +41 -0
  68. package/dist/constants.d.ts.map +1 -1
  69. package/dist/constants.js +44 -1
  70. package/dist/constants.js.map +1 -1
  71. package/dist/core/engine.cjs +103 -21
  72. package/dist/core/engine.cjs.map +1 -1
  73. package/dist/core/engine.d.cts +7 -7
  74. package/dist/core/engine.d.cts.map +1 -1
  75. package/dist/core/engine.d.ts +7 -7
  76. package/dist/core/engine.d.ts.map +1 -1
  77. package/dist/core/engine.js +104 -22
  78. package/dist/core/engine.js.map +1 -1
  79. package/dist/core/output-path-resolver.cjs +8 -1
  80. package/dist/core/output-path-resolver.cjs.map +1 -1
  81. package/dist/core/output-path-resolver.d.cts.map +1 -1
  82. package/dist/core/output-path-resolver.d.ts.map +1 -1
  83. package/dist/core/output-path-resolver.js +9 -2
  84. package/dist/core/output-path-resolver.js.map +1 -1
  85. package/dist/errors/base.cjs +12 -3
  86. package/dist/errors/base.cjs.map +1 -1
  87. package/dist/errors/base.d.cts +7 -0
  88. package/dist/errors/base.d.cts.map +1 -1
  89. package/dist/errors/base.d.ts +7 -0
  90. package/dist/errors/base.d.ts.map +1 -1
  91. package/dist/errors/base.js +10 -2
  92. package/dist/errors/base.js.map +1 -1
  93. package/dist/errors/budget.cjs +37 -0
  94. package/dist/errors/budget.cjs.map +1 -0
  95. package/dist/errors/budget.d.cts +31 -0
  96. package/dist/errors/budget.d.cts.map +1 -0
  97. package/dist/errors/budget.d.ts +31 -0
  98. package/dist/errors/budget.d.ts.map +1 -0
  99. package/dist/errors/budget.js +33 -0
  100. package/dist/errors/budget.js.map +1 -0
  101. package/dist/errors/index.cjs +4 -1
  102. package/dist/errors/index.cjs.map +1 -1
  103. package/dist/errors/index.d.cts +1 -0
  104. package/dist/errors/index.d.cts.map +1 -1
  105. package/dist/errors/index.d.ts +1 -0
  106. package/dist/errors/index.d.ts.map +1 -1
  107. package/dist/errors/index.js +2 -0
  108. package/dist/errors/index.js.map +1 -1
  109. package/dist/index.cjs +13 -1
  110. package/dist/index.cjs.map +1 -1
  111. package/dist/index.d.cts +5 -0
  112. package/dist/index.d.cts.map +1 -1
  113. package/dist/index.d.ts +5 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +7 -0
  116. package/dist/index.js.map +1 -1
  117. package/dist/reporters/csv.cjs +37 -17
  118. package/dist/reporters/csv.cjs.map +1 -1
  119. package/dist/reporters/csv.d.cts +3 -6
  120. package/dist/reporters/csv.d.cts.map +1 -1
  121. package/dist/reporters/csv.d.ts +3 -6
  122. package/dist/reporters/csv.d.ts.map +1 -1
  123. package/dist/reporters/csv.js +37 -17
  124. package/dist/reporters/csv.js.map +1 -1
  125. package/dist/reporters/human.cjs +66 -40
  126. package/dist/reporters/human.cjs.map +1 -1
  127. package/dist/reporters/human.d.cts +14 -13
  128. package/dist/reporters/human.d.cts.map +1 -1
  129. package/dist/reporters/human.d.ts +14 -13
  130. package/dist/reporters/human.d.ts.map +1 -1
  131. package/dist/reporters/human.js +66 -40
  132. package/dist/reporters/human.js.map +1 -1
  133. package/dist/reporters/json.cjs +23 -48
  134. package/dist/reporters/json.cjs.map +1 -1
  135. package/dist/reporters/json.d.cts +2 -28
  136. package/dist/reporters/json.d.cts.map +1 -1
  137. package/dist/reporters/json.d.ts +2 -28
  138. package/dist/reporters/json.d.ts.map +1 -1
  139. package/dist/reporters/json.js +25 -50
  140. package/dist/reporters/json.js.map +1 -1
  141. package/dist/reporters/profile-human.cjs +149 -0
  142. package/dist/reporters/profile-human.cjs.map +1 -0
  143. package/dist/reporters/profile-human.d.cts +44 -0
  144. package/dist/reporters/profile-human.d.cts.map +1 -0
  145. package/dist/reporters/profile-human.d.ts +44 -0
  146. package/dist/reporters/profile-human.d.ts.map +1 -0
  147. package/dist/reporters/profile-human.js +142 -0
  148. package/dist/reporters/profile-human.js.map +1 -0
  149. package/dist/reporters/simple.cjs +64 -44
  150. package/dist/reporters/simple.cjs.map +1 -1
  151. package/dist/reporters/simple.d.cts +14 -14
  152. package/dist/reporters/simple.d.cts.map +1 -1
  153. package/dist/reporters/simple.d.ts +14 -14
  154. package/dist/reporters/simple.d.ts.map +1 -1
  155. package/dist/reporters/simple.js +64 -44
  156. package/dist/reporters/simple.js.map +1 -1
  157. package/dist/schema/modestbench-config.schema.json +153 -0
  158. package/dist/services/baseline-storage.cjs +151 -0
  159. package/dist/services/baseline-storage.cjs.map +1 -0
  160. package/dist/services/baseline-storage.d.cts +55 -0
  161. package/dist/services/baseline-storage.d.cts.map +1 -0
  162. package/dist/services/baseline-storage.d.ts +55 -0
  163. package/dist/services/baseline-storage.d.ts.map +1 -0
  164. package/dist/services/baseline-storage.js +147 -0
  165. package/dist/services/baseline-storage.js.map +1 -0
  166. package/dist/services/budget-evaluator.cjs +146 -0
  167. package/dist/services/budget-evaluator.cjs.map +1 -0
  168. package/dist/services/budget-evaluator.d.cts +29 -0
  169. package/dist/services/budget-evaluator.d.cts.map +1 -0
  170. package/dist/services/budget-evaluator.d.ts +29 -0
  171. package/dist/services/budget-evaluator.d.ts.map +1 -0
  172. package/dist/services/budget-evaluator.js +142 -0
  173. package/dist/services/budget-evaluator.js.map +1 -0
  174. package/dist/services/config-manager.cjs +23 -9
  175. package/dist/services/config-manager.cjs.map +1 -1
  176. package/dist/services/config-manager.d.cts +6 -1
  177. package/dist/services/config-manager.d.cts.map +1 -1
  178. package/dist/services/config-manager.d.ts +6 -1
  179. package/dist/services/config-manager.d.ts.map +1 -1
  180. package/dist/services/config-manager.js +23 -9
  181. package/dist/services/config-manager.js.map +1 -1
  182. package/dist/services/file-loader.cjs +3 -6
  183. package/dist/services/file-loader.cjs.map +1 -1
  184. package/dist/services/file-loader.d.cts.map +1 -1
  185. package/dist/services/file-loader.d.ts.map +1 -1
  186. package/dist/services/file-loader.js +3 -6
  187. package/dist/services/file-loader.js.map +1 -1
  188. package/dist/services/profiler/profile-filter.cjs +113 -0
  189. package/dist/services/profiler/profile-filter.cjs.map +1 -0
  190. package/dist/services/profiler/profile-filter.d.cts +20 -0
  191. package/dist/services/profiler/profile-filter.d.cts.map +1 -0
  192. package/dist/services/profiler/profile-filter.d.ts +20 -0
  193. package/dist/services/profiler/profile-filter.d.ts.map +1 -0
  194. package/dist/services/profiler/profile-filter.js +109 -0
  195. package/dist/services/profiler/profile-filter.js.map +1 -0
  196. package/dist/services/profiler/profile-parser.cjs +139 -0
  197. package/dist/services/profiler/profile-parser.cjs.map +1 -0
  198. package/dist/services/profiler/profile-parser.d.cts +18 -0
  199. package/dist/services/profiler/profile-parser.d.cts.map +1 -0
  200. package/dist/services/profiler/profile-parser.d.ts +18 -0
  201. package/dist/services/profiler/profile-parser.d.ts.map +1 -0
  202. package/dist/services/profiler/profile-parser.js +132 -0
  203. package/dist/services/profiler/profile-parser.js.map +1 -0
  204. package/dist/services/profiler/profile-runner.cjs +90 -0
  205. package/dist/services/profiler/profile-runner.cjs.map +1 -0
  206. package/dist/services/profiler/profile-runner.d.cts +29 -0
  207. package/dist/services/profiler/profile-runner.d.cts.map +1 -0
  208. package/dist/services/profiler/profile-runner.d.ts +29 -0
  209. package/dist/services/profiler/profile-runner.d.ts.map +1 -0
  210. package/dist/services/profiler/profile-runner.js +86 -0
  211. package/dist/services/profiler/profile-runner.js.map +1 -0
  212. package/dist/services/reporter-registry.cjs +18 -24
  213. package/dist/services/reporter-registry.cjs.map +1 -1
  214. package/dist/services/reporter-registry.d.cts +18 -40
  215. package/dist/services/reporter-registry.d.cts.map +1 -1
  216. package/dist/services/reporter-registry.d.ts +18 -40
  217. package/dist/services/reporter-registry.d.ts.map +1 -1
  218. package/dist/services/reporter-registry.js +18 -24
  219. package/dist/services/reporter-registry.js.map +1 -1
  220. package/dist/types/budgets.cjs +8 -0
  221. package/dist/types/budgets.cjs.map +1 -0
  222. package/dist/types/budgets.d.cts +149 -0
  223. package/dist/types/budgets.d.cts.map +1 -0
  224. package/dist/types/budgets.d.ts +149 -0
  225. package/dist/types/budgets.d.ts.map +1 -0
  226. package/dist/types/budgets.js +7 -0
  227. package/dist/types/budgets.js.map +1 -0
  228. package/dist/types/cli.cjs +2 -11
  229. package/dist/types/cli.cjs.map +1 -1
  230. package/dist/types/cli.d.cts +3 -227
  231. package/dist/types/cli.d.cts.map +1 -1
  232. package/dist/types/cli.d.ts +3 -227
  233. package/dist/types/cli.d.ts.map +1 -1
  234. package/dist/types/cli.js +2 -11
  235. package/dist/types/cli.js.map +1 -1
  236. package/dist/types/core.cjs +6 -1
  237. package/dist/types/core.cjs.map +1 -1
  238. package/dist/types/core.d.cts +13 -2
  239. package/dist/types/core.d.cts.map +1 -1
  240. package/dist/types/core.d.ts +13 -2
  241. package/dist/types/core.d.ts.map +1 -1
  242. package/dist/types/core.js +2 -1
  243. package/dist/types/core.js.map +1 -1
  244. package/dist/types/index.cjs +5 -0
  245. package/dist/types/index.cjs.map +1 -1
  246. package/dist/types/index.d.cts +2 -0
  247. package/dist/types/index.d.cts.map +1 -1
  248. package/dist/types/index.d.ts +2 -0
  249. package/dist/types/index.d.ts.map +1 -1
  250. package/dist/types/index.js +2 -0
  251. package/dist/types/index.js.map +1 -1
  252. package/dist/types/interfaces.d.cts +15 -8
  253. package/dist/types/interfaces.d.cts.map +1 -1
  254. package/dist/types/interfaces.d.ts +15 -8
  255. package/dist/types/interfaces.d.ts.map +1 -1
  256. package/dist/types/profiler.cjs +11 -0
  257. package/dist/types/profiler.cjs.map +1 -0
  258. package/dist/types/profiler.d.cts +100 -0
  259. package/dist/types/profiler.d.cts.map +1 -0
  260. package/dist/types/profiler.d.ts +100 -0
  261. package/dist/types/profiler.d.ts.map +1 -0
  262. package/dist/types/profiler.js +10 -0
  263. package/dist/types/profiler.js.map +1 -0
  264. package/dist/types/utility.cjs.map +1 -1
  265. package/dist/types/utility.d.cts +0 -8
  266. package/dist/types/utility.d.cts.map +1 -1
  267. package/dist/types/utility.d.ts +0 -8
  268. package/dist/types/utility.d.ts.map +1 -1
  269. package/dist/types/utility.js.map +1 -1
  270. package/dist/utils/identifiers.cjs +32 -0
  271. package/dist/utils/identifiers.cjs.map +1 -0
  272. package/dist/utils/identifiers.d.cts +32 -0
  273. package/dist/utils/identifiers.d.cts.map +1 -0
  274. package/dist/utils/identifiers.d.ts +32 -0
  275. package/dist/utils/identifiers.d.ts.map +1 -0
  276. package/dist/utils/identifiers.js +27 -0
  277. package/dist/utils/identifiers.js.map +1 -0
  278. package/dist/utils/package.cjs +40 -0
  279. package/dist/utils/package.cjs.map +1 -0
  280. package/dist/utils/package.d.cts +15 -0
  281. package/dist/utils/package.d.cts.map +1 -0
  282. package/dist/utils/package.d.ts +15 -0
  283. package/dist/utils/package.d.ts.map +1 -0
  284. package/dist/utils/package.js +33 -0
  285. package/dist/utils/package.js.map +1 -0
  286. package/dist/utils/type-guards.cjs +48 -0
  287. package/dist/utils/type-guards.cjs.map +1 -0
  288. package/dist/utils/type-guards.d.cts +22 -0
  289. package/dist/utils/type-guards.d.cts.map +1 -0
  290. package/dist/utils/type-guards.d.ts +22 -0
  291. package/dist/utils/type-guards.d.ts.map +1 -0
  292. package/dist/utils/type-guards.js +43 -0
  293. package/dist/utils/type-guards.js.map +1 -0
  294. package/package.json +10 -10
  295. package/src/cli/commands/analyze.ts +101 -0
  296. package/src/cli/commands/baseline.ts +577 -0
  297. package/src/cli/commands/history.ts +1 -1
  298. package/src/cli/commands/init.ts +105 -183
  299. package/src/cli/commands/run.ts +167 -98
  300. package/src/cli/index.ts +425 -183
  301. package/src/config/budget-schema.ts +189 -0
  302. package/src/config/schema.ts +260 -1
  303. package/src/constants.ts +53 -1
  304. package/src/core/engine.ts +151 -20
  305. package/src/core/output-path-resolver.ts +10 -2
  306. package/src/errors/base.ts +11 -2
  307. package/src/errors/budget.ts +38 -0
  308. package/src/errors/index.ts +3 -0
  309. package/src/index.ts +9 -0
  310. package/src/reporters/csv.ts +54 -25
  311. package/src/reporters/human.ts +88 -47
  312. package/src/reporters/json.ts +26 -71
  313. package/src/reporters/profile-human.ts +204 -0
  314. package/src/reporters/simple.ts +84 -53
  315. package/src/services/baseline-storage.ts +199 -0
  316. package/src/services/budget-evaluator.ts +182 -0
  317. package/src/services/config-manager.ts +23 -8
  318. package/src/services/file-loader.ts +3 -6
  319. package/src/services/profiler/profile-filter.ts +143 -0
  320. package/src/services/profiler/profile-parser.ts +194 -0
  321. package/src/services/profiler/profile-runner.ts +121 -0
  322. package/src/services/reporter-registry.ts +46 -81
  323. package/src/types/budgets.ts +180 -0
  324. package/src/types/cli.ts +5 -238
  325. package/src/types/core.ts +50 -10
  326. package/src/types/index.ts +5 -0
  327. package/src/types/interfaces.ts +16 -6
  328. package/src/types/profiler.ts +132 -0
  329. package/src/types/utility.ts +0 -10
  330. package/src/utils/identifiers.ts +58 -0
  331. package/src/utils/package.ts +35 -0
  332. package/src/utils/type-guards.ts +51 -0
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import * as z from 'zod';
9
9
  import { BENCHMARK_FILE_PATTERN } from "../constants.js";
10
+ import { parsePercentageString, parseTimeString } from "./budget-schema.js";
10
11
  /**
11
12
  * Schema for threshold configuration
12
13
  *
@@ -50,6 +51,41 @@ const thresholdConfigSchema = z
50
51
  .meta({
51
52
  title: 'Threshold Configuration',
52
53
  });
54
+ /**
55
+ * Inline budget schema for configuration (no transforms for JSON Schema
56
+ * compatibility - transforms are applied manually in transformBudgets
57
+ * function)
58
+ */
59
+ const budgetSchema = z
60
+ .object({
61
+ absolute: z
62
+ .object({
63
+ maxP99: z
64
+ .union([z.number().positive(), z.string()])
65
+ .optional()
66
+ .describe('Maximum 99th percentile in nanoseconds or time string'),
67
+ maxTime: z
68
+ .union([z.number().positive(), z.string()])
69
+ .describe('Maximum mean time in nanoseconds or time string (e.g., "10ms")'),
70
+ minOpsPerSec: z
71
+ .number()
72
+ .positive()
73
+ .optional()
74
+ .describe('Minimum operations per second'),
75
+ })
76
+ .optional()
77
+ .describe('Absolute performance thresholds'),
78
+ relative: z
79
+ .object({
80
+ maxRegression: z
81
+ .union([z.number().min(0).max(1), z.string()])
82
+ .optional()
83
+ .describe('Maximum regression as decimal (0.1) or percentage string ("10%")'),
84
+ })
85
+ .optional()
86
+ .describe('Relative performance thresholds vs baseline'),
87
+ })
88
+ .describe('Performance budget with absolute and/or relative thresholds');
53
89
  /**
54
90
  * Schema for the main ModestBench configuration
55
91
  *
@@ -63,6 +99,18 @@ const modestBenchConfigSchema = z
63
99
  .optional()
64
100
  .describe('JSON Schema reference for IDE support (not used by ModestBench)'),
65
101
  bail: z.boolean().describe('Stop benchmark execution on first failure'),
102
+ baseline: z
103
+ .string()
104
+ .optional()
105
+ .describe('Name of baseline to use for relative budget comparisons. Must match a saved baseline name.'),
106
+ budgetMode: z
107
+ .enum(['fail', 'warn', 'report'])
108
+ .optional()
109
+ .describe('How to handle budget violations: "fail" exits with error (default), "warn" shows warnings, "report" includes in output without failing'),
110
+ budgets: z
111
+ .record(z.string(), z.record(z.string(), z.record(z.string(), budgetSchema)))
112
+ .optional()
113
+ .describe('Performance budgets organized by file → suite → task. Budgets define acceptable performance thresholds.'),
66
114
  exclude: z
67
115
  .array(z.string())
68
116
  .describe('Glob patterns to exclude from benchmark file discovery (e.g., "node_modules/**", ".git/**")'),
@@ -87,6 +135,45 @@ const modestBenchConfigSchema = z
87
135
  pattern: z
88
136
  .union([z.string().min(1), z.array(z.string().min(1))])
89
137
  .describe(`Glob pattern(s) for discovering benchmark files. Can be a single pattern string or array of patterns (e.g., "**/*${BENCHMARK_FILE_PATTERN}")`),
138
+ profile: z
139
+ .object({
140
+ exclude: z
141
+ .array(z.string())
142
+ .optional()
143
+ .describe('Glob patterns to exclude from profiling results'),
144
+ focus: z
145
+ .array(z.string())
146
+ .optional()
147
+ .describe('Glob patterns to focus on in profiling results. If specified, only matching files will be shown'),
148
+ minCallCount: z
149
+ .number()
150
+ .int()
151
+ .nonnegative()
152
+ .optional()
153
+ .describe('Minimum number of times a function must be called to be included in results'),
154
+ minExecutionPercent: z
155
+ .number()
156
+ .nonnegative()
157
+ .max(100)
158
+ .default(1.0)
159
+ .describe('Minimum execution percentage threshold for including functions in results'),
160
+ outputFile: z
161
+ .string()
162
+ .optional()
163
+ .describe('Path to write profile report to file'),
164
+ smartDetection: z
165
+ .boolean()
166
+ .default(true)
167
+ .describe('Automatically detect and focus on user code, excluding node_modules and Node.js internals'),
168
+ topN: z
169
+ .number()
170
+ .int()
171
+ .positive()
172
+ .default(25)
173
+ .describe('Maximum number of top functions to show in results'),
174
+ })
175
+ .optional()
176
+ .describe('Configuration for profile command to identify benchmark candidates'),
90
177
  quiet: z
91
178
  .boolean()
92
179
  .describe('Run in quiet mode with minimal console output (only errors and final results)'),
@@ -132,6 +219,87 @@ const modestBenchConfigSchema = z
132
219
  * merging with defaults.
133
220
  */
134
221
  export const partialModestBenchConfigSchema = modestBenchConfigSchema.partial();
222
+ /**
223
+ * Transform budget values (parse time/percentage strings)
224
+ */
225
+ const transformBudgetValues = (budget) => {
226
+ const transformed = {};
227
+ if (budget.absolute) {
228
+ transformed.absolute = {};
229
+ // Copy minOpsPerSec as-is (already a number)
230
+ if (budget.absolute.minOpsPerSec !== undefined) {
231
+ transformed.absolute.minOpsPerSec = budget.absolute.minOpsPerSec;
232
+ }
233
+ // Parse time strings
234
+ if (budget.absolute.maxTime !== undefined) {
235
+ transformed.absolute.maxTime =
236
+ typeof budget.absolute.maxTime === 'string'
237
+ ? parseTimeString(budget.absolute.maxTime)
238
+ : budget.absolute.maxTime;
239
+ }
240
+ if (budget.absolute.maxP99 !== undefined) {
241
+ transformed.absolute.maxP99 =
242
+ typeof budget.absolute.maxP99 === 'string'
243
+ ? parseTimeString(budget.absolute.maxP99)
244
+ : budget.absolute.maxP99;
245
+ }
246
+ }
247
+ if (budget.relative) {
248
+ transformed.relative = {};
249
+ // Parse percentage strings
250
+ if (budget.relative.maxRegression !== undefined) {
251
+ transformed.relative.maxRegression =
252
+ typeof budget.relative.maxRegression === 'string'
253
+ ? parsePercentageString(budget.relative.maxRegression)
254
+ : budget.relative.maxRegression;
255
+ }
256
+ }
257
+ return transformed;
258
+ };
259
+ /**
260
+ * Transform nested budget structure to flat TaskId → Budget mapping Also parses
261
+ * time and percentage strings
262
+ *
263
+ * @internal
264
+ */
265
+ const transformBudgets = (nested) => {
266
+ if (!nested) {
267
+ return undefined;
268
+ }
269
+ const flat = {};
270
+ for (const [file, suites] of Object.entries(nested)) {
271
+ for (const [suite, tasks] of Object.entries(suites)) {
272
+ for (const [task, budget] of Object.entries(tasks)) {
273
+ const taskId = `${file}/${suite}/${task}`;
274
+ // Transform budget values (parse strings)
275
+ flat[taskId] = transformBudgetValues(budget);
276
+ }
277
+ }
278
+ }
279
+ return flat;
280
+ };
281
+ /**
282
+ * Safely parse and validate a partial configuration object with budget
283
+ * transformation
284
+ *
285
+ * @param config - The configuration object to validate
286
+ * @returns A result object with either success: true and data, or success:
287
+ * false and error
288
+ */
289
+ export const safeParsePartialConfig = (config) => {
290
+ const result = partialModestBenchConfigSchema.safeParse(config);
291
+ // Transform nested budgets to flat structure after validation
292
+ if (result.success && result.data.budgets) {
293
+ return {
294
+ ...result,
295
+ data: {
296
+ ...result.data,
297
+ budgets: transformBudgets(result.data.budgets),
298
+ },
299
+ };
300
+ }
301
+ return result;
302
+ };
135
303
  /**
136
304
  * Safely parse and validate a configuration object
137
305
  *
@@ -140,6 +308,17 @@ export const partialModestBenchConfigSchema = modestBenchConfigSchema.partial();
140
308
  * false and error
141
309
  */
142
310
  export const safeParseConfig = (config) => {
143
- return modestBenchConfigSchema.safeParse(config);
311
+ const result = modestBenchConfigSchema.safeParse(config);
312
+ // Transform nested budgets to flat structure after validation
313
+ if (result.success && result.data.budgets) {
314
+ return {
315
+ ...result,
316
+ data: {
317
+ ...result.data,
318
+ budgets: transformBudgets(result.data.budgets),
319
+ },
320
+ };
321
+ }
322
+ return result;
144
323
  };
145
324
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,sBAAsB,EAAE,wBAAwB;AACzD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,2BAA2B;AAE5E;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;SAC3D,QAAQ,EAAE;IACb,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;SAC9D,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;SACzE,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;SACzE,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;SAC7D,QAAQ,EAAE;IACb,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;SAClD,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,2DAA2D,CAAC;KACrE,IAAI,CAAC;IACJ,KAAK,EAAE,yBAAyB;CACjC,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC1C,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;QACpE,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC1C,QAAQ,CACP,gEAAgE,CACjE;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,+BAA+B,CAAC;KAC7C,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,aAAa,EAAE,CAAC;aACb,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC7C,QAAQ,EAAE;aACV,QAAQ,CACP,kEAAkE,CACnE;KACJ,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;KACD,QAAQ,CAAC,6DAA6D,CAAC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iEAAiE,CAClE;IACH,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4FAA4F,CAC7F;IACH,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SAChC,QAAQ,EAAE;SACV,QAAQ,CACP,wIAAwI,CACzI;IACH,OAAO,EAAE,CAAC;SACP,MAAM,CACL,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CACzD;SACA,QAAQ,EAAE;SACV,QAAQ,CACP,yGAAyG,CAC1G;IACH,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,6FAA6F,CAC9F;IACH,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,kGAAkG,CACnG;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,yIAAyI,CAC1I;IACH,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC1C,QAAQ,CACP,2LAA2L,CAC5L;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CACP,2GAA2G,CAC5G;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oEAAoE,CACrE;IACH,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD,QAAQ,CACP,oHAAoH,sBAAsB,IAAI,CAC/I;IACH,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,iGAAiG,CAClG;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,WAAW,EAAE;aACb,QAAQ,EAAE;aACV,QAAQ,CACP,6EAA6E,CAC9E;QACH,mBAAmB,EAAE,CAAC;aACnB,MAAM,EAAE;aACR,WAAW,EAAE;aACb,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,GAAG,CAAC;aACZ,QAAQ,CACP,2EAA2E,CAC5E;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sCAAsC,CAAC;QACnD,cAAc,EAAE,CAAC;aACd,OAAO,EAAE;aACT,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CACP,2FAA2F,CAC5F;QACH,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,oDAAoD,CAAC;KAClE,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE,CACrE;IACH,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,CACP,+EAA+E,CAChF;IACH,cAAc,EAAE,CAAC;SACd,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CACP,gFAAgF,CACjF;IACH,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uFAAuF,CACxF;IACH,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,iIAAiI,CAClI;IACH,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,wKAAwK,CACzK;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,gIAAgI,CACjI;IACH,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,CACP,mIAAmI,CACpI;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,WAAW,EAAE;SACb,QAAQ,CACP,oJAAoJ,CACrJ;CACJ,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CACP,yFAAyF,CAC1F;KACA,IAAI,CAAC;IACJ,KAAK,EAAE,2BAA2B;CACnC,CAAC,CAAC;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAEvC,uBAAuB,CAAC,OAAO,EAAE,CAAC;AA8BtC;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAgB,EAAE;IAClE,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;QAE1B,6CAA6C;QAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/C,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnE,CAAC;QAED,qBAAqB;QACrB,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1C,WAAW,CAAC,QAAQ,CAAC,OAAO;gBAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ;oBACzC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC1C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzC,WAAW,CAAC,QAAQ,CAAC,MAAM;gBACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ;oBACxC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;QAE1B,2BAA2B;QAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAChD,WAAW,CAAC,QAAQ,CAAC,aAAa;gBAChC,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ;oBAC/C,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;oBACtD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,CACvB,MAA2E,EACtC,EAAE;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAC1C,0CAA0C;gBAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,MAAqB,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAe,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,8BAA8B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhE,8DAA8D;IAC9D,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE;gBACJ,GAAG,MAAM,CAAC,IAAI;gBACd,OAAO,EAAE,gBAAgB,CACvB,MAAM,CAAC,IAAI,CAAC,OAGX,CACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAe,EAAE,EAAE;IACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzD,8DAA8D;IAC9D,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE;gBACJ,GAAG,MAAM,CAAC,IAAI;gBACd,OAAO,EAAE,gBAAgB,CACvB,MAAM,CAAC,IAAI,CAAC,OAGX,CACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ErrorCodes = exports.BENCHMARK_FILE_PATTERN = exports.BENCHMARK_FILE_EXTENSIONS = void 0;
3
+ exports.ErrorCodes = exports.DEFAULT_REPORTER = exports.Reporters = exports.DEFAULT_ENGINE = exports.Engines = exports.ExitCodes = exports.ABORT_TIMEOUT = exports.BENCHMARK_FILE_PATTERN = exports.BENCHMARK_FILE_EXTENSIONS = void 0;
4
4
  /**
5
5
  * Supported benchmark file extensions
6
6
  */
@@ -19,20 +19,63 @@ exports.BENCHMARK_FILE_EXTENSIONS = new Set([
19
19
  exports.BENCHMARK_FILE_PATTERN = `.bench.{${Array.from(exports.BENCHMARK_FILE_EXTENSIONS)
20
20
  .map((ext) => ext.slice(1))
21
21
  .join(',')}}`;
22
+ /**
23
+ * Timeout before we force-quit when aborting benchmarks (ms)
24
+ */
25
+ exports.ABORT_TIMEOUT = 500;
26
+ /**
27
+ * Exit codes for the CLI
28
+ */
29
+ exports.ExitCodes = {
30
+ BENCHMARK_FAILURES: 1,
31
+ CONFIG_ERROR: 2,
32
+ DISCOVERY_ERROR: 3,
33
+ RUNTIME_ERROR: 5,
34
+ SUCCESS: 0,
35
+ UNKNOWN_ERROR: 99,
36
+ VALIDATION_ERROR: 4,
37
+ };
38
+ /**
39
+ * Supported benchmark engines
40
+ */
41
+ exports.Engines = {
42
+ ACCURATE: 'accurate',
43
+ TINYBENCH: 'tinybench',
44
+ };
45
+ /**
46
+ * Default benchmark engine
47
+ */
48
+ exports.DEFAULT_ENGINE = exports.Engines.TINYBENCH;
49
+ /**
50
+ * Supported reporters
51
+ */
52
+ exports.Reporters = {
53
+ CSV: 'csv',
54
+ HUMAN: 'human',
55
+ JSON: 'json',
56
+ SIMPLE: 'simple',
57
+ };
58
+ /**
59
+ * Default reporter
60
+ */
61
+ exports.DEFAULT_REPORTER = exports.Reporters.HUMAN;
22
62
  /**
23
63
  * Error codes for all ModestBench errors
24
64
  *
25
65
  * Use these constants to check error types instead of instanceof checks.
26
66
  */
27
67
  exports.ErrorCodes = {
68
+ //#region budget-errors
69
+ BUDGET_EXCEEDED: 'ERR_MB_BUDGET_EXCEEDED',
28
70
  //#region cli-errors
29
71
  CLI_INVALID_ARGUMENT: 'ERR_MB_CLI_INVALID_ARGUMENT',
30
- CLI_INVALID_DATE_FORMAT: 'ERR_MB_CLI_INVALID_DATE_FORMAT',
31
72
  //#endregion
73
+ CLI_INVALID_DATE_FORMAT: 'ERR_MB_CLI_INVALID_DATE_FORMAT',
32
74
  //#region config-errors
33
75
  CONFIG_LOAD_FAILED: 'ERR_MB_CONFIG_LOAD_FAILED',
34
76
  CONFIG_NOT_FOUND: 'ERR_MB_CONFIG_NOT_FOUND',
35
77
  CONFIG_UNSUPPORTED_FORMAT: 'ERR_MB_CONFIG_UNSUPPORTED_FORMAT',
78
+ //#endregion
36
79
  CONFIG_VALIDATION_FAILED: 'ERR_MB_CONFIG_VALIDATION_FAILED',
37
80
  //#endregion
38
81
  //#region execution-errors
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,sBAAsB,GAAG,WAAW,KAAK,CAAC,IAAI,CACzD,iCAAyB,CAC1B;KACE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAEhB;;;;GAIG;AACU,QAAA,UAAU,GAAG;IACxB,oBAAoB;IACpB,oBAAoB,EAAE,6BAA6B;IACnD,uBAAuB,EAAE,gCAAgC;IACzD,YAAY;IAEZ,uBAAuB;IACvB,kBAAkB,EAAE,2BAA2B;IAC/C,gBAAgB,EAAE,yBAAyB;IAC3C,yBAAyB,EAAE,kCAAkC;IAC7D,wBAAwB,EAAE,iCAAiC;IAC3D,YAAY;IAEZ,0BAA0B;IAC1B,0BAA0B,EAAE,mCAAmC;IAC/D,sBAAsB,EAAE,+BAA+B;IACvD,qBAAqB,EAAE,8BAA8B;IACrD,yBAAyB,EAAE,kCAAkC;IAC7D,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB,EAAE,2BAA2B;IAC/C,YAAY;IAEZ,qBAAqB;IACrB,qBAAqB,EAAE,8BAA8B;IACrD,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,uBAAuB;IACvC,sBAAsB,EAAE,+BAA+B;IACvD,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,yBAAyB;IACzB,2BAA2B,EAAE,oCAAoC;IACjE,sBAAsB,EAAE,+BAA+B;IACvD,gBAAgB,EAAE,yBAAyB;IAC3C,YAAY;IAEZ,wBAAwB;IACxB,kBAAkB,EAAE,2BAA2B;IAC/C,0BAA0B,EAAE,mCAAmC;IAC/D,cAAc,EAAE,uBAAuB;IACvC,wBAAwB,EAAE,iCAAiC;IAC3D,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,qBAAqB;IACrB,OAAO,EAAE,gBAAgB;IACzB,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB,EAAE,iCAAiC;IAC3D,4BAA4B,EAAE,qCAAqC;IACnE,sBAAsB,EAAE,+BAA+B;IACvD,YAAY;CACJ,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,sBAAsB,GAAG,WAAW,KAAK,CAAC,IAAI,CACzD,iCAAyB,CAC1B;KACE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAEhB;;GAEG;AACU,QAAA,aAAa,GAAG,GAAG,CAAC;AAEjC;;GAEG;AACU,QAAA,SAAS,GAAG;IACvB,kBAAkB,EAAE,CAAC;IACrB,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,CAAC;CACX,CAAC;AAEX;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;CACmB,CAAC;AAE5C;;GAEG;AACU,QAAA,cAAc,GAAG,eAAO,CAAC,SAAS,CAAC;AAEhD;;GAEG;AACU,QAAA,SAAS,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX;;GAEG;AACU,QAAA,gBAAgB,GAAG,iBAAS,CAAC,KAAK,CAAC;AAEhD;;;;GAIG;AACU,QAAA,UAAU,GAAG;IACxB,uBAAuB;IACvB,eAAe,EAAE,wBAAwB;IACzC,oBAAoB;IACpB,oBAAoB,EAAE,6BAA6B;IACnD,YAAY;IAEZ,uBAAuB,EAAE,gCAAgC;IACzD,uBAAuB;IACvB,kBAAkB,EAAE,2BAA2B;IAC/C,gBAAgB,EAAE,yBAAyB;IAC3C,yBAAyB,EAAE,kCAAkC;IAC7D,YAAY;IAEZ,wBAAwB,EAAE,iCAAiC;IAC3D,YAAY;IAEZ,0BAA0B;IAC1B,0BAA0B,EAAE,mCAAmC;IAC/D,sBAAsB,EAAE,+BAA+B;IACvD,qBAAqB,EAAE,8BAA8B;IACrD,yBAAyB,EAAE,kCAAkC;IAC7D,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB,EAAE,2BAA2B;IAC/C,YAAY;IAEZ,qBAAqB;IACrB,qBAAqB,EAAE,8BAA8B;IACrD,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,uBAAuB;IACvC,sBAAsB,EAAE,+BAA+B;IACvD,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,yBAAyB;IACzB,2BAA2B,EAAE,oCAAoC;IACjE,sBAAsB,EAAE,+BAA+B;IACvD,gBAAgB,EAAE,yBAAyB;IAC3C,YAAY;IAEZ,wBAAwB;IACxB,kBAAkB,EAAE,2BAA2B;IAC/C,0BAA0B,EAAE,mCAAmC;IAC/D,cAAc,EAAE,uBAAuB;IACvC,wBAAwB,EAAE,iCAAiC;IAC3D,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,qBAAqB;IACrB,OAAO,EAAE,gBAAgB;IACzB,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB,EAAE,iCAAiC;IAC3D,4BAA4B,EAAE,qCAAqC;IACnE,sBAAsB,EAAE,+BAA+B;IACvD,YAAY;CACJ,CAAC"}
@@ -7,12 +7,53 @@ export declare const BENCHMARK_FILE_EXTENSIONS: Set<string>;
7
7
  * ".bench.{js,mjs,cjs,ts,mts,cts}"
8
8
  */
9
9
  export declare const BENCHMARK_FILE_PATTERN: string;
10
+ /**
11
+ * Timeout before we force-quit when aborting benchmarks (ms)
12
+ */
13
+ export declare const ABORT_TIMEOUT = 500;
14
+ /**
15
+ * Exit codes for the CLI
16
+ */
17
+ export declare const ExitCodes: {
18
+ readonly BENCHMARK_FAILURES: 1;
19
+ readonly CONFIG_ERROR: 2;
20
+ readonly DISCOVERY_ERROR: 3;
21
+ readonly RUNTIME_ERROR: 5;
22
+ readonly SUCCESS: 0;
23
+ readonly UNKNOWN_ERROR: 99;
24
+ readonly VALIDATION_ERROR: 4;
25
+ };
26
+ /**
27
+ * Supported benchmark engines
28
+ */
29
+ export declare const Engines: {
30
+ readonly ACCURATE: "accurate";
31
+ readonly TINYBENCH: "tinybench";
32
+ };
33
+ /**
34
+ * Default benchmark engine
35
+ */
36
+ export declare const DEFAULT_ENGINE: "tinybench";
37
+ /**
38
+ * Supported reporters
39
+ */
40
+ export declare const Reporters: {
41
+ readonly CSV: "csv";
42
+ readonly HUMAN: "human";
43
+ readonly JSON: "json";
44
+ readonly SIMPLE: "simple";
45
+ };
46
+ /**
47
+ * Default reporter
48
+ */
49
+ export declare const DEFAULT_REPORTER: "human";
10
50
  /**
11
51
  * Error codes for all ModestBench errors
12
52
  *
13
53
  * Use these constants to check error types instead of instanceof checks.
14
54
  */
15
55
  export declare const ErrorCodes: {
56
+ readonly BUDGET_EXCEEDED: "ERR_MB_BUDGET_EXCEEDED";
16
57
  readonly CLI_INVALID_ARGUMENT: "ERR_MB_CLI_INVALID_ARGUMENT";
17
58
  readonly CLI_INVALID_DATE_FORMAT: "ERR_MB_CLI_INVALID_DATE_FORMAT";
18
59
  readonly CONFIG_LOAD_FAILED: "ERR_MB_CONFIG_LOAD_FAILED";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,yBAAyB,aAOpC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAIpB,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDb,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,yBAAyB,aAOpC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAIpB,CAAC;AAEhB;;GAEG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;CAQZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,OAAO;;;CAGuB,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,cAAc,aAAoB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,SAAkB,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDb,CAAC"}
@@ -7,12 +7,53 @@ export declare const BENCHMARK_FILE_EXTENSIONS: Set<string>;
7
7
  * ".bench.{js,mjs,cjs,ts,mts,cts}"
8
8
  */
9
9
  export declare const BENCHMARK_FILE_PATTERN: string;
10
+ /**
11
+ * Timeout before we force-quit when aborting benchmarks (ms)
12
+ */
13
+ export declare const ABORT_TIMEOUT = 500;
14
+ /**
15
+ * Exit codes for the CLI
16
+ */
17
+ export declare const ExitCodes: {
18
+ readonly BENCHMARK_FAILURES: 1;
19
+ readonly CONFIG_ERROR: 2;
20
+ readonly DISCOVERY_ERROR: 3;
21
+ readonly RUNTIME_ERROR: 5;
22
+ readonly SUCCESS: 0;
23
+ readonly UNKNOWN_ERROR: 99;
24
+ readonly VALIDATION_ERROR: 4;
25
+ };
26
+ /**
27
+ * Supported benchmark engines
28
+ */
29
+ export declare const Engines: {
30
+ readonly ACCURATE: "accurate";
31
+ readonly TINYBENCH: "tinybench";
32
+ };
33
+ /**
34
+ * Default benchmark engine
35
+ */
36
+ export declare const DEFAULT_ENGINE: "tinybench";
37
+ /**
38
+ * Supported reporters
39
+ */
40
+ export declare const Reporters: {
41
+ readonly CSV: "csv";
42
+ readonly HUMAN: "human";
43
+ readonly JSON: "json";
44
+ readonly SIMPLE: "simple";
45
+ };
46
+ /**
47
+ * Default reporter
48
+ */
49
+ export declare const DEFAULT_REPORTER: "human";
10
50
  /**
11
51
  * Error codes for all ModestBench errors
12
52
  *
13
53
  * Use these constants to check error types instead of instanceof checks.
14
54
  */
15
55
  export declare const ErrorCodes: {
56
+ readonly BUDGET_EXCEEDED: "ERR_MB_BUDGET_EXCEEDED";
16
57
  readonly CLI_INVALID_ARGUMENT: "ERR_MB_CLI_INVALID_ARGUMENT";
17
58
  readonly CLI_INVALID_DATE_FORMAT: "ERR_MB_CLI_INVALID_DATE_FORMAT";
18
59
  readonly CONFIG_LOAD_FAILED: "ERR_MB_CONFIG_LOAD_FAILED";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,yBAAyB,aAOpC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAIpB,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDb,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,yBAAyB,aAOpC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAIpB,CAAC;AAEhB;;GAEG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;CAQZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,OAAO;;;CAGuB,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,cAAc,aAAoB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,SAAkB,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDb,CAAC"}
package/dist/constants.js CHANGED
@@ -16,20 +16,63 @@ export const BENCHMARK_FILE_EXTENSIONS = new Set([
16
16
  export const BENCHMARK_FILE_PATTERN = `.bench.{${Array.from(BENCHMARK_FILE_EXTENSIONS)
17
17
  .map((ext) => ext.slice(1))
18
18
  .join(',')}}`;
19
+ /**
20
+ * Timeout before we force-quit when aborting benchmarks (ms)
21
+ */
22
+ export const ABORT_TIMEOUT = 500;
23
+ /**
24
+ * Exit codes for the CLI
25
+ */
26
+ export const ExitCodes = {
27
+ BENCHMARK_FAILURES: 1,
28
+ CONFIG_ERROR: 2,
29
+ DISCOVERY_ERROR: 3,
30
+ RUNTIME_ERROR: 5,
31
+ SUCCESS: 0,
32
+ UNKNOWN_ERROR: 99,
33
+ VALIDATION_ERROR: 4,
34
+ };
35
+ /**
36
+ * Supported benchmark engines
37
+ */
38
+ export const Engines = {
39
+ ACCURATE: 'accurate',
40
+ TINYBENCH: 'tinybench',
41
+ };
42
+ /**
43
+ * Default benchmark engine
44
+ */
45
+ export const DEFAULT_ENGINE = Engines.TINYBENCH;
46
+ /**
47
+ * Supported reporters
48
+ */
49
+ export const Reporters = {
50
+ CSV: 'csv',
51
+ HUMAN: 'human',
52
+ JSON: 'json',
53
+ SIMPLE: 'simple',
54
+ };
55
+ /**
56
+ * Default reporter
57
+ */
58
+ export const DEFAULT_REPORTER = Reporters.HUMAN;
19
59
  /**
20
60
  * Error codes for all ModestBench errors
21
61
  *
22
62
  * Use these constants to check error types instead of instanceof checks.
23
63
  */
24
64
  export const ErrorCodes = {
65
+ //#region budget-errors
66
+ BUDGET_EXCEEDED: 'ERR_MB_BUDGET_EXCEEDED',
25
67
  //#region cli-errors
26
68
  CLI_INVALID_ARGUMENT: 'ERR_MB_CLI_INVALID_ARGUMENT',
27
- CLI_INVALID_DATE_FORMAT: 'ERR_MB_CLI_INVALID_DATE_FORMAT',
28
69
  //#endregion
70
+ CLI_INVALID_DATE_FORMAT: 'ERR_MB_CLI_INVALID_DATE_FORMAT',
29
71
  //#region config-errors
30
72
  CONFIG_LOAD_FAILED: 'ERR_MB_CONFIG_LOAD_FAILED',
31
73
  CONFIG_NOT_FOUND: 'ERR_MB_CONFIG_NOT_FOUND',
32
74
  CONFIG_UNSUPPORTED_FORMAT: 'ERR_MB_CONFIG_UNSUPPORTED_FORMAT',
75
+ //#endregion
33
76
  CONFIG_VALIDATION_FAILED: 'ERR_MB_CONFIG_VALIDATION_FAILED',
34
77
  //#endregion
35
78
  //#region execution-errors
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,KAAK,CAAC,IAAI,CACzD,yBAAyB,CAC1B;KACE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,oBAAoB;IACpB,oBAAoB,EAAE,6BAA6B;IACnD,uBAAuB,EAAE,gCAAgC;IACzD,YAAY;IAEZ,uBAAuB;IACvB,kBAAkB,EAAE,2BAA2B;IAC/C,gBAAgB,EAAE,yBAAyB;IAC3C,yBAAyB,EAAE,kCAAkC;IAC7D,wBAAwB,EAAE,iCAAiC;IAC3D,YAAY;IAEZ,0BAA0B;IAC1B,0BAA0B,EAAE,mCAAmC;IAC/D,sBAAsB,EAAE,+BAA+B;IACvD,qBAAqB,EAAE,8BAA8B;IACrD,yBAAyB,EAAE,kCAAkC;IAC7D,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB,EAAE,2BAA2B;IAC/C,YAAY;IAEZ,qBAAqB;IACrB,qBAAqB,EAAE,8BAA8B;IACrD,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,uBAAuB;IACvC,sBAAsB,EAAE,+BAA+B;IACvD,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,yBAAyB;IACzB,2BAA2B,EAAE,oCAAoC;IACjE,sBAAsB,EAAE,+BAA+B;IACvD,gBAAgB,EAAE,yBAAyB;IAC3C,YAAY;IAEZ,wBAAwB;IACxB,kBAAkB,EAAE,2BAA2B;IAC/C,0BAA0B,EAAE,mCAAmC;IAC/D,cAAc,EAAE,uBAAuB;IACvC,wBAAwB,EAAE,iCAAiC;IAC3D,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,qBAAqB;IACrB,OAAO,EAAE,gBAAgB;IACzB,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB,EAAE,iCAAiC;IAC3D,4BAA4B,EAAE,qCAAqC;IACnE,sBAAsB,EAAE,+BAA+B;IACvD,YAAY;CACJ,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,KAAK,CAAC,IAAI,CACzD,yBAAyB,CAC1B;KACE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAEhB;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,kBAAkB,EAAE,CAAC;IACrB,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,CAAC;CACX,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;CACmB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,uBAAuB;IACvB,eAAe,EAAE,wBAAwB;IACzC,oBAAoB;IACpB,oBAAoB,EAAE,6BAA6B;IACnD,YAAY;IAEZ,uBAAuB,EAAE,gCAAgC;IACzD,uBAAuB;IACvB,kBAAkB,EAAE,2BAA2B;IAC/C,gBAAgB,EAAE,yBAAyB;IAC3C,yBAAyB,EAAE,kCAAkC;IAC7D,YAAY;IAEZ,wBAAwB,EAAE,iCAAiC;IAC3D,YAAY;IAEZ,0BAA0B;IAC1B,0BAA0B,EAAE,mCAAmC;IAC/D,sBAAsB,EAAE,+BAA+B;IACvD,qBAAqB,EAAE,8BAA8B;IACrD,yBAAyB,EAAE,kCAAkC;IAC7D,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB,EAAE,2BAA2B;IAC/C,YAAY;IAEZ,qBAAqB;IACrB,qBAAqB,EAAE,8BAA8B;IACrD,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,uBAAuB;IACvC,sBAAsB,EAAE,+BAA+B;IACvD,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,yBAAyB;IACzB,2BAA2B,EAAE,oCAAoC;IACjE,sBAAsB,EAAE,+BAA+B;IACvD,gBAAgB,EAAE,yBAAyB;IAC3C,YAAY;IAEZ,wBAAwB;IACxB,kBAAkB,EAAE,2BAA2B;IAC/C,0BAA0B,EAAE,mCAAmC;IAC/D,cAAc,EAAE,uBAAuB;IACvC,wBAAwB,EAAE,iCAAiC;IAC3D,0BAA0B,EAAE,mCAAmC;IAC/D,YAAY;IAEZ,qBAAqB;IACrB,OAAO,EAAE,gBAAgB;IACzB,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB,EAAE,iCAAiC;IAC3D,4BAA4B,EAAE,qCAAqC;IACnE,sBAAsB,EAAE,+BAA+B;IACvD,YAAY;CACJ,CAAC"}