# Journal des modifications (Changelog)

Toutes les modifications notables apportées à NestCraftX seront documentées dans ce fichier.

## [1.0.0] - 02-07-2026

### Ajouté

- **Commande de relation autonome (`nestcraftx g relation`)** : Générateur interactif autonome de relations inter-modules (1-n, n-1, 1-1, n-n) mettant à jour les entités, les DTOs, les mappers et le schéma de base de données (migrations Prisma et références Mongoose).
- **Guards RBAC conditionnels** : Protection automatique des routes de mutation (`POST`, `PATCH`, `DELETE`) par `JwtAuthGuard` et `RolesGuard` (`@Roles('ADMIN')`) et des routes de lecture avec `@Public()` lorsque l'authentification est activée.
- **Rate limiting global (`@nestjs/throttler`)** : Intégration de la limitation de requêtes globale, configurable interactivement ou par le flag CLI `--throttler`.
- **Endpoint de Health Check (`/health`)** : Route native de surveillance `/health` exposant le statut, le timestamp et l'uptime de l'application, documentée dans Swagger.
- **Paramètres de requête avancés** : Pagination, filtrage et tri injectés automatiquement dans les contrôleurs et les dépôts.
- **Rapport de génération interactif** : Boîte ASCII affichée en fin de génération récapitulant les fichiers créés et les prochaines étapes.
- **62 tests unitaires Jest** : Couverture unitaire robuste.

### Corrigé

- **Unification CommonJS** : Résolution des crashes de runtime en unifiant le module system (CommonJS) dans `utils.js` et `userInput.js`.
- **Validation non-interactive des flags** : Correction du comportement des flags de configuration rapide du projet.
- **Capitalisation Prisma** : Correction de la capitalisation lors de la génération de relations Prisma.

---

## [0.6.0] - 16-06-2026

### Ajouté

- **Framework de test Jest** : Configuration de Jest pour exécuter des tests dans le projet.
- **Tests Unitaires** : Écriture de 26 tests unitaires validant le parseur CLI, les générateurs d'entités, de DTOs (avec Swagger sémantique), de contrôleurs et la mise à jour d'`app.module.ts`.
- **Tests d'Intégration E2E** : Test de génération de projet réel en tâche de fond avec installation et compilation TypeScript (`tsc --noEmit`) pour garantir un code généré valide.
- **CI/CD GitHub Actions** : Pipeline de tests automatique s'exécutant sur Ubuntu et Windows pour les versions LTS de Node.js (18, 20, 22).

### Corrigé

- **Conflits de Peer Dependencies Upstream (NestJS 11)** :
  - Ajout automatique du flag `--legacy-peer-deps` sur toutes les commandes d'installation npm lancées par le projet généré.
  - Ajout du flag `--skip-install` sur la commande Nest CLI initiale pour accélérer la génération et éviter les conflits d'installation doublonnés.
- **Suivi Git des Tests** : Correction du `.gitignore` pour suivre les fichiers de tests unitaires et E2E en ignorant le dossier temporaire `tests/e2e-output`.

---

## [0.5.0] - 16-06-2026

### Ajouté

- **Persistance DB-backed pour les OTPs & Reset Tokens** : Remplacement du stockage en mémoire process par des tables et des schémas de base de données dédiés pour Prisma, TypeORM, et Mongoose.
- **Sécurisation de la réinitialisation de mot de passe** : Intégration de la validation complète de non-expiration et d'invalidation après usage du token dans `AuthService`.
- **Pinning de versions strict** : Remplacement des dépendances de dernière version par des plages semver stables dans tous les setups de base de données, auth et swagger.
- **Descriptions Swagger Sémantiques** : Remplacement des descriptions par défaut par des templates sémantiques contextuels et support de descriptions personnalisées saisies par l'utilisateur.

### Corrigé

- **Condition logique De Morgan** : Correction du type de relation dans `cleanModuleGenerator`.
- **Détection d'ORM** : Réorganisation de l'ordre de détection en vérifiant l'existence de `prisma/` avant de lire le package.json.
- **JWT Secrets Conditionnels** : Génération des variables d'environnement JWT uniquement si `useAuth` est activé.
- **Mode LIGHT sans arguments** : Prise en charge correcte du mode LIGHT sans nom de projet fourni en premier argument dans `new.js`.
- **Timeout npm install** : Timeout de 5 minutes ajouté sur `npm install` pour éviter les blocages.

---

## [0.4.0] - 14-06-2026

### Ajouté

- **Saisie interactive d'entités state-based (EntityBuilder)** : Saisie flexible des types, des clés uniques, des champs optionnels et des valeurs par défaut.
- **Écran de révision d'entité** : Menu interactif post-saisie permettant de modifier, renommer, supprimer des champs ou l'entité avant génération.
- **Mode de simulation (--dry-run)** : Prévisualisation complète des répertoires et fichiers simulés sans écriture sur le disque physique.
- **Rapport de warnings final** : Accumulation et affichage des avertissements non critiques en fin de pipeline de génération.

### Changé

- **Découpage de utils.js** : Éclatement du fichier monolithique de 2198 lignes en générateurs spécialisés par couche architecture (`entity.generator`, `dto.generator`, `controller.generator`, etc.).
- **Découpage de userInput.js** : Éclatement en modules d'accès fichier (`file-system.js`) et de mise à jour AppModule (`app-module.updater.js`).
- **Pipeline partagé DRY** : Unification des séquences de création de projets entre `demo.js` et `new.js`.

---

## [0.3.0] - 07-06-2026

### Ajouté

- **Version dynamique de l'aide** : Lecture dynamique de la version depuis le `package.json` dans la commande d'aide pour éviter les incohérences.
- **Validation interactive des flags** : Correction de la logique de vérification pour supporter correctement le mode non-interactif.
- **Package Manager dynamique** : Prise en compte dynamique du gestionnaire de paquets choisi au lieu de forcer `npm` dans le setup auth.

### Changé

- **Système de modules unifié** : Standardisation de tous les fichiers du projet en CommonJS afin d'éviter les crashs hybrides ESM/CJS au runtime.
- **Gestion gracieuse des erreurs** : Les échecs de commandes non critiques (comme `prisma format`) ne tuent plus l'ensemble du processus de génération.

### Corrigé

- **Capitalisation dans le générateur Prisma** : Capitalisation forcée des noms de modèles dans les relations du schéma pour respecter les contraintes Prisma.
- **Déduplication des clés étrangères (FK)** : Résolution de la duplication des clés étrangères lors de la génération des relations Prisma.
- **Boucles asynchrones Clean Architecture** : Remplacement des boucles `forEach` asynchrones par des boucles `for...of` séquentielles pour garantir l'ordre de création des fichiers.
- **Sauvegarde de l'environnement** : Modification de `setupMongoose` pour mettre à jour le fichier `.env` au lieu de l'écraser complètement.
- **Analyse robuste de AppModule** : Amélioration de la regex dans `safeUpdateAppModule` pour gérer en toute sécurité les crochets de tableaux imbriqués.
- **Nettoyages de code** : Suppression du code mort ou commenté et retrait des `console.log` de débogage dans les guards de sécurité générés.

## [0.2.5] - 10-01-2026

### Ajouté

- **Nouveau système interactif (Inquirer.js)** : Remplacement de `readline-sync` par `Inquirer` pour une navigation professionnelle au clavier (touches fléchées).
- **Support des gestionnaires de paquets** : Choix entre `npm`, `yarn` et `pnpm` (via le flag `--pm` ou sélection interactive).
- **Détection intelligente de DB** : Sélection automatique du type de base de données (PostgreSQL ou MongoDB) en fonction de l'ORM choisi.
- **Fusion avancée des flags** : Intégration fluide entre les flags CLI et les invites interactives pour les options manquantes.
- **Badges de statut visuels** : Ajout de badges dans le README pour la Version, la Licence et les ORM supportés.

### Changé

- **Refonte TOTALE de l'architecture** : Déplacement des services vers `application/services` pour respecter strictement les patterns de la Clean Architecture.
- **Refactorisation de l'Auth** : `AuthService` interagit désormais exclusivement avec `UserService` (suppression de l'accès direct au repository).
- **Commande Demo améliorée** : La commande `demo` génère maintenant un projet de blog complet avec 3 entités liées (User, Post, Comment) et des relations 1-N.
- **Sécurité renforcée** : Les secrets JWT sont désormais générés via `crypto.randomBytes(32)` (chaînes hexadécimales de 64 caractères).
- **Docker par défaut** : Les fichiers Docker sont maintenant générés par défaut dans les deux modes, sauf si `--docker=false` est spécifié.

### Corrigé

- **Compatibilité des modules** : Résolution des conflits CommonJS vs ES6 dans les templates de projet générés.
- **Validation des flags** : Correction de bugs où certains flags CLI étaient ignorés durant le flux interactif.
- **Dépendances circulaires** : Nettoyage des imports dans le module Auth pour prévenir d'éventuels problèmes au runtime.

---

## [0.2.2] - 07-11-2025

### Ajouté

- **Templates professionnels** : Auto-génération d'un `.gitignore` spécifique à NestJS et d'un `README.md` personnalisé pour chaque nouveau projet.
- **Auto-init Git** : Initialisation automatique du dépôt Git et premier commit après la génération du projet.
- **Support Mongoose (Beta)** : Première implémentation de l'architecture MongoDB avec Mongoose.

### Changé

- **Nettoyage du code** : Suppression des fichiers de configuration obsolètes (`start.js`, `fullModeInput.js`, `lightModeInput.js`).
- **Standardisation des logs** : Unification des messages console via un système de codes couleurs cohérent (Info, Succès, Avertissement).

---

## [0.2.0] - 27-10-2025

### Ajouté

- **Modes d'architecture doubles** :
- **Mode FULL** : Clean Architecture complète + DDD (Use-cases, Mappers, Adapters).
- **Mode LIGHT** : Architecture MVP simplifiée (Controllers → Services → Repositories).

- **Parseur CLI moderne** : Support des syntaxes `--key=value` et `--key value` avec validation.
- **Amélioration de l'UX** : Intégration de spinners animés et d'un résumé complet de la configuration post-génération.

### Sécurité

- **Environnement sécurisé** : Génération automatique de `JWT_SECRET` et `JWT_REFRESH_SECRET` dans le fichier `.env`.
- **Exemples assainis** : Création d'un fichier `.env.example` sécurisé sans données sensibles.

---

## [0.1.0] - Version précédente

### Fonctionnalités initiales

- Génération de projet NestJS de base.
- Support de Prisma et TypeORM.
- Configuration de base Docker et Swagger.
- Authentification JWT standard.

---

## Notes de migration

### De 0.1.x à 0.2.5

**Changements non-bloquants** : La version 0.2.x est rétrocompatible.

**Nouvelles commandes recommandées :**

```bash
# Mode LIGHT (Plus rapide pour les MVP)
nestcraftx new my-api --light --orm=prisma --auth

# Mode FULL (Standard pour les applications d'entreprise)
nestcraftx new my-app --full --orm=typeorm --auth --swagger

```

Avantages de la mise à jour :

- Secrets JWT automatisés et sécurisés.
- Choix du gestionnaire de paquets (npm/yarn/pnpm).
- Meilleure séparation des responsabilités dans les modules Auth/User.
- Meilleure expérience développeur (DX) avec les menus interactifs.
