import { WrappedData } from './types.js'; import { DataLoader } from './data-loader.js'; interface LandingData { repoName: string; dateRange: string; totalCommits: number; totalLinesAdded: number; totalLinesDeleted: number; } async function loadData(): Promise { const loader = new DataLoader(); const data = await loader.load(); // Use team summary for totals const totalCommits = data.teamSummary.totalCommits; const totalLinesAdded = data.teamSummary.linesAdded; const totalLinesDeleted = data.teamSummary.linesDeleted; // Extract repo name and date range const repoName = data.repository || 'Repository'; const dateRange = data.period ? `${data.period.start} to ${data.period.end}` : 'Last 12 months'; return { repoName, dateRange, totalCommits, totalLinesAdded, totalLinesDeleted, }; } function formatNumber(num: number): string { if (num >= 1000000) { return (num / 1000000).toFixed(1) + 'M'; } if (num >= 1000) { return (num / 1000).toFixed(1) + 'K'; } return num.toLocaleString(); } function renderLandingPage(data: LandingData): void { const app = document.getElementById('app'); if (!app) return; app.innerHTML = `

Git Wrapped

${escapeHtml(data.repoName)}
${escapeHtml(data.dateRange)}
${formatNumber(data.totalCommits)}
Commits Totaux
${formatNumber(data.totalLinesAdded)}
Lignes Ajoutées
${formatNumber(data.totalLinesDeleted)}
Lignes Supprimées
v0.4.0
`; } function escapeHtml(text: string): string { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } function renderError(message: string): void { const app = document.getElementById('app'); if (!app) return; app.innerHTML = `

Git Wrapped

Erreur de chargement des données
${escapeHtml(message)}
`; } async function init(): Promise { try { const data = await loadData(); renderLandingPage(data); } catch (error) { console.error('Failed to initialize landing page:', error); renderError(error instanceof Error ? error.message : 'Unknown error'); } } // Start the app init();