@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.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/formatters.d.ts +3 -0
  5. package/dist/lib/formatters.d.ts.map +1 -1
  6. package/dist/lib/formatters.js +54 -9
  7. package/dist/lib/formatters.js.map +1 -1
  8. package/dist/lib/lint-runner.js +7 -7
  9. package/dist/lib/parsers.d.ts +57 -10
  10. package/dist/lib/parsers.d.ts.map +1 -1
  11. package/dist/lib/parsers.js +373 -44
  12. package/dist/lib/parsers.js.map +1 -1
  13. package/dist/schemas/index.d.ts +16 -0
  14. package/dist/schemas/index.d.ts.map +1 -1
  15. package/dist/schemas/index.js +14 -0
  16. package/dist/schemas/index.js.map +1 -1
  17. package/dist/tools/biome-check.d.ts.map +1 -1
  18. package/dist/tools/biome-check.js +80 -11
  19. package/dist/tools/biome-check.js.map +1 -1
  20. package/dist/tools/biome-format.d.ts.map +1 -1
  21. package/dist/tools/biome-format.js +55 -11
  22. package/dist/tools/biome-format.js.map +1 -1
  23. package/dist/tools/format-check.d.ts.map +1 -1
  24. package/dist/tools/format-check.js +90 -13
  25. package/dist/tools/format-check.js.map +1 -1
  26. package/dist/tools/hadolint.d.ts.map +1 -1
  27. package/dist/tools/hadolint.js +85 -10
  28. package/dist/tools/hadolint.js.map +1 -1
  29. package/dist/tools/lint.d.ts.map +1 -1
  30. package/dist/tools/lint.js +62 -10
  31. package/dist/tools/lint.js.map +1 -1
  32. package/dist/tools/oxlint.d.ts.map +1 -1
  33. package/dist/tools/oxlint.js +94 -10
  34. package/dist/tools/oxlint.js.map +1 -1
  35. package/dist/tools/prettier-format.d.ts.map +1 -1
  36. package/dist/tools/prettier-format.js +99 -15
  37. package/dist/tools/prettier-format.js.map +1 -1
  38. package/dist/tools/shellcheck.d.ts.map +1 -1
  39. package/dist/tools/shellcheck.js +100 -15
  40. package/dist/tools/shellcheck.js.map +1 -1
  41. package/dist/tools/stylelint.d.ts.map +1 -1
  42. package/dist/tools/stylelint.js +58 -10
  43. package/dist/tools/stylelint.js.map +1 -1
  44. package/package.json +2 -2
@@ -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
- diagnostics.push({
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 rewrites.
63
- * If all files are already formatted, output may be empty or just the file names
64
- * with no changes. We detect changed files from the output lines.
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 (trimmed &&
75
- !trimmed.startsWith("[") &&
76
- !trimmed.startsWith("Checking") &&
77
- !trimmed.startsWith("All ") &&
78
- /\.\w+$/.test(trimmed)) {
79
- files.push(trimmed);
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
- return {
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 a `diagnostics` array:
92
- * { diagnostics: [{ category, severity, description, location: { path: { file }, span }, advices }] }
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
- const file = diag.location?.path?.file ?? "unknown";
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
- // Biome spans are byte offsets, not line/column. We extract from sourceCode if available,
114
- // but default to 0 if line info is not in the JSON output.
115
- const line = diag.location?.sourceCode?.lineNumber ?? 0;
116
- diagnostics.push({
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
- diagnostics.push({
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
- return {
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
- diagnostics.push({
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
- diagnostics.push({
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
- diagnostics.push({
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: finding.code ?? "unknown",
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
- * Biome format --write outputs lines like:
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
- // Skip summary lines and empty lines. File paths end with an extension.
364
- if (trimmed &&
365
- !trimmed.startsWith("Formatted ") &&
366
- !trimmed.startsWith("Fixed ") &&
367
- !trimmed.startsWith("Checked ") &&
368
- /\.\w+$/.test(trimmed)) {
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
- return {
373
- filesChanged: files.length,
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
@@ -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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"}