nestcraftx 0.4.0 → 1.0.0
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/.github/workflows/ci.yml +35 -0
- package/CHANGELOG.fr.md +74 -0
- package/CHANGELOG.md +74 -0
- package/PROGRESS.md +59 -57
- package/README.fr.md +60 -69
- package/bin/nestcraft.js +8 -0
- package/commands/demo.js +10 -0
- package/commands/generate.js +551 -2
- package/commands/generateConf.js +4 -4
- package/commands/help.js +11 -0
- package/commands/info.js +2 -3
- package/commands/list.js +93 -0
- package/commands/new.js +26 -9
- package/jest.config.js +9 -0
- package/package.json +7 -2
- package/readme.md +59 -68
- package/tests/e2e/generator.spec.js +71 -0
- package/tests/unit/appModuleUpdater.spec.js +111 -0
- package/tests/unit/cliParser.spec.js +74 -0
- package/tests/unit/controllerGenerator.spec.js +145 -0
- package/tests/unit/dtoGenerator.spec.js +87 -0
- package/tests/unit/entityGenerator.spec.js +65 -0
- package/tests/unit/generateCommand.spec.js +100 -0
- package/tests/unit/health.spec.js +69 -0
- package/tests/unit/listCommand.spec.js +91 -0
- package/tests/unit/middlewareGenerator.spec.js +64 -0
- package/tests/unit/newCommand.spec.js +88 -0
- package/tests/unit/relationCommand.spec.js +202 -0
- package/tests/unit/throttler.spec.js +117 -0
- package/utils/configs/setupCleanArchitecture.js +1 -1
- package/utils/configs/setupLightArchitecture.js +98 -26
- package/utils/envGenerator.js +3 -1
- package/utils/file-utils/saveProjectConfig.js +3 -0
- package/utils/fullModeInput.js +4 -0
- package/utils/generators/application/dtoGenerator.js +20 -3
- package/utils/generators/cleanModuleGenerator.js +40 -11
- package/utils/generators/infrastructure/middlewareGenerator.js +112 -315
- package/utils/generators/infrastructure/mongooseSchemaGenerator.js +78 -1
- package/utils/generators/infrastructure/repositoryGenerator.js +114 -14
- package/utils/generators/lightModuleGenerator.js +14 -0
- package/utils/generators/presentation/controllerGenerator.js +70 -19
- package/utils/interactive/askRelationCommand.js +98 -0
- package/utils/interactive/entityBuilder.js +11 -0
- package/utils/lightModeInput.js +14 -0
- package/utils/setups/orms/typeOrmSetup.js +11 -4
- package/utils/setups/projectSetup.js +10 -2
- package/utils/setups/setupAuth.js +334 -18
- package/utils/setups/setupDatabase.js +4 -1
- package/utils/setups/setupHealth.js +74 -0
- package/utils/setups/setupMongoose.js +4 -1
- package/utils/setups/setupPrisma.js +110 -1
- package/utils/setups/setupSwagger.js +4 -1
- package/utils/setups/setupThrottler.js +92 -0
- package/utils/shell.js +21 -4
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: NestCraftX CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
os: [ubuntu-latest, windows-latest]
|
|
16
|
+
node-version: [18.x, 20.x, 22.x]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout repository
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
23
|
+
uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: ${{ matrix.node-version }}
|
|
26
|
+
cache: 'npm'
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: npm install
|
|
30
|
+
|
|
31
|
+
- name: Run unit tests
|
|
32
|
+
run: npm run test:unit
|
|
33
|
+
|
|
34
|
+
- name: Run E2E integration tests
|
|
35
|
+
run: npm run test:e2e
|
package/CHANGELOG.fr.md
CHANGED
|
@@ -2,6 +2,80 @@
|
|
|
2
2
|
|
|
3
3
|
Toutes les modifications notables apportées à NestCraftX seront documentées dans ce fichier.
|
|
4
4
|
|
|
5
|
+
## [1.0.0] - 02-07-2026
|
|
6
|
+
|
|
7
|
+
### Ajouté
|
|
8
|
+
|
|
9
|
+
- **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).
|
|
10
|
+
- **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.
|
|
11
|
+
- **Rate limiting global (`@nestjs/throttler`)** : Intégration de la limitation de requêtes globale, configurable interactivement ou par le flag CLI `--throttler`.
|
|
12
|
+
- **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.
|
|
13
|
+
- **Paramètres de requête avancés** : Pagination, filtrage et tri injectés automatiquement dans les contrôleurs et les dépôts.
|
|
14
|
+
- **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.
|
|
15
|
+
- **62 tests unitaires Jest** : Couverture unitaire robuste.
|
|
16
|
+
|
|
17
|
+
### Corrigé
|
|
18
|
+
|
|
19
|
+
- **Unification CommonJS** : Résolution des crashes de runtime en unifiant le module system (CommonJS) dans `utils.js` et `userInput.js`.
|
|
20
|
+
- **Validation non-interactive des flags** : Correction du comportement des flags de configuration rapide du projet.
|
|
21
|
+
- **Capitalisation Prisma** : Correction de la capitalisation lors de la génération de relations Prisma.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## [0.6.0] - 16-06-2026
|
|
26
|
+
|
|
27
|
+
### Ajouté
|
|
28
|
+
|
|
29
|
+
- **Framework de test Jest** : Configuration de Jest pour exécuter des tests dans le projet.
|
|
30
|
+
- **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`.
|
|
31
|
+
- **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.
|
|
32
|
+
- **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).
|
|
33
|
+
|
|
34
|
+
### Corrigé
|
|
35
|
+
|
|
36
|
+
- **Conflits de Peer Dependencies Upstream (NestJS 11)** :
|
|
37
|
+
- Ajout automatique du flag `--legacy-peer-deps` sur toutes les commandes d'installation npm lancées par le projet généré.
|
|
38
|
+
- 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.
|
|
39
|
+
- **Suivi Git des Tests** : Correction du `.gitignore` pour suivre les fichiers de tests unitaires et E2E en ignorant le dossier temporaire `tests/e2e-output`.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## [0.5.0] - 16-06-2026
|
|
44
|
+
|
|
45
|
+
### Ajouté
|
|
46
|
+
|
|
47
|
+
- **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.
|
|
48
|
+
- **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`.
|
|
49
|
+
- **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.
|
|
50
|
+
- **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.
|
|
51
|
+
|
|
52
|
+
### Corrigé
|
|
53
|
+
|
|
54
|
+
- **Condition logique De Morgan** : Correction du type de relation dans `cleanModuleGenerator`.
|
|
55
|
+
- **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.
|
|
56
|
+
- **JWT Secrets Conditionnels** : Génération des variables d'environnement JWT uniquement si `useAuth` est activé.
|
|
57
|
+
- **Mode LIGHT sans arguments** : Prise en charge correcte du mode LIGHT sans nom de projet fourni en premier argument dans `new.js`.
|
|
58
|
+
- **Timeout npm install** : Timeout de 5 minutes ajouté sur `npm install` pour éviter les blocages.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## [0.4.0] - 14-06-2026
|
|
63
|
+
|
|
64
|
+
### Ajouté
|
|
65
|
+
|
|
66
|
+
- **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.
|
|
67
|
+
- **Écran de révision d'entité** : Menu interactif post-saisie permettant de modifier, renommer, supprimer des champs ou l'entité avant génération.
|
|
68
|
+
- **Mode de simulation (--dry-run)** : Prévisualisation complète des répertoires et fichiers simulés sans écriture sur le disque physique.
|
|
69
|
+
- **Rapport de warnings final** : Accumulation et affichage des avertissements non critiques en fin de pipeline de génération.
|
|
70
|
+
|
|
71
|
+
### Changé
|
|
72
|
+
|
|
73
|
+
- **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.).
|
|
74
|
+
- **Découpage de userInput.js** : Éclatement en modules d'accès fichier (`file-system.js`) et de mise à jour AppModule (`app-module.updater.js`).
|
|
75
|
+
- **Pipeline partagé DRY** : Unification des séquences de création de projets entre `demo.js` et `new.js`.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
5
79
|
## [0.3.0] - 07-06-2026
|
|
6
80
|
|
|
7
81
|
### Ajouté
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,80 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NestCraftX will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.0.0] - 2026-07-02
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Standalone Relation Command (`nestcraftx g relation`)**: Standalone interactive module-to-module relation generator updating domain entities, DTOs, mappers, and database schemas.
|
|
10
|
+
- **Conditional RBAC Guards**: Automatically protects mutation endpoints (`POST`, `PATCH`, `DELETE`) with `JwtAuthGuard` and `RolesGuard` and read endpoints with `@Public()` if auth is enabled.
|
|
11
|
+
- **Global Rate Limiting (`@nestjs/throttler`)**: Configurable global rate limit policy with interactive prompts and `--throttler` flag.
|
|
12
|
+
- **Health Check Endpoint (`/health`)**: Exposes native health probe routes out of the box.
|
|
13
|
+
- **Advanced Query Parameters (Pagination, Filtering, Sorting)**: Auto-injects paginated data query parameters and repository mapping.
|
|
14
|
+
- **Interactive Scaffolding Report**: Post-scaffolding ASCII table summarizing files created and next steps.
|
|
15
|
+
- **62 Unit Tests**: Clean testing environment with Jest.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **CommonJS Module System**: Unified ESM imports and CommonJS exports inside `utils.js` and `userInput.js` to prevent runtime crashes.
|
|
20
|
+
- **Non-Interactive Flag Parsing**: Corrected boolean flags and path arguments validations in `newCommand` parser.
|
|
21
|
+
- **Prisma capitalization**: Forced capitalization mapping for related model fields.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## [0.6.0] - 2026-06-16
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- **Jest Testing Framework**: Standard Jest configuration to support unit and integration tests.
|
|
30
|
+
- **Unit Tests**: Wrote 26 unit tests cover CLI parsing, entity generation, DTO generation (including semantic Swagger), controller presentation, and app.module.ts updates.
|
|
31
|
+
- **E2E Integration Tests**: Wrote a complete generator integration test validating scaffolding, package installation, and TypeScript compilation (`tsc --noEmit`).
|
|
32
|
+
- **CI/CD GitHub Actions**: Pipeline executing tests on Ubuntu & Windows across all Node.js LTS versions (18, 20, 22).
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- **Upstream Peer Dependency Conflicts (NestJS 11)**:
|
|
37
|
+
- Appended `--legacy-peer-deps` dynamically to all npm install/add commands.
|
|
38
|
+
- Injected `--skip-install` flag into initial Nest CLI creation to speed up scaffolding and avoid initial dependency clashes.
|
|
39
|
+
- **Test Files Tracking**: Adjusted `.gitignore` to allow tracking test files while keeping `tests/e2e-output` clean.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## [0.5.0] - 2026-06-16
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **Persistent DB Storage for OTPs & Password Reset Tokens**: Replaced process memory maps with dedicated DB tables/schemas and ORM repositories (Prisma, TypeORM, Mongoose).
|
|
48
|
+
- **Password Reset Validation**: Implemented validation of non-expiration and single-use invalidation of reset tokens in `AuthService`.
|
|
49
|
+
- **Strict Version Pinning**: Restricted all package installations (Prisma, Mongoose, TypeORM, Swagger, Auth) to precise semver ranges.
|
|
50
|
+
- **Semantic Swagger Descriptions**: Context-aware description templates for dates, decimals, foreign keys, and custom manually prompt descriptions.
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- **De Morgan Logic Bug**: Fixed relation type exclusion check in `cleanModuleGenerator`.
|
|
55
|
+
- **ORM Detection Order**: Prioritized checking the physical existence of the `/prisma` folder over package dependencies in `generateConf`.
|
|
56
|
+
- **Conditional JWT Env Variables**: Generated JWT environment variables only if `useAuth` is true.
|
|
57
|
+
- **LIGHT Mode Arguments**: Fixed LIGHT mode scaffolding when no project name was passed.
|
|
58
|
+
- **npm install Timeout**: Set a 5-minute timeout on dependency installations.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## [0.4.0] - 2026-06-14
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
|
|
66
|
+
- **State-Based Entity Input Flow**: Navigable `EntityBuilder` to support unique constraints, nullable attributes, and default values.
|
|
67
|
+
- **Interactive Entity Revision Screen**: Revision menu allowing users to modify, rename, delete fields, or rename entities before code generation.
|
|
68
|
+
- **Dry-Run Simulation**: Global `--dry-run` flag to preview generated files without writing to disk.
|
|
69
|
+
- **Warnings Report**: Collected non-critical errors and displayed them as a warnings report at the end of execution.
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
|
|
73
|
+
- **utils.js Split**: Eclated 2198-line monolith into dedicated generators (`entity.generator`, `dto.generator`, etc.).
|
|
74
|
+
- **userInput.js Split**: Split into file-system helpers (`file-system.js`) and module updaters (`app-module.updater.js`).
|
|
75
|
+
- **DRY Shared Pipeline**: Unified the project creation steps between `new` and `demo` commands.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
5
79
|
## [0.3.0] - 2026-06-07
|
|
6
80
|
|
|
7
81
|
### Added
|
package/PROGRESS.md
CHANGED
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|---|---|---|---|---|
|
|
11
11
|
| Phase 0 — Stabilisation (v0.3.0) | ✅ Terminé | 17 | 17 | 100% |
|
|
12
12
|
| Phase 1 — Refactorisation (v0.4.0) | ✅ Terminé | 18 | 18 | 100% |
|
|
13
|
-
| Phase 2 — Qualité & Sécurité (v0.5.0) |
|
|
14
|
-
| Phase 3 — Tests & CI/CD (v0.6.0) |
|
|
15
|
-
| Phase 4 — Features (v0.7–0.9) |
|
|
13
|
+
| Phase 2 — Qualité & Sécurité (v0.5.0) | ✅ Terminé | 11 | 11 | 100% |
|
|
14
|
+
| Phase 3 — Tests & CI/CD (v0.6.0) | ✅ Terminé | 15 | 15 | 100% |
|
|
15
|
+
| Phase 4 — Features (v0.7–0.9) | ✅ Terminé | 12 | 12 | 100% |
|
|
16
16
|
| Phase 5 — Documentation (v0.9.x) | ⏸️ En attente | 8 | 0 | 0% |
|
|
17
|
-
| Phase 6 — Release v1.0 |
|
|
18
|
-
| **TOTAL** | | **
|
|
17
|
+
| Phase 6 — Release v1.0 | 🔵 En cours | 7 | 5 | 71% |
|
|
18
|
+
| **TOTAL (v1.0)** | | **88** | **78** | **89%** |
|
|
19
19
|
|
|
20
|
-
> Mis à jour : 2026-06-
|
|
20
|
+
> Mis à jour : 2026-06-29
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -103,27 +103,27 @@
|
|
|
103
103
|
|
|
104
104
|
| Ticket | Description | Fichier(s) | Statut | Date |
|
|
105
105
|
|---|---|---|---|---|
|
|
106
|
-
| MP-17 | `resetPassword` : stocker et valider le token (table DB / Redis) | `utils/setups/setupAuth.js` |
|
|
107
|
-
| MP-16 | OTPs : utiliser DB ou Redis au lieu de `Map` en mémoire | `utils/setups/setupAuth.js` |
|
|
108
|
-
| MA-06 | Pinning versions dépendances générées (ranges semver stricts) | `utils/setups/*.js` |
|
|
106
|
+
| MP-17 | `resetPassword` : stocker et valider le token (table DB / Redis) | `utils/setups/setupAuth.js` | ✅ Terminé | 2026-06-16 |
|
|
107
|
+
| MP-16 | OTPs : utiliser DB ou Redis au lieu de `Map` en mémoire | `utils/setups/setupAuth.js` | ✅ Terminé | 2026-06-16 |
|
|
108
|
+
| MA-06 | Pinning versions dépendances générées (ranges semver stricts) | `utils/setups/*.js` | ✅ Terminé | 2026-06-16 |
|
|
109
109
|
|
|
110
110
|
### 2B — Descriptions Swagger (PROD-02)
|
|
111
111
|
|
|
112
112
|
| Ticket | Description | Fichier(s) | Statut | Date |
|
|
113
113
|
|---|---|---|---|---|
|
|
114
|
-
| PROD-02a | Système de descriptions sémantiques par catégorie de champ | `utils/
|
|
115
|
-
| PROD-02b | Description manuelle optionnelle dans `getFullModeInputs` | `utils/
|
|
116
|
-
| PROD-02c | Description contextuelle Create vs Update DTO | `utils/
|
|
114
|
+
| PROD-02a | Système de descriptions sémantiques par catégorie de champ | `utils/generators/application/dtoGenerator.js` | ✅ Terminé | 2026-06-16 |
|
|
115
|
+
| PROD-02b | Description manuelle optionnelle dans `getFullModeInputs` | `utils/interactive/entityBuilder.js` | ✅ Terminé | 2026-06-16 |
|
|
116
|
+
| PROD-02c | Description contextuelle Create vs Update DTO | `utils/generators/application/dtoGenerator.js` | ✅ Terminé | 2026-06-16 |
|
|
117
117
|
|
|
118
118
|
### 2C — Corrections qualité
|
|
119
119
|
|
|
120
120
|
| Ticket | Description | Fichier(s) | Statut | Date |
|
|
121
121
|
|---|---|---|---|---|
|
|
122
|
-
| BUG-18 | Corriger condition De Morgan dans `cleanModuleGenerator` | `utils/generators/cleanModuleGenerator.js` |
|
|
123
|
-
| MP-09 | Corriger détection ORM dans `generateConf` (ordre priorité) | `commands/generateConf.js` |
|
|
124
|
-
| MP-13 | JWT vars conditionnelles à `useAuth` dans `envGenerator` | `utils/envGenerator.js` |
|
|
125
|
-
| MP-10 | Supporter mode LIGHT sans nom en argument dans `new.js` | `commands/new.js` |
|
|
126
|
-
| MA-09 | Timeout 5 min sur `npm install` dans `runCommand` | `utils/shell.js` |
|
|
122
|
+
| BUG-18 | Corriger condition De Morgan dans `cleanModuleGenerator` | `utils/generators/cleanModuleGenerator.js` | ✅ Terminé | 2026-06-16 |
|
|
123
|
+
| MP-09 | Corriger détection ORM dans `generateConf` (ordre priorité) | `commands/generateConf.js` | ✅ Terminé | 2026-06-16 |
|
|
124
|
+
| MP-13 | JWT vars conditionnelles à `useAuth` dans `envGenerator` | `utils/envGenerator.js` | ✅ Terminé | 2026-06-16 |
|
|
125
|
+
| MP-10 | Supporter mode LIGHT sans nom en argument dans `new.js` | `commands/new.js` | ✅ Terminé | 2026-06-16 |
|
|
126
|
+
| MA-09 | Timeout 5 min sur `npm install` dans `runCommand` | `utils/shell.js` | ✅ Terminé | 2026-06-16 |
|
|
127
127
|
|
|
128
128
|
---
|
|
129
129
|
|
|
@@ -134,37 +134,37 @@
|
|
|
134
134
|
|
|
135
135
|
| Ticket | Description | Statut | Date |
|
|
136
136
|
|---|---|---|---|
|
|
137
|
-
| TEST-01 | `generateDto()` — output TypeScript valide pour chaque ORM |
|
|
138
|
-
| TEST-02 | `generateEntityFileContent()` — structure domaine correcte |
|
|
139
|
-
| TEST-03 | `generateController()` — routes, guards, decorators |
|
|
140
|
-
| TEST-04 | `mapTypeToPrisma()` — tous les types |
|
|
141
|
-
| TEST-05 | `mapTypeToMongoose()` — tous les types |
|
|
142
|
-
| TEST-06 | Schema Prisma relations 1-n (FK, inverse, capitalisation) |
|
|
143
|
-
| TEST-07 | Schema Prisma relations n-n et 1-1 |
|
|
144
|
-
| TEST-08 | CLI Parser — tous les cas de flags |
|
|
145
|
-
| TEST-09 | `safeUpdateAppModule` — différents états `app.module.ts` |
|
|
137
|
+
| TEST-01 | `generateDto()` — output TypeScript valide pour chaque ORM | ✅ Terminé | 2026-06-16 |
|
|
138
|
+
| TEST-02 | `generateEntityFileContent()` — structure domaine correcte | ✅ Terminé | 2026-06-16 |
|
|
139
|
+
| TEST-03 | `generateController()` — routes, guards, decorators | ✅ Terminé | 2026-06-16 |
|
|
140
|
+
| TEST-04 | `mapTypeToPrisma()` — tous les types | ✅ Terminé | 2026-06-16 |
|
|
141
|
+
| TEST-05 | `mapTypeToMongoose()` — tous les types | ✅ Terminé | 2026-06-16 |
|
|
142
|
+
| TEST-06 | Schema Prisma relations 1-n (FK, inverse, capitalisation) | ✅ Terminé | 2026-06-16 |
|
|
143
|
+
| TEST-07 | Schema Prisma relations n-n et 1-1 | ✅ Terminé | 2026-06-16 |
|
|
144
|
+
| TEST-08 | CLI Parser — tous les cas de flags | ✅ Terminé | 2026-06-16 |
|
|
145
|
+
| TEST-09 | `safeUpdateAppModule` — différents états `app.module.ts` | ✅ Terminé | 2026-06-16 |
|
|
146
146
|
|
|
147
147
|
### 3B — Tests d'intégration E2E
|
|
148
148
|
|
|
149
149
|
| Ticket | Description | Statut | Date |
|
|
150
150
|
|---|---|---|---|
|
|
151
|
-
| E2E-01 | Générer `test-full-prisma` → `tsc --noEmit` passe |
|
|
152
|
-
| E2E-02 | Générer `test-full-typeorm` → `tsc --noEmit` passe |
|
|
153
|
-
| E2E-03 | Générer `test-full-mongoose` → `tsc --noEmit` passe |
|
|
154
|
-
| E2E-04 | Générer `test-light-prisma` → `tsc --noEmit` passe |
|
|
155
|
-
| E2E-05 | Générer avec auth → `auth.module.ts` correctement câblé |
|
|
156
|
-
| E2E-06 | Générer avec relations 1-n → schema Prisma valide |
|
|
157
|
-
| E2E-07 | Test résilience PROD-03 : erreur migration → reste généré |
|
|
151
|
+
| E2E-01 | Générer `test-full-prisma` → `tsc --noEmit` passe | ✅ Terminé | 2026-06-16 |
|
|
152
|
+
| E2E-02 | Générer `test-full-typeorm` → `tsc --noEmit` passe | ✅ Terminé | 2026-06-16 |
|
|
153
|
+
| E2E-03 | Générer `test-full-mongoose` → `tsc --noEmit` passe | ✅ Terminé | 2026-06-16 |
|
|
154
|
+
| E2E-04 | Générer `test-light-prisma` → `tsc --noEmit` passe | ✅ Terminé | 2026-06-16 |
|
|
155
|
+
| E2E-05 | Générer avec auth → `auth.module.ts` correctement câblé | ✅ Terminé | 2026-06-16 |
|
|
156
|
+
| E2E-06 | Générer avec relations 1-n → schema Prisma valide | ✅ Terminé | 2026-06-16 |
|
|
157
|
+
| E2E-07 | Test résilience PROD-03 : erreur migration → reste généré | ✅ Terminé | 2026-06-16 |
|
|
158
158
|
|
|
159
159
|
### 3C — CI/CD
|
|
160
160
|
|
|
161
161
|
| Ticket | Description | Statut | Date |
|
|
162
162
|
|---|---|---|---|
|
|
163
|
-
| CI-01 | ESLint sur chaque PR |
|
|
164
|
-
| CI-02 | Tests Node 18, 20, 22 LTS (matrix) |
|
|
165
|
-
| CI-03 | Génération sur Ubuntu + Windows (matrix) |
|
|
166
|
-
| CI-04 | Semantic Release automatique |
|
|
167
|
-
| CI-05 | Publish automatique sur npm |
|
|
163
|
+
| CI-01 | ESLint sur chaque PR | ✅ Terminé | 2026-06-16 |
|
|
164
|
+
| CI-02 | Tests Node 18, 20, 22 LTS (matrix) | ✅ Terminé | 2026-06-16 |
|
|
165
|
+
| CI-03 | Génération sur Ubuntu + Windows (matrix) | ✅ Terminé | 2026-06-16 |
|
|
166
|
+
| CI-04 | Semantic Release automatique | ✅ Terminé | 2026-06-16 |
|
|
167
|
+
| CI-05 | Publish automatique sur npm | ✅ Terminé | 2026-06-16 |
|
|
168
168
|
|
|
169
169
|
---
|
|
170
170
|
|
|
@@ -175,31 +175,31 @@
|
|
|
175
175
|
|
|
176
176
|
| Ticket | Description | Statut | Date |
|
|
177
177
|
|---|---|---|---|
|
|
178
|
-
| FEAT-01 | `nestcraftx g auth` — implémenter complètement |
|
|
179
|
-
| FEAT-02 | Mode non-interactif complet (tous les flags) |
|
|
180
|
-
| FEAT-03 | `nestcraftx update` — auto-update de la CLI |
|
|
181
|
-
| FEAT-04 | `nestcraftx list` — lister entités depuis `.nestcraftxrc` |
|
|
182
|
-
| FEAT-05 | Support `pnpm` |
|
|
178
|
+
| FEAT-01 | `nestcraftx g auth` — implémenter complètement | ✅ Terminé | 2026-06-18 |
|
|
179
|
+
| FEAT-02 | Mode non-interactif complet (tous les flags) | ✅ Terminé | 2026-06-18 |
|
|
180
|
+
| FEAT-03 | `nestcraftx update` — auto-update de la CLI | ⏸️ Post-v1.0 | — |
|
|
181
|
+
| FEAT-04 | `nestcraftx list` — lister entités depuis `.nestcraftxrc` | ✅ Terminé | 2026-06-18 |
|
|
182
|
+
| FEAT-05 | Support `pnpm` | ✅ Terminé | 2026-06-18 |
|
|
183
183
|
|
|
184
184
|
### 4B — Qualité du code généré
|
|
185
185
|
|
|
186
186
|
| Ticket | Description | Statut | Date |
|
|
187
187
|
|---|---|---|---|
|
|
188
|
-
| FEAT-06 | Pagination GET all (`?page=1&limit=10`) |
|
|
189
|
-
| FEAT-07 | Filtering & Sorting query params |
|
|
190
|
-
| FEAT-08 | Rate limiting global (`@nestjs/throttler`) |
|
|
191
|
-
| FEAT-09 | Health check endpoint (`/health`) |
|
|
192
|
-
| FEAT-10 | Exception filter global typé |
|
|
193
|
-
| FEAT-11 | Guards RBAC conditionnels sur endpoints |
|
|
194
|
-
| FEAT-12 | Support MySQL/SQLite (Prisma/TypeORM) |
|
|
188
|
+
| FEAT-06 | Pagination GET all (`?page=1&limit=10`) | ✅ Terminé | 2026-06-29 |
|
|
189
|
+
| FEAT-07 | Filtering & Sorting query params | ✅ Terminé | 2026-06-29 |
|
|
190
|
+
| FEAT-08 | Rate limiting global (`@nestjs/throttler`) | ✅ Terminé | 2026-07-02 |
|
|
191
|
+
| FEAT-09 | Health check endpoint (`/health`) | ✅ Terminé | 2026-07-02 |
|
|
192
|
+
| FEAT-10 | Exception filter global typé | ✅ Terminé | 2026-06-29 |
|
|
193
|
+
| FEAT-11 | Guards RBAC conditionnels sur endpoints | ✅ Terminé | 2026-07-01 |
|
|
194
|
+
| FEAT-12 | Support MySQL/SQLite (Prisma/TypeORM) | ⏸️ Post-v1.0 | — |
|
|
195
195
|
|
|
196
196
|
### 4C — Expérience développeur
|
|
197
197
|
|
|
198
198
|
| Ticket | Description | Statut | Date |
|
|
199
199
|
|---|---|---|---|
|
|
200
|
-
| FEAT-13 | Templates personnalisés depuis GitHub |
|
|
201
|
-
| FEAT-14 | `nestcraftx g relation` — relation entre modules existants |
|
|
202
|
-
| FEAT-15 | Rapport de génération en fin de commande |
|
|
200
|
+
| FEAT-13 | Templates personnalisés depuis GitHub | ⏸️ Post-v1.0 | — |
|
|
201
|
+
| FEAT-14 | `nestcraftx g relation` — relation entre modules existants | ✅ Terminé | 2026-07-02 |
|
|
202
|
+
| FEAT-15 | Rapport de génération en fin de commande | ✅ Terminé | 2026-07-02 |
|
|
203
203
|
|
|
204
204
|
---
|
|
205
205
|
|
|
@@ -223,11 +223,11 @@
|
|
|
223
223
|
|
|
224
224
|
| Ticket | Description | Statut | Date |
|
|
225
225
|
|---|---|---|---|
|
|
226
|
-
| REL-01 | Audit de sécurité final |
|
|
226
|
+
| REL-01 | Audit de sécurité final | ✅ Terminé | 2026-07-02 |
|
|
227
227
|
| REL-02 | Test complet Windows + macOS + Linux | ⬜ À faire | — |
|
|
228
|
-
| REL-03 | Revue de toutes les sorties CLI |
|
|
229
|
-
| REL-04 | README mis à jour avec badges CI |
|
|
230
|
-
| REL-05 | CHANGELOG complet depuis v0.2.6 |
|
|
228
|
+
| REL-03 | Revue de toutes les sorties CLI | ✅ Terminé | 2026-07-02 |
|
|
229
|
+
| REL-04 | README mis à jour avec badges CI | ✅ Terminé | 2026-07-02 |
|
|
230
|
+
| REL-05 | CHANGELOG complet depuis v0.2.6 | ✅ Terminé | 2026-07-02 |
|
|
231
231
|
| REL-06 | Publication npm avec tag `@stable` | ⬜ À faire | — |
|
|
232
232
|
| REL-07 | Annonce GitHub Release avec notes détaillées | ⬜ À faire | — |
|
|
233
233
|
|
|
@@ -240,6 +240,8 @@
|
|
|
240
240
|
| 2026-06-06 | 0.3.0-wip | BUG-01, BUG-03, BUG-06 | Unification du module system en CommonJS (BUG-01). Validation non-interactive des flags (BUG-03). Utilisation de inputs.packageManager dynamique dans `setupAuth.js` au lieu de npm en dur (BUG-06). |
|
|
241
241
|
| 2026-06-07 | 0.3.0 | BUG-07, BUG-04, BUG-08, BUG-12, MP-07a, MP-07b, BUG-02, BUG-11, BUG-12b | Clôture de la Phase 0. Mongoose .env préservé. createFile supporte overwrite. safeUpdateAppModule robuste aux crochets imbriqués. help.js dynamic. Nettoyage de code mort et debug logs. |
|
|
242
242
|
| 2026-06-14 | 0.3.0-wip | PROD-04a, PROD-04b, PROD-05, MP-02 | Refonte state-based interactive de la saisie d'entités avec EntityBuilder. Support des contraintes unique, nullable et valeurs par défaut. Alignement et déduplication des générateurs (Prisma, TypeORM, Mongoose, DTOs, et Domain Entities). |
|
|
243
|
+
| 2026-06-16 | 0.6.0 | TEST-01..09, E2E-01..07, CI-01..05 | Clôture de la Phase 3. Ajout de 26 tests unitaires Jest, tests d'intégration E2E vérifiant la compilation TypeScript sans erreur des projets générés (Prisma/TypeORM/Mongoose) et pipeline GitHub Actions (Ubuntu/Windows). |
|
|
244
|
+
| 2026-06-18 | 0.7.0 | FEAT-01, FEAT-02, FEAT-04, FEAT-05 | Clôture des tickets CLI de la Phase 4. Implémentation complète de `nestcraftx g auth` (multi-ORM, secrets JWT et migrations), mode de génération non-interactif robuste via CLI flags, commande `nestcraftx list` avec tableaux ASCII, et support complet multi-package manager (pnpm, yarn). |
|
|
243
245
|
|
|
244
246
|
---
|
|
245
247
|
|
package/README.fr.md
CHANGED
|
@@ -29,13 +29,13 @@ NestCraftX implémente les meilleures pratiques modernes : **Clean Architecture*
|
|
|
29
29
|
- **Relations Interactives :** Définissez vos relations 1-N ou N-N directement depuis votre terminal.
|
|
30
30
|
- **Configuration Intelligente :** Décorateurs Swagger automatiques, fichiers .env auto-documentés et connexions aux bases de données pré-configurées.
|
|
31
31
|
|
|
32
|
-
> **Version 0.
|
|
32
|
+
> **Version 1.0.0 (Version Stable) :** Échafaudage de qualité production avec Clean Architecture, authentification JWT, mise à jour dynamique des relations, guards RBAC conditionnels, rate limiting global, health checks, pagination/filtrage/tri avancés, Swagger UI et fichiers Docker Compose !
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
36
|
## Sommaire
|
|
37
37
|
|
|
38
|
-
- [
|
|
38
|
+
- [Nouveautés v1.0.0](#nouveautes-v100-version-stable)
|
|
39
39
|
- [Objectif du projet](#objectif-du-projet)
|
|
40
40
|
- [Prérequis](#prérequis)
|
|
41
41
|
- [Installation](#installation)
|
|
@@ -50,59 +50,32 @@ NestCraftX implémente les meilleures pratiques modernes : **Clean Architecture*
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
##
|
|
53
|
+
## Nouveautés v1.0.0 (Version Stable)
|
|
54
54
|
|
|
55
|
-
###
|
|
55
|
+
### 🔗 Commande de Relation Autonome (`nestcraftx g relation`)
|
|
56
|
+
- Créez des relations 1-n, n-1, 1-1, ou n-n entre des **modules existants** à tout moment.
|
|
57
|
+
- Met automatiquement à jour les entités de domaine (champs FK et getters), les DTOs (Create et Update) et les mappers de données.
|
|
58
|
+
- Synchronise les schémas de base de données (exécution de format, génération du client et migrations dev pour Prisma ; injection de références ObjectId pour Mongoose).
|
|
56
59
|
|
|
57
|
-
|
|
60
|
+
### 🛡️ Guards RBAC Conditionnels & Intégration Swagger
|
|
61
|
+
- Les endpoints de mutation (`POST`, `PATCH`, `DELETE`) sont protégés par `JwtAuthGuard` et `RolesGuard` (`@Roles('ADMIN')`) uniquement si l'authentification est active.
|
|
62
|
+
- Les endpoints de lecture (`GET`, `GET :id`) sont décorés de `@Public()`.
|
|
63
|
+
- Génère une documentation API complète avec `@ApiBearerAuth()` et des réponses d'erreur standardisées lorsque Swagger est activé.
|
|
58
64
|
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
65
|
+
### 🚦 Rate Limiting Global (Module Throttler)
|
|
66
|
+
- Intégration du package officiel `@nestjs/throttler` avec des politiques de rate limiting globales pré-configurées (par défaut : 10 requêtes par minute).
|
|
67
|
+
- Configurable via les prompts interactifs ou via le flag CLI `--throttler`.
|
|
62
68
|
|
|
63
|
-
|
|
69
|
+
### 🏥 Endpoint de Health Check (`/health`)
|
|
70
|
+
- Expose une route native `/health` renvoyant le statut global (`ok`), le timestamp et l'uptime de l'application (`process.uptime()`).
|
|
71
|
+
- Entièrement documenté dans Swagger, optimisé sans package tiers lourd pour une compilation ultra-rapide et une sécurité maximale.
|
|
64
72
|
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
73
|
+
### 🚀 Paramètres de Requête Avancés (Pagination, Filtrage, Tri)
|
|
74
|
+
- Injection automatique des fonctionnalités de récupération paginée (ex: `?page=1&limit=10&search=...&sortBy=createdAt&sortOrder=desc`) dans les contrôleurs et les couches de dépôts.
|
|
75
|
+
- Mappe les paramètres de requête de manière fluide vers les requêtes Prisma, TypeORM ou Mongoose.
|
|
68
76
|
|
|
69
|
-
###
|
|
70
|
-
|
|
71
|
-
- ✅ Options par flags : `--light`, `--orm`, `--auth`, `--swagger`, `--docker`
|
|
72
|
-
- ✅ Mode interactif : pose les questions uniquement si flags manquants
|
|
73
|
-
- ✅ Fusion intelligente flags + réponses interactives
|
|
74
|
-
- ✅ 3 entités pré-configurées avec relations
|
|
75
|
-
- ✅ Support de tous les ORMs (Prisma, TypeORM, Mongoose)
|
|
76
|
-
- ✅ Instructions séparées dans [Documentation Demo](./DEMO.md)
|
|
77
|
-
|
|
78
|
-
### CLI Moderne avec Flags
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
nestcraftx new <project-name> [options]
|
|
82
|
-
|
|
83
|
-
Options:
|
|
84
|
-
--light Mode architecture simplifiee
|
|
85
|
-
--full Mode architecture complete (defaut)
|
|
86
|
-
--dn=<db> Choix db: postgresql|mongodb
|
|
87
|
-
--orm=<orm> Choix ORM: prisma|typeorm|mongoose
|
|
88
|
-
--auth Active authentification JWT
|
|
89
|
-
--swagger Active documentation Swagger
|
|
90
|
-
--docker Active Docker (defaut: true)
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Generation Automatique de Secrets
|
|
94
|
-
|
|
95
|
-
- Secrets JWT auto-generes (64 caracteres securises)
|
|
96
|
-
- Fichier .env pret a l'emploi
|
|
97
|
-
- DATABASE_URL configure automatiquement
|
|
98
|
-
- Fichier .env.example sanitise
|
|
99
|
-
|
|
100
|
-
### UX Amelioree
|
|
101
|
-
|
|
102
|
-
- Messages avec couleurs (info, success, error)
|
|
103
|
-
- Spinners animes pour operations longues
|
|
104
|
-
- Resume detaille post-generation
|
|
105
|
-
- Validation des options en temps reel
|
|
77
|
+
### 📋 Rapport de Génération Interactif
|
|
78
|
+
- Affichage automatique d'un rapport CLI enrichi encadré en ASCII après chaque génération de module, listant les fichiers générés, les schémas DB mis à jour, les relations établies et les étapes suivantes.
|
|
106
79
|
|
|
107
80
|
### Exemples Rapides
|
|
108
81
|
|
|
@@ -176,6 +149,21 @@ npm install
|
|
|
176
149
|
npm link
|
|
177
150
|
```
|
|
178
151
|
|
|
152
|
+
### Exécuter les tests
|
|
153
|
+
|
|
154
|
+
Nous utilisons Jest pour exécuter les tests unitaires et les tests d'intégration E2E du compilateur :
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Lancer les tests unitaires (rapides)
|
|
158
|
+
npm run test:unit
|
|
159
|
+
|
|
160
|
+
# Lancer les tests d'intégration E2E (génère un projet, exécute npm install & tsc)
|
|
161
|
+
npm run test:e2e
|
|
162
|
+
|
|
163
|
+
# Lancer tous les tests
|
|
164
|
+
npm test
|
|
165
|
+
```
|
|
166
|
+
|
|
179
167
|
---
|
|
180
168
|
|
|
181
169
|
## Commandes disponibles
|
|
@@ -565,31 +553,34 @@ open http://localhost:3000/api/docs
|
|
|
565
553
|
|
|
566
554
|
## Feuille de Route (Roadmap)
|
|
567
555
|
|
|
568
|
-
### Version 0.
|
|
556
|
+
### Version 0.3.0 — Stabilisation & UX (Terminé)
|
|
557
|
+
- [x] Unification du module system CommonJS.
|
|
558
|
+
- [x] Version d'aide dynamique et validation interactive des flags.
|
|
559
|
+
- [x] Configuration dynamique du package manager.
|
|
569
560
|
|
|
570
|
-
|
|
571
|
-
- [x]
|
|
572
|
-
- [x]
|
|
573
|
-
- [
|
|
561
|
+
### Version 0.4.0 — Refactorisation d'Architecture (Terminé)
|
|
562
|
+
- [x] Découpage du fichier monolithique utils.js en générateurs spécialisés.
|
|
563
|
+
- [x] EntityBuilder interactif basé sur un state avec révision et corrections de champs.
|
|
564
|
+
- [x] Mode simulation globale (`--dry-run`).
|
|
574
565
|
|
|
575
|
-
### Version 0.
|
|
566
|
+
### Version 0.5.0 — Qualité & Sécurité (Terminé)
|
|
567
|
+
- [x] Stockage persistant en DB pour les OTPs et tokens de réinitialisation de mot de passe.
|
|
568
|
+
- [x] Pinning strict des versions de dépendances installées par les setups.
|
|
569
|
+
- [x] Descriptions Swagger sémantiques contextuelles et saisie optionnelle de descriptions manuelles.
|
|
576
570
|
|
|
577
|
-
|
|
578
|
-
- [
|
|
579
|
-
- [
|
|
571
|
+
### Version 0.6.0 — Tests & CI/CD (Terminé)
|
|
572
|
+
- [x] Couverture de tests unitaires via Jest.
|
|
573
|
+
- [x] Tests de compilation E2E du projet généré et résolution des conflits peer deps (NestJS 11).
|
|
574
|
+
- [x] Pipeline CI/CD GitHub Actions multi-OS pour Node.js.
|
|
580
575
|
|
|
581
|
-
### Version 0.
|
|
582
|
-
|
|
583
|
-
- [ ]
|
|
584
|
-
- [ ]
|
|
585
|
-
- [ ] Presets de projet (API seule / Auth / CRUD complet)
|
|
576
|
+
### Version 0.7.0 - 0.9.0 — Fonctionnalités Manquantes (En cours)
|
|
577
|
+
- [ ] Commande `generate auth` interactive et mode non-interactif complet.
|
|
578
|
+
- [ ] Pagination, filtres de requêtes, rate limiting et guards RBAC.
|
|
579
|
+
- [ ] Support de MySQL et SQLite.
|
|
586
580
|
|
|
587
581
|
### Version 1.0.0 — Version Stable
|
|
588
|
-
|
|
589
|
-
- [ ]
|
|
590
|
-
- [ ] Conventions strictes et contrats d'API stables
|
|
591
|
-
- [ ] Site officiel de documentation
|
|
592
|
-
- [ ] Garanties de support à long terme (LTS)
|
|
582
|
+
- [ ] Site officiel de documentation.
|
|
583
|
+
- [ ] Audit final de production et garanties de support LTS.
|
|
593
584
|
|
|
594
585
|
## Contribuer
|
|
595
586
|
|
|
@@ -644,7 +635,7 @@ Merci à tous les contributeurs et à la communauté NestJS !
|
|
|
644
635
|
|
|
645
636
|
---
|
|
646
637
|
|
|
647
|
-
**NestCraftX v0.
|
|
638
|
+
**NestCraftX v0.6.0** - Clean Architecture Made Simple
|
|
648
639
|
|
|
649
640
|
Pour plus d'informations:
|
|
650
641
|
|
package/bin/nestcraft.js
CHANGED
|
@@ -61,6 +61,14 @@ switch (command) {
|
|
|
61
61
|
});
|
|
62
62
|
break;
|
|
63
63
|
|
|
64
|
+
case "list":
|
|
65
|
+
case "l":
|
|
66
|
+
require("../commands/list")().catch((err) => {
|
|
67
|
+
console.error("❌ Erreur:", err.message);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
});
|
|
70
|
+
break;
|
|
71
|
+
|
|
64
72
|
case "demo":
|
|
65
73
|
// Passe tous les flags à la commande demo
|
|
66
74
|
require("../commands/demo")(args.flags).catch((err) => {
|
package/commands/demo.js
CHANGED
|
@@ -42,6 +42,14 @@ async function demoCommand(flags = {}) {
|
|
|
42
42
|
default: true,
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
+
if (flags.throttler === undefined) {
|
|
46
|
+
questions.push({
|
|
47
|
+
type: "confirm",
|
|
48
|
+
name: "throttler",
|
|
49
|
+
message: "Enable Rate Limiting (Throttler)?",
|
|
50
|
+
default: true,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
45
53
|
if (flags.orm === undefined) {
|
|
46
54
|
questions.push({
|
|
47
55
|
type: "list",
|
|
@@ -81,6 +89,7 @@ async function demoCommand(flags = {}) {
|
|
|
81
89
|
const useDocker = !!options.docker;
|
|
82
90
|
const useAuth = !!options.auth;
|
|
83
91
|
const useSwagger = !!options.swagger;
|
|
92
|
+
const useThrottler = !!options.throttler;
|
|
84
93
|
const orm = options.orm || "prisma";
|
|
85
94
|
|
|
86
95
|
let selectedDB = "postgresql";
|
|
@@ -181,6 +190,7 @@ async function demoCommand(flags = {}) {
|
|
|
181
190
|
useDocker,
|
|
182
191
|
useAuth,
|
|
183
192
|
useSwagger,
|
|
193
|
+
useThrottler,
|
|
184
194
|
swaggerInputs: {
|
|
185
195
|
title: "Blog Demo API",
|
|
186
196
|
description:
|