@scrymore/scry-sbcov 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +410 -0
- package/bin/scry-sbcov.js +3 -0
- package/dist/analyzers/git-analyzer.d.ts +49 -0
- package/dist/analyzers/git-analyzer.d.ts.map +1 -0
- package/dist/analyzers/git-analyzer.js +265 -0
- package/dist/analyzers/git-analyzer.js.map +1 -0
- package/dist/cli/config.d.ts +12 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +197 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +164 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/analyzer.d.ts +19 -0
- package/dist/core/analyzer.d.ts.map +1 -0
- package/dist/core/analyzer.js +117 -0
- package/dist/core/analyzer.js.map +1 -0
- package/dist/core/coverage-calculator.d.ts +38 -0
- package/dist/core/coverage-calculator.d.ts.map +1 -0
- package/dist/core/coverage-calculator.js +335 -0
- package/dist/core/coverage-calculator.js.map +1 -0
- package/dist/core/report-generator.d.ts +10 -0
- package/dist/core/report-generator.d.ts.map +1 -0
- package/dist/core/report-generator.js +477 -0
- package/dist/core/report-generator.js.map +1 -0
- package/dist/core/story-executor.d.ts +22 -0
- package/dist/core/story-executor.d.ts.map +1 -0
- package/dist/core/story-executor.js +379 -0
- package/dist/core/story-executor.js.map +1 -0
- package/dist/detectors/component-detector.d.ts +15 -0
- package/dist/detectors/component-detector.d.ts.map +1 -0
- package/dist/detectors/component-detector.js +632 -0
- package/dist/detectors/component-detector.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/story-parser.d.ts +18 -0
- package/dist/parsers/story-parser.d.ts.map +1 -0
- package/dist/parsers/story-parser.js +353 -0
- package/dist/parsers/story-parser.js.map +1 -0
- package/dist/types/index.d.ts +502 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Analyzer
|
|
3
|
+
* Identifies new and modified files compared to a base branch for "new code" coverage analysis
|
|
4
|
+
*/
|
|
5
|
+
import { simpleGit } from 'simple-git';
|
|
6
|
+
import parseDiff from 'parse-diff';
|
|
7
|
+
/**
|
|
8
|
+
* Analyze git changes compared to a base branch
|
|
9
|
+
*/
|
|
10
|
+
export async function analyzeGitChanges(projectPath, baseBranch, verbose = false) {
|
|
11
|
+
const git = simpleGit(projectPath);
|
|
12
|
+
try {
|
|
13
|
+
// Check if we're in a git repository
|
|
14
|
+
const isRepo = await git.checkIsRepo();
|
|
15
|
+
if (!isRepo) {
|
|
16
|
+
if (verbose) {
|
|
17
|
+
console.log('Not a git repository, skipping git analysis');
|
|
18
|
+
}
|
|
19
|
+
return createDisabledAnalysis();
|
|
20
|
+
}
|
|
21
|
+
// Get current branch and commit
|
|
22
|
+
let currentBranch;
|
|
23
|
+
try {
|
|
24
|
+
currentBranch = (await git.revparse(['--abbrev-ref', 'HEAD'])).trim();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Detached HEAD state
|
|
28
|
+
currentBranch = 'HEAD';
|
|
29
|
+
}
|
|
30
|
+
const currentCommitSha = (await git.revparse(['HEAD'])).trim();
|
|
31
|
+
// Get base commit using merge-base for accurate PR comparison
|
|
32
|
+
let baseCommitSha;
|
|
33
|
+
try {
|
|
34
|
+
// Try to find the merge base
|
|
35
|
+
baseCommitSha = (await git.raw(['merge-base', baseBranch, 'HEAD'])).trim();
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
try {
|
|
39
|
+
// Fallback to direct branch comparison
|
|
40
|
+
baseCommitSha = (await git.revparse([baseBranch])).trim();
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
if (verbose) {
|
|
44
|
+
console.warn(`Warning: Could not find base branch "${baseBranch}", disabling git analysis`);
|
|
45
|
+
}
|
|
46
|
+
return createDisabledAnalysis();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (verbose) {
|
|
50
|
+
console.log(`Git analysis: comparing ${currentCommitSha.substring(0, 7)} to ${baseCommitSha.substring(0, 7)} (${baseBranch})`);
|
|
51
|
+
}
|
|
52
|
+
// Get diff with rename detection
|
|
53
|
+
const rawDiff = await git.diff([
|
|
54
|
+
'-M', // Detect renames
|
|
55
|
+
'-U0', // No context lines (just changes)
|
|
56
|
+
'--no-color', // No ANSI colors
|
|
57
|
+
`${baseCommitSha}...HEAD`,
|
|
58
|
+
]);
|
|
59
|
+
const changedFiles = parseDiffOutput(rawDiff, projectPath);
|
|
60
|
+
if (verbose) {
|
|
61
|
+
console.log(`Found ${changedFiles.length} changed files`);
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
enabled: true,
|
|
65
|
+
baseBranch,
|
|
66
|
+
baseCommitSha,
|
|
67
|
+
currentCommitSha,
|
|
68
|
+
currentBranch,
|
|
69
|
+
changedFiles,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (verbose) {
|
|
74
|
+
console.warn('Git analysis failed:', error);
|
|
75
|
+
}
|
|
76
|
+
return createDisabledAnalysis();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Parse git diff output
|
|
81
|
+
*/
|
|
82
|
+
function parseDiffOutput(diffOutput, _projectPath) {
|
|
83
|
+
if (!diffOutput.trim()) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
const files = parseDiff(diffOutput);
|
|
87
|
+
const changedFiles = [];
|
|
88
|
+
for (const file of files) {
|
|
89
|
+
// Skip deleted files
|
|
90
|
+
if (file.to === '/dev/null' || !file.to) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const addedLines = [];
|
|
94
|
+
const deletedLines = [];
|
|
95
|
+
for (const chunk of file.chunks) {
|
|
96
|
+
for (const change of chunk.changes) {
|
|
97
|
+
if (change.type === 'add' && 'ln' in change) {
|
|
98
|
+
addedLines.push(change.ln);
|
|
99
|
+
}
|
|
100
|
+
else if (change.type === 'del' && 'ln' in change) {
|
|
101
|
+
deletedLines.push(change.ln);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
let status;
|
|
106
|
+
// Check for renamed files by comparing from/to paths
|
|
107
|
+
const isRenamed = file.from && file.to && file.from !== file.to && !file.new && !file.deleted;
|
|
108
|
+
if (file.new) {
|
|
109
|
+
status = 'new';
|
|
110
|
+
}
|
|
111
|
+
else if (file.deleted) {
|
|
112
|
+
status = 'deleted';
|
|
113
|
+
}
|
|
114
|
+
else if (isRenamed) {
|
|
115
|
+
status = 'renamed';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
status = 'modified';
|
|
119
|
+
}
|
|
120
|
+
changedFiles.push({
|
|
121
|
+
filePath: file.to,
|
|
122
|
+
status,
|
|
123
|
+
addedLines,
|
|
124
|
+
deletedLines,
|
|
125
|
+
previousPath: isRenamed ? file.from : undefined,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return changedFiles;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Create a disabled git analysis result
|
|
132
|
+
*/
|
|
133
|
+
function createDisabledAnalysis() {
|
|
134
|
+
return {
|
|
135
|
+
enabled: false,
|
|
136
|
+
baseBranch: '',
|
|
137
|
+
baseCommitSha: '',
|
|
138
|
+
currentCommitSha: '',
|
|
139
|
+
currentBranch: '',
|
|
140
|
+
changedFiles: [],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if a file is new
|
|
145
|
+
*/
|
|
146
|
+
export function isFileNew(filePath, gitAnalysis) {
|
|
147
|
+
if (!gitAnalysis.enabled)
|
|
148
|
+
return false;
|
|
149
|
+
const normalizedPath = normalizeFilePath(filePath);
|
|
150
|
+
return gitAnalysis.changedFiles.some(f => normalizeFilePath(f.filePath) === normalizedPath && f.status === 'new');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Check if a file is modified
|
|
154
|
+
*/
|
|
155
|
+
export function isFileModified(filePath, gitAnalysis) {
|
|
156
|
+
if (!gitAnalysis.enabled)
|
|
157
|
+
return false;
|
|
158
|
+
const normalizedPath = normalizeFilePath(filePath);
|
|
159
|
+
return gitAnalysis.changedFiles.some(f => normalizeFilePath(f.filePath) === normalizedPath &&
|
|
160
|
+
(f.status === 'modified' || f.status === 'renamed'));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Check if a file has changed (new or modified)
|
|
164
|
+
*/
|
|
165
|
+
export function isFileChanged(filePath, gitAnalysis) {
|
|
166
|
+
if (!gitAnalysis.enabled)
|
|
167
|
+
return false;
|
|
168
|
+
const normalizedPath = normalizeFilePath(filePath);
|
|
169
|
+
return gitAnalysis.changedFiles.some(f => normalizeFilePath(f.filePath) === normalizedPath && f.status !== 'deleted');
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get new lines in a file
|
|
173
|
+
*/
|
|
174
|
+
export function getNewLinesInFile(filePath, gitAnalysis) {
|
|
175
|
+
if (!gitAnalysis.enabled)
|
|
176
|
+
return [];
|
|
177
|
+
const normalizedPath = normalizeFilePath(filePath);
|
|
178
|
+
const file = gitAnalysis.changedFiles.find(f => normalizeFilePath(f.filePath) === normalizedPath);
|
|
179
|
+
if (!file)
|
|
180
|
+
return [];
|
|
181
|
+
// For new files, all lines are "new"
|
|
182
|
+
if (file.status === 'new') {
|
|
183
|
+
return file.addedLines;
|
|
184
|
+
}
|
|
185
|
+
return file.addedLines;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get the number of added lines in a file
|
|
189
|
+
*/
|
|
190
|
+
export function getAddedLineCount(filePath, gitAnalysis) {
|
|
191
|
+
const newLines = getNewLinesInFile(filePath, gitAnalysis);
|
|
192
|
+
return newLines.length;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get the number of modified (changed but not added) lines
|
|
196
|
+
*/
|
|
197
|
+
export function getModifiedLineCount(filePath, gitAnalysis) {
|
|
198
|
+
if (!gitAnalysis.enabled)
|
|
199
|
+
return 0;
|
|
200
|
+
const normalizedPath = normalizeFilePath(filePath);
|
|
201
|
+
const file = gitAnalysis.changedFiles.find(f => normalizeFilePath(f.filePath) === normalizedPath);
|
|
202
|
+
if (!file || file.status === 'new')
|
|
203
|
+
return 0;
|
|
204
|
+
// Modified lines are approximated by the number of deleted lines
|
|
205
|
+
// (lines that were changed typically show as delete + add)
|
|
206
|
+
return file.deletedLines.length;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Normalize file path for comparison
|
|
210
|
+
*/
|
|
211
|
+
function normalizeFilePath(filePath) {
|
|
212
|
+
// Remove leading slashes and normalize
|
|
213
|
+
return filePath.replace(/^\/+/, '').replace(/\\/g, '/');
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get change status for a file
|
|
217
|
+
*/
|
|
218
|
+
export function getFileChangeStatus(filePath, gitAnalysis) {
|
|
219
|
+
if (!gitAnalysis.enabled)
|
|
220
|
+
return 'unchanged';
|
|
221
|
+
if (isFileNew(filePath, gitAnalysis)) {
|
|
222
|
+
return 'new';
|
|
223
|
+
}
|
|
224
|
+
if (isFileModified(filePath, gitAnalysis)) {
|
|
225
|
+
return 'modified';
|
|
226
|
+
}
|
|
227
|
+
return 'unchanged';
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Check if git analysis detected a shallow clone
|
|
231
|
+
*/
|
|
232
|
+
export async function checkForShallowClone(projectPath) {
|
|
233
|
+
const git = simpleGit(projectPath);
|
|
234
|
+
try {
|
|
235
|
+
const isShallow = await git.raw(['rev-parse', '--is-shallow-repository']);
|
|
236
|
+
return isShallow.trim() === 'true';
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get information about the git repository
|
|
244
|
+
*/
|
|
245
|
+
export async function getGitInfo(projectPath) {
|
|
246
|
+
const git = simpleGit(projectPath);
|
|
247
|
+
try {
|
|
248
|
+
const isRepo = await git.checkIsRepo();
|
|
249
|
+
if (!isRepo)
|
|
250
|
+
return null;
|
|
251
|
+
const commitSha = (await git.revparse(['HEAD'])).trim();
|
|
252
|
+
let branch;
|
|
253
|
+
try {
|
|
254
|
+
branch = (await git.revparse(['--abbrev-ref', 'HEAD'])).trim();
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
branch = 'HEAD';
|
|
258
|
+
}
|
|
259
|
+
return { commitSha, branch };
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=git-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/git-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration file loader for scry-sbcov
|
|
3
|
+
* Supports scry-sbcov.config.js, scry-sbcov.config.mjs, and package.json
|
|
4
|
+
*/
|
|
5
|
+
import type { ScryConfig, CliOptions } from '../types/index.js';
|
|
6
|
+
declare const DEFAULT_CONFIG: ScryConfig;
|
|
7
|
+
/**
|
|
8
|
+
* Merge CLI options with config file and defaults
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadConfig(cliOptions: CliOptions, projectPath?: string): Promise<ScryConfig>;
|
|
11
|
+
export { DEFAULT_CONFIG };
|
|
12
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAEjF,QAAA,MAAM,cAAc,EAAE,UA4BrB,CAAC;AAgFF;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,UAAU,EACtB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAyDrB;AAmCD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration file loader for scry-sbcov
|
|
3
|
+
* Supports scry-sbcov.config.js, scry-sbcov.config.mjs, and package.json
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'node:fs';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import { pathToFileURL } from 'node:url';
|
|
8
|
+
const DEFAULT_CONFIG = {
|
|
9
|
+
include: ['src/**/*.tsx', 'src/**/*.jsx'],
|
|
10
|
+
exclude: ['**/*.test.tsx', '**/*.spec.tsx', '**/*.test.jsx', '**/*.spec.jsx', '**/index.tsx', '**/index.jsx', '**/__mocks__/**', '**/__tests__/**'],
|
|
11
|
+
storyPatterns: ['**/*.stories.tsx', '**/*.stories.ts', '**/*.stories.jsx', '**/*.stories.js'],
|
|
12
|
+
baseBranch: 'main',
|
|
13
|
+
enableGitAnalysis: true,
|
|
14
|
+
execute: false,
|
|
15
|
+
storybookUrl: 'http://localhost:6006',
|
|
16
|
+
storybookStaticDir: null,
|
|
17
|
+
executionTimeout: 15000,
|
|
18
|
+
thresholds: {
|
|
19
|
+
componentCoverage: 80,
|
|
20
|
+
propCoverage: 70,
|
|
21
|
+
variantCoverage: 60,
|
|
22
|
+
newCodeCoverage: 90,
|
|
23
|
+
},
|
|
24
|
+
outputPath: null,
|
|
25
|
+
scenarioPatterns: {
|
|
26
|
+
loading: ['isLoading', 'loading', 'isProcessing', 'pending', 'isFetching'],
|
|
27
|
+
error: ['isError', 'hasError', 'error', 'errorMessage', 'isInvalid'],
|
|
28
|
+
empty: ['isEmpty', 'empty', 'noData', 'hasData'],
|
|
29
|
+
disabled: ['disabled', 'isDisabled'],
|
|
30
|
+
open: ['isOpen', 'open', 'expanded', 'isExpanded'],
|
|
31
|
+
visible: ['isVisible', 'visible', 'hidden', 'isHidden'],
|
|
32
|
+
selected: ['isSelected', 'selected', 'checked', 'isChecked'],
|
|
33
|
+
active: ['isActive', 'active'],
|
|
34
|
+
},
|
|
35
|
+
componentStoryMapping: {},
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Load configuration from file
|
|
39
|
+
*/
|
|
40
|
+
async function loadConfigFile(configPath) {
|
|
41
|
+
const absolutePath = path.isAbsolute(configPath)
|
|
42
|
+
? configPath
|
|
43
|
+
: path.resolve(process.cwd(), configPath);
|
|
44
|
+
if (!fs.existsSync(absolutePath)) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
// ES module import for .js and .mjs files
|
|
49
|
+
if (absolutePath.endsWith('.js') || absolutePath.endsWith('.mjs')) {
|
|
50
|
+
const fileUrl = pathToFileURL(absolutePath).href;
|
|
51
|
+
const module = await import(fileUrl);
|
|
52
|
+
return module.default || module;
|
|
53
|
+
}
|
|
54
|
+
// JSON files
|
|
55
|
+
if (absolutePath.endsWith('.json')) {
|
|
56
|
+
const content = fs.readFileSync(absolutePath, 'utf-8');
|
|
57
|
+
return JSON.parse(content);
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.error(`Error loading config file ${configPath}:`, error);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load configuration from package.json
|
|
68
|
+
*/
|
|
69
|
+
function loadPackageJsonConfig(projectPath) {
|
|
70
|
+
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
71
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const content = fs.readFileSync(packageJsonPath, 'utf-8');
|
|
76
|
+
const packageJson = JSON.parse(content);
|
|
77
|
+
return packageJson['scry-sbcov'] || null;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Find and load configuration automatically
|
|
85
|
+
*/
|
|
86
|
+
async function autoLoadConfig(projectPath) {
|
|
87
|
+
const configFiles = [
|
|
88
|
+
'scry-sbcov.config.js',
|
|
89
|
+
'scry-sbcov.config.mjs',
|
|
90
|
+
'scry-sbcov.config.json',
|
|
91
|
+
'.scry-sbcov.js',
|
|
92
|
+
'.scry-sbcov.json',
|
|
93
|
+
];
|
|
94
|
+
for (const configFile of configFiles) {
|
|
95
|
+
const configPath = path.join(projectPath, configFile);
|
|
96
|
+
if (fs.existsSync(configPath)) {
|
|
97
|
+
const config = await loadConfigFile(configPath);
|
|
98
|
+
if (config) {
|
|
99
|
+
return config;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Fall back to package.json
|
|
104
|
+
return loadPackageJsonConfig(projectPath);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Merge CLI options with config file and defaults
|
|
108
|
+
*/
|
|
109
|
+
export async function loadConfig(cliOptions, projectPath = process.cwd()) {
|
|
110
|
+
// Start with defaults
|
|
111
|
+
let config = { ...DEFAULT_CONFIG };
|
|
112
|
+
// Load from config file if specified, or auto-detect
|
|
113
|
+
let fileConfig = null;
|
|
114
|
+
if (cliOptions.config) {
|
|
115
|
+
fileConfig = await loadConfigFile(cliOptions.config);
|
|
116
|
+
if (!fileConfig) {
|
|
117
|
+
console.warn(`Warning: Config file ${cliOptions.config} not found, using defaults`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
fileConfig = await autoLoadConfig(projectPath);
|
|
122
|
+
}
|
|
123
|
+
// Merge file config
|
|
124
|
+
if (fileConfig) {
|
|
125
|
+
config = mergeConfig(config, fileConfig);
|
|
126
|
+
}
|
|
127
|
+
// Override with CLI options
|
|
128
|
+
if (cliOptions.include) {
|
|
129
|
+
config.include = cliOptions.include.split(',').map(s => s.trim());
|
|
130
|
+
}
|
|
131
|
+
if (cliOptions.exclude) {
|
|
132
|
+
config.exclude = cliOptions.exclude.split(',').map(s => s.trim());
|
|
133
|
+
}
|
|
134
|
+
if (cliOptions.stories) {
|
|
135
|
+
config.storyPatterns = cliOptions.stories.split(',').map(s => s.trim());
|
|
136
|
+
}
|
|
137
|
+
if (cliOptions.base) {
|
|
138
|
+
config.baseBranch = cliOptions.base;
|
|
139
|
+
}
|
|
140
|
+
if (cliOptions.noGit) {
|
|
141
|
+
config.enableGitAnalysis = false;
|
|
142
|
+
}
|
|
143
|
+
if (cliOptions.execute) {
|
|
144
|
+
config.execute = true;
|
|
145
|
+
}
|
|
146
|
+
if (cliOptions.storybookUrl) {
|
|
147
|
+
config.storybookUrl = cliOptions.storybookUrl;
|
|
148
|
+
}
|
|
149
|
+
if (cliOptions.storybookStatic) {
|
|
150
|
+
config.storybookStaticDir = cliOptions.storybookStatic;
|
|
151
|
+
}
|
|
152
|
+
if (cliOptions.output) {
|
|
153
|
+
config.outputPath = cliOptions.output;
|
|
154
|
+
}
|
|
155
|
+
if (cliOptions.thresholdComponent !== undefined) {
|
|
156
|
+
config.thresholds.componentCoverage = cliOptions.thresholdComponent;
|
|
157
|
+
}
|
|
158
|
+
if (cliOptions.thresholdNewCode !== undefined) {
|
|
159
|
+
config.thresholds.newCodeCoverage = cliOptions.thresholdNewCode;
|
|
160
|
+
}
|
|
161
|
+
return config;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Deep merge configuration objects
|
|
165
|
+
*/
|
|
166
|
+
function mergeConfig(base, override) {
|
|
167
|
+
const result = { ...base };
|
|
168
|
+
for (const key of Object.keys(override)) {
|
|
169
|
+
const value = override[key];
|
|
170
|
+
if (value === undefined)
|
|
171
|
+
continue;
|
|
172
|
+
if (key === 'thresholds' && typeof value === 'object') {
|
|
173
|
+
result.thresholds = {
|
|
174
|
+
...base.thresholds,
|
|
175
|
+
...value,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
else if (key === 'scenarioPatterns' && typeof value === 'object') {
|
|
179
|
+
result.scenarioPatterns = {
|
|
180
|
+
...base.scenarioPatterns,
|
|
181
|
+
...value,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
else if (key === 'componentStoryMapping' && typeof value === 'object') {
|
|
185
|
+
result.componentStoryMapping = {
|
|
186
|
+
...base.componentStoryMapping,
|
|
187
|
+
...value,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
result[key] = value;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
export { DEFAULT_CONFIG };
|
|
197
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|