@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
83 lines (82 loc) • 2.62 kB
TypeScript
/**
* 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
}