modestbench 0.0.3 → 0.2.0
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.
- package/CHANGELOG.md +26 -0
- package/README.md +39 -31
- package/dist/bootstrap.cjs +10 -12
- package/dist/bootstrap.cjs.map +1 -1
- package/dist/bootstrap.d.cts.map +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +5 -7
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli/commands/history.cjs +108 -265
- package/dist/cli/commands/history.cjs.map +1 -1
- package/dist/cli/commands/history.d.cts +75 -12
- package/dist/cli/commands/history.d.cts.map +1 -1
- package/dist/cli/commands/history.d.ts +75 -12
- package/dist/cli/commands/history.d.ts.map +1 -1
- package/dist/cli/commands/history.js +105 -267
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/init.cjs +5 -4
- package/dist/cli/commands/init.cjs.map +1 -1
- package/dist/cli/commands/init.d.cts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +5 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.cjs +32 -9
- package/dist/cli/commands/run.cjs.map +1 -1
- package/dist/cli/commands/run.d.cts +1 -0
- package/dist/cli/commands/run.d.cts.map +1 -1
- package/dist/cli/commands/run.d.ts +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +32 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.cjs +336 -103
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.cts +1 -2
- package/dist/cli/index.d.cts.map +1 -1
- package/dist/cli/index.d.ts +1 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +332 -99
- package/dist/cli/index.js.map +1 -1
- package/dist/constants.cjs +53 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +36 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.ts +36 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +52 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/engine.cjs +23 -43
- package/dist/core/engine.cjs.map +1 -1
- package/dist/core/engine.d.cts +4 -3
- package/dist/core/engine.d.cts.map +1 -1
- package/dist/core/engine.d.ts +4 -3
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +23 -43
- package/dist/core/engine.js.map +1 -1
- package/dist/core/engines/accurate-engine.cjs +2 -1
- package/dist/core/engines/accurate-engine.cjs.map +1 -1
- package/dist/core/engines/accurate-engine.d.cts.map +1 -1
- package/dist/core/engines/accurate-engine.d.ts.map +1 -1
- package/dist/core/engines/accurate-engine.js +2 -1
- package/dist/core/engines/accurate-engine.js.map +1 -1
- package/dist/core/engines/tinybench-engine.cjs +6 -5
- package/dist/core/engines/tinybench-engine.cjs.map +1 -1
- package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
- package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
- package/dist/core/engines/tinybench-engine.js +6 -5
- package/dist/core/engines/tinybench-engine.js.map +1 -1
- package/dist/core/output-path-resolver.cjs +34 -0
- package/dist/core/output-path-resolver.cjs.map +1 -0
- package/dist/core/output-path-resolver.d.cts +10 -0
- package/dist/core/output-path-resolver.d.cts.map +1 -0
- package/dist/core/output-path-resolver.d.ts +10 -0
- package/dist/core/output-path-resolver.d.ts.map +1 -0
- package/dist/core/output-path-resolver.js +30 -0
- package/dist/core/output-path-resolver.js.map +1 -0
- package/dist/errors/base.cjs +130 -0
- package/dist/errors/base.cjs.map +1 -0
- package/dist/errors/base.d.cts +97 -0
- package/dist/errors/base.d.cts.map +1 -0
- package/dist/errors/base.d.ts +97 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +124 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/cli.cjs +58 -0
- package/dist/errors/cli.cjs.map +1 -0
- package/dist/errors/cli.d.cts +44 -0
- package/dist/errors/cli.d.cts.map +1 -0
- package/dist/errors/cli.d.ts +44 -0
- package/dist/errors/cli.d.ts.map +1 -0
- package/dist/errors/cli.js +52 -0
- package/dist/errors/cli.js.map +1 -0
- package/dist/errors/configuration.cjs +48 -0
- package/dist/errors/configuration.cjs.map +1 -0
- package/dist/errors/configuration.d.cts +41 -0
- package/dist/errors/configuration.d.cts.map +1 -0
- package/dist/errors/configuration.d.ts +41 -0
- package/dist/errors/configuration.d.ts.map +1 -0
- package/dist/errors/configuration.js +41 -0
- package/dist/errors/configuration.js.map +1 -0
- package/dist/errors/execution.cjs +65 -0
- package/dist/errors/execution.cjs.map +1 -0
- package/dist/errors/execution.d.cts +56 -0
- package/dist/errors/execution.d.cts.map +1 -0
- package/dist/errors/execution.d.ts +56 -0
- package/dist/errors/execution.d.ts.map +1 -0
- package/dist/errors/execution.js +56 -0
- package/dist/errors/execution.js.map +1 -0
- package/dist/errors/file.cjs +56 -0
- package/dist/errors/file.cjs.map +1 -0
- package/dist/errors/file.d.cts +48 -0
- package/dist/errors/file.d.cts.map +1 -0
- package/dist/errors/file.d.ts +48 -0
- package/dist/errors/file.d.ts.map +1 -0
- package/dist/errors/file.js +48 -0
- package/dist/errors/file.js.map +1 -0
- package/dist/errors/index.cjs +59 -0
- package/dist/errors/index.cjs.map +1 -0
- package/dist/errors/index.d.cts +16 -0
- package/dist/errors/index.d.cts.map +1 -0
- package/dist/errors/index.d.ts +16 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +24 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/reporter.cjs +38 -0
- package/dist/errors/reporter.cjs.map +1 -0
- package/dist/errors/reporter.d.cts +32 -0
- package/dist/errors/reporter.d.cts.map +1 -0
- package/dist/errors/reporter.d.ts +32 -0
- package/dist/errors/reporter.d.ts.map +1 -0
- package/dist/errors/reporter.js +32 -0
- package/dist/errors/reporter.js.map +1 -0
- package/dist/errors/storage.cjs +55 -0
- package/dist/errors/storage.cjs.map +1 -0
- package/dist/errors/storage.d.cts +47 -0
- package/dist/errors/storage.d.cts.map +1 -0
- package/dist/errors/storage.d.ts +47 -0
- package/dist/errors/storage.d.ts.map +1 -0
- package/dist/errors/storage.js +47 -0
- package/dist/errors/storage.js.map +1 -0
- package/dist/errors/validation.cjs +38 -0
- package/dist/errors/validation.cjs.map +1 -0
- package/dist/errors/validation.d.cts +32 -0
- package/dist/errors/validation.d.cts.map +1 -0
- package/dist/errors/validation.d.ts +32 -0
- package/dist/errors/validation.d.ts.map +1 -0
- package/dist/errors/validation.js +32 -0
- package/dist/errors/validation.js.map +1 -0
- package/dist/formatters/history/base.cjs +9 -0
- package/dist/formatters/history/base.cjs.map +1 -0
- package/dist/formatters/history/base.d.cts +26 -0
- package/dist/formatters/history/base.d.cts.map +1 -0
- package/dist/formatters/history/base.d.ts +26 -0
- package/dist/formatters/history/base.d.ts.map +1 -0
- package/dist/formatters/history/base.js +8 -0
- package/dist/formatters/history/base.js.map +1 -0
- package/dist/formatters/history/compare.cjs +127 -0
- package/dist/formatters/history/compare.cjs.map +1 -0
- package/dist/formatters/history/compare.d.cts +21 -0
- package/dist/formatters/history/compare.d.cts.map +1 -0
- package/dist/formatters/history/compare.d.ts +21 -0
- package/dist/formatters/history/compare.d.ts.map +1 -0
- package/dist/formatters/history/compare.js +123 -0
- package/dist/formatters/history/compare.js.map +1 -0
- package/dist/formatters/history/list.cjs +74 -0
- package/dist/formatters/history/list.cjs.map +1 -0
- package/dist/formatters/history/list.d.cts +25 -0
- package/dist/formatters/history/list.d.cts.map +1 -0
- package/dist/formatters/history/list.d.ts +25 -0
- package/dist/formatters/history/list.d.ts.map +1 -0
- package/dist/formatters/history/list.js +70 -0
- package/dist/formatters/history/list.js.map +1 -0
- package/dist/formatters/history/show.cjs +98 -0
- package/dist/formatters/history/show.cjs.map +1 -0
- package/dist/formatters/history/show.d.cts +21 -0
- package/dist/formatters/history/show.d.cts.map +1 -0
- package/dist/formatters/history/show.d.ts +21 -0
- package/dist/formatters/history/show.d.ts.map +1 -0
- package/dist/formatters/history/show.js +94 -0
- package/dist/formatters/history/show.js.map +1 -0
- package/dist/formatters/history/trends.cjs +194 -0
- package/dist/formatters/history/trends.cjs.map +1 -0
- package/dist/formatters/history/trends.d.cts +22 -0
- package/dist/formatters/history/trends.d.cts.map +1 -0
- package/dist/formatters/history/trends.d.ts +22 -0
- package/dist/formatters/history/trends.d.ts.map +1 -0
- package/dist/formatters/history/trends.js +190 -0
- package/dist/formatters/history/trends.js.map +1 -0
- package/dist/formatters/history/visualization.cjs +79 -0
- package/dist/formatters/history/visualization.cjs.map +1 -0
- package/dist/formatters/history/visualization.d.cts +24 -0
- package/dist/formatters/history/visualization.d.cts.map +1 -0
- package/dist/formatters/history/visualization.d.ts +24 -0
- package/dist/formatters/history/visualization.d.ts.map +1 -0
- package/dist/formatters/history/visualization.js +74 -0
- package/dist/formatters/history/visualization.js.map +1 -0
- package/dist/index.cjs +17 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -11
- package/dist/index.js.map +1 -1
- package/dist/reporters/csv.cjs +5 -4
- package/dist/reporters/csv.cjs.map +1 -1
- package/dist/reporters/csv.d.cts +1 -1
- package/dist/reporters/csv.d.cts.map +1 -1
- package/dist/reporters/csv.d.ts +1 -1
- package/dist/reporters/csv.d.ts.map +1 -1
- package/dist/reporters/csv.js +4 -3
- package/dist/reporters/csv.js.map +1 -1
- package/dist/reporters/human.cjs +24 -62
- package/dist/reporters/human.cjs.map +1 -1
- package/dist/reporters/human.d.cts +1 -1
- package/dist/reporters/human.d.cts.map +1 -1
- package/dist/reporters/human.d.ts +1 -1
- package/dist/reporters/human.d.ts.map +1 -1
- package/dist/reporters/human.js +3 -41
- package/dist/reporters/human.js.map +1 -1
- package/dist/reporters/json.cjs +5 -4
- package/dist/reporters/json.cjs.map +1 -1
- package/dist/reporters/json.d.cts +1 -1
- package/dist/reporters/json.d.cts.map +1 -1
- package/dist/reporters/json.d.ts +1 -1
- package/dist/reporters/json.d.ts.map +1 -1
- package/dist/reporters/json.js +4 -3
- package/dist/reporters/json.js.map +1 -1
- package/dist/reporters/simple.cjs +3 -3
- package/dist/reporters/simple.cjs.map +1 -1
- package/dist/reporters/simple.d.cts +1 -1
- package/dist/reporters/simple.d.cts.map +1 -1
- package/dist/reporters/simple.d.ts +1 -1
- package/dist/reporters/simple.d.ts.map +1 -1
- package/dist/reporters/simple.js +2 -2
- package/dist/reporters/simple.js.map +1 -1
- package/dist/{config/manager.cjs → services/config-manager.cjs} +10 -4
- package/dist/services/config-manager.cjs.map +1 -0
- package/dist/{config/manager.d.cts → services/config-manager.d.cts} +1 -1
- package/dist/services/config-manager.d.cts.map +1 -0
- package/dist/{config/manager.d.ts → services/config-manager.d.ts} +1 -1
- package/dist/services/config-manager.d.ts.map +1 -0
- package/dist/{config/manager.js → services/config-manager.js} +10 -4
- package/dist/services/config-manager.js.map +1 -0
- package/dist/{core/loader.cjs → services/file-loader.cjs} +18 -7
- package/dist/services/file-loader.cjs.map +1 -0
- package/dist/{core/loader.d.cts → services/file-loader.d.cts} +1 -1
- package/dist/services/file-loader.d.cts.map +1 -0
- package/dist/{core/loader.d.ts → services/file-loader.d.ts} +1 -1
- package/dist/services/file-loader.d.ts.map +1 -0
- package/dist/{core/loader.js → services/file-loader.js} +18 -7
- package/dist/services/file-loader.js.map +1 -0
- package/dist/services/history/comparison.cjs +124 -0
- package/dist/services/history/comparison.cjs.map +1 -0
- package/dist/services/history/comparison.d.cts +18 -0
- package/dist/services/history/comparison.d.cts.map +1 -0
- package/dist/services/history/comparison.d.ts +18 -0
- package/dist/services/history/comparison.d.ts.map +1 -0
- package/dist/services/history/comparison.js +120 -0
- package/dist/services/history/comparison.js.map +1 -0
- package/dist/services/history/models.cjs +9 -0
- package/dist/services/history/models.cjs.map +1 -0
- package/dist/services/history/models.d.cts +139 -0
- package/dist/services/history/models.d.cts.map +1 -0
- package/dist/services/history/models.d.ts +139 -0
- package/dist/services/history/models.d.ts.map +1 -0
- package/dist/services/history/models.js +8 -0
- package/dist/services/history/models.js.map +1 -0
- package/dist/services/history/query.cjs +97 -0
- package/dist/services/history/query.cjs.map +1 -0
- package/dist/services/history/query.d.cts +38 -0
- package/dist/services/history/query.d.cts.map +1 -0
- package/dist/services/history/query.d.ts +38 -0
- package/dist/services/history/query.d.ts.map +1 -0
- package/dist/services/history/query.js +92 -0
- package/dist/services/history/query.js.map +1 -0
- package/dist/services/history/trend-analysis.cjs +187 -0
- package/dist/services/history/trend-analysis.cjs.map +1 -0
- package/dist/services/history/trend-analysis.d.cts +34 -0
- package/dist/services/history/trend-analysis.d.cts.map +1 -0
- package/dist/services/history/trend-analysis.d.ts +34 -0
- package/dist/services/history/trend-analysis.d.ts.map +1 -0
- package/dist/services/history/trend-analysis.js +179 -0
- package/dist/services/history/trend-analysis.js.map +1 -0
- package/dist/{storage/history.cjs → services/history-storage.cjs} +33 -12
- package/dist/services/history-storage.cjs.map +1 -0
- package/dist/{storage/history.d.cts → services/history-storage.d.cts} +1 -1
- package/dist/services/history-storage.d.cts.map +1 -0
- package/dist/{storage/history.d.ts → services/history-storage.d.ts} +1 -1
- package/dist/services/history-storage.d.ts.map +1 -0
- package/dist/{storage/history.js → services/history-storage.js} +33 -12
- package/dist/services/history-storage.js.map +1 -0
- package/dist/{progress/manager.cjs → services/progress-manager.cjs} +1 -1
- package/dist/services/progress-manager.cjs.map +1 -0
- package/dist/{progress/manager.d.cts → services/progress-manager.d.cts} +1 -1
- package/dist/services/progress-manager.d.cts.map +1 -0
- package/dist/{progress/manager.d.ts → services/progress-manager.d.ts} +1 -1
- package/dist/services/progress-manager.d.ts.map +1 -0
- package/dist/{progress/manager.js → services/progress-manager.js} +1 -1
- package/dist/services/progress-manager.js.map +1 -0
- package/dist/{reporters/registry.cjs → services/reporter-registry.cjs} +4 -3
- package/dist/services/reporter-registry.cjs.map +1 -0
- package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +1 -1
- package/dist/services/reporter-registry.d.cts.map +1 -0
- package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +1 -1
- package/dist/services/reporter-registry.d.ts.map +1 -0
- package/dist/{reporters/registry.js → services/reporter-registry.js} +4 -3
- package/dist/services/reporter-registry.js.map +1 -0
- package/dist/types/cli.d.cts +3 -0
- package/dist/types/cli.d.cts.map +1 -1
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/interfaces.d.cts +1 -34
- package/dist/types/interfaces.d.cts.map +1 -1
- package/dist/types/interfaces.d.ts +1 -34
- package/dist/types/interfaces.d.ts.map +1 -1
- package/dist/utils/ansi.cjs +61 -0
- package/dist/utils/ansi.cjs.map +1 -0
- package/dist/utils/ansi.d.cts +53 -0
- package/dist/utils/ansi.d.cts.map +1 -0
- package/dist/utils/ansi.d.ts +53 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +57 -0
- package/dist/utils/ansi.js.map +1 -0
- package/package.json +10 -8
- package/src/bootstrap.ts +5 -7
- package/src/cli/commands/history.ts +195 -341
- package/src/cli/commands/init.ts +14 -4
- package/src/cli/commands/run.ts +52 -7
- package/src/cli/index.ts +393 -119
- package/src/constants.ts +60 -0
- package/src/core/engine.ts +40 -48
- package/src/core/engines/accurate-engine.ts +4 -1
- package/src/core/engines/tinybench-engine.ts +12 -5
- package/src/core/output-path-resolver.ts +38 -0
- package/src/errors/base.ts +152 -0
- package/src/errors/cli.ts +59 -0
- package/src/errors/configuration.ts +45 -0
- package/src/errors/execution.ts +62 -0
- package/src/errors/file.ts +53 -0
- package/src/errors/index.ts +71 -0
- package/src/errors/reporter.ts +35 -0
- package/src/errors/storage.ts +52 -0
- package/src/errors/validation.ts +35 -0
- package/src/formatters/history/base.ts +28 -0
- package/src/formatters/history/compare.ts +186 -0
- package/src/formatters/history/list.ts +101 -0
- package/src/formatters/history/show.ts +155 -0
- package/src/formatters/history/trends.ts +281 -0
- package/src/formatters/history/visualization.ts +93 -0
- package/src/index.ts +10 -14
- package/src/reporters/csv.ts +5 -3
- package/src/reporters/human.ts +3 -43
- package/src/reporters/json.ts +5 -3
- package/src/reporters/simple.ts +2 -2
- package/src/{config/manager.ts → services/config-manager.ts} +13 -3
- package/src/{core/loader.ts → services/file-loader.ts} +28 -6
- package/src/services/history/comparison.ts +130 -0
- package/src/services/history/models.ts +148 -0
- package/src/services/history/query.ts +116 -0
- package/src/services/history/trend-analysis.ts +238 -0
- package/src/{storage/history.ts → services/history-storage.ts} +58 -11
- package/src/{reporters/registry.ts → services/reporter-registry.ts} +9 -2
- package/src/types/cli.ts +3 -0
- package/src/types/interfaces.ts +0 -43
- package/src/utils/ansi.ts +59 -0
- package/dist/config/manager.cjs.map +0 -1
- package/dist/config/manager.d.cts.map +0 -1
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/manager.js.map +0 -1
- package/dist/core/error-manager.cjs +0 -303
- package/dist/core/error-manager.cjs.map +0 -1
- package/dist/core/error-manager.d.cts +0 -77
- package/dist/core/error-manager.d.cts.map +0 -1
- package/dist/core/error-manager.d.ts +0 -77
- package/dist/core/error-manager.d.ts.map +0 -1
- package/dist/core/error-manager.js +0 -299
- package/dist/core/error-manager.js.map +0 -1
- package/dist/core/loader.cjs.map +0 -1
- package/dist/core/loader.d.cts.map +0 -1
- package/dist/core/loader.d.ts.map +0 -1
- package/dist/core/loader.js.map +0 -1
- package/dist/progress/manager.cjs.map +0 -1
- package/dist/progress/manager.d.cts.map +0 -1
- package/dist/progress/manager.d.ts.map +0 -1
- package/dist/progress/manager.js.map +0 -1
- package/dist/reporters/registry.cjs.map +0 -1
- package/dist/reporters/registry.d.cts.map +0 -1
- package/dist/reporters/registry.d.ts.map +0 -1
- package/dist/reporters/registry.js.map +0 -1
- package/dist/storage/history.cjs.map +0 -1
- package/dist/storage/history.d.cts.map +0 -1
- package/dist/storage/history.d.ts.map +0 -1
- package/dist/storage/history.js.map +0 -1
- package/src/core/error-manager.ts +0 -372
- /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage-related errors
|
|
3
|
+
*
|
|
4
|
+
* Errors that occur during history storage operations.
|
|
5
|
+
*/
|
|
6
|
+
import { ModestBenchError } from "./base.js";
|
|
7
|
+
/**
|
|
8
|
+
* Storage data corruption
|
|
9
|
+
*
|
|
10
|
+
* Thrown when stored data is found to be corrupted or invalid.
|
|
11
|
+
*/
|
|
12
|
+
export class StorageCorruptionError extends ModestBenchError {
|
|
13
|
+
code = 'ERR_MB_STORAGE_CORRUPTION';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Storage operation failed
|
|
17
|
+
*
|
|
18
|
+
* Thrown when a general storage operation fails.
|
|
19
|
+
*/
|
|
20
|
+
export class StorageError extends ModestBenchError {
|
|
21
|
+
code = 'ERR_MB_STORAGE_FAILED';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Storage index corruption
|
|
25
|
+
*
|
|
26
|
+
* Thrown when the storage index is corrupted or cannot be read.
|
|
27
|
+
*/
|
|
28
|
+
export class StorageIndexError extends ModestBenchError {
|
|
29
|
+
code = 'ERR_MB_STORAGE_INDEX_CORRUPTION';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Insufficient storage space
|
|
33
|
+
*
|
|
34
|
+
* Thrown when there is insufficient disk space for storage operations.
|
|
35
|
+
*/
|
|
36
|
+
export class StorageSpaceError extends ModestBenchError {
|
|
37
|
+
code = 'ERR_MB_STORAGE_INSUFFICIENT_SPACE';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Unsupported export format
|
|
41
|
+
*
|
|
42
|
+
* Thrown when attempting to export data in an unsupported format.
|
|
43
|
+
*/
|
|
44
|
+
export class UnsupportedExportFormatError extends ModestBenchError {
|
|
45
|
+
code = 'ERR_MB_STORAGE_EXPORT_UNSUPPORTED';
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/errors/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB;AAE7C;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,2BAA2B,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IACvC,IAAI,GAAG,uBAAuB,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC5C,IAAI,GAAG,iCAAiC,CAAC;CACnD;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC5C,IAAI,GAAG,mCAAmC,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,OAAO,4BAA6B,SAAQ,gBAAgB;IACvD,IAAI,GAAG,mCAAmC,CAAC;CACrD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validation-related errors
|
|
4
|
+
*
|
|
5
|
+
* Errors that occur during benchmark file structure and data validation.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.TypeValidationError = exports.StructureValidationError = exports.SchemaValidationError = void 0;
|
|
9
|
+
const base_js_1 = require("./base.cjs");
|
|
10
|
+
/**
|
|
11
|
+
* Schema validation failed
|
|
12
|
+
*
|
|
13
|
+
* Thrown when data fails to validate against a Zod schema or other schema
|
|
14
|
+
* validation.
|
|
15
|
+
*/
|
|
16
|
+
class SchemaValidationError extends base_js_1.ModestBenchError {
|
|
17
|
+
code = 'ERR_MB_VALIDATION_SCHEMA_FAILED';
|
|
18
|
+
}
|
|
19
|
+
exports.SchemaValidationError = SchemaValidationError;
|
|
20
|
+
/**
|
|
21
|
+
* Invalid benchmark structure
|
|
22
|
+
*
|
|
23
|
+
* Thrown when a benchmark file has an invalid or unexpected structure.
|
|
24
|
+
*/
|
|
25
|
+
class StructureValidationError extends base_js_1.ModestBenchError {
|
|
26
|
+
code = 'ERR_MB_VALIDATION_STRUCTURE_INVALID';
|
|
27
|
+
}
|
|
28
|
+
exports.StructureValidationError = StructureValidationError;
|
|
29
|
+
/**
|
|
30
|
+
* Type validation failed
|
|
31
|
+
*
|
|
32
|
+
* Thrown when data fails type validation checks.
|
|
33
|
+
*/
|
|
34
|
+
class TypeValidationError extends base_js_1.ModestBenchError {
|
|
35
|
+
code = 'ERR_MB_VALIDATION_TYPE_FAILED';
|
|
36
|
+
}
|
|
37
|
+
exports.TypeValidationError = TypeValidationError;
|
|
38
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/errors/validation.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wCAA6C;AAE7C;;;;;GAKG;AACH,MAAa,qBAAsB,SAAQ,0BAAgB;IAChD,IAAI,GAAG,iCAAiC,CAAC;CACnD;AAFD,sDAEC;AAED;;;;GAIG;AACH,MAAa,wBAAyB,SAAQ,0BAAgB;IACnD,IAAI,GAAG,qCAAqC,CAAC;CACvD;AAFD,4DAEC;AAED;;;;GAIG;AACH,MAAa,mBAAoB,SAAQ,0BAAgB;IAC9C,IAAI,GAAG,+BAA+B,CAAC;CACjD;AAFD,kDAEC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation-related errors
|
|
3
|
+
*
|
|
4
|
+
* Errors that occur during benchmark file structure and data validation.
|
|
5
|
+
*/
|
|
6
|
+
import { ModestBenchError } from "./base.cjs";
|
|
7
|
+
/**
|
|
8
|
+
* Schema validation failed
|
|
9
|
+
*
|
|
10
|
+
* Thrown when data fails to validate against a Zod schema or other schema
|
|
11
|
+
* validation.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SchemaValidationError extends ModestBenchError {
|
|
14
|
+
readonly code = "ERR_MB_VALIDATION_SCHEMA_FAILED";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Invalid benchmark structure
|
|
18
|
+
*
|
|
19
|
+
* Thrown when a benchmark file has an invalid or unexpected structure.
|
|
20
|
+
*/
|
|
21
|
+
export declare class StructureValidationError extends ModestBenchError {
|
|
22
|
+
readonly code = "ERR_MB_VALIDATION_STRUCTURE_INVALID";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Type validation failed
|
|
26
|
+
*
|
|
27
|
+
* Thrown when data fails type validation checks.
|
|
28
|
+
*/
|
|
29
|
+
export declare class TypeValidationError extends ModestBenchError {
|
|
30
|
+
readonly code = "ERR_MB_VALIDATION_TYPE_FAILED";
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/errors/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAkB;AAE7C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,IAAI,qCAAqC;CACnD;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,yCAAyC;CACvD;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,IAAI,mCAAmC;CACjD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation-related errors
|
|
3
|
+
*
|
|
4
|
+
* Errors that occur during benchmark file structure and data validation.
|
|
5
|
+
*/
|
|
6
|
+
import { ModestBenchError } from "./base.js";
|
|
7
|
+
/**
|
|
8
|
+
* Schema validation failed
|
|
9
|
+
*
|
|
10
|
+
* Thrown when data fails to validate against a Zod schema or other schema
|
|
11
|
+
* validation.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SchemaValidationError extends ModestBenchError {
|
|
14
|
+
readonly code = "ERR_MB_VALIDATION_SCHEMA_FAILED";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Invalid benchmark structure
|
|
18
|
+
*
|
|
19
|
+
* Thrown when a benchmark file has an invalid or unexpected structure.
|
|
20
|
+
*/
|
|
21
|
+
export declare class StructureValidationError extends ModestBenchError {
|
|
22
|
+
readonly code = "ERR_MB_VALIDATION_STRUCTURE_INVALID";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Type validation failed
|
|
26
|
+
*
|
|
27
|
+
* Thrown when data fails type validation checks.
|
|
28
|
+
*/
|
|
29
|
+
export declare class TypeValidationError extends ModestBenchError {
|
|
30
|
+
readonly code = "ERR_MB_VALIDATION_TYPE_FAILED";
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/errors/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB;AAE7C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,IAAI,qCAAqC;CACnD;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,yCAAyC;CACvD;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,IAAI,mCAAmC;CACjD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation-related errors
|
|
3
|
+
*
|
|
4
|
+
* Errors that occur during benchmark file structure and data validation.
|
|
5
|
+
*/
|
|
6
|
+
import { ModestBenchError } from "./base.js";
|
|
7
|
+
/**
|
|
8
|
+
* Schema validation failed
|
|
9
|
+
*
|
|
10
|
+
* Thrown when data fails to validate against a Zod schema or other schema
|
|
11
|
+
* validation.
|
|
12
|
+
*/
|
|
13
|
+
export class SchemaValidationError extends ModestBenchError {
|
|
14
|
+
code = 'ERR_MB_VALIDATION_SCHEMA_FAILED';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Invalid benchmark structure
|
|
18
|
+
*
|
|
19
|
+
* Thrown when a benchmark file has an invalid or unexpected structure.
|
|
20
|
+
*/
|
|
21
|
+
export class StructureValidationError extends ModestBenchError {
|
|
22
|
+
code = 'ERR_MB_VALIDATION_STRUCTURE_INVALID';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Type validation failed
|
|
26
|
+
*
|
|
27
|
+
* Thrown when data fails type validation checks.
|
|
28
|
+
*/
|
|
29
|
+
export class TypeValidationError extends ModestBenchError {
|
|
30
|
+
code = 'ERR_MB_VALIDATION_TYPE_FAILED';
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/errors/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB;AAE7C;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IAChD,IAAI,GAAG,iCAAiC,CAAC;CACnD;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IACnD,IAAI,GAAG,qCAAqC,CAAC;CACvD;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IAC9C,IAAI,GAAG,+BAA+B,CAAC;CACjD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base Formatter Interface
|
|
4
|
+
*
|
|
5
|
+
* Defines the contract for history command formatters. Each formatter
|
|
6
|
+
* transforms processed data into human-readable or machine-readable output.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/formatters/history/base.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Formatter Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for history command formatters. Each formatter
|
|
5
|
+
* transforms processed data into human-readable or machine-readable output.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Formatter interface for history command output
|
|
9
|
+
*
|
|
10
|
+
* @template TData - The data type this formatter accepts
|
|
11
|
+
*/
|
|
12
|
+
export interface HistoryFormatter<TData> {
|
|
13
|
+
/**
|
|
14
|
+
* Format data as CSV (optional, not all commands support CSV)
|
|
15
|
+
*/
|
|
16
|
+
formatCsv?(data: TData): string;
|
|
17
|
+
/**
|
|
18
|
+
* Format data for human-readable terminal output
|
|
19
|
+
*/
|
|
20
|
+
formatHuman(data: TData): string;
|
|
21
|
+
/**
|
|
22
|
+
* Format data as JSON
|
|
23
|
+
*/
|
|
24
|
+
formatJson(data: TData): string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/formatters/history/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC;;OAEG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAEhC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAEjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Formatter Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for history command formatters. Each formatter
|
|
5
|
+
* transforms processed data into human-readable or machine-readable output.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Formatter interface for history command output
|
|
9
|
+
*
|
|
10
|
+
* @template TData - The data type this formatter accepts
|
|
11
|
+
*/
|
|
12
|
+
export interface HistoryFormatter<TData> {
|
|
13
|
+
/**
|
|
14
|
+
* Format data as CSV (optional, not all commands support CSV)
|
|
15
|
+
*/
|
|
16
|
+
formatCsv?(data: TData): string;
|
|
17
|
+
/**
|
|
18
|
+
* Format data for human-readable terminal output
|
|
19
|
+
*/
|
|
20
|
+
formatHuman(data: TData): string;
|
|
21
|
+
/**
|
|
22
|
+
* Format data as JSON
|
|
23
|
+
*/
|
|
24
|
+
formatJson(data: TData): string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/formatters/history/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC;;OAEG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAEhC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAEjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/formatters/history/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Compare Formatter
|
|
4
|
+
*
|
|
5
|
+
* Formats benchmark run comparison results in human and JSON formats.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.HistoryCompareFormatter = void 0;
|
|
9
|
+
const ansi_js_1 = require("../../utils/ansi.cjs");
|
|
10
|
+
const ansi_js_2 = require("../../utils/ansi.cjs");
|
|
11
|
+
/**
|
|
12
|
+
* Formatter for history compare command
|
|
13
|
+
*/
|
|
14
|
+
class HistoryCompareFormatter {
|
|
15
|
+
/**
|
|
16
|
+
* Format as human-readable comparison
|
|
17
|
+
*/
|
|
18
|
+
formatHuman(data) {
|
|
19
|
+
const lines = [];
|
|
20
|
+
lines.push((0, ansi_js_1.colorize)('brightMagenta', (0, ansi_js_1.colorize)('bold', 'Comparing runs:')));
|
|
21
|
+
lines.push(` ${(0, ansi_js_1.colorize)('brightCyan', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('brightWhite', (0, ansi_js_1.colorize)('bold', 'Run 1'))} ${(0, ansi_js_1.colorize)('dim', data.run1.id)} (${(0, ansi_js_1.colorize)('white', data.run1.startTime.toLocaleString())})`);
|
|
22
|
+
lines.push(` ${(0, ansi_js_1.colorize)('brightCyan', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('brightWhite', (0, ansi_js_1.colorize)('bold', 'Run 2'))} ${(0, ansi_js_1.colorize)('dim', data.run2.id)} (${(0, ansi_js_1.colorize)('white', data.run2.startTime.toLocaleString())})`);
|
|
23
|
+
lines.push('');
|
|
24
|
+
lines.push((0, ansi_js_1.colorize)('cyan', 'Summary comparison:'));
|
|
25
|
+
lines.push('');
|
|
26
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.smallSquare)} Files: ${(0, ansi_js_1.colorize)('brightWhite', String(data.run1.summary.totalFiles))} vs ${(0, ansi_js_1.colorize)('brightWhite', String(data.run2.summary.totalFiles))}`);
|
|
27
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.smallSquare)} Tasks: ${(0, ansi_js_1.colorize)('brightWhite', String(data.run1.summary.totalTasks))} vs ${(0, ansi_js_1.colorize)('brightWhite', String(data.run2.summary.totalTasks))}`);
|
|
28
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.smallSquare)} Passed: ${(0, ansi_js_1.colorize)('brightCyan', String(data.run1.summary.passedTasks))} vs ${(0, ansi_js_1.colorize)('brightCyan', String(data.run2.summary.passedTasks))}`);
|
|
29
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.smallSquare)} Failed: ${(0, ansi_js_1.colorize)('brightRed', (0, ansi_js_1.colorize)('bold', String(data.run1.summary.failedTasks)))} vs ${(0, ansi_js_1.colorize)('brightRed', (0, ansi_js_1.colorize)('bold', String(data.run2.summary.failedTasks)))}`);
|
|
30
|
+
lines.push('');
|
|
31
|
+
// Detailed task comparison
|
|
32
|
+
if (data.tasksInBoth.length > 0) {
|
|
33
|
+
lines.push((0, ansi_js_1.colorize)('cyan', 'Task-by-task comparison:'));
|
|
34
|
+
lines.push('');
|
|
35
|
+
for (const comparison of data.tasksInBoth) {
|
|
36
|
+
const mean1 = comparison.run1.mean / 1000000; // Convert to ms
|
|
37
|
+
const mean2 = comparison.run2.mean / 1000000;
|
|
38
|
+
const changeSign = comparison.percentChange >= 0 ? '+' : '';
|
|
39
|
+
const changeStr = `${changeSign}${comparison.percentChange.toFixed(1)}%`;
|
|
40
|
+
lines.push(` ${(0, ansi_js_1.colorize)('brightWhite', `${comparison.suite} › ${comparison.task}`)}`);
|
|
41
|
+
// Mean - highlight higher (slower/worse) number
|
|
42
|
+
const meanHigher = mean2 > mean1;
|
|
43
|
+
const mean1Str = meanHigher
|
|
44
|
+
? (0, ansi_js_1.colorize)('magenta', `${mean1.toFixed(3)}ms`)
|
|
45
|
+
: (0, ansi_js_1.colorize)('brightMagenta', `${mean1.toFixed(3)}ms`);
|
|
46
|
+
const mean2Str = meanHigher
|
|
47
|
+
? (0, ansi_js_1.colorize)('brightMagenta', `${mean2.toFixed(3)}ms`)
|
|
48
|
+
: (0, ansi_js_1.colorize)('magenta', `${mean2.toFixed(3)}ms`);
|
|
49
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('white', 'Mean:')} ${mean1Str} ${(0, ansi_js_1.colorize)('dim', '→')} ${mean2Str} ${(0, ansi_js_1.colorize)('dim', `(${(0, ansi_js_1.colorize)('white', changeStr)}`)}`);
|
|
50
|
+
// Min - highlight higher number
|
|
51
|
+
const min1 = comparison.run1.min / 1000000;
|
|
52
|
+
const min2 = comparison.run2.min / 1000000;
|
|
53
|
+
const minHigher = min2 > min1;
|
|
54
|
+
const min1Str = minHigher
|
|
55
|
+
? (0, ansi_js_1.colorize)('magenta', `${min1.toFixed(3)}ms`)
|
|
56
|
+
: (0, ansi_js_1.colorize)('brightMagenta', `${min1.toFixed(3)}ms`);
|
|
57
|
+
const min2Str = minHigher
|
|
58
|
+
? (0, ansi_js_1.colorize)('brightMagenta', `${min2.toFixed(3)}ms`)
|
|
59
|
+
: (0, ansi_js_1.colorize)('magenta', `${min2.toFixed(3)}ms`);
|
|
60
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('white', 'Min:')} ${min1Str} ${(0, ansi_js_1.colorize)('dim', '→')} ${min2Str}`);
|
|
61
|
+
// Max - highlight higher number
|
|
62
|
+
const max1 = comparison.run1.max / 1000000;
|
|
63
|
+
const max2 = comparison.run2.max / 1000000;
|
|
64
|
+
const maxHigher = max2 > max1;
|
|
65
|
+
const max1Str = maxHigher
|
|
66
|
+
? (0, ansi_js_1.colorize)('magenta', `${max1.toFixed(3)}ms`)
|
|
67
|
+
: (0, ansi_js_1.colorize)('brightMagenta', `${max1.toFixed(3)}ms`);
|
|
68
|
+
const max2Str = maxHigher
|
|
69
|
+
? (0, ansi_js_1.colorize)('brightMagenta', `${max2.toFixed(3)}ms`)
|
|
70
|
+
: (0, ansi_js_1.colorize)('magenta', `${max2.toFixed(3)}ms`);
|
|
71
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('white', 'Max:')} ${max1Str} ${(0, ansi_js_1.colorize)('dim', '→')} ${max2Str}`);
|
|
72
|
+
// Iterations - highlight higher number
|
|
73
|
+
const iter1 = comparison.run1.iterations;
|
|
74
|
+
const iter2 = comparison.run2.iterations;
|
|
75
|
+
const iterHigher = iter2 > iter1;
|
|
76
|
+
const iter1Str = iterHigher
|
|
77
|
+
? (0, ansi_js_1.colorize)('brightWhite', String(iter1))
|
|
78
|
+
: (0, ansi_js_1.colorize)('bold', (0, ansi_js_1.colorize)('brightWhite', String(iter1)));
|
|
79
|
+
const iter2Str = iterHigher
|
|
80
|
+
? (0, ansi_js_1.colorize)('bold', (0, ansi_js_1.colorize)('brightWhite', String(iter2)))
|
|
81
|
+
: (0, ansi_js_1.colorize)('brightWhite', String(iter2));
|
|
82
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('white', 'Iterations:')} ${iter1Str} ${(0, ansi_js_1.colorize)('dim', 'vs')} ${iter2Str}`);
|
|
83
|
+
// CV (Coefficient of Variation) - shows measurement consistency
|
|
84
|
+
const cv1 = comparison.run1.cv * 100;
|
|
85
|
+
const cv2 = comparison.run2.cv * 100;
|
|
86
|
+
const cvHigher = cv2 > cv1;
|
|
87
|
+
const cv1Str = cvHigher
|
|
88
|
+
? (0, ansi_js_1.colorize)('magenta', `${cv1.toFixed(2)}%`)
|
|
89
|
+
: (0, ansi_js_1.colorize)('brightMagenta', `${cv1.toFixed(2)}%`);
|
|
90
|
+
const cv2Str = cvHigher
|
|
91
|
+
? (0, ansi_js_1.colorize)('brightMagenta', `${cv2.toFixed(2)}%`)
|
|
92
|
+
: (0, ansi_js_1.colorize)('magenta', `${cv2.toFixed(2)}%`);
|
|
93
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('white', 'CV:')} ${cv1Str} ${(0, ansi_js_1.colorize)('dim', '→')} ${cv2Str}`);
|
|
94
|
+
lines.push('');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (data.tasksOnlyInRun1.length > 0) {
|
|
98
|
+
lines.push((0, ansi_js_1.colorize)('cyan', `Tasks only in run 1 (${data.tasksOnlyInRun1.length}):`));
|
|
99
|
+
for (const task of data.tasksOnlyInRun1) {
|
|
100
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('brightWhite', `${task.suite} › ${task.task}`)}`);
|
|
101
|
+
}
|
|
102
|
+
lines.push('');
|
|
103
|
+
}
|
|
104
|
+
if (data.tasksOnlyInRun2.length > 0) {
|
|
105
|
+
lines.push((0, ansi_js_1.colorize)('cyan', `Tasks only in run 2 (${data.tasksOnlyInRun2.length}):`));
|
|
106
|
+
for (const task of data.tasksOnlyInRun2) {
|
|
107
|
+
lines.push(` ${(0, ansi_js_1.colorize)('dim', ansi_js_2.ansiChars.bullet)} ${(0, ansi_js_1.colorize)('brightWhite', `${task.suite} › ${task.task}`)}`);
|
|
108
|
+
}
|
|
109
|
+
lines.push('');
|
|
110
|
+
}
|
|
111
|
+
return lines.join('\n');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Format as JSON
|
|
115
|
+
*/
|
|
116
|
+
formatJson(data) {
|
|
117
|
+
return JSON.stringify({
|
|
118
|
+
run1: data.run1,
|
|
119
|
+
run2: data.run2,
|
|
120
|
+
taskComparisons: data.tasksInBoth,
|
|
121
|
+
tasksOnlyInRun1: data.tasksOnlyInRun1,
|
|
122
|
+
tasksOnlyInRun2: data.tasksOnlyInRun2,
|
|
123
|
+
}, null, 2);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.HistoryCompareFormatter = HistoryCompareFormatter;
|
|
127
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/formatters/history/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compare Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats benchmark run comparison results in human and JSON formats.
|
|
5
|
+
*/
|
|
6
|
+
import type { CompareResult } from "../../services/history/models.cjs";
|
|
7
|
+
import type { HistoryFormatter } from "./base.cjs";
|
|
8
|
+
/**
|
|
9
|
+
* Formatter for history compare command
|
|
10
|
+
*/
|
|
11
|
+
export declare class HistoryCompareFormatter implements HistoryFormatter<CompareResult> {
|
|
12
|
+
/**
|
|
13
|
+
* Format as human-readable comparison
|
|
14
|
+
*/
|
|
15
|
+
formatHuman(data: CompareResult): string;
|
|
16
|
+
/**
|
|
17
|
+
* Format as JSON
|
|
18
|
+
*/
|
|
19
|
+
formatJson(data: CompareResult): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/formatters/history/compare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,0CAAyC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAkB;AAKlD;;GAEG;AACH,qBAAa,uBACX,YAAW,gBAAgB,CAAC,aAAa,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAoJxC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAaxC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compare Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats benchmark run comparison results in human and JSON formats.
|
|
5
|
+
*/
|
|
6
|
+
import type { CompareResult } from "../../services/history/models.js";
|
|
7
|
+
import type { HistoryFormatter } from "./base.js";
|
|
8
|
+
/**
|
|
9
|
+
* Formatter for history compare command
|
|
10
|
+
*/
|
|
11
|
+
export declare class HistoryCompareFormatter implements HistoryFormatter<CompareResult> {
|
|
12
|
+
/**
|
|
13
|
+
* Format as human-readable comparison
|
|
14
|
+
*/
|
|
15
|
+
formatHuman(data: CompareResult): string;
|
|
16
|
+
/**
|
|
17
|
+
* Format as JSON
|
|
18
|
+
*/
|
|
19
|
+
formatJson(data: CompareResult): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/formatters/history/compare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,yCAAyC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB;AAKlD;;GAEG;AACH,qBAAa,uBACX,YAAW,gBAAgB,CAAC,aAAa,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAoJxC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAaxC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compare Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats benchmark run comparison results in human and JSON formats.
|
|
5
|
+
*/
|
|
6
|
+
import { colorize } from "../../utils/ansi.js";
|
|
7
|
+
import { ansiChars } from "../../utils/ansi.js";
|
|
8
|
+
/**
|
|
9
|
+
* Formatter for history compare command
|
|
10
|
+
*/
|
|
11
|
+
export class HistoryCompareFormatter {
|
|
12
|
+
/**
|
|
13
|
+
* Format as human-readable comparison
|
|
14
|
+
*/
|
|
15
|
+
formatHuman(data) {
|
|
16
|
+
const lines = [];
|
|
17
|
+
lines.push(colorize('brightMagenta', colorize('bold', 'Comparing runs:')));
|
|
18
|
+
lines.push(` ${colorize('brightCyan', ansiChars.bullet)} ${colorize('brightWhite', colorize('bold', 'Run 1'))} ${colorize('dim', data.run1.id)} (${colorize('white', data.run1.startTime.toLocaleString())})`);
|
|
19
|
+
lines.push(` ${colorize('brightCyan', ansiChars.bullet)} ${colorize('brightWhite', colorize('bold', 'Run 2'))} ${colorize('dim', data.run2.id)} (${colorize('white', data.run2.startTime.toLocaleString())})`);
|
|
20
|
+
lines.push('');
|
|
21
|
+
lines.push(colorize('cyan', 'Summary comparison:'));
|
|
22
|
+
lines.push('');
|
|
23
|
+
lines.push(` ${colorize('dim', ansiChars.smallSquare)} Files: ${colorize('brightWhite', String(data.run1.summary.totalFiles))} vs ${colorize('brightWhite', String(data.run2.summary.totalFiles))}`);
|
|
24
|
+
lines.push(` ${colorize('dim', ansiChars.smallSquare)} Tasks: ${colorize('brightWhite', String(data.run1.summary.totalTasks))} vs ${colorize('brightWhite', String(data.run2.summary.totalTasks))}`);
|
|
25
|
+
lines.push(` ${colorize('dim', ansiChars.smallSquare)} Passed: ${colorize('brightCyan', String(data.run1.summary.passedTasks))} vs ${colorize('brightCyan', String(data.run2.summary.passedTasks))}`);
|
|
26
|
+
lines.push(` ${colorize('dim', ansiChars.smallSquare)} Failed: ${colorize('brightRed', colorize('bold', String(data.run1.summary.failedTasks)))} vs ${colorize('brightRed', colorize('bold', String(data.run2.summary.failedTasks)))}`);
|
|
27
|
+
lines.push('');
|
|
28
|
+
// Detailed task comparison
|
|
29
|
+
if (data.tasksInBoth.length > 0) {
|
|
30
|
+
lines.push(colorize('cyan', 'Task-by-task comparison:'));
|
|
31
|
+
lines.push('');
|
|
32
|
+
for (const comparison of data.tasksInBoth) {
|
|
33
|
+
const mean1 = comparison.run1.mean / 1000000; // Convert to ms
|
|
34
|
+
const mean2 = comparison.run2.mean / 1000000;
|
|
35
|
+
const changeSign = comparison.percentChange >= 0 ? '+' : '';
|
|
36
|
+
const changeStr = `${changeSign}${comparison.percentChange.toFixed(1)}%`;
|
|
37
|
+
lines.push(` ${colorize('brightWhite', `${comparison.suite} › ${comparison.task}`)}`);
|
|
38
|
+
// Mean - highlight higher (slower/worse) number
|
|
39
|
+
const meanHigher = mean2 > mean1;
|
|
40
|
+
const mean1Str = meanHigher
|
|
41
|
+
? colorize('magenta', `${mean1.toFixed(3)}ms`)
|
|
42
|
+
: colorize('brightMagenta', `${mean1.toFixed(3)}ms`);
|
|
43
|
+
const mean2Str = meanHigher
|
|
44
|
+
? colorize('brightMagenta', `${mean2.toFixed(3)}ms`)
|
|
45
|
+
: colorize('magenta', `${mean2.toFixed(3)}ms`);
|
|
46
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('white', 'Mean:')} ${mean1Str} ${colorize('dim', '→')} ${mean2Str} ${colorize('dim', `(${colorize('white', changeStr)}`)}`);
|
|
47
|
+
// Min - highlight higher number
|
|
48
|
+
const min1 = comparison.run1.min / 1000000;
|
|
49
|
+
const min2 = comparison.run2.min / 1000000;
|
|
50
|
+
const minHigher = min2 > min1;
|
|
51
|
+
const min1Str = minHigher
|
|
52
|
+
? colorize('magenta', `${min1.toFixed(3)}ms`)
|
|
53
|
+
: colorize('brightMagenta', `${min1.toFixed(3)}ms`);
|
|
54
|
+
const min2Str = minHigher
|
|
55
|
+
? colorize('brightMagenta', `${min2.toFixed(3)}ms`)
|
|
56
|
+
: colorize('magenta', `${min2.toFixed(3)}ms`);
|
|
57
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('white', 'Min:')} ${min1Str} ${colorize('dim', '→')} ${min2Str}`);
|
|
58
|
+
// Max - highlight higher number
|
|
59
|
+
const max1 = comparison.run1.max / 1000000;
|
|
60
|
+
const max2 = comparison.run2.max / 1000000;
|
|
61
|
+
const maxHigher = max2 > max1;
|
|
62
|
+
const max1Str = maxHigher
|
|
63
|
+
? colorize('magenta', `${max1.toFixed(3)}ms`)
|
|
64
|
+
: colorize('brightMagenta', `${max1.toFixed(3)}ms`);
|
|
65
|
+
const max2Str = maxHigher
|
|
66
|
+
? colorize('brightMagenta', `${max2.toFixed(3)}ms`)
|
|
67
|
+
: colorize('magenta', `${max2.toFixed(3)}ms`);
|
|
68
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('white', 'Max:')} ${max1Str} ${colorize('dim', '→')} ${max2Str}`);
|
|
69
|
+
// Iterations - highlight higher number
|
|
70
|
+
const iter1 = comparison.run1.iterations;
|
|
71
|
+
const iter2 = comparison.run2.iterations;
|
|
72
|
+
const iterHigher = iter2 > iter1;
|
|
73
|
+
const iter1Str = iterHigher
|
|
74
|
+
? colorize('brightWhite', String(iter1))
|
|
75
|
+
: colorize('bold', colorize('brightWhite', String(iter1)));
|
|
76
|
+
const iter2Str = iterHigher
|
|
77
|
+
? colorize('bold', colorize('brightWhite', String(iter2)))
|
|
78
|
+
: colorize('brightWhite', String(iter2));
|
|
79
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('white', 'Iterations:')} ${iter1Str} ${colorize('dim', 'vs')} ${iter2Str}`);
|
|
80
|
+
// CV (Coefficient of Variation) - shows measurement consistency
|
|
81
|
+
const cv1 = comparison.run1.cv * 100;
|
|
82
|
+
const cv2 = comparison.run2.cv * 100;
|
|
83
|
+
const cvHigher = cv2 > cv1;
|
|
84
|
+
const cv1Str = cvHigher
|
|
85
|
+
? colorize('magenta', `${cv1.toFixed(2)}%`)
|
|
86
|
+
: colorize('brightMagenta', `${cv1.toFixed(2)}%`);
|
|
87
|
+
const cv2Str = cvHigher
|
|
88
|
+
? colorize('brightMagenta', `${cv2.toFixed(2)}%`)
|
|
89
|
+
: colorize('magenta', `${cv2.toFixed(2)}%`);
|
|
90
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('white', 'CV:')} ${cv1Str} ${colorize('dim', '→')} ${cv2Str}`);
|
|
91
|
+
lines.push('');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (data.tasksOnlyInRun1.length > 0) {
|
|
95
|
+
lines.push(colorize('cyan', `Tasks only in run 1 (${data.tasksOnlyInRun1.length}):`));
|
|
96
|
+
for (const task of data.tasksOnlyInRun1) {
|
|
97
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('brightWhite', `${task.suite} › ${task.task}`)}`);
|
|
98
|
+
}
|
|
99
|
+
lines.push('');
|
|
100
|
+
}
|
|
101
|
+
if (data.tasksOnlyInRun2.length > 0) {
|
|
102
|
+
lines.push(colorize('cyan', `Tasks only in run 2 (${data.tasksOnlyInRun2.length}):`));
|
|
103
|
+
for (const task of data.tasksOnlyInRun2) {
|
|
104
|
+
lines.push(` ${colorize('dim', ansiChars.bullet)} ${colorize('brightWhite', `${task.suite} › ${task.task}`)}`);
|
|
105
|
+
}
|
|
106
|
+
lines.push('');
|
|
107
|
+
}
|
|
108
|
+
return lines.join('\n');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Format as JSON
|
|
112
|
+
*/
|
|
113
|
+
formatJson(data) {
|
|
114
|
+
return JSON.stringify({
|
|
115
|
+
run1: data.run1,
|
|
116
|
+
run2: data.run2,
|
|
117
|
+
taskComparisons: data.tasksInBoth,
|
|
118
|
+
tasksOnlyInRun1: data.tasksOnlyInRun1,
|
|
119
|
+
tasksOnlyInRun2: data.tasksOnlyInRun2,
|
|
120
|
+
}, null, 2);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/formatters/history/compare.ts"],"names":[],"mappings":"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"}
|