modestbench 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -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 +99 -166
- 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 +99 -166
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.cjs +146 -127
- 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 +145 -93
- 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 +114 -23
- 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 +115 -24
- package/dist/core/engine.js.map +1 -1
- package/dist/core/engines/accurate-engine.cjs +171 -36
- package/dist/core/engines/accurate-engine.cjs.map +1 -1
- package/dist/core/engines/accurate-engine.d.cts +5 -0
- package/dist/core/engines/accurate-engine.d.cts.map +1 -1
- package/dist/core/engines/accurate-engine.d.ts +5 -0
- package/dist/core/engines/accurate-engine.d.ts.map +1 -1
- package/dist/core/engines/accurate-engine.js +171 -36
- package/dist/core/engines/accurate-engine.js.map +1 -1
- package/dist/core/engines/tinybench-engine.cjs +3 -2
- 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 +3 -2
- package/dist/core/engines/tinybench-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 +290 -67
- package/dist/reporters/human.cjs.map +1 -1
- package/dist/reporters/human.d.cts +25 -13
- package/dist/reporters/human.d.cts.map +1 -1
- package/dist/reporters/human.d.ts +25 -13
- package/dist/reporters/human.d.ts.map +1 -1
- package/dist/reporters/human.js +290 -67
- 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 +154 -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 +147 -0
- package/dist/reporters/profile-human.js.map +1 -0
- package/dist/reporters/simple.cjs +67 -45
- 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 +67 -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/services/config-manager.cjs +24 -10
- 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 +24 -10
- 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 +116 -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 +112 -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/progress-manager.cjs +10 -2
- package/dist/services/progress-manager.cjs.map +1 -1
- package/dist/services/progress-manager.d.cts +2 -0
- package/dist/services/progress-manager.d.cts.map +1 -1
- package/dist/services/progress-manager.d.ts +2 -0
- package/dist/services/progress-manager.d.ts.map +1 -1
- package/dist/services/progress-manager.js +10 -2
- package/dist/services/progress-manager.js.map +1 -1
- 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 +15 -2
- package/dist/types/core.d.cts.map +1 -1
- package/dist/types/core.d.ts +15 -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 +19 -8
- package/dist/types/interfaces.d.cts.map +1 -1
- package/dist/types/interfaces.d.ts +19 -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 +102 -0
- package/dist/types/profiler.d.cts.map +1 -0
- package/dist/types/profiler.d.ts +102 -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 +18 -19
- 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 +116 -194
- package/src/cli/commands/run.ts +183 -113
- 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 +169 -22
- package/src/core/engines/accurate-engine.ts +195 -44
- package/src/core/engines/tinybench-engine.ts +3 -2
- 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 +434 -115
- package/src/reporters/json.ts +26 -71
- package/src/reporters/profile-human.ts +210 -0
- package/src/reporters/simple.ts +88 -54
- package/src/services/baseline-storage.ts +199 -0
- package/src/services/budget-evaluator.ts +182 -0
- package/src/services/config-manager.ts +24 -9
- package/src/services/file-loader.ts +3 -6
- package/src/services/profiler/profile-filter.ts +147 -0
- package/src/services/profiler/profile-parser.ts +194 -0
- package/src/services/profiler/profile-runner.ts +121 -0
- package/src/services/progress-manager.ts +12 -2
- 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 +52 -10
- package/src/types/index.ts +5 -0
- package/src/types/interfaces.ts +24 -6
- package/src/types/profiler.ts +135 -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 @@
|
|
|
1
|
+
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAEjD,CAAC;AAgBF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,OAAO,KACb,KAAK,IAAI,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAEjC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type Guard Utilities
|
|
3
|
+
*
|
|
4
|
+
* Reusable type guard functions for runtime type checking and narrowing.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Type guard to check if a value is an object (not null or array)
|
|
8
|
+
*
|
|
9
|
+
* @param value - Value to check
|
|
10
|
+
* @returns True if value is a non-null object
|
|
11
|
+
*/
|
|
12
|
+
const isObject = (value) => {
|
|
13
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Type guard to check if a value is an Error instance
|
|
17
|
+
*
|
|
18
|
+
* @param value - Value to check
|
|
19
|
+
* @returns True if value is an Error
|
|
20
|
+
*/
|
|
21
|
+
export const isError = (value) => {
|
|
22
|
+
return value instanceof Error;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Type guard to check if a value has a specific property
|
|
26
|
+
*
|
|
27
|
+
* @param value - Value to check
|
|
28
|
+
* @param property - Property name to check for
|
|
29
|
+
* @returns True if value is an object with the specified property
|
|
30
|
+
*/
|
|
31
|
+
const hasProperty = (value, property) => {
|
|
32
|
+
return isObject(value) && property in value;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Type guard to check if an error has a code property
|
|
36
|
+
*
|
|
37
|
+
* @param error - Error to check
|
|
38
|
+
* @returns True if error has a code property
|
|
39
|
+
*/
|
|
40
|
+
export const hasErrorCode = (error) => {
|
|
41
|
+
return isError(error) && hasProperty(error, 'code');
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=type-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE;IACpE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE;IACxD,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAClB,KAAc,EACd,QAAW,EACkB,EAAE;IAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAc,EACqB,EAAE;IACrC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "modestbench",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A full-ass benchmarking framework for Node.js",
|
|
6
6
|
"repository": {
|
|
@@ -16,9 +16,7 @@
|
|
|
16
16
|
"engines": {
|
|
17
17
|
"node": ">=20.0.0"
|
|
18
18
|
},
|
|
19
|
-
"bin":
|
|
20
|
-
"modestbench": "dist/cli/index.js"
|
|
21
|
-
},
|
|
19
|
+
"bin": "./dist/cli/index.cjs",
|
|
22
20
|
"main": "./dist/index.cjs",
|
|
23
21
|
"types": "./dist/index.d.cts",
|
|
24
22
|
"module": "./dist/index.js",
|
|
@@ -72,14 +70,14 @@
|
|
|
72
70
|
"docs:preview": "astro preview --config astro.config.js",
|
|
73
71
|
"fix": "run-s -sl fix:*",
|
|
74
72
|
"fix:eslint": "eslint --fix .",
|
|
75
|
-
"fix:format": "prettier --write . && markdownlint-cli2 --fix \"**/*.md\"",
|
|
76
73
|
"fix:pkg": "npm pkg fix",
|
|
74
|
+
"fix:prettier": "prettier --write . && markdownlint-cli2 --fix \"**/*.md\"",
|
|
77
75
|
"lint": "run-p -sl --aggregate-output lint:*",
|
|
78
76
|
"lint-staged": "lint-staged",
|
|
79
77
|
"lint:eslint": "eslint .",
|
|
80
|
-
"lint:format": "prettier --check .",
|
|
81
78
|
"lint:knip": "knip",
|
|
82
79
|
"lint:markdown": "markdownlint-cli2 \"**/*.md\"",
|
|
80
|
+
"lint:prettier": "prettier --check .",
|
|
83
81
|
"lint:spelling": "cspell .",
|
|
84
82
|
"lint:types": "tsc --noEmit",
|
|
85
83
|
"prepack": "run-s -s clean build",
|
|
@@ -99,11 +97,13 @@
|
|
|
99
97
|
"cosmiconfig": "9.0.0",
|
|
100
98
|
"cosmiconfig-typescript-loader": "6.2.0",
|
|
101
99
|
"glob": "11.0.3",
|
|
102
|
-
"
|
|
100
|
+
"minimatch": "10.0.3",
|
|
101
|
+
"tinybench": "5.1.0",
|
|
103
102
|
"yargs": "18.0.0",
|
|
104
103
|
"zod": "4.1.12"
|
|
105
104
|
},
|
|
106
105
|
"devDependencies": {
|
|
106
|
+
"@astrojs/mdx": "4.3.9",
|
|
107
107
|
"@astrojs/starlight": "0.36.1",
|
|
108
108
|
"@commitlint/cli": "20.1.0",
|
|
109
109
|
"@commitlint/config-conventional": "20.0.0",
|
|
@@ -112,17 +112,17 @@
|
|
|
112
112
|
"@stylistic/eslint-plugin": "5.5.0",
|
|
113
113
|
"@types/node": "24.9.1",
|
|
114
114
|
"@types/wallabyjs": "0.0.15",
|
|
115
|
-
"@types/yargs": "17.0.
|
|
115
|
+
"@types/yargs": "17.0.34",
|
|
116
116
|
"asciinema-player": "3.12.1",
|
|
117
|
-
"astro": "5.15.
|
|
118
|
-
"bupkis": "0.
|
|
117
|
+
"astro": "5.15.2",
|
|
118
|
+
"bupkis": "0.12.0",
|
|
119
119
|
"cspell": "9.2.2",
|
|
120
120
|
"eslint": "9.38.0",
|
|
121
121
|
"eslint-plugin-jsonc": "2.21.0",
|
|
122
122
|
"eslint-plugin-perfectionist": "4.15.1",
|
|
123
123
|
"globals": "16.4.0",
|
|
124
124
|
"husky": "9.1.7",
|
|
125
|
-
"knip": "5.66.
|
|
125
|
+
"knip": "5.66.3",
|
|
126
126
|
"lint-staged": "16.2.6",
|
|
127
127
|
"markdownlint-cli2": "0.18.1",
|
|
128
128
|
"markdownlint-cli2-formatter-pretty": "0.0.8",
|
|
@@ -145,7 +145,8 @@
|
|
|
145
145
|
"ignoreDependencies": [
|
|
146
146
|
"@types/wallabyjs",
|
|
147
147
|
"markdownlint-cli2-formatter-pretty",
|
|
148
|
-
"asciinema-player"
|
|
148
|
+
"asciinema-player",
|
|
149
|
+
"@astrojs/mdx"
|
|
149
150
|
],
|
|
150
151
|
"ignore": [
|
|
151
152
|
".wallaby.js",
|
|
@@ -172,27 +173,24 @@
|
|
|
172
173
|
}
|
|
173
174
|
},
|
|
174
175
|
"lint-staged": {
|
|
175
|
-
"package.json": [
|
|
176
|
-
"npm pkg fix"
|
|
177
|
-
],
|
|
178
176
|
"*.{ts,cts,js,cjs,yml,json5}": [
|
|
179
177
|
"eslint --fix",
|
|
180
178
|
"prettier --write",
|
|
181
|
-
"cspell"
|
|
179
|
+
"cspell lint --no-must-find-files"
|
|
182
180
|
],
|
|
183
181
|
"**/!(package-lock).json": [
|
|
184
182
|
"eslint --fix",
|
|
185
183
|
"prettier --write",
|
|
186
|
-
"cspell"
|
|
184
|
+
"cspell lint --no-must-find-files"
|
|
187
185
|
],
|
|
188
186
|
"*.md": [
|
|
189
187
|
"markdownlint-cli2 --fix",
|
|
190
188
|
"prettier --write",
|
|
191
|
-
"cspell"
|
|
189
|
+
"cspell lint --no-must-find-files"
|
|
192
190
|
],
|
|
193
191
|
"*.mdx": [
|
|
194
192
|
"prettier --write",
|
|
195
|
-
"cspell"
|
|
193
|
+
"cspell lint --no-must-find-files"
|
|
196
194
|
]
|
|
197
195
|
},
|
|
198
196
|
"prettier": {
|
|
@@ -207,6 +205,7 @@
|
|
|
207
205
|
"tsdoc": true
|
|
208
206
|
},
|
|
209
207
|
"zshy": {
|
|
208
|
+
"bin": "./src/cli/index.ts",
|
|
210
209
|
"exports": {
|
|
211
210
|
".": "./src/index.ts",
|
|
212
211
|
"./cli": "./src/cli/index.ts",
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analyze Command
|
|
3
|
+
*
|
|
4
|
+
* CLI command for analyzing code execution and identifying benchmark
|
|
5
|
+
* candidates. Uses Node.js V8 profiler to capture function execution data.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ProfileConfig } from '../../types/profiler.js';
|
|
11
|
+
import type { CliContext } from '../index.js';
|
|
12
|
+
|
|
13
|
+
import { ProfileHumanReporter } from '../../reporters/profile-human.js';
|
|
14
|
+
import { filterProfile } from '../../services/profiler/profile-filter.js';
|
|
15
|
+
import { parseProfile } from '../../services/profiler/profile-parser.js';
|
|
16
|
+
import { runWithProfiling } from '../../services/profiler/profile-runner.js';
|
|
17
|
+
import { findPackageRoot } from '../../utils/package.js';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Analyze command options interface
|
|
21
|
+
*/
|
|
22
|
+
export interface AnalyzeOptions {
|
|
23
|
+
/** Enable color output */
|
|
24
|
+
color?: boolean | undefined;
|
|
25
|
+
|
|
26
|
+
/** Command to analyze */
|
|
27
|
+
command?: string | undefined;
|
|
28
|
+
|
|
29
|
+
/** Working directory */
|
|
30
|
+
cwd: string;
|
|
31
|
+
|
|
32
|
+
/** Filter by file pattern */
|
|
33
|
+
filterFile?: string | undefined;
|
|
34
|
+
|
|
35
|
+
/** Group by file */
|
|
36
|
+
groupByFile?: boolean | undefined;
|
|
37
|
+
|
|
38
|
+
/** Input profile file */
|
|
39
|
+
input?: string | undefined;
|
|
40
|
+
|
|
41
|
+
/** Minimum execution percentage */
|
|
42
|
+
minPercent?: number | undefined;
|
|
43
|
+
|
|
44
|
+
/** Number of top functions to show */
|
|
45
|
+
top?: number | undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Handle analyze command
|
|
50
|
+
*/
|
|
51
|
+
export const handleAnalyzeCommand = async (
|
|
52
|
+
_context: CliContext,
|
|
53
|
+
options: AnalyzeOptions,
|
|
54
|
+
): Promise<number> => {
|
|
55
|
+
try {
|
|
56
|
+
const startTime = Date.now();
|
|
57
|
+
|
|
58
|
+
// Run profiling or load existing profile
|
|
59
|
+
const logPath = options.input
|
|
60
|
+
? options.input
|
|
61
|
+
: await runWithProfiling(options.command!, {
|
|
62
|
+
cwd: options.cwd,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const duration = Date.now() - startTime;
|
|
66
|
+
|
|
67
|
+
// Parse profile data
|
|
68
|
+
const profileData = await parseProfile(logPath);
|
|
69
|
+
|
|
70
|
+
// Find package root for smart detection
|
|
71
|
+
const packageRoot = await findPackageRoot(options.cwd);
|
|
72
|
+
|
|
73
|
+
// Apply filtering
|
|
74
|
+
const config: ProfileConfig = {
|
|
75
|
+
focus: options.filterFile ? [options.filterFile] : undefined,
|
|
76
|
+
groupByFile: options.groupByFile,
|
|
77
|
+
minExecutionPercent: options.minPercent,
|
|
78
|
+
smartDetection: true,
|
|
79
|
+
topN: options.top,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const filtered = filterProfile(profileData, config, packageRoot);
|
|
83
|
+
|
|
84
|
+
// Add command and duration to filtered data
|
|
85
|
+
filtered.command = options.command;
|
|
86
|
+
filtered.duration = duration;
|
|
87
|
+
|
|
88
|
+
// Report results
|
|
89
|
+
const reporter = new ProfileHumanReporter({
|
|
90
|
+
color: options.color,
|
|
91
|
+
groupByFile: options.groupByFile,
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
reporter.report(filtered);
|
|
95
|
+
|
|
96
|
+
return 0;
|
|
97
|
+
} catch (error) {
|
|
98
|
+
console.error('Analyze command failed:', error);
|
|
99
|
+
return 1;
|
|
100
|
+
}
|
|
101
|
+
};
|