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,250 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench CSV Reporter
4
+ *
5
+ * Outputs benchmark results in CSV format for data analysis and visualization.
6
+ * Provides structured tabular data suitable for spreadsheets and statistical
7
+ * tools.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CsvReporter = void 0;
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = require("node:path");
13
+ const registry_js_1 = require("./registry.cjs");
14
+ /**
15
+ * CSV reporter for structured tabular output
16
+ */
17
+ class CsvReporter extends registry_js_1.BaseReporter {
18
+ currentFile = '';
19
+ currentRun;
20
+ currentSuite = '';
21
+ delimiter;
22
+ includeHeaders;
23
+ includeMetadata;
24
+ outputPath;
25
+ quiet;
26
+ quote;
27
+ rows = [];
28
+ constructor(options = {}) {
29
+ super('csv', options);
30
+ this.outputPath = options.outputPath;
31
+ this.includeHeaders = options.includeHeaders ?? true;
32
+ this.includeMetadata = options.includeMetadata ?? true;
33
+ this.delimiter = options.delimiter ?? ',';
34
+ this.quote = options.quote ?? '"';
35
+ this.quiet = options.quiet ?? false;
36
+ }
37
+ /**
38
+ * Check if headers are included
39
+ */
40
+ areHeadersIncluded() {
41
+ return this.includeHeaders;
42
+ }
43
+ /**
44
+ * Get the delimiter character
45
+ */
46
+ getDelimiter() {
47
+ return this.delimiter;
48
+ }
49
+ /**
50
+ * Get the output path (if configured)
51
+ */
52
+ getOutputPath() {
53
+ return this.outputPath;
54
+ }
55
+ /**
56
+ * Get the quote character
57
+ */
58
+ getQuote() {
59
+ return this.quote;
60
+ }
61
+ /**
62
+ * Get the number of rows collected
63
+ */
64
+ getRowCount() {
65
+ return this.rows.length;
66
+ }
67
+ /**
68
+ * Check if metadata is included
69
+ */
70
+ isMetadataIncluded() {
71
+ return this.includeMetadata;
72
+ }
73
+ async onEnd(_run) {
74
+ const csvContent = this.generateCsv();
75
+ if (this.outputPath) {
76
+ await this.writeToFile(csvContent);
77
+ }
78
+ else {
79
+ this.writeToStdout(csvContent);
80
+ }
81
+ }
82
+ onError(error) {
83
+ console.error('CSV Reporter Error:', error.message);
84
+ }
85
+ onFileEnd(_result) {
86
+ // No-op for CSV reporter
87
+ }
88
+ onFileStart(file) {
89
+ this.currentFile = file;
90
+ }
91
+ onProgress(_state) {
92
+ // No-op for CSV reporter
93
+ }
94
+ onStart(run) {
95
+ this.currentRun = run;
96
+ this.rows = [];
97
+ }
98
+ onSuiteEnd(_result) {
99
+ // No-op for CSV reporter
100
+ }
101
+ onSuiteStart(suite) {
102
+ this.currentSuite = suite;
103
+ }
104
+ onTaskResult(result) {
105
+ if (!this.currentRun) {
106
+ return;
107
+ }
108
+ const row = {
109
+ arch: this.currentRun.environment.arch,
110
+ ciProvider: this.currentRun.ci?.provider,
111
+ cpuCores: this.currentRun.environment.cpu.cores,
112
+ cpuModel: this.currentRun.environment.cpu.model,
113
+ error: result.error?.message,
114
+ file: this.currentFile,
115
+ gitBranch: this.currentRun.git?.branch,
116
+ gitCommit: this.currentRun.git?.commit,
117
+ iterations: result.iterations,
118
+ marginOfError: result.marginOfError,
119
+ max: result.max,
120
+ mean: result.mean,
121
+ min: result.min,
122
+ nodeVersion: this.currentRun.environment.nodeVersion,
123
+ opsPerSecond: result.opsPerSecond,
124
+ p95: result.p95,
125
+ p99: result.p99,
126
+ platform: this.currentRun.environment.platform,
127
+ stdDev: result.stdDev,
128
+ suite: this.currentSuite,
129
+ task: result.name,
130
+ timestamp: new Date().toISOString(),
131
+ totalMemory: this.currentRun.environment.memory.total,
132
+ variance: result.variance,
133
+ };
134
+ this.rows.push(row);
135
+ }
136
+ onTaskStart(_task) {
137
+ // No-op for CSV reporter
138
+ }
139
+ /**
140
+ * Escape a field value for CSV format
141
+ */
142
+ escapeField(value) {
143
+ // If value contains delimiter, quote, or newline, wrap in quotes
144
+ if (value.includes(this.delimiter) ||
145
+ value.includes(this.quote) ||
146
+ value.includes('\n') ||
147
+ value.includes('\r')) {
148
+ // Escape any existing quotes by doubling them
149
+ const escaped = value.replace(new RegExp(this.quote, 'g'), this.quote + this.quote);
150
+ return this.quote + escaped + this.quote;
151
+ }
152
+ return value;
153
+ }
154
+ /**
155
+ * Generate CSV content from collected rows
156
+ */
157
+ generateCsv() {
158
+ if (this.rows.length === 0) {
159
+ return this.includeHeaders ? this.generateHeaders() : '';
160
+ }
161
+ const lines = [];
162
+ if (this.includeHeaders) {
163
+ lines.push(this.generateHeaders());
164
+ }
165
+ for (const row of this.rows) {
166
+ lines.push(this.generateRow(row));
167
+ }
168
+ return lines.join('\n') + '\n';
169
+ }
170
+ /**
171
+ * Generate CSV headers
172
+ */
173
+ generateHeaders() {
174
+ const headers = [
175
+ 'file',
176
+ 'suite',
177
+ 'task',
178
+ 'mean',
179
+ 'stdDev',
180
+ 'min',
181
+ 'max',
182
+ 'iterations',
183
+ 'opsPerSecond',
184
+ 'marginOfError',
185
+ 'variance',
186
+ 'p95',
187
+ 'p99',
188
+ 'error',
189
+ 'timestamp',
190
+ ];
191
+ if (this.includeMetadata) {
192
+ headers.push('nodeVersion', 'platform', 'arch', 'cpuModel', 'cpuCores', 'totalMemory', 'gitCommit', 'gitBranch', 'ciProvider');
193
+ }
194
+ return headers.map((h) => this.escapeField(h)).join(this.delimiter);
195
+ }
196
+ /**
197
+ * Generate a CSV row from a data row
198
+ */
199
+ generateRow(row) {
200
+ const values = [
201
+ row.file || '',
202
+ row.suite || '',
203
+ row.task || '',
204
+ (row.mean ?? 0).toString(),
205
+ (row.stdDev ?? 0).toString(),
206
+ (row.min ?? 0).toString(),
207
+ (row.max ?? 0).toString(),
208
+ (row.iterations ?? 0).toString(),
209
+ (row.opsPerSecond ?? 0).toString(),
210
+ (row.marginOfError ?? 0).toString(),
211
+ (row.variance ?? 0).toString(),
212
+ (row.p95 ?? 0).toString(),
213
+ (row.p99 ?? 0).toString(),
214
+ row.error || '',
215
+ row.timestamp || '',
216
+ ];
217
+ if (this.includeMetadata) {
218
+ values.push(row.nodeVersion || '', row.platform || '', row.arch || '', row.cpuModel || '', (row.cpuCores ?? 0).toString(), (row.totalMemory ?? 0).toString(), row.gitCommit || '', row.gitBranch || '', row.ciProvider || '');
219
+ }
220
+ return values.map((v) => this.escapeField(v)).join(this.delimiter);
221
+ }
222
+ /**
223
+ * Write CSV content to file
224
+ */
225
+ async writeToFile(csvContent) {
226
+ if (!this.outputPath) {
227
+ throw new Error('Output path not specified');
228
+ }
229
+ try {
230
+ // Ensure directory exists
231
+ const dir = (0, node_path_1.dirname)(this.outputPath);
232
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
233
+ // Write CSV file
234
+ (0, node_fs_1.writeFileSync)(this.outputPath, csvContent, 'utf8');
235
+ }
236
+ catch (error) {
237
+ throw new Error(`Failed to write CSV output to ${this.outputPath}: ${error instanceof Error ? error.message : String(error)}`);
238
+ }
239
+ }
240
+ /**
241
+ * Write CSV content to stdout
242
+ */
243
+ writeToStdout(csvContent) {
244
+ // Always write to stdout when no output path is specified
245
+ // The quiet flag only affects progress messages (stderr), not data output
246
+ console.log(csvContent);
247
+ }
248
+ }
249
+ exports.CsvReporter = CsvReporter;
250
+ //# sourceMappingURL=csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/reporters/csv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * ModestBench CSV Reporter
3
+ *
4
+ * Outputs benchmark results in CSV format for data analysis and visualization.
5
+ * Provides structured tabular data suitable for spreadsheets and statistical
6
+ * tools.
7
+ */
8
+ import type { BenchmarkRun, FileResult, ProgressState, SuiteResult, TaskResult } from "../types/index.cjs";
9
+ import { BaseReporter } from "./registry.cjs";
10
+ /**
11
+ * CSV reporter for structured tabular output
12
+ */
13
+ export declare class CsvReporter extends BaseReporter {
14
+ private currentFile;
15
+ private currentRun?;
16
+ private currentSuite;
17
+ private readonly delimiter;
18
+ private readonly includeHeaders;
19
+ private readonly includeMetadata;
20
+ private readonly outputPath?;
21
+ private readonly quiet;
22
+ private readonly quote;
23
+ private rows;
24
+ constructor(options?: {
25
+ delimiter?: string;
26
+ includeHeaders?: boolean;
27
+ includeMetadata?: boolean;
28
+ outputPath?: string;
29
+ quiet?: boolean;
30
+ quote?: string;
31
+ verbose?: boolean;
32
+ });
33
+ /**
34
+ * Check if headers are included
35
+ */
36
+ areHeadersIncluded(): boolean;
37
+ /**
38
+ * Get the delimiter character
39
+ */
40
+ getDelimiter(): string;
41
+ /**
42
+ * Get the output path (if configured)
43
+ */
44
+ getOutputPath(): string | undefined;
45
+ /**
46
+ * Get the quote character
47
+ */
48
+ getQuote(): string;
49
+ /**
50
+ * Get the number of rows collected
51
+ */
52
+ getRowCount(): number;
53
+ /**
54
+ * Check if metadata is included
55
+ */
56
+ isMetadataIncluded(): boolean;
57
+ onEnd(_run: BenchmarkRun): Promise<void>;
58
+ onError(error: Error): void;
59
+ onFileEnd(_result: FileResult): void;
60
+ onFileStart(file: string): void;
61
+ onProgress(_state: ProgressState): void;
62
+ onStart(run: BenchmarkRun): void;
63
+ onSuiteEnd(_result: SuiteResult): void;
64
+ onSuiteStart(suite: string): void;
65
+ onTaskResult(result: TaskResult): void;
66
+ onTaskStart(_task: string): void;
67
+ /**
68
+ * Escape a field value for CSV format
69
+ */
70
+ private escapeField;
71
+ /**
72
+ * Generate CSV content from collected rows
73
+ */
74
+ private generateCsv;
75
+ /**
76
+ * Generate CSV headers
77
+ */
78
+ private generateHeaders;
79
+ /**
80
+ * Generate a CSV row from a data row
81
+ */
82
+ private generateRow;
83
+ /**
84
+ * Write CSV content to file
85
+ */
86
+ private writeToFile;
87
+ /**
88
+ * Write CSV content to stdout
89
+ */
90
+ private writeToStdout;
91
+ }
92
+ //# sourceMappingURL=csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../src/reporters/csv.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACX,2BAA0B;AAE3B,OAAO,EAAE,YAAY,EAAE,uBAAsB;AAgC7C;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,WAAW,CAAM;IAEzB,OAAO,CAAC,UAAU,CAAC,CAAe;IAElC,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAE1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAqB;IAEjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO,CAAC,IAAI,CAAgB;gBAG1B,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACd;IAYR;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAIvB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI3B,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIpC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAIvC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAKhC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAItC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAmCtC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAKtB"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * ModestBench CSV Reporter
3
+ *
4
+ * Outputs benchmark results in CSV format for data analysis and visualization.
5
+ * Provides structured tabular data suitable for spreadsheets and statistical
6
+ * tools.
7
+ */
8
+ import type { BenchmarkRun, FileResult, ProgressState, SuiteResult, TaskResult } from "../types/index.js";
9
+ import { BaseReporter } from "./registry.js";
10
+ /**
11
+ * CSV reporter for structured tabular output
12
+ */
13
+ export declare class CsvReporter extends BaseReporter {
14
+ private currentFile;
15
+ private currentRun?;
16
+ private currentSuite;
17
+ private readonly delimiter;
18
+ private readonly includeHeaders;
19
+ private readonly includeMetadata;
20
+ private readonly outputPath?;
21
+ private readonly quiet;
22
+ private readonly quote;
23
+ private rows;
24
+ constructor(options?: {
25
+ delimiter?: string;
26
+ includeHeaders?: boolean;
27
+ includeMetadata?: boolean;
28
+ outputPath?: string;
29
+ quiet?: boolean;
30
+ quote?: string;
31
+ verbose?: boolean;
32
+ });
33
+ /**
34
+ * Check if headers are included
35
+ */
36
+ areHeadersIncluded(): boolean;
37
+ /**
38
+ * Get the delimiter character
39
+ */
40
+ getDelimiter(): string;
41
+ /**
42
+ * Get the output path (if configured)
43
+ */
44
+ getOutputPath(): string | undefined;
45
+ /**
46
+ * Get the quote character
47
+ */
48
+ getQuote(): string;
49
+ /**
50
+ * Get the number of rows collected
51
+ */
52
+ getRowCount(): number;
53
+ /**
54
+ * Check if metadata is included
55
+ */
56
+ isMetadataIncluded(): boolean;
57
+ onEnd(_run: BenchmarkRun): Promise<void>;
58
+ onError(error: Error): void;
59
+ onFileEnd(_result: FileResult): void;
60
+ onFileStart(file: string): void;
61
+ onProgress(_state: ProgressState): void;
62
+ onStart(run: BenchmarkRun): void;
63
+ onSuiteEnd(_result: SuiteResult): void;
64
+ onSuiteStart(suite: string): void;
65
+ onTaskResult(result: TaskResult): void;
66
+ onTaskStart(_task: string): void;
67
+ /**
68
+ * Escape a field value for CSV format
69
+ */
70
+ private escapeField;
71
+ /**
72
+ * Generate CSV content from collected rows
73
+ */
74
+ private generateCsv;
75
+ /**
76
+ * Generate CSV headers
77
+ */
78
+ private generateHeaders;
79
+ /**
80
+ * Generate a CSV row from a data row
81
+ */
82
+ private generateRow;
83
+ /**
84
+ * Write CSV content to file
85
+ */
86
+ private writeToFile;
87
+ /**
88
+ * Write CSV content to stdout
89
+ */
90
+ private writeToStdout;
91
+ }
92
+ //# sourceMappingURL=csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../src/reporters/csv.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACX,0BAA0B;AAE3B,OAAO,EAAE,YAAY,EAAE,sBAAsB;AAgC7C;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,WAAW,CAAM;IAEzB,OAAO,CAAC,UAAU,CAAC,CAAe;IAElC,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAE1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAqB;IAEjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO,CAAC,IAAI,CAAgB;gBAG1B,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACd;IAYR;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAIvB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI3B,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIpC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAIvC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAKhC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAItC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAmCtC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAKtB"}