UNPKG

cyclic-dependency-fixer

Version:

AI-powered tool to detect and fix circular dependencies in JavaScript/TypeScript projects. Features intelligent refactoring with Claude/GPT-4, codebase pattern learning, and context-aware fix recommendations

57 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DetectCyclesUseCase = void 0; class DetectCyclesUseCase { constructor(fileSystem, parser, cycleDetector) { this.fileSystem = fileSystem; this.parser = parser; this.cycleDetector = cycleDetector; } async execute(config) { const startTime = Date.now(); const files = await this.findFiles(config); const modules = await this.parseModules(files); const cycles = await this.cycleDetector.detectCycles(modules, config.maxDepth); const affectedModules = this.getAffectedModules(cycles); const duration = Date.now() - startTime; return { cycles, totalModules: modules.size, affectedModules, duration, }; } async findFiles(config) { const patterns = config.extensions.map((ext) => `*${ext}`); const exclude = [...config.exclude, 'node_modules', 'dist', 'build', 'coverage', '.git']; if (!config.includeNodeModules) { exclude.push('node_modules'); } return await this.fileSystem.glob(patterns, exclude); } async parseModules(files) { const modules = new Map(); await Promise.all(files.map(async (file) => { try { const content = await this.fileSystem.readFile(file); const module = await this.parser.parse(file, content); modules.set(file, module); } catch (error) { console.warn(`Failed to parse ${file}:`, error); } })); return modules; } getAffectedModules(cycles) { const affected = new Set(); for (const cycle of cycles) { for (const path of cycle.paths) { affected.add(path); } } return Array.from(affected); } } exports.DetectCyclesUseCase = DetectCyclesUseCase; //# sourceMappingURL=DetectCyclesUseCase.js.map