modestbench 0.2.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 +20 -0
- package/README.md +131 -34
- 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.d.cts +1 -1
- package/dist/cli/commands/history.d.cts.map +1 -1
- package/dist/cli/commands/history.d.ts +1 -1
- package/dist/cli/commands/history.d.ts.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 +132 -114
- package/dist/cli/commands/run.cjs.map +1 -1
- package/dist/cli/commands/run.d.cts +16 -3
- package/dist/cli/commands/run.d.cts.map +1 -1
- package/dist/cli/commands/run.d.ts +16 -3
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +131 -80
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.cjs +583 -394
- 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 +575 -386
- 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 +103 -21
- package/dist/core/engine.cjs.map +1 -1
- package/dist/core/engine.d.cts +7 -7
- package/dist/core/engine.d.cts.map +1 -1
- package/dist/core/engine.d.ts +7 -7
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +104 -22
- package/dist/core/engine.js.map +1 -1
- package/dist/core/output-path-resolver.cjs +8 -1
- package/dist/core/output-path-resolver.cjs.map +1 -1
- package/dist/core/output-path-resolver.d.cts.map +1 -1
- package/dist/core/output-path-resolver.d.ts.map +1 -1
- package/dist/core/output-path-resolver.js +9 -2
- package/dist/core/output-path-resolver.js.map +1 -1
- 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/index.cjs +13 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/reporters/csv.cjs +37 -17
- package/dist/reporters/csv.cjs.map +1 -1
- package/dist/reporters/csv.d.cts +3 -6
- package/dist/reporters/csv.d.cts.map +1 -1
- package/dist/reporters/csv.d.ts +3 -6
- package/dist/reporters/csv.d.ts.map +1 -1
- package/dist/reporters/csv.js +37 -17
- package/dist/reporters/csv.js.map +1 -1
- package/dist/reporters/human.cjs +66 -40
- package/dist/reporters/human.cjs.map +1 -1
- package/dist/reporters/human.d.cts +14 -13
- package/dist/reporters/human.d.cts.map +1 -1
- package/dist/reporters/human.d.ts +14 -13
- package/dist/reporters/human.d.ts.map +1 -1
- package/dist/reporters/human.js +66 -40
- package/dist/reporters/human.js.map +1 -1
- package/dist/reporters/json.cjs +23 -48
- package/dist/reporters/json.cjs.map +1 -1
- package/dist/reporters/json.d.cts +2 -28
- package/dist/reporters/json.d.cts.map +1 -1
- package/dist/reporters/json.d.ts +2 -28
- package/dist/reporters/json.d.ts.map +1 -1
- package/dist/reporters/json.js +25 -50
- 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 +64 -44
- package/dist/reporters/simple.cjs.map +1 -1
- package/dist/reporters/simple.d.cts +14 -14
- package/dist/reporters/simple.d.cts.map +1 -1
- package/dist/reporters/simple.d.ts +14 -14
- package/dist/reporters/simple.d.ts.map +1 -1
- package/dist/reporters/simple.js +64 -44
- 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/services/config-manager.cjs +23 -9
- package/dist/services/config-manager.cjs.map +1 -1
- package/dist/services/config-manager.d.cts +6 -1
- package/dist/services/config-manager.d.cts.map +1 -1
- package/dist/services/config-manager.d.ts +6 -1
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js +23 -9
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/file-loader.cjs +3 -6
- package/dist/services/file-loader.cjs.map +1 -1
- package/dist/services/file-loader.d.cts.map +1 -1
- package/dist/services/file-loader.d.ts.map +1 -1
- package/dist/services/file-loader.js +3 -6
- package/dist/services/file-loader.js.map +1 -1
- 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/services/reporter-registry.cjs +18 -24
- package/dist/services/reporter-registry.cjs.map +1 -1
- package/dist/services/reporter-registry.d.cts +18 -40
- package/dist/services/reporter-registry.d.cts.map +1 -1
- package/dist/services/reporter-registry.d.ts +18 -40
- package/dist/services/reporter-registry.d.ts.map +1 -1
- package/dist/services/reporter-registry.js +18 -24
- package/dist/services/reporter-registry.js.map +1 -1
- 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 -227
- package/dist/types/cli.d.cts.map +1 -1
- package/dist/types/cli.d.ts +3 -227
- 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/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 +10 -10
- package/src/cli/commands/analyze.ts +101 -0
- package/src/cli/commands/baseline.ts +577 -0
- package/src/cli/commands/history.ts +1 -1
- package/src/cli/commands/init.ts +105 -183
- package/src/cli/commands/run.ts +167 -98
- package/src/cli/index.ts +425 -183
- 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 +151 -20
- package/src/core/output-path-resolver.ts +10 -2
- package/src/errors/base.ts +11 -2
- package/src/errors/budget.ts +38 -0
- package/src/errors/index.ts +3 -0
- package/src/index.ts +9 -0
- package/src/reporters/csv.ts +54 -25
- package/src/reporters/human.ts +88 -47
- package/src/reporters/json.ts +26 -71
- package/src/reporters/profile-human.ts +204 -0
- package/src/reporters/simple.ts +84 -53
- package/src/services/baseline-storage.ts +199 -0
- package/src/services/budget-evaluator.ts +182 -0
- package/src/services/config-manager.ts +23 -8
- package/src/services/file-loader.ts +3 -6
- 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/services/reporter-registry.ts +46 -81
- package/src/types/budgets.ts +180 -0
- package/src/types/cli.ts +5 -238
- 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/identifiers.ts +58 -0
- package/src/utils/package.ts +35 -0
- package/src/utils/type-guards.ts +51 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance budget types for benchmark thresholds
|
|
3
|
+
*
|
|
4
|
+
* @module types/budgets
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Absolute performance budgets (time-based)
|
|
8
|
+
*/
|
|
9
|
+
export interface AbsoluteBudget {
|
|
10
|
+
/** Maximum 99th percentile in nanoseconds */
|
|
11
|
+
readonly maxP99?: number;
|
|
12
|
+
/** Maximum mean execution time in nanoseconds */
|
|
13
|
+
readonly maxTime?: number;
|
|
14
|
+
/** Minimum operations per second */
|
|
15
|
+
readonly minOpsPerSec?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Named baseline reference
|
|
19
|
+
*/
|
|
20
|
+
export interface BaselineReference {
|
|
21
|
+
/** Git branch (if available) */
|
|
22
|
+
readonly branch?: string;
|
|
23
|
+
/** Git commit (if available) */
|
|
24
|
+
readonly commit?: string;
|
|
25
|
+
/** Date baseline was created */
|
|
26
|
+
readonly date: Date;
|
|
27
|
+
/** Baseline name */
|
|
28
|
+
readonly name: string;
|
|
29
|
+
/** Run ID this baseline points to */
|
|
30
|
+
readonly runId: RunId;
|
|
31
|
+
/** Summary of benchmark results for quick comparison */
|
|
32
|
+
readonly summary: Record<TaskId, BaselineSummaryData>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Baseline storage file format
|
|
36
|
+
*/
|
|
37
|
+
export interface BaselineStorage {
|
|
38
|
+
/** Named baselines */
|
|
39
|
+
readonly baselines: Record<string, BaselineReference>;
|
|
40
|
+
/** Default baseline name (optional) */
|
|
41
|
+
readonly default?: string;
|
|
42
|
+
/** Schema version */
|
|
43
|
+
readonly version: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Baseline summary data for a single task
|
|
47
|
+
*/
|
|
48
|
+
export interface BaselineSummaryData {
|
|
49
|
+
/** Mean execution time in nanoseconds */
|
|
50
|
+
readonly mean: number;
|
|
51
|
+
/** Operations per second */
|
|
52
|
+
readonly opsPerSecond: number;
|
|
53
|
+
/** 99th percentile (if available) */
|
|
54
|
+
readonly p99?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Complete budget definition
|
|
58
|
+
*/
|
|
59
|
+
export interface Budget {
|
|
60
|
+
/** Absolute thresholds */
|
|
61
|
+
readonly absolute?: AbsoluteBudget;
|
|
62
|
+
/** Relative thresholds */
|
|
63
|
+
readonly relative?: RelativeBudget;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Budget evaluation result for a single task
|
|
67
|
+
*/
|
|
68
|
+
export interface BudgetResult {
|
|
69
|
+
/** Actual measured values */
|
|
70
|
+
readonly actual: {
|
|
71
|
+
readonly mean: number;
|
|
72
|
+
readonly opsPerSecond: number;
|
|
73
|
+
readonly p99?: number;
|
|
74
|
+
};
|
|
75
|
+
/** Baseline values (if relative budget) */
|
|
76
|
+
readonly baseline?: {
|
|
77
|
+
readonly mean: number;
|
|
78
|
+
readonly opsPerSecond: number;
|
|
79
|
+
readonly p99?: number;
|
|
80
|
+
};
|
|
81
|
+
/** Budget that was checked */
|
|
82
|
+
readonly budget: Budget;
|
|
83
|
+
/** Whether budget passed */
|
|
84
|
+
readonly passed: boolean;
|
|
85
|
+
/** Task identifier (file/suite/task) */
|
|
86
|
+
readonly taskId: TaskId;
|
|
87
|
+
/** Violations (what thresholds were exceeded) */
|
|
88
|
+
readonly violations: BudgetViolation[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Budget evaluation summary for entire run
|
|
92
|
+
*/
|
|
93
|
+
export interface BudgetSummary {
|
|
94
|
+
/** Number failed */
|
|
95
|
+
readonly failed: number;
|
|
96
|
+
/** Number passed */
|
|
97
|
+
readonly passed: number;
|
|
98
|
+
/** Individual results */
|
|
99
|
+
readonly results: BudgetResult[];
|
|
100
|
+
/** Total budgets checked */
|
|
101
|
+
readonly total: number;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Specific budget violation
|
|
105
|
+
*/
|
|
106
|
+
export interface BudgetViolation {
|
|
107
|
+
/** Actual measured value */
|
|
108
|
+
readonly actual: number;
|
|
109
|
+
/** How much over/under threshold (as decimal, e.g., 0.15 = 15% over) */
|
|
110
|
+
readonly delta: number;
|
|
111
|
+
/** Human-readable message */
|
|
112
|
+
readonly message: string;
|
|
113
|
+
/** Expected threshold */
|
|
114
|
+
readonly threshold: number;
|
|
115
|
+
/** Type of budget that was violated */
|
|
116
|
+
readonly type: 'maxP99' | 'maxRegression' | 'maxTime' | 'minOpsPerSec';
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Relative performance budgets (comparison-based)
|
|
120
|
+
*/
|
|
121
|
+
export interface RelativeBudget {
|
|
122
|
+
/** Name of baseline to compare against */
|
|
123
|
+
readonly baseline?: string;
|
|
124
|
+
/** Maximum performance regression as decimal (0.10 = 10%) */
|
|
125
|
+
readonly maxRegression?: number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Branded type for benchmark run identifiers
|
|
129
|
+
*
|
|
130
|
+
* RunId is a 7-character alphanumeric string that uniquely identifies a
|
|
131
|
+
* benchmark run. Using a branded type prevents accidental mixing with regular
|
|
132
|
+
* strings or TaskIds.
|
|
133
|
+
*/
|
|
134
|
+
export type RunId = string & {
|
|
135
|
+
readonly __brand: 'RunId';
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Branded type for task identifiers
|
|
139
|
+
*
|
|
140
|
+
* TaskId follows the format: `{filePath}/{suiteName}/{taskName}` Example:
|
|
141
|
+
* `benchmarks/array.bench.js/Array Operations/Array.push()`
|
|
142
|
+
*
|
|
143
|
+
* Using a branded type prevents accidental mixing with regular strings or
|
|
144
|
+
* RunIds.
|
|
145
|
+
*/
|
|
146
|
+
export type TaskId = string & {
|
|
147
|
+
readonly __brand: 'TaskId';
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=budgets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets.d.ts","sourceRoot":"","sources":["../../src/types/budgets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgets.js","sourceRoot":"","sources":["../../src/types/budgets.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/dist/types/cli.cjs
CHANGED
|
@@ -7,15 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ExitCodes = void 0;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
exports.ExitCodes = {
|
|
14
|
-
ConfigurationError: 2,
|
|
15
|
-
ExecutionError: 5,
|
|
16
|
-
FileDiscoveryError: 3,
|
|
17
|
-
GeneralError: 1,
|
|
18
|
-
Success: 0,
|
|
19
|
-
ValidationError: 4,
|
|
20
|
-
};
|
|
10
|
+
const constants_js_1 = require("../constants.cjs");
|
|
11
|
+
Object.defineProperty(exports, "ExitCodes", { enumerable: true, get: function () { return constants_js_1.ExitCodes; } });
|
|
21
12
|
//# sourceMappingURL=cli.js.map
|
package/dist/types/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mDAA4C;AAEnC,0FAFA,wBAAS,OAEA"}
|
package/dist/types/cli.d.cts
CHANGED
|
@@ -4,17 +4,8 @@
|
|
|
4
4
|
* Defines types specific to the command-line interface, including command
|
|
5
5
|
* definitions, argument parsing, and CLI-specific configuration structures.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
export declare const ExitCodes: {
|
|
11
|
-
readonly ConfigurationError: 2;
|
|
12
|
-
readonly ExecutionError: 5;
|
|
13
|
-
readonly FileDiscoveryError: 3;
|
|
14
|
-
readonly GeneralError: 1;
|
|
15
|
-
readonly Success: 0;
|
|
16
|
-
readonly ValidationError: 4;
|
|
17
|
-
};
|
|
7
|
+
import { ExitCodes } from "../constants.cjs";
|
|
8
|
+
export { ExitCodes };
|
|
18
9
|
/**
|
|
19
10
|
* CLI argument specification for a command
|
|
20
11
|
*/
|
|
@@ -36,53 +27,6 @@ export interface ArgumentSpec {
|
|
|
36
27
|
/** Validation function */
|
|
37
28
|
readonly validate?: (value: unknown) => boolean | string;
|
|
38
29
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Base command interface
|
|
41
|
-
*/
|
|
42
|
-
export interface CliCommand {
|
|
43
|
-
/** Command aliases */
|
|
44
|
-
readonly aliases?: string[];
|
|
45
|
-
/** Command description */
|
|
46
|
-
readonly description: string;
|
|
47
|
-
/** Execute the command */
|
|
48
|
-
execute(args: CommandArguments): Promise<ExitCode>;
|
|
49
|
-
/** Command name */
|
|
50
|
-
readonly name: string;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* CLI configuration
|
|
54
|
-
*/
|
|
55
|
-
export interface CliConfig {
|
|
56
|
-
/** Available commands */
|
|
57
|
-
readonly commands: CommandSpec[];
|
|
58
|
-
/** Application description */
|
|
59
|
-
readonly description: string;
|
|
60
|
-
/** Global options */
|
|
61
|
-
readonly globalOptions: ArgumentSpec[];
|
|
62
|
-
/** Application name */
|
|
63
|
-
readonly name: string;
|
|
64
|
-
/** Application version */
|
|
65
|
-
readonly version: string;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Color theme for CLI output
|
|
69
|
-
*/
|
|
70
|
-
export interface ColorTheme {
|
|
71
|
-
/** Error color */
|
|
72
|
-
readonly error: string;
|
|
73
|
-
/** Highlight color */
|
|
74
|
-
readonly highlight: string;
|
|
75
|
-
/** Info color */
|
|
76
|
-
readonly info: string;
|
|
77
|
-
/** Muted/secondary text color */
|
|
78
|
-
readonly muted: string;
|
|
79
|
-
/** Primary color for branding */
|
|
80
|
-
readonly primary: string;
|
|
81
|
-
/** Success color */
|
|
82
|
-
readonly success: string;
|
|
83
|
-
/** Warning color */
|
|
84
|
-
readonly warning: string;
|
|
85
|
-
}
|
|
86
30
|
/**
|
|
87
31
|
* Parsed command-line arguments
|
|
88
32
|
*/
|
|
@@ -111,112 +55,8 @@ export interface CommandSpec {
|
|
|
111
55
|
/** Subcommands */
|
|
112
56
|
readonly subcommands?: CommandSpec[];
|
|
113
57
|
}
|
|
58
|
+
export type Engine = 'accurate' | 'tinybench';
|
|
114
59
|
export type ExitCode = (typeof ExitCodes)[keyof typeof ExitCodes];
|
|
115
|
-
/**
|
|
116
|
-
* Global CLI options available to all commands
|
|
117
|
-
*/
|
|
118
|
-
export interface GlobalOptions {
|
|
119
|
-
readonly c?: string;
|
|
120
|
-
/** Configuration file */
|
|
121
|
-
readonly config?: string;
|
|
122
|
-
/** Working directory */
|
|
123
|
-
readonly cwd?: string;
|
|
124
|
-
readonly h?: boolean;
|
|
125
|
-
/** Help flag */
|
|
126
|
-
readonly help?: boolean;
|
|
127
|
-
/** Log level */
|
|
128
|
-
readonly logLevel?: 'debug' | 'error' | 'info' | 'silent' | 'warn';
|
|
129
|
-
/** No color output */
|
|
130
|
-
readonly noColor?: boolean;
|
|
131
|
-
/** Version flag */
|
|
132
|
-
readonly version?: boolean;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* CLI help information
|
|
136
|
-
*/
|
|
137
|
-
export interface HelpInfo {
|
|
138
|
-
/** Command name */
|
|
139
|
-
readonly command: string;
|
|
140
|
-
/** Command description */
|
|
141
|
-
readonly description: string;
|
|
142
|
-
/** Examples */
|
|
143
|
-
readonly examples?: string[];
|
|
144
|
-
/** Available options */
|
|
145
|
-
readonly options: Array<{
|
|
146
|
-
readonly default?: string;
|
|
147
|
-
readonly description: string;
|
|
148
|
-
readonly flags: string;
|
|
149
|
-
}>;
|
|
150
|
-
/** Available subcommands */
|
|
151
|
-
readonly subcommands?: Array<{
|
|
152
|
-
readonly description: string;
|
|
153
|
-
readonly name: string;
|
|
154
|
-
}>;
|
|
155
|
-
/** Usage string */
|
|
156
|
-
readonly usage: string;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Arguments for the history command
|
|
160
|
-
*/
|
|
161
|
-
export interface HistoryCommandArgs extends CommandArguments {
|
|
162
|
-
readonly f?: 'csv' | 'json' | 'table';
|
|
163
|
-
/** Output format */
|
|
164
|
-
readonly format?: 'csv' | 'json' | 'table';
|
|
165
|
-
readonly l?: number;
|
|
166
|
-
/** Limit number of results */
|
|
167
|
-
readonly limit?: number;
|
|
168
|
-
/** Pattern to match */
|
|
169
|
-
readonly pattern?: string;
|
|
170
|
-
/** Run IDs for show/compare commands */
|
|
171
|
-
readonly runIds?: string[];
|
|
172
|
-
/** Filter by date */
|
|
173
|
-
readonly since?: string;
|
|
174
|
-
/** History subcommand */
|
|
175
|
-
readonly subcommand?: 'clean' | 'compare' | 'list' | 'show' | 'trends';
|
|
176
|
-
/** Tags to filter by */
|
|
177
|
-
readonly tags?: string | string[];
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Arguments for the init command
|
|
181
|
-
*/
|
|
182
|
-
export interface InitCommandArgs extends CommandArguments {
|
|
183
|
-
/** Configuration file type */
|
|
184
|
-
readonly configType?: 'js' | 'json' | 'ts' | 'yaml';
|
|
185
|
-
/** Create example files */
|
|
186
|
-
readonly examples?: boolean;
|
|
187
|
-
/** Force overwrite existing files */
|
|
188
|
-
readonly force?: boolean;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Output formatting options
|
|
192
|
-
*/
|
|
193
|
-
export interface OutputFormat {
|
|
194
|
-
/** Compact output mode */
|
|
195
|
-
readonly compact: boolean;
|
|
196
|
-
/** Progress display options */
|
|
197
|
-
readonly progress: ProgressDisplayOptions;
|
|
198
|
-
/** Color theme */
|
|
199
|
-
readonly theme: ColorTheme;
|
|
200
|
-
/** Use colors in output */
|
|
201
|
-
readonly useColors: boolean;
|
|
202
|
-
/** Use Unicode symbols */
|
|
203
|
-
readonly useUnicode: boolean;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* CLI parser result
|
|
207
|
-
*/
|
|
208
|
-
export interface ParseResult {
|
|
209
|
-
/** Parsed arguments */
|
|
210
|
-
readonly args: CommandArguments;
|
|
211
|
-
/** Parsed command name */
|
|
212
|
-
readonly command: string;
|
|
213
|
-
/** Parsing errors */
|
|
214
|
-
readonly errors: string[];
|
|
215
|
-
/** Whether help was requested */
|
|
216
|
-
readonly help: boolean;
|
|
217
|
-
/** Whether version was requested */
|
|
218
|
-
readonly version: boolean;
|
|
219
|
-
}
|
|
220
60
|
/**
|
|
221
61
|
* Progress display options
|
|
222
62
|
*/
|
|
@@ -232,68 +72,4 @@ export interface ProgressDisplayOptions {
|
|
|
232
72
|
/** Update interval in milliseconds */
|
|
233
73
|
readonly updateInterval: number;
|
|
234
74
|
}
|
|
235
|
-
/**
|
|
236
|
-
* Arguments for the run command
|
|
237
|
-
*/
|
|
238
|
-
export interface RunCommandArgs extends CommandArguments {
|
|
239
|
-
/** Stop on first failure */
|
|
240
|
-
readonly bail?: boolean;
|
|
241
|
-
readonly c?: string;
|
|
242
|
-
/** Configuration file path */
|
|
243
|
-
readonly config?: string;
|
|
244
|
-
readonly e?: 'accurate' | 'tinybench';
|
|
245
|
-
/** Benchmark engine to use */
|
|
246
|
-
readonly engine?: 'accurate' | 'tinybench';
|
|
247
|
-
/** Files to exclude */
|
|
248
|
-
readonly exclude?: string | string[];
|
|
249
|
-
/** Tags to exclude */
|
|
250
|
-
readonly excludeTags?: string | string[];
|
|
251
|
-
readonly i?: number;
|
|
252
|
-
/** Number of iterations */
|
|
253
|
-
readonly iterations?: number;
|
|
254
|
-
/** How to limit benchmark execution */
|
|
255
|
-
readonly limitBy?: 'all' | 'any' | 'iterations' | 'time';
|
|
256
|
-
readonly o?: string;
|
|
257
|
-
readonly of?: string;
|
|
258
|
-
/** Output directory */
|
|
259
|
-
readonly output?: string;
|
|
260
|
-
/** Custom output filename (works with single reporter only) */
|
|
261
|
-
readonly outputFile?: string;
|
|
262
|
-
/** Pattern for discovering benchmark files */
|
|
263
|
-
readonly pattern?: string;
|
|
264
|
-
readonly q?: boolean;
|
|
265
|
-
/** Quiet output */
|
|
266
|
-
readonly quiet?: boolean;
|
|
267
|
-
readonly r?: string | string[];
|
|
268
|
-
/** Reporters to use */
|
|
269
|
-
readonly reporters?: string | string[];
|
|
270
|
-
readonly t?: number;
|
|
271
|
-
/** Tags to include */
|
|
272
|
-
readonly tags?: string | string[];
|
|
273
|
-
/** Time limit in milliseconds */
|
|
274
|
-
readonly time?: number;
|
|
275
|
-
/** Timeout per task */
|
|
276
|
-
readonly timeout?: number;
|
|
277
|
-
readonly v?: boolean;
|
|
278
|
-
/** Verbose output */
|
|
279
|
-
readonly verbose?: boolean;
|
|
280
|
-
readonly w?: number;
|
|
281
|
-
/** Warmup iterations */
|
|
282
|
-
readonly warmup?: number;
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Terminal capabilities
|
|
286
|
-
*/
|
|
287
|
-
export interface TerminalCapabilities {
|
|
288
|
-
/** Terminal height in rows */
|
|
289
|
-
readonly height: number;
|
|
290
|
-
/** Terminal supports interactive features */
|
|
291
|
-
readonly interactive: boolean;
|
|
292
|
-
/** Terminal supports colors */
|
|
293
|
-
readonly supportsColor: boolean;
|
|
294
|
-
/** Terminal supports Unicode characters */
|
|
295
|
-
readonly supportsUnicode: boolean;
|
|
296
|
-
/** Terminal width in columns */
|
|
297
|
-
readonly width: number;
|
|
298
|
-
}
|
|
299
75
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/types/cli.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,yBAAwB;AAE5C,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzD,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sBAAsB;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,mBAAmB;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,2BAA2B;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IACrC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,yBAAyB;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,oCAAoC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,sCAAsC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC"}
|