@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
64 lines (63 loc) • 2.05 kB
TypeScript
import type { DtsGenerationConfig } from './types';
/**
* Build dependency graph from source files
*/
export declare function buildProcessingGraph(files: string[], rootDir?: string): Promise<Map<string, ProcessingNode>>;
/**
* Process files in parallel respecting dependencies
*/
export declare function processInParallel(files: string[], options?: ParallelProcessorConfig): Promise<ParallelProcessingResult>;
/**
* Get topological processing order (respects dependencies)
*/
export declare function getTopologicalOrder(graph: Map<string, ProcessingNode>): string[];
/**
* Find files that can be processed independently (no dependencies on other files in the set)
*/
export declare function findIndependentFiles(graph: Map<string, ProcessingNode>): string[];
/**
* Get processing levels (files at same level can be processed in parallel)
*/
export declare function getProcessingLevels(graph: Map<string, ProcessingNode>): string[][];
/**
* Analyze graph for parallelization potential
*/
export declare function analyzeParallelizationPotential(graph: Map<string, ProcessingNode>): {
totalFiles: number
independentFiles: number
maxParallelism: number
levels: number
estimatedSpeedup: number
};
/**
* Node in the processing dependency graph
*/
export declare interface ProcessingNode {
path: string
dependencies: Set<string>
dependents: Set<string>
state: 'pending' | 'processing' | 'completed' | 'failed'
result?: string
error?: Error
duration?: number
}
/**
* Configuration for parallel processing
*/
export declare interface ParallelProcessorConfig {
maxConcurrency?: number
rootDir?: string
config?: Partial<DtsGenerationConfig>
onProgress?: (completed: number, total: number, current: string) => void
onError?: (path: string, error: Error) => boolean
}
/**
* Result of parallel processing
*/
export declare interface ParallelProcessingResult {
success: Map<string, string>
failed: Map<string, Error>
totalTimeMs: number
maxConcurrent: number
processingOrder: string[]
}