modestbench 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +37 -4
  3. package/dist/adapters/types.d.cts +1 -1
  4. package/dist/adapters/types.d.cts.map +1 -1
  5. package/dist/adapters/types.d.ts +1 -1
  6. package/dist/adapters/types.d.ts.map +1 -1
  7. package/dist/cli/commands/baseline.cjs +8 -8
  8. package/dist/cli/commands/baseline.cjs.map +1 -1
  9. package/dist/cli/commands/baseline.js +8 -8
  10. package/dist/cli/commands/baseline.js.map +1 -1
  11. package/dist/cli/commands/init.cjs +2 -2
  12. package/dist/cli/commands/init.cjs.map +1 -1
  13. package/dist/cli/commands/init.js +2 -2
  14. package/dist/cli/commands/init.js.map +1 -1
  15. package/dist/cli/commands/run.cjs +12 -8
  16. package/dist/cli/commands/run.cjs.map +1 -1
  17. package/dist/cli/commands/run.d.cts +1 -13
  18. package/dist/cli/commands/run.d.cts.map +1 -1
  19. package/dist/cli/commands/run.d.ts +1 -13
  20. package/dist/cli/commands/run.d.ts.map +1 -1
  21. package/dist/cli/commands/run.js +11 -7
  22. package/dist/cli/commands/run.js.map +1 -1
  23. package/dist/cli/commands/test.cjs +1 -1
  24. package/dist/cli/commands/test.cjs.map +1 -1
  25. package/dist/cli/commands/test.js +1 -1
  26. package/dist/cli/commands/test.js.map +1 -1
  27. package/dist/cli/index.cjs +655 -870
  28. package/dist/cli/index.cjs.map +1 -1
  29. package/dist/cli/index.d.cts +27 -17
  30. package/dist/cli/index.d.cts.map +1 -1
  31. package/dist/cli/index.d.ts +27 -17
  32. package/dist/cli/index.d.ts.map +1 -1
  33. package/dist/cli/index.js +657 -869
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/{core → config}/benchmark-schema.cjs +1 -1
  36. package/dist/config/benchmark-schema.cjs.map +1 -0
  37. package/dist/config/benchmark-schema.d.cts +913 -0
  38. package/dist/config/benchmark-schema.d.cts.map +1 -0
  39. package/dist/config/benchmark-schema.d.ts +913 -0
  40. package/dist/config/benchmark-schema.d.ts.map +1 -0
  41. package/dist/{core → config}/benchmark-schema.js +1 -1
  42. package/dist/config/benchmark-schema.js.map +1 -0
  43. package/dist/config/budget-schema.cjs +1 -1
  44. package/dist/config/budget-schema.cjs.map +1 -1
  45. package/dist/config/budget-schema.js +1 -1
  46. package/dist/config/budget-schema.js.map +1 -1
  47. package/dist/config/schema.cjs +188 -105
  48. package/dist/config/schema.cjs.map +1 -1
  49. package/dist/config/schema.d.cts +208 -80
  50. package/dist/config/schema.d.cts.map +1 -1
  51. package/dist/config/schema.d.ts +208 -80
  52. package/dist/config/schema.d.ts.map +1 -1
  53. package/dist/config/schema.js +187 -104
  54. package/dist/config/schema.js.map +1 -1
  55. package/dist/core/engine.cjs +50 -45
  56. package/dist/core/engine.cjs.map +1 -1
  57. package/dist/core/engine.d.cts.map +1 -1
  58. package/dist/core/engine.d.ts.map +1 -1
  59. package/dist/core/engine.js +50 -45
  60. package/dist/core/engine.js.map +1 -1
  61. package/dist/core/engines/accurate-engine.cjs +1 -1
  62. package/dist/core/engines/accurate-engine.cjs.map +1 -1
  63. package/dist/core/engines/accurate-engine.d.cts.map +1 -1
  64. package/dist/core/engines/accurate-engine.d.ts.map +1 -1
  65. package/dist/core/engines/accurate-engine.js +1 -1
  66. package/dist/core/engines/accurate-engine.js.map +1 -1
  67. package/dist/core/output-path-resolver.cjs +15 -1
  68. package/dist/core/output-path-resolver.cjs.map +1 -1
  69. package/dist/core/output-path-resolver.d.cts +8 -0
  70. package/dist/core/output-path-resolver.d.cts.map +1 -1
  71. package/dist/core/output-path-resolver.d.ts +8 -0
  72. package/dist/core/output-path-resolver.d.ts.map +1 -1
  73. package/dist/core/output-path-resolver.js +13 -0
  74. package/dist/core/output-path-resolver.js.map +1 -1
  75. package/dist/formatters/history/compare.cjs +6 -6
  76. package/dist/formatters/history/compare.cjs.map +1 -1
  77. package/dist/formatters/history/compare.js +6 -6
  78. package/dist/formatters/history/compare.js.map +1 -1
  79. package/dist/formatters/history/show.cjs +2 -2
  80. package/dist/formatters/history/show.cjs.map +1 -1
  81. package/dist/formatters/history/show.js +2 -2
  82. package/dist/formatters/history/show.js.map +1 -1
  83. package/dist/formatters/history/trends.cjs +1 -1
  84. package/dist/formatters/history/trends.cjs.map +1 -1
  85. package/dist/formatters/history/trends.js +1 -1
  86. package/dist/formatters/history/trends.js.map +1 -1
  87. package/dist/reporters/human.cjs +3 -3
  88. package/dist/reporters/human.cjs.map +1 -1
  89. package/dist/reporters/human.d.cts.map +1 -1
  90. package/dist/reporters/human.d.ts.map +1 -1
  91. package/dist/reporters/human.js +3 -3
  92. package/dist/reporters/human.js.map +1 -1
  93. package/dist/reporters/json.cjs +1 -1
  94. package/dist/reporters/json.cjs.map +1 -1
  95. package/dist/reporters/json.js +1 -1
  96. package/dist/reporters/json.js.map +1 -1
  97. package/dist/reporters/nyan.cjs +1 -1
  98. package/dist/reporters/nyan.cjs.map +1 -1
  99. package/dist/reporters/nyan.js +1 -1
  100. package/dist/reporters/nyan.js.map +1 -1
  101. package/dist/schema/modestbench-config.schema.json +94 -87
  102. package/dist/services/budget-evaluator.cjs +10 -8
  103. package/dist/services/budget-evaluator.cjs.map +1 -1
  104. package/dist/services/budget-evaluator.d.cts +2 -2
  105. package/dist/services/budget-evaluator.d.cts.map +1 -1
  106. package/dist/services/budget-evaluator.d.ts +2 -2
  107. package/dist/services/budget-evaluator.d.ts.map +1 -1
  108. package/dist/services/budget-evaluator.js +10 -8
  109. package/dist/services/budget-evaluator.js.map +1 -1
  110. package/dist/services/budget-resolver.cjs +214 -0
  111. package/dist/services/budget-resolver.cjs.map +1 -0
  112. package/dist/services/budget-resolver.d.cts +98 -0
  113. package/dist/services/budget-resolver.d.cts.map +1 -0
  114. package/dist/services/budget-resolver.d.ts +98 -0
  115. package/dist/services/budget-resolver.d.ts.map +1 -0
  116. package/dist/services/budget-resolver.js +203 -0
  117. package/dist/services/budget-resolver.js.map +1 -0
  118. package/dist/services/config-manager.cjs +2 -2
  119. package/dist/services/config-manager.cjs.map +1 -1
  120. package/dist/services/config-manager.js +2 -2
  121. package/dist/services/config-manager.js.map +1 -1
  122. package/dist/services/file-loader.cjs +1 -1
  123. package/dist/services/file-loader.cjs.map +1 -1
  124. package/dist/services/file-loader.js +1 -1
  125. package/dist/services/file-loader.js.map +1 -1
  126. package/dist/services/reporter-registry.cjs +8 -8
  127. package/dist/services/reporter-registry.cjs.map +1 -1
  128. package/dist/services/reporter-registry.js +8 -8
  129. package/dist/services/reporter-registry.js.map +1 -1
  130. package/dist/types/budgets.d.cts +31 -0
  131. package/dist/types/budgets.d.cts.map +1 -1
  132. package/dist/types/budgets.d.ts +31 -0
  133. package/dist/types/budgets.d.ts.map +1 -1
  134. package/dist/types/core.cjs.map +1 -1
  135. package/dist/types/core.d.cts +28 -75
  136. package/dist/types/core.d.cts.map +1 -1
  137. package/dist/types/core.d.ts +28 -75
  138. package/dist/types/core.d.ts.map +1 -1
  139. package/dist/types/core.js.map +1 -1
  140. package/package.json +24 -15
  141. package/src/adapters/types.ts +1 -1
  142. package/src/cli/commands/baseline.ts +8 -8
  143. package/src/cli/commands/init.ts +2 -2
  144. package/src/cli/commands/run.ts +18 -6
  145. package/src/cli/commands/test.ts +1 -1
  146. package/src/cli/index.ts +806 -942
  147. package/src/{core → config}/benchmark-schema.ts +1 -1
  148. package/src/config/budget-schema.ts +1 -1
  149. package/src/config/schema.ts +379 -302
  150. package/src/core/engine.ts +74 -69
  151. package/src/core/engines/accurate-engine.ts +1 -1
  152. package/src/core/output-path-resolver.ts +14 -0
  153. package/src/formatters/history/compare.ts +6 -6
  154. package/src/formatters/history/show.ts +2 -2
  155. package/src/formatters/history/trends.ts +1 -1
  156. package/src/reporters/human.ts +5 -3
  157. package/src/reporters/json.ts +1 -1
  158. package/src/reporters/nyan.ts +1 -1
  159. package/src/services/budget-evaluator.ts +15 -11
  160. package/src/services/budget-resolver.ts +254 -0
  161. package/src/services/config-manager.ts +2 -2
  162. package/src/services/file-loader.ts +1 -1
  163. package/src/services/reporter-registry.ts +8 -8
  164. package/src/types/budgets.ts +38 -0
  165. package/src/types/core.ts +64 -99
  166. package/dist/core/benchmark-schema.cjs.map +0 -1
  167. package/dist/core/benchmark-schema.d.cts +0 -139
  168. package/dist/core/benchmark-schema.d.cts.map +0 -1
  169. package/dist/core/benchmark-schema.d.ts +0 -139
  170. package/dist/core/benchmark-schema.d.ts.map +0 -1
  171. package/dist/core/benchmark-schema.js.map +0 -1
@@ -11,11 +11,15 @@ import type {
11
11
  BenchmarkRun,
12
12
  ModestBenchConfig,
13
13
  Reporter,
14
+ ReporterConfig,
14
15
  } from '../../types/index.js';
15
16
  import type { CliContext } from '../index.js';
16
17
 
17
18
  import { ErrorCodes, ExitCodes } from '../../constants.js';
18
- import { resolveOutputPath } from '../../core/output-path-resolver.js';
19
+ import {
20
+ generateTimestampedFilename,
21
+ resolveOutputPath,
22
+ } from '../../core/output-path-resolver.js';
19
23
  import {
20
24
  type BudgetExceededError,
21
25
  InvalidArgumentError,
@@ -42,7 +46,7 @@ import { hasErrorCode, isError } from '../../utils/type-guards.js';
42
46
  * arguments provide values. They represent sensible defaults for running
43
47
  * benchmarks.
44
48
  */
45
- export const RUN_COMMAND_DEFAULTS = {
49
+ const RUN_COMMAND_DEFAULTS = {
46
50
  bail: false,
47
51
  quiet: false,
48
52
  reporters: ['human'],
@@ -61,6 +65,7 @@ interface RunOptions {
61
65
  excludeTags?: string[] | undefined;
62
66
  iterations?: number | undefined;
63
67
  json?: boolean | undefined;
68
+ jsonPretty?: boolean | undefined;
64
69
  noColor?: boolean | undefined;
65
70
  outputDir?: string | undefined;
66
71
  outputFile?: string | undefined;
@@ -126,6 +131,7 @@ export const handleRunCommand = async (
126
131
  options.outputDir,
127
132
  options.outputFile,
128
133
  options.progress,
134
+ options.jsonPretty,
129
135
  );
130
136
 
131
137
  // Step 3: Discovery phase
@@ -389,7 +395,7 @@ const setupReporters = async (
389
395
  context: CliContext,
390
396
  config: {
391
397
  outputDir?: string;
392
- reporterConfig?: Record<string, unknown>;
398
+ reporterConfig?: ReporterConfig;
393
399
  reporters?: string[];
394
400
  },
395
401
  isVerbose: boolean,
@@ -398,6 +404,7 @@ const setupReporters = async (
398
404
  explicitOutputDir?: string,
399
405
  explicitOutputFile?: string,
400
406
  progressOption?: boolean,
407
+ explicitJsonPretty?: boolean,
401
408
  ): Promise<Reporter[]> => {
402
409
  try {
403
410
  const reporters: Reporter[] = [];
@@ -426,7 +433,7 @@ const setupReporters = async (
426
433
  const outputPath = resolveOutputPath(
427
434
  outputDir,
428
435
  explicitOutputFile,
429
- 'results.csv',
436
+ generateTimestampedFilename('csv'),
430
437
  );
431
438
  reporter = new CsvReporter({
432
439
  includeHeaders: true,
@@ -451,11 +458,16 @@ const setupReporters = async (
451
458
  const outputPath = resolveOutputPath(
452
459
  outputDir,
453
460
  explicitOutputFile,
454
- 'results.json',
461
+ generateTimestampedFilename('json'),
455
462
  );
463
+ // Precedence: CLI flag > config file > default (false)
464
+ const prettyPrint =
465
+ explicitJsonPretty ??
466
+ config.reporterConfig?.json?.prettyPrint ??
467
+ false;
456
468
  reporter = new JsonReporter({
457
469
  ...(outputPath ? { outputPath } : {}),
458
- prettyPrint: true,
470
+ prettyPrint,
459
471
  });
460
472
  break;
461
473
  }
@@ -55,7 +55,7 @@ const getDefaultTestConfig = (
55
55
  tags: [],
56
56
  thresholds: {},
57
57
  time: 1000,
58
- timeout: 30000,
58
+ timeout: 30_000,
59
59
  verbose,
60
60
  warmup,
61
61
  });