@devflow-tools/plugin-react 0.16.10 → 0.16.11

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=target-resolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-resolver.test.d.ts","sourceRoot":"","sources":["../../../src/analyzers/__tests__/target-resolver.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,173 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
+ import { mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } from 'fs';
3
+ import { tmpdir } from 'os';
4
+ import { join } from 'path';
5
+ import { pathToFileURL } from 'url';
6
+ import { createTargetResolverInventory, resolveAnalyzerTarget, toTargetResolutionMetadata, } from '../target-resolver.js';
7
+ describe('resolveAnalyzerTarget', () => {
8
+ let projectRoot;
9
+ beforeEach(() => {
10
+ projectRoot = mkdtempSync(join(tmpdir(), 'target-resolver-'));
11
+ mkdirSync(join(projectRoot, 'src'), { recursive: true });
12
+ });
13
+ afterEach(() => {
14
+ rmSync(projectRoot, { recursive: true, force: true });
15
+ });
16
+ it('prefers an exact normalized path over an exact basename', () => {
17
+ const requested = write('src/components/video-player/VideoPlayer.tsx', 'export const VideoPlayer = () => null;');
18
+ const duplicate = write('src/legacy/VideoPlayer.tsx', 'export const VideoPlayer = () => null;');
19
+ const result = resolveAnalyzerTarget({ projectRoot, files: [duplicate, requested] }, { filePath: './src/components/video-player/VideoPlayer.tsx', componentName: 'videoPlayer' });
20
+ expect(result.status).toBe('resolved');
21
+ expect(result.rank).toBe('exact_path');
22
+ expect(result.status === 'resolved' && result.files).toEqual([requested]);
23
+ });
24
+ it('preserves an exact file URI as an exact path', () => {
25
+ const requested = write('src/components/Video Player.tsx', 'export const VideoPlayer = () => null;');
26
+ const result = resolveAnalyzerTarget({ projectRoot, files: [] }, { filePath: pathToFileURL(requested).href });
27
+ expect(result.status).toBe('resolved');
28
+ expect(result.rank).toBe('exact_path');
29
+ expect(result.status === 'resolved' && result.files).toEqual([requested]);
30
+ });
31
+ it('rejects files in a sibling directory whose path shares the project prefix', () => {
32
+ const siblingRoot = `${projectRoot}-sibling`;
33
+ mkdirSync(siblingRoot, { recursive: true });
34
+ const sibling = join(siblingRoot, 'VideoPlayer.tsx');
35
+ writeFileSync(sibling, 'export const VideoPlayer = () => null;');
36
+ const entry = write('src/components/video-player/index.tsx', 'export default () => null;');
37
+ try {
38
+ const result = resolveAnalyzerTarget({ projectRoot, files: [sibling, entry] }, { componentName: 'video-player' });
39
+ expect(result.status).toBe('resolved');
40
+ expect(result.rank).toBe('directory_entry');
41
+ expect(result.status === 'resolved' && result.files).toEqual([entry]);
42
+ }
43
+ finally {
44
+ rmSync(siblingRoot, { recursive: true, force: true });
45
+ }
46
+ });
47
+ it('normalizes kebab, camel, and Pascal names for exact basenames', () => {
48
+ const target = write('src/components/video-player/VideoPlayer.tsx', 'export const VideoPlayer = () => null;');
49
+ for (const componentName of ['video-player', 'videoPlayer', 'VideoPlayer']) {
50
+ const result = resolveAnalyzerTarget({ projectRoot, files: [target] }, { componentName });
51
+ expect(result.status).toBe('resolved');
52
+ expect(result.rank).toBe('exact_basename');
53
+ expect(result.status === 'resolved' && result.files).toEqual([target]);
54
+ }
55
+ });
56
+ it('scans disk before fuzzy content when the initial context is truncated', () => {
57
+ const usage = write('src/NavMenu.tsx', `
58
+ export function NavMenu() {
59
+ return <a href="/video-player">Video</a>;
60
+ }
61
+ `);
62
+ const target = write('src/components/video-player/VideoPlayer.tsx', `
63
+ export const VideoPlayer = () => <video />;
64
+ `);
65
+ const result = resolveAnalyzerTarget({ projectRoot, files: [usage], truncated: true }, { componentName: 'video-player' });
66
+ expect(result.status).toBe('resolved');
67
+ expect(result.rank).toBe('exact_basename');
68
+ expect(result.status === 'resolved' && result.files).toEqual([target]);
69
+ expect(result.scannedDisk).toBe(true);
70
+ expect(result.initialContextTruncated).toBe(true);
71
+ });
72
+ it('checks disk for a higher rank even when partial context has a symbol match', () => {
73
+ const partialMatch = write('src/PlayerShell.tsx', 'export function VideoPlayer() { return null; }');
74
+ const target = write('src/components/VideoPlayer.tsx', 'export const Player = () => null;');
75
+ const result = resolveAnalyzerTarget({ projectRoot, files: [partialMatch] }, { componentName: 'video-player' });
76
+ expect(result.status).toBe('resolved');
77
+ expect(result.rank).toBe('exact_basename');
78
+ expect(result.status === 'resolved' && result.files).toEqual([target]);
79
+ expect(result.scannedDisk).toBe(true);
80
+ });
81
+ it('prefers an exported component over a directory entry and fuzzy usage', () => {
82
+ const exported = write('src/PlayerShell.tsx', 'export function VideoPlayer() { return null; }');
83
+ write('src/components/video-player/index.tsx', 'export default () => null;');
84
+ write('src/NavMenu.tsx', 'export const route = "/video-player";');
85
+ const result = resolveAnalyzerTarget({ projectRoot, files: [], truncated: true }, { componentName: 'video-player' });
86
+ expect(result.status).toBe('resolved');
87
+ expect(result.rank).toBe('exported_symbol');
88
+ expect(result.status === 'resolved' && result.files).toEqual([exported]);
89
+ });
90
+ it('does not rank an unexported PascalCase declaration as an exported symbol', () => {
91
+ write('src/PlayerShell.tsx', 'function VideoPlayer() { return null; }');
92
+ const entry = write('src/components/video-player/index.tsx', 'export default () => null;');
93
+ const result = resolveAnalyzerTarget({ projectRoot, files: [], truncated: true }, { componentName: 'video-player' });
94
+ expect(result.status).toBe('resolved');
95
+ expect(result.rank).toBe('directory_entry');
96
+ expect(result.status === 'resolved' && result.files).toEqual([entry]);
97
+ });
98
+ it('resolves a matching directory entry when no higher rank exists', () => {
99
+ const entry = write('src/components/video-player/index.tsx', 'export default () => null;');
100
+ const result = resolveAnalyzerTarget({ projectRoot, files: [entry] }, { filePath: 'src/components/video-player', componentName: 'video-player' });
101
+ expect(result.status).toBe('resolved');
102
+ expect(result.rank).toBe('directory_entry');
103
+ expect(result.status === 'resolved' && result.files).toEqual([entry]);
104
+ });
105
+ it('uses fuzzy content only when it is the unique best-rank candidate', () => {
106
+ const fuzzy = write('src/routes.ts', 'export const route = "/video-player";');
107
+ const result = resolveAnalyzerTarget({ projectRoot, files: [fuzzy] }, { componentName: 'video-player' });
108
+ expect(result.status).toBe('resolved');
109
+ expect(result.rank).toBe('fuzzy_content');
110
+ expect(result.status === 'resolved' && result.files).toEqual([fuzzy]);
111
+ });
112
+ it('returns ambiguity instead of selecting the first best-rank candidate', () => {
113
+ const first = write('src/admin/VideoPlayer.tsx', 'export const VideoPlayer = () => null;');
114
+ const second = write('src/watch/VideoPlayer.tsx', 'export const VideoPlayer = () => null;');
115
+ const result = resolveAnalyzerTarget({ projectRoot, files: [second, first] }, { componentName: 'video-player' });
116
+ expect(result.status).toBe('ambiguous');
117
+ expect(result.rank).toBe('exact_basename');
118
+ expect(result.candidates.map(candidate => candidate.path)).toEqual([
119
+ 'src/admin/VideoPlayer.tsx',
120
+ 'src/watch/VideoPlayer.tsx',
121
+ ]);
122
+ expect('files' in result).toBe(false);
123
+ expect(toTargetResolutionMetadata(result).files).toEqual([]);
124
+ });
125
+ it('scans beyond the former depth limit before declaring a basename unique', () => {
126
+ const shallow = write('src/VideoPlayer.tsx', 'export const VideoPlayer = () => null;');
127
+ let deepDirectory = 'src';
128
+ for (let depth = 0; depth < 22; depth++)
129
+ deepDirectory = join(deepDirectory, `level-${depth}`);
130
+ const deep = write(`${deepDirectory}/VideoPlayer.tsx`, 'export const VideoPlayer = () => null;');
131
+ const result = resolveAnalyzerTarget({ projectRoot, files: [shallow] }, { componentName: 'video-player' });
132
+ expect(result.status).toBe('ambiguous');
133
+ expect(result.rank).toBe('exact_basename');
134
+ expect(new Set(result.candidates.map(candidate => candidate.file))).toEqual(new Set([shallow, deep]));
135
+ });
136
+ it('does not follow directory symlinks while scanning the project', () => {
137
+ const outsideRoot = mkdtempSync(join(tmpdir(), 'target-resolver-outside-'));
138
+ writeFileSync(join(outsideRoot, 'VideoPlayer.tsx'), 'export const VideoPlayer = () => null;');
139
+ symlinkSync(outsideRoot, join(projectRoot, 'src', 'linked'), 'dir');
140
+ const entry = write('src/components/video-player/index.tsx', 'export default () => null;');
141
+ try {
142
+ const result = resolveAnalyzerTarget({ projectRoot, files: [], truncated: true }, { componentName: 'video-player' });
143
+ expect(result.status).toBe('resolved');
144
+ expect(result.rank).toBe('directory_entry');
145
+ expect(result.status === 'resolved' && result.files).toEqual([entry]);
146
+ }
147
+ finally {
148
+ rmSync(outsideRoot, { recursive: true, force: true });
149
+ }
150
+ });
151
+ it('reuses cached exports across resolutions from one inventory snapshot', () => {
152
+ const target = write('src/PlayerShell.tsx', `
153
+ export function AlphaPlayer() { return null; }
154
+ export function BetaPlayer() { return null; }
155
+ `);
156
+ const inventory = createTargetResolverInventory({ projectRoot, files: [], truncated: true });
157
+ const first = inventory.resolve({ componentName: 'alpha-player' });
158
+ rmSync(target);
159
+ const second = inventory.resolve({ componentName: 'beta-player' });
160
+ expect(first.status).toBe('resolved');
161
+ expect(first.rank).toBe('exported_symbol');
162
+ expect(second.status).toBe('resolved');
163
+ expect(second.rank).toBe('exported_symbol');
164
+ expect(second.status === 'resolved' && second.files).toEqual([target]);
165
+ });
166
+ function write(relativePath, content) {
167
+ const file = join(projectRoot, relativePath);
168
+ mkdirSync(join(file, '..'), { recursive: true });
169
+ writeFileSync(file, content);
170
+ return file;
171
+ }
172
+ });
173
+ //# sourceMappingURL=target-resolver.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-resolver.test.js","sourceRoot":"","sources":["../../../src/analyzers/__tests__/target-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose-bug.d.ts","sourceRoot":"","sources":["../../src/analyzers/diagnose-bug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA+GhE"}
1
+ {"version":3,"file":"diagnose-bug.d.ts","sourceRoot":"","sources":["../../src/analyzers/diagnose-bug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAYjD,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAkIhE"}
@@ -1,24 +1,36 @@
1
1
  import { readFileContent, getRelativePath } from './file-scanner.js';
2
+ import { createTargetResolverInventory, normalizeTargetPath, toTargetResolutionMetadata, } from './target-resolver.js';
2
3
  import { execSync } from 'child_process';
4
+ import { existsSync } from 'fs';
5
+ import { resolve } from 'path';
3
6
  export function diagnoseBug(input) {
4
7
  const { projectRoot, errorMessage, stackTrace } = input;
5
8
  const rootCauses = [];
6
9
  // Priority 1: Narrow to stack trace files (most precise)
7
10
  let relevantFiles = [];
8
11
  const traceFiles = stackTrace ? extractProjectFilesFromStack(stackTrace, projectRoot) : [];
12
+ let targetAttempts = [];
13
+ const targetInventory = createTargetResolverInventory({
14
+ projectRoot,
15
+ files: traceFiles.slice(0, 10),
16
+ truncated: traceFiles.length === 0,
17
+ });
9
18
  if (traceFiles.length > 0) {
10
- relevantFiles = traceFiles.slice(0, 10);
19
+ targetAttempts = traceFiles.slice(0, 10).map(filePath => targetInventory.resolve({ filePath }));
20
+ relevantFiles = resolvedFiles(targetAttempts);
11
21
  }
12
22
  else if (errorMessage) {
13
23
  // Priority 2: Extract keywords from error message to narrow scan
14
24
  const keywords = extractKeywords(errorMessage);
15
25
  if (keywords.length > 0) {
16
- relevantFiles = scanWithKeywordFilter(projectRoot, keywords);
26
+ targetAttempts = keywords.map(componentName => targetInventory.resolve({ componentName }));
27
+ relevantFiles = resolvedFiles(targetAttempts);
17
28
  }
18
29
  }
19
- // Priority 3: Full scan but limited
30
+ const targetResolution = summarizeTargetResolution(targetAttempts);
31
+ // Priority 3: Analyze a bounded subset from the resolver's exhaustive inventory.
20
32
  if (relevantFiles.length === 0) {
21
- relevantFiles = scanProjectLimited(projectRoot);
33
+ relevantFiles = targetInventory.getProjectFiles().slice(0, 200);
22
34
  }
23
35
  // Detect error type for focused analysis
24
36
  const isNullAccess = /Cannot read propert.*null|Cannot read propert.*undefined/.test(errorMessage);
@@ -83,7 +95,14 @@ export function diagnoseBug(input) {
83
95
  return {
84
96
  success: true,
85
97
  summary: buildDiagnosisSummary(errorMessage, uniqueCauses, relevantFiles, confidenceLevel),
86
- data: { rootCauses: uniqueCauses, recentChanges, relevantFile, relevantLine, confidenceLevel },
98
+ data: {
99
+ rootCauses: uniqueCauses,
100
+ recentChanges,
101
+ relevantFile,
102
+ relevantLine,
103
+ confidenceLevel,
104
+ targetResolution,
105
+ },
87
106
  findings: uniqueCauses.map(rc => ({
88
107
  severity: rc.probability === 'high' ? 'critical' : 'warning',
89
108
  category: 'bug-root-cause',
@@ -98,26 +117,19 @@ export function diagnoseBug(input) {
98
117
  function extractProjectFilesFromStack(stackTrace, root) {
99
118
  const lines = stackTrace.split('\n');
100
119
  const files = [];
101
- const filePattern = /\(?([^\s(:]+\.(?:tsx?|jsx?)):\d+:\d*\)?/g;
120
+ const filePattern = /\(?((?:file:|webpack:)?[^\s(]+?\.(?:tsx?|jsx?)):\d+:\d*\)?/g;
102
121
  for (const line of lines) {
103
122
  let match;
104
123
  while ((match = filePattern.exec(line)) !== null) {
105
- let filePath = match[1].trim();
106
- filePath = filePath.replace(/^(webpack:\/\/|file:\/\/)/, '');
107
- if (filePath.startsWith(root)) {
108
- filePath = filePath.replace(root, '').replace(/^\//, '');
109
- }
110
- if (!filePath.includes('node_modules')) {
111
- files.push(filePath);
112
- }
124
+ const normalizedPath = normalizeTargetPath(match[1], root);
125
+ if (normalizedPath && !normalizedPath.includes('node_modules'))
126
+ files.push(normalizedPath);
113
127
  }
114
128
  }
115
129
  // Resolve relative paths to absolute and verify they exist
116
- const { existsSync } = require('fs');
117
- const { join } = require('path');
118
130
  return [...new Set(files)]
119
131
  .map((f) => {
120
- const full = join(root, f);
132
+ const full = resolve(root, f);
121
133
  return existsSync(full) ? full : null;
122
134
  })
123
135
  .filter(Boolean);
@@ -130,67 +142,24 @@ function extractKeywords(message) {
130
142
  ]);
131
143
  return pascalWords.filter((w) => !commonWords.has(w)).slice(0, 5);
132
144
  }
133
- function scanWithKeywordFilter(root, keywords) {
134
- const files = scanProjectLimited(root);
135
- if (keywords.length === 0)
136
- return files;
137
- const scored = files
138
- .map((file) => {
139
- const rel = getRelativePath(root, file).toLowerCase();
140
- const score = keywords.reduce((s, kw) => s + (rel.includes(kw.toLowerCase()) ? 1 : 0), 0);
141
- return { file, score };
142
- })
143
- .filter((item) => item.score > 0)
144
- .sort((a, b) => b.score - a.score || a.file.localeCompare(b.file))
145
- .map((item) => item.file);
146
- return scored.slice(0, 20);
145
+ function resolvedFiles(resolutions) {
146
+ return [...new Set(resolutions.flatMap(resolution => resolution.status === 'resolved' ? resolution.files : []))];
147
147
  }
148
- function scanProjectLimited(root) {
149
- const { readdirSync, statSync } = require('fs');
150
- const { join, extname } = require('path');
151
- const IGNORE = ['node_modules', 'dist', 'build', '.git', '.next', 'coverage',
152
- '.claude', '.devflow', '.turbo', '.cache'];
153
- const EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js'];
154
- const MAX_FILES = 200;
155
- const MAX_DEPTH = 12;
156
- const EXCLUDE_PATTERNS = [/[\\/]__tests__[\\/]/, /\.test\.\w+$/, /\.spec\.\w+$/, /\.config\.\w+$/, /\.d\.ts$/];
157
- const files = [];
158
- const extSet = new Set(EXTENSIONS);
159
- function walk(dir, depth) {
160
- if (depth > MAX_DEPTH || files.length >= MAX_FILES)
161
- return;
162
- let entries;
163
- try {
164
- entries = readdirSync(dir);
165
- }
166
- catch {
167
- return;
168
- }
169
- for (const entry of entries) {
170
- if (files.length >= MAX_FILES)
171
- return;
172
- if (IGNORE.includes(entry))
173
- continue;
174
- const fullPath = join(dir, entry);
175
- let stat;
176
- try {
177
- stat = statSync(fullPath);
178
- }
179
- catch {
180
- continue;
181
- }
182
- if (stat.isDirectory()) {
183
- walk(fullPath, depth + 1);
184
- }
185
- else if (extSet.has(extname(entry))) {
186
- if (!EXCLUDE_PATTERNS.some((p) => p.test(fullPath))) {
187
- files.push(fullPath);
188
- }
189
- }
190
- }
191
- }
192
- walk(root, 0);
193
- return files.slice(0, MAX_FILES);
148
+ function summarizeTargetResolution(resolutions) {
149
+ const attempts = resolutions.map(toTargetResolutionMetadata);
150
+ const resolved = attempts.filter(attempt => attempt.status === 'resolved');
151
+ const ambiguous = attempts.filter(attempt => attempt.status === 'ambiguous');
152
+ const representative = resolved[0] ?? ambiguous[0] ?? attempts[0];
153
+ return {
154
+ status: resolved.length > 0 ? 'resolved' : ambiguous.length > 0 ? 'ambiguous' : 'not_found',
155
+ rank: representative?.rank ?? null,
156
+ requested: representative?.requested ?? {},
157
+ files: [...new Set(resolved.flatMap(attempt => attempt.files))],
158
+ candidates: attempts.flatMap(attempt => attempt.candidates),
159
+ scannedDisk: attempts.some(attempt => attempt.scannedDisk),
160
+ initialContextTruncated: attempts.some(attempt => attempt.initialContextTruncated),
161
+ attempts,
162
+ };
194
163
  }
195
164
  function deduplicateRootCauses(causes) {
196
165
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose-bug.js","sourceRoot":"","sources":["../../src/analyzers/diagnose-bug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnose-bug.js","sourceRoot":"","sources":["../../src/analyzers/diagnose-bug.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { AnalyzerContext } from './types.js';
2
+ import { type TargetResolutionMetadata } from './target-resolver.js';
2
3
  export declare function readGitignore(root: string): string[];
3
4
  export declare function filterContextFiles(files: string[], root: string): string[];
4
5
  export declare function scanFiles(root: string, options?: {
@@ -17,4 +18,14 @@ export declare function selectAnalyzerFiles(ctx: AnalyzerContext, options: {
17
18
  scope: 'target' | 'related' | 'project';
18
19
  matchComponent?: (file: string, componentName: string) => boolean;
19
20
  }): string[];
21
+ export interface AnalyzerFileSelection {
22
+ files: string[];
23
+ targetResolution: TargetResolutionMetadata;
24
+ }
25
+ export declare function selectAnalyzerFilesWithResolution(ctx: AnalyzerContext, options: {
26
+ filePath?: string;
27
+ componentName?: string;
28
+ scope: 'target' | 'related' | 'project';
29
+ matchComponent?: (file: string, componentName: string) => boolean;
30
+ }): AnalyzerFileSelection;
20
31
  //# sourceMappingURL=file-scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/analyzers/file-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBpD;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1E;AAaD,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,eAAe,CA6CjB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;CACnE,GACA,MAAM,EAAE,CA+DV"}
1
+ {"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/analyzers/file-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAM9B,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBpD;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1E;AAaD,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,eAAe,CA6CjB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;CACnE,GACA,MAAM,EAAE,CAEV;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,EAAE,wBAAwB,CAAC;CAC5C;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;CACnE,GACA,qBAAqB,CAsCvB"}