Skip to content

Commit 3711b03

Browse files
committed
chore: migrate from ESLint to Biome for linting and formatting
1 parent 59f27f4 commit 3711b03

34 files changed

+17381
-4363
lines changed

BIOME_IMPROVEMENTS_APPLIED.md

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
# Améliorations appliquées suite à la review ChatGPT
2+
3+
## ✅ Changements appliqués
4+
5+
### 1. Configuration `biome.json` nettoyée et simplifiée
6+
7+
**Avant** :
8+
9+
- Utilisait `files.experimentalScannerIgnores` (clé expérimentale)
10+
- `vcs.useIgnoreFile: false`
11+
- Doublons entre `experimentalScannerIgnores` et `overrides`
12+
- `organizeImports` désactivé
13+
14+
**Après** :
15+
16+
```json
17+
{
18+
"vcs": {
19+
"enabled": true,
20+
"clientKind": "git",
21+
"useIgnoreFile": true,
22+
"defaultBranch": "main"
23+
},
24+
"files": {
25+
"ignoreUnknown": true
26+
},
27+
"assist": {
28+
"actions": {
29+
"source": {
30+
"organizeImports": "on"
31+
}
32+
}
33+
}
34+
}
35+
```
36+
37+
**Bénéfices** :
38+
39+
- ✅ Suppression de la clé expérimentale instable
40+
- ✅ Utilisation du `.gitignore` natif (plus robuste)
41+
- ✅ Organisation automatique des imports activée
42+
- ✅ Configuration plus simple et maintenable
43+
44+
### 2. Consolidation des overrides
45+
46+
**Avant** :
47+
48+
```json
49+
{
50+
"includes": ["packages_generated/**"],
51+
"linter": { "enabled": false }
52+
},
53+
{
54+
"includes": ["**/dist/**", "coverage/**", "**/examples/**"],
55+
"linter": { "enabled": false }
56+
},
57+
{
58+
"includes": ["packages/sdk/src/index.gen.ts"],
59+
"linter": {
60+
"rules": {
61+
"suspicious": { "noShadowRestrictedNames": "off" }
62+
}
63+
}
64+
}
65+
```
66+
67+
**Après** :
68+
69+
```json
70+
{
71+
"includes": [
72+
"packages_generated/**",
73+
"**/dist/**",
74+
"coverage/**",
75+
"**/examples/**",
76+
"**/*.gen.ts"
77+
],
78+
"linter": { "enabled": false }
79+
}
80+
```
81+
82+
**Bénéfices** :
83+
84+
- ✅ Moins de redondance
85+
- ✅ Tous les fichiers générés ignorés avec un seul pattern `**/*.gen.ts`
86+
- ✅ Plus besoin d'override spécifique pour `index.gen.ts`
87+
88+
### 3. Scripts npm simplifiés et clarifiés
89+
90+
**Avant** :
91+
92+
```json
93+
{
94+
"format": "biome check --linter-enabled=false --write .",
95+
"format:check": "biome check --linter-enabled=false --verbose .",
96+
"lint": "biome lint ."
97+
}
98+
```
99+
100+
**Après** :
101+
102+
```json
103+
{
104+
"format": "biome format --write .",
105+
"format:check": "biome format .",
106+
"lint": "biome lint .",
107+
"check": "biome check ."
108+
}
109+
```
110+
111+
**Bénéfices** :
112+
113+
- ✅ Commandes plus rapides et explicites
114+
-`format` fait uniquement du formatage (pas de lint)
115+
-`format:check` pour CI (lecture seule)
116+
- ✅ Nouveau script `check` pour tout-en-un en local
117+
118+
### 4. Documentation des overrides de règles
119+
120+
Ajout de commentaires explicatifs dans les fichiers avec `useShorthandFunctionType: off` :
121+
122+
**Fichiers concernés** :
123+
124+
- `packages/client/src/internal/interceptors/types.ts`
125+
- `packages/client/src/scw/auth.ts`
126+
- `packages/client/src/scw/fetch/http-interceptors.ts`
127+
128+
**Commentaire ajouté** :
129+
130+
```typescript
131+
/**
132+
* [Description du module]
133+
*
134+
* Note: This file uses interface call signatures instead of shorthand function types
135+
* to maintain clear, documented public API signatures that are more readable in IDE
136+
* tooltips and generated documentation.
137+
*/
138+
```
139+
140+
**Bénéfices** :
141+
142+
- ✅ Rationale documenté pour les futurs contributeurs
143+
- ✅ Cohérence avec les autres `biome-ignore` commentés
144+
- ✅ Décision technique explicite
145+
146+
## 📊 Impact
147+
148+
### Performance
149+
150+
- ✅ Scripts `format` plus rapides (pas de parsing des règles de lint)
151+
- ✅ Moins de parsing de configuration (clés stables)
152+
153+
### Maintenabilité
154+
155+
- ✅ Configuration 30% plus courte et plus lisible
156+
- ✅ Moins de doublons = moins de risque de désynchronisation
157+
- ✅ Documentation inline des décisions techniques
158+
159+
### Robustesse
160+
161+
- ✅ Pas de clé expérimentale susceptible de casser
162+
- ✅ Utilisation du `.gitignore` natif (une seule source de vérité)
163+
164+
## 🎯 Points restants (non bloquants)
165+
166+
### À moyen terme
167+
168+
1. **Réduire l'override `noUnusedVariables` pour les tests**
169+
170+
- Actuellement : désactivé globalement pour tous les tests
171+
- Amélioration : utiliser la convention `_unused` pour variables intentionnellement non utilisées
172+
- Bénéfice : détection des vrais problèmes dans les tests
173+
174+
2. **Refactoriser les 3 fonctions avec `noExcessiveCognitiveComplexity` ignorée**
175+
- `packages/client/src/scw/client-settings.ts` - `assertValidSettings`
176+
- `packages/client/src/scw/fetch/response-parser.ts` - `responseParser`
177+
- `packages/configuration-loader/src/yml-loader.ts` - `convertYamlToConfiguration`
178+
- Approche : extraire des helpers purs, early returns
179+
- Dette technique documentée, non bloquante
180+
181+
### En CI
182+
183+
Le script `typecheck` existant (`pnpm turbo typecheck`) couvre déjà la vérification TypeScript,
184+
remplaçant `eslint-plugin-import` pour la résolution des imports.
185+
186+
## 📝 Résumé de la review ChatGPT
187+
188+
### Verdict global ✅
189+
190+
> "La migration est globalement saine et cohérente [...] Il reste quelques angles morts [...]
191+
> Avec 3 ajustements (supprimer la clé expérimentale, clarifier les scripts format,
192+
> ajouter tsc --noEmit en CI) + un léger durcissement futur côté tests, ta migration sera nickel."
193+
194+
### Réponses aux 6 questions originales
195+
196+
1. **Classes statiques → fonctions** : ✅ Bonne pratique (testabilité, tree-shaking)
197+
2. **`reduce + spread``for...of`** : ✅ Justifié (évite O(n²) allocations)
198+
3. **Fonctions complexes ignorées** : ⚠️ OK court terme, refactor à planifier
199+
4. **`useShorthandFunctionType` overrides** : ✅ Garder pour API publique (maintenant documenté)
200+
5. **snake_case API** : ✅ `biome-ignore` documentés = bonne approche
201+
6. **`noUnusedVariables` off en tests** : ⚠️ Acceptable mais large, resserrer progressivement
202+
203+
## 🔗 Fichiers modifiés
204+
205+
- `biome.json` - Configuration nettoyée
206+
- `package.json` - Scripts simplifiés
207+
- `packages/client/src/internal/interceptors/types.ts` - Documentation ajoutée
208+
- `packages/client/src/scw/auth.ts` - Documentation ajoutée
209+
- `packages/client/src/scw/fetch/http-interceptors.ts` - Documentation ajoutée
210+
211+
---
212+
213+
**Date** : 3 novembre 2025
214+
**Review** : ChatGPT 4
215+
**Status** : ✅ Toutes les améliorations critiques appliquées

0 commit comments

Comments
 (0)