modestbench 0.0.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 (275) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE.md +55 -0
  3. package/README.md +699 -0
  4. package/dist/bootstrap.cjs +37 -0
  5. package/dist/bootstrap.cjs.map +1 -0
  6. package/dist/bootstrap.d.cts +17 -0
  7. package/dist/bootstrap.d.cts.map +1 -0
  8. package/dist/bootstrap.d.ts +17 -0
  9. package/dist/bootstrap.d.ts.map +1 -0
  10. package/dist/bootstrap.js +33 -0
  11. package/dist/bootstrap.js.map +1 -0
  12. package/dist/cli/commands/history.cjs +459 -0
  13. package/dist/cli/commands/history.cjs.map +1 -0
  14. package/dist/cli/commands/history.d.cts +34 -0
  15. package/dist/cli/commands/history.d.cts.map +1 -0
  16. package/dist/cli/commands/history.d.ts +34 -0
  17. package/dist/cli/commands/history.d.ts.map +1 -0
  18. package/dist/cli/commands/history.js +422 -0
  19. package/dist/cli/commands/history.js.map +1 -0
  20. package/dist/cli/commands/init.cjs +566 -0
  21. package/dist/cli/commands/init.cjs.map +1 -0
  22. package/dist/cli/commands/init.d.cts +26 -0
  23. package/dist/cli/commands/init.d.cts.map +1 -0
  24. package/dist/cli/commands/init.d.ts +26 -0
  25. package/dist/cli/commands/init.d.ts.map +1 -0
  26. package/dist/cli/commands/init.js +562 -0
  27. package/dist/cli/commands/init.js.map +1 -0
  28. package/dist/cli/commands/run.cjs +285 -0
  29. package/dist/cli/commands/run.cjs.map +1 -0
  30. package/dist/cli/commands/run.d.cts +37 -0
  31. package/dist/cli/commands/run.d.cts.map +1 -0
  32. package/dist/cli/commands/run.d.ts +37 -0
  33. package/dist/cli/commands/run.d.ts.map +1 -0
  34. package/dist/cli/commands/run.js +248 -0
  35. package/dist/cli/commands/run.js.map +1 -0
  36. package/dist/cli/index.cjs +523 -0
  37. package/dist/cli/index.cjs.map +1 -0
  38. package/dist/cli/index.d.cts +58 -0
  39. package/dist/cli/index.d.cts.map +1 -0
  40. package/dist/cli/index.d.ts +58 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +515 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/config/manager.cjs +370 -0
  45. package/dist/config/manager.cjs.map +1 -0
  46. package/dist/config/manager.d.cts +46 -0
  47. package/dist/config/manager.d.cts.map +1 -0
  48. package/dist/config/manager.d.ts +46 -0
  49. package/dist/config/manager.d.ts.map +1 -0
  50. package/dist/config/manager.js +333 -0
  51. package/dist/config/manager.js.map +1 -0
  52. package/dist/config/schema.cjs +182 -0
  53. package/dist/config/schema.cjs.map +1 -0
  54. package/dist/config/schema.d.cts +51 -0
  55. package/dist/config/schema.d.cts.map +1 -0
  56. package/dist/config/schema.d.ts +51 -0
  57. package/dist/config/schema.d.ts.map +1 -0
  58. package/dist/config/schema.js +145 -0
  59. package/dist/config/schema.js.map +1 -0
  60. package/dist/constants.cjs +22 -0
  61. package/dist/constants.cjs.map +1 -0
  62. package/dist/constants.d.cts +10 -0
  63. package/dist/constants.d.cts.map +1 -0
  64. package/dist/constants.d.ts +10 -0
  65. package/dist/constants.d.ts.map +1 -0
  66. package/dist/constants.js +19 -0
  67. package/dist/constants.js.map +1 -0
  68. package/dist/core/benchmark-schema.cjs +135 -0
  69. package/dist/core/benchmark-schema.cjs.map +1 -0
  70. package/dist/core/benchmark-schema.d.cts +139 -0
  71. package/dist/core/benchmark-schema.d.cts.map +1 -0
  72. package/dist/core/benchmark-schema.d.ts +139 -0
  73. package/dist/core/benchmark-schema.d.ts.map +1 -0
  74. package/dist/core/benchmark-schema.js +132 -0
  75. package/dist/core/benchmark-schema.js.map +1 -0
  76. package/dist/core/engine.cjs +669 -0
  77. package/dist/core/engine.cjs.map +1 -0
  78. package/dist/core/engine.d.cts +128 -0
  79. package/dist/core/engine.d.cts.map +1 -0
  80. package/dist/core/engine.d.ts +128 -0
  81. package/dist/core/engine.d.ts.map +1 -0
  82. package/dist/core/engine.js +632 -0
  83. package/dist/core/engine.js.map +1 -0
  84. package/dist/core/engines/accurate-engine.cjs +292 -0
  85. package/dist/core/engines/accurate-engine.cjs.map +1 -0
  86. package/dist/core/engines/accurate-engine.d.cts +63 -0
  87. package/dist/core/engines/accurate-engine.d.cts.map +1 -0
  88. package/dist/core/engines/accurate-engine.d.ts +63 -0
  89. package/dist/core/engines/accurate-engine.d.ts.map +1 -0
  90. package/dist/core/engines/accurate-engine.js +288 -0
  91. package/dist/core/engines/accurate-engine.js.map +1 -0
  92. package/dist/core/engines/index.cjs +21 -0
  93. package/dist/core/engines/index.cjs.map +1 -0
  94. package/dist/core/engines/index.d.cts +16 -0
  95. package/dist/core/engines/index.d.cts.map +1 -0
  96. package/dist/core/engines/index.d.ts +16 -0
  97. package/dist/core/engines/index.d.ts.map +1 -0
  98. package/dist/core/engines/index.js +16 -0
  99. package/dist/core/engines/index.js.map +1 -0
  100. package/dist/core/engines/tinybench-engine.cjs +286 -0
  101. package/dist/core/engines/tinybench-engine.cjs.map +1 -0
  102. package/dist/core/engines/tinybench-engine.d.cts +18 -0
  103. package/dist/core/engines/tinybench-engine.d.cts.map +1 -0
  104. package/dist/core/engines/tinybench-engine.d.ts +18 -0
  105. package/dist/core/engines/tinybench-engine.d.ts.map +1 -0
  106. package/dist/core/engines/tinybench-engine.js +282 -0
  107. package/dist/core/engines/tinybench-engine.js.map +1 -0
  108. package/dist/core/error-manager.cjs +303 -0
  109. package/dist/core/error-manager.cjs.map +1 -0
  110. package/dist/core/error-manager.d.cts +77 -0
  111. package/dist/core/error-manager.d.cts.map +1 -0
  112. package/dist/core/error-manager.d.ts +77 -0
  113. package/dist/core/error-manager.d.ts.map +1 -0
  114. package/dist/core/error-manager.js +299 -0
  115. package/dist/core/error-manager.js.map +1 -0
  116. package/dist/core/loader.cjs +287 -0
  117. package/dist/core/loader.cjs.map +1 -0
  118. package/dist/core/loader.d.cts +55 -0
  119. package/dist/core/loader.d.cts.map +1 -0
  120. package/dist/core/loader.d.ts +55 -0
  121. package/dist/core/loader.d.ts.map +1 -0
  122. package/dist/core/loader.js +250 -0
  123. package/dist/core/loader.js.map +1 -0
  124. package/dist/core/stats-utils.cjs +99 -0
  125. package/dist/core/stats-utils.cjs.map +1 -0
  126. package/dist/core/stats-utils.d.cts +50 -0
  127. package/dist/core/stats-utils.d.cts.map +1 -0
  128. package/dist/core/stats-utils.d.ts +50 -0
  129. package/dist/core/stats-utils.d.ts.map +1 -0
  130. package/dist/core/stats-utils.js +94 -0
  131. package/dist/core/stats-utils.js.map +1 -0
  132. package/dist/index.cjs +64 -0
  133. package/dist/index.cjs.map +1 -0
  134. package/dist/index.d.cts +22 -0
  135. package/dist/index.d.cts.map +1 -0
  136. package/dist/index.d.ts +22 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +30 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/progress/manager.cjs +325 -0
  141. package/dist/progress/manager.cjs.map +1 -0
  142. package/dist/progress/manager.d.cts +125 -0
  143. package/dist/progress/manager.d.cts.map +1 -0
  144. package/dist/progress/manager.d.ts +125 -0
  145. package/dist/progress/manager.d.ts.map +1 -0
  146. package/dist/progress/manager.js +321 -0
  147. package/dist/progress/manager.js.map +1 -0
  148. package/dist/reporters/csv.cjs +250 -0
  149. package/dist/reporters/csv.cjs.map +1 -0
  150. package/dist/reporters/csv.d.cts +92 -0
  151. package/dist/reporters/csv.d.cts.map +1 -0
  152. package/dist/reporters/csv.d.ts +92 -0
  153. package/dist/reporters/csv.d.ts.map +1 -0
  154. package/dist/reporters/csv.js +246 -0
  155. package/dist/reporters/csv.js.map +1 -0
  156. package/dist/reporters/human.cjs +516 -0
  157. package/dist/reporters/human.cjs.map +1 -0
  158. package/dist/reporters/human.d.cts +86 -0
  159. package/dist/reporters/human.d.cts.map +1 -0
  160. package/dist/reporters/human.d.ts +86 -0
  161. package/dist/reporters/human.d.ts.map +1 -0
  162. package/dist/reporters/human.js +509 -0
  163. package/dist/reporters/human.js.map +1 -0
  164. package/dist/reporters/index.cjs +17 -0
  165. package/dist/reporters/index.cjs.map +1 -0
  166. package/dist/reporters/index.d.cts +10 -0
  167. package/dist/reporters/index.d.cts.map +1 -0
  168. package/dist/reporters/index.d.ts +10 -0
  169. package/dist/reporters/index.d.ts.map +1 -0
  170. package/dist/reporters/index.js +10 -0
  171. package/dist/reporters/index.js.map +1 -0
  172. package/dist/reporters/json.cjs +215 -0
  173. package/dist/reporters/json.cjs.map +1 -0
  174. package/dist/reporters/json.d.cts +79 -0
  175. package/dist/reporters/json.d.cts.map +1 -0
  176. package/dist/reporters/json.d.ts +79 -0
  177. package/dist/reporters/json.d.ts.map +1 -0
  178. package/dist/reporters/json.js +211 -0
  179. package/dist/reporters/json.js.map +1 -0
  180. package/dist/reporters/registry.cjs +255 -0
  181. package/dist/reporters/registry.cjs.map +1 -0
  182. package/dist/reporters/registry.d.cts +155 -0
  183. package/dist/reporters/registry.d.cts.map +1 -0
  184. package/dist/reporters/registry.d.ts +155 -0
  185. package/dist/reporters/registry.d.ts.map +1 -0
  186. package/dist/reporters/registry.js +249 -0
  187. package/dist/reporters/registry.js.map +1 -0
  188. package/dist/reporters/simple.cjs +328 -0
  189. package/dist/reporters/simple.cjs.map +1 -0
  190. package/dist/reporters/simple.d.cts +51 -0
  191. package/dist/reporters/simple.d.cts.map +1 -0
  192. package/dist/reporters/simple.d.ts +51 -0
  193. package/dist/reporters/simple.d.ts.map +1 -0
  194. package/dist/reporters/simple.js +321 -0
  195. package/dist/reporters/simple.js.map +1 -0
  196. package/dist/schema/modestbench-config.schema.json +162 -0
  197. package/dist/storage/history.cjs +456 -0
  198. package/dist/storage/history.cjs.map +1 -0
  199. package/dist/storage/history.d.cts +99 -0
  200. package/dist/storage/history.d.cts.map +1 -0
  201. package/dist/storage/history.d.ts +99 -0
  202. package/dist/storage/history.d.ts.map +1 -0
  203. package/dist/storage/history.js +452 -0
  204. package/dist/storage/history.js.map +1 -0
  205. package/dist/types/cli.cjs +21 -0
  206. package/dist/types/cli.cjs.map +1 -0
  207. package/dist/types/cli.d.cts +296 -0
  208. package/dist/types/cli.d.cts.map +1 -0
  209. package/dist/types/cli.d.ts +296 -0
  210. package/dist/types/cli.d.ts.map +1 -0
  211. package/dist/types/cli.js +18 -0
  212. package/dist/types/cli.js.map +1 -0
  213. package/dist/types/core.cjs +14 -0
  214. package/dist/types/core.cjs.map +1 -0
  215. package/dist/types/core.d.cts +380 -0
  216. package/dist/types/core.d.cts.map +1 -0
  217. package/dist/types/core.d.ts +380 -0
  218. package/dist/types/core.d.ts.map +1 -0
  219. package/dist/types/core.js +13 -0
  220. package/dist/types/core.js.map +1 -0
  221. package/dist/types/index.cjs +27 -0
  222. package/dist/types/index.cjs.map +1 -0
  223. package/dist/types/index.d.cts +11 -0
  224. package/dist/types/index.d.cts.map +1 -0
  225. package/dist/types/index.d.ts +11 -0
  226. package/dist/types/index.d.ts.map +1 -0
  227. package/dist/types/index.js +11 -0
  228. package/dist/types/index.js.map +1 -0
  229. package/dist/types/interfaces.cjs +10 -0
  230. package/dist/types/interfaces.cjs.map +1 -0
  231. package/dist/types/interfaces.d.cts +381 -0
  232. package/dist/types/interfaces.d.cts.map +1 -0
  233. package/dist/types/interfaces.d.ts +381 -0
  234. package/dist/types/interfaces.d.ts.map +1 -0
  235. package/dist/types/interfaces.js +9 -0
  236. package/dist/types/interfaces.js.map +1 -0
  237. package/dist/types/utility.cjs +92 -0
  238. package/dist/types/utility.cjs.map +1 -0
  239. package/dist/types/utility.d.cts +330 -0
  240. package/dist/types/utility.d.cts.map +1 -0
  241. package/dist/types/utility.d.ts +330 -0
  242. package/dist/types/utility.d.ts.map +1 -0
  243. package/dist/types/utility.js +78 -0
  244. package/dist/types/utility.js.map +1 -0
  245. package/package.json +211 -0
  246. package/src/bootstrap.ts +35 -0
  247. package/src/cli/commands/history.ts +569 -0
  248. package/src/cli/commands/init.ts +658 -0
  249. package/src/cli/commands/run.ts +346 -0
  250. package/src/cli/index.ts +642 -0
  251. package/src/config/manager.ts +387 -0
  252. package/src/config/schema.ts +188 -0
  253. package/src/constants.ts +21 -0
  254. package/src/core/benchmark-schema.ts +185 -0
  255. package/src/core/engine.ts +888 -0
  256. package/src/core/engines/accurate-engine.ts +408 -0
  257. package/src/core/engines/index.ts +16 -0
  258. package/src/core/engines/tinybench-engine.ts +335 -0
  259. package/src/core/error-manager.ts +372 -0
  260. package/src/core/loader.ts +324 -0
  261. package/src/core/stats-utils.ts +135 -0
  262. package/src/index.ts +46 -0
  263. package/src/progress/manager.ts +415 -0
  264. package/src/reporters/csv.ts +368 -0
  265. package/src/reporters/human.ts +707 -0
  266. package/src/reporters/index.ts +10 -0
  267. package/src/reporters/json.ts +302 -0
  268. package/src/reporters/registry.ts +349 -0
  269. package/src/reporters/simple.ts +459 -0
  270. package/src/storage/history.ts +600 -0
  271. package/src/types/cli.ts +312 -0
  272. package/src/types/core.ts +414 -0
  273. package/src/types/index.ts +18 -0
  274. package/src/types/interfaces.ts +451 -0
  275. package/src/types/utility.ts +446 -0
@@ -0,0 +1,381 @@
1
+ /**
2
+ * ModestBench Interface Types
3
+ *
4
+ * Defines the contract interfaces for all major components in the ModestBench
5
+ * system. These interfaces establish the public APIs that implementations must
6
+ * satisfy.
7
+ */
8
+ import type { BenchmarkFile, BenchmarkRun, ErrorContext, ErrorStats, ExecutionError, FileResult, ModestBenchConfig, SuiteResult, TaskResult } from "./core.js";
9
+ /**
10
+ * Main benchmark engine interface
11
+ */
12
+ export interface BenchmarkEngine {
13
+ /**
14
+ * Discover benchmark files matching patterns
15
+ */
16
+ discover(pattern: string | string[], exclude?: string[]): Promise<string[]>;
17
+ /**
18
+ * Execute benchmarks with the given configuration
19
+ */
20
+ execute(config: RunConfiguration, reporters?: Reporter[], signal?: AbortSignal): Promise<BenchmarkRun>;
21
+ /**
22
+ * Get all registered reporters
23
+ */
24
+ getReporters(): Record<string, Reporter>;
25
+ /**
26
+ * Register a reporter for benchmark output
27
+ */
28
+ registerReporter(name: string, reporter: Reporter): void;
29
+ /**
30
+ * Validate benchmark files
31
+ */
32
+ validate(files: string[]): Promise<ValidationResult>;
33
+ }
34
+ /**
35
+ * Result of a cleanup operation
36
+ */
37
+ export interface CleanupResult {
38
+ /** Amount of disk space freed in bytes */
39
+ readonly freedBytes: number;
40
+ /** Files that were removed */
41
+ readonly removedFiles: string[];
42
+ /** Number of runs removed */
43
+ readonly removedRuns: number;
44
+ }
45
+ /**
46
+ * Configuration management interface
47
+ */
48
+ export interface ConfigurationManager {
49
+ /**
50
+ * Get default configuration values
51
+ */
52
+ getDefaults(): ModestBenchConfig;
53
+ /**
54
+ * Load configuration from various sources
55
+ */
56
+ load(configPath?: string, cliArgs?: Record<string, unknown>): Promise<ModestBenchConfig>;
57
+ /**
58
+ * Merge multiple configuration objects with precedence
59
+ */
60
+ merge(...configs: Partial<ModestBenchConfig>[]): ModestBenchConfig;
61
+ /**
62
+ * Validate a configuration object
63
+ */
64
+ validate(config: Partial<ModestBenchConfig>): ValidationResult;
65
+ }
66
+ /**
67
+ * CSV output reporter interface
68
+ */
69
+ export interface CsvReporter extends Reporter {
70
+ /** CSV delimiter character */
71
+ readonly delimiter: string;
72
+ /** Include CSV headers */
73
+ readonly includeHeaders: boolean;
74
+ }
75
+ /**
76
+ * Error management interface for handling execution errors
77
+ */
78
+ export interface ErrorManager {
79
+ /**
80
+ * Clear error history
81
+ */
82
+ clearStats(): void;
83
+ /**
84
+ * Format error for display
85
+ */
86
+ formatError(error: ExecutionError): string;
87
+ /**
88
+ * Get error code for a given error
89
+ */
90
+ getErrorCode(error: Error, context: ErrorContext): string;
91
+ /**
92
+ * Get error statistics
93
+ */
94
+ getStats(): ErrorStats;
95
+ /**
96
+ * Handle an execution error
97
+ */
98
+ handleError(error: Error, context: ErrorContext): ExecutionError;
99
+ /**
100
+ * Check if an error is recoverable
101
+ */
102
+ isRecoverable(error: ExecutionError): boolean;
103
+ /**
104
+ * Register error handler callback
105
+ */
106
+ onError(handler: (error: ExecutionError) => void): void;
107
+ }
108
+ /**
109
+ * File loader interface for benchmark discovery and loading
110
+ */
111
+ export interface FileLoader {
112
+ /**
113
+ * Discover benchmark files matching patterns
114
+ */
115
+ discover(pattern: string | string[], exclude?: string[]): Promise<string[]>;
116
+ /**
117
+ * Load a benchmark file
118
+ */
119
+ load(filePath: string): Promise<BenchmarkFile>;
120
+ /**
121
+ * Validate a benchmark file
122
+ */
123
+ validate(filePath: string): Promise<ValidationResult>;
124
+ }
125
+ /**
126
+ * Query interface for historical benchmark data
127
+ */
128
+ export interface HistoryQuery {
129
+ /** Maximum number of results */
130
+ readonly limit?: number;
131
+ /** Results offset for pagination */
132
+ readonly offset?: number;
133
+ /** Pattern to match benchmark names */
134
+ readonly pattern?: string;
135
+ /** Start date for filtering */
136
+ readonly since?: Date;
137
+ /** Sort order */
138
+ readonly sort?: 'asc' | 'desc';
139
+ /** Field to sort by */
140
+ readonly sortBy?: 'date' | 'duration' | 'name';
141
+ /** Tags to filter by */
142
+ readonly tags?: string[];
143
+ /** End date for filtering */
144
+ readonly until?: Date;
145
+ }
146
+ /**
147
+ * Historical data storage interface
148
+ */
149
+ export interface HistoryStorage {
150
+ /**
151
+ * Clean up old data according to retention policy
152
+ */
153
+ cleanup(policy: RetentionPolicy): Promise<CleanupResult>;
154
+ /**
155
+ * Export historical data
156
+ */
157
+ export(format: 'csv' | 'json', query?: HistoryQuery): Promise<string>;
158
+ /**
159
+ * Get index of all stored runs
160
+ */
161
+ getIndex(): Promise<Array<{
162
+ date: Date;
163
+ id: string;
164
+ summary: string;
165
+ }>>;
166
+ /**
167
+ * Load a specific benchmark run
168
+ */
169
+ loadRun(id: string): Promise<BenchmarkRun | null>;
170
+ /**
171
+ * Query historical runs
172
+ */
173
+ queryRuns(query: HistoryQuery): Promise<BenchmarkRun[]>;
174
+ /**
175
+ * Save a benchmark run to storage
176
+ */
177
+ saveRun(run: BenchmarkRun): Promise<void>;
178
+ }
179
+ /**
180
+ * Human-readable reporter interface
181
+ */
182
+ export interface HumanReporter extends Reporter {
183
+ /** Displays progress bars */
184
+ readonly showProgress: boolean;
185
+ /** Uses colors and formatting for terminal output */
186
+ readonly supportsColor: boolean;
187
+ }
188
+ /**
189
+ * JSON output reporter interface
190
+ */
191
+ export interface JsonReporter extends Reporter {
192
+ /** Pretty-print JSON output */
193
+ readonly prettyPrint: boolean;
194
+ /** Supports streaming output */
195
+ readonly streaming: boolean;
196
+ }
197
+ /**
198
+ * Progress management interface
199
+ */
200
+ export interface ProgressManager {
201
+ /**
202
+ * Clean up progress tracking resources
203
+ */
204
+ cleanup(): void;
205
+ /**
206
+ * Estimate completion time
207
+ */
208
+ estimateCompletion(): Date | null;
209
+ /**
210
+ * Force an immediate progress update (bypassing throttling)
211
+ */
212
+ forceUpdate(): void;
213
+ /**
214
+ * Get current progress state
215
+ */
216
+ getState(): ProgressState;
217
+ /**
218
+ * Initialize progress tracking for a benchmark run
219
+ */
220
+ initialize(run: BenchmarkRun): void;
221
+ /**
222
+ * Register a callback for progress updates
223
+ */
224
+ onProgress(callback: (state: ProgressState) => void): void;
225
+ /**
226
+ * Update progress state
227
+ */
228
+ update(state: Partial<ProgressState>): void;
229
+ }
230
+ /**
231
+ * Progress tracking state
232
+ */
233
+ export interface ProgressState {
234
+ /** Current file being processed */
235
+ readonly currentFile?: string;
236
+ /** Current suite being processed */
237
+ readonly currentSuite?: string;
238
+ /** Current task being processed */
239
+ readonly currentTask?: string;
240
+ /** Elapsed time in milliseconds */
241
+ readonly elapsed: number;
242
+ /** Number of files completed */
243
+ readonly filesCompleted: number;
244
+ /** Progress percentage (0-100) */
245
+ readonly percentage: number;
246
+ /** Number of suites completed */
247
+ readonly suitesCompleted: number;
248
+ /** Number of tasks completed */
249
+ readonly tasksCompleted: number;
250
+ /** Total number of files */
251
+ readonly totalFiles: number;
252
+ /** Total number of suites */
253
+ readonly totalSuites: number;
254
+ /** Total number of tasks */
255
+ readonly totalTasks: number;
256
+ }
257
+ /**
258
+ * Base reporter interface for benchmark output
259
+ */
260
+ export interface Reporter {
261
+ /**
262
+ * Called when benchmark run completes
263
+ */
264
+ onEnd(run: BenchmarkRun): Promise<void> | void;
265
+ /**
266
+ * Called when an error occurs
267
+ */
268
+ onError(error: Error): Promise<void> | void;
269
+ /**
270
+ * Called when a file completes
271
+ */
272
+ onFileEnd(result: FileResult): Promise<void> | void;
273
+ /**
274
+ * Called when a file starts execution
275
+ */
276
+ onFileStart(file: string): Promise<void> | void;
277
+ /**
278
+ * Called for progress updates
279
+ */
280
+ onProgress(state: ProgressState): Promise<void> | void;
281
+ /**
282
+ * Called when benchmark run starts
283
+ */
284
+ onStart(run: BenchmarkRun): Promise<void> | void;
285
+ /**
286
+ * Called when a suite completes
287
+ */
288
+ onSuiteEnd(result: SuiteResult): Promise<void> | void;
289
+ /**
290
+ * Called when a suite starts execution
291
+ */
292
+ onSuiteStart(suite: string): Promise<void> | void;
293
+ /**
294
+ * Called when a task completes
295
+ */
296
+ onTaskResult(result: TaskResult): Promise<void> | void;
297
+ /**
298
+ * Called when a task starts execution
299
+ */
300
+ onTaskStart(task: string): Promise<void> | void;
301
+ }
302
+ /**
303
+ * Reporter registry interface
304
+ */
305
+ export interface ReporterRegistry {
306
+ /**
307
+ * Get a reporter by name
308
+ */
309
+ get(name: string): Reporter | undefined;
310
+ /**
311
+ * Get all registered reporters
312
+ */
313
+ getAll(): Record<string, Reporter>;
314
+ /**
315
+ * Get reporters by multiple names
316
+ */
317
+ getByNames(names: string[]): Reporter[];
318
+ /**
319
+ * Register a reporter
320
+ */
321
+ register(name: string, reporter: Reporter): void;
322
+ }
323
+ /**
324
+ * Retention policy for historical data
325
+ */
326
+ export interface RetentionPolicy {
327
+ /** Maximum age of data to keep */
328
+ readonly maxAge?: number;
329
+ /** Maximum number of runs to keep */
330
+ readonly maxRuns?: number;
331
+ /** Maximum size of history data in bytes */
332
+ readonly maxSize?: number;
333
+ }
334
+ /**
335
+ * Configuration for a benchmark run execution
336
+ */
337
+ export interface RunConfiguration extends Partial<ModestBenchConfig> {
338
+ /** Working directory for execution */
339
+ readonly cwd?: string;
340
+ /** Environment variables to set */
341
+ readonly env?: Record<string, string>;
342
+ /** Files to execute (overrides pattern discovery) */
343
+ readonly files?: string[];
344
+ }
345
+ /**
346
+ * A validation error
347
+ */
348
+ export interface ValidationError {
349
+ /** Error code for programmatic handling */
350
+ readonly code: string;
351
+ /** Column number where error occurred */
352
+ readonly column?: number;
353
+ /** File where error occurred */
354
+ readonly file: string;
355
+ /** Line number where error occurred */
356
+ readonly line?: number;
357
+ /** Error message */
358
+ readonly message: string;
359
+ /** Severity level */
360
+ readonly severity: 'error' | 'warning';
361
+ }
362
+ /**
363
+ * Result of a validation operation
364
+ */
365
+ export interface ValidationResult {
366
+ /** Validation errors found */
367
+ readonly errors: ValidationError[];
368
+ /** Files that were validated */
369
+ readonly files: string[];
370
+ /** Whether validation passed */
371
+ readonly valid: boolean;
372
+ /** Validation warnings */
373
+ readonly warnings: ValidationWarning[];
374
+ }
375
+ /**
376
+ * A validation warning
377
+ */
378
+ export interface ValidationWarning extends ValidationError {
379
+ readonly severity: 'warning';
380
+ }
381
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/types/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * ModestBench Interface Types
3
+ *
4
+ * Defines the contract interfaces for all major components in the ModestBench
5
+ * system. These interfaces establish the public APIs that implementations must
6
+ * satisfy.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/types/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Utility Types
4
+ *
5
+ * Defines utility types, helper functions, and common type transformations used
6
+ * throughout the ModestBench system.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.unbrand = exports.brand = exports.assertDefined = exports.failure = exports.success = exports.isNonEmptyArray = exports.isInteger = exports.isNonNegativeNumber = exports.isPositiveNumber = exports.isNonEmptyString = exports.isDefined = void 0;
10
+ /**
11
+ * Type predicate for checking if value is not null or undefined
12
+ */
13
+ const isDefined = (value) => {
14
+ return value !== null && value !== undefined;
15
+ };
16
+ exports.isDefined = isDefined;
17
+ /**
18
+ * Type predicate for checking if value is a non-empty string
19
+ */
20
+ const isNonEmptyString = (value) => {
21
+ return typeof value === 'string' && value.length > 0;
22
+ };
23
+ exports.isNonEmptyString = isNonEmptyString;
24
+ /**
25
+ * Type predicate for checking if value is a positive number
26
+ */
27
+ const isPositiveNumber = (value) => {
28
+ return typeof value === 'number' && value > 0 && !Number.isNaN(value);
29
+ };
30
+ exports.isPositiveNumber = isPositiveNumber;
31
+ /**
32
+ * Type predicate for checking if value is a non-negative number
33
+ */
34
+ const isNonNegativeNumber = (value) => {
35
+ return typeof value === 'number' && value >= 0 && !Number.isNaN(value);
36
+ };
37
+ exports.isNonNegativeNumber = isNonNegativeNumber;
38
+ /**
39
+ * Type predicate for checking if value is an integer
40
+ */
41
+ const isInteger = (value) => {
42
+ return typeof value === 'number' && Number.isInteger(value);
43
+ };
44
+ exports.isInteger = isInteger;
45
+ /**
46
+ * Type predicate for checking if array is non-empty
47
+ */
48
+ const isNonEmptyArray = (value) => {
49
+ return value.length > 0;
50
+ };
51
+ exports.isNonEmptyArray = isNonEmptyArray;
52
+ /**
53
+ * Creates a Result success value
54
+ */
55
+ const success = (data) => ({
56
+ data,
57
+ success: true,
58
+ });
59
+ exports.success = success;
60
+ /**
61
+ * Creates a Result error value
62
+ */
63
+ const failure = (error) => ({
64
+ error,
65
+ success: false,
66
+ });
67
+ exports.failure = failure;
68
+ /**
69
+ * Type assertion that a value is defined (throws if not)
70
+ */
71
+ const assertDefined = (value, message) => {
72
+ if (!(0, exports.isDefined)(value)) {
73
+ throw new Error(message ?? 'Value is null or undefined');
74
+ }
75
+ return value;
76
+ };
77
+ exports.assertDefined = assertDefined;
78
+ /**
79
+ * Creates a branded type value
80
+ */
81
+ const brand = (value) => {
82
+ return value;
83
+ };
84
+ exports.brand = brand;
85
+ /**
86
+ * Removes brand from a branded type
87
+ */
88
+ const unbrand = (value) => {
89
+ return value;
90
+ };
91
+ exports.unbrand = unbrand;
92
+ //# sourceMappingURL=utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/types/utility.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiWH;;GAEG;AACI,MAAM,SAAS,GAAG,CAAI,KAA2B,EAAc,EAAE;IACtE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEF;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE;IAC1E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEF;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE;IAC1E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEF;;GAEG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAc,EACc,EAAE;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEF;;GAEG;AACI,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEF;;GAEG;AACI,MAAM,eAAe,GAAG,CAAI,KAAU,EAA6B,EAAE;IAC1E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEF;;GAEG;AACI,MAAM,OAAO,GAAG,CAAI,IAAO,EAAoB,EAAE,CAAC,CAAC;IACxD,IAAI;IACJ,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAHU,QAAA,OAAO,WAGjB;AAEH;;GAEG;AACI,MAAM,OAAO,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC;IACzD,KAAK;IACL,OAAO,EAAE,KAAK;CACf,CAAC,CAAC;AAHU,QAAA,OAAO,WAGjB;AAEH;;GAEG;AACI,MAAM,aAAa,GAAG,CAC3B,KAA2B,EAC3B,OAAgB,EACb,EAAE;IACL,IAAI,CAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;AAEF;;GAEG;AACI,MAAM,KAAK,GAAG,CAA2B,KAAQ,EAAoB,EAAE;IAC5E,OAAO,KAAyB,CAAC;AACnC,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEF;;GAEG;AACI,MAAM,OAAO,GAAG,CACrB,KAAuB,EACpB,EAAE;IACL,OAAO,KAAU,CAAC;AACpB,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB"}