mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
Capitalisation complète — app-alexandrie & app-template-resto (23-03-2026)
Intègre ~50 entrées depuis 95_a_capitaliser.md vers les fichiers validés :
- backend risques : +15 (GET sans authz, TOCTOU tenantId, TTL UTC, AdminRoleGuard, P3014...)
- backend patterns : P2002 amendé (create+update) + 10 nouveaux (Decimal, URL safe, EN enforcement...)
- frontend risques : +21 (defaultValue/key, useTransition global, consent state, Tailwind invalide...)
- frontend patterns : +6 (click-to-load, toggle optimiste, Server Action retourne entité...)
- debug/postmortem : export{fn} ne crée pas de binding local
95_a_capitaliser.md remis à l'état initial vide.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -138,3 +138,39 @@ constructor() {
|
||||
### Alternative écartée
|
||||
|
||||
`nest start --watch` a été testé mais a introduit des conflits ESM/CJS dans ce contexte (`exports is not defined`).
|
||||
|
||||
---
|
||||
|
||||
## `export { fn }` ne constitue pas un import local — détecté uniquement au build
|
||||
|
||||
### Contexte
|
||||
|
||||
Projet `app-template-resto`, story 2-4, le 17-03-2026.
|
||||
Dans `getPublicHomeData.ts`, la fonction `resolvePublicTenantSelection` avait été déplacée dans `src/server/tenant/resolvePublicTenant.ts` et re-exportée depuis l'ancien emplacement.
|
||||
|
||||
### Symptômes
|
||||
|
||||
- `Cannot find name 'resolvePublicTenantSelection'` au `next build` uniquement
|
||||
- ESLint et `tsc` (hors build) ne signalaient rien
|
||||
- La fonction était utilisée localement dans le même fichier qui la re-exportait
|
||||
|
||||
### Cause
|
||||
|
||||
```typescript
|
||||
// getPublicHomeData.ts
|
||||
export { resolvePublicTenantSelection } from "@/server/tenant/resolvePublicTenant";
|
||||
|
||||
// puis, plus bas dans le même fichier :
|
||||
const result = resolvePublicTenantSelection(env); // ← NameError au build
|
||||
```
|
||||
|
||||
Un re-export (`export { fn } from "..."`) ne crée pas de binding local dans le fichier. La fonction est exportée vers l'extérieur mais n'est pas disponible comme variable locale.
|
||||
|
||||
### Correctif / règle à retenir
|
||||
|
||||
Si une fonction est utilisée dans le même fichier qui la re-exporte, ajouter un `import` séparé en plus du `export` :
|
||||
|
||||
```typescript
|
||||
import { resolvePublicTenantSelection } from "@/server/tenant/resolvePublicTenant";
|
||||
export { resolvePublicTenantSelection }; // pour les appelants externes
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user