@vibe-validate/extractors 0.17.0-rc2 → 0.17.0-rc4

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 (158) hide show
  1. package/dist/extractor-registry.d.ts +72 -0
  2. package/dist/extractor-registry.d.ts.map +1 -0
  3. package/dist/extractor-registry.js +243 -0
  4. package/dist/extractor-registry.js.map +1 -0
  5. package/dist/extractors/ava/index.d.ts +23 -0
  6. package/dist/extractors/ava/index.d.ts.map +1 -0
  7. package/dist/extractors/ava/index.js +507 -0
  8. package/dist/extractors/ava/index.js.map +1 -0
  9. package/dist/extractors/ava/index.test.d.ts +7 -0
  10. package/dist/extractors/ava/index.test.d.ts.map +1 -0
  11. package/dist/extractors/ava/index.test.js +408 -0
  12. package/dist/extractors/ava/index.test.js.map +1 -0
  13. package/dist/extractors/eslint/index.d.ts +18 -0
  14. package/dist/extractors/eslint/index.d.ts.map +1 -0
  15. package/dist/extractors/eslint/index.js +206 -0
  16. package/dist/extractors/eslint/index.js.map +1 -0
  17. package/dist/extractors/eslint/index.test.d.ts +9 -0
  18. package/dist/extractors/eslint/index.test.d.ts.map +1 -0
  19. package/dist/extractors/eslint/index.test.js +191 -0
  20. package/dist/extractors/eslint/index.test.js.map +1 -0
  21. package/dist/extractors/generic/index.d.ts +30 -0
  22. package/dist/extractors/generic/index.d.ts.map +1 -0
  23. package/dist/extractors/generic/index.js +140 -0
  24. package/dist/extractors/generic/index.js.map +1 -0
  25. package/dist/extractors/generic/index.test.d.ts +7 -0
  26. package/dist/extractors/generic/index.test.d.ts.map +1 -0
  27. package/dist/extractors/generic/index.test.js +61 -0
  28. package/dist/extractors/generic/index.test.js.map +1 -0
  29. package/dist/extractors/jasmine/index.d.ts +17 -0
  30. package/dist/extractors/jasmine/index.d.ts.map +1 -0
  31. package/dist/extractors/jasmine/index.js +242 -0
  32. package/dist/extractors/jasmine/index.js.map +1 -0
  33. package/dist/extractors/jasmine/index.test.d.ts +7 -0
  34. package/dist/extractors/jasmine/index.test.d.ts.map +1 -0
  35. package/dist/extractors/jasmine/index.test.js +318 -0
  36. package/dist/extractors/jasmine/index.test.js.map +1 -0
  37. package/dist/extractors/jest/index.d.ts +17 -0
  38. package/dist/extractors/jest/index.d.ts.map +1 -0
  39. package/dist/extractors/jest/index.js +273 -0
  40. package/dist/extractors/jest/index.js.map +1 -0
  41. package/dist/extractors/jest/index.test.d.ts +9 -0
  42. package/dist/extractors/jest/index.test.d.ts.map +1 -0
  43. package/dist/extractors/jest/index.test.js +338 -0
  44. package/dist/extractors/jest/index.test.js.map +1 -0
  45. package/dist/extractors/junit/index.d.ts +18 -0
  46. package/dist/extractors/junit/index.d.ts.map +1 -0
  47. package/dist/extractors/junit/index.js +259 -0
  48. package/dist/extractors/junit/index.js.map +1 -0
  49. package/dist/extractors/junit/index.test.d.ts +7 -0
  50. package/dist/extractors/junit/index.test.d.ts.map +1 -0
  51. package/dist/extractors/junit/index.test.js +341 -0
  52. package/dist/extractors/junit/index.test.js.map +1 -0
  53. package/dist/extractors/maven-checkstyle/index.d.ts +23 -0
  54. package/dist/extractors/maven-checkstyle/index.d.ts.map +1 -0
  55. package/dist/extractors/maven-checkstyle/index.js +263 -0
  56. package/dist/extractors/maven-checkstyle/index.js.map +1 -0
  57. package/dist/extractors/maven-checkstyle/index.test.d.ts +2 -0
  58. package/dist/extractors/maven-checkstyle/index.test.d.ts.map +1 -0
  59. package/dist/extractors/maven-checkstyle/index.test.js +197 -0
  60. package/dist/extractors/maven-checkstyle/index.test.js.map +1 -0
  61. package/dist/extractors/maven-compiler/index.d.ts +23 -0
  62. package/dist/extractors/maven-compiler/index.d.ts.map +1 -0
  63. package/dist/extractors/maven-compiler/index.js +271 -0
  64. package/dist/extractors/maven-compiler/index.js.map +1 -0
  65. package/dist/extractors/maven-compiler/index.test.d.ts +2 -0
  66. package/dist/extractors/maven-compiler/index.test.d.ts.map +1 -0
  67. package/dist/extractors/maven-compiler/index.test.js +189 -0
  68. package/dist/extractors/maven-compiler/index.test.js.map +1 -0
  69. package/dist/extractors/maven-surefire/index.d.ts +23 -0
  70. package/dist/extractors/maven-surefire/index.d.ts.map +1 -0
  71. package/dist/extractors/maven-surefire/index.js +292 -0
  72. package/dist/extractors/maven-surefire/index.js.map +1 -0
  73. package/dist/extractors/maven-surefire/index.test.d.ts +2 -0
  74. package/dist/extractors/maven-surefire/index.test.d.ts.map +1 -0
  75. package/dist/extractors/maven-surefire/index.test.js +163 -0
  76. package/dist/extractors/maven-surefire/index.test.js.map +1 -0
  77. package/dist/extractors/mocha/index.d.ts +17 -0
  78. package/dist/extractors/mocha/index.d.ts.map +1 -0
  79. package/dist/extractors/mocha/index.js +241 -0
  80. package/dist/extractors/mocha/index.js.map +1 -0
  81. package/dist/extractors/mocha/index.test.d.ts +7 -0
  82. package/dist/extractors/mocha/index.test.d.ts.map +1 -0
  83. package/dist/extractors/mocha/index.test.js +300 -0
  84. package/dist/extractors/mocha/index.test.js.map +1 -0
  85. package/dist/extractors/playwright/index.d.ts +17 -0
  86. package/dist/extractors/playwright/index.d.ts.map +1 -0
  87. package/dist/extractors/playwright/index.js +320 -0
  88. package/dist/extractors/playwright/index.js.map +1 -0
  89. package/dist/extractors/playwright/index.test.d.ts +7 -0
  90. package/dist/extractors/playwright/index.test.d.ts.map +1 -0
  91. package/dist/extractors/playwright/index.test.js +274 -0
  92. package/dist/extractors/playwright/index.test.js.map +1 -0
  93. package/dist/extractors/tap/index.d.ts +23 -0
  94. package/dist/extractors/tap/index.d.ts.map +1 -0
  95. package/dist/extractors/tap/index.js +352 -0
  96. package/dist/extractors/tap/index.js.map +1 -0
  97. package/dist/extractors/tap/index.test.d.ts +7 -0
  98. package/dist/extractors/tap/index.test.d.ts.map +1 -0
  99. package/dist/extractors/tap/index.test.js +100 -0
  100. package/dist/extractors/tap/index.test.js.map +1 -0
  101. package/dist/extractors/typescript/index.d.ts +17 -0
  102. package/dist/extractors/typescript/index.d.ts.map +1 -0
  103. package/dist/extractors/typescript/index.js +150 -0
  104. package/dist/extractors/typescript/index.js.map +1 -0
  105. package/dist/extractors/typescript/index.test.d.ts +9 -0
  106. package/dist/extractors/typescript/index.test.d.ts.map +1 -0
  107. package/dist/extractors/typescript/index.test.js +177 -0
  108. package/dist/extractors/typescript/index.test.js.map +1 -0
  109. package/dist/extractors/vitest/index.d.ts +17 -0
  110. package/dist/extractors/vitest/index.d.ts.map +1 -0
  111. package/dist/extractors/vitest/index.js +564 -0
  112. package/dist/extractors/vitest/index.js.map +1 -0
  113. package/dist/extractors/vitest/index.test.d.ts +9 -0
  114. package/dist/extractors/vitest/index.test.d.ts.map +1 -0
  115. package/dist/extractors/vitest/index.test.js +373 -0
  116. package/dist/extractors/vitest/index.test.js.map +1 -0
  117. package/dist/index.d.ts +27 -13
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +27 -13
  120. package/dist/index.js.map +1 -1
  121. package/dist/maven-checkstyle-extractor.d.ts.map +1 -1
  122. package/dist/maven-checkstyle-extractor.js +2 -17
  123. package/dist/maven-checkstyle-extractor.js.map +1 -1
  124. package/dist/maven-compiler-extractor.d.ts +20 -0
  125. package/dist/maven-compiler-extractor.d.ts.map +1 -0
  126. package/dist/maven-compiler-extractor.js +218 -0
  127. package/dist/maven-compiler-extractor.js.map +1 -0
  128. package/dist/maven-utils.d.ts +24 -0
  129. package/dist/maven-utils.d.ts.map +1 -0
  130. package/dist/maven-utils.js +36 -0
  131. package/dist/maven-utils.js.map +1 -0
  132. package/dist/plugin-loader.d.ts +82 -0
  133. package/dist/plugin-loader.d.ts.map +1 -0
  134. package/dist/plugin-loader.js +200 -0
  135. package/dist/plugin-loader.js.map +1 -0
  136. package/dist/sandbox.d.ts +161 -0
  137. package/dist/sandbox.d.ts.map +1 -0
  138. package/dist/sandbox.js +254 -0
  139. package/dist/sandbox.js.map +1 -0
  140. package/dist/sandbox.test.d.ts +8 -0
  141. package/dist/sandbox.test.d.ts.map +1 -0
  142. package/dist/sandbox.test.js +395 -0
  143. package/dist/sandbox.test.js.map +1 -0
  144. package/dist/sandboxed-extractor.d.ts +51 -0
  145. package/dist/sandboxed-extractor.d.ts.map +1 -0
  146. package/dist/sandboxed-extractor.js +172 -0
  147. package/dist/sandboxed-extractor.js.map +1 -0
  148. package/dist/sandboxed-extractor.test.d.ts +5 -0
  149. package/dist/sandboxed-extractor.test.d.ts.map +1 -0
  150. package/dist/sandboxed-extractor.test.js +346 -0
  151. package/dist/sandboxed-extractor.test.js.map +1 -0
  152. package/dist/smart-extractor.d.ts +22 -10
  153. package/dist/smart-extractor.d.ts.map +1 -1
  154. package/dist/smart-extractor.js +116 -186
  155. package/dist/smart-extractor.js.map +1 -1
  156. package/dist/types.d.ts +94 -0
  157. package/dist/types.d.ts.map +1 -1
  158. package/package.json +2 -1
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Jasmine Error Extractor Plugin
3
+ *
4
+ * Parses and formats Jasmine test output for LLM consumption.
5
+ *
6
+ * @package @vibe-validate/extractors
7
+ */
8
+ import { processTestFailures } from '../../utils/test-framework-utils.js';
9
+ /**
10
+ * Extract failure information from Jasmine output
11
+ */
12
+ // eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 28 acceptable for Jasmine output parsing (handles numbered failures, message extraction, and stack trace parsing)
13
+ function extractFailures(output) {
14
+ const failures = [];
15
+ const lines = output.split('\n');
16
+ let i = 0;
17
+ while (i < lines.length) {
18
+ const line = lines[i];
19
+ // Look for numbered failure markers (e.g., "1) Test name")
20
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Jasmine test framework output (controlled output), not user input
21
+ const failureMatch = /^(\d+)\)\s+(.+)$/.exec(line);
22
+ if (failureMatch) {
23
+ // failureMatch[1] contains the failure number (not used - line number extracted from stack trace instead)
24
+ const testName = failureMatch[2].trim();
25
+ let j = i + 1;
26
+ let message;
27
+ let errorType;
28
+ let file;
29
+ let lineNumber;
30
+ // Scan for Message: and Stack: sections
31
+ while (j < lines.length && j < i + 30) {
32
+ const nextLine = lines[j];
33
+ // Stop if we hit the next failure
34
+ if (/^\d+\)\s+/.exec(nextLine)) {
35
+ break;
36
+ }
37
+ // Extract message (comes after " Message:" line)
38
+ if (nextLine.trim() === 'Message:') {
39
+ j++;
40
+ // Collect message lines until we hit "Stack:" or empty line
41
+ const messageLines = [];
42
+ while (j < lines.length) {
43
+ const msgLine = lines[j];
44
+ if (msgLine.trim() === 'Stack:' || msgLine.trim() === '') {
45
+ break;
46
+ }
47
+ messageLines.push(msgLine.trim());
48
+ j++;
49
+ }
50
+ message = messageLines.join(' ').trim();
51
+ // Extract error type if present (e.g., "TypeError:", "Error:")
52
+ const errorMatch = /^([A-Za-z]*Error):\s*/.exec(message);
53
+ if (errorMatch) {
54
+ errorType = errorMatch[1];
55
+ }
56
+ continue;
57
+ }
58
+ // Extract file location from stack trace
59
+ if (nextLine.trim() === 'Stack:') {
60
+ j++;
61
+ // Scan stack trace for file location
62
+ while (j < lines.length && j < i + 40) {
63
+ const stackLine = lines[j];
64
+ // Stop if we hit the next failure or empty section
65
+ if (/^\d+\)\s+/.exec(stackLine) || (stackLine.trim() === '' && /^\d+\)\s+/.exec(lines[j + 1] ?? ''))) {
66
+ break;
67
+ }
68
+ // Extract file from UserContext.<anonymous> stack lines
69
+ if (stackLine.includes('UserContext.<anonymous>')) {
70
+ const locationMatch = /UserContext\.<anonymous> \(([^:)]+):(\d+)(?::(\d+))?\)/.exec(stackLine);
71
+ if (locationMatch) {
72
+ file = locationMatch[1];
73
+ lineNumber = Number.parseInt(locationMatch[2], 10);
74
+ break;
75
+ }
76
+ }
77
+ // Also try Object.* patterns
78
+ if (!file && stackLine.includes(' (') && stackLine.includes('.js:')) {
79
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Jasmine test framework stack traces (controlled output), not user input
80
+ const altMatch = /\(([^:)]+):(\d+)(?::(\d+))?\)/.exec(stackLine);
81
+ if (altMatch) {
82
+ file = altMatch[1];
83
+ lineNumber = Number.parseInt(altMatch[2], 10);
84
+ break;
85
+ }
86
+ }
87
+ j++;
88
+ }
89
+ continue;
90
+ }
91
+ j++;
92
+ }
93
+ failures.push({
94
+ testName,
95
+ message,
96
+ errorType,
97
+ file,
98
+ line: lineNumber
99
+ });
100
+ i = j; // Skip to after this failure
101
+ }
102
+ else {
103
+ i++;
104
+ }
105
+ }
106
+ return failures;
107
+ }
108
+ /**
109
+ * Extract errors from Jasmine test output
110
+ *
111
+ * @param output - Jasmine text output
112
+ * @returns Structured error information
113
+ */
114
+ function extract(output) {
115
+ // Check if this looks like Jasmine output
116
+ if (!output.includes('spec') && !output.includes('Failures:')) {
117
+ return {
118
+ summary: 'Unable to parse Jasmine output - invalid format',
119
+ errors: [],
120
+ totalErrors: 0,
121
+ errorSummary: output.trim(),
122
+ guidance: 'Ensure the input is valid Jasmine test output',
123
+ metadata: {
124
+ confidence: 0,
125
+ completeness: 0,
126
+ issues: ['Not Jasmine output format']
127
+ }
128
+ };
129
+ }
130
+ // Extract failure count
131
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Jasmine test framework summary (controlled output), not user input
132
+ const failureMatch = /(\d+) spec(?:s)?, (\d+) failure(?:s)?/.exec(output);
133
+ const failureCount = failureMatch ? Number.parseInt(failureMatch[2], 10) : 0;
134
+ // Extract all failures
135
+ const failures = extractFailures(output);
136
+ // Early return if no failures detected (but failure count suggested there should be)
137
+ if (failureCount === 0 && failures.length === 0) {
138
+ return processTestFailures([], 95);
139
+ }
140
+ // Process failures using shared utility
141
+ return processTestFailures(failures, 95);
142
+ }
143
+ /**
144
+ * Detect if output is from Jasmine test framework
145
+ *
146
+ * @param output - Command output to analyze
147
+ * @returns Detection result with confidence and patterns
148
+ */
149
+ function detect(output) {
150
+ if (output.includes('spec') || output.includes('Failures:')) {
151
+ return {
152
+ confidence: 85,
153
+ patterns: ['spec/Failures pattern'],
154
+ reason: 'Jasmine test framework output detected',
155
+ };
156
+ }
157
+ return { confidence: 0, patterns: [], reason: '' };
158
+ }
159
+ /**
160
+ * Sample test cases for Jasmine extractor
161
+ */
162
+ const samples = [
163
+ {
164
+ name: 'single-assertion-error',
165
+ description: 'Single Jasmine test failure with assertion error',
166
+ input: `
167
+ Started
168
+ F
169
+
170
+ Failures:
171
+ 1) Vibe-Validate Jasmine Test Matrix Failure Type 1: Assertion Errors should match expected value
172
+ Message:
173
+ Expected 4 to equal 5.
174
+ Stack:
175
+ at <Jasmine>
176
+ at UserContext.<anonymous> (/private/tmp/jasmine-comprehensive.test.js:9:17)
177
+ at <Jasmine>
178
+
179
+ 1 spec, 1 failure
180
+ Finished in 0.037 seconds
181
+ `,
182
+ expectedErrors: 1,
183
+ expectedPatterns: ['Expected 4 to equal 5'],
184
+ },
185
+ {
186
+ name: 'multiple-test-failures',
187
+ description: 'Multiple Jasmine test failures with different error types',
188
+ input: `
189
+ Started
190
+ FFF
191
+
192
+ Failures:
193
+ 1) Suite > Test 1
194
+ Message:
195
+ Expected 1 to equal 2.
196
+ Stack:
197
+ at UserContext.<anonymous> (test.js:10:15)
198
+
199
+ 2) Suite > Test 2
200
+ Message:
201
+ TypeError: Cannot read properties of null
202
+ Stack:
203
+ at UserContext.<anonymous> (test.js:20:15)
204
+
205
+ 3) Suite > Test 3
206
+ Message:
207
+ Error: ENOENT: no such file or directory
208
+ Stack:
209
+ at UserContext.<anonymous> (test.js:30:15)
210
+
211
+ 3 specs, 3 failures
212
+ `,
213
+ expectedErrors: 3,
214
+ expectedPatterns: ['Expected 1 to equal 2', 'TypeError', 'ENOENT'],
215
+ },
216
+ ];
217
+ /**
218
+ * Jasmine Error Extractor Plugin
219
+ *
220
+ * Extracts Jasmine test framework errors with 85% confidence.
221
+ * Parses Message: and Stack: sections with structured format.
222
+ */
223
+ const jasminePlugin = {
224
+ metadata: {
225
+ name: 'jasmine',
226
+ version: '1.0.0',
227
+ author: 'vibe-validate',
228
+ description: 'Extracts Jasmine test framework errors',
229
+ repository: 'https://github.com/jdutton/vibe-validate',
230
+ tags: ['jasmine', 'testing', 'javascript'],
231
+ },
232
+ hints: {
233
+ required: ['spec'],
234
+ anyOf: ['Failures:'],
235
+ },
236
+ priority: 85,
237
+ detect,
238
+ extract,
239
+ samples,
240
+ };
241
+ export default jasminePlugin;
242
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/jasmine/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,mBAAmB,EAAwB,MAAM,qCAAqC,CAAC;AAEhG;;GAEG;AACH,wLAAwL;AACxL,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,2DAA2D;QAC3D,qIAAqI;QACrI,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,YAAY,EAAE,CAAC;YACjB,0GAA0G;YAC1G,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAExC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,OAA2B,CAAC;YAChC,IAAI,SAA6B,CAAC;YAClC,IAAI,IAAwB,CAAC;YAC7B,IAAI,UAA8B,CAAC;YAEnC,wCAAwC;YACxC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAE1B,kCAAkC;gBAClC,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,MAAM;gBACR,CAAC;gBAED,kDAAkD;gBAClD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;oBACnC,CAAC,EAAE,CAAC;oBACJ,4DAA4D;oBAC5D,MAAM,YAAY,GAAa,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;wBACxB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACzB,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;4BACzD,MAAM;wBACR,CAAC;wBACD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;wBAClC,CAAC,EAAE,CAAC;oBACN,CAAC;oBACD,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;oBAExC,+DAA+D;oBAC/D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzD,IAAI,UAAU,EAAE,CAAC;wBACf,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;oBAED,SAAS;gBACX,CAAC;gBAED,yCAAyC;gBACzC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACjC,CAAC,EAAE,CAAC;oBACJ,qCAAqC;oBACrC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;wBACtC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAE3B,mDAAmD;wBACnD,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;4BACrG,MAAM;wBACR,CAAC;wBAED,wDAAwD;wBACxD,IAAI,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;4BAClD,MAAM,aAAa,GAAG,wDAAwD,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAC/F,IAAI,aAAa,EAAE,CAAC;gCAClB,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gCACxB,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCACnD,MAAM;4BACR,CAAC;wBACH,CAAC;wBAED,6BAA6B;wBAC7B,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BACpE,2IAA2I;4BAC3I,MAAM,QAAQ,GAAG,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACjE,IAAI,QAAQ,EAAE,CAAC;gCACb,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gCACnB,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC9C,MAAM;4BACR,CAAC;wBACH,CAAC;wBAED,CAAC,EAAE,CAAC;oBACN,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,CAAC,EAAE,CAAC;YACN,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ;gBACR,OAAO;gBACP,SAAS;gBACT,IAAI;gBACJ,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YAEH,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B;QACtC,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,MAAc;IAC7B,0CAA0C;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,iDAAiD;YAC1D,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE;YAC3B,QAAQ,EAAE,+CAA+C;YACzD,QAAQ,EAAE;gBACR,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;gBACf,MAAM,EAAE,CAAC,2BAA2B,CAAC;aACtC;SACF,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,sIAAsI;IACtI,MAAM,YAAY,GAAG,uCAAuC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,uBAAuB;IACvB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEzC,qFAAqF;IACrF,IAAI,YAAY,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,wCAAwC;IACxC,OAAO,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,MAAc;IAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,CAAC,uBAAuB,CAAC;YACnC,MAAM,EAAE,wCAAwC;SACjD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,GAAsB;IACjC;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,kDAAkD;QAC/D,KAAK,EAAE;;;;;;;;;;;;;;;CAeV;QACG,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC,uBAAuB,CAAC;KAC5C;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,2DAA2D;QACxE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBV;QACG,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,QAAQ,CAAC;KACnE;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,aAAa,GAAoB;IACrC,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,eAAe;QACvB,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE,0CAA0C;QACtD,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KAC3C;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,WAAW,CAAC;KACrB;IACD,QAAQ,EAAE,EAAE;IACZ,MAAM;IACN,OAAO;IACP,OAAO;CACR,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Jasmine Error Extractor Plugin Tests
3
+ *
4
+ * @package @vibe-validate/extractors
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/extractors/jasmine/index.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Jasmine Error Extractor Plugin Tests
3
+ *
4
+ * @package @vibe-validate/extractors
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import jasminePlugin from './index.js';
8
+ describe('jasmine extractor plugin', () => {
9
+ describe('detect', () => {
10
+ it('should detect Jasmine output with failures', () => {
11
+ const output = `
12
+ Failures:
13
+ 1) Test
14
+ Message:
15
+ Expected true to be false
16
+ `;
17
+ const result = jasminePlugin.detect(output);
18
+ expect(result.confidence).toBe(85);
19
+ expect(result.reason).toContain('Jasmine');
20
+ });
21
+ it('should detect Jasmine output with spec count', () => {
22
+ const output = `3 specs, 0 failures`;
23
+ const result = jasminePlugin.detect(output);
24
+ expect(result.confidence).toBe(85);
25
+ });
26
+ it('should not detect non-Jasmine output', () => {
27
+ const output = 'Some random text without Jasmine patterns';
28
+ const result = jasminePlugin.detect(output);
29
+ expect(result.confidence).toBe(0);
30
+ });
31
+ });
32
+ describe('extract', () => {
33
+ describe('Basic Extraction', () => {
34
+ it('should extract single test failure from Jasmine output', () => {
35
+ const input = `
36
+ Started
37
+ F
38
+
39
+ Failures:
40
+ 1) Vibe-Validate Jasmine Test Matrix Failure Type 1: Assertion Errors should match expected value
41
+ Message:
42
+ Expected 4 to equal 5.
43
+ Stack:
44
+ at <Jasmine>
45
+ at UserContext.<anonymous> (/private/tmp/jasmine-comprehensive.test.js:9:17)
46
+ at <Jasmine>
47
+
48
+ 1 spec, 1 failure
49
+ Finished in 0.037 seconds
50
+ `;
51
+ const result = jasminePlugin.extract(input);
52
+ expect(result.summary).toBe('1 test(s) failed');
53
+ expect(result.errors).toHaveLength(1);
54
+ expect(result.errors[0]).toMatchObject({
55
+ // eslint-disable-next-line sonarjs/publicly-writable-directories -- Test fixture path, not actual file operation
56
+ file: '/private/tmp/jasmine-comprehensive.test.js',
57
+ line: 9,
58
+ message: 'Expected 4 to equal 5.'
59
+ });
60
+ expect(result.errors[0].context).toContain('should match expected value');
61
+ });
62
+ it('should extract multiple test failures', () => {
63
+ const input = `
64
+ Started
65
+ FFF
66
+
67
+ Failures:
68
+ 1) Suite > Test 1
69
+ Message:
70
+ Expected 1 to equal 2.
71
+ Stack:
72
+ at UserContext.<anonymous> (test.js:10:15)
73
+
74
+ 2) Suite > Test 2
75
+ Message:
76
+ Expected 3 to equal 4.
77
+ Stack:
78
+ at UserContext.<anonymous> (test.js:20:15)
79
+
80
+ 3) Suite > Test 3
81
+ Message:
82
+ Expected 5 to equal 6.
83
+ Stack:
84
+ at UserContext.<anonymous> (test.js:30:15)
85
+
86
+ 3 specs, 3 failures
87
+ `;
88
+ const result = jasminePlugin.extract(input);
89
+ expect(result.summary).toBe('3 test(s) failed');
90
+ expect(result.errors).toHaveLength(3);
91
+ expect(result.errors[0].line).toBe(10);
92
+ expect(result.errors[1].line).toBe(20);
93
+ expect(result.errors[2].line).toBe(30);
94
+ });
95
+ });
96
+ describe('Error Type Detection', () => {
97
+ it('should detect assertion errors', () => {
98
+ const input = `
99
+ Failures:
100
+ 1) Test
101
+ Message:
102
+ Expected 'number' to equal 'string'.
103
+ Stack:
104
+ at UserContext.<anonymous> (test.js:10:14)
105
+
106
+ 1 spec, 1 failure
107
+ `;
108
+ const result = jasminePlugin.extract(input);
109
+ expect(result.errors[0].message).toContain('Expected');
110
+ });
111
+ it('should detect TypeError', () => {
112
+ const input = `
113
+ Failures:
114
+ 1) Test
115
+ Message:
116
+ TypeError: Cannot read properties of null (reading 'foo')
117
+ Stack:
118
+ at UserContext.<anonymous> (test.js:15:20)
119
+
120
+ 1 spec, 1 failure
121
+ `;
122
+ const result = jasminePlugin.extract(input);
123
+ expect(result.errors[0].message).toContain('Cannot read properties of null');
124
+ });
125
+ it('should detect ENOENT errors', () => {
126
+ const input = `
127
+ Failures:
128
+ 1) Test
129
+ Message:
130
+ Error: ENOENT: no such file or directory
131
+ Stack:
132
+ at Object.readFileSync (node:fs:435:20)
133
+ at UserContext.<anonymous> (test.js:20:10)
134
+
135
+ 1 spec, 1 failure
136
+ `;
137
+ const result = jasminePlugin.extract(input);
138
+ expect(result.errors[0].message).toContain('ENOENT');
139
+ });
140
+ it('should detect timeout errors', () => {
141
+ const input = `
142
+ Failures:
143
+ 1) Test
144
+ Message:
145
+ Error: Timeout - Async function did not complete within 100ms
146
+ Stack:
147
+ at <Jasmine>
148
+ at listOnTimeout (node:internal/timers:608:17)
149
+
150
+ 1 spec, 1 failure
151
+ `;
152
+ const result = jasminePlugin.extract(input);
153
+ expect(result.errors[0].message).toContain('Timeout');
154
+ });
155
+ });
156
+ describe('Location Extraction', () => {
157
+ it('should extract file:line:column format', () => {
158
+ const input = `
159
+ Failures:
160
+ 1) Test
161
+ Message:
162
+ Error: Test error
163
+ Stack:
164
+ at UserContext.<anonymous> (/path/to/test.js:42:15)
165
+
166
+ 1 spec, 1 failure
167
+ `;
168
+ const result = jasminePlugin.extract(input);
169
+ expect(result.errors[0].file).toBe('/path/to/test.js');
170
+ expect(result.errors[0].line).toBe(42);
171
+ });
172
+ it('should handle relative paths', () => {
173
+ const input = `
174
+ Failures:
175
+ 1) Test
176
+ Message:
177
+ Error: Test error
178
+ Stack:
179
+ at UserContext.<anonymous> (tests/unit/helpers.test.js:128:30)
180
+
181
+ 1 spec, 1 failure
182
+ `;
183
+ const result = jasminePlugin.extract(input);
184
+ expect(result.errors[0].file).toBe('tests/unit/helpers.test.js');
185
+ expect(result.errors[0].line).toBe(128);
186
+ });
187
+ });
188
+ describe('Test Hierarchy', () => {
189
+ it('should preserve nested describe blocks', () => {
190
+ const input = `
191
+ Failures:
192
+ 1) Vibe-Validate Jasmine Test Matrix Failure Type 10: Nested Describe Blocks Level 2 Level 3 should work at deep nesting
193
+ Message:
194
+ Expected true to be false.
195
+ Stack:
196
+ at UserContext.<anonymous> (/tmp/test.js:72:24)
197
+
198
+ 1 spec, 1 failure
199
+ `;
200
+ const result = jasminePlugin.extract(input);
201
+ expect(result.errors[0].context).toContain('Nested Describe Blocks');
202
+ expect(result.errors[0].context).toContain('Level 2');
203
+ expect(result.errors[0].context).toContain('Level 3');
204
+ });
205
+ });
206
+ describe('Edge Cases', () => {
207
+ it('should handle output with no failures', () => {
208
+ const input = `
209
+ Started
210
+ ...
211
+
212
+ 3 specs, 0 failures
213
+ Finished in 0.037 seconds
214
+ `;
215
+ const result = jasminePlugin.extract(input);
216
+ expect(result.summary).toBe('0 test(s) failed');
217
+ expect(result.errors).toHaveLength(0);
218
+ });
219
+ it('should handle missing stack trace', () => {
220
+ const input = `
221
+ Failures:
222
+ 1) Test
223
+ Message:
224
+ Something went wrong
225
+ Stack:
226
+
227
+ 1 spec, 1 failure
228
+ `;
229
+ const result = jasminePlugin.extract(input);
230
+ expect(result.errors[0].message).toContain('Something went wrong');
231
+ expect(result.errors[0].file).toBe('unknown');
232
+ });
233
+ it('should handle malformed output gracefully', () => {
234
+ const input = 'Some random text that is not Jasmine output';
235
+ const result = jasminePlugin.extract(input);
236
+ expect(result.summary).toContain('Unable to parse');
237
+ });
238
+ });
239
+ describe('Guidance Generation', () => {
240
+ it('should provide assertion error guidance', () => {
241
+ const input = `
242
+ Failures:
243
+ 1) Test
244
+ Message:
245
+ Expected 4 to equal 5.
246
+ Stack:
247
+ at UserContext.<anonymous> (test.js:10:14)
248
+
249
+ 1 spec, 1 failure
250
+ `;
251
+ const result = jasminePlugin.extract(input);
252
+ expect(result.guidance).toContain('assertion');
253
+ });
254
+ it('should provide timeout guidance', () => {
255
+ const input = `
256
+ Failures:
257
+ 1) Test
258
+ Message:
259
+ Error: Timeout - Async function did not complete within 100ms
260
+ Stack:
261
+ at listOnTimeout (node:internal/timers:608:17)
262
+
263
+ 1 spec, 1 failure
264
+ `;
265
+ const result = jasminePlugin.extract(input);
266
+ expect(result.guidance).toContain('timeout');
267
+ });
268
+ });
269
+ describe('Quality Metadata', () => {
270
+ it('should include extraction metadata', () => {
271
+ const input = `
272
+ Failures:
273
+ 1) Test
274
+ Message:
275
+ Expected 4 to equal 5.
276
+ Stack:
277
+ at UserContext.<anonymous> (test.js:10:14)
278
+
279
+ 1 spec, 1 failure
280
+ `;
281
+ const result = jasminePlugin.extract(input);
282
+ expect(result.metadata).toBeDefined();
283
+ expect(result.metadata.confidence).toBeGreaterThan(90);
284
+ expect(result.metadata.completeness).toBe(100);
285
+ expect(result.metadata.issues).toEqual([]);
286
+ });
287
+ });
288
+ });
289
+ describe('samples', () => {
290
+ it('should have at least 2 sample test cases', () => {
291
+ expect(jasminePlugin.samples).toBeDefined();
292
+ expect(jasminePlugin.samples.length).toBeGreaterThanOrEqual(2);
293
+ });
294
+ it('should successfully parse all sample inputs', () => {
295
+ for (const sample of jasminePlugin.samples) {
296
+ const result = jasminePlugin.extract(sample.input);
297
+ expect(result.errors.length).toBeGreaterThan(0);
298
+ expect(result.errors.length).toBe(sample.expectedErrors);
299
+ }
300
+ });
301
+ });
302
+ describe('metadata', () => {
303
+ it('should have complete plugin metadata', () => {
304
+ expect(jasminePlugin.metadata.name).toBe('jasmine');
305
+ expect(jasminePlugin.metadata.version).toBe('1.0.0');
306
+ expect(jasminePlugin.metadata.description).toBeTruthy();
307
+ expect(jasminePlugin.metadata.tags).toContain('jasmine');
308
+ });
309
+ it('should have appropriate priority', () => {
310
+ expect(jasminePlugin.priority).toBe(85);
311
+ });
312
+ it('should have detection hints', () => {
313
+ expect(jasminePlugin.hints.required).toContain('spec');
314
+ expect(jasminePlugin.hints.anyOf).toContain('Failures:');
315
+ });
316
+ });
317
+ });
318
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/extractors/jasmine/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Jest Error Extractor Plugin
3
+ *
4
+ * Parses and formats Jest test failure output for LLM consumption.
5
+ *
6
+ * @package @vibe-validate/extractors
7
+ */
8
+ import type { ExtractorPlugin } from '../../types.js';
9
+ /**
10
+ * Jest Error Extractor Plugin
11
+ *
12
+ * Extracts Jest test failures with high confidence (90%).
13
+ * Supports inline (✕) and detailed (●) failure formats.
14
+ */
15
+ declare const jestPlugin: ExtractorPlugin;
16
+ export default jestPlugin;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/jest/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AAoSxB;;;;;GAKG;AACH,QAAA,MAAM,UAAU,EAAE,eAiBjB,CAAC;AAEF,eAAe,UAAU,CAAC"}