depvitals 0.1.2 → 0.3.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 (86) hide show
  1. package/README.md +39 -61
  2. package/dist/cli/entry.d.ts +59 -0
  3. package/dist/cli/entry.d.ts.map +1 -0
  4. package/dist/cli/entry.js +95 -0
  5. package/dist/cli/entry.js.map +1 -0
  6. package/dist/cli/index.js +14 -18
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/notifier/eligibility.d.ts +65 -0
  9. package/dist/cli/notifier/eligibility.d.ts.map +1 -0
  10. package/dist/cli/notifier/eligibility.js +123 -0
  11. package/dist/cli/notifier/eligibility.js.map +1 -0
  12. package/dist/cli/notifier/registryLookup.d.ts +111 -0
  13. package/dist/cli/notifier/registryLookup.d.ts.map +1 -0
  14. package/dist/cli/notifier/registryLookup.js +211 -0
  15. package/dist/cli/notifier/registryLookup.js.map +1 -0
  16. package/dist/cli/notifier/updateCache.d.ts +101 -0
  17. package/dist/cli/notifier/updateCache.d.ts.map +1 -0
  18. package/dist/cli/notifier/updateCache.js +352 -0
  19. package/dist/cli/notifier/updateCache.js.map +1 -0
  20. package/dist/cli/notifier/updateCheck.d.ts +88 -0
  21. package/dist/cli/notifier/updateCheck.d.ts.map +1 -0
  22. package/dist/cli/notifier/updateCheck.js +166 -0
  23. package/dist/cli/notifier/updateCheck.js.map +1 -0
  24. package/dist/cli/notifier/versionCompare.d.ts +48 -0
  25. package/dist/cli/notifier/versionCompare.d.ts.map +1 -0
  26. package/dist/cli/notifier/versionCompare.js +89 -0
  27. package/dist/cli/notifier/versionCompare.js.map +1 -0
  28. package/dist/cli/runCli.d.ts +2 -0
  29. package/dist/cli/runCli.d.ts.map +1 -1
  30. package/dist/cli/runCli.js +36 -4
  31. package/dist/cli/runCli.js.map +1 -1
  32. package/dist/config/ignoreDependencies.d.ts +7 -0
  33. package/dist/config/ignoreDependencies.d.ts.map +1 -0
  34. package/dist/config/ignoreDependencies.js +18 -0
  35. package/dist/config/ignoreDependencies.js.map +1 -0
  36. package/dist/config/ignorePaths.d.ts +13 -0
  37. package/dist/config/ignorePaths.d.ts.map +1 -0
  38. package/dist/config/ignorePaths.js +47 -0
  39. package/dist/config/ignorePaths.js.map +1 -0
  40. package/dist/config/projectConfigError.d.ts +7 -0
  41. package/dist/config/projectConfigError.d.ts.map +1 -0
  42. package/dist/config/projectConfigError.js +10 -0
  43. package/dist/config/projectConfigError.js.map +1 -0
  44. package/dist/config/readProjectConfig.d.ts +23 -0
  45. package/dist/config/readProjectConfig.d.ts.map +1 -0
  46. package/dist/config/readProjectConfig.js +106 -0
  47. package/dist/config/readProjectConfig.js.map +1 -0
  48. package/dist/core/analyzeProject.d.ts +48 -6
  49. package/dist/core/analyzeProject.d.ts.map +1 -1
  50. package/dist/core/analyzeProject.js +123 -16
  51. package/dist/core/analyzeProject.js.map +1 -1
  52. package/dist/detectors/eslintManifestConfig.d.ts +111 -0
  53. package/dist/detectors/eslintManifestConfig.d.ts.map +1 -0
  54. package/dist/detectors/eslintManifestConfig.js +351 -0
  55. package/dist/detectors/eslintManifestConfig.js.map +1 -0
  56. package/dist/detectors/eslintRcJsonConfig.d.ts +85 -0
  57. package/dist/detectors/eslintRcJsonConfig.d.ts.map +1 -0
  58. package/dist/detectors/eslintRcJsonConfig.js +189 -0
  59. package/dist/detectors/eslintRcJsonConfig.js.map +1 -0
  60. package/dist/detectors/jestManifestConfig.d.ts +76 -0
  61. package/dist/detectors/jestManifestConfig.d.ts.map +1 -0
  62. package/dist/detectors/jestManifestConfig.js +294 -0
  63. package/dist/detectors/jestManifestConfig.js.map +1 -0
  64. package/dist/reporters/terminalReporter.js +27 -1
  65. package/dist/reporters/terminalReporter.js.map +1 -1
  66. package/dist/scanner/moduleSpecifiers.d.ts +9 -1
  67. package/dist/scanner/moduleSpecifiers.d.ts.map +1 -1
  68. package/dist/scanner/moduleSpecifiers.js +3317 -205
  69. package/dist/scanner/moduleSpecifiers.js.map +1 -1
  70. package/dist/scanner/packageSpecifier.d.ts +26 -2
  71. package/dist/scanner/packageSpecifier.d.ts.map +1 -1
  72. package/dist/scanner/packageSpecifier.js +70 -2
  73. package/dist/scanner/packageSpecifier.js.map +1 -1
  74. package/dist/scanner/projectManifest.d.ts +31 -1
  75. package/dist/scanner/projectManifest.d.ts.map +1 -1
  76. package/dist/scanner/projectManifest.js +83 -4
  77. package/dist/scanner/projectManifest.js.map +1 -1
  78. package/dist/scanner/scriptUsage.d.ts +2 -1
  79. package/dist/scanner/scriptUsage.d.ts.map +1 -1
  80. package/dist/scanner/scriptUsage.js +216 -39
  81. package/dist/scanner/scriptUsage.js.map +1 -1
  82. package/dist/scanner/sourceFiles.d.ts +16 -2
  83. package/dist/scanner/sourceFiles.d.ts.map +1 -1
  84. package/dist/scanner/sourceFiles.js +12 -6
  85. package/dist/scanner/sourceFiles.js.map +1 -1
  86. package/package.json +7 -7
@@ -16,8 +16,10 @@
16
16
  * text is read as UTF-8 without any BOM handling: a manifest that `JSON.parse` rejects is reported
17
17
  * as invalid instead of being silently normalized.
18
18
  */
19
- import { readFile } from 'node:fs/promises';
19
+ import { lstat, readFile } from 'node:fs/promises';
20
20
  import { join, resolve } from 'node:path';
21
+ import { assertReadableRoot, SourceFilesError } from './sourceFiles.js';
22
+ import { createPackageSelfReferenceScope, } from './packageSpecifier.js';
21
23
  const MANIFEST_FILENAME = 'package.json';
22
24
  /**
23
25
  * Operational error for manifest loading. The `code` lets callers (the CLI in a later step) render
@@ -39,22 +41,89 @@ export class ProjectManifestError extends Error {
39
41
  *
40
42
  * @throws {ProjectManifestError} when the manifest is missing, unreadable, invalid JSON, or has an
41
43
  * unexpected structure.
44
+ * @throws {SourceFilesError} when the selected root is linked or is not a directory.
42
45
  */
43
46
  export async function loadProjectManifest(projectRoot) {
44
47
  const root = resolve(projectRoot);
45
48
  const packageJsonPath = join(root, MANIFEST_FILENAME);
49
+ try {
50
+ await assertReadableRoot(root);
51
+ }
52
+ catch (error) {
53
+ // Preserve manifest-loader diagnostics for missing/unreadable roots, but reject linked roots
54
+ // with the same typed root error as source discovery before any target input is consulted.
55
+ if (error instanceof SourceFilesError && error.code !== 'not-a-directory') {
56
+ throw toReadError(packageJsonPath, error.cause ?? error);
57
+ }
58
+ throw error;
59
+ }
60
+ const text = await readManifestText(packageJsonPath);
61
+ return parseManifest(root, packageJsonPath, text);
62
+ }
63
+ /**
64
+ * Read only the static `type` hint from the manifest in `directory`.
65
+ *
66
+ * The combined scope reader below supplies analysis with ownership too. A missing manifest means the
67
+ * parent scope remains applicable; an existing manifest with no string `type` starts a new scope
68
+ * whose `.js` files are ambiguous rather than inheriting the parent's explicit module mode.
69
+ */
70
+ export async function loadPackageTypeHint(directory) {
71
+ const scope = await loadPackageScope(directory);
72
+ return scope === undefined ? undefined : { packageType: scope.packageType };
73
+ }
74
+ /** Read module mode and bounded ownership together, with the same mandatory manifest guard. */
75
+ export async function loadPackageScope(directory) {
76
+ const packageJsonPath = join(resolve(directory), MANIFEST_FILENAME);
46
77
  let text;
47
78
  try {
48
- text = await readFile(packageJsonPath, 'utf8');
79
+ text = await readManifestText(packageJsonPath);
80
+ }
81
+ catch (error) {
82
+ if (error instanceof ProjectManifestError && error.code === 'missing')
83
+ return undefined;
84
+ throw error;
85
+ }
86
+ let parsed;
87
+ try {
88
+ parsed = JSON.parse(text);
89
+ }
90
+ catch (error) {
91
+ throw new ProjectManifestError(`${packageJsonPath} is not valid JSON`, 'invalid-json', error);
92
+ }
93
+ if (!isPlainRecord(parsed)) {
94
+ throw new ProjectManifestError(`${packageJsonPath} must contain a JSON object`, 'invalid-shape');
95
+ }
96
+ return {
97
+ packageType: readOptionalString(parsed, 'type'),
98
+ selfReference: createPackageSelfReferenceScope(parsed),
99
+ };
100
+ }
101
+ /**
102
+ * Read mandatory manifest text only from a non-linked regular file. Only absence at lstat means
103
+ * no scope; a present entry that cannot be read (including disappearance after lstat) is an error.
104
+ * This checks stable filesystem entries, not adversarial replacement between calls.
105
+ */
106
+ export async function readManifestText(packageJsonPath) {
107
+ let info;
108
+ try {
109
+ info = await lstat(packageJsonPath);
49
110
  }
50
111
  catch (error) {
51
112
  throw toReadError(packageJsonPath, error);
52
113
  }
53
- return parseManifest(root, packageJsonPath, text);
114
+ if (!info.isFile()) {
115
+ throw new ProjectManifestError(`${packageJsonPath} must be a regular file; symlinks and non-regular entries are not read`, 'unreadable');
116
+ }
117
+ try {
118
+ return await readFile(packageJsonPath, 'utf8');
119
+ }
120
+ catch (error) {
121
+ throw new ProjectManifestError(`Could not read ${MANIFEST_FILENAME} at ${packageJsonPath}`, 'unreadable', error);
122
+ }
54
123
  }
55
124
  /**
56
125
  * Classify a filesystem failure: a missing manifest is expected and reported separately from any
57
- * other I/O problem. A root that turns out to be a file surfaces as `ENOTDIR` and stays unreadable.
126
+ * other I/O problem. Missing nested scopes may inherit only when the entry was absent at lstat.
58
127
  */
59
128
  function toReadError(packageJsonPath, error) {
60
129
  if (isNotFoundError(error)) {
@@ -88,6 +157,7 @@ function parseManifest(root, packageJsonPath, text) {
88
157
  const peerDependencies = readStringRecord(parsed, 'peerDependencies', packageJsonPath);
89
158
  const scripts = readStringRecord(parsed, 'scripts', packageJsonPath);
90
159
  const name = readName(parsed, packageJsonPath);
160
+ const packageType = readOptionalString(parsed, 'type');
91
161
  const manifest = {
92
162
  root,
93
163
  packageJsonPath,
@@ -100,9 +170,18 @@ function parseManifest(root, packageJsonPath, text) {
100
170
  peerDependencies,
101
171
  ]),
102
172
  scripts,
173
+ packageType,
174
+ selfReference: createPackageSelfReferenceScope(parsed),
103
175
  };
104
176
  return name === undefined ? manifest : { ...manifest, name };
105
177
  }
178
+ function readOptionalString(manifest, key) {
179
+ const value = manifest[key];
180
+ if (value === undefined) {
181
+ return undefined;
182
+ }
183
+ return typeof value === 'string' ? value : undefined;
184
+ }
106
185
  /**
107
186
  * Read the optional `name` field. Its type is validated, but npm package-name rules are not.
108
187
  */
@@ -1 +1 @@
1
- {"version":3,"file":"projectManifest.js","sourceRoot":"","sources":["../../src/scanner/projectManifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectManifest.js","sourceRoot":"","sources":["../../src/scanner/projectManifest.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,8 @@
38
38
  * that is still open at the end of the script. Each such region is consumed as an opaque block, so a
39
39
  * separator inside it never delimits the surrounding script. An invalidated segment yields no
40
40
  * evidence at all, while the neighbouring segments delimited by real supported separators are still
41
- * analyzed normally.
41
+ * analyzed normally. Here-document payloads stay opaque; scanning resumes only after a proven
42
+ * literal closing delimiter. Unknown headers discard the unproven remainder.
42
43
  */
43
44
  /**
44
45
  * Recognize the declared dependencies that `package.json` scripts clearly reference.
@@ -1 +1 @@
1
- {"version":3,"file":"scriptUsage.d.ts","sourceRoot":"","sources":["../../src/scanner/scriptUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AA6TH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACzC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,WAAW,CAAC,MAAM,CAAC,CAYrB"}
1
+ {"version":3,"file":"scriptUsage.d.ts","sourceRoot":"","sources":["../../src/scanner/scriptUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AA6TH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACzC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,WAAW,CAAC,MAAM,CAAC,CAYrB"}
@@ -38,7 +38,8 @@
38
38
  * that is still open at the end of the script. Each such region is consumed as an opaque block, so a
39
39
  * separator inside it never delimits the surrounding script. An invalidated segment yields no
40
40
  * evidence at all, while the neighbouring segments delimited by real supported separators are still
41
- * analyzed normally.
41
+ * analyzed normally. Here-document payloads stay opaque; scanning resumes only after a proven
42
+ * literal closing delimiter. Unknown headers discard the unproven remainder.
42
43
  */
43
44
  import { classifyPackageSpecifier } from './packageSpecifier.js';
44
45
  /**
@@ -461,9 +462,13 @@ function matchRunnerPackage(significant) {
461
462
  * text inside quotes from being misread, and to detect the syntax it refuses to interpret. It never
462
463
  * executes, expands or substitutes anything.
463
464
  *
464
- * Unsupported constructs (single `&`, redirection, `$(...)`, `${...}`, quotes left open at the end of
465
- * the script) mark the current segment as unsupported instead of guessing tokens from inside it. The
466
- * marker is reset by the next real separator, so invalidation stays local to the affected segment.
465
+ * A `#` at a word boundary starts a POSIX comment that runs to the next line terminator; its body is
466
+ * skipped before any separator inside it can be interpreted, so a commented command is never credited
467
+ * (Step 68.1). Unsupported constructs (single `&`, redirection, `$(...)`, `${...}`, quotes left open
468
+ * at the end of the script) mark the current segment as unsupported instead of guessing tokens from
469
+ * inside it. The marker is reset by the next real separator, so invalidation stays local to the
470
+ * affected segment. Here-document payloads are the exception: a literal closing delimiter must be
471
+ * proven before scanning resumes; unknown headers discard the unproven remainder.
467
472
  */
468
473
  function splitSegments(script) {
469
474
  const segments = [];
@@ -487,6 +492,29 @@ function splitSegments(script) {
487
492
  i += 1;
488
493
  continue;
489
494
  }
495
+ // A `#` at a word boundary (start of script, after a separator, or after whitespace) starts a
496
+ // POSIX comment. Everything up to the next LF is inert: separators inside it (`;`, `&&`, ...) are
497
+ // skipped with the comment, so they never reach the segment logic and cannot split a segment or be
498
+ // misread as commands. The line terminator that ends the comment then flushes the segment that
499
+ // preceded it, so commands before the comment keep their evidence and commands on later lines are
500
+ // still analyzed. This is detected here, before any separator inside the comment could run, and
501
+ // never inside a token: `abc#def` and quoted `"#"` stay ordinary words, and `${#foo}` is consumed
502
+ // as an unsupported expansion by `scanToken` before the `#` could be seen at the loop boundary.
503
+ if (ch === '#') {
504
+ i = skipCommentToEndOfLine(script, i);
505
+ continue;
506
+ }
507
+ // A here-document owns its entire payload, including apparent commands and quotes.
508
+ // Only the bounded literal header can establish a trusted resumption point.
509
+ if (ch === '<' && script[i + 1] === '<') {
510
+ const next = unsupported ? undefined : skipHereDocument(script, i);
511
+ unsupported = true;
512
+ if (next === undefined)
513
+ break;
514
+ i = next;
515
+ flush();
516
+ continue;
517
+ }
490
518
  // Supported separators. `&&`/`||` are two-character; `;`, `|` and newline are single-character.
491
519
  if (ch === ';' || ch === '\n') {
492
520
  i += 1;
@@ -526,6 +554,81 @@ function splitSegments(script) {
526
554
  segments.push({ tokens, unsupported });
527
555
  return segments;
528
556
  }
557
+ /** Locate a single literal << / <<- payload without interpreting or expanding any of it. */
558
+ function skipHereDocument(script, start) {
559
+ let i = start + 2;
560
+ const stripTabs = script[i] === '-';
561
+ if (stripTabs)
562
+ i++;
563
+ while (script[i] === ' ' || script[i] === '\t')
564
+ i++;
565
+ const quote = script[i] === "'" || script[i] === '"' ? script[i++] : undefined;
566
+ const delimiterStart = i;
567
+ while (i < script.length && /[A-Za-z0-9_]/.test(script[i] ?? ''))
568
+ i++;
569
+ if (i === delimiterStart)
570
+ return undefined;
571
+ const delimiter = script.slice(delimiterStart, i);
572
+ if (quote !== undefined) {
573
+ if (script[i] !== quote)
574
+ return undefined;
575
+ i++;
576
+ }
577
+ const delimiterEnd = i;
578
+ while (script[i] === ' ' || script[i] === '\t')
579
+ i++;
580
+ // An adjacent # is part of the delimiter word, not a shell comment.
581
+ if (i > delimiterEnd && script[i] === '#')
582
+ i = skipCommentToEndOfLine(script, i);
583
+ if (script[i] === '\r' && script[i + 1] === '\n')
584
+ i++;
585
+ if (script[i] !== '\n')
586
+ return undefined;
587
+ i++;
588
+ while (i < script.length) {
589
+ const newline = script.indexOf('\n', i);
590
+ let end = newline < 0 ? script.length : newline;
591
+ if (newline >= 0 && script[end - 1] === '\r')
592
+ end--;
593
+ if (quote === undefined && newline >= 0) {
594
+ // Unquoted payloads remove an unescaped backslash-newline before delimiter matching.
595
+ // Logical-line reconstruction is outside the resume subset: do not trust the remainder.
596
+ let escapeStart = end;
597
+ while (escapeStart > i && script[escapeStart - 1] === '\\')
598
+ escapeStart--;
599
+ if ((end - escapeStart) % 2 === 1)
600
+ return undefined;
601
+ }
602
+ let content = i;
603
+ if (stripTabs)
604
+ while (script[content] === '\t')
605
+ content++;
606
+ if (script.slice(content, end) === delimiter) {
607
+ return newline < 0 ? script.length : newline + 1;
608
+ }
609
+ if (newline < 0)
610
+ return undefined;
611
+ i = newline + 1;
612
+ }
613
+ return undefined;
614
+ }
615
+ /**
616
+ * Skip a POSIX comment that starts at `start`, which must point at a `#`, and return the index just
617
+ * at the next LF, or the end of the script when none follows.
618
+ *
619
+ * Only the terminator that ends the comment is left for the loop: it is then treated as a separator
620
+ * that flushes the preceding segment. A lone CR (no LF) is left for the loop to skip as whitespace,
621
+ * so both LF and CRLF line endings end the comment and let the next line be analyzed. The comment
622
+ * body is never tokenized, so no separator or command inside it is ever interpreted.
623
+ */
624
+ function skipCommentToEndOfLine(script, start) {
625
+ let i = start + 1;
626
+ const length = script.length;
627
+ while (i < length && script[i] !== '\n') {
628
+ i += 1;
629
+ }
630
+ return i;
631
+ }
529
632
  /**
530
633
  * Scan a single unquoted token starting at `start`.
531
634
  *
@@ -546,6 +649,9 @@ function scanToken(script, start) {
546
649
  if (isWhitespace(ch) || ch === ';' || ch === '\n' || ch === '|' || ch === '&') {
547
650
  break;
548
651
  }
652
+ // Let the outer scanner consume a here-document even when it is attached to a word.
653
+ if (ch === '<' && script[i + 1] === '<')
654
+ break;
549
655
  // Redirection is not parsed in v0.1.0; its presence alone invalidates the segment.
550
656
  if (ch === '<' || ch === '>') {
551
657
  unsupported = true;
@@ -657,6 +763,10 @@ function isUnsupportedRegionStart(script, index) {
657
763
  * cannot close a region either. A single quote is literal text inside a double-quoted run, which is
658
764
  * the one quote form that does not nest.
659
765
  *
766
+ * Inside $(), command-position grouping parentheses own their closers and word-boundary comments
767
+ * stay inert through LF. Literal here-document boundaries are delegated to the same bounded helper.
768
+ * Arithmetic, case patterns, function declarations and unprovable group boundaries retain the remainder.
769
+ *
660
770
  * If EOF is reached first the region is unterminated and `script.length` is returned, leaving the
661
771
  * current outer segment unsupported. This never interprets shell semantics; it only locates opaque
662
772
  * region boundaries safely.
@@ -664,83 +774,150 @@ function isUnsupportedRegionStart(script, index) {
664
774
  function skipUnsupportedRegion(script, start) {
665
775
  const length = script.length;
666
776
  const stack = [];
777
+ const push = (close, group = false) => {
778
+ stack.push({ close, group, wordBoundary: true, commandStart: true });
779
+ };
780
+ const pop = () => {
781
+ const closed = stack.pop();
782
+ const parent = stack.at(-1);
783
+ if (parent !== undefined) {
784
+ parent.wordBoundary = closed?.group === true;
785
+ parent.commandStart = false;
786
+ }
787
+ };
667
788
  const first = script[start];
668
789
  const second = script[start + 1];
669
790
  let i;
670
791
  if (first === '`') {
671
- stack.push('`');
792
+ push('`');
672
793
  i = start + 1;
673
794
  }
674
795
  else if (first === '$' && (second === '(' || second === '{')) {
675
- stack.push(second === '(' ? ')' : '}');
796
+ if (second === '(' && script[start + 2] === '(')
797
+ return length;
798
+ push(second === '(' ? ')' : '}');
676
799
  i = start + 2;
677
800
  }
678
801
  else {
679
- // Not a region opener; advance by one so a caller can never loop forever.
680
802
  return start + 1;
681
803
  }
682
804
  while (i < length && stack.length > 0) {
683
805
  const ch = script[i];
684
- if (ch === undefined) {
685
- break;
686
- }
687
806
  const top = stack.at(-1);
688
- // Inside single quotes everything is literal, so only the closing single quote is special.
689
- if (top === "'") {
690
- if (ch === "'") {
691
- stack.pop();
692
- }
693
- i += 1;
807
+ if (ch === undefined || top === undefined)
808
+ break;
809
+ if (top.close === "'") {
810
+ if (ch === "'")
811
+ pop();
812
+ i++;
694
813
  continue;
695
814
  }
696
- // A backslash consumes the next character in `$()`, `${}`, backticks and double quotes.
697
815
  if (ch === '\\') {
816
+ // A removed line continuation does not begin a new shell word.
817
+ if (script[i + 1] !== '\n') {
818
+ top.wordBoundary = false;
819
+ top.commandStart = false;
820
+ }
698
821
  i += 2;
699
822
  continue;
700
823
  }
701
824
  if (ch === "'" || ch === '"') {
702
- // A single quote is literal text inside a double-quoted run, so it must never open a region of
703
- // its own. Doing so would keep the outer double quote open until EOF and hide the separators
704
- // that follow it.
705
- if (ch === "'" && top === '"') {
706
- i += 1;
825
+ if (ch === "'" && top.close === '"') {
826
+ i++;
707
827
  continue;
708
828
  }
709
- // A double quote closes only the quoted run it opened; any other quote opens a literal run.
710
- if (ch === '"' && top === '"') {
711
- stack.pop();
712
- }
829
+ if (ch === '"' && top.close === '"')
830
+ pop();
713
831
  else {
714
- stack.push(ch);
832
+ top.wordBoundary = false;
833
+ top.commandStart = false;
834
+ push(ch);
715
835
  }
716
- i += 1;
836
+ i++;
717
837
  continue;
718
838
  }
719
839
  const next = script[i + 1];
720
840
  if (ch === '$' && opensExpansion(next)) {
721
- stack.push(next === '(' ? ')' : '}');
841
+ if (next === '(' && script[i + 2] === '(')
842
+ return length;
843
+ top.wordBoundary = false;
844
+ top.commandStart = false;
845
+ push(next === '(' ? ')' : '}');
722
846
  i += 2;
723
847
  continue;
724
848
  }
725
849
  if (ch === '`') {
726
- if (top === '`') {
727
- stack.pop();
728
- }
850
+ if (top.close === '`')
851
+ pop();
729
852
  else {
730
- stack.push('`');
853
+ top.wordBoundary = false;
854
+ top.commandStart = false;
855
+ push('`');
731
856
  }
732
- i += 1;
857
+ i++;
733
858
  continue;
734
859
  }
735
- // `)` and `}` close only a matching region; otherwise they are inert region content.
736
- if ((ch === ')' || ch === '}') && ch === top) {
737
- stack.pop();
860
+ if (top.close === ')') {
861
+ if (ch === '#' && top.wordBoundary) {
862
+ i = skipCommentToEndOfLine(script, i);
863
+ continue;
864
+ }
865
+ // A standalone pipeline negation leaves the following command in command position.
866
+ if (ch === '!' && top.commandStart && isRegionWordBoundary(next)) {
867
+ top.wordBoundary = true;
868
+ i++;
869
+ continue;
870
+ }
871
+ // These reserved words leave the next word in command position.
872
+ if (top.commandStart && top.wordBoundary) {
873
+ const lead = ['if', 'then', 'do', 'else', 'elif', 'while', 'until', 'time', '{'].find((word) => script.startsWith(word, i) && isRegionWordBoundary(script[i + word.length]));
874
+ if (lead !== undefined) {
875
+ i += lead.length;
876
+ top.wordBoundary = true;
877
+ continue;
878
+ }
879
+ }
880
+ // Case patterns and arithmetic/function syntax cannot be balanced as simple groups.
881
+ if (top.commandStart &&
882
+ ['case', 'function'].some((word) => script.startsWith(word, i) && isRegionWordBoundary(script[i + word.length])))
883
+ return length;
884
+ if (ch === '<' && next === '<') {
885
+ const after = skipHereDocument(script, i);
886
+ if (after === undefined)
887
+ return length;
888
+ i = after;
889
+ top.wordBoundary = true;
890
+ top.commandStart = true;
891
+ continue;
892
+ }
893
+ if (ch === '(') {
894
+ if (!top.commandStart || next === '(')
895
+ return length;
896
+ top.wordBoundary = false;
897
+ top.commandStart = false;
898
+ push(')', true);
899
+ i++;
900
+ continue;
901
+ }
902
+ if (isWhitespace(ch) || ch === '\n' || ch === ';' || ch === '|' || ch === '&') {
903
+ top.wordBoundary = true;
904
+ if (ch === '\n' || ch === ';' || ch === '|' || ch === '&')
905
+ top.commandStart = true;
906
+ }
907
+ else {
908
+ top.wordBoundary = ch === '<' || ch === '>';
909
+ top.commandStart = false;
910
+ }
738
911
  }
739
- i += 1;
912
+ if ((ch === ')' || ch === '}') && ch === top.close)
913
+ pop();
914
+ i++;
740
915
  }
741
- // An empty stack means the outermost region closed just before `i`; otherwise EOF arrived first.
742
916
  return stack.length === 0 ? i : length;
743
917
  }
918
+ function isRegionWordBoundary(ch) {
919
+ return (ch === undefined || isWhitespace(ch) || ['\n', ';', '|', '&', '(', ')', '<', '>'].includes(ch));
920
+ }
744
921
  /**
745
922
  * Whether a character is whitespace (spaces, tabs, CR, FF, VT).
746
923
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scriptUsage.js","sourceRoot":"","sources":["../../src/scanner/scriptUsage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scriptUsage.js","sourceRoot":"","sources":["../../src/scanner/scriptUsage.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * It deliberately does not:
9
9
  * - read, parse or execute any discovered file (that belongs to the analyzers / specifier extractor);
10
10
  * - decide whether anything is used, unused or missing;
11
- * - parse `.gitignore` or honor custom ignore configuration (`v0.1.0` uses a fixed built-in set);
11
+ * - parse `.gitignore` or load user configuration (callers supply validated literal rules);
12
12
  * - follow symlinks, which avoids cycles and scanning content outside the intended project tree;
13
13
  * - mutate the analyzed project.
14
14
  *
@@ -20,6 +20,10 @@
20
20
  * A discovered source file as an absolute, platform-separated path, sorted lexicographically.
21
21
  */
22
22
  export type DiscoveredSourceFile = string;
23
+ /** Internal discovery inputs; callers supply normalized, validated project-relative rules. */
24
+ export type SourceDiscoveryOptions = {
25
+ readonly ignorePaths?: readonly string[] | undefined;
26
+ };
23
27
  /**
24
28
  * Why source discovery could not run.
25
29
  *
@@ -48,5 +52,15 @@ export declare class SourceFilesError extends Error {
48
52
  *
49
53
  * @throws {SourceFilesError} when the root is missing, is not a directory, or cannot be read.
50
54
  */
51
- export declare function discoverSourceFiles(projectRoot: string): Promise<readonly DiscoveredSourceFile[]>;
55
+ export declare function discoverSourceFiles(projectRoot: string, options?: SourceDiscoveryOptions): Promise<readonly DiscoveredSourceFile[]>;
56
+ /**
57
+ * Validate that the resolved root exists and is a directory before walking it. A missing root is
58
+ * reported separately from a root that is a regular file, and any other I/O failure stays
59
+ * `unreadable`.
60
+ *
61
+ * `lstat` (not `stat`) is used on purpose: it does not follow a symlink supplied as the root, so a
62
+ * symlinked root is rejected instead of being traversed, keeping the "never follow symlinks"
63
+ * contract consistent from the entry point down.
64
+ */
65
+ export declare function assertReadableRoot(root: string): Promise<void>;
52
66
  //# sourceMappingURL=sourceFiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceFiles.d.ts","sourceRoot":"","sources":["../../src/scanner/sourceFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA2CH;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,iBAAiB,GAAG,YAAY,CAAC;AAEhF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAY1C"}
1
+ {"version":3,"file":"sourceFiles.d.ts","sourceRoot":"","sources":["../../src/scanner/sourceFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6CH;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE1C,8FAA8F;AAC9F,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACtD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,iBAAiB,GAAG,YAAY,CAAC;AAEhF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAY1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpE"}