| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /**
- * Reference Resolution Types
- *
- * Types for the reference resolution system.
- */
- import { EdgeKind, Language, Node } from '../types';
- /**
- * An unresolved reference from extraction
- */
- export interface UnresolvedRef {
- /** ID of the source node containing the reference */
- fromNodeId: string;
- /** The name being referenced */
- referenceName: string;
- /** Type of reference */
- referenceKind: EdgeKind;
- /** Line where reference occurs */
- line: number;
- /** Column where reference occurs */
- column: number;
- /** File path where reference occurs */
- filePath: string;
- /** Language of the source file */
- language: Language;
- /** Possible qualified names it might resolve to */
- candidates?: string[];
- }
- /**
- * A resolved reference
- */
- export interface ResolvedRef {
- /** Original unresolved reference */
- original: UnresolvedRef;
- /** ID of the target node */
- targetNodeId: string;
- /** Confidence score (0-1) */
- confidence: number;
- /** How it was resolved */
- resolvedBy: 'exact-match' | 'import' | 'qualified-name' | 'framework' | 'fuzzy';
- }
- /**
- * Result of resolution attempt
- */
- export interface ResolutionResult {
- /** Successfully resolved references */
- resolved: ResolvedRef[];
- /** References that couldn't be resolved */
- unresolved: UnresolvedRef[];
- /** Statistics */
- stats: {
- total: number;
- resolved: number;
- unresolved: number;
- byMethod: Record<string, number>;
- };
- }
- /**
- * Context for resolution - provides access to the graph
- */
- export interface ResolutionContext {
- /** Get all nodes in a file */
- getNodesInFile(filePath: string): Node[];
- /** Get all nodes by name */
- getNodesByName(name: string): Node[];
- /** Get all nodes by qualified name */
- getNodesByQualifiedName(qualifiedName: string): Node[];
- /** Get all nodes of a kind */
- getNodesByKind(kind: Node['kind']): Node[];
- /** Check if a file exists */
- fileExists(filePath: string): boolean;
- /** Read file content */
- readFile(filePath: string): string | null;
- /** Get project root */
- getProjectRoot(): string;
- /** Get all files */
- getAllFiles(): string[];
- }
- /**
- * Framework-specific resolver
- */
- export interface FrameworkResolver {
- /** Framework name */
- name: string;
- /** Detect if project uses this framework */
- detect(context: ResolutionContext): boolean;
- /** Resolve a reference using framework-specific patterns */
- resolve(ref: UnresolvedRef, context: ResolutionContext): ResolvedRef | null;
- /** Extract additional nodes specific to this framework */
- extractNodes?(filePath: string, content: string): Node[];
- }
- /**
- * Import mapping from a file
- */
- export interface ImportMapping {
- /** Local name used in the file */
- localName: string;
- /** Original exported name (may differ due to aliasing) */
- exportedName: string;
- /** Source module/path */
- source: string;
- /** Whether it's a default import */
- isDefault: boolean;
- /** Whether it's a namespace import (import * as X) */
- isNamespace: boolean;
- /** Resolved file path (if local) */
- resolvedPath?: string;
- }
|