UNPKG

eslint-config-ai-swe

Version:

ESLint configuration optimized for AI Agents SWE with TypeScript and multi-framework support.

80 lines (67 loc) 2.07 kB
import { installPackage } from '@antfu/install-pkg'; export const frameworkDependencies = { react: ['eslint-plugin-react', 'eslint-plugin-react-hooks'], vue: ['eslint-plugin-vue'], svelte: ['eslint-plugin-svelte'], next: ['eslint-plugin-react', 'eslint-plugin-react-hooks'], nuxt: ['eslint-plugin-vue'], angular: [], node: [], unknown: [], }; export async function installFrameworkDependencies(framework, options = {}) { const { dryRun = false, silent = false } = options; const dependencies = frameworkDependencies[framework] || []; if (dependencies.length === 0) { if (!silent) { console.log('✅ Aucune dépendance supplémentaire nécessaire.'); } return true; } if (!silent) { console.log('📦 Installation des dépendances requises...'); } const installPromises = dependencies.map(async (dep) => { try { if (!silent) { console.log(` 📋 Installation de ${dep}...`); } if (dryRun) { if (!silent) { console.log(` 🔍 [DRY RUN] Serait installé: ${dep}`); } return true; } await installPackage(dep, { silent: true }); if (!silent) { console.log(` ✅ ${dep} installé avec succès`); } return true; } catch (error) { if (!silent) { console.warn(` ⚠️ Échec de l'installation de ${dep}: ${error.message}`); } return false; } }); const results = await Promise.all(installPromises); const successCount = results.filter(Boolean).length; const totalCount = dependencies.length; if (!silent) { console.log(`📊 Résultat: ${successCount}/${totalCount} dépendances installées`); } return successCount === totalCount; } export function getMissingDependencies(framework) { const required = frameworkDependencies[framework] || []; const missing = []; // Check if each dependency is installed required.forEach(dep => { try { require.resolve(dep); } catch { missing.push(dep); } }); return missing; }