1.8 KiB
1.8 KiB
Contexte
ESLint signalait un max-lines sur pages/author/[pubkey].tsx (fichier trop long). Le reste du projet passait.
Root cause
La page regroupait dans un seul fichier :
- logique de chargement (hook + requêtes)
- composants de présentation (header, sponsoring, liste de séries)
- parsing de l’URL (compatibilité ancien format vs hash)
Ce regroupement dépassait la limite max-lines (250).
Correctif
Refactor purement structurel (sans changement fonctionnel) :
- extraction de la logique et des sous-composants dans
components/authorPage/* - remplacement de
pages/author/[pubkey].tsxpar un simple re-export du composant page
Pages / fichiers affectés
pages/author/[pubkey].tsxcomponents/authorPage/AuthorPage.tsxcomponents/authorPage/AuthorPageContent.tsxcomponents/authorPage/AuthorPageHeader.tsxcomponents/authorPage/SponsoringSummary.tsxcomponents/authorPage/SeriesList.tsxcomponents/authorPage/useAuthorData.tscomponents/authorPage/resolveAuthorHashIdOrPubkey.tspages/api/nip95-upload.ts(route API NIP-95 upload; impl déplacée verslib/api/nip95-upload/*pour éviter des routes Next involontaires)lib/metadataExtractor/reviewTip.ts(validation stricte des champs requis)lib/paymentNotes/sponsoring.ts(exactOptionalPropertyTypes)components/relayManager/RelayCard.tsx(typage lastSyncDate)lib/keyManagementTwoLevel/crypto.ts(BufferSource)
Vérification
npm run lint(doit sortir en succès, sans erreurmax-linessurpages/author/[pubkey].tsx)npm run type-check(doit sortir en succès)
Risques / régressions possibles
- erreurs d’import/chemins suite au déplacement de code
- oubli d’un export explicite ou d’un type de retour (règles TypeScript/ESLint strictes)