story-research-zapwall/fixKnowledge/2026-01-13-lint-max-lines-author-page.md
2026-01-13 17:23:28 +01:00

1.8 KiB
Raw Blame History

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 lURL (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].tsx par un simple re-export du composant page

Pages / fichiers affectés

  • pages/author/[pubkey].tsx
  • components/authorPage/AuthorPage.tsx
  • components/authorPage/AuthorPageContent.tsx
  • components/authorPage/AuthorPageHeader.tsx
  • components/authorPage/SponsoringSummary.tsx
  • components/authorPage/SeriesList.tsx
  • components/authorPage/useAuthorData.ts
  • components/authorPage/resolveAuthorHashIdOrPubkey.ts
  • pages/api/nip95-upload.ts (route API NIP-95 upload; impl déplacée vers lib/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 erreur max-lines sur pages/author/[pubkey].tsx)
  • npm run type-check (doit sortir en succès)

Risques / régressions possibles

  • erreurs dimport/chemins suite au déplacement de code
  • oubli dun export explicite ou dun type de retour (règles TypeScript/ESLint strictes)