depvitals 0.2.0 → 0.4.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 (89) hide show
  1. package/README.md +95 -30
  2. package/dist/cli/entry.js +8 -21
  3. package/dist/cli/entry.js.map +1 -1
  4. package/dist/cli/parseCliArgs.d.ts +5 -2
  5. package/dist/cli/parseCliArgs.d.ts.map +1 -1
  6. package/dist/cli/parseCliArgs.js +51 -36
  7. package/dist/cli/parseCliArgs.js.map +1 -1
  8. package/dist/cli/runCli.d.ts +4 -5
  9. package/dist/cli/runCli.d.ts.map +1 -1
  10. package/dist/cli/runCli.js +41 -46
  11. package/dist/cli/runCli.js.map +1 -1
  12. package/dist/config/ignoreDependencies.d.ts +9 -0
  13. package/dist/config/ignoreDependencies.d.ts.map +1 -0
  14. package/dist/config/ignoreDependencies.js +22 -0
  15. package/dist/config/ignoreDependencies.js.map +1 -0
  16. package/dist/config/ignorePaths.d.ts +13 -0
  17. package/dist/config/ignorePaths.d.ts.map +1 -0
  18. package/dist/config/ignorePaths.js +47 -0
  19. package/dist/config/ignorePaths.js.map +1 -0
  20. package/dist/config/projectConfigError.d.ts +7 -0
  21. package/dist/config/projectConfigError.d.ts.map +1 -0
  22. package/dist/config/projectConfigError.js +10 -0
  23. package/dist/config/projectConfigError.js.map +1 -0
  24. package/dist/config/readProjectConfig.d.ts +28 -0
  25. package/dist/config/readProjectConfig.d.ts.map +1 -0
  26. package/dist/config/readProjectConfig.js +120 -0
  27. package/dist/config/readProjectConfig.js.map +1 -0
  28. package/dist/core/analyzeProject.d.ts +40 -1
  29. package/dist/core/analyzeProject.d.ts.map +1 -1
  30. package/dist/core/analyzeProject.js +189 -45
  31. package/dist/core/analyzeProject.js.map +1 -1
  32. package/dist/core/evidence.d.ts +67 -0
  33. package/dist/core/evidence.d.ts.map +1 -0
  34. package/dist/core/evidence.js +115 -0
  35. package/dist/core/evidence.js.map +1 -0
  36. package/dist/core/scanContext.d.ts +20 -0
  37. package/dist/core/scanContext.d.ts.map +1 -0
  38. package/dist/core/scanContext.js +43 -0
  39. package/dist/core/scanContext.js.map +1 -0
  40. package/dist/detectors/eslintManifestConfig.d.ts +18 -0
  41. package/dist/detectors/eslintManifestConfig.d.ts.map +1 -1
  42. package/dist/detectors/eslintManifestConfig.js +62 -80
  43. package/dist/detectors/eslintManifestConfig.js.map +1 -1
  44. package/dist/detectors/eslintRcJsonConfig.d.ts +8 -2
  45. package/dist/detectors/eslintRcJsonConfig.d.ts.map +1 -1
  46. package/dist/detectors/eslintRcJsonConfig.js +27 -12
  47. package/dist/detectors/eslintRcJsonConfig.js.map +1 -1
  48. package/dist/detectors/jestManifestConfig.d.ts +15 -3
  49. package/dist/detectors/jestManifestConfig.d.ts.map +1 -1
  50. package/dist/detectors/jestManifestConfig.js +63 -83
  51. package/dist/detectors/jestManifestConfig.js.map +1 -1
  52. package/dist/reporters/jsonReporter.d.ts +39 -0
  53. package/dist/reporters/jsonReporter.d.ts.map +1 -0
  54. package/dist/reporters/jsonReporter.js +91 -0
  55. package/dist/reporters/jsonReporter.js.map +1 -0
  56. package/dist/reporters/terminalReporter.d.ts +15 -4
  57. package/dist/reporters/terminalReporter.d.ts.map +1 -1
  58. package/dist/reporters/terminalReporter.js +64 -4
  59. package/dist/reporters/terminalReporter.js.map +1 -1
  60. package/dist/scanner/moduleSpecifiers.d.ts +12 -2
  61. package/dist/scanner/moduleSpecifiers.d.ts.map +1 -1
  62. package/dist/scanner/moduleSpecifiers.js +1154 -183
  63. package/dist/scanner/moduleSpecifiers.js.map +1 -1
  64. package/dist/scanner/packageSpecifier.d.ts +26 -2
  65. package/dist/scanner/packageSpecifier.d.ts.map +1 -1
  66. package/dist/scanner/packageSpecifier.js +70 -2
  67. package/dist/scanner/packageSpecifier.js.map +1 -1
  68. package/dist/scanner/projectManifest.d.ts +28 -3
  69. package/dist/scanner/projectManifest.d.ts.map +1 -1
  70. package/dist/scanner/projectManifest.js +58 -13
  71. package/dist/scanner/projectManifest.js.map +1 -1
  72. package/dist/scanner/scriptUsage.d.ts +15 -1
  73. package/dist/scanner/scriptUsage.d.ts.map +1 -1
  74. package/dist/scanner/scriptUsage.js +284 -69
  75. package/dist/scanner/scriptUsage.js.map +1 -1
  76. package/dist/scanner/sourceFiles.d.ts +21 -2
  77. package/dist/scanner/sourceFiles.d.ts.map +1 -1
  78. package/dist/scanner/sourceFiles.js +19 -6
  79. package/dist/scanner/sourceFiles.js.map +1 -1
  80. package/package.json +4 -2
  81. package/schemas/README.md +47 -0
  82. package/schemas/examples/README.md +27 -0
  83. package/schemas/examples/explain-excluded.json +53 -0
  84. package/schemas/examples/explain-missing.json +65 -0
  85. package/schemas/examples/explain-node-preload.json +70 -0
  86. package/schemas/examples/explain-unknown.json +53 -0
  87. package/schemas/examples/scan-clean.json +40 -0
  88. package/schemas/examples/scan-findings.json +80 -0
  89. package/schemas/report-v1.schema.json +376 -0
@@ -29,6 +29,7 @@
29
29
  * `bin` fields and it is not framework support - any other executable keeps exact-name matching;
30
30
  * - the five documented package-runner forms count (`npx`, `npm exec`, `pnpm exec`, `pnpm dlx`,
31
31
  * `yarn dlx`) with the package in its immediate position;
32
+ * - the supported option prefix of exact `node` commands can credit explicit preload modules;
32
33
  * - leading POSIX environment assignments (`NODE_ENV=test`, `FOO=1 BAR=2`) are skipped;
33
34
  * - quoted tokens keep their content, so separators and text inside quotes are not misread.
34
35
  *
@@ -38,8 +39,10 @@
38
39
  * that is still open at the end of the script. Each such region is consumed as an opaque block, so a
39
40
  * separator inside it never delimits the surrounding script. An invalidated segment yields no
40
41
  * evidence at all, while the neighbouring segments delimited by real supported separators are still
41
- * analyzed normally.
42
+ * analyzed normally. Here-document payloads stay opaque; scanning resumes only after a proven
43
+ * literal closing delimiter. Unknown headers discard the unproven remainder.
42
44
  */
45
+ import { compareEvidence, compareStrings, jsonPointer, } from '../core/evidence.js';
43
46
  import { classifyPackageSpecifier } from './packageSpecifier.js';
44
47
  /**
45
48
  * Package-manager command words that are never evidence that the manager itself is a used dependency.
@@ -347,21 +350,40 @@ const COLLISION_SENSITIVE_BINARIES = new Set([
347
350
  * @param declaredPackageNames - the declared dependency names that may be suppressed as used.
348
351
  */
349
352
  export function findPackageScriptUsage(scripts, declaredPackageNames) {
350
- const used = new Set();
351
- for (const command of Object.values(scripts)) {
352
- for (const candidate of collectScriptCandidates(command, declaredPackageNames)) {
353
- if (declaredPackageNames.has(candidate)) {
354
- used.add(candidate);
353
+ return new Set(collectPackageScriptUsage(scripts, declaredPackageNames).map(({ packageName }) => packageName));
354
+ }
355
+ /**
356
+ * Authoritative script collector. Ordinals enumerate existing candidate events over the entire
357
+ * script, before the declaration gate. Exact key/ordinal pairs already distinguish occurrences;
358
+ * repeated selectors and independent script keys must not be collapsed into one fact.
359
+ */
360
+ export function collectPackageScriptUsage(scripts, declaredPackageNames) {
361
+ const occurrences = [];
362
+ for (const [key, script] of Object.entries(scripts)) {
363
+ const pointer = jsonPointer('scripts', key);
364
+ for (const [occurrence, candidate] of collectScriptCandidates(script, declaredPackageNames).entries()) {
365
+ if (declaredPackageNames.has(candidate.packageName)) {
366
+ occurrences.push({
367
+ packageName: candidate.packageName,
368
+ evidence: {
369
+ kind: 'script',
370
+ file: 'package.json',
371
+ pointer,
372
+ command: candidate.command,
373
+ via: candidate.via,
374
+ occurrence,
375
+ },
376
+ });
355
377
  }
356
378
  }
357
379
  }
358
- return new Set([...used].sort(compareNames));
380
+ return occurrences.sort((a, b) => compareStrings(a.packageName, b.packageName) || compareEvidence(a.evidence, b.evidence));
359
381
  }
360
382
  /**
361
383
  * Collect the package-name candidates referenced by a single script command.
362
384
  *
363
- * Each shell segment contributes at most one candidate: the package supplied to a supported runner
364
- * form, or the segment's first effective command token when that token is exactly a package name.
385
+ * Each shell segment can contribute its ordinary command or runner candidate. An exact Node
386
+ * command can also contribute its accepted preload candidates, after the outer command.
365
387
  * Segments containing unsupported shell syntax contribute nothing.
366
388
  *
367
389
  * `declaredPackageNames` is only used to resolve collision-sensitive executables, which need to know
@@ -374,13 +396,15 @@ function collectScriptCandidates(command, declaredPackageNames) {
374
396
  if (segment.unsupported) {
375
397
  continue;
376
398
  }
377
- const significant = skipLeadingAssignments(segment.tokens);
399
+ // Existing command and runner matching skips empty dequoted words. Node option
400
+ // parsing needs the original words so an empty module operand cannot disappear.
401
+ const significant = skipLeadingAssignments(segment.tokens.filter(({ value }) => value !== ''));
378
402
  if (significant.length === 0) {
379
403
  continue;
380
404
  }
381
405
  const runnerPackage = matchRunnerPackage(significant);
382
406
  if (runnerPackage !== undefined) {
383
- candidates.push(runnerPackage);
407
+ candidates.push({ packageName: runnerPackage, command: runnerPackage, via: 'runner' });
384
408
  continue;
385
409
  }
386
410
  // A package manager invoked without a supported runner form is never evidence that the manager
@@ -403,18 +427,71 @@ function collectScriptCandidates(command, declaredPackageNames) {
403
427
  // the same command never marks two competing providers as used.
404
428
  const mapped = BINARY_TO_PACKAGE.get(commandName);
405
429
  if (mapped === undefined) {
406
- candidates.push(commandName);
430
+ candidates.push({ packageName: commandName, command: commandName, via: 'direct' });
407
431
  }
408
432
  else if (COLLISION_SENSITIVE_BINARIES.has(commandName)) {
409
- candidates.push(declaredPackageNames.has(commandName) ? commandName : mapped);
433
+ const exact = declaredPackageNames.has(commandName);
434
+ candidates.push({
435
+ packageName: exact ? commandName : mapped,
436
+ command: commandName,
437
+ via: exact ? 'direct' : 'mapping',
438
+ });
410
439
  }
411
440
  else {
412
- candidates.push(mapped);
441
+ candidates.push({ packageName: mapped, command: commandName, via: 'mapping' });
442
+ }
443
+ }
444
+ if (commandName === 'node') {
445
+ const node = skipLeadingAssignments(segment.tokens);
446
+ if (node[0]?.value === 'node') {
447
+ for (const preload of collectNodePreloads(node))
448
+ candidates.push(preload);
413
449
  }
414
450
  }
415
451
  }
416
452
  return candidates;
417
453
  }
454
+ /** Stage a Node segment's preloads until its complete supported prefix is known. */
455
+ function collectNodePreloads(tokens) {
456
+ const preloads = [];
457
+ for (let index = 1; index < tokens.length; index += 1) {
458
+ const token = tokens[index];
459
+ const option = token?.value ?? '';
460
+ if (token?.hasNamedExpansion) {
461
+ // A fixed path prefix makes the first shell field a script operand even if its tail expands.
462
+ if (option.startsWith('/') || option.startsWith('./') || option.startsWith('../'))
463
+ break;
464
+ return [];
465
+ }
466
+ // A lone dash is the script operand for stdin.
467
+ if (option === '-' || option === '--' || !option.startsWith('-'))
468
+ break;
469
+ if (option === '--test')
470
+ continue;
471
+ let selector;
472
+ if (option === '-r' || option === '--require' || option === '--import') {
473
+ index += 1;
474
+ const operand = tokens[index];
475
+ selector = operand?.value;
476
+ if (operand?.hasNamedExpansion || selector?.startsWith('-'))
477
+ return [];
478
+ }
479
+ else if (option.startsWith('--require=') || option.startsWith('--import=')) {
480
+ selector = option.slice(option.indexOf('=') + 1);
481
+ }
482
+ if (selector === undefined || selector === '')
483
+ return [];
484
+ const classification = classifyPackageSpecifier(selector);
485
+ if (classification.kind === 'external') {
486
+ preloads.push({
487
+ packageName: classification.packageName,
488
+ command: selector,
489
+ via: 'node-preload',
490
+ });
491
+ }
492
+ }
493
+ return preloads;
494
+ }
418
495
  /**
419
496
  * Drop leading `VAR=value` assignments so the first real command token can be inspected.
420
497
  */
@@ -466,7 +543,8 @@ function matchRunnerPackage(significant) {
466
543
  * (Step 68.1). Unsupported constructs (single `&`, redirection, `$(...)`, `${...}`, quotes left open
467
544
  * at the end of the script) mark the current segment as unsupported instead of guessing tokens from
468
545
  * inside it. The marker is reset by the next real separator, so invalidation stays local to the
469
- * affected segment.
546
+ * affected segment. Here-document payloads are the exception: a literal closing delimiter must be
547
+ * proven before scanning resumes; unknown headers discard the unproven remainder.
470
548
  */
471
549
  function splitSegments(script) {
472
550
  const segments = [];
@@ -502,6 +580,17 @@ function splitSegments(script) {
502
580
  i = skipCommentToEndOfLine(script, i);
503
581
  continue;
504
582
  }
583
+ // A here-document owns its entire payload, including apparent commands and quotes.
584
+ // Only the bounded literal header can establish a trusted resumption point.
585
+ if (ch === '<' && script[i + 1] === '<') {
586
+ const next = unsupported ? undefined : skipHereDocument(script, i);
587
+ unsupported = true;
588
+ if (next === undefined)
589
+ break;
590
+ i = next;
591
+ flush();
592
+ continue;
593
+ }
505
594
  // Supported separators. `&&`/`||` are two-character; `;`, `|` and newline are single-character.
506
595
  if (ch === ';' || ch === '\n') {
507
596
  i += 1;
@@ -533,14 +622,70 @@ function splitSegments(script) {
533
622
  if (scanned.unsupported) {
534
623
  unsupported = true;
535
624
  }
536
- if (scanned.text.length > 0) {
537
- tokens = [...tokens, { value: scanned.text }];
538
- }
625
+ tokens.push({ value: scanned.text, hasNamedExpansion: scanned.hasNamedExpansion });
539
626
  i = scanned.next;
540
627
  }
541
628
  segments.push({ tokens, unsupported });
542
629
  return segments;
543
630
  }
631
+ /** Locate a single literal << / <<- payload without interpreting or expanding any of it. */
632
+ function skipHereDocument(script, start) {
633
+ let i = start + 2;
634
+ const stripTabs = script[i] === '-';
635
+ if (stripTabs)
636
+ i++;
637
+ while (script[i] === ' ' || script[i] === '\t')
638
+ i++;
639
+ const quote = script[i] === "'" || script[i] === '"' ? script[i++] : undefined;
640
+ const delimiterStart = i;
641
+ while (i < script.length && /[A-Za-z0-9_]/.test(script[i] ?? ''))
642
+ i++;
643
+ if (i === delimiterStart)
644
+ return undefined;
645
+ const delimiter = script.slice(delimiterStart, i);
646
+ if (quote !== undefined) {
647
+ if (script[i] !== quote)
648
+ return undefined;
649
+ i++;
650
+ }
651
+ const delimiterEnd = i;
652
+ while (script[i] === ' ' || script[i] === '\t')
653
+ i++;
654
+ // An adjacent # is part of the delimiter word, not a shell comment.
655
+ if (i > delimiterEnd && script[i] === '#')
656
+ i = skipCommentToEndOfLine(script, i);
657
+ if (script[i] === '\r' && script[i + 1] === '\n')
658
+ i++;
659
+ if (script[i] !== '\n')
660
+ return undefined;
661
+ i++;
662
+ while (i < script.length) {
663
+ const newline = script.indexOf('\n', i);
664
+ let end = newline < 0 ? script.length : newline;
665
+ if (newline >= 0 && script[end - 1] === '\r')
666
+ end--;
667
+ if (quote === undefined && newline >= 0) {
668
+ // Unquoted payloads remove an unescaped backslash-newline before delimiter matching.
669
+ // Logical-line reconstruction is outside the resume subset: do not trust the remainder.
670
+ let escapeStart = end;
671
+ while (escapeStart > i && script[escapeStart - 1] === '\\')
672
+ escapeStart--;
673
+ if ((end - escapeStart) % 2 === 1)
674
+ return undefined;
675
+ }
676
+ let content = i;
677
+ if (stripTabs)
678
+ while (script[content] === '\t')
679
+ content++;
680
+ if (script.slice(content, end) === delimiter) {
681
+ return newline < 0 ? script.length : newline + 1;
682
+ }
683
+ if (newline < 0)
684
+ return undefined;
685
+ i = newline + 1;
686
+ }
687
+ return undefined;
688
+ }
544
689
  /**
545
690
  * Skip a POSIX comment that starts at `start`, which must point at a `#`, and return the index just
546
691
  * at the next LF, or the end of the script when none follows.
@@ -569,6 +714,7 @@ function skipCommentToEndOfLine(script, start) {
569
714
  function scanToken(script, start) {
570
715
  let value = '';
571
716
  let unsupported = false;
717
+ let hasNamedExpansion = false;
572
718
  let i = start;
573
719
  while (i < script.length) {
574
720
  const ch = script[i];
@@ -578,6 +724,9 @@ function scanToken(script, start) {
578
724
  if (isWhitespace(ch) || ch === ';' || ch === '\n' || ch === '|' || ch === '&') {
579
725
  break;
580
726
  }
727
+ // Let the outer scanner consume a here-document even when it is attached to a word.
728
+ if (ch === '<' && script[i + 1] === '<')
729
+ break;
581
730
  // Redirection is not parsed in v0.1.0; its presence alone invalidates the segment.
582
731
  if (ch === '<' || ch === '>') {
583
732
  unsupported = true;
@@ -604,19 +753,21 @@ function scanToken(script, start) {
604
753
  const run = scanQuoted(script, i + 1, ch);
605
754
  if (run.open) {
606
755
  // EOF before the quote closes: the segment is invalid and the partial token is dropped.
607
- return { text: '', next: run.next, unsupported: true };
756
+ return { text: '', next: run.next, unsupported: true, hasNamedExpansion };
608
757
  }
609
758
  if (run.expands) {
610
759
  unsupported = true;
611
760
  }
761
+ hasNamedExpansion ||= run.hasNamedExpansion;
612
762
  value += run.text;
613
763
  i = run.next;
614
764
  continue;
615
765
  }
766
+ hasNamedExpansion ||= ch === '$' && startsShellVariableName(script[i + 1]);
616
767
  value += ch;
617
768
  i += 1;
618
769
  }
619
- return { text: value, next: i, unsupported };
770
+ return { text: value, next: i, unsupported, hasNamedExpansion };
620
771
  }
621
772
  /**
622
773
  * Consume a quoted run, keeping its content verbatim.
@@ -631,6 +782,7 @@ function scanQuoted(script, start, quote) {
631
782
  const doubleQuoted = quote === '"';
632
783
  let text = '';
633
784
  let expands = false;
785
+ let hasNamedExpansion = false;
634
786
  let i = start;
635
787
  while (i < script.length) {
636
788
  const ch = script[i];
@@ -638,7 +790,7 @@ function scanQuoted(script, start, quote) {
638
790
  break;
639
791
  }
640
792
  if (ch === quote) {
641
- return { text, next: i + 1, open: false, expands };
793
+ return { text, next: i + 1, open: false, expands, hasNamedExpansion };
642
794
  }
643
795
  if (doubleQuoted && isUnsupportedRegionStart(script, i)) {
644
796
  // Inside double quotes, `$(...)`, `${...}` and backticks are real expansion. The region is
@@ -656,10 +808,14 @@ function scanQuoted(script, start, quote) {
656
808
  i += 2;
657
809
  continue;
658
810
  }
811
+ hasNamedExpansion ||= doubleQuoted && ch === '$' && startsShellVariableName(script[i + 1]);
659
812
  text += ch;
660
813
  i += 1;
661
814
  }
662
- return { text, next: i, open: true, expands };
815
+ return { text, next: i, open: true, expands, hasNamedExpansion };
816
+ }
817
+ function startsShellVariableName(ch) {
818
+ return ch !== undefined && /[A-Za-z_]/.test(ch);
663
819
  }
664
820
  /**
665
821
  * Whether the character right after `$` opens a shell expansion (`$(` or `${`).
@@ -689,6 +845,10 @@ function isUnsupportedRegionStart(script, index) {
689
845
  * cannot close a region either. A single quote is literal text inside a double-quoted run, which is
690
846
  * the one quote form that does not nest.
691
847
  *
848
+ * Inside $(), command-position grouping parentheses own their closers and word-boundary comments
849
+ * stay inert through LF. Literal here-document boundaries are delegated to the same bounded helper.
850
+ * Arithmetic, case patterns, function declarations and unprovable group boundaries retain the remainder.
851
+ *
692
852
  * If EOF is reached first the region is unterminated and `script.length` is returned, leaving the
693
853
  * current outer segment unsupported. This never interprets shell semantics; it only locates opaque
694
854
  * region boundaries safely.
@@ -696,99 +856,154 @@ function isUnsupportedRegionStart(script, index) {
696
856
  function skipUnsupportedRegion(script, start) {
697
857
  const length = script.length;
698
858
  const stack = [];
859
+ const push = (close, group = false) => {
860
+ stack.push({ close, group, wordBoundary: true, commandStart: true });
861
+ };
862
+ const pop = () => {
863
+ const closed = stack.pop();
864
+ const parent = stack.at(-1);
865
+ if (parent !== undefined) {
866
+ parent.wordBoundary = closed?.group === true;
867
+ parent.commandStart = false;
868
+ }
869
+ };
699
870
  const first = script[start];
700
871
  const second = script[start + 1];
701
872
  let i;
702
873
  if (first === '`') {
703
- stack.push('`');
874
+ push('`');
704
875
  i = start + 1;
705
876
  }
706
877
  else if (first === '$' && (second === '(' || second === '{')) {
707
- stack.push(second === '(' ? ')' : '}');
878
+ if (second === '(' && script[start + 2] === '(')
879
+ return length;
880
+ push(second === '(' ? ')' : '}');
708
881
  i = start + 2;
709
882
  }
710
883
  else {
711
- // Not a region opener; advance by one so a caller can never loop forever.
712
884
  return start + 1;
713
885
  }
714
886
  while (i < length && stack.length > 0) {
715
887
  const ch = script[i];
716
- if (ch === undefined) {
717
- break;
718
- }
719
888
  const top = stack.at(-1);
720
- // Inside single quotes everything is literal, so only the closing single quote is special.
721
- if (top === "'") {
722
- if (ch === "'") {
723
- stack.pop();
724
- }
725
- i += 1;
889
+ if (ch === undefined || top === undefined)
890
+ break;
891
+ if (top.close === "'") {
892
+ if (ch === "'")
893
+ pop();
894
+ i++;
726
895
  continue;
727
896
  }
728
- // A backslash consumes the next character in `$()`, `${}`, backticks and double quotes.
729
897
  if (ch === '\\') {
898
+ // A removed line continuation does not begin a new shell word.
899
+ if (script[i + 1] !== '\n') {
900
+ top.wordBoundary = false;
901
+ top.commandStart = false;
902
+ }
730
903
  i += 2;
731
904
  continue;
732
905
  }
733
906
  if (ch === "'" || ch === '"') {
734
- // A single quote is literal text inside a double-quoted run, so it must never open a region of
735
- // its own. Doing so would keep the outer double quote open until EOF and hide the separators
736
- // that follow it.
737
- if (ch === "'" && top === '"') {
738
- i += 1;
907
+ if (ch === "'" && top.close === '"') {
908
+ i++;
739
909
  continue;
740
910
  }
741
- // A double quote closes only the quoted run it opened; any other quote opens a literal run.
742
- if (ch === '"' && top === '"') {
743
- stack.pop();
744
- }
911
+ if (ch === '"' && top.close === '"')
912
+ pop();
745
913
  else {
746
- stack.push(ch);
914
+ top.wordBoundary = false;
915
+ top.commandStart = false;
916
+ push(ch);
747
917
  }
748
- i += 1;
918
+ i++;
749
919
  continue;
750
920
  }
751
921
  const next = script[i + 1];
752
922
  if (ch === '$' && opensExpansion(next)) {
753
- stack.push(next === '(' ? ')' : '}');
923
+ if (next === '(' && script[i + 2] === '(')
924
+ return length;
925
+ top.wordBoundary = false;
926
+ top.commandStart = false;
927
+ push(next === '(' ? ')' : '}');
754
928
  i += 2;
755
929
  continue;
756
930
  }
757
931
  if (ch === '`') {
758
- if (top === '`') {
759
- stack.pop();
760
- }
932
+ if (top.close === '`')
933
+ pop();
761
934
  else {
762
- stack.push('`');
935
+ top.wordBoundary = false;
936
+ top.commandStart = false;
937
+ push('`');
763
938
  }
764
- i += 1;
939
+ i++;
765
940
  continue;
766
941
  }
767
- // `)` and `}` close only a matching region; otherwise they are inert region content.
768
- if ((ch === ')' || ch === '}') && ch === top) {
769
- stack.pop();
942
+ if (top.close === ')') {
943
+ if (ch === '#' && top.wordBoundary) {
944
+ i = skipCommentToEndOfLine(script, i);
945
+ continue;
946
+ }
947
+ // A standalone pipeline negation leaves the following command in command position.
948
+ if (ch === '!' && top.commandStart && isRegionWordBoundary(next)) {
949
+ top.wordBoundary = true;
950
+ i++;
951
+ continue;
952
+ }
953
+ // These reserved words leave the next word in command position.
954
+ if (top.commandStart && top.wordBoundary) {
955
+ const lead = ['if', 'then', 'do', 'else', 'elif', 'while', 'until', 'time', '{'].find((word) => script.startsWith(word, i) && isRegionWordBoundary(script[i + word.length]));
956
+ if (lead !== undefined) {
957
+ i += lead.length;
958
+ top.wordBoundary = true;
959
+ continue;
960
+ }
961
+ }
962
+ // Case patterns and arithmetic/function syntax cannot be balanced as simple groups.
963
+ if (top.commandStart &&
964
+ ['case', 'function'].some((word) => script.startsWith(word, i) && isRegionWordBoundary(script[i + word.length])))
965
+ return length;
966
+ if (ch === '<' && next === '<') {
967
+ const after = skipHereDocument(script, i);
968
+ if (after === undefined)
969
+ return length;
970
+ i = after;
971
+ top.wordBoundary = true;
972
+ top.commandStart = true;
973
+ continue;
974
+ }
975
+ if (ch === '(') {
976
+ if (!top.commandStart || next === '(')
977
+ return length;
978
+ top.wordBoundary = false;
979
+ top.commandStart = false;
980
+ push(')', true);
981
+ i++;
982
+ continue;
983
+ }
984
+ if (isWhitespace(ch) || ch === '\n' || ch === ';' || ch === '|' || ch === '&') {
985
+ top.wordBoundary = true;
986
+ if (ch === '\n' || ch === ';' || ch === '|' || ch === '&')
987
+ top.commandStart = true;
988
+ }
989
+ else {
990
+ top.wordBoundary = ch === '<' || ch === '>';
991
+ top.commandStart = false;
992
+ }
770
993
  }
771
- i += 1;
994
+ if ((ch === ')' || ch === '}') && ch === top.close)
995
+ pop();
996
+ i++;
772
997
  }
773
- // An empty stack means the outermost region closed just before `i`; otherwise EOF arrived first.
774
998
  return stack.length === 0 ? i : length;
775
999
  }
1000
+ function isRegionWordBoundary(ch) {
1001
+ return (ch === undefined || isWhitespace(ch) || ['\n', ';', '|', '&', '(', ')', '<', '>'].includes(ch));
1002
+ }
776
1003
  /**
777
1004
  * Whether a character is whitespace (spaces, tabs, CR, FF, VT).
778
1005
  */
779
1006
  function isWhitespace(ch) {
780
1007
  return ch === ' ' || ch === '\t' || ch === '\r' || ch === '\f' || ch === '\v';
781
1008
  }
782
- /**
783
- * Locale-independent lexicographic ordering, so the same scripts always yield the same order.
784
- */
785
- function compareNames(a, b) {
786
- if (a < b) {
787
- return -1;
788
- }
789
- if (a > b) {
790
- return 1;
791
- }
792
- return 0;
793
- }
794
1009
  //# sourceMappingURL=scriptUsage.js.map
@@ -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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"}