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.
- package/README.md +95 -30
- package/dist/cli/entry.js +8 -21
- package/dist/cli/entry.js.map +1 -1
- package/dist/cli/parseCliArgs.d.ts +5 -2
- package/dist/cli/parseCliArgs.d.ts.map +1 -1
- package/dist/cli/parseCliArgs.js +51 -36
- package/dist/cli/parseCliArgs.js.map +1 -1
- package/dist/cli/runCli.d.ts +4 -5
- package/dist/cli/runCli.d.ts.map +1 -1
- package/dist/cli/runCli.js +41 -46
- package/dist/cli/runCli.js.map +1 -1
- package/dist/config/ignoreDependencies.d.ts +9 -0
- package/dist/config/ignoreDependencies.d.ts.map +1 -0
- package/dist/config/ignoreDependencies.js +22 -0
- package/dist/config/ignoreDependencies.js.map +1 -0
- package/dist/config/ignorePaths.d.ts +13 -0
- package/dist/config/ignorePaths.d.ts.map +1 -0
- package/dist/config/ignorePaths.js +47 -0
- package/dist/config/ignorePaths.js.map +1 -0
- package/dist/config/projectConfigError.d.ts +7 -0
- package/dist/config/projectConfigError.d.ts.map +1 -0
- package/dist/config/projectConfigError.js +10 -0
- package/dist/config/projectConfigError.js.map +1 -0
- package/dist/config/readProjectConfig.d.ts +28 -0
- package/dist/config/readProjectConfig.d.ts.map +1 -0
- package/dist/config/readProjectConfig.js +120 -0
- package/dist/config/readProjectConfig.js.map +1 -0
- package/dist/core/analyzeProject.d.ts +40 -1
- package/dist/core/analyzeProject.d.ts.map +1 -1
- package/dist/core/analyzeProject.js +189 -45
- package/dist/core/analyzeProject.js.map +1 -1
- package/dist/core/evidence.d.ts +67 -0
- package/dist/core/evidence.d.ts.map +1 -0
- package/dist/core/evidence.js +115 -0
- package/dist/core/evidence.js.map +1 -0
- package/dist/core/scanContext.d.ts +20 -0
- package/dist/core/scanContext.d.ts.map +1 -0
- package/dist/core/scanContext.js +43 -0
- package/dist/core/scanContext.js.map +1 -0
- package/dist/detectors/eslintManifestConfig.d.ts +18 -0
- package/dist/detectors/eslintManifestConfig.d.ts.map +1 -1
- package/dist/detectors/eslintManifestConfig.js +62 -80
- package/dist/detectors/eslintManifestConfig.js.map +1 -1
- package/dist/detectors/eslintRcJsonConfig.d.ts +8 -2
- package/dist/detectors/eslintRcJsonConfig.d.ts.map +1 -1
- package/dist/detectors/eslintRcJsonConfig.js +27 -12
- package/dist/detectors/eslintRcJsonConfig.js.map +1 -1
- package/dist/detectors/jestManifestConfig.d.ts +15 -3
- package/dist/detectors/jestManifestConfig.d.ts.map +1 -1
- package/dist/detectors/jestManifestConfig.js +63 -83
- package/dist/detectors/jestManifestConfig.js.map +1 -1
- package/dist/reporters/jsonReporter.d.ts +39 -0
- package/dist/reporters/jsonReporter.d.ts.map +1 -0
- package/dist/reporters/jsonReporter.js +91 -0
- package/dist/reporters/jsonReporter.js.map +1 -0
- package/dist/reporters/terminalReporter.d.ts +15 -4
- package/dist/reporters/terminalReporter.d.ts.map +1 -1
- package/dist/reporters/terminalReporter.js +64 -4
- package/dist/reporters/terminalReporter.js.map +1 -1
- package/dist/scanner/moduleSpecifiers.d.ts +12 -2
- package/dist/scanner/moduleSpecifiers.d.ts.map +1 -1
- package/dist/scanner/moduleSpecifiers.js +1154 -183
- package/dist/scanner/moduleSpecifiers.js.map +1 -1
- package/dist/scanner/packageSpecifier.d.ts +26 -2
- package/dist/scanner/packageSpecifier.d.ts.map +1 -1
- package/dist/scanner/packageSpecifier.js +70 -2
- package/dist/scanner/packageSpecifier.js.map +1 -1
- package/dist/scanner/projectManifest.d.ts +28 -3
- package/dist/scanner/projectManifest.d.ts.map +1 -1
- package/dist/scanner/projectManifest.js +58 -13
- package/dist/scanner/projectManifest.js.map +1 -1
- package/dist/scanner/scriptUsage.d.ts +15 -1
- package/dist/scanner/scriptUsage.d.ts.map +1 -1
- package/dist/scanner/scriptUsage.js +284 -69
- package/dist/scanner/scriptUsage.js.map +1 -1
- package/dist/scanner/sourceFiles.d.ts +21 -2
- package/dist/scanner/sourceFiles.d.ts.map +1 -1
- package/dist/scanner/sourceFiles.js +19 -6
- package/dist/scanner/sourceFiles.js.map +1 -1
- package/package.json +4 -2
- package/schemas/README.md +47 -0
- package/schemas/examples/README.md +27 -0
- package/schemas/examples/explain-excluded.json +53 -0
- package/schemas/examples/explain-missing.json +65 -0
- package/schemas/examples/explain-node-preload.json +70 -0
- package/schemas/examples/explain-unknown.json +53 -0
- package/schemas/examples/scan-clean.json +40 -0
- package/schemas/examples/scan-findings.json +80 -0
- 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
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|
|
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
|
|
364
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
874
|
+
push('`');
|
|
704
875
|
i = start + 1;
|
|
705
876
|
}
|
|
706
877
|
else if (first === '$' && (second === '(' || second === '{')) {
|
|
707
|
-
|
|
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
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
i
|
|
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
|
-
|
|
735
|
-
|
|
736
|
-
// that follow it.
|
|
737
|
-
if (ch === "'" && top === '"') {
|
|
738
|
-
i += 1;
|
|
907
|
+
if (ch === "'" && top.close === '"') {
|
|
908
|
+
i++;
|
|
739
909
|
continue;
|
|
740
910
|
}
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
stack.pop();
|
|
744
|
-
}
|
|
911
|
+
if (ch === '"' && top.close === '"')
|
|
912
|
+
pop();
|
|
745
913
|
else {
|
|
746
|
-
|
|
914
|
+
top.wordBoundary = false;
|
|
915
|
+
top.commandStart = false;
|
|
916
|
+
push(ch);
|
|
747
917
|
}
|
|
748
|
-
i
|
|
918
|
+
i++;
|
|
749
919
|
continue;
|
|
750
920
|
}
|
|
751
921
|
const next = script[i + 1];
|
|
752
922
|
if (ch === '$' && opensExpansion(next)) {
|
|
753
|
-
|
|
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
|
-
|
|
760
|
-
}
|
|
932
|
+
if (top.close === '`')
|
|
933
|
+
pop();
|
|
761
934
|
else {
|
|
762
|
-
|
|
935
|
+
top.wordBoundary = false;
|
|
936
|
+
top.commandStart = false;
|
|
937
|
+
push('`');
|
|
763
938
|
}
|
|
764
|
-
i
|
|
939
|
+
i++;
|
|
765
940
|
continue;
|
|
766
941
|
}
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAsBjE;;;;;;GAMG;AACH,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE9F;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKG;AACH,MAAM,iBAAiB,GAAgC,IAAI,GAAG,CAAC;IAC7D,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,IAAI,EAAE,cAAc,CAAC;IACtB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,KAAK,EAAE,UAAU,CAAC;IACnB,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAChC,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACjC,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IAC3C,CAAC,SAAS,EAAE,sBAAsB,CAAC;IACnC,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;IAClD,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;IAChE,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,KAAK,EAAE,mBAAmB,CAAC;IAC5B,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,WAAW,EAAE,eAAe,CAAC;IAC9B,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IACvC,CAAC,YAAY,EAAE,aAAa,CAAC;IAC7B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,aAAa,EAAE,SAAS,CAAC;IAC1B,CAAC,aAAa,EAAE,SAAS,CAAC;IAC1B,CAAC,gBAAgB,EAAE,SAAS,CAAC;IAC7B,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACrC,CAAC,KAAK,EAAE,uBAAuB,CAAC;IAChC,CAAC,UAAU,EAAE,uBAAuB,CAAC;IACrC,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,cAAc,EAAE,kBAAkB,CAAC;IACpC,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,WAAW,EAAE,oBAAoB,CAAC;IACnC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC5C,CAAC,eAAe,EAAE,oBAAoB,CAAC;IACvC,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,cAAc,EAAE,aAAa,CAAC;IAC/B,CAAC,eAAe,EAAE,aAAa,CAAC;IAChC,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,YAAY,EAAE,SAAS,CAAC;IACzB,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACzB,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAC5B,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,KAAK,EAAE,UAAU,CAAC;IACnB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACzC,CAAC,KAAK,EAAE,SAAS,CAAC;IAClB,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,KAAK,EAAE,SAAS,CAAC;IAClB,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,IAAI,EAAE,YAAY,CAAC;IACpB,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,SAAS,EAAE,kBAAkB,CAAC;CAChC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,4BAA4B,GAAwB,IAAI,GAAG,CAAC;IAChE,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,WAAW;IACX,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,wBAAwB;IACxB,KAAK;IACL,OAAO;IACP,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,iBAAiB;IACjB,OAAO;IACP,QAAQ;IACR,MAAM;IACN,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,KAAK;IACL,WAAW;IACX,OAAO;IACP,OAAO;IACP,gBAAgB;IAChB,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAyC,EACzC,oBAAyC;IAEzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAC/E,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,uBAAuB,CAC9B,OAAe,EACf,oBAAyC;IAEzC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,mFAAmF;QACnF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,+FAA+F;QAC/F,+BAA+B;QAC/B,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAC1C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,IAAI,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,gGAAgG;QAChG,uFAAuF;QACvF,wFAAwF;QACxF,MAAM,cAAc,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,IAAI,WAAW,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC;YACrF,+FAA+F;YAC/F,oFAAoF;YACpF,8FAA8F;YAC9F,gEAAgE;YAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,4BAA4B,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,OAAyB;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM;QACR,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,WAA6B;IACvD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAEtC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACzC,OAAO,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAqB,EAAE,CAAC;IAClC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,+EAA+E;IAC/E,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvC,MAAM,GAAG,EAAE,CAAC;QACZ,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM;QACR,CAAC;QAED,gDAAgD;QAChD,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YACrB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,8FAA8F;QAC9F,kGAAkG;QAClG,mGAAmG;QACnG,+FAA+F;QAC/F,kGAAkG;QAClG,gGAAgG;QAChG,kGAAkG;QAClG,gGAAgG;QAChG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QAED,gGAAgG;QAChG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC9B,CAAC,IAAI,CAAC,CAAC;YACP,KAAK,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QAED,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,KAAK,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QAED,iGAAiG;QACjG,gGAAgG;QAChG,oEAAoE;QACpE,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC1B,CAAC,IAAI,CAAC,CAAC;gBACP,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,CAAC,IAAI,CAAC,CAAC;gBACP,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,SAAS;QACX,CAAC;QAED,iGAAiG;QACjG,kEAAkE;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAAC,MAAc,EAAE,KAAa;IAC3D,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,OAAO,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAWD;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa;IAC9C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,GAAG,KAAK,CAAC;IAEd,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM;QACR,CAAC;QAED,IAAI,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC9E,MAAM;QACR,CAAC;QAED,mFAAmF;QACnF,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,WAAW,GAAG,IAAI,CAAC;YACnB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,0FAA0F;QAC1F,+FAA+F;QAC/F,qEAAqE;QACrE,IAAI,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;YACxC,WAAW,GAAG,IAAI,CAAC;YACnB,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QAED,iGAAiG;QACjG,2FAA2F;QAC3F,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,WAAW,GAAG,IAAI,CAAC;YACnB,KAAK,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,wFAAwF;gBACxF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACzD,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;YAClB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,KAAK,IAAI,EAAE,CAAC;QACZ,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC;AAeD;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,KAAa;IAC9D,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,CAAC;IACnC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,GAAG,KAAK,CAAC;IAEd,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM;QACR,CAAC;QAED,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,YAAY,IAAI,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;YACxD,2FAA2F;YAC3F,+FAA+F;YAC/F,kDAAkD;YAClD,OAAO,GAAG,IAAI,CAAC;YACf,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QAED,gGAAgG;QAChG,mFAAmF;QACnF,IAAI,YAAY,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;QACX,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAwB;IAC9C,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,MAAc,EAAE,KAAa;IAC7D,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAQD;;;;;;;;;;;;;;;GAeG;AACH,SAAS,qBAAqB,CAAC,MAAc,EAAE,KAAa;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,CAAS,CAAC;IACd,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAChB,CAAC;SAAM,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,0EAA0E;QAC1E,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzB,2FAA2F;QAC3F,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,wFAAwF;QACxF,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,+FAA+F;YAC/F,6FAA6F;YAC7F,kBAAkB;YAClB,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC9B,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,4FAA4F;YAC5F,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC9B,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAChB,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,qFAAqF;QACrF,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7C,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IAED,iGAAiG;IACjG,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"scriptUsage.js","sourceRoot":"","sources":["../../src/scanner/scriptUsage.ts"],"names":[],"mappings":"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"}
|