/**
* π§ͺ Demo Script - Prueba las mejoras del Web Scraping
*
* Ejecuta: node demo.mjs
*/
import { ScraperService } from './dist/services/ScraperService.js';
import { formatComponentDoc } from './dist/utils/formatters.js';
const RESET = '\x1b[0m';
const BRIGHT = '\x1b[1m';
const GREEN = '\x1b[32m';
const BLUE = '\x1b[34m';
const YELLOW = '\x1b[33m';
const CYAN = '\x1b[36m';
async function demo() {
console.log(`\n${BRIGHT}${CYAN}βββββββββββββββββββββββββββββββββββββββββββββββββ${RESET}`);
console.log(`${BRIGHT}${CYAN}β π Demo: Mejoras de Web Scraping PrimeNG β${RESET}`);
console.log(`${BRIGHT}${CYAN}βββββββββββββββββββββββββββββββββββββββββββββββββ${RESET}\n`);
const scraper = new ScraperService(15000, 3);
// Lista de componentes para probar
const components = ['button', 'dialog', 'dropdown'];
for (const component of components) {
console.log(`${BRIGHT}${BLUE}ββββββββββββββββββββββββββββββββββββββββββββββ${RESET}`);
console.log(`${BRIGHT}${GREEN}π¦ Componente: ${component.toUpperCase()}${RESET}`);
console.log(`${BRIGHT}${BLUE}ββββββββββββββββββββββββββββββββββββββββββββββ${RESET}\n`);
try {
const doc = await scraper.scrapeComponentDoc(component);
// Mostrar estadΓsticas
console.log(`${YELLOW}π EstadΓsticas extraΓdas:${RESET}`);
console.log(` β Ejemplos de cΓ³digo: ${BRIGHT}${doc.examples?.length || 0}${RESET} (antes: solo 1)`);
console.log(` β Properties: ${BRIGHT}${doc.properties?.length || 0}${RESET} (sin lΓmite de 20)`);
console.log(` β Events: ${BRIGHT}${doc.events?.length || 0}${RESET} (sin lΓmite de 15)`);
console.log(` β Methods: ${BRIGHT}${doc.methods?.length || 0}${RESET} (sin lΓmite de 10)\n`);
// Mostrar algunos ejemplos
if (doc.examples && doc.examples.length > 0) {
console.log(`${YELLOW}π‘ Primeros 3 ejemplos extraΓdos:${RESET}`);
doc.examples.slice(0, 3).forEach((example, i) => {
const preview = example.substring(0, 60).replace(/\n/g, ' ');
console.log(` ${i + 1}. ${preview}...`);
});
console.log('');
}
// Mostrar documentaciΓ³n formateada (preview)
console.log(`${YELLOW}π Preview de documentaciΓ³n formateada:${RESET}`);
const formatted = formatComponentDoc(doc);
const lines = formatted.split('\n');
const preview = lines.slice(0, 30).join('\n');
console.log(`${CYAN}${preview}${RESET}`);
console.log(`${CYAN}... (${lines.length - 30} lΓneas mΓ‘s)${RESET}\n`);
// Esperar un poco entre componentes
if (component !== components[components.length - 1]) {
await new Promise(resolve => setTimeout(resolve, 2000));
}
} catch (error) {
console.log(`${BRIGHT}\x1b[31mβ Error: ${error.message}${RESET}\n`);
}
}
console.log(`${BRIGHT}${GREEN}βββββββββββββββββββββββββββββββββββββββββββββββββ${RESET}`);
console.log(`${BRIGHT}${GREEN}β β
Demo completado exitosamente! β${RESET}`);
console.log(`${BRIGHT}${GREEN}βββββββββββββββββββββββββββββββββββββββββββββββββ${RESET}\n`);
console.log(`${YELLOW}π‘ PrΓ³ximos pasos:${RESET}`);
console.log(` 1. Configura el servidor en Claude Desktop`);
console.log(` 2. Pregunta: "Dame la documentaciΓ³n del componente Button"`);
console.log(` 3. Β‘Disfruta de toda la informaciΓ³n extraΓda!${RESET}\n`);
}
// Ejecutar demo
demo().catch(error => {
console.error('Error en demo:', error);
process.exit(1);
});