nestcraftx 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  All notable changes to NestCraftX will be documented in this file.
4
4
 
5
- ## [0.2.1] - 2025-11-07
5
+ ## [0.2.2] - 2025-11-07
6
6
 
7
7
  ### Added
8
8
 
9
9
  #### Demo Command Amélioré
10
+
10
11
  - Support complet des flags pour demo : `--light`, `--orm`, `--auth`, `--swagger`, `--docker`
11
12
  - Mode interactif intelligent : pose les questions uniquement si flags manquants
12
13
  - Fusion intelligente des options passées et réponses interactives
@@ -14,6 +15,7 @@ All notable changes to NestCraftX will be documented in this file.
14
15
  - Support de tous les ORMs (Prisma, TypeORM, Mongoose)
15
16
 
16
17
  #### Auth Refactorisée
18
+
17
19
  - AuthService refactorisé pour passer via UserService
18
20
  - Pas d'accès direct au repository depuis AuthModule
19
21
  - JWT configuré avec ConfigService pour secrets dynamiques
@@ -23,12 +25,14 @@ All notable changes to NestCraftX will be documented in this file.
23
25
  - Support du role-based access control (RBAC)
24
26
 
25
27
  #### Templates Professionnels
28
+
26
29
  - `.gitignore` complet généré pour NestJS
27
30
  - `README.md` auto-généré pour chaque projet créé
28
31
  - Git auto-initialisé avec premier commit
29
32
  - Documentation professionnelle incluse
30
33
 
31
34
  #### Nettoyage du Code
35
+
32
36
  - Suppression de fichiers obsolètes (start.js, fullModeInput.js, lightModeInput.js)
33
37
  - Normalisation CommonJS vs ES6 (cohérence totale)
34
38
  - Suppression du code mort et commentaires inutiles
@@ -36,7 +40,7 @@ All notable changes to NestCraftX will be documented in this file.
36
40
 
37
41
  ### Changed
38
42
 
39
- - Version du projet mise à jour à 0.2.1
43
+ - Version du projet mise à jour à 0.2.2
40
44
  - Documentation README complètement mise à jour
41
45
  - CLI_USAGE.md actualisé avec les nouveau flags
42
46
  - Meilleure séparation des responsabilités (Auth ↔ User)
@@ -54,7 +58,9 @@ All notable changes to NestCraftX will be documented in this file.
54
58
  ### Added
55
59
 
56
60
  #### Architecture Modes
61
+
57
62
  - **Mode FULL** : Architecture complete avec Clean Architecture + DDD
63
+
58
64
  - Structure complete avec use-cases, mappers, adapters
59
65
  - Separation stricte domain/application/infrastructure/presentation
60
66
  - Ideal pour projets complexes et scalables
@@ -65,7 +71,9 @@ All notable changes to NestCraftX will be documented in this file.
65
71
  - Parfait pour prototypes et petits projets
66
72
 
67
73
  #### CLI Moderne
74
+
68
75
  - Parser de flags ameliore avec validation
76
+
69
77
  - Support de `--flag=value` et `--flag value`
70
78
  - Validation des noms de projets
71
79
  - Validation des valeurs d'options
@@ -80,6 +88,7 @@ All notable changes to NestCraftX will be documented in this file.
80
88
  - `--docker` : Gestion Docker (actif par defaut)
81
89
 
82
90
  #### Generation .env Securisee
91
+
83
92
  - Generation automatique de secrets JWT securises (64 caracteres)
84
93
  - Configuration automatique selon l'ORM :
85
94
  - PostgreSQL pour Prisma et TypeORM
@@ -93,6 +102,7 @@ All notable changes to NestCraftX will be documented in this file.
93
102
  - Creation d'un fichier `.env.example` sanitise
94
103
 
95
104
  #### UX Amelioree
105
+
96
106
  - Systeme de couleurs pour les logs :
97
107
  - Info en cyan
98
108
  - Success en vert
@@ -104,6 +114,7 @@ All notable changes to NestCraftX will be documented in this file.
104
114
  - Affichage du mode utilise (FULL/LIGHT)
105
115
 
106
116
  #### Nouveaux Fichiers Utilitaires
117
+
107
118
  - `utils/cliParser.js` : Parser CLI moderne avec validation
108
119
  - `utils/envGenerator.js` : Generateur de fichiers .env securises
109
120
  - `utils/colors.js` : Systeme de couleurs pour la console
@@ -113,7 +124,9 @@ All notable changes to NestCraftX will be documented in this file.
113
124
  ### Changed
114
125
 
115
126
  #### Structure du Code
127
+
116
128
  - Refactoring complet de `commands/new.js` :
129
+
117
130
  - Separation en fonctions modulaires
118
131
  - `determineMode()` : Detection du mode
119
132
  - `buildLightModeInputs()` : Construction config LIGHT
@@ -122,6 +135,7 @@ All notable changes to NestCraftX will be documented in this file.
122
135
  - `printSuccessSummary()` : Affichage resume
123
136
 
124
137
  - Amelioration de `utils/shell.js` :
138
+
125
139
  - Support des spinners
126
140
  - Mode silencieux pour certaines operations
127
141
  - Meilleure gestion des erreurs
@@ -132,6 +146,7 @@ All notable changes to NestCraftX will be documented in this file.
132
146
  - Messages plus clairs
133
147
 
134
148
  #### Parser CLI
149
+
135
150
  - Validation des inputs en temps reel
136
151
  - Detection des flags mutuellement exclusifs
137
152
  - Support de la syntaxe moderne (--key=value)
@@ -140,29 +155,34 @@ All notable changes to NestCraftX will be documented in this file.
140
155
  ### Improved
141
156
 
142
157
  #### Generation de Projet
158
+
143
159
  - Detection automatique du mode selon les flags
144
160
  - Configuration interactive seulement si necessaire
145
161
  - Validation des noms de projets
146
162
  - Meilleure gestion des erreurs
147
163
 
148
164
  #### Configuration Database
165
+
149
166
  - URL de database construite automatiquement
150
167
  - Support ameliore pour les 3 ORMs
151
168
  - Configuration adaptee au type de database
152
169
 
153
170
  #### Documentation
171
+
154
172
  - Ajout de `CLI_USAGE.md` : Guide complet d'utilisation
155
173
  - Ajout de `CHANGELOG.md` : Historique des versions
156
174
  - Exemples de commandes detailles
157
175
  - Documentation des deux modes d'architecture
158
176
 
159
177
  ### Fixed
178
+
160
179
  - Gestion des erreurs amelioree dans tout le CLI
161
180
  - Validation des options avant execution
162
181
  - Messages d'erreur plus explicites
163
182
  - Nettoyage du code (suppression des commentaires obsoletes)
164
183
 
165
184
  ### Security
185
+
166
186
  - Generation de secrets JWT securises avec crypto
167
187
  - Secrets de 64 caracteres en base64url
168
188
  - Fichier .env.example sans secrets sensibles
@@ -171,6 +191,7 @@ All notable changes to NestCraftX will be documented in this file.
171
191
  ## [0.1.0] - Previous Version
172
192
 
173
193
  ### Features Initiales
194
+
174
195
  - Generation de projets NestJS
175
196
  - Support Prisma, TypeORM, Mongoose
176
197
  - Architecture Clean Code de base
@@ -189,12 +210,14 @@ All notable changes to NestCraftX will be documented in this file.
189
210
  **Nouvelles commandes recommandees :**
190
211
 
191
212
  Avant (0.1.x) :
213
+
192
214
  ```bash
193
215
  nestcraftx start
194
216
  # Configuration interactive
195
217
  ```
196
218
 
197
219
  Maintenant (0.2.0) :
220
+
198
221
  ```bash
199
222
  # Mode LIGHT (nouveau - recommande pour MVP)
200
223
  nestcraftx new mon-projet --light --orm=prisma --auth
@@ -204,6 +227,7 @@ nestcraftx new mon-projet --full --orm=prisma --auth
204
227
  ```
205
228
 
206
229
  **Avantages de la mise a jour :**
230
+
207
231
  - Generation de secrets JWT automatique et securisee
208
232
  - Fichier .env pret a l'emploi
209
233
  - Mode LIGHT pour demarrer plus rapidement
@@ -11,17 +11,21 @@ Ce document récapitule toutes les corrections apportées au CLI NestCraftX pour
11
11
  **Problème:** Le mode light ne demandait pas les relations entre entités.
12
12
 
13
13
  **Solution:**
14
+
14
15
  - Ajout d'une fonction `addRelations()` pour gérer les relations entre entités
15
16
  - Ajout d'un prompt pour demander si l'utilisateur veut créer des relations
16
17
  - Les relations supportées: 1-1, 1-n, n-1, n-n
17
18
 
18
19
  **Code ajouté:**
20
+
19
21
  ```javascript
20
22
  // Demander les relations entre entités
21
23
  if (inputs.entitiesData.entities.length > 1) {
22
- const wantsRelation = readline.keyInYNStrict('Voulez-vous ajouter des relations entre entites ?');
24
+ const wantsRelation = readline.keyInYNStrict(
25
+ "Voulez-vous ajouter des relations entre entites ?"
26
+ );
23
27
  if (wantsRelation) {
24
- console.log(`\n${info('[INFO]')} Configuration des relations`);
28
+ console.log(`\n${info("[INFO]")} Configuration des relations`);
25
29
  addRelations(inputs.entitiesData);
26
30
  }
27
31
  }
@@ -34,11 +38,13 @@ if (inputs.entitiesData.entities.length > 1) {
34
38
  **Problème:** Les repositories ne mappaient pas les données brutes de la base de données vers les entités, causant des erreurs lors du retour des données.
35
39
 
36
40
  **Solution:**
41
+
37
42
  - Ajout d'une méthode privée `toEntity()` dans chaque repository pour convertir les données brutes
38
43
  - Implémentation complète pour Prisma, TypeORM et Mongoose
39
44
  - Utilisation de cette méthode dans toutes les opérations CRUD
40
45
 
41
46
  **Exemple pour Prisma:**
47
+
42
48
  ```typescript
43
49
  private toEntity(raw: any): ${entityName}Entity {
44
50
  return new ${entityName}Entity(
@@ -51,6 +57,7 @@ private toEntity(raw: any): ${entityName}Entity {
51
57
  ```
52
58
 
53
59
  **Exemple pour Mongoose:**
60
+
54
61
  ```typescript
55
62
  private toEntity(raw: any): ${entityName}Entity {
56
63
  const obj = raw.toObject ? raw.toObject() : raw;
@@ -70,6 +77,7 @@ private toEntity(raw: any): ${entityName}Entity {
70
77
  **Problème:** Les repositories pour TypeORM et Mongoose n'étaient pas complètement implémentés en mode light, seul Prisma était géré.
71
78
 
72
79
  **Solution:**
80
+
73
81
  - Implémentation complète du repository TypeORM avec toutes les opérations CRUD
74
82
  - Implémentation complète du repository Mongoose avec toutes les opérations CRUD
75
83
  - Ajout des imports nécessaires pour chaque ORM
@@ -82,6 +90,7 @@ private toEntity(raw: any): ${entityName}Entity {
82
90
  **Statut:** Le fichier existait déjà et était correctement configuré.
83
91
 
84
92
  **Contenu:**
93
+
85
94
  - Installation des dépendances TypeORM
86
95
  - Configuration de la connexion PostgreSQL
87
96
  - Génération des entités TypeORM
@@ -94,6 +103,7 @@ private toEntity(raw: any): ${entityName}Entity {
94
103
  **Problème:** Le module d'authentification était conçu uniquement pour le mode Full avec Clean Architecture, causant des erreurs d'import en mode Light.
95
104
 
96
105
  **Solution:**
106
+
97
107
  - Détection automatique du mode (full ou light) via `inputs.mode`
98
108
  - Chemins d'imports dynamiques selon le mode:
99
109
  - Mode Light: `src/user/dto/`, `src/user/repositories/`, `src/user/entities/`
@@ -103,9 +113,13 @@ private toEntity(raw: any): ${entityName}Entity {
103
113
  - Mode Full: injection via interface avec `@Inject('IUserRepository')`
104
114
 
105
115
  **Exemple de code adaptatif:**
116
+
106
117
  ```javascript
107
- const userDtoPath = mode === 'light' ? 'src/user/dto/user.dto' : 'src/user/application/dtos/user.dto';
108
- const userRepoType = mode === 'light' ? 'UserRepository' : 'IUserRepository';
118
+ const userDtoPath =
119
+ mode === "light"
120
+ ? "src/user/dto/user.dto"
121
+ : "src/user/application/dtos/user.dto";
122
+ const userRepoType = mode === "light" ? "UserRepository" : "IUserRepository";
109
123
  ```
110
124
 
111
125
  ## 6. Import dotenv dans Prisma Config
@@ -115,6 +129,7 @@ const userRepoType = mode === 'light' ? 'UserRepository' : 'IUserRepository';
115
129
  **Problème:** La nouvelle version de Prisma génère un fichier `prisma.config.ts` qui doit charger les variables d'environnement avant l'exécution, sinon les migrations échouent.
116
130
 
117
131
  **Solution:**
132
+
118
133
  - Installation automatique de dotenv comme dépendance
119
134
  - Détection de l'existence du fichier `prisma.config.ts`
120
135
  - Injection automatique de `import 'dotenv/config';` au début du fichier si il existe
@@ -127,16 +142,18 @@ const userRepoType = mode === 'light' ? 'UserRepository' : 'IUserRepository';
127
142
  **Problème:** L'enum Role n'était pas généré en mode light, mais était importé et utilisé dans les guards et le module d'authentification.
128
143
 
129
144
  **Solution:**
145
+
130
146
  - Création du dossier `src/common/enums`
131
147
  - Génération automatique du fichier `role.enum.ts` si l'entité User existe
132
148
  - Import cohérent du Role enum dans tous les fichiers qui en ont besoin
133
149
 
134
150
  **Fichier généré:**
151
+
135
152
  ```typescript
136
153
  export enum Role {
137
- USER = 'USER',
138
- ADMIN = 'ADMIN',
139
- SUPER_ADMIN = 'SUPER_ADMIN',
154
+ USER = "USER",
155
+ ADMIN = "ADMIN",
156
+ SUPER_ADMIN = "SUPER_ADMIN",
140
157
  }
141
158
  ```
142
159
 
@@ -147,6 +164,7 @@ export enum Role {
147
164
  **Problème:** Les imports dans le module Auth restaient en mode "full" même en mode light, causant des chemins incorrects.
148
165
 
149
166
  **Solution:**
167
+
150
168
  - Adaptation dynamique des chemins d'imports selon le mode
151
169
  - Mode Light: `src/user/dto/`, `src/user/repositories/`, `src/auth/dto/`
152
170
  - Mode Full: `src/user/application/dtos/`, `src/user/application/interfaces/`
@@ -159,11 +177,13 @@ export enum Role {
159
177
  **Problème:** La méthode `toEntity` utilisait un spread operator générique qui ne mappait pas correctement les champs réels de l'entité.
160
178
 
161
179
  **Solution:**
180
+
162
181
  - Génération dynamique de la méthode `toEntity` basée sur les champs réels de l'entité
163
182
  - Chaque champ défini est explicitement mappé vers le constructeur
164
183
  - Support complet pour Prisma, TypeORM et Mongoose
165
184
 
166
185
  **Exemple pour Prisma:**
186
+
167
187
  ```typescript
168
188
  private toEntity(raw: any): UserEntity {
169
189
  return new UserEntity(
@@ -184,6 +204,7 @@ private toEntity(raw: any): UserEntity {
184
204
  **Problème:** L'import Swagger était dupliqué dans les controllers générés.
185
205
 
186
206
  **Solution:**
207
+
187
208
  - Refactorisation du code de génération du controller
188
209
  - Import Swagger déclaré une seule fois au début du fichier
189
210
  - Condition unique pour les importations et les décorateurs
@@ -195,26 +216,28 @@ private toEntity(raw: any): UserEntity {
195
216
  **Problème:** Les exemples Swagger étaient trop génériques et peu réalistes pour l'UX.
196
217
 
197
218
  **Solution Implémentée:**
219
+
198
220
  - Exemples réalistes basés sur les noms de champs
199
221
  - Patterns reconnaissables pour l'utilisateur final
200
222
  - Données cohérentes avec les cas d'usage réels
201
223
 
202
224
  **Exemples de Patterns d'Amélioration:**
203
225
 
204
- | Champ | Ancien Exemple | Nouvel Exemple |
205
- |-------|---|---|
206
- | email | user@example.com | alice.johnson@example.com |
207
- | password | StrongPassword123! | SecurePass@2024 |
208
- | firstName | firstName_example | John |
209
- | phone | phone_example | +1234567890 |
210
- | price | 199.99 | 99.99 |
211
- | quantity | 123 | 5 |
212
- | rating | 123 | 4.5 |
213
- | date | 2024-01-01T00:00:00Z | 2024-12-01T10:30:00Z |
226
+ | Champ | Ancien Exemple | Nouvel Exemple |
227
+ | --------- | -------------------- | ------------------------- |
228
+ | email | user@example.com | alice.johnson@example.com |
229
+ | password | StrongPassword123! | SecurePass@2024 |
230
+ | firstName | firstName_example | John |
231
+ | phone | phone_example | +1234567890 |
232
+ | price | 199.99 | 99.99 |
233
+ | quantity | 123 | 5 |
234
+ | rating | 123 | 4.5 |
235
+ | date | 2024-01-01T00:00:00Z | 2024-12-01T10:30:00Z |
214
236
 
215
237
  ## Tests de Validation
216
238
 
217
239
  Tous les fichiers modifiés ont été validés avec `node --check`:
240
+
218
241
  - ✅ `utils/configs/setupLightArchitecture.js`
219
242
  - ✅ `utils/lightModeInput.js`
220
243
  - ✅ `utils/setups/setupAuth.js`
@@ -258,6 +281,6 @@ Toutes les corrections ciblent des problèmes réels du mode Light identifiés l
258
281
 
259
282
  ## Version
260
283
 
261
- - Version du CLI: 0.2.1
284
+ - Version du CLI: 0.2.2
262
285
  - Date des corrections: 2025-10-31
263
286
  - Toutes les corrections ont été validées syntaxiquement
package/DEMO.md CHANGED
@@ -1,4 +1,4 @@
1
- # NestCraftX CLI - Démo du projet `blog-demo` (v0.2.1)
1
+ # NestCraftX CLI - Démo du projet `blog-demo` (v0.2.2)
2
2
 
3
3
  ## 🎯 Objectif
4
4
 
@@ -159,5 +159,5 @@ npm run start:dev
159
159
 
160
160
  ---
161
161
 
162
- **NestCraftX v0.2.1** – Clean Architecture Generator for NestJS
162
+ **NestCraftX v0.2.2** – Clean Architecture Generator for NestJS
163
163
  [Documentation complète](https://github.com/august-dev-pro/NestCraftX)
package/QUICK_START.md CHANGED
@@ -149,4 +149,4 @@ Le CLI genere automatiquement :
149
149
 
150
150
  ---
151
151
 
152
- **NestCraftX v0.2.1** - Clean Architecture Made Simple
152
+ **NestCraftX v0.2.2** - Clean Architecture Made Simple
package/commands/help.js CHANGED
@@ -2,7 +2,7 @@ async function helpCommand() {
2
2
  console.log(`
3
3
  ╔═══════════════════════════════════════════════════════════╗
4
4
  ║ ║
5
- 🌟 NestCraftX CLI v0.2.1-beta 🌟
5
+ 🌟 NestCraftX CLI v0.2.2 🌟
6
6
  ║ Clean Architecture Generator for NestJS ║
7
7
  ║ ║
8
8
  ╚═══════════════════════════════════════════════════════════╝
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestcraftx",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Modern CLI to generate scalable NestJS projects with Clean Architecture (FULL) and MVP mode (LIGHT) - Enhanced with auto-generated .env secrets, complete ORM support, and entity relations",
5
5
  "main": "bin/nestcraft.js",
6
6
  "bin": {
package/readme.md CHANGED
@@ -3,11 +3,11 @@
3
3
  demo
4
4
  ![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)
5
5
  ![Node.js](https://img.shields.io/badge/node-%3E=14.0.0-green.svg)
6
- ![Version](https://img.shields.io/badge/version-0.2.1-brightgreen.svg)
6
+ ![Version](https://img.shields.io/badge/version-0.2.2-brightgreen.svg)
7
7
 
8
8
  **NestCraftX** est un CLI Node.js moderne et puissant pour generer automatiquement des projets NestJS avec une architecture propre et maintenable. Il implemente les meilleures pratiques modernes : **Clean Architecture**, **Domain-Driven Design (DDD)**, **Prisma/TypeORM/Mongoose**, **JWT Auth avec secrets auto-generes**, **Swagger**, **Docker**, et plus encore.
9
9
 
10
- > Version 0.2.1 : Amélioration majeure - Démo interactif avec flags, Auth refactorisée via UserService, templates professionnels (gitignore, README), code propre et maintenir par la communauté !
10
+ > Version 0.2.2 : Amélioration majeure - Démo interactif avec flags, Auth refactorisée via UserService, templates professionnels (gitignore, README), code propre et maintenir par la communauté !
11
11
 
12
12
  ---
13
13
 
@@ -28,7 +28,7 @@ demo
28
28
 
29
29
  ---
30
30
 
31
- ## Nouveautes v0.2.1
31
+ ## Nouveautes v0.2.2
32
32
 
33
33
  ### Demo Command Amélioré
34
34
 
@@ -548,7 +548,7 @@ Merci à tous les contributeurs et à la communauté NestJS !
548
548
 
549
549
  ---
550
550
 
551
- **NestCraftX v0.2.1** - Clean Architecture Made Simple
551
+ **NestCraftX v0.2.2** - Clean Architecture Made Simple
552
552
 
553
553
  Pour plus d'informations:
554
554
 
Binary file