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,249 @@
1
+ /**
2
+ * ModestBench Reporter Registry
3
+ *
4
+ * Plugin-based system for managing benchmark output formatters. Supports
5
+ * registration, retrieval, and lifecycle management of reporters.
6
+ */
7
+ /**
8
+ * Base abstract reporter class providing common functionality
9
+ */
10
+ export class BaseReporter {
11
+ name;
12
+ options;
13
+ constructor(name, options = {}) {
14
+ this.name = name;
15
+ this.options = options;
16
+ }
17
+ /**
18
+ * Get reporter name
19
+ */
20
+ getName() {
21
+ return this.name;
22
+ }
23
+ /**
24
+ * Get reporter options
25
+ */
26
+ getOptions() {
27
+ return { ...this.options };
28
+ }
29
+ /**
30
+ * Utility method to format duration in human-readable format
31
+ */
32
+ formatDuration(nanoseconds) {
33
+ if (nanoseconds < 1000) {
34
+ return `${nanoseconds.toFixed(2)}ns`;
35
+ }
36
+ else if (nanoseconds < 1000000) {
37
+ return `${(nanoseconds / 1000).toFixed(2)}μs`;
38
+ }
39
+ else if (nanoseconds < 1000000000) {
40
+ return `${(nanoseconds / 1000000).toFixed(2)}ms`;
41
+ }
42
+ else {
43
+ return `${(nanoseconds / 1000000000).toFixed(2)}s`;
44
+ }
45
+ }
46
+ /**
47
+ * Utility method to format operations per second
48
+ */
49
+ formatOpsPerSecond(opsPerSecond) {
50
+ if (opsPerSecond < 1000) {
51
+ return `${opsPerSecond.toFixed(2)} ops/sec`;
52
+ }
53
+ else if (opsPerSecond < 1000000) {
54
+ return `${(opsPerSecond / 1000).toFixed(2)}K ops/sec`;
55
+ }
56
+ else if (opsPerSecond < 1000000000) {
57
+ return `${(opsPerSecond / 1000000).toFixed(2)}M ops/sec`;
58
+ }
59
+ else {
60
+ return `${(opsPerSecond / 1000000000).toFixed(2)}B ops/sec`;
61
+ }
62
+ }
63
+ /**
64
+ * Utility method to format percentage
65
+ */
66
+ formatPercentage(value) {
67
+ return `${value.toFixed(2)}%`;
68
+ }
69
+ /**
70
+ * Utility method to safely handle async operations
71
+ */
72
+ async safeAsync(operation) {
73
+ try {
74
+ return await operation();
75
+ }
76
+ catch (error) {
77
+ await this.onError(error instanceof Error ? error : new Error(String(error)));
78
+ return null;
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Composite reporter that broadcasts events to multiple reporters
84
+ */
85
+ export class CompositeReporter extends BaseReporter {
86
+ reporters;
87
+ constructor(reporters) {
88
+ super('composite', {});
89
+ this.reporters = [...reporters];
90
+ }
91
+ /**
92
+ * Add a reporter to the composite
93
+ */
94
+ addReporter(reporter) {
95
+ this.reporters.push(reporter);
96
+ }
97
+ /**
98
+ * Get all reporters in the composite
99
+ */
100
+ getReporters() {
101
+ return [...this.reporters];
102
+ }
103
+ async onEnd(run) {
104
+ await this.broadcastAsync('onEnd', run);
105
+ }
106
+ async onError(error) {
107
+ await this.broadcastAsync('onError', error);
108
+ }
109
+ async onFileEnd(result) {
110
+ await this.broadcastAsync('onFileEnd', result);
111
+ }
112
+ async onFileStart(file) {
113
+ await this.broadcastAsync('onFileStart', file);
114
+ }
115
+ async onProgress(state) {
116
+ await this.broadcastAsync('onProgress', state);
117
+ }
118
+ async onStart(run) {
119
+ await this.broadcastAsync('onStart', run);
120
+ }
121
+ async onSuiteEnd(result) {
122
+ await this.broadcastAsync('onSuiteEnd', result);
123
+ }
124
+ async onSuiteStart(suite) {
125
+ await this.broadcastAsync('onSuiteStart', suite);
126
+ }
127
+ async onTaskResult(result) {
128
+ await this.broadcastAsync('onTaskResult', result);
129
+ }
130
+ async onTaskStart(task) {
131
+ await this.broadcastAsync('onTaskStart', task);
132
+ }
133
+ /**
134
+ * Remove a reporter from the composite
135
+ */
136
+ removeReporter(reporter) {
137
+ const index = this.reporters.indexOf(reporter);
138
+ if (index >= 0) {
139
+ this.reporters.splice(index, 1);
140
+ return true;
141
+ }
142
+ return false;
143
+ }
144
+ /**
145
+ * Broadcast an event to all reporters with error handling
146
+ */
147
+ async broadcastAsync(method, ...args) {
148
+ const promises = this.reporters.map(async (reporter) => {
149
+ try {
150
+ const reporterMethod = reporter[method];
151
+ if (typeof reporterMethod === 'function') {
152
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
153
+ const result = reporterMethod(...args);
154
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
155
+ if (result && typeof result.then === 'function') {
156
+ await result;
157
+ }
158
+ }
159
+ }
160
+ catch (error) {
161
+ // Handle reporter-specific errors without affecting others
162
+ console.error(`Reporter error in ${reporter.constructor.name}.${method}:`, error);
163
+ }
164
+ });
165
+ await Promise.all(promises);
166
+ }
167
+ }
168
+ /**
169
+ * Reporter registry implementation for managing multiple reporters
170
+ */
171
+ export class ModestBenchReporterRegistry {
172
+ reporters = new Map();
173
+ /**
174
+ * Clear all registered reporters
175
+ */
176
+ clear() {
177
+ this.reporters.clear();
178
+ }
179
+ /**
180
+ * Get a reporter by name
181
+ */
182
+ get(name) {
183
+ return this.reporters.get(name);
184
+ }
185
+ /**
186
+ * Get all registered reporters
187
+ */
188
+ getAll() {
189
+ const result = {};
190
+ this.reporters.forEach((reporter, name) => {
191
+ result[name] = reporter;
192
+ });
193
+ return result;
194
+ }
195
+ /**
196
+ * Get multiple reporters by names
197
+ */
198
+ getByNames(names) {
199
+ const result = [];
200
+ const missing = [];
201
+ for (const name of names) {
202
+ const reporter = this.reporters.get(name);
203
+ if (reporter) {
204
+ result.push(reporter);
205
+ }
206
+ else {
207
+ missing.push(name);
208
+ }
209
+ }
210
+ if (missing.length > 0) {
211
+ throw new Error(`Unknown reporters: ${missing.join(', ')}. Available: ${Array.from(this.reporters.keys()).join(', ')}`);
212
+ }
213
+ return result;
214
+ }
215
+ /**
216
+ * Get list of registered reporter names
217
+ */
218
+ getNames() {
219
+ return Array.from(this.reporters.keys());
220
+ }
221
+ /**
222
+ * Check if a reporter is registered
223
+ */
224
+ has(name) {
225
+ return this.reporters.has(name);
226
+ }
227
+ /**
228
+ * Register a reporter with a unique name
229
+ */
230
+ register(name, reporter) {
231
+ if (this.reporters.has(name)) {
232
+ throw new Error(`Reporter with name "${name}" is already registered`);
233
+ }
234
+ this.reporters.set(name, reporter);
235
+ }
236
+ /**
237
+ * Get count of registered reporters
238
+ */
239
+ size() {
240
+ return this.reporters.size;
241
+ }
242
+ /**
243
+ * Unregister a reporter
244
+ */
245
+ unregister(name) {
246
+ return this.reporters.delete(name);
247
+ }
248
+ }
249
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/reporters/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Simple Console Reporter
4
+ *
5
+ * Provides plain text output without colors, ANSI codes, or decorative
6
+ * elements. Ideal for CI/CD environments, piping, or non-TTY outputs.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SimpleReporter = void 0;
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ const registry_js_1 = require("./registry.cjs");
15
+ /**
16
+ * Basic symbols for plain text output
17
+ */
18
+ const symbols = {
19
+ approx: '≈',
20
+ checkmark: '√',
21
+ cross: '×',
22
+ plusMinus: '±',
23
+ };
24
+ /**
25
+ * Simple console reporter with plain text output (no colors or progress bars)
26
+ */
27
+ class SimpleReporter extends registry_js_1.BaseReporter {
28
+ currentFile = '';
29
+ currentSuite = '';
30
+ failures = [];
31
+ quiet;
32
+ startTime = 0;
33
+ suiteResults = [];
34
+ verbose;
35
+ constructor(options = {}) {
36
+ super('simple', options);
37
+ this.verbose = options.verbose ?? false;
38
+ this.quiet = options.quiet ?? false;
39
+ }
40
+ onEnd(run) {
41
+ if (this.quiet) {
42
+ return;
43
+ }
44
+ const duration = Date.now() - this.startTime;
45
+ const totalFiles = run.files.length;
46
+ // Calculate totals across all files
47
+ let totalSuites = 0;
48
+ let totalPassed = 0;
49
+ let totalFailed = 0;
50
+ for (const file of run.files) {
51
+ totalSuites += file.suites.length;
52
+ for (const suite of file.suites) {
53
+ totalPassed += suite.tasks.filter((t) => !t.error).length;
54
+ totalFailed += suite.tasks.filter((t) => t.error).length;
55
+ }
56
+ }
57
+ // Results header
58
+ console.log('== Results');
59
+ console.log();
60
+ if (totalFailed > 0) {
61
+ console.log(`${symbols.cross} Failed: ${totalFailed}`);
62
+ console.log(`${symbols.checkmark} Passed: ${totalPassed}`);
63
+ }
64
+ else {
65
+ console.log(`${symbols.checkmark} All tests passed: ${totalPassed}`);
66
+ }
67
+ console.log(`- Files: ${totalFiles}`);
68
+ console.log(`- Suites: ${totalSuites}`);
69
+ console.log(`${symbols.approx} Duration: ${this.formatDuration(duration * 1e6)}`);
70
+ console.log();
71
+ if (totalFailed > 0) {
72
+ console.log(`${symbols.cross.repeat(3)} Some benchmarks failed`);
73
+ // Display failed tasks with details
74
+ if (this.failures.length > 0) {
75
+ console.log();
76
+ console.log('Failed Tasks:');
77
+ console.log();
78
+ for (const failure of this.failures) {
79
+ const displayPath = this.formatPath(failure.file);
80
+ console.log(` ${displayPath} > ${failure.suite} > ${failure.task}`);
81
+ console.log(` ${failure.error}`);
82
+ console.log();
83
+ }
84
+ }
85
+ }
86
+ else {
87
+ console.log('All benchmarks completed successfully!');
88
+ }
89
+ }
90
+ onError(error) {
91
+ if (this.quiet) {
92
+ return;
93
+ }
94
+ console.error(`${symbols.cross.repeat(3)} Error:`, error.message);
95
+ if (this.verbose && error.stack) {
96
+ console.error(error.stack);
97
+ }
98
+ }
99
+ onFileEnd(result) {
100
+ if (this.quiet) {
101
+ return;
102
+ }
103
+ const totalTasks = result.suites.reduce((sum, suite) => sum + suite.tasks.length, 0);
104
+ const totalPassed = result.suites.reduce((sum, suite) => sum + suite.tasks.filter((t) => !t.error).length, 0);
105
+ const totalFailed = totalTasks - totalPassed;
106
+ if (totalFailed > 0) {
107
+ console.log(` ${symbols.cross} ${totalFailed} failed, ${totalPassed} passed`);
108
+ }
109
+ else {
110
+ console.log(` ${symbols.checkmark} ${totalPassed > 1 ? 'All ' : ''}${totalPassed} ${this.pluralize('task', totalPassed)} passed`);
111
+ }
112
+ console.log();
113
+ }
114
+ onFileStart(file) {
115
+ this.currentFile = file;
116
+ if (this.quiet) {
117
+ return;
118
+ }
119
+ const displayPath = this.formatPath(file);
120
+ console.log(`-- ${displayPath}`);
121
+ }
122
+ onProgress(_state) {
123
+ // Simple reporter does not display progress bars
124
+ return;
125
+ }
126
+ onStart(run) {
127
+ this.startTime = Date.now();
128
+ this.failures = []; // Reset failures for new run
129
+ if (this.quiet) {
130
+ return;
131
+ }
132
+ console.log('modestbench');
133
+ console.log();
134
+ if (run.environment) {
135
+ console.log(` node.js: ${run.environment.nodeVersion}`);
136
+ console.log(` platform: ${run.environment.platform} ${run.environment.arch}`);
137
+ console.log(` cpu: ${run.environment.cpu.model} (${run.environment.cpu.cores} cores)`);
138
+ console.log(` mem: ${this.formatBytes(run.environment.memory.total)}`);
139
+ console.log();
140
+ }
141
+ if (run.git) {
142
+ console.log(` Git: ${run.git.commit}`);
143
+ }
144
+ if (run.ci) {
145
+ console.log(` CI: ${run.ci.provider}`);
146
+ console.log();
147
+ }
148
+ }
149
+ onSuiteEnd(result) {
150
+ if (this.quiet) {
151
+ return;
152
+ }
153
+ // Print all buffered task results with aligned columns
154
+ this.printAlignedSuiteResults();
155
+ // Skip displaying summary for the implicit "default" suite
156
+ if (result.name === 'default') {
157
+ return;
158
+ }
159
+ const passed = result.tasks.filter((t) => !t.error).length;
160
+ const failed = result.tasks.filter((t) => t.error).length;
161
+ if (failed > 0) {
162
+ console.log(` ${symbols.cross} ${failed} failed, ${passed} passed`);
163
+ }
164
+ else {
165
+ console.log(` ${symbols.checkmark} ${passed} ${this.pluralize('task', passed)} passed`);
166
+ }
167
+ console.log();
168
+ }
169
+ onSuiteStart(suite) {
170
+ this.currentSuite = suite;
171
+ if (this.quiet) {
172
+ return;
173
+ }
174
+ this.suiteResults = []; // Reset buffer for new suite
175
+ // Skip displaying the implicit "default" suite header
176
+ if (suite === 'default') {
177
+ return;
178
+ }
179
+ console.log();
180
+ console.log(` -- ${suite}`);
181
+ }
182
+ onTaskResult(result) {
183
+ if (this.quiet) {
184
+ return;
185
+ }
186
+ // Buffer the result for later printing with proper alignment
187
+ this.suiteResults.push(result);
188
+ }
189
+ onTaskStart(task) {
190
+ if (this.quiet) {
191
+ return;
192
+ }
193
+ // Only show static markers in verbose mode
194
+ if (this.verbose) {
195
+ console.log(` - ${task}`);
196
+ }
197
+ }
198
+ /**
199
+ * Format bytes in human-readable format
200
+ */
201
+ formatBytes(bytes) {
202
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
203
+ let size = bytes;
204
+ let unitIndex = 0;
205
+ while (size >= 1024 && unitIndex < units.length - 1) {
206
+ size /= 1024;
207
+ unitIndex++;
208
+ }
209
+ return `${size.toFixed(1)} ${units[unitIndex]}`;
210
+ }
211
+ /**
212
+ * Format file path - show relative path if within CWD, otherwise absolute
213
+ */
214
+ formatPath(filePath) {
215
+ const cwd = process.cwd();
216
+ const absolutePath = node_path_1.default.resolve(filePath);
217
+ // Check if the file is within the current working directory
218
+ if (absolutePath.startsWith(cwd + node_path_1.default.sep) || absolutePath === cwd) {
219
+ return node_path_1.default.relative(cwd, absolutePath);
220
+ }
221
+ return absolutePath;
222
+ }
223
+ /**
224
+ * Simple pluralization helper
225
+ */
226
+ pluralize(str, count) {
227
+ return count === 1 ? str : `${str}s`;
228
+ }
229
+ /**
230
+ * Print all task results in a suite with aligned columns
231
+ */
232
+ printAlignedSuiteResults() {
233
+ if (this.suiteResults.length === 0) {
234
+ return;
235
+ }
236
+ const MAX_NAME_WIDTH = 60;
237
+ const BASE_INDENT = ' '; // 4 spaces
238
+ const separator = '-'; // Simple text separator instead of bullet
239
+ const formatted = this.suiteResults.map((result) => {
240
+ const status = result.error ? symbols.cross : symbols.checkmark;
241
+ const name = result.name.trim();
242
+ const nameLength = name.length;
243
+ if (result.error) {
244
+ return {
245
+ durationLen: 0,
246
+ durationStr: '',
247
+ error: true,
248
+ errorMessage: result.error?.message || String(result.error),
249
+ iterations: 0,
250
+ name,
251
+ nameLength,
252
+ opsPerSecLen: 0,
253
+ opsPerSecStr: '',
254
+ rmeLen: 0,
255
+ rmeStr: '',
256
+ status,
257
+ };
258
+ }
259
+ const duration = this.formatDuration(result.mean * 1e9);
260
+ const opsPerSec = this.formatOpsPerSecond(result.opsPerSecond);
261
+ const rme = this.formatPercentage(result.marginOfError * 100);
262
+ return {
263
+ durationLen: duration.length,
264
+ durationStr: duration,
265
+ error: false,
266
+ iterations: result.iterations,
267
+ name,
268
+ nameLength,
269
+ opsPerSecLen: opsPerSec.length,
270
+ opsPerSecStr: opsPerSec,
271
+ rmeLen: rme.length,
272
+ rmeStr: rme,
273
+ status,
274
+ };
275
+ });
276
+ // Find max widths
277
+ const nonWrappingTasks = formatted.filter((t) => t.nameLength <= MAX_NAME_WIDTH);
278
+ const maxNameLen = nonWrappingTasks.length > 0
279
+ ? Math.max(...nonWrappingTasks.map((t) => t.nameLength))
280
+ : 40; // Default if all tasks wrap
281
+ const maxDurationLen = Math.max(...formatted.filter((t) => !t.error).map((t) => t.durationLen), 0);
282
+ const maxRmeLen = Math.max(...formatted.filter((t) => !t.error).map((t) => t.rmeLen), 0);
283
+ const maxOpsLen = Math.max(...formatted.filter((t) => !t.error).map((t) => t.opsPerSecLen), 0);
284
+ // Calculate the position where numbers start for unwrapped lines
285
+ // BASE_INDENT (4) + status (1 char) + space (1) + maxNameLen + ": " (2) = 8 + maxNameLen
286
+ const numbersStartPos = BASE_INDENT.length + 2 + maxNameLen + 2;
287
+ // Print each task with aligned columns
288
+ for (const task of formatted) {
289
+ if (task.error) {
290
+ // Track failure for end summary
291
+ this.failures.push({
292
+ error: task.errorMessage || 'Unknown error',
293
+ file: this.currentFile,
294
+ suite: this.currentSuite,
295
+ task: task.name,
296
+ });
297
+ console.log(`${BASE_INDENT}${task.status} ${task.name} FAILED`);
298
+ }
299
+ else if (task.nameLength > MAX_NAME_WIDTH) {
300
+ // Long name - wrap to next line, but align numbers with unwrapped lines
301
+ console.log(`${BASE_INDENT}${task.status} ${task.name}:`);
302
+ // Calculate padding to align with unwrapped lines
303
+ // We need to get to numbersStartPos from the beginning of the line
304
+ const leadingPad = ' '.repeat(numbersStartPos);
305
+ const durationPad = ' '.repeat(maxDurationLen - task.durationLen);
306
+ const rmePad = ' '.repeat(maxRmeLen - task.rmeLen);
307
+ const opsPad = ' '.repeat(maxOpsLen - task.opsPerSecLen);
308
+ console.log(`${leadingPad}${durationPad}${task.durationStr} ${separator} ${symbols.plusMinus}${rmePad}${task.rmeStr} ${separator} ${opsPad}${task.opsPerSecStr}`);
309
+ if (this.verbose && task.iterations > 0) {
310
+ console.log(` ${task.iterations} iterations`);
311
+ }
312
+ }
313
+ else {
314
+ // Normal length - align on same line
315
+ const namePad = ' '.repeat(maxNameLen - task.nameLength);
316
+ const durationPad = ' '.repeat(maxDurationLen - task.durationLen);
317
+ const rmePad = ' '.repeat(maxRmeLen - task.rmeLen);
318
+ const opsPad = ' '.repeat(maxOpsLen - task.opsPerSecLen);
319
+ console.log(`${BASE_INDENT}${task.status} ${task.name}${namePad}: ${durationPad}${task.durationStr} ${separator} ${symbols.plusMinus}${rmePad}${task.rmeStr} ${separator} ${opsPad}${task.opsPerSecStr}`);
320
+ if (this.verbose && task.iterations > 0) {
321
+ console.log(` ${task.iterations} iterations`);
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ exports.SimpleReporter = SimpleReporter;
328
+ //# sourceMappingURL=simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/reporters/simple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * ModestBench Simple Console Reporter
3
+ *
4
+ * Provides plain text output without colors, ANSI codes, or decorative
5
+ * elements. Ideal for CI/CD environments, piping, or non-TTY outputs.
6
+ */
7
+ import type { BenchmarkRun, FileResult, ProgressState, SuiteResult, TaskResult } from "../types/index.cjs";
8
+ import { BaseReporter } from "./registry.cjs";
9
+ /**
10
+ * Simple console reporter with plain text output (no colors or progress bars)
11
+ */
12
+ export declare class SimpleReporter extends BaseReporter {
13
+ private currentFile;
14
+ private currentSuite;
15
+ private failures;
16
+ private readonly quiet;
17
+ private startTime;
18
+ private suiteResults;
19
+ private readonly verbose;
20
+ constructor(options?: {
21
+ quiet?: boolean;
22
+ verbose?: boolean;
23
+ });
24
+ onEnd(run: BenchmarkRun): void;
25
+ onError(error: Error): void;
26
+ onFileEnd(result: FileResult): void;
27
+ onFileStart(file: string): void;
28
+ onProgress(_state: ProgressState): void;
29
+ onStart(run: BenchmarkRun): void;
30
+ onSuiteEnd(result: SuiteResult): void;
31
+ onSuiteStart(suite: string): void;
32
+ onTaskResult(result: TaskResult): void;
33
+ onTaskStart(task: string): void;
34
+ /**
35
+ * Format bytes in human-readable format
36
+ */
37
+ private formatBytes;
38
+ /**
39
+ * Format file path - show relative path if within CWD, otherwise absolute
40
+ */
41
+ private formatPath;
42
+ /**
43
+ * Simple pluralization helper
44
+ */
45
+ private pluralize;
46
+ /**
47
+ * Print all task results in a suite with aligned columns
48
+ */
49
+ private printAlignedSuiteResults;
50
+ }
51
+ //# sourceMappingURL=simple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../src/reporters/simple.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACX,2BAA0B;AAE3B,OAAO,EAAE,YAAY,EAAE,uBAAsB;AAY7C;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,WAAW,CAAM;IAEzB,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAKR;IAER,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGhC,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACd;IAQR,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IA4D9B,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAY3B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IA4BnC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW/B,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKvC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAiChC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IA0BrC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAkBjC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAStC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,wBAAwB;CA4IjC"}