const fs = require('fs'); const path = require('path'); console.log('🔍 Verificador de Estilos FontAwesome Pro\n'); console.log('='.repeat(60)); // Configuración const WEBFONTS_DIR = path.join(__dirname, 'assets', 'fontawesome', 'webfonts'); const METADATA_DIR = path.join(__dirname, 'assets', 'fontawesome', 'metadata'); const CSS_DIR = path.join(__dirname, 'assets', 'fontawesome', 'css'); // Archivos requeridos para cada estilo const REQUIRED_FILES = { 'solid': ['fa-solid-900.woff2', 'fa-solid-900.ttf'], 'regular': ['fa-regular-400.woff2', 'fa-regular-400.ttf'], 'light': ['fa-light-300.woff2', 'fa-light-300.ttf'], 'thin': ['fa-thin-100.woff2', 'fa-thin-100.ttf'], 'duotone': ['fa-duotone-900.woff2', 'fa-duotone-900.ttf'], 'sharp-solid': ['fa-sharp-solid-900.woff2', 'fa-sharp-solid-900.ttf'], 'sharp-regular': ['fa-sharp-regular-400.woff2', 'fa-sharp-regular-400.ttf'], 'sharp-light': ['fa-sharp-light-300.woff2', 'fa-sharp-light-300.ttf'], 'sharp-thin': ['fa-sharp-thin-100.woff2', 'fa-sharp-thin-100.ttf'], 'sharp-duotone': ['fa-sharp-duotone-900.woff2', 'fa-sharp-duotone-900.ttf'], 'brands': ['fa-brands-400.woff2', 'fa-brands-400.ttf'] }; // Verificar directorios console.log('\n📁 Verificando directorios...'); const directories = [ { name: 'webfonts', path: WEBFONTS_DIR }, { name: 'metadata', path: METADATA_DIR }, { name: 'css', path: CSS_DIR } ]; directories.forEach(dir => { if (fs.existsSync(dir.path)) { console.log(` ✅ ${dir.name}: Existe`); const files = fs.readdirSync(dir.path); console.log(` Archivos: ${files.length}`); } else { console.log(` ❌ ${dir.name}: No existe`); } }); // Verificar archivos de fuentes console.log('\n🎨 Verificando archivos de fuentes...'); let totalFound = 0; let totalRequired = 0; Object.entries(REQUIRED_FILES).forEach(([style, files]) => { console.log(`\n ${style}:`); let foundCount = 0; files.forEach(file => { const filePath = path.join(WEBFONTS_DIR, file); if (fs.existsSync(filePath)) { console.log(` ✅ ${file}`); foundCount++; totalFound++; } else { console.log(` ❌ ${file} (Faltante)`); } totalRequired++; }); if (foundCount === files.length) { console.log(` 🎉 ${style} completo`); } else if (foundCount > 0) { console.log(` ⚠️ ${style} parcial (${foundCount}/${files.length})`); } else { console.log(` ❌ ${style} no disponible`); } }); // Verificar metadata console.log('\n📊 Verificando metadata...'); const metadataPath = path.join(METADATA_DIR, 'icons.json'); if (fs.existsSync(metadataPath)) { try { const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf8')); const iconCount = Object.keys(metadata).length; console.log(` ✅ Metadata válido`); console.log(` Íconos: ${iconCount}`); // Verificar si hay estilos sharp en metadata const sampleIcon = Object.values(metadata)[0]; if (sampleIcon && sampleIcon.styles) { const hasSharp = sampleIcon.styles.some(s => s.toLowerCase().includes('sharp') ); console.log(` Estilos Sharp: ${hasSharp ? 'Sí' : 'No'}`); } } catch (error) { console.log(` ❌ Error en metadata: ${error.message}`); } } else { console.log(' ❌ Metadata no encontrado'); } // Verificar archivos generados console.log('\n🛠️ Verificando archivos generados...'); const generatedFiles = [ { name: 'Base de datos', path: path.join(__dirname, 'assets', 'icons.json') }, { name: 'CSS Dinámico', path: path.join(__dirname, 'assets', 'dynamic-styles.css') }, { name: 'CSS Personalizado', path: path.join(__dirname, 'assets', 'custom-styles.css') } ]; generatedFiles.forEach(file => { if (fs.existsSync(file.path)) { const stats = fs.statSync(file.path); console.log(` ✅ ${file.name}: ${(stats.size / 1024).toFixed(2)} KB`); } else { console.log(` ❌ ${file.name}: No generado`); } }); // Resumen console.log('\n' + '='.repeat(60)); console.log('📈 RESUMEN FINAL'); console.log('='.repeat(60)); const percentage = ((totalFound / totalRequired) * 100).toFixed(1); console.log(`\nArchivos de fuentes: ${totalFound}/${totalRequired} (${percentage}%)`); if (percentage >= 90) { console.log('✅ Excelente! Tienes casi todos los estilos.'); } else if (percentage >= 50) { console.log('⚠️ Tienes la mayoría de estilos básicos.'); } else { console.log('❌ Faltan muchos estilos. Considera actualizar FontAwesome Pro.'); } console.log('\n🎯 RECOMENDACIONES:'); if (totalFound < totalRequired) { console.log(' 1. Descarga la versión completa de FontAwesome 6 Pro'); console.log(' 2. Copia todos los archivos de webfonts/'); console.log(' 3. Ejecuta: npm run build'); } else { console.log(' 1. ¡Todo está listo!'); console.log(' 2. Ejecuta: npm run build (si no lo has hecho)'); } console.log('\n🚀 COMANDOS DISPONIBLES:'); console.log(' • npm run build - Generar/actualizar base de datos'); console.log(' • npm run update - Verificar y actualizar estilos'); console.log(' • npm run verify - Verificar archivos (este comando)'); console.log('\n' + '='.repeat(60));