@vibe-validate/extractors 0.14.1 → 0.14.3
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/dist/ava-extractor.js +31 -35
- package/dist/ava-extractor.js.map +1 -1
- package/dist/eslint-extractor.d.ts.map +1 -1
- package/dist/eslint-extractor.js +9 -8
- package/dist/eslint-extractor.js.map +1 -1
- package/dist/jasmine-extractor.d.ts.map +1 -1
- package/dist/jasmine-extractor.js +19 -14
- package/dist/jasmine-extractor.js.map +1 -1
- package/dist/jest-extractor.d.ts.map +1 -1
- package/dist/jest-extractor.js +117 -63
- package/dist/jest-extractor.js.map +1 -1
- package/dist/junit-extractor.d.ts.map +1 -1
- package/dist/junit-extractor.js +35 -44
- package/dist/junit-extractor.js.map +1 -1
- package/dist/mocha-extractor.d.ts.map +1 -1
- package/dist/mocha-extractor.js +20 -15
- package/dist/mocha-extractor.js.map +1 -1
- package/dist/openapi-extractor.d.ts +25 -0
- package/dist/openapi-extractor.d.ts.map +1 -0
- package/dist/openapi-extractor.js +37 -0
- package/dist/openapi-extractor.js.map +1 -0
- package/dist/playwright-extractor.d.ts.map +1 -1
- package/dist/playwright-extractor.js +19 -9
- package/dist/playwright-extractor.js.map +1 -1
- package/dist/smart-extractor.d.ts +4 -4
- package/dist/smart-extractor.d.ts.map +1 -1
- package/dist/smart-extractor.js +59 -48
- package/dist/smart-extractor.js.map +1 -1
- package/dist/tap-extractor.js +14 -9
- package/dist/tap-extractor.js.map +1 -1
- package/dist/typescript-extractor.d.ts.map +1 -1
- package/dist/typescript-extractor.js +6 -4
- package/dist/typescript-extractor.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -1
- package/dist/utils.js.map +1 -1
- package/dist/vitest-extractor.d.ts.map +1 -1
- package/dist/vitest-extractor.js +280 -160
- package/dist/vitest-extractor.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI Error Extractor
|
|
3
|
+
*
|
|
4
|
+
* Parses and formats OpenAPI specification validation errors for LLM consumption.
|
|
5
|
+
*
|
|
6
|
+
* @package @vibe-validate/extractors
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Format OpenAPI validation errors
|
|
10
|
+
*
|
|
11
|
+
* Extracts error lines from OpenAPI validator output (like Redocly CLI).
|
|
12
|
+
*
|
|
13
|
+
* @param output - Raw OpenAPI validator output
|
|
14
|
+
* @returns Structured error information with OpenAPI-specific guidance
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const result = extractOpenAPIErrors(validatorOutput);
|
|
19
|
+
* console.log(result.summary); // "5 OpenAPI validation error(s)"
|
|
20
|
+
* console.log(result.guidance); // "Check openapi.yaml against OpenAPI 3.1 specification"
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function extractOpenAPIErrors(output) {
|
|
24
|
+
// OpenAPI errors typically include location in schema
|
|
25
|
+
const lines = output.split('\n')
|
|
26
|
+
.filter(line => line.includes('error') || line.includes('Error'))
|
|
27
|
+
.slice(0, 10);
|
|
28
|
+
const cleanOutput = lines.join('\n');
|
|
29
|
+
return {
|
|
30
|
+
errors: [],
|
|
31
|
+
summary: `${lines.length} OpenAPI validation error(s)`,
|
|
32
|
+
totalCount: lines.length,
|
|
33
|
+
guidance: 'Check openapi.yaml against OpenAPI 3.1 specification',
|
|
34
|
+
cleanOutput
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=openapi-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-extractor.js","sourceRoot":"","sources":["../src/openapi-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;SAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAChE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO;QACL,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,8BAA8B;QACtD,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,QAAQ,EAAE,sDAAsD;QAChE,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-extractor.d.ts","sourceRoot":"","sources":["../src/playwright-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAkB,oBAAoB,EAAsB,MAAM,YAAY,CAAC;AAG3F;;GAEG;
|
|
1
|
+
{"version":3,"file":"playwright-extractor.d.ts","sourceRoot":"","sources":["../src/playwright-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAkB,oBAAoB,EAAsB,MAAM,YAAY,CAAC;AAG3F;;GAEG;AAEH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA+H5E;AAyGD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAY1D"}
|
|
@@ -30,6 +30,7 @@ import { stripAnsiCodes } from './utils.js';
|
|
|
30
30
|
/**
|
|
31
31
|
* Extract errors from Playwright test output
|
|
32
32
|
*/
|
|
33
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 22 acceptable for Playwright output parsing (handles numbered failures, error blocks, and file path normalization)
|
|
33
34
|
export function extractPlaywrightErrors(output) {
|
|
34
35
|
const errors = [];
|
|
35
36
|
const issues = [];
|
|
@@ -43,7 +44,8 @@ export function extractPlaywrightErrors(output) {
|
|
|
43
44
|
// Match numbered failure header: " 1) tests/path/test.spec.ts:10:5 › test name"
|
|
44
45
|
// File path can include directories: "tests/playwright/test.spec.ts" or just "test.spec.ts"
|
|
45
46
|
// Allow trailing whitespace
|
|
46
|
-
|
|
47
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Playwright test framework output (controlled output), not user input
|
|
48
|
+
const failureMatch = /^\s+(\d+)\)\s+(.*\.spec\.ts):(\d+):(\d+)\s+›\s+(.+?)\s*$/.exec(line);
|
|
47
49
|
if (failureMatch) {
|
|
48
50
|
const [, , file, , , testName] = failureMatch;
|
|
49
51
|
// Extract error block (everything until next numbered failure or end)
|
|
@@ -52,7 +54,7 @@ export function extractPlaywrightErrors(output) {
|
|
|
52
54
|
while (i < lines.length) {
|
|
53
55
|
const nextLine = lines[i];
|
|
54
56
|
// Stop at next numbered failure
|
|
55
|
-
if (
|
|
57
|
+
if (/^\s+\d+\)\s+/.exec(nextLine)) {
|
|
56
58
|
break;
|
|
57
59
|
}
|
|
58
60
|
errorLines.push(nextLine);
|
|
@@ -61,17 +63,19 @@ export function extractPlaywrightErrors(output) {
|
|
|
61
63
|
// Parse the error block
|
|
62
64
|
const errorBlock = errorLines.join('\n');
|
|
63
65
|
// Extract error message (first Error: line and subsequent details)
|
|
64
|
-
|
|
66
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Playwright test framework error messages (controlled output), not user input
|
|
67
|
+
const errorMessageMatch = /Error:\s*(.+?)(?:\n\n|\n(?=\s+at\s))/s.exec(errorBlock);
|
|
65
68
|
const errorMessage = errorMessageMatch ? errorMessageMatch[1].trim() : testName;
|
|
66
69
|
// Extract file location from stack trace (last line with "at file:line:col")
|
|
67
|
-
|
|
70
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Playwright test framework stack traces (controlled output), not user input
|
|
71
|
+
const stackMatch = /at\s+(.*\.spec\.ts):(\d+):(\d+)/.exec(errorBlock);
|
|
68
72
|
let errorFile = file;
|
|
69
73
|
let errorLine = 0;
|
|
70
74
|
let errorColumn = 0;
|
|
71
75
|
if (stackMatch) {
|
|
72
76
|
errorFile = stackMatch[1];
|
|
73
|
-
errorLine = parseInt(stackMatch[2], 10);
|
|
74
|
-
errorColumn = parseInt(stackMatch[3], 10);
|
|
77
|
+
errorLine = Number.parseInt(stackMatch[2], 10);
|
|
78
|
+
errorColumn = Number.parseInt(stackMatch[3], 10);
|
|
75
79
|
}
|
|
76
80
|
else {
|
|
77
81
|
// No stack trace found - track as an issue
|
|
@@ -81,7 +85,7 @@ export function extractPlaywrightErrors(output) {
|
|
|
81
85
|
// If it's an absolute path, extract just the tests/... part or the filename
|
|
82
86
|
if (errorFile.includes('/') && !errorFile.startsWith('tests')) {
|
|
83
87
|
// Absolute path - extract relative part
|
|
84
|
-
const testsMatch =
|
|
88
|
+
const testsMatch = /(tests?\/.+\.spec\.ts)/i.exec(errorFile);
|
|
85
89
|
if (testsMatch) {
|
|
86
90
|
errorFile = testsMatch[1];
|
|
87
91
|
}
|
|
@@ -123,7 +127,7 @@ export function extractPlaywrightErrors(output) {
|
|
|
123
127
|
// Generate clean output
|
|
124
128
|
const formattedOutput = errors
|
|
125
129
|
.map(e => {
|
|
126
|
-
const location = e.file && e.line ? `${e.file}:${e.line}` : e.file
|
|
130
|
+
const location = e.file && e.line ? `${e.file}:${e.line}` : e.file ?? 'unknown';
|
|
127
131
|
return `${location}: ${e.message}`;
|
|
128
132
|
})
|
|
129
133
|
.join('\n');
|
|
@@ -154,7 +158,12 @@ function detectErrorType(message, block) {
|
|
|
154
158
|
return 'timeout';
|
|
155
159
|
}
|
|
156
160
|
// Assertion errors (expect())
|
|
157
|
-
if (message.includes('expect(') ||
|
|
161
|
+
if (message.includes('expect(') ||
|
|
162
|
+
message.includes('toBe') ||
|
|
163
|
+
message.includes('toContain') ||
|
|
164
|
+
message.includes('toBeVisible') ||
|
|
165
|
+
message.includes('toHaveValue') ||
|
|
166
|
+
message.includes('toHaveCount')) {
|
|
158
167
|
return 'assertion-error';
|
|
159
168
|
}
|
|
160
169
|
// Generic error
|
|
@@ -223,6 +232,7 @@ export function isPlaywrightOutput(output) {
|
|
|
223
232
|
// Playwright uses ✘ symbol and .spec.ts files
|
|
224
233
|
const hasPlaywrightMarker = cleanOutput.includes('✘') && cleanOutput.includes('.spec.ts');
|
|
225
234
|
// Or has numbered failures with › separator
|
|
235
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only tests Playwright output format (controlled test framework output), not user input
|
|
226
236
|
const hasNumberedFailures = /^\s+\d+\)\s+.+\.spec\.ts:\d+:\d+\s+›/.test(cleanOutput);
|
|
227
237
|
return hasPlaywrightMarker || hasNumberedFailures;
|
|
228
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-extractor.js","sourceRoot":"","sources":["../src/playwright-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,gEAAgE;IAChE,kCAAkC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjC,iFAAiF;IACjF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,iFAAiF;QACjF,4FAA4F;QAC5F,4BAA4B;QAC5B,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"playwright-extractor.js","sourceRoot":"","sources":["../src/playwright-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,10 @@ import type { ErrorExtractorResult } from './types.js';
|
|
|
17
17
|
* 2. **ESLint**: `✖ X problems` summary or `line:col error/warning` format
|
|
18
18
|
* 3. **JUnit XML**: `<?xml` + `<testsuite>` tags
|
|
19
19
|
* 4. **Jasmine**: `Failures:` header + numbered list (`1) test name`)
|
|
20
|
-
* 5. **
|
|
21
|
-
* 6. **
|
|
22
|
-
* 7. **
|
|
23
|
-
* 8. **Vitest**:
|
|
20
|
+
* 5. **Jest**: `●` bullets or `Test Suites:` summary (checked before Mocha)
|
|
21
|
+
* 6. **Mocha**: `X passing`/`X failing` summary + numbered list
|
|
22
|
+
* 7. **Playwright**: `.spec.ts` files + numbered failures with `›` separator
|
|
23
|
+
* 8. **Vitest**: `×`/`❯`/`❌` symbols + `Test Files` summary
|
|
24
24
|
* 9. **Generic**: Fallback for all other formats
|
|
25
25
|
*
|
|
26
26
|
* @param context - Context string (e.g., step name) preserved for generic extractor error messages only
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-extractor.d.ts","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAYvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;
|
|
1
|
+
{"version":3,"file":"smart-extractor.d.ts","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAYvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA2I1F"}
|
package/dist/smart-extractor.js
CHANGED
|
@@ -26,10 +26,10 @@ import { stripAnsiCodes } from './utils.js';
|
|
|
26
26
|
* 2. **ESLint**: `✖ X problems` summary or `line:col error/warning` format
|
|
27
27
|
* 3. **JUnit XML**: `<?xml` + `<testsuite>` tags
|
|
28
28
|
* 4. **Jasmine**: `Failures:` header + numbered list (`1) test name`)
|
|
29
|
-
* 5. **
|
|
30
|
-
* 6. **
|
|
31
|
-
* 7. **
|
|
32
|
-
* 8. **Vitest**:
|
|
29
|
+
* 5. **Jest**: `●` bullets or `Test Suites:` summary (checked before Mocha)
|
|
30
|
+
* 6. **Mocha**: `X passing`/`X failing` summary + numbered list
|
|
31
|
+
* 7. **Playwright**: `.spec.ts` files + numbered failures with `›` separator
|
|
32
|
+
* 8. **Vitest**: `×`/`❯`/`❌` symbols + `Test Files` summary
|
|
33
33
|
* 9. **Generic**: Fallback for all other formats
|
|
34
34
|
*
|
|
35
35
|
* @param context - Context string (e.g., step name) preserved for generic extractor error messages only
|
|
@@ -51,6 +51,7 @@ import { stripAnsiCodes } from './utils.js';
|
|
|
51
51
|
* // Uses extractVitestErrors
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 26 acceptable for smart extractor (sequentially detects 9 different test framework output formats with pattern matching)
|
|
54
55
|
export function autoDetectAndExtract(context, output) {
|
|
55
56
|
// CRITICAL: Strip ANSI codes centrally before routing to extractors
|
|
56
57
|
//
|
|
@@ -69,7 +70,7 @@ export function autoDetectAndExtract(context, output) {
|
|
|
69
70
|
// TypeScript detection: Check for TypeScript compiler error patterns
|
|
70
71
|
// - "error TS####:" (error code like TS2322, TS2345)
|
|
71
72
|
// - Format: file.ts(line,col): error TS####:
|
|
72
|
-
const hasTypeScriptMarkers =
|
|
73
|
+
const hasTypeScriptMarkers = /error TS\d+:/.exec(cleanOutput);
|
|
73
74
|
if (hasTypeScriptMarkers) {
|
|
74
75
|
const result = extractTypeScriptErrors(cleanOutput);
|
|
75
76
|
return addDetectionMetadata(result, 'typescript', 95, ['error TS#### pattern'], 'TypeScript compiler error format detected');
|
|
@@ -77,31 +78,60 @@ export function autoDetectAndExtract(context, output) {
|
|
|
77
78
|
// ESLint detection: Check for ESLint-specific patterns
|
|
78
79
|
// - "✖ X problem(s)" summary line
|
|
79
80
|
// - File paths with line:col followed by error/warning (with optional colon)
|
|
80
|
-
const hasESLintMarkers =
|
|
81
|
-
|
|
81
|
+
const hasESLintMarkers =
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Boolean OR for pattern matching, not nullish check
|
|
83
|
+
/✖ \d+ problems?/.exec(cleanOutput) ||
|
|
84
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects ESLint output format (controlled linter output), limited input size
|
|
85
|
+
/\d+:\d+:?\s+(error|warning)\s+/.exec(cleanOutput);
|
|
82
86
|
if (hasESLintMarkers) {
|
|
83
87
|
const result = extractESLintErrors(cleanOutput);
|
|
84
88
|
const patterns = [];
|
|
85
|
-
if (
|
|
89
|
+
if (/✖ \d+ problems?/.exec(cleanOutput))
|
|
86
90
|
patterns.push('✖ X problems summary');
|
|
87
|
-
|
|
91
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects ESLint output format (controlled linter output), limited input size
|
|
92
|
+
if (/\d+:\d+:?\s+(error|warning)\s+/.exec(cleanOutput))
|
|
88
93
|
patterns.push('line:col error/warning format');
|
|
89
94
|
return addDetectionMetadata(result, 'eslint', 90, patterns, 'ESLint error format detected');
|
|
90
95
|
}
|
|
91
96
|
// Auto-detect JUnit XML format
|
|
92
97
|
// Must have both <?xml at start of line AND <testsuite tag (not just mentioned in text)
|
|
93
|
-
if (
|
|
98
|
+
if (/^<\?xml\s+/m.exec(cleanOutput) && cleanOutput.includes('<testsuite')) {
|
|
94
99
|
const result = extractJUnitErrors(cleanOutput);
|
|
95
100
|
return addDetectionMetadata(result, 'junit', 100, ['<?xml header', '<testsuite> tag'], 'JUnit XML format detected');
|
|
96
101
|
}
|
|
97
102
|
// Auto-detect Jasmine format (distinctive "Failures:" header)
|
|
98
|
-
if (cleanOutput.includes('Failures:') &&
|
|
103
|
+
if (cleanOutput.includes('Failures:') && /^\d+\)\s+/m.exec(cleanOutput)) {
|
|
99
104
|
const result = extractJasmineErrors(cleanOutput);
|
|
100
105
|
return addDetectionMetadata(result, 'jasmine', 85, ['Failures: header', 'numbered test list'], 'Jasmine test output format detected');
|
|
101
106
|
}
|
|
107
|
+
// Jest detection: Check output for Jest-specific patterns
|
|
108
|
+
// CRITICAL: Must check BEFORE Mocha to avoid false positives
|
|
109
|
+
// - "●" bullet marker for detailed errors (Jest-specific, Vitest uses ×)
|
|
110
|
+
// - "Test Suites:" summary line (Jest-specific, Vitest uses "Test Files")
|
|
111
|
+
// Jest patterns are highly distinctive (confidence 90) vs Mocha's generic patterns (confidence 80)
|
|
112
|
+
// Mocha's "passing"/"failing" patterns can appear in Jest test names, causing misdetection
|
|
113
|
+
const hasJestMarkers = cleanOutput.includes('●') ||
|
|
114
|
+
cleanOutput.includes('Test Suites:');
|
|
115
|
+
if (hasJestMarkers) {
|
|
116
|
+
const result = extractJestErrors(cleanOutput);
|
|
117
|
+
const patterns = [];
|
|
118
|
+
if (cleanOutput.includes('●'))
|
|
119
|
+
patterns.push('● bullet marker');
|
|
120
|
+
if (cleanOutput.includes('Test Suites:'))
|
|
121
|
+
patterns.push('Test Suites: summary');
|
|
122
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects Jest test framework output format (controlled test framework output), not user input
|
|
123
|
+
if (/^\s*FAIL\s+/m.exec(cleanOutput))
|
|
124
|
+
patterns.push('FAIL marker');
|
|
125
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects Jest test framework output format (controlled test framework output), not user input
|
|
126
|
+
if (/^\s*PASS\s+/m.exec(cleanOutput))
|
|
127
|
+
patterns.push('PASS marker');
|
|
128
|
+
return addDetectionMetadata(result, 'jest', 90, patterns, 'Jest test output format detected');
|
|
129
|
+
}
|
|
102
130
|
// Auto-detect Mocha format (distinctive "X passing"/"X failing" pattern)
|
|
131
|
+
// NOTE: Checked AFTER Jest because "passing"/"failing" can appear in Jest test names
|
|
103
132
|
if ((cleanOutput.includes(' passing') || cleanOutput.includes(' failing')) &&
|
|
104
|
-
|
|
133
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects Mocha test framework output format (controlled test framework output), not user input
|
|
134
|
+
/\s+\d+\)\s+/.exec(cleanOutput)) {
|
|
105
135
|
const result = extractMochaErrors(cleanOutput);
|
|
106
136
|
return addDetectionMetadata(result, 'mocha', 80, ['passing/failing summary', 'numbered failures'], 'Mocha test output format detected');
|
|
107
137
|
}
|
|
@@ -110,43 +140,25 @@ export function autoDetectAndExtract(context, output) {
|
|
|
110
140
|
// - Numbered failures with › separator: "1) file.spec.ts:26:5 › test name"
|
|
111
141
|
// - ✘ symbol followed by .spec.ts file path
|
|
112
142
|
// IMPORTANT: Require .spec.ts with › separator OR ✘ + .spec.ts (not just mentioned in text)
|
|
113
|
-
// Must check BEFORE
|
|
143
|
+
// Must check BEFORE Vitest to avoid misdetection (.spec.ts vs .test.ts)
|
|
114
144
|
const hasPlaywrightMarkers = (cleanOutput.includes('.spec.ts') &&
|
|
115
|
-
(
|
|
116
|
-
|
|
145
|
+
// eslint-disable-next-line sonarjs/slow-regex, @typescript-eslint/prefer-nullish-coalescing -- Safe: only detects Playwright test framework output format (controlled test framework output), not user input. Boolean OR for pattern matching.
|
|
146
|
+
(/\d+\)\s+.*\.spec\.ts:\d+:\d+\s+›/.exec(cleanOutput) ||
|
|
147
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects Playwright test framework output format (controlled test framework output), not user input
|
|
148
|
+
/✘.*\.spec\.ts/.exec(cleanOutput)));
|
|
117
149
|
if (hasPlaywrightMarkers) {
|
|
118
150
|
const result = extractPlaywrightErrors(cleanOutput);
|
|
119
151
|
const patterns = [];
|
|
120
152
|
if (cleanOutput.includes('.spec.ts'))
|
|
121
153
|
patterns.push('.spec.ts files');
|
|
122
|
-
|
|
154
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects Playwright test framework output format (controlled test framework output), not user input
|
|
155
|
+
if (/\d+\)\s+.*\.spec\.ts:\d+:\d+\s+›/.exec(cleanOutput))
|
|
123
156
|
patterns.push('numbered failures with › separator');
|
|
124
|
-
|
|
157
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only detects Playwright test framework output format (controlled test framework output), not user input
|
|
158
|
+
if (/✘.*\.spec\.ts/.exec(cleanOutput))
|
|
125
159
|
patterns.push('✘ failure with .spec.ts file');
|
|
126
160
|
return addDetectionMetadata(result, 'playwright', 95, patterns, 'Playwright test output format detected');
|
|
127
161
|
}
|
|
128
|
-
// Jest detection: Check output for Jest-specific patterns FIRST (before Vitest)
|
|
129
|
-
// Jest has very distinctive markers that should be checked first to avoid misdetection
|
|
130
|
-
// - " ● " bullet marker for detailed errors (Jest-specific, Vitest uses ×)
|
|
131
|
-
// - "Test Suites:" summary line (Jest-specific, Vitest uses "Test Files")
|
|
132
|
-
// NOTE: We don't use "FAIL" alone because Vitest also uses it (e.g., "FAIL tests/...")
|
|
133
|
-
// CRITICAL: Must check BEFORE Vitest because Jest stack traces can contain ❯ symbol
|
|
134
|
-
// from source code (e.g., in comments), which would trigger Vitest detection
|
|
135
|
-
const hasJestMarkers = cleanOutput.includes(' ● ') ||
|
|
136
|
-
cleanOutput.includes('Test Suites:');
|
|
137
|
-
if (hasJestMarkers) {
|
|
138
|
-
const result = extractJestErrors(cleanOutput);
|
|
139
|
-
const patterns = [];
|
|
140
|
-
if (cleanOutput.includes(' ● '))
|
|
141
|
-
patterns.push('● bullet marker');
|
|
142
|
-
if (cleanOutput.includes('Test Suites:'))
|
|
143
|
-
patterns.push('Test Suites: summary');
|
|
144
|
-
if (cleanOutput.match(/^\s*FAIL\s+/m))
|
|
145
|
-
patterns.push('FAIL marker');
|
|
146
|
-
if (cleanOutput.match(/^\s*PASS\s+/m))
|
|
147
|
-
patterns.push('PASS marker');
|
|
148
|
-
return addDetectionMetadata(result, 'jest', 90, patterns, 'Jest test output format detected');
|
|
149
|
-
}
|
|
150
162
|
// Vitest detection: Check output for Vitest-specific patterns
|
|
151
163
|
// - "×" symbol (U+00D7 multiplication, Vitest-specific - Jest uses ✕ U+2715)
|
|
152
164
|
// - "❌" cross mark symbol (Vitest failure marker in some formats)
|
|
@@ -158,7 +170,8 @@ export function autoDetectAndExtract(context, output) {
|
|
|
158
170
|
// IMPORTANT: Require MULTIPLE patterns together to avoid false positives
|
|
159
171
|
// (e.g., ❯ can appear in Jest stack traces from source code comments)
|
|
160
172
|
const hasVitestMarkers = (cleanOutput.includes('×') || cleanOutput.includes(' ❯ ') || cleanOutput.includes('❌')) &&
|
|
161
|
-
|
|
173
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Boolean OR for pattern matching, not nullish check
|
|
174
|
+
(cleanOutput.includes('Test Files') || /FAIL\s+\d+\s+test\s+(file|case)/i.exec(cleanOutput) || cleanOutput.includes('.test.ts'));
|
|
162
175
|
if (hasVitestMarkers) {
|
|
163
176
|
const result = extractVitestErrors(cleanOutput);
|
|
164
177
|
const patterns = [];
|
|
@@ -172,7 +185,7 @@ export function autoDetectAndExtract(context, output) {
|
|
|
172
185
|
patterns.push('Test Files summary');
|
|
173
186
|
if (cleanOutput.includes('.test.ts'))
|
|
174
187
|
patterns.push('.test.ts files');
|
|
175
|
-
if (
|
|
188
|
+
if (/FAIL\s+\d+\s+test\s+(file|case)/i.exec(cleanOutput))
|
|
176
189
|
patterns.push('FAIL N test files/cases pattern');
|
|
177
190
|
return addDetectionMetadata(result, 'vitest', 90, patterns, 'Vitest test output format detected');
|
|
178
191
|
}
|
|
@@ -219,13 +232,11 @@ export function autoDetectAndExtract(context, output) {
|
|
|
219
232
|
function addDetectionMetadata(result, extractor, confidence, patterns, reason) {
|
|
220
233
|
// Only add detection metadata if it doesn't already exist
|
|
221
234
|
// (individual extractors might have their own metadata)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
};
|
|
228
|
-
}
|
|
235
|
+
result.metadata ??= {
|
|
236
|
+
confidence: 100,
|
|
237
|
+
completeness: 100,
|
|
238
|
+
issues: [],
|
|
239
|
+
};
|
|
229
240
|
result.metadata.detection = {
|
|
230
241
|
extractor,
|
|
231
242
|
confidence,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-extractor.js","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAAc;IAClE,oEAAoE;IACpE,EAAE;IACF,uDAAuD;IACvD,iDAAiD;IACjD,oEAAoE;IACpE,8CAA8C;IAC9C,wEAAwE;IACxE,oEAAoE;IACpE,EAAE;IACF,YAAY;IACZ,uDAAuD;IACvD,oDAAoD;IACpD,gCAAgC;IAChC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAE3C,qEAAqE;IACrE,qDAAqD;IACrD,6CAA6C;IAC7C,MAAM,oBAAoB,GAAG,
|
|
1
|
+
{"version":3,"file":"smart-extractor.js","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"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"}
|
package/dist/tap-extractor.js
CHANGED
|
@@ -40,9 +40,9 @@ export function extractTAPErrors(output) {
|
|
|
40
40
|
const errors = [];
|
|
41
41
|
let completeCount = 0;
|
|
42
42
|
for (const failure of failures) {
|
|
43
|
-
const file = failure.file
|
|
44
|
-
const message = failure.message
|
|
45
|
-
const context = failure.testName
|
|
43
|
+
const file = failure.file ?? undefined;
|
|
44
|
+
const message = failure.message ?? 'Test failed';
|
|
45
|
+
const context = failure.testName ?? '';
|
|
46
46
|
const isComplete = file && failure.line && message;
|
|
47
47
|
if (isComplete) {
|
|
48
48
|
completeCount++;
|
|
@@ -79,6 +79,7 @@ export function extractTAPErrors(output) {
|
|
|
79
79
|
/**
|
|
80
80
|
* Extract all failures from TAP output
|
|
81
81
|
*/
|
|
82
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 17 acceptable for TAP output parsing (handles test comments, failure markers, and YAML diagnostic blocks)
|
|
82
83
|
function extractFailures(output) {
|
|
83
84
|
const failures = [];
|
|
84
85
|
const lines = output.split('\n');
|
|
@@ -93,7 +94,8 @@ function extractFailures(output) {
|
|
|
93
94
|
continue;
|
|
94
95
|
}
|
|
95
96
|
// Look for failures: "not ok N message"
|
|
96
|
-
|
|
97
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TAP test framework output (controlled output), not user input
|
|
98
|
+
const failureMatch = /^not ok\s+\d+\s+(.+)$/.exec(line);
|
|
97
99
|
if (failureMatch) {
|
|
98
100
|
const message = failureMatch[1].trim();
|
|
99
101
|
const failure = {
|
|
@@ -109,7 +111,8 @@ function extractFailures(output) {
|
|
|
109
111
|
// Extract location from "at:" field
|
|
110
112
|
// Format: "at: Test.<anonymous> (file:///path/to/file.js:line:col)"
|
|
111
113
|
// or: "at: file.js:line:col"
|
|
112
|
-
|
|
114
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TAP test framework YAML diagnostics (controlled output), not user input
|
|
115
|
+
const atMatch = /^\s+at:\s+(.+)$/.exec(yamlLine);
|
|
113
116
|
if (atMatch) {
|
|
114
117
|
const location = atMatch[1];
|
|
115
118
|
const { file, line } = parseLocation(location);
|
|
@@ -141,17 +144,18 @@ function extractFailures(output) {
|
|
|
141
144
|
*/
|
|
142
145
|
function parseLocation(location) {
|
|
143
146
|
// Try to extract from parentheses first: (file:///path:line:col) or (path:line:col)
|
|
144
|
-
|
|
147
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TAP test framework location strings (controlled output), not user input
|
|
148
|
+
const parenMatch = /\(([^)]+)\)/.exec(location);
|
|
145
149
|
const pathString = parenMatch ? parenMatch[1] : location;
|
|
146
150
|
// Remove file:// protocol if present
|
|
147
151
|
const cleanPath = pathString.replace(/^file:\/\//, '');
|
|
148
152
|
// Extract file path and line number
|
|
149
153
|
// Format: /path/to/file.js:line:col or path/to/file.js:line:col
|
|
150
|
-
const match =
|
|
154
|
+
const match = /^(.+):(\d+):\d+$/.exec(cleanPath);
|
|
151
155
|
if (match) {
|
|
152
156
|
return {
|
|
153
157
|
file: match[1],
|
|
154
|
-
line: parseInt(match[2], 10)
|
|
158
|
+
line: Number.parseInt(match[2], 10)
|
|
155
159
|
};
|
|
156
160
|
}
|
|
157
161
|
return {};
|
|
@@ -215,8 +219,9 @@ function formatCleanOutput(errors) {
|
|
|
215
219
|
}
|
|
216
220
|
return errors
|
|
217
221
|
.map(error => {
|
|
222
|
+
const linePart = error.line ? `:${error.line}` : '';
|
|
218
223
|
const location = error.file
|
|
219
|
-
? `${error.file}${
|
|
224
|
+
? `${error.file}${linePart}`
|
|
220
225
|
: 'unknown location';
|
|
221
226
|
const context = error.context ? `[${error.context}] ` : '';
|
|
222
227
|
return `${location}: ${context}${error.message}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap-extractor.js","sourceRoot":"","sources":["../src/tap-extractor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tap-extractor.js","sourceRoot":"","sources":["../src/tap-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-extractor.d.ts","sourceRoot":"","sources":["../src/typescript-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAEvE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"typescript-extractor.d.ts","sourceRoot":"","sources":["../src/typescript-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAEvE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAsD5E"}
|
|
@@ -25,15 +25,17 @@ export function extractTypeScriptErrors(output) {
|
|
|
25
25
|
// TypeScript error patterns - support both old and new formats:
|
|
26
26
|
// Old: file(line,col): error TSxxxx: message
|
|
27
27
|
// New: file:line:col - error TSxxxx: message
|
|
28
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TypeScript compiler output (controlled tool output), not user input
|
|
28
29
|
const oldPattern = /^(.+?)\((\d+),(\d+)\):\s*(error|warning)\s+(TS\d+):\s+(.+)$/gm;
|
|
30
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TypeScript compiler output (controlled tool output), not user input
|
|
29
31
|
const newPattern = /^(.+?):(\d+):(\d+)\s+-\s*(error|warning)\s+(TS\d+):\s+(.+)$/gm;
|
|
30
32
|
// Try new format first (more common in modern tsc)
|
|
31
33
|
let match;
|
|
32
34
|
while ((match = newPattern.exec(output)) !== null) {
|
|
33
35
|
errors.push({
|
|
34
36
|
file: match[1].trim(),
|
|
35
|
-
line: parseInt(match[2]),
|
|
36
|
-
column: parseInt(match[3]),
|
|
37
|
+
line: Number.parseInt(match[2]),
|
|
38
|
+
column: Number.parseInt(match[3]),
|
|
37
39
|
severity: match[4],
|
|
38
40
|
code: match[5],
|
|
39
41
|
message: match[6].trim()
|
|
@@ -44,8 +46,8 @@ export function extractTypeScriptErrors(output) {
|
|
|
44
46
|
while ((match = oldPattern.exec(output)) !== null) {
|
|
45
47
|
errors.push({
|
|
46
48
|
file: match[1].trim(),
|
|
47
|
-
line: parseInt(match[2]),
|
|
48
|
-
column: parseInt(match[3]),
|
|
49
|
+
line: Number.parseInt(match[2]),
|
|
50
|
+
column: Number.parseInt(match[3]),
|
|
49
51
|
severity: match[4],
|
|
50
52
|
code: match[5],
|
|
51
53
|
message: match[6].trim()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-extractor.js","sourceRoot":"","sources":["../src/typescript-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,gEAAgE;IAChE,6CAA6C;IAC7C,6CAA6C;IAC7C,MAAM,UAAU,GAAG,+DAA+D,CAAC;IACnF,MAAM,UAAU,GAAG,+DAA+D,CAAC;IAEnF,mDAAmD;IACnD,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACrB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"typescript-extractor.js","sourceRoot":"","sources":["../src/typescript-extractor.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB1D"}
|
package/dist/utils.js
CHANGED
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
20
|
export function stripAnsiCodes(text) {
|
|
21
|
-
//
|
|
21
|
+
// Control character \x1b is intentionally used to match ANSI escape codes
|
|
22
|
+
// eslint-disable-next-line no-control-regex, sonarjs/no-control-regex -- \x1b is intentional for ANSI escape codes
|
|
22
23
|
return text.replace(/\x1b\[[0-9;]*m/g, '');
|
|
23
24
|
}
|
|
24
25
|
/**
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,0EAA0E;IAC1E,mHAAmH;IACnH,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,IAAI,CAAC,EAAE;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,mBAAmB;QACnB,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,0BAA0B;QAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,gCAAgC;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAE/C,2BAA2B;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-extractor.d.ts","sourceRoot":"","sources":["../src/vitest-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAsB,MAAM,YAAY,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"vitest-extractor.d.ts","sourceRoot":"","sources":["../src/vitest-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAsB,MAAM,YAAY,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAyUD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,oBAAoB,CA+GtB"}
|