@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.
Files changed (40) hide show
  1. package/dist/ava-extractor.js +31 -35
  2. package/dist/ava-extractor.js.map +1 -1
  3. package/dist/eslint-extractor.d.ts.map +1 -1
  4. package/dist/eslint-extractor.js +9 -8
  5. package/dist/eslint-extractor.js.map +1 -1
  6. package/dist/jasmine-extractor.d.ts.map +1 -1
  7. package/dist/jasmine-extractor.js +19 -14
  8. package/dist/jasmine-extractor.js.map +1 -1
  9. package/dist/jest-extractor.d.ts.map +1 -1
  10. package/dist/jest-extractor.js +117 -63
  11. package/dist/jest-extractor.js.map +1 -1
  12. package/dist/junit-extractor.d.ts.map +1 -1
  13. package/dist/junit-extractor.js +35 -44
  14. package/dist/junit-extractor.js.map +1 -1
  15. package/dist/mocha-extractor.d.ts.map +1 -1
  16. package/dist/mocha-extractor.js +20 -15
  17. package/dist/mocha-extractor.js.map +1 -1
  18. package/dist/openapi-extractor.d.ts +25 -0
  19. package/dist/openapi-extractor.d.ts.map +1 -0
  20. package/dist/openapi-extractor.js +37 -0
  21. package/dist/openapi-extractor.js.map +1 -0
  22. package/dist/playwright-extractor.d.ts.map +1 -1
  23. package/dist/playwright-extractor.js +19 -9
  24. package/dist/playwright-extractor.js.map +1 -1
  25. package/dist/smart-extractor.d.ts +4 -4
  26. package/dist/smart-extractor.d.ts.map +1 -1
  27. package/dist/smart-extractor.js +59 -48
  28. package/dist/smart-extractor.js.map +1 -1
  29. package/dist/tap-extractor.js +14 -9
  30. package/dist/tap-extractor.js.map +1 -1
  31. package/dist/typescript-extractor.d.ts.map +1 -1
  32. package/dist/typescript-extractor.js +6 -4
  33. package/dist/typescript-extractor.js.map +1 -1
  34. package/dist/utils.d.ts.map +1 -1
  35. package/dist/utils.js +2 -1
  36. package/dist/utils.js.map +1 -1
  37. package/dist/vitest-extractor.d.ts.map +1 -1
  38. package/dist/vitest-extractor.js +280 -160
  39. package/dist/vitest-extractor.js.map +1 -1
  40. 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;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA4H5E;AAoGD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAW1D"}
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
- const failureMatch = line.match(/^\s+(\d+)\)\s+(.*\.spec\.ts):(\d+):(\d+)\s+›\s+(.+?)\s*$/);
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 (nextLine.match(/^\s+\d+\)\s+/)) {
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
- const errorMessageMatch = errorBlock.match(/Error:\s*(.+?)(?:\n\n|\n(?=\s+at\s))/s);
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
- const stackMatch = errorBlock.match(/at\s+(.*\.spec\.ts):(\d+):(\d+)/);
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 = errorFile.match(/(tests?\/.+\.spec\.ts)/i);
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 || 'unknown';
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(') || message.includes('toBe') || message.includes('toContain') || message.includes('toBeVisible') || message.includes('toHaveValue') || message.includes('toHaveCount')) {
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":"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"}
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. **Mocha**: `X passing`/`X failing` summary + numbered list
21
- * 6. **Playwright**: `.spec.ts` files + numbered failures with `›` separator
22
- * 7. **Jest**: `FAIL`/`PASS`/`●` markers or `Test Suites:` summary
23
- * 8. **Vitest**: `✓`/`✕` symbols or `Test Files` summary
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;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA+H1F"}
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"}
@@ -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. **Mocha**: `X passing`/`X failing` summary + numbered list
30
- * 6. **Playwright**: `.spec.ts` files + numbered failures with `›` separator
31
- * 7. **Jest**: `FAIL`/`PASS`/`●` markers or `Test Suites:` summary
32
- * 8. **Vitest**: `✓`/`✕` symbols or `Test Files` summary
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 = cleanOutput.match(/error TS\d+:/);
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 = cleanOutput.match(/✖ \d+ problems?/) ||
81
- cleanOutput.match(/\d+:\d+:?\s+(error|warning)\s+/);
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 (cleanOutput.match(/✖ \d+ problems?/))
89
+ if (/✖ \d+ problems?/.exec(cleanOutput))
86
90
  patterns.push('✖ X problems summary');
87
- if (cleanOutput.match(/\d+:\d+:?\s+(error|warning)\s+/))
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 (cleanOutput.match(/^<\?xml\s+/m) && cleanOutput.includes('<testsuite')) {
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:') && cleanOutput.match(/^\d+\)\s+/m)) {
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
- cleanOutput.match(/\s+\d+\)\s+/)) {
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 Jest/Vitest to avoid misdetection
143
+ // Must check BEFORE Vitest to avoid misdetection (.spec.ts vs .test.ts)
114
144
  const hasPlaywrightMarkers = (cleanOutput.includes('.spec.ts') &&
115
- (cleanOutput.match(/\d+\)\s+.*\.spec\.ts:\d+:\d+\s+›/) ||
116
- cleanOutput.match(/✘.*\.spec\.ts/)));
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
- if (cleanOutput.match(/\d+\)\s+.*\.spec\.ts:\d+:\d+\s+›/))
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
- if (cleanOutput.match(/✘.*\.spec\.ts/))
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
- (cleanOutput.includes('Test Files') || cleanOutput.match(/FAIL\s+\d+\s+test\s+(file|case)/i) || cleanOutput.includes('.test.ts'));
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 (cleanOutput.match(/FAIL\s+\d+\s+test\s+(file|case)/i))
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
- if (!result.metadata) {
223
- result.metadata = {
224
- confidence: 100,
225
- completeness: 100,
226
- issues: [],
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":"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"}
1
+ {"version":3,"file":"smart-extractor.js","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"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"}
@@ -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 || undefined;
44
- const message = failure.message || 'Test failed';
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
- const failureMatch = line.match(/^not ok\s+\d+\s+(.+)$/);
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
- const atMatch = yamlLine.match(/^\s+at:\s+(.+)$/);
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
- const parenMatch = location.match(/\(([^)]+)\)/);
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 = cleanPath.match(/^(.+):(\d+):\d+$/);
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}${error.line ? `:${error.line}` : ''}`
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,CAoD5E"}
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":"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"}
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,uIAAuI;IACvI,MAAM,UAAU,GAAG,+DAA+D,CAAC;IACnF,uIAAuI;IACvI,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,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAwB;YACzC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACrB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAwB;gBACzC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAEzE,8DAA8D;IAC9D,MAAM,WAAW,GAAG,MAAM;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACrE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,UAAU,mBAAmB,YAAY,aAAa;QAClE,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACvC,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,MAAwB;IACrD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,4CAA4C,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -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,CAGnD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB1D"}
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
- // eslint-disable-next-line no-control-regex
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,4CAA4C;IAC5C,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
+ {"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;AA8CD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,oBAAoB,CAkPtB"}
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"}