@paretools/lint 0.8.5 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/formatters.d.ts +3 -0
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +54 -9
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/lint-runner.js +7 -7
- package/dist/lib/parsers.d.ts +57 -10
- package/dist/lib/parsers.d.ts.map +1 -1
- package/dist/lib/parsers.js +373 -44
- package/dist/lib/parsers.js.map +1 -1
- package/dist/schemas/index.d.ts +16 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +14 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/biome-check.d.ts.map +1 -1
- package/dist/tools/biome-check.js +80 -11
- package/dist/tools/biome-check.js.map +1 -1
- package/dist/tools/biome-format.d.ts.map +1 -1
- package/dist/tools/biome-format.js +55 -11
- package/dist/tools/biome-format.js.map +1 -1
- package/dist/tools/format-check.d.ts.map +1 -1
- package/dist/tools/format-check.js +90 -13
- package/dist/tools/format-check.js.map +1 -1
- package/dist/tools/hadolint.d.ts.map +1 -1
- package/dist/tools/hadolint.js +85 -10
- package/dist/tools/hadolint.js.map +1 -1
- package/dist/tools/lint.d.ts.map +1 -1
- package/dist/tools/lint.js +62 -10
- package/dist/tools/lint.js.map +1 -1
- package/dist/tools/oxlint.d.ts.map +1 -1
- package/dist/tools/oxlint.js +94 -10
- package/dist/tools/oxlint.js.map +1 -1
- package/dist/tools/prettier-format.d.ts.map +1 -1
- package/dist/tools/prettier-format.js +99 -15
- package/dist/tools/prettier-format.js.map +1 -1
- package/dist/tools/shellcheck.d.ts.map +1 -1
- package/dist/tools/shellcheck.js +100 -15
- package/dist/tools/shellcheck.js.map +1 -1
- package/dist/tools/stylelint.d.ts.map +1 -1
- package/dist/tools/stylelint.js +58 -10
- package/dist/tools/stylelint.js.map +1 -1
- package/package.json +2 -2
package/dist/lib/parsers.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Parses ESLint JSON output (from `eslint --format json`).
|
|
3
3
|
*
|
|
4
4
|
* ESLint JSON format is an array of objects:
|
|
5
|
-
* [{ filePath, messages: [{ ruleId, severity, message, line, column, endLine, endColumn, fix }], errorCount, warningCount }]
|
|
5
|
+
* [{ filePath, messages: [{ ruleId, severity, message, line, column, endLine, endColumn, fix }], errorCount, warningCount, fixableErrorCount, fixableWarningCount }]
|
|
6
6
|
*/
|
|
7
7
|
export function parseEslintJson(stdout) {
|
|
8
8
|
let files;
|
|
@@ -13,15 +13,23 @@ export function parseEslintJson(stdout) {
|
|
|
13
13
|
return { diagnostics: [], total: 0, errors: 0, warnings: 0, filesChecked: 0 };
|
|
14
14
|
}
|
|
15
15
|
const diagnostics = [];
|
|
16
|
+
let fixableErrorCount = 0;
|
|
17
|
+
let fixableWarningCount = 0;
|
|
16
18
|
for (const file of files) {
|
|
19
|
+
fixableErrorCount += file.fixableErrorCount ?? 0;
|
|
20
|
+
fixableWarningCount += file.fixableWarningCount ?? 0;
|
|
17
21
|
for (const msg of file.messages) {
|
|
18
|
-
|
|
22
|
+
const diag = {
|
|
19
23
|
file: file.filePath,
|
|
20
24
|
line: msg.line ?? 0,
|
|
21
25
|
severity: msg.severity === 2 ? "error" : msg.severity === 1 ? "warning" : "info",
|
|
22
26
|
rule: msg.ruleId ?? "unknown",
|
|
23
27
|
message: msg.message,
|
|
24
|
-
}
|
|
28
|
+
};
|
|
29
|
+
if (msg.column !== undefined && msg.column !== null) {
|
|
30
|
+
diag.column = msg.column;
|
|
31
|
+
}
|
|
32
|
+
diagnostics.push(diag);
|
|
25
33
|
}
|
|
26
34
|
}
|
|
27
35
|
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
@@ -31,6 +39,8 @@ export function parseEslintJson(stdout) {
|
|
|
31
39
|
total: diagnostics.length,
|
|
32
40
|
errors,
|
|
33
41
|
warnings,
|
|
42
|
+
fixableErrorCount,
|
|
43
|
+
fixableWarningCount,
|
|
34
44
|
filesChecked: files.length,
|
|
35
45
|
};
|
|
36
46
|
}
|
|
@@ -59,9 +69,9 @@ export function parsePrettierCheck(stdout, stderr, exitCode) {
|
|
|
59
69
|
/**
|
|
60
70
|
* Parses Prettier `--write` output.
|
|
61
71
|
*
|
|
62
|
-
* Prettier --write outputs one file path per line for each file it
|
|
63
|
-
*
|
|
64
|
-
*
|
|
72
|
+
* Prettier --write outputs one file path per line for each file it processes.
|
|
73
|
+
* It lists ALL files it touched, not just changed ones. To get accurate change
|
|
74
|
+
* counts, use parsePrettierListDifferent() with `--list-different` before writing.
|
|
65
75
|
*/
|
|
66
76
|
export function parsePrettierWrite(stdout, stderr, exitCode) {
|
|
67
77
|
const output = stdout + "\n" + stderr;
|
|
@@ -69,27 +79,77 @@ export function parsePrettierWrite(stdout, stderr, exitCode) {
|
|
|
69
79
|
const files = [];
|
|
70
80
|
for (const line of lines) {
|
|
71
81
|
const trimmed = line.trim();
|
|
72
|
-
// Prettier --write outputs file paths for files it processes
|
|
82
|
+
// Prettier --write outputs file paths for files it processes, sometimes
|
|
83
|
+
// with trailing timing info like " 24ms". Strip timing before checking.
|
|
84
|
+
const cleaned = trimmed.replace(/\s+\d+m?s$/, "");
|
|
73
85
|
// Skip lines that don't look like file paths.
|
|
74
|
-
if (
|
|
75
|
-
!
|
|
76
|
-
!
|
|
77
|
-
!
|
|
78
|
-
/\.\w+$/.test(
|
|
79
|
-
files.push(
|
|
86
|
+
if (cleaned &&
|
|
87
|
+
!cleaned.startsWith("[") &&
|
|
88
|
+
!cleaned.startsWith("Checking") &&
|
|
89
|
+
!cleaned.startsWith("All ") &&
|
|
90
|
+
/\.\w+$/.test(cleaned)) {
|
|
91
|
+
files.push(cleaned);
|
|
80
92
|
}
|
|
81
93
|
}
|
|
82
|
-
|
|
94
|
+
const result = {
|
|
83
95
|
filesChanged: files.length,
|
|
84
96
|
files,
|
|
85
97
|
success: exitCode === 0,
|
|
86
98
|
};
|
|
99
|
+
if (exitCode !== 0) {
|
|
100
|
+
result.errorMessage = extractErrorMessage(stderr, stdout);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Parses Prettier `--list-different` output to identify files needing formatting.
|
|
106
|
+
*
|
|
107
|
+
* `prettier --list-different` outputs one file path per line for files that
|
|
108
|
+
* would be changed by formatting. Already-formatted files are not listed.
|
|
109
|
+
* Exit code 0 means all files are formatted; exit code 1 means some need formatting.
|
|
110
|
+
*/
|
|
111
|
+
export function parsePrettierListDifferent(stdout) {
|
|
112
|
+
return stdout
|
|
113
|
+
.split("\n")
|
|
114
|
+
.map((l) => l.trim())
|
|
115
|
+
.filter((l) => l.length > 0 && /\.\w+$/.test(l));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Builds a FormatWriteResult by combining --list-different results with --write results.
|
|
119
|
+
*
|
|
120
|
+
* @param listDiffFiles - Files that needed formatting (from --list-different)
|
|
121
|
+
* @param writeExitCode - Exit code from --write pass
|
|
122
|
+
* @param totalFilesProcessed - Total files processed by --write (optional, for filesUnchanged)
|
|
123
|
+
*/
|
|
124
|
+
export function buildPrettierWriteResult(listDiffFiles, writeExitCode, totalFilesProcessed, errorMessage) {
|
|
125
|
+
const result = {
|
|
126
|
+
filesChanged: listDiffFiles.length,
|
|
127
|
+
files: listDiffFiles,
|
|
128
|
+
success: writeExitCode === 0,
|
|
129
|
+
};
|
|
130
|
+
if (totalFilesProcessed !== undefined && totalFilesProcessed > 0) {
|
|
131
|
+
result.filesUnchanged = totalFilesProcessed - listDiffFiles.length;
|
|
132
|
+
}
|
|
133
|
+
if (writeExitCode !== 0 && errorMessage) {
|
|
134
|
+
result.errorMessage = errorMessage;
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
87
137
|
}
|
|
88
138
|
/**
|
|
89
139
|
* Parses Biome `check --reporter=json` output.
|
|
90
140
|
*
|
|
91
|
-
* Biome JSON reporter outputs an object with
|
|
92
|
-
* {
|
|
141
|
+
* Biome JSON reporter (v2+) outputs an object with diagnostics:
|
|
142
|
+
* {
|
|
143
|
+
* summary: { changed, unchanged, errors, warnings, ... },
|
|
144
|
+
* diagnostics: [{
|
|
145
|
+
* severity, message, category,
|
|
146
|
+
* location: { path: string, start: { line, column }, end: { line, column } },
|
|
147
|
+
* advices: [...]
|
|
148
|
+
* }]
|
|
149
|
+
* }
|
|
150
|
+
*
|
|
151
|
+
* Also supports the older format where location uses:
|
|
152
|
+
* { path: { file }, span: { start, end }, sourceCode: { lineNumber, columnNumber } }
|
|
93
153
|
*/
|
|
94
154
|
export function parseBiomeJson(stdout) {
|
|
95
155
|
let biomeOutput;
|
|
@@ -103,23 +163,35 @@ export function parseBiomeJson(stdout) {
|
|
|
103
163
|
const filesSet = new Set();
|
|
104
164
|
const rawDiags = biomeOutput.diagnostics ?? [];
|
|
105
165
|
for (const diag of rawDiags) {
|
|
106
|
-
|
|
166
|
+
// Extract file path: new format uses location.path as string,
|
|
167
|
+
// old format uses location.path.file
|
|
168
|
+
const file = extractBiomeFilePath(diag.location) ?? "unknown";
|
|
107
169
|
filesSet.add(file);
|
|
108
170
|
const severity = mapBiomeSeverity(diag.severity);
|
|
109
171
|
const rule = diag.category ?? "unknown";
|
|
110
172
|
const message = typeof diag.description === "string"
|
|
111
173
|
? diag.description
|
|
112
174
|
: (diag.message ?? "unknown diagnostic");
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
175
|
+
// Extract line number: try new format (location.start.line) first,
|
|
176
|
+
// then fall back to old format (location.sourceCode.lineNumber),
|
|
177
|
+
// then default to 0
|
|
178
|
+
const line = extractBiomeLineNumber(diag.location);
|
|
179
|
+
const diagnostic = {
|
|
117
180
|
file,
|
|
118
181
|
line,
|
|
119
182
|
severity,
|
|
120
183
|
rule,
|
|
121
184
|
message,
|
|
122
|
-
}
|
|
185
|
+
};
|
|
186
|
+
if (Array.isArray(diag.tags) && diag.tags.length > 0) {
|
|
187
|
+
diagnostic.tags = diag.tags.filter((tag) => typeof tag === "string");
|
|
188
|
+
}
|
|
189
|
+
// Extract column: try new format first, then old format
|
|
190
|
+
const col = extractBiomeColumnNumber(diag.location);
|
|
191
|
+
if (col !== undefined) {
|
|
192
|
+
diagnostic.column = col;
|
|
193
|
+
}
|
|
194
|
+
diagnostics.push(diagnostic);
|
|
123
195
|
}
|
|
124
196
|
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
125
197
|
const warnings = diagnostics.filter((d) => d.severity === "warning").length;
|
|
@@ -131,6 +203,58 @@ export function parseBiomeJson(stdout) {
|
|
|
131
203
|
filesChecked: filesSet.size,
|
|
132
204
|
};
|
|
133
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Extracts file path from Biome diagnostic location.
|
|
208
|
+
* Supports both new format (path is string) and old format (path.file is string).
|
|
209
|
+
*/
|
|
210
|
+
function extractBiomeFilePath(location) {
|
|
211
|
+
if (!location)
|
|
212
|
+
return undefined;
|
|
213
|
+
// New format (Biome v2+): location.path is a string
|
|
214
|
+
if (typeof location.path === "string") {
|
|
215
|
+
return location.path;
|
|
216
|
+
}
|
|
217
|
+
// Old format: location.path is { file: string }
|
|
218
|
+
if (location.path && typeof location.path === "object" && "file" in location.path) {
|
|
219
|
+
return location.path.file;
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Extracts line number from Biome diagnostic location.
|
|
225
|
+
* Tries new format (start.line) first, then old format (sourceCode.lineNumber).
|
|
226
|
+
*/
|
|
227
|
+
function extractBiomeLineNumber(location) {
|
|
228
|
+
if (!location)
|
|
229
|
+
return 0;
|
|
230
|
+
// New format (Biome v2+): location.start.line
|
|
231
|
+
if (location.start && typeof location.start.line === "number") {
|
|
232
|
+
return location.start.line;
|
|
233
|
+
}
|
|
234
|
+
// Old format: location.sourceCode.lineNumber
|
|
235
|
+
if (location.sourceCode && typeof location.sourceCode.lineNumber === "number") {
|
|
236
|
+
return location.sourceCode.lineNumber;
|
|
237
|
+
}
|
|
238
|
+
return 0;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Extracts column number from Biome diagnostic location.
|
|
242
|
+
* Tries new format (start.column) first, then old format (sourceCode.columnNumber).
|
|
243
|
+
*/
|
|
244
|
+
function extractBiomeColumnNumber(location) {
|
|
245
|
+
if (!location)
|
|
246
|
+
return undefined;
|
|
247
|
+
// New format (Biome v2+): location.start.column
|
|
248
|
+
if (location.start && typeof location.start.column === "number") {
|
|
249
|
+
return location.start.column;
|
|
250
|
+
}
|
|
251
|
+
// Old format: location.sourceCode.columnNumber
|
|
252
|
+
const col = location.sourceCode?.columnNumber;
|
|
253
|
+
if (col !== undefined && col !== null) {
|
|
254
|
+
return col;
|
|
255
|
+
}
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
134
258
|
function mapBiomeSeverity(severity) {
|
|
135
259
|
switch (severity) {
|
|
136
260
|
case "error":
|
|
@@ -160,26 +284,47 @@ export function parseStylelintJson(stdout) {
|
|
|
160
284
|
return { diagnostics: [], total: 0, errors: 0, warnings: 0, filesChecked: 0 };
|
|
161
285
|
}
|
|
162
286
|
const diagnostics = [];
|
|
287
|
+
const deprecations = [];
|
|
288
|
+
const seenDeprecations = new Set();
|
|
163
289
|
for (const file of files) {
|
|
164
290
|
for (const warn of file.warnings) {
|
|
165
|
-
|
|
291
|
+
const diag = {
|
|
166
292
|
file: file.source ?? "unknown",
|
|
167
293
|
line: warn.line ?? 0,
|
|
168
294
|
severity: warn.severity === "error" ? "error" : "warning",
|
|
169
295
|
rule: warn.rule ?? "unknown",
|
|
170
296
|
message: warn.text ?? "",
|
|
171
|
-
}
|
|
297
|
+
};
|
|
298
|
+
if (warn.column !== undefined && warn.column !== null) {
|
|
299
|
+
diag.column = warn.column;
|
|
300
|
+
}
|
|
301
|
+
diagnostics.push(diag);
|
|
302
|
+
}
|
|
303
|
+
for (const dep of file.deprecations ?? []) {
|
|
304
|
+
const text = typeof dep.text === "string" ? dep.text : "";
|
|
305
|
+
if (!text)
|
|
306
|
+
continue;
|
|
307
|
+
const reference = typeof dep.reference === "string" ? dep.reference : undefined;
|
|
308
|
+
const key = `${text}::${reference ?? ""}`;
|
|
309
|
+
if (seenDeprecations.has(key))
|
|
310
|
+
continue;
|
|
311
|
+
seenDeprecations.add(key);
|
|
312
|
+
deprecations.push(reference ? { text, reference } : { text });
|
|
172
313
|
}
|
|
173
314
|
}
|
|
174
315
|
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
175
316
|
const warnings = diagnostics.filter((d) => d.severity === "warning").length;
|
|
176
|
-
|
|
317
|
+
const result = {
|
|
177
318
|
diagnostics,
|
|
178
319
|
total: diagnostics.length,
|
|
179
320
|
errors,
|
|
180
321
|
warnings,
|
|
181
322
|
filesChecked: files.length,
|
|
182
323
|
};
|
|
324
|
+
if (deprecations.length > 0) {
|
|
325
|
+
result.deprecations = deprecations;
|
|
326
|
+
}
|
|
327
|
+
return result;
|
|
183
328
|
}
|
|
184
329
|
/**
|
|
185
330
|
* Parses Oxlint JSON output (from `oxlint --format json`).
|
|
@@ -204,13 +349,17 @@ export function parseOxlintJson(stdout) {
|
|
|
204
349
|
continue;
|
|
205
350
|
const file = entry.file ?? "unknown";
|
|
206
351
|
filesSet.add(file);
|
|
207
|
-
|
|
352
|
+
const diag = {
|
|
208
353
|
file,
|
|
209
354
|
line: entry.line ?? 0,
|
|
210
355
|
severity: mapOxlintSeverity(entry.severity),
|
|
211
356
|
rule: entry.ruleId ?? "unknown",
|
|
212
357
|
message: entry.message,
|
|
213
|
-
}
|
|
358
|
+
};
|
|
359
|
+
if (entry.column !== undefined && entry.column !== null) {
|
|
360
|
+
diag.column = entry.column;
|
|
361
|
+
}
|
|
362
|
+
diagnostics.push(diag);
|
|
214
363
|
}
|
|
215
364
|
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
216
365
|
const warnings = diagnostics.filter((d) => d.severity === "warning").length;
|
|
@@ -260,13 +409,21 @@ export function parseShellcheckJson(stdout) {
|
|
|
260
409
|
for (const finding of findings) {
|
|
261
410
|
const file = finding.file ?? "unknown";
|
|
262
411
|
filesSet.add(file);
|
|
263
|
-
|
|
412
|
+
const diag = {
|
|
264
413
|
file,
|
|
265
414
|
line: finding.line ?? 0,
|
|
266
415
|
severity: mapShellcheckLevel(finding.level),
|
|
267
416
|
rule: finding.code != null ? `SC${finding.code}` : "unknown",
|
|
268
417
|
message: finding.message ?? "",
|
|
269
|
-
}
|
|
418
|
+
};
|
|
419
|
+
if (finding.column !== undefined && finding.column !== null) {
|
|
420
|
+
diag.column = finding.column;
|
|
421
|
+
}
|
|
422
|
+
const suggestedFixes = extractShellcheckSuggestedFixes(finding.fix);
|
|
423
|
+
if (suggestedFixes) {
|
|
424
|
+
diag.suggestedFixes = suggestedFixes;
|
|
425
|
+
}
|
|
426
|
+
diagnostics.push(diag);
|
|
270
427
|
}
|
|
271
428
|
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
272
429
|
const warnings = diagnostics.filter((d) => d.severity === "warning").length;
|
|
@@ -291,6 +448,19 @@ function mapShellcheckLevel(level) {
|
|
|
291
448
|
return "warning";
|
|
292
449
|
}
|
|
293
450
|
}
|
|
451
|
+
function extractShellcheckSuggestedFixes(fix) {
|
|
452
|
+
if (!fix || typeof fix !== "object")
|
|
453
|
+
return undefined;
|
|
454
|
+
const replacements = fix.replacements;
|
|
455
|
+
if (!Array.isArray(replacements))
|
|
456
|
+
return undefined;
|
|
457
|
+
const values = replacements
|
|
458
|
+
.map((entry) => typeof entry === "object" && entry && "replacement" in entry
|
|
459
|
+
? entry.replacement
|
|
460
|
+
: undefined)
|
|
461
|
+
.filter((replacement) => typeof replacement === "string" && replacement.length > 0);
|
|
462
|
+
return values.length > 0 ? values : undefined;
|
|
463
|
+
}
|
|
294
464
|
/**
|
|
295
465
|
* Parses Hadolint JSON output (from `hadolint --format json`).
|
|
296
466
|
*
|
|
@@ -316,13 +486,22 @@ export function parseHadolintJson(stdout) {
|
|
|
316
486
|
for (const finding of findings) {
|
|
317
487
|
const file = finding.file ?? "unknown";
|
|
318
488
|
filesSet.add(file);
|
|
319
|
-
|
|
489
|
+
const rule = finding.code ?? "unknown";
|
|
490
|
+
const diag = {
|
|
320
491
|
file,
|
|
321
492
|
line: finding.line ?? 0,
|
|
322
493
|
severity: mapHadolintLevel(finding.level),
|
|
323
|
-
rule
|
|
494
|
+
rule,
|
|
324
495
|
message: finding.message ?? "",
|
|
325
|
-
}
|
|
496
|
+
};
|
|
497
|
+
if (finding.column !== undefined && finding.column !== null) {
|
|
498
|
+
diag.column = finding.column;
|
|
499
|
+
}
|
|
500
|
+
// Compute wiki URL for DL-prefixed rules
|
|
501
|
+
if (typeof rule === "string" && rule.startsWith("DL")) {
|
|
502
|
+
diag.wikiUrl = `https://github.com/hadolint/hadolint/wiki/${rule}`;
|
|
503
|
+
}
|
|
504
|
+
diagnostics.push(diag);
|
|
326
505
|
}
|
|
327
506
|
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
328
507
|
const warnings = diagnostics.filter((d) => d.severity === "warning").length;
|
|
@@ -348,31 +527,181 @@ function mapHadolintLevel(level) {
|
|
|
348
527
|
}
|
|
349
528
|
}
|
|
350
529
|
/**
|
|
351
|
-
* Parses Biome `format --write` output.
|
|
530
|
+
* Parses Biome `format --write --reporter=json` output.
|
|
531
|
+
*
|
|
532
|
+
* With JSON reporter, Biome outputs:
|
|
533
|
+
* { summary: { changed, unchanged, ... }, diagnostics: [...] }
|
|
534
|
+
*
|
|
535
|
+
* Without JSON reporter (text output), it outputs:
|
|
536
|
+
* "Formatted N files in Xms. Fixed M files."
|
|
537
|
+
* and individual file paths that were formatted.
|
|
352
538
|
*
|
|
353
|
-
*
|
|
354
|
-
* "Formatted 3 files in 50ms. Fixed 2 files."
|
|
355
|
-
* It also outputs individual file paths that were formatted.
|
|
539
|
+
* We try JSON first, then fall back to text parsing.
|
|
356
540
|
*/
|
|
357
541
|
export function parseBiomeFormat(stdout, stderr, exitCode) {
|
|
542
|
+
// Try JSON parse first (when --reporter=json is used)
|
|
543
|
+
const jsonResult = parseBiomeFormatJson(stdout);
|
|
544
|
+
if (jsonResult) {
|
|
545
|
+
const result = { ...jsonResult, success: exitCode === 0 };
|
|
546
|
+
if (exitCode !== 0) {
|
|
547
|
+
result.errorMessage = extractErrorMessage(stderr, stdout);
|
|
548
|
+
}
|
|
549
|
+
return result;
|
|
550
|
+
}
|
|
551
|
+
// Fall back to text-based parsing
|
|
552
|
+
return parseBiomeFormatText(stdout, stderr, exitCode);
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Parses Biome format JSON output.
|
|
556
|
+
* Returns null if the output is not valid Biome JSON.
|
|
557
|
+
*/
|
|
558
|
+
function parseBiomeFormatJson(stdout) {
|
|
559
|
+
let parsed;
|
|
560
|
+
try {
|
|
561
|
+
parsed = JSON.parse(stdout);
|
|
562
|
+
}
|
|
563
|
+
catch {
|
|
564
|
+
return null;
|
|
565
|
+
}
|
|
566
|
+
// Validate it's a Biome JSON response (has summary or diagnostics)
|
|
567
|
+
if (!parsed.summary && !parsed.diagnostics)
|
|
568
|
+
return null;
|
|
569
|
+
const summary = parsed.summary;
|
|
570
|
+
const changed = summary?.changed ?? 0;
|
|
571
|
+
const unchanged = summary?.unchanged ?? 0;
|
|
572
|
+
// Extract file paths from diagnostics that indicate formatting changes
|
|
573
|
+
const files = [];
|
|
574
|
+
for (const diag of parsed.diagnostics ?? []) {
|
|
575
|
+
if (diag.category === "format" && diag.location) {
|
|
576
|
+
const filePath = extractBiomeFilePath(diag.location);
|
|
577
|
+
if (filePath)
|
|
578
|
+
files.push(filePath);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
return {
|
|
582
|
+
filesChanged: changed,
|
|
583
|
+
filesUnchanged: unchanged > 0 ? unchanged : undefined,
|
|
584
|
+
files,
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Parses Biome format text output (fallback when JSON reporter is not used).
|
|
589
|
+
*/
|
|
590
|
+
function parseBiomeFormatText(stdout, stderr, exitCode) {
|
|
358
591
|
const output = stdout + "\n" + stderr;
|
|
359
592
|
const lines = output.split("\n").filter(Boolean);
|
|
360
593
|
const files = [];
|
|
594
|
+
let summaryChanged;
|
|
595
|
+
let summaryTotal;
|
|
361
596
|
for (const line of lines) {
|
|
362
597
|
const trimmed = line.trim();
|
|
363
|
-
//
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
598
|
+
// Extract counts from summary line: "Formatted N files in Xms. Fixed M files."
|
|
599
|
+
const formattedMatch = trimmed.match(/^Formatted\s+(\d+)\s+files?\b/);
|
|
600
|
+
if (formattedMatch) {
|
|
601
|
+
summaryTotal = parseInt(formattedMatch[1], 10);
|
|
602
|
+
const fixedMatch = trimmed.match(/Fixed\s+(\d+)\s+files?\b/);
|
|
603
|
+
if (fixedMatch) {
|
|
604
|
+
summaryChanged = parseInt(fixedMatch[1], 10);
|
|
605
|
+
}
|
|
606
|
+
continue;
|
|
607
|
+
}
|
|
608
|
+
// Skip other summary lines
|
|
609
|
+
if (trimmed.startsWith("Fixed ") ||
|
|
610
|
+
trimmed.startsWith("Checked ") ||
|
|
611
|
+
// Skip the "The --json option is unstable" warning
|
|
612
|
+
trimmed.startsWith("The --json")) {
|
|
613
|
+
continue;
|
|
614
|
+
}
|
|
615
|
+
// File paths end with an extension
|
|
616
|
+
if (trimmed && /\.\w+$/.test(trimmed)) {
|
|
369
617
|
files.push(trimmed);
|
|
370
618
|
}
|
|
371
619
|
}
|
|
372
|
-
|
|
373
|
-
|
|
620
|
+
// Use summary counts if available, otherwise fall back to file count
|
|
621
|
+
const filesChanged = summaryChanged ?? files.length;
|
|
622
|
+
const result = {
|
|
623
|
+
filesChanged,
|
|
374
624
|
files,
|
|
375
625
|
success: exitCode === 0,
|
|
376
626
|
};
|
|
627
|
+
// Compute filesUnchanged from summary if we have both counts
|
|
628
|
+
if (summaryTotal !== undefined && summaryChanged !== undefined) {
|
|
629
|
+
const unchanged = summaryTotal - summaryChanged;
|
|
630
|
+
if (unchanged > 0) {
|
|
631
|
+
result.filesUnchanged = unchanged;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
if (exitCode !== 0) {
|
|
635
|
+
result.errorMessage = extractErrorMessage(stderr, stdout);
|
|
636
|
+
}
|
|
637
|
+
return result;
|
|
638
|
+
}
|
|
639
|
+
function extractErrorMessage(primary, fallback) {
|
|
640
|
+
const preferred = primary.trim();
|
|
641
|
+
if (preferred) {
|
|
642
|
+
return preferred
|
|
643
|
+
.split("\n")
|
|
644
|
+
.find((line) => line.trim())
|
|
645
|
+
?.trim();
|
|
646
|
+
}
|
|
647
|
+
return fallback
|
|
648
|
+
.split("\n")
|
|
649
|
+
.map((line) => line.trim())
|
|
650
|
+
.find((line) => line.length > 0 && !/\.\w+$/.test(line));
|
|
651
|
+
}
|
|
652
|
+
/** Shell script file extensions for directory expansion. */
|
|
653
|
+
const SHELL_EXTENSIONS = new Set(["sh", "bash", "zsh", "ksh", "dash"]);
|
|
654
|
+
/**
|
|
655
|
+
* Resolves shellcheck patterns, expanding directories to shell script file paths.
|
|
656
|
+
*
|
|
657
|
+
* ShellCheck requires individual file paths, not directories. If a pattern
|
|
658
|
+
* is a directory, we recursively find shell script files within it.
|
|
659
|
+
*
|
|
660
|
+
* @param patterns - Array of file patterns or directories
|
|
661
|
+
* @param cwd - Working directory for resolving paths
|
|
662
|
+
* @returns Array of resolved file paths
|
|
663
|
+
*/
|
|
664
|
+
export async function resolveShellcheckPatterns(patterns, cwd) {
|
|
665
|
+
const { stat, readdir } = await import("node:fs/promises");
|
|
666
|
+
const { join, extname } = await import("node:path");
|
|
667
|
+
const resolvedFiles = [];
|
|
668
|
+
for (const pattern of patterns) {
|
|
669
|
+
const fullPath = pattern.startsWith("/") ? pattern : join(cwd, pattern);
|
|
670
|
+
try {
|
|
671
|
+
const stats = await stat(fullPath);
|
|
672
|
+
if (stats.isDirectory()) {
|
|
673
|
+
// Recursively find shell script files in the directory
|
|
674
|
+
const entries = await readdir(fullPath, { recursive: true });
|
|
675
|
+
for (const entry of entries) {
|
|
676
|
+
const ext = extname(String(entry)).slice(1); // remove leading dot
|
|
677
|
+
if (SHELL_EXTENSIONS.has(ext)) {
|
|
678
|
+
resolvedFiles.push(join(fullPath, String(entry)));
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
else if (stats.isFile()) {
|
|
683
|
+
resolvedFiles.push(fullPath);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
catch {
|
|
687
|
+
// Pattern might be a glob or doesn't exist — pass through as-is
|
|
688
|
+
// and let shellcheck handle the error
|
|
689
|
+
resolvedFiles.push(pattern);
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
return resolvedFiles;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Validates that shellcheck patterns contain actual file paths rather than
|
|
696
|
+
* bare directories. Returns an error message if validation fails, or null if ok.
|
|
697
|
+
*/
|
|
698
|
+
export function validateShellcheckPatterns(patterns) {
|
|
699
|
+
const bareDirectories = patterns.filter((p) => p === "." || p === ".." || (p.endsWith("/") && !p.includes("*")));
|
|
700
|
+
if (bareDirectories.length > 0) {
|
|
701
|
+
return (`ShellCheck requires file paths, not directories. ` +
|
|
702
|
+
`The following patterns look like directories: ${bareDirectories.join(", ")}. ` +
|
|
703
|
+
`Use glob patterns like "src/**/*.sh" or specific file paths instead.`);
|
|
704
|
+
}
|
|
705
|
+
return null;
|
|
377
706
|
}
|
|
378
707
|
//# sourceMappingURL=parsers.js.map
|
package/dist/lib/parsers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"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"}
|