modestbench 0.8.0 → 0.9.1

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 (171) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +37 -4
  3. package/dist/adapters/types.d.cts +1 -1
  4. package/dist/adapters/types.d.cts.map +1 -1
  5. package/dist/adapters/types.d.ts +1 -1
  6. package/dist/adapters/types.d.ts.map +1 -1
  7. package/dist/cli/commands/baseline.cjs +8 -8
  8. package/dist/cli/commands/baseline.cjs.map +1 -1
  9. package/dist/cli/commands/baseline.js +8 -8
  10. package/dist/cli/commands/baseline.js.map +1 -1
  11. package/dist/cli/commands/init.cjs +2 -2
  12. package/dist/cli/commands/init.cjs.map +1 -1
  13. package/dist/cli/commands/init.js +2 -2
  14. package/dist/cli/commands/init.js.map +1 -1
  15. package/dist/cli/commands/run.cjs +12 -8
  16. package/dist/cli/commands/run.cjs.map +1 -1
  17. package/dist/cli/commands/run.d.cts +1 -13
  18. package/dist/cli/commands/run.d.cts.map +1 -1
  19. package/dist/cli/commands/run.d.ts +1 -13
  20. package/dist/cli/commands/run.d.ts.map +1 -1
  21. package/dist/cli/commands/run.js +11 -7
  22. package/dist/cli/commands/run.js.map +1 -1
  23. package/dist/cli/commands/test.cjs +1 -1
  24. package/dist/cli/commands/test.cjs.map +1 -1
  25. package/dist/cli/commands/test.js +1 -1
  26. package/dist/cli/commands/test.js.map +1 -1
  27. package/dist/cli/index.cjs +655 -870
  28. package/dist/cli/index.cjs.map +1 -1
  29. package/dist/cli/index.d.cts +27 -17
  30. package/dist/cli/index.d.cts.map +1 -1
  31. package/dist/cli/index.d.ts +27 -17
  32. package/dist/cli/index.d.ts.map +1 -1
  33. package/dist/cli/index.js +657 -869
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/{core → config}/benchmark-schema.cjs +1 -1
  36. package/dist/config/benchmark-schema.cjs.map +1 -0
  37. package/dist/config/benchmark-schema.d.cts +913 -0
  38. package/dist/config/benchmark-schema.d.cts.map +1 -0
  39. package/dist/config/benchmark-schema.d.ts +913 -0
  40. package/dist/config/benchmark-schema.d.ts.map +1 -0
  41. package/dist/{core → config}/benchmark-schema.js +1 -1
  42. package/dist/config/benchmark-schema.js.map +1 -0
  43. package/dist/config/budget-schema.cjs +1 -1
  44. package/dist/config/budget-schema.cjs.map +1 -1
  45. package/dist/config/budget-schema.js +1 -1
  46. package/dist/config/budget-schema.js.map +1 -1
  47. package/dist/config/schema.cjs +188 -105
  48. package/dist/config/schema.cjs.map +1 -1
  49. package/dist/config/schema.d.cts +208 -80
  50. package/dist/config/schema.d.cts.map +1 -1
  51. package/dist/config/schema.d.ts +208 -80
  52. package/dist/config/schema.d.ts.map +1 -1
  53. package/dist/config/schema.js +187 -104
  54. package/dist/config/schema.js.map +1 -1
  55. package/dist/core/engine.cjs +50 -45
  56. package/dist/core/engine.cjs.map +1 -1
  57. package/dist/core/engine.d.cts.map +1 -1
  58. package/dist/core/engine.d.ts.map +1 -1
  59. package/dist/core/engine.js +50 -45
  60. package/dist/core/engine.js.map +1 -1
  61. package/dist/core/engines/accurate-engine.cjs +1 -1
  62. package/dist/core/engines/accurate-engine.cjs.map +1 -1
  63. package/dist/core/engines/accurate-engine.d.cts.map +1 -1
  64. package/dist/core/engines/accurate-engine.d.ts.map +1 -1
  65. package/dist/core/engines/accurate-engine.js +1 -1
  66. package/dist/core/engines/accurate-engine.js.map +1 -1
  67. package/dist/core/output-path-resolver.cjs +15 -1
  68. package/dist/core/output-path-resolver.cjs.map +1 -1
  69. package/dist/core/output-path-resolver.d.cts +8 -0
  70. package/dist/core/output-path-resolver.d.cts.map +1 -1
  71. package/dist/core/output-path-resolver.d.ts +8 -0
  72. package/dist/core/output-path-resolver.d.ts.map +1 -1
  73. package/dist/core/output-path-resolver.js +13 -0
  74. package/dist/core/output-path-resolver.js.map +1 -1
  75. package/dist/formatters/history/compare.cjs +6 -6
  76. package/dist/formatters/history/compare.cjs.map +1 -1
  77. package/dist/formatters/history/compare.js +6 -6
  78. package/dist/formatters/history/compare.js.map +1 -1
  79. package/dist/formatters/history/show.cjs +2 -2
  80. package/dist/formatters/history/show.cjs.map +1 -1
  81. package/dist/formatters/history/show.js +2 -2
  82. package/dist/formatters/history/show.js.map +1 -1
  83. package/dist/formatters/history/trends.cjs +1 -1
  84. package/dist/formatters/history/trends.cjs.map +1 -1
  85. package/dist/formatters/history/trends.js +1 -1
  86. package/dist/formatters/history/trends.js.map +1 -1
  87. package/dist/reporters/human.cjs +3 -3
  88. package/dist/reporters/human.cjs.map +1 -1
  89. package/dist/reporters/human.d.cts.map +1 -1
  90. package/dist/reporters/human.d.ts.map +1 -1
  91. package/dist/reporters/human.js +3 -3
  92. package/dist/reporters/human.js.map +1 -1
  93. package/dist/reporters/json.cjs +1 -1
  94. package/dist/reporters/json.cjs.map +1 -1
  95. package/dist/reporters/json.js +1 -1
  96. package/dist/reporters/json.js.map +1 -1
  97. package/dist/reporters/nyan.cjs +1 -1
  98. package/dist/reporters/nyan.cjs.map +1 -1
  99. package/dist/reporters/nyan.js +1 -1
  100. package/dist/reporters/nyan.js.map +1 -1
  101. package/dist/schema/modestbench-config.schema.json +94 -87
  102. package/dist/services/budget-evaluator.cjs +10 -8
  103. package/dist/services/budget-evaluator.cjs.map +1 -1
  104. package/dist/services/budget-evaluator.d.cts +2 -2
  105. package/dist/services/budget-evaluator.d.cts.map +1 -1
  106. package/dist/services/budget-evaluator.d.ts +2 -2
  107. package/dist/services/budget-evaluator.d.ts.map +1 -1
  108. package/dist/services/budget-evaluator.js +10 -8
  109. package/dist/services/budget-evaluator.js.map +1 -1
  110. package/dist/services/budget-resolver.cjs +214 -0
  111. package/dist/services/budget-resolver.cjs.map +1 -0
  112. package/dist/services/budget-resolver.d.cts +98 -0
  113. package/dist/services/budget-resolver.d.cts.map +1 -0
  114. package/dist/services/budget-resolver.d.ts +98 -0
  115. package/dist/services/budget-resolver.d.ts.map +1 -0
  116. package/dist/services/budget-resolver.js +203 -0
  117. package/dist/services/budget-resolver.js.map +1 -0
  118. package/dist/services/config-manager.cjs +2 -2
  119. package/dist/services/config-manager.cjs.map +1 -1
  120. package/dist/services/config-manager.js +2 -2
  121. package/dist/services/config-manager.js.map +1 -1
  122. package/dist/services/file-loader.cjs +1 -1
  123. package/dist/services/file-loader.cjs.map +1 -1
  124. package/dist/services/file-loader.js +1 -1
  125. package/dist/services/file-loader.js.map +1 -1
  126. package/dist/services/reporter-registry.cjs +8 -8
  127. package/dist/services/reporter-registry.cjs.map +1 -1
  128. package/dist/services/reporter-registry.js +8 -8
  129. package/dist/services/reporter-registry.js.map +1 -1
  130. package/dist/types/budgets.d.cts +31 -0
  131. package/dist/types/budgets.d.cts.map +1 -1
  132. package/dist/types/budgets.d.ts +31 -0
  133. package/dist/types/budgets.d.ts.map +1 -1
  134. package/dist/types/core.cjs.map +1 -1
  135. package/dist/types/core.d.cts +28 -75
  136. package/dist/types/core.d.cts.map +1 -1
  137. package/dist/types/core.d.ts +28 -75
  138. package/dist/types/core.d.ts.map +1 -1
  139. package/dist/types/core.js.map +1 -1
  140. package/package.json +24 -15
  141. package/src/adapters/types.ts +1 -1
  142. package/src/cli/commands/baseline.ts +8 -8
  143. package/src/cli/commands/init.ts +2 -2
  144. package/src/cli/commands/run.ts +18 -6
  145. package/src/cli/commands/test.ts +1 -1
  146. package/src/cli/index.ts +806 -942
  147. package/src/{core → config}/benchmark-schema.ts +1 -1
  148. package/src/config/budget-schema.ts +1 -1
  149. package/src/config/schema.ts +379 -302
  150. package/src/core/engine.ts +74 -69
  151. package/src/core/engines/accurate-engine.ts +1 -1
  152. package/src/core/output-path-resolver.ts +14 -0
  153. package/src/formatters/history/compare.ts +6 -6
  154. package/src/formatters/history/show.ts +2 -2
  155. package/src/formatters/history/trends.ts +1 -1
  156. package/src/reporters/human.ts +5 -3
  157. package/src/reporters/json.ts +1 -1
  158. package/src/reporters/nyan.ts +1 -1
  159. package/src/services/budget-evaluator.ts +15 -11
  160. package/src/services/budget-resolver.ts +254 -0
  161. package/src/services/config-manager.ts +2 -2
  162. package/src/services/file-loader.ts +1 -1
  163. package/src/services/reporter-registry.ts +8 -8
  164. package/src/types/budgets.ts +38 -0
  165. package/src/types/core.ts +64 -99
  166. package/dist/core/benchmark-schema.cjs.map +0 -1
  167. package/dist/core/benchmark-schema.d.cts +0 -139
  168. package/dist/core/benchmark-schema.d.cts.map +0 -1
  169. package/dist/core/benchmark-schema.d.ts +0 -139
  170. package/dist/core/benchmark-schema.d.ts.map +0 -1
  171. package/dist/core/benchmark-schema.js.map +0 -1
@@ -0,0 +1,913 @@
1
+ /**
2
+ * ModestBench Benchmark File Schema
3
+ *
4
+ * Zod schemas for validating and parsing benchmark file structure. Supports
5
+ * both traditional suite-based format and simplified flat task definitions.
6
+ *
7
+ * Types are derived from schemas using z.infer (output) and z.input (input).
8
+ */
9
+ import { z } from 'zod';
10
+ import type { ModestBenchConfig } from "../types/core.js";
11
+ /**
12
+ * Zod schema for a benchmark task - accepts either:
13
+ *
14
+ * 1. A full task object with fn, config, metadata, tags
15
+ * 2. A function directly (shorthand syntax)
16
+ *
17
+ * Input: function OR object Output: always normalized to object with fn
18
+ * property
19
+ */
20
+ declare const benchmarkTaskSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodObject<{
21
+ config: z.ZodOptional<z.ZodType<Partial<{
22
+ bail: boolean;
23
+ exclude: string[];
24
+ excludeTags: string[];
25
+ iterations: number;
26
+ limitBy: "any" | "time" | "iterations" | "all";
27
+ metadata: Record<string, unknown>;
28
+ pattern: string | string[];
29
+ quiet: boolean;
30
+ reporterConfig: {
31
+ [x: string]: unknown;
32
+ json?: {
33
+ prettyPrint?: boolean | undefined;
34
+ } | undefined;
35
+ };
36
+ reporters: string[];
37
+ tags: string[];
38
+ thresholds: {
39
+ maxMarginOfError?: number | undefined;
40
+ maxMean?: number | undefined;
41
+ maxP95?: number | undefined;
42
+ maxP99?: number | undefined;
43
+ maxStdDev?: number | undefined;
44
+ minOpsPerSecond?: number | undefined;
45
+ };
46
+ time: number;
47
+ timeout: number;
48
+ verbose: boolean;
49
+ warmup: number;
50
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
51
+ $schema?: string | undefined;
52
+ baseline?: string | undefined;
53
+ budgetMode?: "fail" | "warn" | "report" | undefined;
54
+ outputDir?: string | undefined;
55
+ profile?: {
56
+ minExecutionPercent: number;
57
+ smartDetection: boolean;
58
+ topN: number;
59
+ exclude?: string[] | undefined;
60
+ focus?: string[] | undefined;
61
+ minCallCount?: number | undefined;
62
+ outputFile?: string | undefined;
63
+ } | undefined;
64
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
65
+ bail: boolean;
66
+ exclude: string[];
67
+ excludeTags: string[];
68
+ iterations: number;
69
+ limitBy: "any" | "time" | "iterations" | "all";
70
+ metadata: Record<string, unknown>;
71
+ pattern: string | string[];
72
+ quiet: boolean;
73
+ reporterConfig: {
74
+ [x: string]: unknown;
75
+ json?: {
76
+ prettyPrint?: boolean | undefined;
77
+ } | undefined;
78
+ };
79
+ reporters: string[];
80
+ tags: string[];
81
+ thresholds: {
82
+ maxMarginOfError?: number | undefined;
83
+ maxMean?: number | undefined;
84
+ maxP95?: number | undefined;
85
+ maxP99?: number | undefined;
86
+ maxStdDev?: number | undefined;
87
+ minOpsPerSecond?: number | undefined;
88
+ };
89
+ time: number;
90
+ timeout: number;
91
+ verbose: boolean;
92
+ warmup: number;
93
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
94
+ $schema?: string | undefined;
95
+ baseline?: string | undefined;
96
+ budgetMode?: "fail" | "warn" | "report" | undefined;
97
+ outputDir?: string | undefined;
98
+ profile?: {
99
+ minExecutionPercent: number;
100
+ smartDetection: boolean;
101
+ topN: number;
102
+ exclude?: string[] | undefined;
103
+ focus?: string[] | undefined;
104
+ minCallCount?: number | undefined;
105
+ outputFile?: string | undefined;
106
+ } | undefined;
107
+ }>, unknown>>>;
108
+ fn: z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>;
109
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
110
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
111
+ }, z.core.$strip>, z.ZodPipe<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>, z.ZodTransform<{
112
+ fn: (...args: any[]) => unknown;
113
+ }, (...args: any[]) => unknown>>]>, z.ZodObject<{
114
+ config: z.ZodOptional<z.ZodType<Partial<{
115
+ bail: boolean;
116
+ exclude: string[];
117
+ excludeTags: string[];
118
+ iterations: number;
119
+ limitBy: "any" | "time" | "iterations" | "all";
120
+ metadata: Record<string, unknown>;
121
+ pattern: string | string[];
122
+ quiet: boolean;
123
+ reporterConfig: {
124
+ [x: string]: unknown;
125
+ json?: {
126
+ prettyPrint?: boolean | undefined;
127
+ } | undefined;
128
+ };
129
+ reporters: string[];
130
+ tags: string[];
131
+ thresholds: {
132
+ maxMarginOfError?: number | undefined;
133
+ maxMean?: number | undefined;
134
+ maxP95?: number | undefined;
135
+ maxP99?: number | undefined;
136
+ maxStdDev?: number | undefined;
137
+ minOpsPerSecond?: number | undefined;
138
+ };
139
+ time: number;
140
+ timeout: number;
141
+ verbose: boolean;
142
+ warmup: number;
143
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
144
+ $schema?: string | undefined;
145
+ baseline?: string | undefined;
146
+ budgetMode?: "fail" | "warn" | "report" | undefined;
147
+ outputDir?: string | undefined;
148
+ profile?: {
149
+ minExecutionPercent: number;
150
+ smartDetection: boolean;
151
+ topN: number;
152
+ exclude?: string[] | undefined;
153
+ focus?: string[] | undefined;
154
+ minCallCount?: number | undefined;
155
+ outputFile?: string | undefined;
156
+ } | undefined;
157
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
158
+ bail: boolean;
159
+ exclude: string[];
160
+ excludeTags: string[];
161
+ iterations: number;
162
+ limitBy: "any" | "time" | "iterations" | "all";
163
+ metadata: Record<string, unknown>;
164
+ pattern: string | string[];
165
+ quiet: boolean;
166
+ reporterConfig: {
167
+ [x: string]: unknown;
168
+ json?: {
169
+ prettyPrint?: boolean | undefined;
170
+ } | undefined;
171
+ };
172
+ reporters: string[];
173
+ tags: string[];
174
+ thresholds: {
175
+ maxMarginOfError?: number | undefined;
176
+ maxMean?: number | undefined;
177
+ maxP95?: number | undefined;
178
+ maxP99?: number | undefined;
179
+ maxStdDev?: number | undefined;
180
+ minOpsPerSecond?: number | undefined;
181
+ };
182
+ time: number;
183
+ timeout: number;
184
+ verbose: boolean;
185
+ warmup: number;
186
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
187
+ $schema?: string | undefined;
188
+ baseline?: string | undefined;
189
+ budgetMode?: "fail" | "warn" | "report" | undefined;
190
+ outputDir?: string | undefined;
191
+ profile?: {
192
+ minExecutionPercent: number;
193
+ smartDetection: boolean;
194
+ topN: number;
195
+ exclude?: string[] | undefined;
196
+ focus?: string[] | undefined;
197
+ minCallCount?: number | undefined;
198
+ outputFile?: string | undefined;
199
+ } | undefined;
200
+ }>, unknown>>>;
201
+ fn: z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>;
202
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
203
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
204
+ }, z.core.$strip>>;
205
+ /**
206
+ * Zod schema for validating benchmark suite structure
207
+ */
208
+ declare const benchmarkSuiteSchema: z.ZodObject<{
209
+ benchmarks: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodUnion<readonly [z.ZodObject<{
210
+ config: z.ZodOptional<z.ZodType<Partial<{
211
+ bail: boolean;
212
+ exclude: string[];
213
+ excludeTags: string[];
214
+ iterations: number;
215
+ limitBy: "any" | "time" | "iterations" | "all";
216
+ metadata: Record<string, unknown>;
217
+ pattern: string | string[];
218
+ quiet: boolean;
219
+ reporterConfig: {
220
+ [x: string]: unknown;
221
+ json?: {
222
+ prettyPrint?: boolean | undefined;
223
+ } | undefined;
224
+ };
225
+ reporters: string[];
226
+ tags: string[];
227
+ thresholds: {
228
+ maxMarginOfError?: number | undefined;
229
+ maxMean?: number | undefined;
230
+ maxP95?: number | undefined;
231
+ maxP99?: number | undefined;
232
+ maxStdDev?: number | undefined;
233
+ minOpsPerSecond?: number | undefined;
234
+ };
235
+ time: number;
236
+ timeout: number;
237
+ verbose: boolean;
238
+ warmup: number;
239
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
240
+ $schema?: string | undefined;
241
+ baseline?: string | undefined;
242
+ budgetMode?: "fail" | "warn" | "report" | undefined;
243
+ outputDir?: string | undefined;
244
+ profile?: {
245
+ minExecutionPercent: number;
246
+ smartDetection: boolean;
247
+ topN: number;
248
+ exclude?: string[] | undefined;
249
+ focus?: string[] | undefined;
250
+ minCallCount?: number | undefined;
251
+ outputFile?: string | undefined;
252
+ } | undefined;
253
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
254
+ bail: boolean;
255
+ exclude: string[];
256
+ excludeTags: string[];
257
+ iterations: number;
258
+ limitBy: "any" | "time" | "iterations" | "all";
259
+ metadata: Record<string, unknown>;
260
+ pattern: string | string[];
261
+ quiet: boolean;
262
+ reporterConfig: {
263
+ [x: string]: unknown;
264
+ json?: {
265
+ prettyPrint?: boolean | undefined;
266
+ } | undefined;
267
+ };
268
+ reporters: string[];
269
+ tags: string[];
270
+ thresholds: {
271
+ maxMarginOfError?: number | undefined;
272
+ maxMean?: number | undefined;
273
+ maxP95?: number | undefined;
274
+ maxP99?: number | undefined;
275
+ maxStdDev?: number | undefined;
276
+ minOpsPerSecond?: number | undefined;
277
+ };
278
+ time: number;
279
+ timeout: number;
280
+ verbose: boolean;
281
+ warmup: number;
282
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
283
+ $schema?: string | undefined;
284
+ baseline?: string | undefined;
285
+ budgetMode?: "fail" | "warn" | "report" | undefined;
286
+ outputDir?: string | undefined;
287
+ profile?: {
288
+ minExecutionPercent: number;
289
+ smartDetection: boolean;
290
+ topN: number;
291
+ exclude?: string[] | undefined;
292
+ focus?: string[] | undefined;
293
+ minCallCount?: number | undefined;
294
+ outputFile?: string | undefined;
295
+ } | undefined;
296
+ }>, unknown>>>;
297
+ fn: z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>;
298
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
299
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
300
+ }, z.core.$strip>, z.ZodPipe<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>, z.ZodTransform<{
301
+ fn: (...args: any[]) => unknown;
302
+ }, (...args: any[]) => unknown>>]>, z.ZodObject<{
303
+ config: z.ZodOptional<z.ZodType<Partial<{
304
+ bail: boolean;
305
+ exclude: string[];
306
+ excludeTags: string[];
307
+ iterations: number;
308
+ limitBy: "any" | "time" | "iterations" | "all";
309
+ metadata: Record<string, unknown>;
310
+ pattern: string | string[];
311
+ quiet: boolean;
312
+ reporterConfig: {
313
+ [x: string]: unknown;
314
+ json?: {
315
+ prettyPrint?: boolean | undefined;
316
+ } | undefined;
317
+ };
318
+ reporters: string[];
319
+ tags: string[];
320
+ thresholds: {
321
+ maxMarginOfError?: number | undefined;
322
+ maxMean?: number | undefined;
323
+ maxP95?: number | undefined;
324
+ maxP99?: number | undefined;
325
+ maxStdDev?: number | undefined;
326
+ minOpsPerSecond?: number | undefined;
327
+ };
328
+ time: number;
329
+ timeout: number;
330
+ verbose: boolean;
331
+ warmup: number;
332
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
333
+ $schema?: string | undefined;
334
+ baseline?: string | undefined;
335
+ budgetMode?: "fail" | "warn" | "report" | undefined;
336
+ outputDir?: string | undefined;
337
+ profile?: {
338
+ minExecutionPercent: number;
339
+ smartDetection: boolean;
340
+ topN: number;
341
+ exclude?: string[] | undefined;
342
+ focus?: string[] | undefined;
343
+ minCallCount?: number | undefined;
344
+ outputFile?: string | undefined;
345
+ } | undefined;
346
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
347
+ bail: boolean;
348
+ exclude: string[];
349
+ excludeTags: string[];
350
+ iterations: number;
351
+ limitBy: "any" | "time" | "iterations" | "all";
352
+ metadata: Record<string, unknown>;
353
+ pattern: string | string[];
354
+ quiet: boolean;
355
+ reporterConfig: {
356
+ [x: string]: unknown;
357
+ json?: {
358
+ prettyPrint?: boolean | undefined;
359
+ } | undefined;
360
+ };
361
+ reporters: string[];
362
+ tags: string[];
363
+ thresholds: {
364
+ maxMarginOfError?: number | undefined;
365
+ maxMean?: number | undefined;
366
+ maxP95?: number | undefined;
367
+ maxP99?: number | undefined;
368
+ maxStdDev?: number | undefined;
369
+ minOpsPerSecond?: number | undefined;
370
+ };
371
+ time: number;
372
+ timeout: number;
373
+ verbose: boolean;
374
+ warmup: number;
375
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
376
+ $schema?: string | undefined;
377
+ baseline?: string | undefined;
378
+ budgetMode?: "fail" | "warn" | "report" | undefined;
379
+ outputDir?: string | undefined;
380
+ profile?: {
381
+ minExecutionPercent: number;
382
+ smartDetection: boolean;
383
+ topN: number;
384
+ exclude?: string[] | undefined;
385
+ focus?: string[] | undefined;
386
+ minCallCount?: number | undefined;
387
+ outputFile?: string | undefined;
388
+ } | undefined;
389
+ }>, unknown>>>;
390
+ fn: z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>;
391
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
392
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
393
+ }, z.core.$strip>>>;
394
+ config: z.ZodOptional<z.ZodType<Partial<{
395
+ bail: boolean;
396
+ exclude: string[];
397
+ excludeTags: string[];
398
+ iterations: number;
399
+ limitBy: "any" | "time" | "iterations" | "all";
400
+ metadata: Record<string, unknown>;
401
+ pattern: string | string[];
402
+ quiet: boolean;
403
+ reporterConfig: {
404
+ [x: string]: unknown;
405
+ json?: {
406
+ prettyPrint?: boolean | undefined;
407
+ } | undefined;
408
+ };
409
+ reporters: string[];
410
+ tags: string[];
411
+ thresholds: {
412
+ maxMarginOfError?: number | undefined;
413
+ maxMean?: number | undefined;
414
+ maxP95?: number | undefined;
415
+ maxP99?: number | undefined;
416
+ maxStdDev?: number | undefined;
417
+ minOpsPerSecond?: number | undefined;
418
+ };
419
+ time: number;
420
+ timeout: number;
421
+ verbose: boolean;
422
+ warmup: number;
423
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
424
+ $schema?: string | undefined;
425
+ baseline?: string | undefined;
426
+ budgetMode?: "fail" | "warn" | "report" | undefined;
427
+ outputDir?: string | undefined;
428
+ profile?: {
429
+ minExecutionPercent: number;
430
+ smartDetection: boolean;
431
+ topN: number;
432
+ exclude?: string[] | undefined;
433
+ focus?: string[] | undefined;
434
+ minCallCount?: number | undefined;
435
+ outputFile?: string | undefined;
436
+ } | undefined;
437
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
438
+ bail: boolean;
439
+ exclude: string[];
440
+ excludeTags: string[];
441
+ iterations: number;
442
+ limitBy: "any" | "time" | "iterations" | "all";
443
+ metadata: Record<string, unknown>;
444
+ pattern: string | string[];
445
+ quiet: boolean;
446
+ reporterConfig: {
447
+ [x: string]: unknown;
448
+ json?: {
449
+ prettyPrint?: boolean | undefined;
450
+ } | undefined;
451
+ };
452
+ reporters: string[];
453
+ tags: string[];
454
+ thresholds: {
455
+ maxMarginOfError?: number | undefined;
456
+ maxMean?: number | undefined;
457
+ maxP95?: number | undefined;
458
+ maxP99?: number | undefined;
459
+ maxStdDev?: number | undefined;
460
+ minOpsPerSecond?: number | undefined;
461
+ };
462
+ time: number;
463
+ timeout: number;
464
+ verbose: boolean;
465
+ warmup: number;
466
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
467
+ $schema?: string | undefined;
468
+ baseline?: string | undefined;
469
+ budgetMode?: "fail" | "warn" | "report" | undefined;
470
+ outputDir?: string | undefined;
471
+ profile?: {
472
+ minExecutionPercent: number;
473
+ smartDetection: boolean;
474
+ topN: number;
475
+ exclude?: string[] | undefined;
476
+ focus?: string[] | undefined;
477
+ minCallCount?: number | undefined;
478
+ outputFile?: string | undefined;
479
+ } | undefined;
480
+ }>, unknown>>>;
481
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
482
+ setup: z.ZodOptional<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>>;
483
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
484
+ teardown: z.ZodOptional<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>>;
485
+ }, z.core.$strip>;
486
+ /**
487
+ * Zod schema for validating benchmark file structure.
488
+ *
489
+ * Supports two formats:
490
+ *
491
+ * 1. Suite format (supports config/metadata/tags): { suites: { 'Suite Name': {
492
+ * benchmarks: {...} } }, config: {...} }
493
+ * 2. Flat format (simple, tasks only - no config/metadata/tags): { 'task name': ()
494
+ * => {...} }
495
+ *
496
+ * The flat format is automatically transformed to suite format with a default
497
+ * suite.
498
+ *
499
+ * Input: flat Record<string, function> OR suite object Output: always
500
+ * normalized to suite format
501
+ */
502
+ export declare const benchmarkFileSchema: z.ZodUnion<readonly [z.ZodObject<{
503
+ config: z.ZodOptional<z.ZodType<Partial<{
504
+ bail: boolean;
505
+ exclude: string[];
506
+ excludeTags: string[];
507
+ iterations: number;
508
+ limitBy: "any" | "time" | "iterations" | "all";
509
+ metadata: Record<string, unknown>;
510
+ pattern: string | string[];
511
+ quiet: boolean;
512
+ reporterConfig: {
513
+ [x: string]: unknown;
514
+ json?: {
515
+ prettyPrint?: boolean | undefined;
516
+ } | undefined;
517
+ };
518
+ reporters: string[];
519
+ tags: string[];
520
+ thresholds: {
521
+ maxMarginOfError?: number | undefined;
522
+ maxMean?: number | undefined;
523
+ maxP95?: number | undefined;
524
+ maxP99?: number | undefined;
525
+ maxStdDev?: number | undefined;
526
+ minOpsPerSecond?: number | undefined;
527
+ };
528
+ time: number;
529
+ timeout: number;
530
+ verbose: boolean;
531
+ warmup: number;
532
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
533
+ $schema?: string | undefined;
534
+ baseline?: string | undefined;
535
+ budgetMode?: "fail" | "warn" | "report" | undefined;
536
+ outputDir?: string | undefined;
537
+ profile?: {
538
+ minExecutionPercent: number;
539
+ smartDetection: boolean;
540
+ topN: number;
541
+ exclude?: string[] | undefined;
542
+ focus?: string[] | undefined;
543
+ minCallCount?: number | undefined;
544
+ outputFile?: string | undefined;
545
+ } | undefined;
546
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
547
+ bail: boolean;
548
+ exclude: string[];
549
+ excludeTags: string[];
550
+ iterations: number;
551
+ limitBy: "any" | "time" | "iterations" | "all";
552
+ metadata: Record<string, unknown>;
553
+ pattern: string | string[];
554
+ quiet: boolean;
555
+ reporterConfig: {
556
+ [x: string]: unknown;
557
+ json?: {
558
+ prettyPrint?: boolean | undefined;
559
+ } | undefined;
560
+ };
561
+ reporters: string[];
562
+ tags: string[];
563
+ thresholds: {
564
+ maxMarginOfError?: number | undefined;
565
+ maxMean?: number | undefined;
566
+ maxP95?: number | undefined;
567
+ maxP99?: number | undefined;
568
+ maxStdDev?: number | undefined;
569
+ minOpsPerSecond?: number | undefined;
570
+ };
571
+ time: number;
572
+ timeout: number;
573
+ verbose: boolean;
574
+ warmup: number;
575
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
576
+ $schema?: string | undefined;
577
+ baseline?: string | undefined;
578
+ budgetMode?: "fail" | "warn" | "report" | undefined;
579
+ outputDir?: string | undefined;
580
+ profile?: {
581
+ minExecutionPercent: number;
582
+ smartDetection: boolean;
583
+ topN: number;
584
+ exclude?: string[] | undefined;
585
+ focus?: string[] | undefined;
586
+ minCallCount?: number | undefined;
587
+ outputFile?: string | undefined;
588
+ } | undefined;
589
+ }>, unknown>>>;
590
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
591
+ suites: z.ZodRecord<z.ZodString, z.ZodObject<{
592
+ benchmarks: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodUnion<readonly [z.ZodObject<{
593
+ config: z.ZodOptional<z.ZodType<Partial<{
594
+ bail: boolean;
595
+ exclude: string[];
596
+ excludeTags: string[];
597
+ iterations: number;
598
+ limitBy: "any" | "time" | "iterations" | "all";
599
+ metadata: Record<string, unknown>;
600
+ pattern: string | string[];
601
+ quiet: boolean;
602
+ reporterConfig: {
603
+ [x: string]: unknown;
604
+ json?: {
605
+ prettyPrint?: boolean | undefined;
606
+ } | undefined;
607
+ };
608
+ reporters: string[];
609
+ tags: string[];
610
+ thresholds: {
611
+ maxMarginOfError?: number | undefined;
612
+ maxMean?: number | undefined;
613
+ maxP95?: number | undefined;
614
+ maxP99?: number | undefined;
615
+ maxStdDev?: number | undefined;
616
+ minOpsPerSecond?: number | undefined;
617
+ };
618
+ time: number;
619
+ timeout: number;
620
+ verbose: boolean;
621
+ warmup: number;
622
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
623
+ $schema?: string | undefined;
624
+ baseline?: string | undefined;
625
+ budgetMode?: "fail" | "warn" | "report" | undefined;
626
+ outputDir?: string | undefined;
627
+ profile?: {
628
+ minExecutionPercent: number;
629
+ smartDetection: boolean;
630
+ topN: number;
631
+ exclude?: string[] | undefined;
632
+ focus?: string[] | undefined;
633
+ minCallCount?: number | undefined;
634
+ outputFile?: string | undefined;
635
+ } | undefined;
636
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
637
+ bail: boolean;
638
+ exclude: string[];
639
+ excludeTags: string[];
640
+ iterations: number;
641
+ limitBy: "any" | "time" | "iterations" | "all";
642
+ metadata: Record<string, unknown>;
643
+ pattern: string | string[];
644
+ quiet: boolean;
645
+ reporterConfig: {
646
+ [x: string]: unknown;
647
+ json?: {
648
+ prettyPrint?: boolean | undefined;
649
+ } | undefined;
650
+ };
651
+ reporters: string[];
652
+ tags: string[];
653
+ thresholds: {
654
+ maxMarginOfError?: number | undefined;
655
+ maxMean?: number | undefined;
656
+ maxP95?: number | undefined;
657
+ maxP99?: number | undefined;
658
+ maxStdDev?: number | undefined;
659
+ minOpsPerSecond?: number | undefined;
660
+ };
661
+ time: number;
662
+ timeout: number;
663
+ verbose: boolean;
664
+ warmup: number;
665
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
666
+ $schema?: string | undefined;
667
+ baseline?: string | undefined;
668
+ budgetMode?: "fail" | "warn" | "report" | undefined;
669
+ outputDir?: string | undefined;
670
+ profile?: {
671
+ minExecutionPercent: number;
672
+ smartDetection: boolean;
673
+ topN: number;
674
+ exclude?: string[] | undefined;
675
+ focus?: string[] | undefined;
676
+ minCallCount?: number | undefined;
677
+ outputFile?: string | undefined;
678
+ } | undefined;
679
+ }>, unknown>>>;
680
+ fn: z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>;
681
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
682
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
683
+ }, z.core.$strip>, z.ZodPipe<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>, z.ZodTransform<{
684
+ fn: (...args: any[]) => unknown;
685
+ }, (...args: any[]) => unknown>>]>, z.ZodObject<{
686
+ config: z.ZodOptional<z.ZodType<Partial<{
687
+ bail: boolean;
688
+ exclude: string[];
689
+ excludeTags: string[];
690
+ iterations: number;
691
+ limitBy: "any" | "time" | "iterations" | "all";
692
+ metadata: Record<string, unknown>;
693
+ pattern: string | string[];
694
+ quiet: boolean;
695
+ reporterConfig: {
696
+ [x: string]: unknown;
697
+ json?: {
698
+ prettyPrint?: boolean | undefined;
699
+ } | undefined;
700
+ };
701
+ reporters: string[];
702
+ tags: string[];
703
+ thresholds: {
704
+ maxMarginOfError?: number | undefined;
705
+ maxMean?: number | undefined;
706
+ maxP95?: number | undefined;
707
+ maxP99?: number | undefined;
708
+ maxStdDev?: number | undefined;
709
+ minOpsPerSecond?: number | undefined;
710
+ };
711
+ time: number;
712
+ timeout: number;
713
+ verbose: boolean;
714
+ warmup: number;
715
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
716
+ $schema?: string | undefined;
717
+ baseline?: string | undefined;
718
+ budgetMode?: "fail" | "warn" | "report" | undefined;
719
+ outputDir?: string | undefined;
720
+ profile?: {
721
+ minExecutionPercent: number;
722
+ smartDetection: boolean;
723
+ topN: number;
724
+ exclude?: string[] | undefined;
725
+ focus?: string[] | undefined;
726
+ minCallCount?: number | undefined;
727
+ outputFile?: string | undefined;
728
+ } | undefined;
729
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
730
+ bail: boolean;
731
+ exclude: string[];
732
+ excludeTags: string[];
733
+ iterations: number;
734
+ limitBy: "any" | "time" | "iterations" | "all";
735
+ metadata: Record<string, unknown>;
736
+ pattern: string | string[];
737
+ quiet: boolean;
738
+ reporterConfig: {
739
+ [x: string]: unknown;
740
+ json?: {
741
+ prettyPrint?: boolean | undefined;
742
+ } | undefined;
743
+ };
744
+ reporters: string[];
745
+ tags: string[];
746
+ thresholds: {
747
+ maxMarginOfError?: number | undefined;
748
+ maxMean?: number | undefined;
749
+ maxP95?: number | undefined;
750
+ maxP99?: number | undefined;
751
+ maxStdDev?: number | undefined;
752
+ minOpsPerSecond?: number | undefined;
753
+ };
754
+ time: number;
755
+ timeout: number;
756
+ verbose: boolean;
757
+ warmup: number;
758
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
759
+ $schema?: string | undefined;
760
+ baseline?: string | undefined;
761
+ budgetMode?: "fail" | "warn" | "report" | undefined;
762
+ outputDir?: string | undefined;
763
+ profile?: {
764
+ minExecutionPercent: number;
765
+ smartDetection: boolean;
766
+ topN: number;
767
+ exclude?: string[] | undefined;
768
+ focus?: string[] | undefined;
769
+ minCallCount?: number | undefined;
770
+ outputFile?: string | undefined;
771
+ } | undefined;
772
+ }>, unknown>>>;
773
+ fn: z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>;
774
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
775
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
776
+ }, z.core.$strip>>>;
777
+ config: z.ZodOptional<z.ZodType<Partial<{
778
+ bail: boolean;
779
+ exclude: string[];
780
+ excludeTags: string[];
781
+ iterations: number;
782
+ limitBy: "any" | "time" | "iterations" | "all";
783
+ metadata: Record<string, unknown>;
784
+ pattern: string | string[];
785
+ quiet: boolean;
786
+ reporterConfig: {
787
+ [x: string]: unknown;
788
+ json?: {
789
+ prettyPrint?: boolean | undefined;
790
+ } | undefined;
791
+ };
792
+ reporters: string[];
793
+ tags: string[];
794
+ thresholds: {
795
+ maxMarginOfError?: number | undefined;
796
+ maxMean?: number | undefined;
797
+ maxP95?: number | undefined;
798
+ maxP99?: number | undefined;
799
+ maxStdDev?: number | undefined;
800
+ minOpsPerSecond?: number | undefined;
801
+ };
802
+ time: number;
803
+ timeout: number;
804
+ verbose: boolean;
805
+ warmup: number;
806
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
807
+ $schema?: string | undefined;
808
+ baseline?: string | undefined;
809
+ budgetMode?: "fail" | "warn" | "report" | undefined;
810
+ outputDir?: string | undefined;
811
+ profile?: {
812
+ minExecutionPercent: number;
813
+ smartDetection: boolean;
814
+ topN: number;
815
+ exclude?: string[] | undefined;
816
+ focus?: string[] | undefined;
817
+ minCallCount?: number | undefined;
818
+ outputFile?: string | undefined;
819
+ } | undefined;
820
+ }>, unknown, z.core.$ZodTypeInternals<Partial<{
821
+ bail: boolean;
822
+ exclude: string[];
823
+ excludeTags: string[];
824
+ iterations: number;
825
+ limitBy: "any" | "time" | "iterations" | "all";
826
+ metadata: Record<string, unknown>;
827
+ pattern: string | string[];
828
+ quiet: boolean;
829
+ reporterConfig: {
830
+ [x: string]: unknown;
831
+ json?: {
832
+ prettyPrint?: boolean | undefined;
833
+ } | undefined;
834
+ };
835
+ reporters: string[];
836
+ tags: string[];
837
+ thresholds: {
838
+ maxMarginOfError?: number | undefined;
839
+ maxMean?: number | undefined;
840
+ maxP95?: number | undefined;
841
+ maxP99?: number | undefined;
842
+ maxStdDev?: number | undefined;
843
+ minOpsPerSecond?: number | undefined;
844
+ };
845
+ time: number;
846
+ timeout: number;
847
+ verbose: boolean;
848
+ warmup: number;
849
+ budgets?: import("../index.js").ResolvedBudgets | undefined;
850
+ $schema?: string | undefined;
851
+ baseline?: string | undefined;
852
+ budgetMode?: "fail" | "warn" | "report" | undefined;
853
+ outputDir?: string | undefined;
854
+ profile?: {
855
+ minExecutionPercent: number;
856
+ smartDetection: boolean;
857
+ topN: number;
858
+ exclude?: string[] | undefined;
859
+ focus?: string[] | undefined;
860
+ minCallCount?: number | undefined;
861
+ outputFile?: string | undefined;
862
+ } | undefined;
863
+ }>, unknown>>>;
864
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
865
+ setup: z.ZodOptional<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>>;
866
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
867
+ teardown: z.ZodOptional<z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>>;
868
+ }, z.core.$strip>>;
869
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
870
+ }, z.core.$strip>, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodCustom<(...args: any[]) => unknown, (...args: any[]) => unknown>>, z.ZodTransform<{
871
+ config: Partial<ModestBenchConfig> | undefined;
872
+ metadata: Record<string, unknown> | undefined;
873
+ suites: {
874
+ default: {
875
+ benchmarks: {
876
+ [k: string]: {
877
+ fn: (...args: any[]) => unknown;
878
+ };
879
+ };
880
+ };
881
+ };
882
+ tags: string[] | undefined;
883
+ }, Record<string, (...args: any[]) => unknown>>>]>;
884
+ /**
885
+ * Benchmark file definition (normalized) - internal representation Always in
886
+ * suite format
887
+ */
888
+ export type BenchmarkDefinition = z.infer<typeof benchmarkFileSchema>;
889
+ /**
890
+ * Benchmark file definition (input) - what users write Can be either flat
891
+ * format (Record<string, function>) or suite format
892
+ */
893
+ export type BenchmarkDefinitionInput = z.input<typeof benchmarkFileSchema>;
894
+ /**
895
+ * Benchmark suite (normalized) - internal representation
896
+ */
897
+ export type BenchmarkSuite = z.infer<typeof benchmarkSuiteSchema>;
898
+ /**
899
+ * Benchmark suite (input) - what users write
900
+ */
901
+ export type BenchmarkSuiteInput = z.input<typeof benchmarkSuiteSchema>;
902
+ /**
903
+ * Benchmark task (normalized) - internal representation Always an object with
904
+ * fn property
905
+ */
906
+ export type BenchmarkTask = z.infer<typeof benchmarkTaskSchema>;
907
+ /**
908
+ * Benchmark task (input) - what users write Can be either a function or an
909
+ * object with fn property
910
+ */
911
+ export type BenchmarkTaskInput = z.input<typeof benchmarkTaskSchema>;
912
+ export {};
913
+ //# sourceMappingURL=benchmark-schema.d.ts.map