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,566 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Init Command
4
+ *
5
+ * Initialize a new benchmark project with configuration files, directory
6
+ * structure, and optional example benchmark files.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.handleInitCommand = void 0;
10
+ const promises_1 = require("node:fs/promises");
11
+ const node_path_1 = require("node:path");
12
+ const node_readline_1 = require("node:readline");
13
+ /**
14
+ * Project templates for different initialization types
15
+ */
16
+ const PROJECT_TEMPLATES = {
17
+ advanced: {
18
+ configOptions: {
19
+ iterations: 1000,
20
+ outputDir: './benchmark-results',
21
+ pattern: 'benchmarks/**/*.bench.{js,ts}',
22
+ reporters: ['human', 'json'],
23
+ time: 10000,
24
+ warmup: 50,
25
+ },
26
+ description: 'Feature-rich setup with multiple reporters and configuration',
27
+ directories: ['benchmarks', 'benchmark-results'],
28
+ name: 'Advanced Project',
29
+ },
30
+ basic: {
31
+ configOptions: {
32
+ iterations: 100,
33
+ pattern: 'benchmarks/**/*.bench.{js,ts}',
34
+ reporters: ['human'],
35
+ time: 5000,
36
+ },
37
+ description: 'Simple benchmark setup for small projects',
38
+ directories: ['benchmarks'],
39
+ name: 'Basic Project',
40
+ },
41
+ library: {
42
+ configOptions: {
43
+ bail: false,
44
+ iterations: 5000,
45
+ outputDir: './benchmark-results',
46
+ pattern: 'benchmarks/**/*.bench.{js,ts}',
47
+ reporters: ['human', 'json'],
48
+ time: 15000,
49
+ warmup: 100,
50
+ },
51
+ description: 'Optimized for library performance testing',
52
+ directories: ['benchmarks', 'benchmarks/suites', 'benchmark-results'],
53
+ name: 'Library Project',
54
+ },
55
+ };
56
+ /**
57
+ * Example benchmark files
58
+ */
59
+ const EXAMPLE_BENCHMARKS = {
60
+ arrayMethods: {
61
+ content: `/**
62
+ * Array Methods Performance Benchmark
63
+ *
64
+ * Compares performance of different array iteration methods.
65
+ */
66
+
67
+ export default {
68
+ name: 'Array Methods',
69
+
70
+ setup() {
71
+ // Setup data for benchmarks
72
+ this.smallArray = Array.from({ length: 100 }, (_, i) => i);
73
+ this.largeArray = Array.from({ length: 10000 }, (_, i) => i);
74
+ },
75
+
76
+ benchmarks: {
77
+ 'for loop (small array)': {
78
+ fn() {
79
+ let sum = 0;
80
+ for (let i = 0; i < this.smallArray.length; i++) {
81
+ sum += this.smallArray[i];
82
+ }
83
+ return sum;
84
+ }
85
+ },
86
+
87
+ 'forEach (small array)': {
88
+ fn() {
89
+ let sum = 0;
90
+ this.smallArray.forEach(n => sum += n);
91
+ return sum;
92
+ }
93
+ },
94
+
95
+ 'reduce (small array)': {
96
+ fn() {
97
+ return this.smallArray.reduce((sum, n) => sum + n, 0);
98
+ }
99
+ },
100
+
101
+ 'for loop (large array)': {
102
+ fn() {
103
+ let sum = 0;
104
+ for (let i = 0; i < this.largeArray.length; i++) {
105
+ sum += this.largeArray[i];
106
+ }
107
+ return sum;
108
+ }
109
+ },
110
+
111
+ 'forEach (large array)': {
112
+ fn() {
113
+ let sum = 0;
114
+ this.largeArray.forEach(n => sum += n);
115
+ return sum;
116
+ }
117
+ },
118
+
119
+ 'reduce (large array)': {
120
+ fn() {
121
+ return this.largeArray.reduce((sum, n) => sum + n, 0);
122
+ }
123
+ }
124
+ }
125
+ };
126
+ `,
127
+ filename: 'array-methods.bench.js',
128
+ },
129
+ example: {
130
+ content: `/**
131
+ * Example Benchmark File
132
+ *
133
+ * This is a simple example demonstrating basic benchmarking setup.
134
+ */
135
+
136
+ export default {
137
+ name: 'Example Benchmarks',
138
+
139
+ benchmarks: {
140
+ 'simple addition': {
141
+ fn() {
142
+ return 1 + 1;
143
+ }
144
+ },
145
+
146
+ 'array creation': {
147
+ fn() {
148
+ return Array.from({ length: 100 }, (_, i) => i);
149
+ }
150
+ },
151
+
152
+ 'string manipulation': {
153
+ fn() {
154
+ return 'Hello, World!'.toUpperCase();
155
+ }
156
+ }
157
+ }
158
+ };
159
+ `,
160
+ filename: 'example.bench.js',
161
+ },
162
+ stringOperations: {
163
+ content: `/**
164
+ * String Operations Performance Benchmark
165
+ *
166
+ * Tests various string manipulation techniques.
167
+ */
168
+
169
+ export default {
170
+ name: 'String Operations',
171
+
172
+ setup() {
173
+ this.baseString = 'Hello, World!';
174
+ this.longString = 'Lorem ipsum '.repeat(1000);
175
+ this.template = 'Hello, {name}!';
176
+ },
177
+
178
+ benchmarks: {
179
+ 'string concatenation': {
180
+ fn() {
181
+ return this.baseString + ' How are you?';
182
+ }
183
+ },
184
+
185
+ 'template literals': {
186
+ fn() {
187
+ return \`\${this.baseString} How are you?\`;
188
+ }
189
+ },
190
+
191
+ 'string replace': {
192
+ fn() {
193
+ return this.template.replace('{name}', 'ModestBench');
194
+ }
195
+ },
196
+
197
+ 'string includes': {
198
+ fn() {
199
+ return this.longString.includes('ipsum');
200
+ }
201
+ },
202
+
203
+ 'regex test': {
204
+ fn() {
205
+ return /ipsum/.test(this.longString);
206
+ }
207
+ }
208
+ }
209
+ };
210
+ `,
211
+ filename: 'string-operations.bench.js',
212
+ },
213
+ };
214
+ /**
215
+ * Prompt user for confirmation with Y/n default to Yes
216
+ */
217
+ const promptUser = async (question) => {
218
+ const rl = (0, node_readline_1.createInterface)({
219
+ input: process.stdin,
220
+ output: process.stdout,
221
+ });
222
+ return new Promise((resolve) => {
223
+ rl.question(question, (answer) => {
224
+ rl.close();
225
+ const normalized = answer.trim().toLowerCase();
226
+ // Default to Yes if empty or starts with 'y'
227
+ resolve(normalized === '' || normalized === 'y' || normalized === 'yes');
228
+ });
229
+ });
230
+ };
231
+ /**
232
+ * Handle init command
233
+ */
234
+ const handleInitCommand = async (context, options) => {
235
+ try {
236
+ const template = PROJECT_TEMPLATES[options.type];
237
+ if (!options.quiet) {
238
+ console.log(`Initializing ${template.name}...`);
239
+ console.log(template.description);
240
+ console.log();
241
+ }
242
+ // Check if project already exists
243
+ if (!options.force) {
244
+ const hasConflicts = await checkForConflicts(options);
245
+ if (hasConflicts) {
246
+ console.error('Project files already exist. Use --force to overwrite.');
247
+ return 1; // Already initialized
248
+ }
249
+ }
250
+ // Create directory structure
251
+ await createDirectories(template.directories, options);
252
+ // Create configuration file
253
+ await createConfigFile(template.configOptions, options);
254
+ // Create example benchmarks if requested
255
+ if (options.examples) {
256
+ await createExampleBenchmarks(options);
257
+ }
258
+ // Create additional files
259
+ await createAdditionalFiles(options);
260
+ if (!options.quiet) {
261
+ console.log('✅ Project initialized successfully!');
262
+ console.log();
263
+ console.log('Next steps:');
264
+ if (options.examples) {
265
+ console.log(' 1. Run example benchmarks: modestbench run');
266
+ }
267
+ else {
268
+ console.log(' 1. Create your first benchmark file in the benchmarks/ directory');
269
+ }
270
+ console.log(' 2. Customize configuration in your config file');
271
+ console.log(' 3. Add your own benchmark suites');
272
+ console.log();
273
+ console.log('Documentation: https://github.com/your-org/modestbench#readme');
274
+ }
275
+ return 0;
276
+ }
277
+ catch (error) {
278
+ console.error('Init command failed:', error instanceof Error ? error.message : String(error));
279
+ if (options.verbose && error instanceof Error && error.stack) {
280
+ console.error('Stack trace:');
281
+ console.error(error.stack);
282
+ }
283
+ return 5; // Runtime error
284
+ }
285
+ };
286
+ exports.handleInitCommand = handleInitCommand;
287
+ /**
288
+ * Check for existing files that would conflict
289
+ */
290
+ const checkForConflicts = async (options) => {
291
+ const filesToCheck = [
292
+ 'modestbench.config.' + options.configType,
293
+ 'benchmarks',
294
+ ];
295
+ for (const file of filesToCheck) {
296
+ try {
297
+ await (0, promises_1.access)((0, node_path_1.resolve)(options.cwd, file));
298
+ return true; // File exists, conflict detected
299
+ }
300
+ catch {
301
+ // File doesn't exist, no conflict
302
+ }
303
+ }
304
+ return false;
305
+ };
306
+ /**
307
+ * Handle .gitignore file creation or modification
308
+ */
309
+ const handleGitignore = async (options) => {
310
+ const gitignorePath = (0, node_path_1.resolve)(options.cwd, '.gitignore');
311
+ const modestbenchEntry = '.modestbench/';
312
+ // Default .gitignore content for new files
313
+ const defaultGitignoreContent = `# ModestBench
314
+ benchmark-results/
315
+ .modestbench/
316
+
317
+ # Dependencies
318
+ node_modules/
319
+
320
+ # Environment
321
+ .env
322
+ .env.local
323
+
324
+ # Logs
325
+ *.log
326
+ npm-debug.log*
327
+ yarn-debug.log*
328
+ yarn-error.log*
329
+
330
+ # OS
331
+ .DS_Store
332
+ Thumbs.db
333
+ `;
334
+ try {
335
+ // Check if .gitignore exists
336
+ let gitignoreExists = false;
337
+ try {
338
+ await (0, promises_1.access)(gitignorePath);
339
+ gitignoreExists = true;
340
+ }
341
+ catch {
342
+ // File doesn't exist
343
+ }
344
+ if (!gitignoreExists) {
345
+ // Create new .gitignore with full content
346
+ await (0, promises_1.writeFile)(gitignorePath, defaultGitignoreContent, 'utf8');
347
+ if (options.verbose) {
348
+ console.log(' ✓ .gitignore');
349
+ }
350
+ return;
351
+ }
352
+ // File exists, check if .modestbench/ is already present
353
+ const existingContent = await (0, promises_1.readFile)(gitignorePath, 'utf8');
354
+ // Check if .modestbench/ is already in the file
355
+ const hasModestbenchEntry = existingContent
356
+ .split('\n')
357
+ .some((line) => line.trim() === modestbenchEntry);
358
+ if (hasModestbenchEntry) {
359
+ // Already has the entry, nothing to do
360
+ if (options.verbose) {
361
+ console.log(' ✓ .gitignore (already contains .modestbench/)');
362
+ }
363
+ return;
364
+ }
365
+ // Determine if we should prompt or auto-add
366
+ let shouldAdd = false;
367
+ if (options.yes || options.quiet) {
368
+ // Auto-accept in non-interactive mode
369
+ shouldAdd = true;
370
+ }
371
+ else {
372
+ // Prompt the user
373
+ console.log();
374
+ console.log('The .modestbench/ directory stores benchmark history and should typically');
375
+ console.log('not be committed to version control.');
376
+ console.log();
377
+ shouldAdd = await promptUser('Would you like to add .modestbench/ to .gitignore? (Y/n) ');
378
+ }
379
+ if (shouldAdd) {
380
+ // Append .modestbench/ to existing .gitignore
381
+ let contentToAppend = '';
382
+ // Ensure file ends with newline
383
+ if (!existingContent.endsWith('\n')) {
384
+ contentToAppend += '\n';
385
+ }
386
+ // Add a blank line if the file doesn't end with one
387
+ if (!existingContent.endsWith('\n\n') && existingContent.trim() !== '') {
388
+ contentToAppend += '\n';
389
+ }
390
+ // Add comment and entry
391
+ contentToAppend += '# ModestBench history\n';
392
+ contentToAppend += modestbenchEntry + '\n';
393
+ await (0, promises_1.appendFile)(gitignorePath, contentToAppend, 'utf8');
394
+ if (options.verbose || !options.quiet) {
395
+ console.log(' ✓ Added .modestbench/ to .gitignore');
396
+ }
397
+ }
398
+ else {
399
+ if (options.verbose) {
400
+ console.log(' ⊘ Skipped adding .modestbench/ to .gitignore');
401
+ }
402
+ }
403
+ }
404
+ catch (error) {
405
+ // Non-critical, just warn
406
+ console.warn('Warning: Could not create/modify .gitignore file:', error instanceof Error ? error.message : String(error));
407
+ }
408
+ };
409
+ /**
410
+ * Create additional project files
411
+ */
412
+ const createAdditionalFiles = async (options) => {
413
+ if (!options.quiet) {
414
+ console.log('Creating additional files...');
415
+ }
416
+ // Handle .gitignore
417
+ await handleGitignore(options);
418
+ // Create README.md
419
+ const readmeContent = `# Benchmark Project
420
+
421
+ This project uses [ModestBench](https://github.com/your-org/modestbench) for performance testing.
422
+
423
+ ## Getting Started
424
+
425
+ Run all benchmarks:
426
+ \`\`\`bash
427
+ modestbench run
428
+ \`\`\`
429
+
430
+ Run specific benchmarks:
431
+ \`\`\`bash
432
+ modestbench run "benchmarks/array-*.bench.js"
433
+ \`\`\`
434
+
435
+ View benchmark history:
436
+ \`\`\`bash
437
+ modestbench history list
438
+ \`\`\`
439
+
440
+ ## Configuration
441
+
442
+ See \`modestbench.config.*\` for benchmark configuration options.
443
+
444
+ ## Writing Benchmarks
445
+
446
+ Create new benchmark files in the \`benchmarks/\` directory. See the examples for the expected format.
447
+ `;
448
+ try {
449
+ const readmePath = (0, node_path_1.resolve)(options.cwd, 'README.md');
450
+ await (0, promises_1.writeFile)(readmePath, readmeContent, 'utf8');
451
+ if (options.verbose) {
452
+ console.log(' ✓ README.md');
453
+ }
454
+ }
455
+ catch {
456
+ // Non-critical, just warn
457
+ console.warn('Warning: Could not create README.md file');
458
+ }
459
+ };
460
+ /**
461
+ * Create configuration file
462
+ */
463
+ const createConfigFile = async (configOptions, options) => {
464
+ const filename = `modestbench.config.${options.configType}`;
465
+ const filePath = (0, node_path_1.resolve)(options.cwd, filename);
466
+ if (!options.quiet) {
467
+ console.log(`Creating configuration file: ${filename}`);
468
+ }
469
+ let content;
470
+ switch (options.configType) {
471
+ case 'js':
472
+ content = `export default ${JSON.stringify(configOptions, null, 2)};\n`;
473
+ break;
474
+ case 'json':
475
+ content = JSON.stringify(configOptions, null, 2);
476
+ break;
477
+ case 'ts':
478
+ content = `import type { ModestBenchConfig } from 'modestbench';
479
+
480
+ const config: ModestBenchConfig = ${JSON.stringify(configOptions, null, 2)};
481
+
482
+ export default config;
483
+ `;
484
+ break;
485
+ case 'yaml':
486
+ // Simple YAML generation (could use a proper YAML library)
487
+ content = generateSimpleYaml(configOptions);
488
+ break;
489
+ default:
490
+ throw new Error(`Unsupported config format: ${options.configType}`);
491
+ }
492
+ try {
493
+ await (0, promises_1.writeFile)(filePath, content, 'utf8');
494
+ if (options.verbose) {
495
+ console.log(` ✓ ${filename}`);
496
+ }
497
+ }
498
+ catch (error) {
499
+ throw new Error(`Failed to create config file: ${error instanceof Error ? error.message : String(error)}`);
500
+ }
501
+ };
502
+ /**
503
+ * Create directory structure
504
+ */
505
+ const createDirectories = async (directories, options) => {
506
+ if (!options.quiet) {
507
+ console.log('Creating directories...');
508
+ }
509
+ for (const dir of directories) {
510
+ const dirPath = (0, node_path_1.resolve)(options.cwd, dir);
511
+ try {
512
+ await (0, promises_1.mkdir)(dirPath, { recursive: true });
513
+ if (options.verbose) {
514
+ console.log(` ✓ ${dir}/`);
515
+ }
516
+ }
517
+ catch (error) {
518
+ throw new Error(`Failed to create directory ${dir}: ${error instanceof Error ? error.message : String(error)}`);
519
+ }
520
+ }
521
+ };
522
+ /**
523
+ * Create example benchmark files
524
+ */
525
+ const createExampleBenchmarks = async (options) => {
526
+ if (!options.quiet) {
527
+ console.log('Creating example benchmarks...');
528
+ }
529
+ const benchmarksDir = (0, node_path_1.resolve)(options.cwd, 'benchmarks');
530
+ for (const [name, example] of Object.entries(EXAMPLE_BENCHMARKS)) {
531
+ const filePath = (0, node_path_1.join)(benchmarksDir, example.filename);
532
+ try {
533
+ await (0, promises_1.writeFile)(filePath, example.content, 'utf8');
534
+ if (options.verbose) {
535
+ console.log(` ✓ ${example.filename}`);
536
+ }
537
+ }
538
+ catch (error) {
539
+ throw new Error(`Failed to create example ${name}: ${error instanceof Error ? error.message : String(error)}`);
540
+ }
541
+ }
542
+ };
543
+ /**
544
+ * Generate simple YAML from object (basic implementation)
545
+ */
546
+ const generateSimpleYaml = (obj, indent = 0) => {
547
+ const spaces = ' '.repeat(indent);
548
+ let yaml = '';
549
+ for (const [key, value] of Object.entries(obj)) {
550
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
551
+ yaml += `${spaces}${key}:\n${generateSimpleYaml(value, indent + 2)}`;
552
+ }
553
+ else if (Array.isArray(value)) {
554
+ yaml += `${spaces}${key}:\n`;
555
+ for (const item of value) {
556
+ yaml += `${spaces} - ${item}\n`;
557
+ }
558
+ }
559
+ else {
560
+ const formattedValue = typeof value === 'string' ? `"${value}"` : value;
561
+ yaml += `${spaces}${key}: ${formattedValue}\n`;
562
+ }
563
+ }
564
+ return yaml;
565
+ };
566
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ModestBench Init Command
3
+ *
4
+ * Initialize a new benchmark project with configuration files, directory
5
+ * structure, and optional example benchmark files.
6
+ */
7
+ import type { CliContext } from "../index.cjs";
8
+ /**
9
+ * Init command options interface
10
+ */
11
+ interface InitOptions {
12
+ configType: 'js' | 'json' | 'ts' | 'yaml';
13
+ cwd: string;
14
+ examples: boolean;
15
+ force?: boolean | undefined;
16
+ quiet?: boolean | undefined;
17
+ type: 'advanced' | 'basic' | 'library';
18
+ verbose?: boolean | undefined;
19
+ yes?: boolean | undefined;
20
+ }
21
+ /**
22
+ * Handle init command
23
+ */
24
+ export declare const handleInitCommand: (context: CliContext, options: InitOptions) => Promise<number>;
25
+ export {};
26
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAoB;AAE9C;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAkOD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,UAAU,EACnB,SAAS,WAAW,KACnB,OAAO,CAAC,MAAM,CAkEhB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ModestBench Init Command
3
+ *
4
+ * Initialize a new benchmark project with configuration files, directory
5
+ * structure, and optional example benchmark files.
6
+ */
7
+ import type { CliContext } from "../index.js";
8
+ /**
9
+ * Init command options interface
10
+ */
11
+ interface InitOptions {
12
+ configType: 'js' | 'json' | 'ts' | 'yaml';
13
+ cwd: string;
14
+ examples: boolean;
15
+ force?: boolean | undefined;
16
+ quiet?: boolean | undefined;
17
+ type: 'advanced' | 'basic' | 'library';
18
+ verbose?: boolean | undefined;
19
+ yes?: boolean | undefined;
20
+ }
21
+ /**
22
+ * Handle init command
23
+ */
24
+ export declare const handleInitCommand: (context: CliContext, options: InitOptions) => Promise<number>;
25
+ export {};
26
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB;AAE9C;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAkOD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,UAAU,EACnB,SAAS,WAAW,KACnB,OAAO,CAAC,MAAM,CAkEhB,CAAC"}