# @datacat/shared Types et constantes partagés entre le **back** (NestJS) et le **front** (Angular). ## Contenu - `src/types/` — interfaces et types (`ApiEntry`, `Category`, réponses d'API…). - `src/schemas/api-entry.schema.ts` — **source de vérité** des énumérations (`API_TYPES`, `API_STATUSES`, `API_CONVENTIONS`). Les types `ApiType` / `ApiStatus` / `ApiConvention` en sont **dérivés** (`typeof X[number]`), et la validation back (`@IsIn`) réutilise ces mêmes constantes. Ajouter une valeur dans le tableau suffit donc à propager type + validation. ## Double build (piège récurrent) Ce paquet est consommé de **deux façons différentes** : | Consommateur | Mécanisme | Config | |--------------|-----------|--------| | **front** (Angular) | alias TypeScript vers la **source** | `tsconfig.json` (ES2022) + `paths` dans `front-public/tsconfig.json` | | **back** (NestJS) | paquet **compilé** (`dist/`) en CommonJS | `tsconfig.build.json` (CommonJS) → `dist/` | ⚠️ Le back lit `dist/`, pas la source. Après toute modification de `shared`, il faut **rebuild** avant que le back voie le changement : ```sh pnpm --filter @datacat/shared build # (le docker-compose le fait déjà : voir infra/docker-compose.yml, étape tsc) ``` Le front, lui, voit la source directement (pas de rebuild nécessaire).