UNPKG

@stacksjs/dtsx

Version:

A modern, fast .d.ts generation tool, powered by Bun.

83 lines (82 loc) 2.62 kB
/** * Build a dependency graph from TypeScript source files */ export declare function buildDependencyGraph(files: string[], options?: CircularDetectionOptions): Promise<Map<string, DependencyNode>>; /** * Detect circular dependencies in a dependency graph */ export declare function detectCircularDependencies(graph: Map<string, DependencyNode>, options?: CircularDetectionOptions): CircularDependency[]; /** * Analyze files for circular dependencies */ export declare function analyzeCircularDependencies(files: string[], options?: CircularDetectionOptions): Promise<CircularAnalysisResult>; /** * Format circular dependency analysis as a string */ export declare function formatCircularAnalysis(result: CircularAnalysisResult, rootDir?: string): string; /** * Get a summary of the dependency graph */ export declare function getGraphSummary(graph: Map<string, DependencyNode>): { totalFiles: number totalDependencies: number avgDependencies: number maxDependencies: { file: string, count: number } isolatedFiles: string[] mostDepended: { file: string, count: number } }; /** * Find all files that depend on a given file (transitive) */ export declare function findAllDependents(filePath: string, graph: Map<string, DependencyNode>): Set<string>; /** * Find all dependencies of a given file (transitive) */ export declare function findAllDependencies(filePath: string, graph: Map<string, DependencyNode>): Set<string>; /** * Export dependency graph as DOT format (for visualization with Graphviz) */ export declare function exportGraphAsDot(graph: Map<string, DependencyNode>, rootDir?: string): string; /** * Export dependency graph as JSON */ export declare function exportGraphAsJson(graph: Map<string, DependencyNode>, rootDir?: string): string; /** * A node in the dependency graph */ export declare interface DependencyNode { path: string exports: Set<string> imports: Map<string, string> dependencies: Set<string> dependents: Set<string> } /** * A circular dependency chain */ export declare interface CircularDependency { chain: string[] symbols: string[] severity: 'error' | 'warning' reason: string } /** * Result of circular dependency analysis */ export declare interface CircularAnalysisResult { hasCircular: boolean cycles: CircularDependency[] graph: Map<string, DependencyNode> filesAnalyzed: string[] durationMs: number } /** * Options for circular dependency detection */ export declare interface CircularDetectionOptions { rootDir?: string ignore?: string[] typesOnly?: boolean maxDepth?: number includeNodeModules?: boolean }