modestbench 0.1.0 → 0.3.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 +31 -0
- package/README.md +162 -57
- package/dist/bootstrap.cjs +10 -10
- 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 -5
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli/commands/analyze.cjs +60 -0
- package/dist/cli/commands/analyze.cjs.map +1 -0
- package/dist/cli/commands/analyze.d.cts +35 -0
- package/dist/cli/commands/analyze.d.cts.map +1 -0
- package/dist/cli/commands/analyze.d.ts +35 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +56 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/baseline.cjs +404 -0
- package/dist/cli/commands/baseline.cjs.map +1 -0
- package/dist/cli/commands/baseline.d.cts +72 -0
- package/dist/cli/commands/baseline.d.cts.map +1 -0
- package/dist/cli/commands/baseline.d.ts +72 -0
- package/dist/cli/commands/baseline.d.ts.map +1 -0
- package/dist/cli/commands/baseline.js +396 -0
- package/dist/cli/commands/baseline.js.map +1 -0
- package/dist/cli/commands/history.cjs +108 -266
- 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 -268
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/init.cjs +88 -155
- package/dist/cli/commands/init.cjs.map +1 -1
- package/dist/cli/commands/init.d.cts +4 -4
- package/dist/cli/commands/init.d.cts.map +1 -1
- package/dist/cli/commands/init.d.ts +4 -4
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +88 -155
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.cjs +143 -112
- package/dist/cli/commands/run.cjs.map +1 -1
- package/dist/cli/commands/run.d.cts +17 -3
- package/dist/cli/commands/run.d.cts.map +1 -1
- package/dist/cli/commands/run.d.ts +17 -3
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +142 -78
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.cjs +671 -266
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.cts +4 -16
- package/dist/cli/index.d.cts.map +1 -1
- package/dist/cli/index.d.ts +4 -16
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +664 -259
- package/dist/cli/index.js.map +1 -1
- package/dist/config/budget-schema.cjs +172 -0
- package/dist/config/budget-schema.cjs.map +1 -0
- package/dist/config/budget-schema.d.cts +59 -0
- package/dist/config/budget-schema.d.cts.map +1 -0
- package/dist/config/budget-schema.d.ts +59 -0
- package/dist/config/budget-schema.d.ts.map +1 -0
- package/dist/config/budget-schema.js +166 -0
- package/dist/config/budget-schema.js.map +1 -0
- package/dist/config/schema.cjs +182 -2
- package/dist/config/schema.cjs.map +1 -1
- package/dist/config/schema.d.cts +122 -3
- package/dist/config/schema.d.cts.map +1 -1
- package/dist/config/schema.d.ts +122 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +180 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.cjs +45 -2
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +41 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.ts +41 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +44 -1
- package/dist/constants.js.map +1 -1
- package/dist/core/engine.cjs +104 -15
- package/dist/core/engine.cjs.map +1 -1
- package/dist/core/engine.d.cts +7 -4
- package/dist/core/engine.d.cts.map +1 -1
- package/dist/core/engine.d.ts +7 -4
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +105 -16
- package/dist/core/engine.js.map +1 -1
- package/dist/core/output-path-resolver.cjs +41 -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 +37 -0
- package/dist/core/output-path-resolver.js.map +1 -0
- package/dist/errors/base.cjs +12 -3
- package/dist/errors/base.cjs.map +1 -1
- package/dist/errors/base.d.cts +7 -0
- package/dist/errors/base.d.cts.map +1 -1
- package/dist/errors/base.d.ts +7 -0
- package/dist/errors/base.d.ts.map +1 -1
- package/dist/errors/base.js +10 -2
- package/dist/errors/base.js.map +1 -1
- package/dist/errors/budget.cjs +37 -0
- package/dist/errors/budget.cjs.map +1 -0
- package/dist/errors/budget.d.cts +31 -0
- package/dist/errors/budget.d.cts.map +1 -0
- package/dist/errors/budget.d.ts +31 -0
- package/dist/errors/budget.d.ts.map +1 -0
- package/dist/errors/budget.js +33 -0
- package/dist/errors/budget.js.map +1 -0
- package/dist/errors/index.cjs +4 -1
- package/dist/errors/index.cjs.map +1 -1
- package/dist/errors/index.d.cts +1 -0
- package/dist/errors/index.d.cts.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -1
- 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 +27 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/reporters/csv.cjs +39 -19
- package/dist/reporters/csv.cjs.map +1 -1
- package/dist/reporters/csv.d.cts +4 -7
- package/dist/reporters/csv.d.cts.map +1 -1
- package/dist/reporters/csv.d.ts +4 -7
- package/dist/reporters/csv.d.ts.map +1 -1
- package/dist/reporters/csv.js +38 -18
- package/dist/reporters/csv.js.map +1 -1
- package/dist/reporters/human.cjs +87 -99
- package/dist/reporters/human.cjs.map +1 -1
- package/dist/reporters/human.d.cts +15 -14
- package/dist/reporters/human.d.cts.map +1 -1
- package/dist/reporters/human.d.ts +15 -14
- package/dist/reporters/human.d.ts.map +1 -1
- package/dist/reporters/human.js +68 -80
- package/dist/reporters/human.js.map +1 -1
- package/dist/reporters/json.cjs +25 -50
- package/dist/reporters/json.cjs.map +1 -1
- package/dist/reporters/json.d.cts +3 -29
- package/dist/reporters/json.d.cts.map +1 -1
- package/dist/reporters/json.d.ts +3 -29
- package/dist/reporters/json.d.ts.map +1 -1
- package/dist/reporters/json.js +26 -51
- package/dist/reporters/json.js.map +1 -1
- package/dist/reporters/profile-human.cjs +149 -0
- package/dist/reporters/profile-human.cjs.map +1 -0
- package/dist/reporters/profile-human.d.cts +44 -0
- package/dist/reporters/profile-human.d.cts.map +1 -0
- package/dist/reporters/profile-human.d.ts +44 -0
- package/dist/reporters/profile-human.d.ts.map +1 -0
- package/dist/reporters/profile-human.js +142 -0
- package/dist/reporters/profile-human.js.map +1 -0
- package/dist/reporters/simple.cjs +66 -46
- package/dist/reporters/simple.cjs.map +1 -1
- package/dist/reporters/simple.d.cts +15 -15
- package/dist/reporters/simple.d.cts.map +1 -1
- package/dist/reporters/simple.d.ts +15 -15
- package/dist/reporters/simple.d.ts.map +1 -1
- package/dist/reporters/simple.js +65 -45
- package/dist/reporters/simple.js.map +1 -1
- package/dist/schema/modestbench-config.schema.json +153 -0
- package/dist/services/baseline-storage.cjs +151 -0
- package/dist/services/baseline-storage.cjs.map +1 -0
- package/dist/services/baseline-storage.d.cts +55 -0
- package/dist/services/baseline-storage.d.cts.map +1 -0
- package/dist/services/baseline-storage.d.ts +55 -0
- package/dist/services/baseline-storage.d.ts.map +1 -0
- package/dist/services/baseline-storage.js +147 -0
- package/dist/services/baseline-storage.js.map +1 -0
- package/dist/services/budget-evaluator.cjs +146 -0
- package/dist/services/budget-evaluator.cjs.map +1 -0
- package/dist/services/budget-evaluator.d.cts +29 -0
- package/dist/services/budget-evaluator.d.cts.map +1 -0
- package/dist/services/budget-evaluator.d.ts +29 -0
- package/dist/services/budget-evaluator.d.ts.map +1 -0
- package/dist/services/budget-evaluator.js +142 -0
- package/dist/services/budget-evaluator.js.map +1 -0
- package/dist/{config/manager.cjs → services/config-manager.cjs} +25 -11
- package/dist/services/config-manager.cjs.map +1 -0
- package/dist/{config/manager.d.cts → services/config-manager.d.cts} +7 -2
- package/dist/services/config-manager.d.cts.map +1 -0
- package/dist/{config/manager.d.ts → services/config-manager.d.ts} +7 -2
- package/dist/services/config-manager.d.ts.map +1 -0
- package/dist/{config/manager.js → services/config-manager.js} +25 -11
- package/dist/services/config-manager.js.map +1 -0
- package/dist/{core/loader.cjs → services/file-loader.cjs} +5 -8
- 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} +5 -8
- 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} +1 -1
- 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} +1 -1
- package/dist/services/history-storage.js.map +1 -0
- package/dist/services/profiler/profile-filter.cjs +113 -0
- package/dist/services/profiler/profile-filter.cjs.map +1 -0
- package/dist/services/profiler/profile-filter.d.cts +20 -0
- package/dist/services/profiler/profile-filter.d.cts.map +1 -0
- package/dist/services/profiler/profile-filter.d.ts +20 -0
- package/dist/services/profiler/profile-filter.d.ts.map +1 -0
- package/dist/services/profiler/profile-filter.js +109 -0
- package/dist/services/profiler/profile-filter.js.map +1 -0
- package/dist/services/profiler/profile-parser.cjs +139 -0
- package/dist/services/profiler/profile-parser.cjs.map +1 -0
- package/dist/services/profiler/profile-parser.d.cts +18 -0
- package/dist/services/profiler/profile-parser.d.cts.map +1 -0
- package/dist/services/profiler/profile-parser.d.ts +18 -0
- package/dist/services/profiler/profile-parser.d.ts.map +1 -0
- package/dist/services/profiler/profile-parser.js +132 -0
- package/dist/services/profiler/profile-parser.js.map +1 -0
- package/dist/services/profiler/profile-runner.cjs +90 -0
- package/dist/services/profiler/profile-runner.cjs.map +1 -0
- package/dist/services/profiler/profile-runner.d.cts +29 -0
- package/dist/services/profiler/profile-runner.d.cts.map +1 -0
- package/dist/services/profiler/profile-runner.d.ts +29 -0
- package/dist/services/profiler/profile-runner.d.ts.map +1 -0
- package/dist/services/profiler/profile-runner.js +86 -0
- package/dist/services/profiler/profile-runner.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} +19 -25
- package/dist/services/reporter-registry.cjs.map +1 -0
- package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +19 -41
- package/dist/services/reporter-registry.d.cts.map +1 -0
- package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +19 -41
- package/dist/services/reporter-registry.d.ts.map +1 -0
- package/dist/{reporters/registry.js → services/reporter-registry.js} +19 -25
- package/dist/services/reporter-registry.js.map +1 -0
- package/dist/types/budgets.cjs +8 -0
- package/dist/types/budgets.cjs.map +1 -0
- package/dist/types/budgets.d.cts +149 -0
- package/dist/types/budgets.d.cts.map +1 -0
- package/dist/types/budgets.d.ts +149 -0
- package/dist/types/budgets.d.ts.map +1 -0
- package/dist/types/budgets.js +7 -0
- package/dist/types/budgets.js.map +1 -0
- package/dist/types/cli.cjs +2 -11
- package/dist/types/cli.cjs.map +1 -1
- package/dist/types/cli.d.cts +3 -224
- package/dist/types/cli.d.cts.map +1 -1
- package/dist/types/cli.d.ts +3 -224
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/cli.js +2 -11
- package/dist/types/cli.js.map +1 -1
- package/dist/types/core.cjs +6 -1
- package/dist/types/core.cjs.map +1 -1
- package/dist/types/core.d.cts +13 -2
- package/dist/types/core.d.cts.map +1 -1
- package/dist/types/core.d.ts +13 -2
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +2 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/index.cjs +5 -0
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +2 -0
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/interfaces.d.cts +15 -8
- package/dist/types/interfaces.d.cts.map +1 -1
- package/dist/types/interfaces.d.ts +15 -8
- package/dist/types/interfaces.d.ts.map +1 -1
- package/dist/types/profiler.cjs +11 -0
- package/dist/types/profiler.cjs.map +1 -0
- package/dist/types/profiler.d.cts +100 -0
- package/dist/types/profiler.d.cts.map +1 -0
- package/dist/types/profiler.d.ts +100 -0
- package/dist/types/profiler.d.ts.map +1 -0
- package/dist/types/profiler.js +10 -0
- package/dist/types/profiler.js.map +1 -0
- package/dist/types/utility.cjs.map +1 -1
- package/dist/types/utility.d.cts +0 -8
- package/dist/types/utility.d.cts.map +1 -1
- package/dist/types/utility.d.ts +0 -8
- package/dist/types/utility.d.ts.map +1 -1
- package/dist/types/utility.js.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/dist/utils/identifiers.cjs +32 -0
- package/dist/utils/identifiers.cjs.map +1 -0
- package/dist/utils/identifiers.d.cts +32 -0
- package/dist/utils/identifiers.d.cts.map +1 -0
- package/dist/utils/identifiers.d.ts +32 -0
- package/dist/utils/identifiers.d.ts.map +1 -0
- package/dist/utils/identifiers.js +27 -0
- package/dist/utils/identifiers.js.map +1 -0
- package/dist/utils/package.cjs +40 -0
- package/dist/utils/package.cjs.map +1 -0
- package/dist/utils/package.d.cts +15 -0
- package/dist/utils/package.d.cts.map +1 -0
- package/dist/utils/package.d.ts +15 -0
- package/dist/utils/package.d.ts.map +1 -0
- package/dist/utils/package.js +33 -0
- package/dist/utils/package.js.map +1 -0
- package/dist/utils/type-guards.cjs +48 -0
- package/dist/utils/type-guards.cjs.map +1 -0
- package/dist/utils/type-guards.d.cts +22 -0
- package/dist/utils/type-guards.d.cts.map +1 -0
- package/dist/utils/type-guards.d.ts +22 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +43 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/package.json +14 -13
- package/src/bootstrap.ts +5 -5
- package/src/cli/commands/analyze.ts +101 -0
- package/src/cli/commands/baseline.ts +577 -0
- package/src/cli/commands/history.ts +194 -342
- package/src/cli/commands/init.ts +105 -183
- package/src/cli/commands/run.ts +186 -88
- package/src/cli/index.ts +731 -234
- package/src/config/budget-schema.ts +189 -0
- package/src/config/schema.ts +260 -1
- package/src/constants.ts +53 -1
- package/src/core/engine.ts +153 -14
- package/src/core/output-path-resolver.ts +46 -0
- package/src/errors/base.ts +11 -2
- package/src/errors/budget.ts +38 -0
- package/src/errors/index.ts +3 -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 +17 -12
- package/src/reporters/csv.ts +55 -26
- package/src/reporters/human.ts +90 -89
- package/src/reporters/json.ts +27 -72
- package/src/reporters/profile-human.ts +204 -0
- package/src/reporters/simple.ts +85 -54
- package/src/services/baseline-storage.ts +199 -0
- package/src/services/budget-evaluator.ts +182 -0
- package/src/{config/manager.ts → services/config-manager.ts} +24 -9
- package/src/{core/loader.ts → services/file-loader.ts} +4 -7
- 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/services/profiler/profile-filter.ts +143 -0
- package/src/services/profiler/profile-parser.ts +194 -0
- package/src/services/profiler/profile-runner.ts +121 -0
- package/src/{reporters/registry.ts → services/reporter-registry.ts} +46 -81
- package/src/types/budgets.ts +180 -0
- package/src/types/cli.ts +5 -235
- package/src/types/core.ts +50 -10
- package/src/types/index.ts +5 -0
- package/src/types/interfaces.ts +16 -6
- package/src/types/profiler.ts +132 -0
- package/src/types/utility.ts +0 -10
- package/src/utils/ansi.ts +59 -0
- package/src/utils/identifiers.ts +58 -0
- package/src/utils/package.ts +35 -0
- package/src/utils/type-guards.ts +51 -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/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/{storage/history.ts → services/history-storage.ts} +0 -0
- /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
|
@@ -33,74 +33,10 @@ export abstract class BaseReporter implements Reporter {
|
|
|
33
33
|
this.options = options;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
/**
|
|
37
|
-
* Get reporter name
|
|
38
|
-
*/
|
|
39
|
-
getName(): string {
|
|
40
|
-
return this.name;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Get reporter options
|
|
45
|
-
*/
|
|
46
|
-
getOptions(): Record<string, unknown> {
|
|
47
|
-
return { ...this.options };
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Called when benchmark run completes
|
|
52
|
-
*/
|
|
53
|
-
abstract onEnd(run: BenchmarkRun): Promise<void> | void;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Called when an error occurs
|
|
57
|
-
*/
|
|
58
|
-
abstract onError(error: Error): Promise<void> | void;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Called when a file completes
|
|
62
|
-
*/
|
|
63
|
-
abstract onFileEnd(result: FileResult): Promise<void> | void;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Called when a file starts execution
|
|
67
|
-
*/
|
|
68
|
-
abstract onFileStart(file: string): Promise<void> | void;
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Called for progress updates
|
|
72
|
-
*/
|
|
73
|
-
abstract onProgress(state: ProgressState): Promise<void> | void;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Called when benchmark run starts
|
|
77
|
-
*/
|
|
78
|
-
abstract onStart(run: BenchmarkRun): Promise<void> | void;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Called when a suite completes
|
|
82
|
-
*/
|
|
83
|
-
abstract onSuiteEnd(result: SuiteResult): Promise<void> | void;
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Called when a suite starts execution
|
|
87
|
-
*/
|
|
88
|
-
abstract onSuiteStart(suite: string): Promise<void> | void;
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Called when a task completes
|
|
92
|
-
*/
|
|
93
|
-
abstract onTaskResult(result: TaskResult): Promise<void> | void;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Called when a task starts execution
|
|
97
|
-
*/
|
|
98
|
-
abstract onTaskStart(task: string): Promise<void> | void;
|
|
99
|
-
|
|
100
36
|
/**
|
|
101
37
|
* Utility method to format duration in human-readable format
|
|
102
38
|
*/
|
|
103
|
-
protected formatDuration(nanoseconds: number): string {
|
|
39
|
+
protected static formatDuration(this: void, nanoseconds: number): string {
|
|
104
40
|
if (nanoseconds < 1000) {
|
|
105
41
|
return `${nanoseconds.toFixed(2)}ns`;
|
|
106
42
|
} else if (nanoseconds < 1000000) {
|
|
@@ -115,7 +51,10 @@ export abstract class BaseReporter implements Reporter {
|
|
|
115
51
|
/**
|
|
116
52
|
* Utility method to format operations per second
|
|
117
53
|
*/
|
|
118
|
-
protected formatOpsPerSecond(
|
|
54
|
+
protected static formatOpsPerSecond(
|
|
55
|
+
this: void,
|
|
56
|
+
opsPerSecond: number,
|
|
57
|
+
): string {
|
|
119
58
|
if (opsPerSecond < 1000) {
|
|
120
59
|
return `${opsPerSecond.toFixed(2)} ops/sec`;
|
|
121
60
|
} else if (opsPerSecond < 1000000) {
|
|
@@ -130,23 +69,43 @@ export abstract class BaseReporter implements Reporter {
|
|
|
130
69
|
/**
|
|
131
70
|
* Utility method to format percentage
|
|
132
71
|
*/
|
|
133
|
-
protected formatPercentage(value: number): string {
|
|
72
|
+
protected static formatPercentage(this: void, value: number): string {
|
|
134
73
|
return `${value.toFixed(2)}%`;
|
|
135
74
|
}
|
|
136
75
|
|
|
137
76
|
/**
|
|
138
|
-
*
|
|
77
|
+
* Get reporter name
|
|
139
78
|
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
79
|
+
getName(): string {
|
|
80
|
+
return this.name;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Get reporter options
|
|
85
|
+
*/
|
|
86
|
+
getOptions(): Record<string, unknown> {
|
|
87
|
+
return { ...this.options };
|
|
149
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Called when benchmark run completes
|
|
92
|
+
*/
|
|
93
|
+
abstract onEnd(run: BenchmarkRun): Promise<void> | void;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Called when an error occurs
|
|
97
|
+
*/
|
|
98
|
+
abstract onError(error: Error): Promise<void> | void;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Called when benchmark run starts
|
|
102
|
+
*/
|
|
103
|
+
abstract onStart(run: BenchmarkRun): Promise<void> | void;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Called when a task completes
|
|
107
|
+
*/
|
|
108
|
+
abstract onTaskResult(result: TaskResult): Promise<void> | void;
|
|
150
109
|
}
|
|
151
110
|
|
|
152
111
|
/**
|
|
@@ -162,6 +121,8 @@ export class CompositeReporter extends BaseReporter {
|
|
|
162
121
|
|
|
163
122
|
/**
|
|
164
123
|
* Add a reporter to the composite
|
|
124
|
+
*
|
|
125
|
+
* Intended for programmatic usage.
|
|
165
126
|
*/
|
|
166
127
|
addReporter(reporter: Reporter): void {
|
|
167
128
|
this.reporters.push(reporter);
|
|
@@ -169,16 +130,18 @@ export class CompositeReporter extends BaseReporter {
|
|
|
169
130
|
|
|
170
131
|
/**
|
|
171
132
|
* Get all reporters in the composite
|
|
133
|
+
*
|
|
134
|
+
* Intended for programmatic usage.
|
|
172
135
|
*/
|
|
173
136
|
getReporters(): Reporter[] {
|
|
174
137
|
return [...this.reporters];
|
|
175
138
|
}
|
|
176
139
|
|
|
177
|
-
async onEnd(run: BenchmarkRun): Promise<void> {
|
|
140
|
+
override async onEnd(run: BenchmarkRun): Promise<void> {
|
|
178
141
|
await this.broadcastAsync('onEnd', run);
|
|
179
142
|
}
|
|
180
143
|
|
|
181
|
-
async onError(error: Error): Promise<void> {
|
|
144
|
+
override async onError(error: Error): Promise<void> {
|
|
182
145
|
await this.broadcastAsync('onError', error);
|
|
183
146
|
}
|
|
184
147
|
|
|
@@ -194,7 +157,7 @@ export class CompositeReporter extends BaseReporter {
|
|
|
194
157
|
await this.broadcastAsync('onProgress', state);
|
|
195
158
|
}
|
|
196
159
|
|
|
197
|
-
async onStart(run: BenchmarkRun): Promise<void> {
|
|
160
|
+
override async onStart(run: BenchmarkRun): Promise<void> {
|
|
198
161
|
await this.broadcastAsync('onStart', run);
|
|
199
162
|
}
|
|
200
163
|
|
|
@@ -206,7 +169,7 @@ export class CompositeReporter extends BaseReporter {
|
|
|
206
169
|
await this.broadcastAsync('onSuiteStart', suite);
|
|
207
170
|
}
|
|
208
171
|
|
|
209
|
-
async onTaskResult(result: TaskResult): Promise<void> {
|
|
172
|
+
override async onTaskResult(result: TaskResult): Promise<void> {
|
|
210
173
|
await this.broadcastAsync('onTaskResult', result);
|
|
211
174
|
}
|
|
212
175
|
|
|
@@ -216,6 +179,8 @@ export class CompositeReporter extends BaseReporter {
|
|
|
216
179
|
|
|
217
180
|
/**
|
|
218
181
|
* Remove a reporter from the composite
|
|
182
|
+
*
|
|
183
|
+
* Intended for programmatic usage.
|
|
219
184
|
*/
|
|
220
185
|
removeReporter(reporter: Reporter): boolean {
|
|
221
186
|
const index = this.reporters.indexOf(reporter);
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance budget types for benchmark thresholds
|
|
3
|
+
*
|
|
4
|
+
* @module types/budgets
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Absolute performance budgets (time-based)
|
|
9
|
+
*/
|
|
10
|
+
export interface AbsoluteBudget {
|
|
11
|
+
/** Maximum 99th percentile in nanoseconds */
|
|
12
|
+
readonly maxP99?: number;
|
|
13
|
+
|
|
14
|
+
/** Maximum mean execution time in nanoseconds */
|
|
15
|
+
readonly maxTime?: number;
|
|
16
|
+
|
|
17
|
+
/** Minimum operations per second */
|
|
18
|
+
readonly minOpsPerSec?: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Named baseline reference
|
|
23
|
+
*/
|
|
24
|
+
export interface BaselineReference {
|
|
25
|
+
/** Git branch (if available) */
|
|
26
|
+
readonly branch?: string;
|
|
27
|
+
|
|
28
|
+
/** Git commit (if available) */
|
|
29
|
+
readonly commit?: string;
|
|
30
|
+
|
|
31
|
+
/** Date baseline was created */
|
|
32
|
+
readonly date: Date;
|
|
33
|
+
|
|
34
|
+
/** Baseline name */
|
|
35
|
+
readonly name: string;
|
|
36
|
+
|
|
37
|
+
/** Run ID this baseline points to */
|
|
38
|
+
readonly runId: RunId;
|
|
39
|
+
|
|
40
|
+
/** Summary of benchmark results for quick comparison */
|
|
41
|
+
readonly summary: Record<TaskId, BaselineSummaryData>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Baseline storage file format
|
|
46
|
+
*/
|
|
47
|
+
export interface BaselineStorage {
|
|
48
|
+
/** Named baselines */
|
|
49
|
+
readonly baselines: Record<string, BaselineReference>;
|
|
50
|
+
|
|
51
|
+
/** Default baseline name (optional) */
|
|
52
|
+
readonly default?: string;
|
|
53
|
+
|
|
54
|
+
/** Schema version */
|
|
55
|
+
readonly version: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Baseline summary data for a single task
|
|
60
|
+
*/
|
|
61
|
+
export interface BaselineSummaryData {
|
|
62
|
+
/** Mean execution time in nanoseconds */
|
|
63
|
+
readonly mean: number;
|
|
64
|
+
|
|
65
|
+
/** Operations per second */
|
|
66
|
+
readonly opsPerSecond: number;
|
|
67
|
+
|
|
68
|
+
/** 99th percentile (if available) */
|
|
69
|
+
readonly p99?: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Complete budget definition
|
|
74
|
+
*/
|
|
75
|
+
export interface Budget {
|
|
76
|
+
/** Absolute thresholds */
|
|
77
|
+
readonly absolute?: AbsoluteBudget;
|
|
78
|
+
|
|
79
|
+
/** Relative thresholds */
|
|
80
|
+
readonly relative?: RelativeBudget;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Budget evaluation result for a single task
|
|
85
|
+
*/
|
|
86
|
+
export interface BudgetResult {
|
|
87
|
+
/** Actual measured values */
|
|
88
|
+
readonly actual: {
|
|
89
|
+
readonly mean: number;
|
|
90
|
+
readonly opsPerSecond: number;
|
|
91
|
+
readonly p99?: number;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/** Baseline values (if relative budget) */
|
|
95
|
+
readonly baseline?: {
|
|
96
|
+
readonly mean: number;
|
|
97
|
+
readonly opsPerSecond: number;
|
|
98
|
+
readonly p99?: number;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/** Budget that was checked */
|
|
102
|
+
readonly budget: Budget;
|
|
103
|
+
|
|
104
|
+
/** Whether budget passed */
|
|
105
|
+
readonly passed: boolean;
|
|
106
|
+
|
|
107
|
+
/** Task identifier (file/suite/task) */
|
|
108
|
+
readonly taskId: TaskId;
|
|
109
|
+
|
|
110
|
+
/** Violations (what thresholds were exceeded) */
|
|
111
|
+
readonly violations: BudgetViolation[];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Budget evaluation summary for entire run
|
|
116
|
+
*/
|
|
117
|
+
export interface BudgetSummary {
|
|
118
|
+
/** Number failed */
|
|
119
|
+
readonly failed: number;
|
|
120
|
+
|
|
121
|
+
/** Number passed */
|
|
122
|
+
readonly passed: number;
|
|
123
|
+
|
|
124
|
+
/** Individual results */
|
|
125
|
+
readonly results: BudgetResult[];
|
|
126
|
+
|
|
127
|
+
/** Total budgets checked */
|
|
128
|
+
readonly total: number;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Specific budget violation
|
|
133
|
+
*/
|
|
134
|
+
export interface BudgetViolation {
|
|
135
|
+
/** Actual measured value */
|
|
136
|
+
readonly actual: number;
|
|
137
|
+
|
|
138
|
+
/** How much over/under threshold (as decimal, e.g., 0.15 = 15% over) */
|
|
139
|
+
readonly delta: number;
|
|
140
|
+
|
|
141
|
+
/** Human-readable message */
|
|
142
|
+
readonly message: string;
|
|
143
|
+
|
|
144
|
+
/** Expected threshold */
|
|
145
|
+
readonly threshold: number;
|
|
146
|
+
|
|
147
|
+
/** Type of budget that was violated */
|
|
148
|
+
readonly type: 'maxP99' | 'maxRegression' | 'maxTime' | 'minOpsPerSec';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Relative performance budgets (comparison-based)
|
|
153
|
+
*/
|
|
154
|
+
export interface RelativeBudget {
|
|
155
|
+
/** Name of baseline to compare against */
|
|
156
|
+
readonly baseline?: string;
|
|
157
|
+
|
|
158
|
+
/** Maximum performance regression as decimal (0.10 = 10%) */
|
|
159
|
+
readonly maxRegression?: number;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Branded type for benchmark run identifiers
|
|
164
|
+
*
|
|
165
|
+
* RunId is a 7-character alphanumeric string that uniquely identifies a
|
|
166
|
+
* benchmark run. Using a branded type prevents accidental mixing with regular
|
|
167
|
+
* strings or TaskIds.
|
|
168
|
+
*/
|
|
169
|
+
export type RunId = string & { readonly __brand: 'RunId' };
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Branded type for task identifiers
|
|
173
|
+
*
|
|
174
|
+
* TaskId follows the format: `{filePath}/{suiteName}/{taskName}` Example:
|
|
175
|
+
* `benchmarks/array.bench.js/Array Operations/Array.push()`
|
|
176
|
+
*
|
|
177
|
+
* Using a branded type prevents accidental mixing with regular strings or
|
|
178
|
+
* RunIds.
|
|
179
|
+
*/
|
|
180
|
+
export type TaskId = string & { readonly __brand: 'TaskId' };
|
package/src/types/cli.ts
CHANGED
|
@@ -5,17 +5,9 @@
|
|
|
5
5
|
* definitions, argument parsing, and CLI-specific configuration structures.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export const ExitCodes = {
|
|
12
|
-
ConfigurationError: 2,
|
|
13
|
-
ExecutionError: 5,
|
|
14
|
-
FileDiscoveryError: 3,
|
|
15
|
-
GeneralError: 1,
|
|
16
|
-
Success: 0,
|
|
17
|
-
ValidationError: 4,
|
|
18
|
-
} as const;
|
|
8
|
+
import { ExitCodes } from '../constants.js';
|
|
9
|
+
|
|
10
|
+
export { ExitCodes };
|
|
19
11
|
|
|
20
12
|
/**
|
|
21
13
|
* CLI argument specification for a command
|
|
@@ -39,56 +31,6 @@ export interface ArgumentSpec {
|
|
|
39
31
|
readonly validate?: (value: unknown) => boolean | string;
|
|
40
32
|
}
|
|
41
33
|
|
|
42
|
-
/**
|
|
43
|
-
* Base command interface
|
|
44
|
-
*/
|
|
45
|
-
export interface CliCommand {
|
|
46
|
-
/** Command aliases */
|
|
47
|
-
readonly aliases?: string[];
|
|
48
|
-
/** Command description */
|
|
49
|
-
readonly description: string;
|
|
50
|
-
/** Execute the command */
|
|
51
|
-
execute(args: CommandArguments): Promise<ExitCode>;
|
|
52
|
-
/** Command name */
|
|
53
|
-
readonly name: string;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* CLI configuration
|
|
58
|
-
*/
|
|
59
|
-
export interface CliConfig {
|
|
60
|
-
/** Available commands */
|
|
61
|
-
readonly commands: CommandSpec[];
|
|
62
|
-
/** Application description */
|
|
63
|
-
readonly description: string;
|
|
64
|
-
/** Global options */
|
|
65
|
-
readonly globalOptions: ArgumentSpec[];
|
|
66
|
-
/** Application name */
|
|
67
|
-
readonly name: string;
|
|
68
|
-
/** Application version */
|
|
69
|
-
readonly version: string;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Color theme for CLI output
|
|
74
|
-
*/
|
|
75
|
-
export interface ColorTheme {
|
|
76
|
-
/** Error color */
|
|
77
|
-
readonly error: string;
|
|
78
|
-
/** Highlight color */
|
|
79
|
-
readonly highlight: string;
|
|
80
|
-
/** Info color */
|
|
81
|
-
readonly info: string;
|
|
82
|
-
/** Muted/secondary text color */
|
|
83
|
-
readonly muted: string;
|
|
84
|
-
/** Primary color for branding */
|
|
85
|
-
readonly primary: string;
|
|
86
|
-
/** Success color */
|
|
87
|
-
readonly success: string;
|
|
88
|
-
/** Warning color */
|
|
89
|
-
readonly warning: string;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
34
|
/**
|
|
93
35
|
* Parsed command-line arguments
|
|
94
36
|
*/
|
|
@@ -119,118 +61,9 @@ export interface CommandSpec {
|
|
|
119
61
|
readonly subcommands?: CommandSpec[];
|
|
120
62
|
}
|
|
121
63
|
|
|
122
|
-
export type
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Global CLI options available to all commands
|
|
126
|
-
*/
|
|
127
|
-
export interface GlobalOptions {
|
|
128
|
-
readonly c?: string;
|
|
129
|
-
/** Configuration file */
|
|
130
|
-
readonly config?: string;
|
|
131
|
-
/** Working directory */
|
|
132
|
-
readonly cwd?: string;
|
|
133
|
-
readonly h?: boolean;
|
|
134
|
-
/** Help flag */
|
|
135
|
-
readonly help?: boolean;
|
|
136
|
-
/** Log level */
|
|
137
|
-
readonly logLevel?: 'debug' | 'error' | 'info' | 'silent' | 'warn';
|
|
138
|
-
/** No color output */
|
|
139
|
-
readonly noColor?: boolean;
|
|
140
|
-
/** Version flag */
|
|
141
|
-
readonly version?: boolean;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* CLI help information
|
|
146
|
-
*/
|
|
147
|
-
export interface HelpInfo {
|
|
148
|
-
/** Command name */
|
|
149
|
-
readonly command: string;
|
|
150
|
-
/** Command description */
|
|
151
|
-
readonly description: string;
|
|
152
|
-
/** Examples */
|
|
153
|
-
readonly examples?: string[];
|
|
154
|
-
/** Available options */
|
|
155
|
-
readonly options: Array<{
|
|
156
|
-
readonly default?: string;
|
|
157
|
-
readonly description: string;
|
|
158
|
-
readonly flags: string;
|
|
159
|
-
}>;
|
|
160
|
-
/** Available subcommands */
|
|
161
|
-
readonly subcommands?: Array<{
|
|
162
|
-
readonly description: string;
|
|
163
|
-
readonly name: string;
|
|
164
|
-
}>;
|
|
165
|
-
/** Usage string */
|
|
166
|
-
readonly usage: string;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Arguments for the history command
|
|
171
|
-
*/
|
|
172
|
-
export interface HistoryCommandArgs extends CommandArguments {
|
|
173
|
-
readonly f?: 'csv' | 'json' | 'table';
|
|
174
|
-
/** Output format */
|
|
175
|
-
readonly format?: 'csv' | 'json' | 'table';
|
|
176
|
-
readonly l?: number;
|
|
177
|
-
/** Limit number of results */
|
|
178
|
-
readonly limit?: number;
|
|
179
|
-
/** Pattern to match */
|
|
180
|
-
readonly pattern?: string;
|
|
181
|
-
/** Run IDs for show/compare commands */
|
|
182
|
-
readonly runIds?: string[];
|
|
183
|
-
/** Filter by date */
|
|
184
|
-
readonly since?: string;
|
|
185
|
-
/** History subcommand */
|
|
186
|
-
readonly subcommand?: 'clean' | 'compare' | 'list' | 'show' | 'trends';
|
|
187
|
-
/** Tags to filter by */
|
|
188
|
-
readonly tags?: string | string[];
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Arguments for the init command
|
|
193
|
-
*/
|
|
194
|
-
export interface InitCommandArgs extends CommandArguments {
|
|
195
|
-
/** Configuration file type */
|
|
196
|
-
readonly configType?: 'js' | 'json' | 'ts' | 'yaml';
|
|
197
|
-
/** Create example files */
|
|
198
|
-
readonly examples?: boolean;
|
|
199
|
-
/** Force overwrite existing files */
|
|
200
|
-
readonly force?: boolean;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Output formatting options
|
|
205
|
-
*/
|
|
206
|
-
export interface OutputFormat {
|
|
207
|
-
/** Compact output mode */
|
|
208
|
-
readonly compact: boolean;
|
|
209
|
-
/** Progress display options */
|
|
210
|
-
readonly progress: ProgressDisplayOptions;
|
|
211
|
-
/** Color theme */
|
|
212
|
-
readonly theme: ColorTheme;
|
|
213
|
-
/** Use colors in output */
|
|
214
|
-
readonly useColors: boolean;
|
|
215
|
-
/** Use Unicode symbols */
|
|
216
|
-
readonly useUnicode: boolean;
|
|
217
|
-
}
|
|
64
|
+
export type Engine = 'accurate' | 'tinybench';
|
|
218
65
|
|
|
219
|
-
|
|
220
|
-
* CLI parser result
|
|
221
|
-
*/
|
|
222
|
-
export interface ParseResult {
|
|
223
|
-
/** Parsed arguments */
|
|
224
|
-
readonly args: CommandArguments;
|
|
225
|
-
/** Parsed command name */
|
|
226
|
-
readonly command: string;
|
|
227
|
-
/** Parsing errors */
|
|
228
|
-
readonly errors: string[];
|
|
229
|
-
/** Whether help was requested */
|
|
230
|
-
readonly help: boolean;
|
|
231
|
-
/** Whether version was requested */
|
|
232
|
-
readonly version: boolean;
|
|
233
|
-
}
|
|
66
|
+
export type ExitCode = (typeof ExitCodes)[keyof typeof ExitCodes];
|
|
234
67
|
|
|
235
68
|
/**
|
|
236
69
|
* Progress display options
|
|
@@ -247,66 +80,3 @@ export interface ProgressDisplayOptions {
|
|
|
247
80
|
/** Update interval in milliseconds */
|
|
248
81
|
readonly updateInterval: number;
|
|
249
82
|
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Arguments for the run command
|
|
253
|
-
*/
|
|
254
|
-
export interface RunCommandArgs extends CommandArguments {
|
|
255
|
-
/** Stop on first failure */
|
|
256
|
-
readonly bail?: boolean;
|
|
257
|
-
readonly c?: string;
|
|
258
|
-
/** Configuration file path */
|
|
259
|
-
readonly config?: string;
|
|
260
|
-
readonly e?: 'accurate' | 'tinybench';
|
|
261
|
-
/** Benchmark engine to use */
|
|
262
|
-
readonly engine?: 'accurate' | 'tinybench';
|
|
263
|
-
/** Files to exclude */
|
|
264
|
-
readonly exclude?: string | string[];
|
|
265
|
-
/** Tags to exclude */
|
|
266
|
-
readonly excludeTags?: string | string[];
|
|
267
|
-
readonly i?: number;
|
|
268
|
-
/** Number of iterations */
|
|
269
|
-
readonly iterations?: number;
|
|
270
|
-
/** How to limit benchmark execution */
|
|
271
|
-
readonly limitBy?: 'all' | 'any' | 'iterations' | 'time';
|
|
272
|
-
readonly o?: string;
|
|
273
|
-
/** Output directory */
|
|
274
|
-
readonly output?: string;
|
|
275
|
-
/** Pattern for discovering benchmark files */
|
|
276
|
-
readonly pattern?: string;
|
|
277
|
-
readonly q?: boolean;
|
|
278
|
-
/** Quiet output */
|
|
279
|
-
readonly quiet?: boolean;
|
|
280
|
-
readonly r?: string | string[];
|
|
281
|
-
/** Reporters to use */
|
|
282
|
-
readonly reporters?: string | string[];
|
|
283
|
-
readonly t?: number;
|
|
284
|
-
/** Tags to include */
|
|
285
|
-
readonly tags?: string | string[];
|
|
286
|
-
/** Time limit in milliseconds */
|
|
287
|
-
readonly time?: number;
|
|
288
|
-
/** Timeout per task */
|
|
289
|
-
readonly timeout?: number;
|
|
290
|
-
readonly v?: boolean;
|
|
291
|
-
/** Verbose output */
|
|
292
|
-
readonly verbose?: boolean;
|
|
293
|
-
readonly w?: number;
|
|
294
|
-
/** Warmup iterations */
|
|
295
|
-
readonly warmup?: number;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* Terminal capabilities
|
|
300
|
-
*/
|
|
301
|
-
export interface TerminalCapabilities {
|
|
302
|
-
/** Terminal height in rows */
|
|
303
|
-
readonly height: number;
|
|
304
|
-
/** Terminal supports interactive features */
|
|
305
|
-
readonly interactive: boolean;
|
|
306
|
-
/** Terminal supports colors */
|
|
307
|
-
readonly supportsColor: boolean;
|
|
308
|
-
/** Terminal supports Unicode characters */
|
|
309
|
-
readonly supportsUnicode: boolean;
|
|
310
|
-
/** Terminal width in columns */
|
|
311
|
-
readonly width: number;
|
|
312
|
-
}
|