UNPKG

woaru

Version:

Universal Project Setup Autopilot - Analyze and automatically configure development tools for ANY programming language

58 lines 2.42 kB
import { NextJsPlugin } from './NextJsPlugin.js'; import { PythonPlugin } from './PythonPlugin.js'; import { CSharpPlugin } from './CSharpPlugin.js'; import { JavaPlugin } from './JavaPlugin.js'; import { GoPlugin } from './GoPlugin.js'; import { RustPlugin } from './RustPlugin.js'; export class PluginManager { plugins = []; constructor() { this.registerPlugin(new NextJsPlugin()); this.registerPlugin(new PythonPlugin()); this.registerPlugin(new CSharpPlugin()); this.registerPlugin(new JavaPlugin()); this.registerPlugin(new GoPlugin()); this.registerPlugin(new RustPlugin()); // Add more plugins here as they're created } registerPlugin(plugin) { this.plugins.push(plugin); } getApplicablePlugins(analysis) { return this.plugins.filter(plugin => plugin.canHandle(analysis)); } getAllRecommendations(analysis) { const applicablePlugins = this.getApplicablePlugins(analysis); const allRecommendations = []; applicablePlugins.forEach(plugin => { const recommendations = plugin.getRecommendations(analysis); allRecommendations.push(...recommendations); }); // Remove duplicates based on tool name const uniqueRecommendations = allRecommendations.filter((rec, index, self) => index === self.findIndex(r => r.tool === rec.tool)); // Sort by priority return uniqueRecommendations.sort((a, b) => { const priorityOrder = { high: 3, medium: 2, low: 1 }; return priorityOrder[b.priority] - priorityOrder[a.priority]; }); } getAllRefactorSuggestions(analysis) { const applicablePlugins = this.getApplicablePlugins(analysis); const allSuggestions = []; applicablePlugins.forEach(plugin => { const suggestions = plugin.getRefactorSuggestions(analysis); allSuggestions.push(...suggestions); }); return allSuggestions; } getAllSpecificPackages(analysis) { const applicablePlugins = this.getApplicablePlugins(analysis); const allPackages = []; applicablePlugins.forEach(plugin => { const packages = plugin.getSpecificPackages(); allPackages.push(...packages); }); return [...new Set(allPackages)]; // Remove duplicates } } //# sourceMappingURL=PluginManager.js.map