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
package/dist/config/schema.cjs
CHANGED
|
@@ -40,9 +40,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
40
40
|
};
|
|
41
41
|
})();
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.safeParseConfig = exports.partialModestBenchConfigSchema = void 0;
|
|
43
|
+
exports.safeParseConfig = exports.safeParsePartialConfig = exports.partialModestBenchConfigSchema = void 0;
|
|
44
44
|
const z = __importStar(require("zod"));
|
|
45
45
|
const constants_js_1 = require("../constants.cjs");
|
|
46
|
+
const budget_schema_js_1 = require("./budget-schema.cjs");
|
|
46
47
|
/**
|
|
47
48
|
* Schema for threshold configuration
|
|
48
49
|
*
|
|
@@ -86,6 +87,41 @@ const thresholdConfigSchema = z
|
|
|
86
87
|
.meta({
|
|
87
88
|
title: 'Threshold Configuration',
|
|
88
89
|
});
|
|
90
|
+
/**
|
|
91
|
+
* Inline budget schema for configuration (no transforms for JSON Schema
|
|
92
|
+
* compatibility - transforms are applied manually in transformBudgets
|
|
93
|
+
* function)
|
|
94
|
+
*/
|
|
95
|
+
const budgetSchema = z
|
|
96
|
+
.object({
|
|
97
|
+
absolute: z
|
|
98
|
+
.object({
|
|
99
|
+
maxP99: z
|
|
100
|
+
.union([z.number().positive(), z.string()])
|
|
101
|
+
.optional()
|
|
102
|
+
.describe('Maximum 99th percentile in nanoseconds or time string'),
|
|
103
|
+
maxTime: z
|
|
104
|
+
.union([z.number().positive(), z.string()])
|
|
105
|
+
.describe('Maximum mean time in nanoseconds or time string (e.g., "10ms")'),
|
|
106
|
+
minOpsPerSec: z
|
|
107
|
+
.number()
|
|
108
|
+
.positive()
|
|
109
|
+
.optional()
|
|
110
|
+
.describe('Minimum operations per second'),
|
|
111
|
+
})
|
|
112
|
+
.optional()
|
|
113
|
+
.describe('Absolute performance thresholds'),
|
|
114
|
+
relative: z
|
|
115
|
+
.object({
|
|
116
|
+
maxRegression: z
|
|
117
|
+
.union([z.number().min(0).max(1), z.string()])
|
|
118
|
+
.optional()
|
|
119
|
+
.describe('Maximum regression as decimal (0.1) or percentage string ("10%")'),
|
|
120
|
+
})
|
|
121
|
+
.optional()
|
|
122
|
+
.describe('Relative performance thresholds vs baseline'),
|
|
123
|
+
})
|
|
124
|
+
.describe('Performance budget with absolute and/or relative thresholds');
|
|
89
125
|
/**
|
|
90
126
|
* Schema for the main ModestBench configuration
|
|
91
127
|
*
|
|
@@ -99,6 +135,18 @@ const modestBenchConfigSchema = z
|
|
|
99
135
|
.optional()
|
|
100
136
|
.describe('JSON Schema reference for IDE support (not used by ModestBench)'),
|
|
101
137
|
bail: z.boolean().describe('Stop benchmark execution on first failure'),
|
|
138
|
+
baseline: z
|
|
139
|
+
.string()
|
|
140
|
+
.optional()
|
|
141
|
+
.describe('Name of baseline to use for relative budget comparisons. Must match a saved baseline name.'),
|
|
142
|
+
budgetMode: z
|
|
143
|
+
.enum(['fail', 'warn', 'report'])
|
|
144
|
+
.optional()
|
|
145
|
+
.describe('How to handle budget violations: "fail" exits with error (default), "warn" shows warnings, "report" includes in output without failing'),
|
|
146
|
+
budgets: z
|
|
147
|
+
.record(z.string(), z.record(z.string(), z.record(z.string(), budgetSchema)))
|
|
148
|
+
.optional()
|
|
149
|
+
.describe('Performance budgets organized by file → suite → task. Budgets define acceptable performance thresholds.'),
|
|
102
150
|
exclude: z
|
|
103
151
|
.array(z.string())
|
|
104
152
|
.describe('Glob patterns to exclude from benchmark file discovery (e.g., "node_modules/**", ".git/**")'),
|
|
@@ -123,6 +171,45 @@ const modestBenchConfigSchema = z
|
|
|
123
171
|
pattern: z
|
|
124
172
|
.union([z.string().min(1), z.array(z.string().min(1))])
|
|
125
173
|
.describe(`Glob pattern(s) for discovering benchmark files. Can be a single pattern string or array of patterns (e.g., "**/*${constants_js_1.BENCHMARK_FILE_PATTERN}")`),
|
|
174
|
+
profile: z
|
|
175
|
+
.object({
|
|
176
|
+
exclude: z
|
|
177
|
+
.array(z.string())
|
|
178
|
+
.optional()
|
|
179
|
+
.describe('Glob patterns to exclude from profiling results'),
|
|
180
|
+
focus: z
|
|
181
|
+
.array(z.string())
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('Glob patterns to focus on in profiling results. If specified, only matching files will be shown'),
|
|
184
|
+
minCallCount: z
|
|
185
|
+
.number()
|
|
186
|
+
.int()
|
|
187
|
+
.nonnegative()
|
|
188
|
+
.optional()
|
|
189
|
+
.describe('Minimum number of times a function must be called to be included in results'),
|
|
190
|
+
minExecutionPercent: z
|
|
191
|
+
.number()
|
|
192
|
+
.nonnegative()
|
|
193
|
+
.max(100)
|
|
194
|
+
.default(1.0)
|
|
195
|
+
.describe('Minimum execution percentage threshold for including functions in results'),
|
|
196
|
+
outputFile: z
|
|
197
|
+
.string()
|
|
198
|
+
.optional()
|
|
199
|
+
.describe('Path to write profile report to file'),
|
|
200
|
+
smartDetection: z
|
|
201
|
+
.boolean()
|
|
202
|
+
.default(true)
|
|
203
|
+
.describe('Automatically detect and focus on user code, excluding node_modules and Node.js internals'),
|
|
204
|
+
topN: z
|
|
205
|
+
.number()
|
|
206
|
+
.int()
|
|
207
|
+
.positive()
|
|
208
|
+
.default(25)
|
|
209
|
+
.describe('Maximum number of top functions to show in results'),
|
|
210
|
+
})
|
|
211
|
+
.optional()
|
|
212
|
+
.describe('Configuration for profile command to identify benchmark candidates'),
|
|
126
213
|
quiet: z
|
|
127
214
|
.boolean()
|
|
128
215
|
.describe('Run in quiet mode with minimal console output (only errors and final results)'),
|
|
@@ -168,6 +255,88 @@ const modestBenchConfigSchema = z
|
|
|
168
255
|
* merging with defaults.
|
|
169
256
|
*/
|
|
170
257
|
exports.partialModestBenchConfigSchema = modestBenchConfigSchema.partial();
|
|
258
|
+
/**
|
|
259
|
+
* Transform budget values (parse time/percentage strings)
|
|
260
|
+
*/
|
|
261
|
+
const transformBudgetValues = (budget) => {
|
|
262
|
+
const transformed = {};
|
|
263
|
+
if (budget.absolute) {
|
|
264
|
+
transformed.absolute = {};
|
|
265
|
+
// Copy minOpsPerSec as-is (already a number)
|
|
266
|
+
if (budget.absolute.minOpsPerSec !== undefined) {
|
|
267
|
+
transformed.absolute.minOpsPerSec = budget.absolute.minOpsPerSec;
|
|
268
|
+
}
|
|
269
|
+
// Parse time strings
|
|
270
|
+
if (budget.absolute.maxTime !== undefined) {
|
|
271
|
+
transformed.absolute.maxTime =
|
|
272
|
+
typeof budget.absolute.maxTime === 'string'
|
|
273
|
+
? (0, budget_schema_js_1.parseTimeString)(budget.absolute.maxTime)
|
|
274
|
+
: budget.absolute.maxTime;
|
|
275
|
+
}
|
|
276
|
+
if (budget.absolute.maxP99 !== undefined) {
|
|
277
|
+
transformed.absolute.maxP99 =
|
|
278
|
+
typeof budget.absolute.maxP99 === 'string'
|
|
279
|
+
? (0, budget_schema_js_1.parseTimeString)(budget.absolute.maxP99)
|
|
280
|
+
: budget.absolute.maxP99;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (budget.relative) {
|
|
284
|
+
transformed.relative = {};
|
|
285
|
+
// Parse percentage strings
|
|
286
|
+
if (budget.relative.maxRegression !== undefined) {
|
|
287
|
+
transformed.relative.maxRegression =
|
|
288
|
+
typeof budget.relative.maxRegression === 'string'
|
|
289
|
+
? (0, budget_schema_js_1.parsePercentageString)(budget.relative.maxRegression)
|
|
290
|
+
: budget.relative.maxRegression;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return transformed;
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* Transform nested budget structure to flat TaskId → Budget mapping Also parses
|
|
297
|
+
* time and percentage strings
|
|
298
|
+
*
|
|
299
|
+
* @internal
|
|
300
|
+
*/
|
|
301
|
+
const transformBudgets = (nested) => {
|
|
302
|
+
if (!nested) {
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
const flat = {};
|
|
306
|
+
for (const [file, suites] of Object.entries(nested)) {
|
|
307
|
+
for (const [suite, tasks] of Object.entries(suites)) {
|
|
308
|
+
for (const [task, budget] of Object.entries(tasks)) {
|
|
309
|
+
const taskId = `${file}/${suite}/${task}`;
|
|
310
|
+
// Transform budget values (parse strings)
|
|
311
|
+
flat[taskId] = transformBudgetValues(budget);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return flat;
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* Safely parse and validate a partial configuration object with budget
|
|
319
|
+
* transformation
|
|
320
|
+
*
|
|
321
|
+
* @param config - The configuration object to validate
|
|
322
|
+
* @returns A result object with either success: true and data, or success:
|
|
323
|
+
* false and error
|
|
324
|
+
*/
|
|
325
|
+
const safeParsePartialConfig = (config) => {
|
|
326
|
+
const result = exports.partialModestBenchConfigSchema.safeParse(config);
|
|
327
|
+
// Transform nested budgets to flat structure after validation
|
|
328
|
+
if (result.success && result.data.budgets) {
|
|
329
|
+
return {
|
|
330
|
+
...result,
|
|
331
|
+
data: {
|
|
332
|
+
...result.data,
|
|
333
|
+
budgets: transformBudgets(result.data.budgets),
|
|
334
|
+
},
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
return result;
|
|
338
|
+
};
|
|
339
|
+
exports.safeParsePartialConfig = safeParsePartialConfig;
|
|
171
340
|
/**
|
|
172
341
|
* Safely parse and validate a configuration object
|
|
173
342
|
*
|
|
@@ -176,7 +345,18 @@ exports.partialModestBenchConfigSchema = modestBenchConfigSchema.partial();
|
|
|
176
345
|
* false and error
|
|
177
346
|
*/
|
|
178
347
|
const safeParseConfig = (config) => {
|
|
179
|
-
|
|
348
|
+
const result = modestBenchConfigSchema.safeParse(config);
|
|
349
|
+
// Transform nested budgets to flat structure after validation
|
|
350
|
+
if (result.success && result.data.budgets) {
|
|
351
|
+
return {
|
|
352
|
+
...result,
|
|
353
|
+
data: {
|
|
354
|
+
...result.data,
|
|
355
|
+
budgets: transformBudgets(result.data.budgets),
|
|
356
|
+
},
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
return result;
|
|
180
360
|
};
|
|
181
361
|
exports.safeParseConfig = safeParseConfig;
|
|
182
362
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAIzB,mDAAyD;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.d.cts
CHANGED
|
@@ -14,6 +14,15 @@ import type { ModestBenchConfig } from "../types/core.cjs";
|
|
|
14
14
|
* merging with defaults.
|
|
15
15
|
*/
|
|
16
16
|
export declare const partialModestBenchConfigSchema: z.ZodType<Partial<ModestBenchConfig>>;
|
|
17
|
+
/**
|
|
18
|
+
* Safely parse and validate a partial configuration object with budget
|
|
19
|
+
* transformation
|
|
20
|
+
*
|
|
21
|
+
* @param config - The configuration object to validate
|
|
22
|
+
* @returns A result object with either success: true and data, or success:
|
|
23
|
+
* false and error
|
|
24
|
+
*/
|
|
25
|
+
export declare const safeParsePartialConfig: (config: unknown) => z.ZodSafeParseResult<Partial<ModestBenchConfig>>;
|
|
17
26
|
/**
|
|
18
27
|
* Safely parse and validate a configuration object
|
|
19
28
|
*
|
|
@@ -21,12 +30,12 @@ export declare const partialModestBenchConfigSchema: z.ZodType<Partial<ModestBen
|
|
|
21
30
|
* @returns A result object with either success: true and data, or success:
|
|
22
31
|
* false and error
|
|
23
32
|
*/
|
|
24
|
-
export declare const safeParseConfig: (config: unknown) => z.
|
|
33
|
+
export declare const safeParseConfig: (config: unknown) => z.ZodSafeParseSuccess<{
|
|
25
34
|
bail: boolean;
|
|
26
35
|
exclude: string[];
|
|
27
36
|
excludeTags: string[];
|
|
28
37
|
iterations: number;
|
|
29
|
-
limitBy: "
|
|
38
|
+
limitBy: "any" | "iterations" | "time" | "all";
|
|
30
39
|
metadata: Record<string, unknown>;
|
|
31
40
|
outputDir: string;
|
|
32
41
|
pattern: string | string[];
|
|
@@ -47,5 +56,115 @@ export declare const safeParseConfig: (config: unknown) => z.ZodSafeParseResult<
|
|
|
47
56
|
verbose: boolean;
|
|
48
57
|
warmup: number;
|
|
49
58
|
$schema?: string | undefined;
|
|
50
|
-
|
|
59
|
+
baseline?: string | undefined;
|
|
60
|
+
budgetMode?: "fail" | "warn" | "report" | undefined;
|
|
61
|
+
budgets?: Record<string, Record<string, Record<string, {
|
|
62
|
+
absolute?: {
|
|
63
|
+
maxTime: string | number;
|
|
64
|
+
maxP99?: string | number | undefined;
|
|
65
|
+
minOpsPerSec?: number | undefined;
|
|
66
|
+
} | undefined;
|
|
67
|
+
relative?: {
|
|
68
|
+
maxRegression?: string | number | undefined;
|
|
69
|
+
} | undefined;
|
|
70
|
+
}>>> | undefined;
|
|
71
|
+
profile?: {
|
|
72
|
+
minExecutionPercent: number;
|
|
73
|
+
smartDetection: boolean;
|
|
74
|
+
topN: number;
|
|
75
|
+
exclude?: string[] | undefined;
|
|
76
|
+
focus?: string[] | undefined;
|
|
77
|
+
minCallCount?: number | undefined;
|
|
78
|
+
outputFile?: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
}> | z.ZodSafeParseError<{
|
|
81
|
+
bail: boolean;
|
|
82
|
+
exclude: string[];
|
|
83
|
+
excludeTags: string[];
|
|
84
|
+
iterations: number;
|
|
85
|
+
limitBy: "any" | "iterations" | "time" | "all";
|
|
86
|
+
metadata: Record<string, unknown>;
|
|
87
|
+
outputDir: string;
|
|
88
|
+
pattern: string | string[];
|
|
89
|
+
quiet: boolean;
|
|
90
|
+
reporterConfig: Record<string, unknown>;
|
|
91
|
+
reporters: string[];
|
|
92
|
+
tags: string[];
|
|
93
|
+
thresholds: {
|
|
94
|
+
maxMarginOfError?: number | undefined;
|
|
95
|
+
maxMean?: number | undefined;
|
|
96
|
+
maxP95?: number | undefined;
|
|
97
|
+
maxP99?: number | undefined;
|
|
98
|
+
maxStdDev?: number | undefined;
|
|
99
|
+
minOpsPerSecond?: number | undefined;
|
|
100
|
+
};
|
|
101
|
+
time: number;
|
|
102
|
+
timeout: number;
|
|
103
|
+
verbose: boolean;
|
|
104
|
+
warmup: number;
|
|
105
|
+
$schema?: string | undefined;
|
|
106
|
+
baseline?: string | undefined;
|
|
107
|
+
budgetMode?: "fail" | "warn" | "report" | undefined;
|
|
108
|
+
budgets?: Record<string, Record<string, Record<string, {
|
|
109
|
+
absolute?: {
|
|
110
|
+
maxTime: string | number;
|
|
111
|
+
maxP99?: string | number | undefined;
|
|
112
|
+
minOpsPerSec?: number | undefined;
|
|
113
|
+
} | undefined;
|
|
114
|
+
relative?: {
|
|
115
|
+
maxRegression?: string | number | undefined;
|
|
116
|
+
} | undefined;
|
|
117
|
+
}>>> | undefined;
|
|
118
|
+
profile?: {
|
|
119
|
+
minExecutionPercent: number;
|
|
120
|
+
smartDetection: boolean;
|
|
121
|
+
topN: number;
|
|
122
|
+
exclude?: string[] | undefined;
|
|
123
|
+
focus?: string[] | undefined;
|
|
124
|
+
minCallCount?: number | undefined;
|
|
125
|
+
outputFile?: string | undefined;
|
|
126
|
+
} | undefined;
|
|
127
|
+
}> | {
|
|
128
|
+
data: {
|
|
129
|
+
budgets: Record<string, unknown> | undefined;
|
|
130
|
+
bail: boolean;
|
|
131
|
+
exclude: string[];
|
|
132
|
+
excludeTags: string[];
|
|
133
|
+
iterations: number;
|
|
134
|
+
limitBy: "any" | "iterations" | "time" | "all";
|
|
135
|
+
metadata: Record<string, unknown>;
|
|
136
|
+
outputDir: string;
|
|
137
|
+
pattern: string | string[];
|
|
138
|
+
quiet: boolean;
|
|
139
|
+
reporterConfig: Record<string, unknown>;
|
|
140
|
+
reporters: string[];
|
|
141
|
+
tags: string[];
|
|
142
|
+
thresholds: {
|
|
143
|
+
maxMarginOfError?: number | undefined;
|
|
144
|
+
maxMean?: number | undefined;
|
|
145
|
+
maxP95?: number | undefined;
|
|
146
|
+
maxP99?: number | undefined;
|
|
147
|
+
maxStdDev?: number | undefined;
|
|
148
|
+
minOpsPerSecond?: number | undefined;
|
|
149
|
+
};
|
|
150
|
+
time: number;
|
|
151
|
+
timeout: number;
|
|
152
|
+
verbose: boolean;
|
|
153
|
+
warmup: number;
|
|
154
|
+
$schema?: string | undefined;
|
|
155
|
+
baseline?: string | undefined;
|
|
156
|
+
budgetMode?: "fail" | "warn" | "report" | undefined;
|
|
157
|
+
profile?: {
|
|
158
|
+
minExecutionPercent: number;
|
|
159
|
+
smartDetection: boolean;
|
|
160
|
+
topN: number;
|
|
161
|
+
exclude?: string[] | undefined;
|
|
162
|
+
focus?: string[] | undefined;
|
|
163
|
+
minCallCount?: number | undefined;
|
|
164
|
+
outputFile?: string | undefined;
|
|
165
|
+
} | undefined;
|
|
166
|
+
};
|
|
167
|
+
success: true;
|
|
168
|
+
error?: never;
|
|
169
|
+
};
|
|
51
170
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAAyB;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAAyB;AA6Q1D;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,EAAE,CAAC,CAAC,OAAO,CACpD,OAAO,CAAC,iBAAiB,CAAC,CACS,CAAC;AAsGtC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,OAAO,qDAoBrD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoB9C,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -14,6 +14,15 @@ import type { ModestBenchConfig } from "../types/core.js";
|
|
|
14
14
|
* merging with defaults.
|
|
15
15
|
*/
|
|
16
16
|
export declare const partialModestBenchConfigSchema: z.ZodType<Partial<ModestBenchConfig>>;
|
|
17
|
+
/**
|
|
18
|
+
* Safely parse and validate a partial configuration object with budget
|
|
19
|
+
* transformation
|
|
20
|
+
*
|
|
21
|
+
* @param config - The configuration object to validate
|
|
22
|
+
* @returns A result object with either success: true and data, or success:
|
|
23
|
+
* false and error
|
|
24
|
+
*/
|
|
25
|
+
export declare const safeParsePartialConfig: (config: unknown) => z.ZodSafeParseResult<Partial<ModestBenchConfig>>;
|
|
17
26
|
/**
|
|
18
27
|
* Safely parse and validate a configuration object
|
|
19
28
|
*
|
|
@@ -21,12 +30,12 @@ export declare const partialModestBenchConfigSchema: z.ZodType<Partial<ModestBen
|
|
|
21
30
|
* @returns A result object with either success: true and data, or success:
|
|
22
31
|
* false and error
|
|
23
32
|
*/
|
|
24
|
-
export declare const safeParseConfig: (config: unknown) => z.
|
|
33
|
+
export declare const safeParseConfig: (config: unknown) => z.ZodSafeParseSuccess<{
|
|
25
34
|
bail: boolean;
|
|
26
35
|
exclude: string[];
|
|
27
36
|
excludeTags: string[];
|
|
28
37
|
iterations: number;
|
|
29
|
-
limitBy: "
|
|
38
|
+
limitBy: "any" | "iterations" | "time" | "all";
|
|
30
39
|
metadata: Record<string, unknown>;
|
|
31
40
|
outputDir: string;
|
|
32
41
|
pattern: string | string[];
|
|
@@ -47,5 +56,115 @@ export declare const safeParseConfig: (config: unknown) => z.ZodSafeParseResult<
|
|
|
47
56
|
verbose: boolean;
|
|
48
57
|
warmup: number;
|
|
49
58
|
$schema?: string | undefined;
|
|
50
|
-
|
|
59
|
+
baseline?: string | undefined;
|
|
60
|
+
budgetMode?: "fail" | "warn" | "report" | undefined;
|
|
61
|
+
budgets?: Record<string, Record<string, Record<string, {
|
|
62
|
+
absolute?: {
|
|
63
|
+
maxTime: string | number;
|
|
64
|
+
maxP99?: string | number | undefined;
|
|
65
|
+
minOpsPerSec?: number | undefined;
|
|
66
|
+
} | undefined;
|
|
67
|
+
relative?: {
|
|
68
|
+
maxRegression?: string | number | undefined;
|
|
69
|
+
} | undefined;
|
|
70
|
+
}>>> | undefined;
|
|
71
|
+
profile?: {
|
|
72
|
+
minExecutionPercent: number;
|
|
73
|
+
smartDetection: boolean;
|
|
74
|
+
topN: number;
|
|
75
|
+
exclude?: string[] | undefined;
|
|
76
|
+
focus?: string[] | undefined;
|
|
77
|
+
minCallCount?: number | undefined;
|
|
78
|
+
outputFile?: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
}> | z.ZodSafeParseError<{
|
|
81
|
+
bail: boolean;
|
|
82
|
+
exclude: string[];
|
|
83
|
+
excludeTags: string[];
|
|
84
|
+
iterations: number;
|
|
85
|
+
limitBy: "any" | "iterations" | "time" | "all";
|
|
86
|
+
metadata: Record<string, unknown>;
|
|
87
|
+
outputDir: string;
|
|
88
|
+
pattern: string | string[];
|
|
89
|
+
quiet: boolean;
|
|
90
|
+
reporterConfig: Record<string, unknown>;
|
|
91
|
+
reporters: string[];
|
|
92
|
+
tags: string[];
|
|
93
|
+
thresholds: {
|
|
94
|
+
maxMarginOfError?: number | undefined;
|
|
95
|
+
maxMean?: number | undefined;
|
|
96
|
+
maxP95?: number | undefined;
|
|
97
|
+
maxP99?: number | undefined;
|
|
98
|
+
maxStdDev?: number | undefined;
|
|
99
|
+
minOpsPerSecond?: number | undefined;
|
|
100
|
+
};
|
|
101
|
+
time: number;
|
|
102
|
+
timeout: number;
|
|
103
|
+
verbose: boolean;
|
|
104
|
+
warmup: number;
|
|
105
|
+
$schema?: string | undefined;
|
|
106
|
+
baseline?: string | undefined;
|
|
107
|
+
budgetMode?: "fail" | "warn" | "report" | undefined;
|
|
108
|
+
budgets?: Record<string, Record<string, Record<string, {
|
|
109
|
+
absolute?: {
|
|
110
|
+
maxTime: string | number;
|
|
111
|
+
maxP99?: string | number | undefined;
|
|
112
|
+
minOpsPerSec?: number | undefined;
|
|
113
|
+
} | undefined;
|
|
114
|
+
relative?: {
|
|
115
|
+
maxRegression?: string | number | undefined;
|
|
116
|
+
} | undefined;
|
|
117
|
+
}>>> | undefined;
|
|
118
|
+
profile?: {
|
|
119
|
+
minExecutionPercent: number;
|
|
120
|
+
smartDetection: boolean;
|
|
121
|
+
topN: number;
|
|
122
|
+
exclude?: string[] | undefined;
|
|
123
|
+
focus?: string[] | undefined;
|
|
124
|
+
minCallCount?: number | undefined;
|
|
125
|
+
outputFile?: string | undefined;
|
|
126
|
+
} | undefined;
|
|
127
|
+
}> | {
|
|
128
|
+
data: {
|
|
129
|
+
budgets: Record<string, unknown> | undefined;
|
|
130
|
+
bail: boolean;
|
|
131
|
+
exclude: string[];
|
|
132
|
+
excludeTags: string[];
|
|
133
|
+
iterations: number;
|
|
134
|
+
limitBy: "any" | "iterations" | "time" | "all";
|
|
135
|
+
metadata: Record<string, unknown>;
|
|
136
|
+
outputDir: string;
|
|
137
|
+
pattern: string | string[];
|
|
138
|
+
quiet: boolean;
|
|
139
|
+
reporterConfig: Record<string, unknown>;
|
|
140
|
+
reporters: string[];
|
|
141
|
+
tags: string[];
|
|
142
|
+
thresholds: {
|
|
143
|
+
maxMarginOfError?: number | undefined;
|
|
144
|
+
maxMean?: number | undefined;
|
|
145
|
+
maxP95?: number | undefined;
|
|
146
|
+
maxP99?: number | undefined;
|
|
147
|
+
maxStdDev?: number | undefined;
|
|
148
|
+
minOpsPerSecond?: number | undefined;
|
|
149
|
+
};
|
|
150
|
+
time: number;
|
|
151
|
+
timeout: number;
|
|
152
|
+
verbose: boolean;
|
|
153
|
+
warmup: number;
|
|
154
|
+
$schema?: string | undefined;
|
|
155
|
+
baseline?: string | undefined;
|
|
156
|
+
budgetMode?: "fail" | "warn" | "report" | undefined;
|
|
157
|
+
profile?: {
|
|
158
|
+
minExecutionPercent: number;
|
|
159
|
+
smartDetection: boolean;
|
|
160
|
+
topN: number;
|
|
161
|
+
exclude?: string[] | undefined;
|
|
162
|
+
focus?: string[] | undefined;
|
|
163
|
+
minCallCount?: number | undefined;
|
|
164
|
+
outputFile?: string | undefined;
|
|
165
|
+
} | undefined;
|
|
166
|
+
};
|
|
167
|
+
success: true;
|
|
168
|
+
error?: never;
|
|
169
|
+
};
|
|
51
170
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB;AA6Q1D;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,EAAE,CAAC,CAAC,OAAO,CACpD,OAAO,CAAC,iBAAiB,CAAC,CACS,CAAC;AAsGtC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,OAAO,qDAoBrD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoB9C,CAAC"}
|