@devflow-tools/plugin-react 0.16.9 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"refactor-component.js","sourceRoot":"","sources":["../../src/analyzers/refactor-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refactor-component.js","sourceRoot":"","sources":["../../src/analyzers/refactor-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { AnalyzerContext } from './types.js';
2
+ export type TargetResolutionRank = 'exact_path' | 'exact_basename' | 'exported_symbol' | 'directory_entry' | 'fuzzy_content';
3
+ export interface TargetResolutionCandidate {
4
+ file: string;
5
+ path: string;
6
+ rank: TargetResolutionRank;
7
+ rankOrder: number;
8
+ evidence: string[];
9
+ }
10
+ interface TargetResolutionBase {
11
+ requested: {
12
+ filePath?: string;
13
+ componentName?: string;
14
+ };
15
+ candidates: TargetResolutionCandidate[];
16
+ scannedDisk: boolean;
17
+ initialContextTruncated: boolean;
18
+ }
19
+ export type TargetResolution = (TargetResolutionBase & {
20
+ status: 'resolved';
21
+ rank: TargetResolutionRank;
22
+ files: string[];
23
+ }) | (TargetResolutionBase & {
24
+ status: 'ambiguous';
25
+ rank: TargetResolutionRank;
26
+ }) | (TargetResolutionBase & {
27
+ status: 'not_found';
28
+ rank: null;
29
+ });
30
+ export interface TargetResolutionMetadata {
31
+ status: TargetResolution['status'];
32
+ rank: TargetResolutionRank | null;
33
+ requested: TargetResolutionBase['requested'];
34
+ files: string[];
35
+ candidates: Array<{
36
+ path: string;
37
+ rank: TargetResolutionRank;
38
+ evidence: string[];
39
+ }>;
40
+ scannedDisk: boolean;
41
+ initialContextTruncated: boolean;
42
+ }
43
+ export interface ResolveTargetOptions {
44
+ filePath?: string;
45
+ componentName?: string;
46
+ matchContent?: (file: string, candidateName: string) => boolean;
47
+ }
48
+ export interface TargetResolverInventory {
49
+ resolve(options: ResolveTargetOptions): TargetResolution;
50
+ getProjectFiles(): string[];
51
+ }
52
+ export declare function resolveAnalyzerTarget(ctx: AnalyzerContext, options: ResolveTargetOptions): TargetResolution;
53
+ export declare function createTargetResolverInventory(ctx: AnalyzerContext): TargetResolverInventory;
54
+ export declare function toTargetResolutionMetadata(result: TargetResolution): TargetResolutionMetadata;
55
+ export declare function normalizeTargetPath(filePath: string, projectRoot: string): string;
56
+ export {};
57
+ //# sourceMappingURL=target-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-resolver.d.ts","sourceRoot":"","sources":["../../src/analyzers/target-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgBlD,MAAM,MAAM,oBAAoB,GAC5B,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,CAAC;AAEpB,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GACxB,CAAC,oBAAoB,GAAG;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,oBAAoB,CAAC;CAC5B,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC,CAAC;AAEP,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,oBAAoB,CAAC;QAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;CACjE;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB,CAAC;IACzD,eAAe,IAAI,MAAM,EAAE,CAAC;CAC7B;AAgBD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,oBAAoB,GAC5B,gBAAgB,CAElB;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,eAAe,GAAG,uBAAuB,CAkB3F;AAsFD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAgB7F;AAsQD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIjF"}
@@ -0,0 +1,451 @@
1
+ import ts from 'typescript';
2
+ import { lstatSync, readFileSync, readdirSync, realpathSync } from 'fs';
3
+ import { basename, extname, isAbsolute, join, relative, resolve, sep } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ const REACT_EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js'];
6
+ const IGNORE_DIRECTORIES = new Set([
7
+ '.git', '.claude', '.devflow', '.codegraph', '.next', '.turbo', '.cache',
8
+ 'node_modules', 'dist', 'build', 'coverage',
9
+ ]);
10
+ const NOISE_PATTERNS = [
11
+ /[\\/]__tests__[\\/]/,
12
+ /\.test\.\w+$/,
13
+ /\.spec\.\w+$/,
14
+ /\.config\.\w+$/,
15
+ /\.d\.ts$/,
16
+ /[\\/]plugins[\\/]/,
17
+ ];
18
+ export function resolveAnalyzerTarget(ctx, options) {
19
+ return createTargetResolverInventory(ctx).resolve(options);
20
+ }
21
+ export function createTargetResolverInventory(ctx) {
22
+ const bounds = getProjectBounds(ctx.projectRoot);
23
+ const state = {
24
+ bounds,
25
+ files: uniqueFiles(ctx.files, bounds),
26
+ scannedDisk: false,
27
+ initialContextTruncated: ctx.truncated === true,
28
+ contentCache: new Map(),
29
+ exportedSymbolsCache: new Map(),
30
+ };
31
+ return {
32
+ resolve: options => resolveWithInventory(state, options),
33
+ getProjectFiles: () => {
34
+ ensureProjectFiles(state);
35
+ return [...state.files];
36
+ },
37
+ };
38
+ }
39
+ function resolveWithInventory(inventory, options) {
40
+ const requested = {
41
+ filePath: options.filePath,
42
+ componentName: options.componentName,
43
+ };
44
+ const { bounds, initialContextTruncated } = inventory;
45
+ const target = buildTargetDescriptor(options, bounds.root);
46
+ if (!target.normalizedPath && target.names.length === 0) {
47
+ return {
48
+ status: 'not_found',
49
+ rank: null,
50
+ requested,
51
+ candidates: [],
52
+ scannedDisk: inventory.scannedDisk,
53
+ initialContextTruncated,
54
+ };
55
+ }
56
+ inventory.files = mergeFiles(inventory.files, directPathCandidates(bounds, target.normalizedPath));
57
+ // A truncated context cannot establish basename/symbol uniqueness. Expand it
58
+ // before ranking. An exact path is globally unique; every lower rank needs a
59
+ // disk inventory even when the supplied context only contains partial hints.
60
+ if (initialContextTruncated) {
61
+ ensureProjectFiles(inventory);
62
+ }
63
+ let structural = rankCandidates(inventory.files, bounds.root, target, options, false, inventory);
64
+ const hasExactPath = structural.some(candidate => candidate.rank === 'exact_path');
65
+ if (!hasExactPath && !inventory.scannedDisk) {
66
+ ensureProjectFiles(inventory);
67
+ structural = rankCandidates(inventory.files, bounds.root, target, options, false, inventory);
68
+ }
69
+ const ranked = structural.length > 0
70
+ ? structural
71
+ : rankCandidates(inventory.files, bounds.root, target, options, true, inventory);
72
+ if (ranked.length === 0) {
73
+ return {
74
+ status: 'not_found',
75
+ rank: null,
76
+ requested,
77
+ candidates: [],
78
+ scannedDisk: inventory.scannedDisk,
79
+ initialContextTruncated,
80
+ };
81
+ }
82
+ const bestRank = ranked[0].rankOrder;
83
+ const candidates = ranked.filter(candidate => candidate.rankOrder === bestRank);
84
+ if (candidates.length > 1) {
85
+ return {
86
+ status: 'ambiguous',
87
+ rank: candidates[0].rank,
88
+ requested,
89
+ candidates,
90
+ scannedDisk: inventory.scannedDisk,
91
+ initialContextTruncated,
92
+ };
93
+ }
94
+ return {
95
+ status: 'resolved',
96
+ rank: candidates[0].rank,
97
+ requested,
98
+ files: [candidates[0].file],
99
+ candidates,
100
+ scannedDisk: inventory.scannedDisk,
101
+ initialContextTruncated,
102
+ };
103
+ }
104
+ function ensureProjectFiles(inventory) {
105
+ if (inventory.scannedDisk)
106
+ return;
107
+ inventory.files = mergeFiles(inventory.files, scanProjectFiles(inventory.bounds));
108
+ inventory.scannedDisk = true;
109
+ }
110
+ export function toTargetResolutionMetadata(result) {
111
+ return {
112
+ status: result.status,
113
+ rank: result.rank,
114
+ requested: result.requested,
115
+ files: result.status === 'resolved'
116
+ ? result.candidates.map(candidate => candidate.path)
117
+ : [],
118
+ candidates: result.candidates.map(candidate => ({
119
+ path: candidate.path,
120
+ rank: candidate.rank,
121
+ evidence: candidate.evidence,
122
+ })),
123
+ scannedDisk: result.scannedDisk,
124
+ initialContextTruncated: result.initialContextTruncated,
125
+ };
126
+ }
127
+ function buildTargetDescriptor(options, projectRoot) {
128
+ const normalizedPath = options.filePath
129
+ ? normalizeTargetPath(options.filePath, projectRoot).replace(/\/+$/, '')
130
+ : undefined;
131
+ const names = new Set();
132
+ addNameForms(names, options.componentName);
133
+ if (normalizedPath)
134
+ addNameForms(names, basename(normalizedPath).replace(/\.[^.]+$/, ''));
135
+ return {
136
+ normalizedPath,
137
+ normalizedPathWithoutExtension: normalizedPath?.replace(/\.[^.]+$/, ''),
138
+ names: [...names].filter(Boolean),
139
+ canonicalNames: new Set([...names].map(canonicalName).filter(Boolean)),
140
+ };
141
+ }
142
+ function rankCandidates(files, projectRoot, target, options, includeFuzzy, inventory) {
143
+ const candidates = [];
144
+ for (const file of files) {
145
+ const path = normalizeTargetPath(relative(projectRoot, file), projectRoot);
146
+ const pathLower = path.toLowerCase();
147
+ const pathWithoutExtension = pathLower.replace(/\.[^.]+$/, '');
148
+ const fileBase = basename(path).replace(/\.[^.]+$/, '');
149
+ const evidence = [];
150
+ let rank;
151
+ let rankOrder = Number.MAX_SAFE_INTEGER;
152
+ if (target.normalizedPath) {
153
+ const requestedPath = target.normalizedPath.toLowerCase();
154
+ const requestedWithoutExtension = target.normalizedPathWithoutExtension.toLowerCase();
155
+ if (pathLower === requestedPath
156
+ || (!extname(target.normalizedPath) && pathWithoutExtension === requestedWithoutExtension)) {
157
+ rank = 'exact_path';
158
+ rankOrder = 1;
159
+ evidence.push(`normalized path matches ${target.normalizedPath}`);
160
+ }
161
+ }
162
+ if (!rank && target.canonicalNames.has(canonicalName(fileBase))) {
163
+ rank = 'exact_basename';
164
+ rankOrder = 2;
165
+ evidence.push(`normalized basename matches ${fileBase}`);
166
+ }
167
+ if (!rank) {
168
+ const symbols = collectExportedSymbolsAndComponents(file, inventory);
169
+ const matchingSymbol = symbols.find(symbol => target.canonicalNames.has(canonicalName(symbol)));
170
+ if (matchingSymbol) {
171
+ rank = 'exported_symbol';
172
+ rankOrder = 3;
173
+ evidence.push(`exports symbol ${matchingSymbol}`);
174
+ }
175
+ }
176
+ if (!rank && isDirectoryEntry(path, target)) {
177
+ rank = 'directory_entry';
178
+ rankOrder = 4;
179
+ evidence.push(`directory entry matches ${basename(path)}`);
180
+ }
181
+ if (!rank && includeFuzzy
182
+ && matchesContent(file, target.names, options.matchContent, inventory)) {
183
+ rank = 'fuzzy_content';
184
+ rankOrder = 5;
185
+ evidence.push('content contains a normalized target name');
186
+ }
187
+ if (rank)
188
+ candidates.push({ file, path, rank, rankOrder, evidence });
189
+ }
190
+ return candidates.sort((left, right) => left.rankOrder - right.rankOrder || left.path.localeCompare(right.path));
191
+ }
192
+ function collectExportedSymbolsAndComponents(file, inventory) {
193
+ const cached = inventory.exportedSymbolsCache.get(file);
194
+ if (cached)
195
+ return cached;
196
+ const content = readCachedFile(file, inventory);
197
+ if (content === null)
198
+ return [];
199
+ const sourceFile = ts.createSourceFile(file, content, ts.ScriptTarget.Latest, true, inferScriptKind(file));
200
+ const symbols = new Set();
201
+ for (const statement of sourceFile.statements) {
202
+ const exported = hasExportModifier(statement);
203
+ if ((ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)
204
+ || ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)
205
+ || ts.isEnumDeclaration(statement)) && statement.name) {
206
+ if (exported)
207
+ symbols.add(statement.name.text);
208
+ continue;
209
+ }
210
+ if (ts.isVariableStatement(statement)) {
211
+ for (const declaration of statement.declarationList.declarations) {
212
+ if (exported && ts.isIdentifier(declaration.name)) {
213
+ symbols.add(declaration.name.text);
214
+ }
215
+ }
216
+ continue;
217
+ }
218
+ if (ts.isExportDeclaration(statement) && statement.exportClause
219
+ && ts.isNamedExports(statement.exportClause)) {
220
+ for (const element of statement.exportClause.elements)
221
+ symbols.add(element.name.text);
222
+ }
223
+ if (ts.isExportAssignment(statement) && ts.isIdentifier(statement.expression)) {
224
+ symbols.add(statement.expression.text);
225
+ }
226
+ }
227
+ const exportedSymbols = [...symbols];
228
+ inventory.exportedSymbolsCache.set(file, exportedSymbols);
229
+ return exportedSymbols;
230
+ }
231
+ function hasExportModifier(node) {
232
+ return ts.canHaveModifiers(node)
233
+ && (ts.getModifiers(node)?.some(modifier => modifier.kind === ts.SyntaxKind.ExportKeyword) ?? false);
234
+ }
235
+ function isDirectoryEntry(path, target) {
236
+ const base = basename(path).replace(/\.[^.]+$/, '').toLowerCase();
237
+ if (base !== 'index')
238
+ return false;
239
+ const directory = path.slice(0, Math.max(0, path.lastIndexOf('/')));
240
+ if (target.normalizedPath && directory.toLowerCase() === target.normalizedPath.toLowerCase())
241
+ return true;
242
+ return target.canonicalNames.has(canonicalName(basename(directory)));
243
+ }
244
+ function matchesContent(file, names, matchContent, inventory) {
245
+ if (matchContent) {
246
+ for (const name of names) {
247
+ try {
248
+ if (matchContent(file, name))
249
+ return true;
250
+ }
251
+ catch { }
252
+ }
253
+ return false;
254
+ }
255
+ const content = inventory ? readCachedFile(file, inventory) : null;
256
+ return content !== null
257
+ && names.some(name => content.toLowerCase().includes(name.toLowerCase()));
258
+ }
259
+ function readCachedFile(file, inventory) {
260
+ if (inventory.contentCache.has(file))
261
+ return inventory.contentCache.get(file);
262
+ let content;
263
+ try {
264
+ content = readFileSync(file, 'utf-8');
265
+ }
266
+ catch {
267
+ content = null;
268
+ }
269
+ inventory.contentCache.set(file, content);
270
+ return content;
271
+ }
272
+ function directPathCandidates(bounds, normalizedPath) {
273
+ if (!normalizedPath)
274
+ return [];
275
+ const absolutePath = resolve(bounds.root, normalizedPath);
276
+ const candidates = extname(normalizedPath)
277
+ ? [absolutePath]
278
+ : [absolutePath, ...REACT_EXTENSIONS.map(extension => `${absolutePath}${extension}`)];
279
+ return candidates.filter(file => isEligibleProjectFile(file, bounds));
280
+ }
281
+ function scanProjectFiles(bounds) {
282
+ const files = [];
283
+ const directories = [bounds.root];
284
+ while (directories.length > 0) {
285
+ const directory = directories.pop();
286
+ let entries;
287
+ try {
288
+ entries = readdirSync(directory).sort();
289
+ }
290
+ catch {
291
+ continue;
292
+ }
293
+ const childDirectories = [];
294
+ for (const entry of entries) {
295
+ if (IGNORE_DIRECTORIES.has(entry))
296
+ continue;
297
+ const fullPath = join(directory, entry);
298
+ let stat;
299
+ try {
300
+ stat = lstatSync(fullPath);
301
+ }
302
+ catch {
303
+ continue;
304
+ }
305
+ if (stat.isSymbolicLink())
306
+ continue;
307
+ if (stat.isDirectory())
308
+ childDirectories.push(fullPath);
309
+ else if (stat.isFile() && hasEligibleExtensionAndPath(fullPath, bounds.root))
310
+ files.push(fullPath);
311
+ }
312
+ directories.push(...childDirectories.reverse());
313
+ }
314
+ return files;
315
+ }
316
+ function isEligibleProjectFile(file, bounds) {
317
+ const absolute = resolve(file);
318
+ if (!isPathContained(bounds.root, absolute) || hasSymlinkSegment(bounds.root, absolute))
319
+ return false;
320
+ try {
321
+ const stat = lstatSync(absolute);
322
+ const canonicalFile = realpathSync.native(absolute);
323
+ return stat.isFile()
324
+ && isPathContained(bounds.canonicalRoot, canonicalFile)
325
+ && hasEligibleExtensionAndPath(absolute, bounds.root);
326
+ }
327
+ catch {
328
+ return false;
329
+ }
330
+ }
331
+ function hasEligibleExtensionAndPath(file, projectRoot) {
332
+ const normalizedPath = relative(projectRoot, file).replace(/\\/g, '/');
333
+ return REACT_EXTENSIONS.includes(extname(file))
334
+ && !NOISE_PATTERNS.some(pattern => pattern.test(normalizedPath));
335
+ }
336
+ function uniqueFiles(files, bounds) {
337
+ const unique = new Map();
338
+ for (const file of files) {
339
+ const absolute = resolveProjectPath(file, bounds.root);
340
+ if (absolute && isEligibleProjectFile(absolute, bounds)) {
341
+ unique.set(relative(bounds.root, absolute).replace(/\\/g, '/').toLowerCase(), absolute);
342
+ }
343
+ }
344
+ return [...unique.values()];
345
+ }
346
+ function mergeFiles(left, right) {
347
+ const result = [...left];
348
+ const seen = new Set(left.map(file => file.replace(/\\/g, '/').toLowerCase()));
349
+ for (const file of right) {
350
+ const key = file.replace(/\\/g, '/').toLowerCase();
351
+ if (!seen.has(key)) {
352
+ seen.add(key);
353
+ result.push(file);
354
+ }
355
+ }
356
+ return result;
357
+ }
358
+ export function normalizeTargetPath(filePath, projectRoot) {
359
+ const root = resolve(projectRoot);
360
+ const absolute = resolveProjectPath(filePath, root);
361
+ return absolute ? relative(root, absolute).replace(/\\/g, '/') : '';
362
+ }
363
+ function resolveProjectPath(filePath, projectRoot) {
364
+ const parsedPath = parseTargetPath(filePath);
365
+ if (!parsedPath)
366
+ return undefined;
367
+ const absolute = isAbsolute(parsedPath)
368
+ ? resolve(parsedPath)
369
+ : resolve(projectRoot, parsedPath);
370
+ return isPathContained(projectRoot, absolute) ? absolute : undefined;
371
+ }
372
+ function parseTargetPath(filePath) {
373
+ const trimmed = filePath.trim();
374
+ if (!trimmed)
375
+ return undefined;
376
+ if (/^file:/i.test(trimmed)) {
377
+ try {
378
+ return fileURLToPath(new URL(trimmed));
379
+ }
380
+ catch {
381
+ return undefined;
382
+ }
383
+ }
384
+ return trimmed
385
+ .replace(/^webpack:\/\/+/, '')
386
+ .replace(/[?#].*$/, '')
387
+ .replace(/\\/g, '/');
388
+ }
389
+ function getProjectBounds(projectRoot) {
390
+ const root = resolve(projectRoot);
391
+ let canonicalRoot = root;
392
+ try {
393
+ canonicalRoot = realpathSync.native(root);
394
+ }
395
+ catch { }
396
+ return { root, canonicalRoot };
397
+ }
398
+ function isPathContained(root, candidate) {
399
+ const relativePath = relative(root, candidate);
400
+ return relativePath === ''
401
+ || (relativePath !== '..'
402
+ && !relativePath.startsWith(`..${sep}`)
403
+ && !isAbsolute(relativePath));
404
+ }
405
+ function hasSymlinkSegment(root, candidate) {
406
+ const relativePath = relative(root, candidate);
407
+ if (!relativePath || !isPathContained(root, candidate))
408
+ return false;
409
+ let current = root;
410
+ for (const segment of relativePath.split(sep)) {
411
+ current = join(current, segment);
412
+ try {
413
+ if (lstatSync(current).isSymbolicLink())
414
+ return true;
415
+ }
416
+ catch {
417
+ return false;
418
+ }
419
+ }
420
+ return false;
421
+ }
422
+ function addNameForms(names, value) {
423
+ if (!value?.trim())
424
+ return;
425
+ const words = value.trim()
426
+ .replace(/\.[^.]+$/, '')
427
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
428
+ .split(/[^a-zA-Z0-9]+/)
429
+ .filter(Boolean)
430
+ .map(word => word.toLowerCase());
431
+ if (words.length === 0)
432
+ return;
433
+ const pascal = words.map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
434
+ names.add(value.trim());
435
+ names.add(words.join('-'));
436
+ names.add(pascal);
437
+ names.add(pascal.charAt(0).toLowerCase() + pascal.slice(1));
438
+ }
439
+ function canonicalName(value) {
440
+ return value.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
441
+ }
442
+ function inferScriptKind(file) {
443
+ if (file.endsWith('.tsx'))
444
+ return ts.ScriptKind.TSX;
445
+ if (file.endsWith('.jsx'))
446
+ return ts.ScriptKind.JSX;
447
+ if (file.endsWith('.js'))
448
+ return ts.ScriptKind.JS;
449
+ return ts.ScriptKind.TS;
450
+ }
451
+ //# sourceMappingURL=target-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-resolver.js","sourceRoot":"","sources":["../../src/analyzers/target-resolver.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export const reactPlugin = {
3
3
  meta: {
4
4
  name: "react",
5
5
  version: "0.1.0",
6
- description: "React 18 专家能力 — Bug 诊断、组件重构、性能优化、Hooks 审查",
6
+ description: "React 专家能力 — Bug 诊断、组件重构、性能优化、Hooks 审查",
7
7
  icon: "⚛️",
8
8
  tags: ["frontend", "react", "hooks", "jsx", "performance"],
9
9
  },
@@ -17,13 +17,13 @@ export const reactPlugin = {
17
17
  "https://react.dev/learn",
18
18
  ],
19
19
  pluginName: "react",
20
- version: "18.3.1",
20
+ version: "current",
21
21
  },
22
22
  ],
23
23
  },
24
24
  memory: {
25
25
  project: {
26
- stack: ["React 18", "React Router", "Zustand"],
26
+ stack: ["React", "React Router", "Zustand"],
27
27
  conventions: [
28
28
  { key: "components", value: "使用函数组件 + Hooks", source: "manual", confidence: 0.9 },
29
29
  { key: "file-structure", value: "一个组件一个文件", source: "manual", confidence: 0.9 },
@@ -44,7 +44,7 @@ export const reactPlugin = {
44
44
  id: "react:useEffect-cleanup",
45
45
  source: "react",
46
46
  title: "useEffect 清理",
47
- content: "useEffect 的返回值应为一个清理函数,用于取消订阅、清除定时器等副作用。React 18 在 Strict Mode 下会执行两次 useEffect 以帮助发现清理问题。",
47
+ content: "useEffect 的返回值应为一个清理函数,用于取消订阅、清除定时器等副作用。开发模式下的 Strict Mode 可能重复执行 Effect 以帮助发现清理问题。",
48
48
  embedding: [],
49
49
  },
50
50
  {
@@ -65,7 +65,7 @@ export const reactPlugin = {
65
65
  id: "react:suspense-streaming",
66
66
  source: "react",
67
67
  title: "Suspense 与流式渲染",
68
- content: "React 18 支持 Suspense 配合流式 SSR。使用 lazy() 动态导入组件。Suspense 的 fallback 在数据加载期间显示。结合 useDeferredValue 和 useTransition 优化用户体验。",
68
+ content: "React 支持 Suspense 配合流式 SSR。使用 lazy() 动态导入组件。Suspense 的 fallback 在数据加载期间显示。结合项目版本可用的并发 API 优化用户体验。",
69
69
  embedding: [],
70
70
  },
71
71
  ],
@@ -1672,7 +1672,7 @@ export const reactPlugin = {
1672
1672
  ],
1673
1673
  },
1674
1674
  prompt: {
1675
- system: "你是一个 React 18 专家。使用函数组件、Hooks 和 TypeScript。遇到问题先查文档再给方案,不凭空猜测 API 行为。",
1675
+ system: "你是一个 React 专家。项目 package.json 与 lockfile 检测到的版本是唯一权威。使用函数组件、Hooks 和 TypeScript;遇到问题先查对应版本文档再给方案。",
1676
1676
  rules: [
1677
1677
  "使用函数组件 + Hooks,不使用 Class 组件",
1678
1678
  "每个文件只导出一个组件",