nestforge-generator 0.2.0 → 0.4.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.
Files changed (156) hide show
  1. package/README.md +24 -7
  2. package/README.pt-BR.md +24 -7
  3. package/dist/features/auth-strategy.js +7 -7
  4. package/dist/features/database.js +35 -0
  5. package/dist/features/database.js.map +1 -1
  6. package/dist/features/dependencies.js +3 -3
  7. package/dist/features/language.js +1 -1
  8. package/dist/features/language.js.map +1 -1
  9. package/dist/features/markers.js +11 -11
  10. package/dist/features/markers.js.map +1 -1
  11. package/dist/generator.js +14 -2
  12. package/dist/generator.js.map +1 -1
  13. package/dist/index.js +8 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/project-name.js +50 -0
  16. package/dist/project-name.js.map +1 -0
  17. package/dist/prompts.js +15 -11
  18. package/dist/prompts.js.map +1 -1
  19. package/package.json +2 -1
  20. package/templates/drizzle/README.md +2 -0
  21. package/templates/drizzle/README.pt-BR.md +2 -0
  22. package/templates/drizzle/drizzle.config.ts +2 -2
  23. package/templates/drizzle/src/auth/auth.controller.ts +35 -35
  24. package/templates/drizzle/src/auth/auth.service.spec.ts +4 -4
  25. package/templates/drizzle/src/auth/auth.service.ts +9 -9
  26. package/templates/drizzle/src/auth/dto/forgot-password.dto.ts +2 -2
  27. package/templates/drizzle/src/auth/dto/login.dto.ts +3 -3
  28. package/templates/drizzle/src/auth/dto/register.dto.ts +4 -4
  29. package/templates/drizzle/src/auth/dto/reset-password.dto.ts +3 -3
  30. package/templates/drizzle/src/auth/guards/github-auth.guard.ts +2 -2
  31. package/templates/drizzle/src/auth/guards/google-auth.guard.ts +2 -2
  32. package/templates/drizzle/src/auth/guards/session-auth.guard.spec.ts +4 -4
  33. package/templates/drizzle/src/auth/guards/session-auth.guard.ts +2 -2
  34. package/templates/drizzle/src/auth/session.service.spec.ts +5 -5
  35. package/templates/drizzle/src/auth/session.service.ts +5 -5
  36. package/templates/drizzle/src/auth/strategies/github.strategy.ts +3 -3
  37. package/templates/drizzle/src/auth/token.service.ts +3 -3
  38. package/templates/drizzle/src/common/filters/http-exception.filter.ts +1 -1
  39. package/templates/drizzle/src/common/guards/permissions.guard.spec.ts +7 -7
  40. package/templates/drizzle/src/common/guards/roles.guard.spec.ts +4 -4
  41. package/templates/drizzle/src/common/middleware/csrf.middleware.spec.ts +5 -5
  42. package/templates/drizzle/src/common/middleware/csrf.middleware.ts +2 -2
  43. package/templates/drizzle/src/common/utils/avatar-storage.util.ts +2 -2
  44. package/templates/drizzle/src/config/env.validation.ts +1 -1
  45. package/templates/drizzle/src/database/seed.ts +4 -4
  46. package/templates/drizzle/src/health/health.controller.ts +2 -2
  47. package/templates/drizzle/src/health/indicators/drizzle-health.indicator.spec.ts +5 -5
  48. package/templates/drizzle/src/health/indicators/drizzle-health.indicator.ts +2 -2
  49. package/templates/drizzle/src/health/indicators/redis-health.indicator.spec.ts +5 -5
  50. package/templates/drizzle/src/health/indicators/redis-health.indicator.ts +3 -3
  51. package/templates/drizzle/src/mail/mail.processor.ts +4 -4
  52. package/templates/drizzle/src/mail/templates/email-templates.ts +7 -7
  53. package/templates/drizzle/src/metrics/metrics.service.ts +3 -3
  54. package/templates/drizzle/src/users/dto/create-user.dto.ts +5 -5
  55. package/templates/drizzle/src/users/dto/find-users-query.dto.ts +3 -3
  56. package/templates/drizzle/src/users/users.controller.ts +21 -21
  57. package/templates/drizzle/src/users/users.service.spec.ts +12 -12
  58. package/templates/drizzle/src/users/users.service.ts +4 -4
  59. package/templates/drizzle/test/auth.e2e-spec.ts +8 -8
  60. package/templates/drizzle/test/session-auth.e2e-spec.ts +9 -9
  61. package/templates/drizzle/test/users.e2e-spec.ts +18 -18
  62. package/templates/prisma/.github/workflows/ci.yml +24 -1
  63. package/templates/prisma/ARCHITECTURE.md +7 -1
  64. package/templates/prisma/ARCHITECTURE.pt-BR.md +7 -1
  65. package/templates/prisma/README.md +11 -7
  66. package/templates/prisma/README.pt-BR.md +11 -7
  67. package/templates/prisma/ROADMAP.md +5 -1
  68. package/templates/prisma/ROADMAP.pt-BR.md +5 -1
  69. package/templates/prisma/TESTING.md +25 -3
  70. package/templates/prisma/TESTING.pt-BR.md +25 -3
  71. package/templates/prisma/docker-compose.yml +29 -1
  72. package/templates/prisma/docs/adding-a-module.md +246 -230
  73. package/templates/prisma/docs/features-markers.md +11 -1
  74. package/templates/prisma/prisma/schema.prisma +4 -0
  75. package/templates/prisma/prisma/seed.ts +46 -46
  76. package/templates/prisma/src/auth/auth.controller.ts +35 -35
  77. package/templates/prisma/src/auth/auth.service.spec.ts +3 -3
  78. package/templates/prisma/src/auth/auth.service.ts +11 -11
  79. package/templates/prisma/src/auth/dto/forgot-password.dto.ts +2 -2
  80. package/templates/prisma/src/auth/dto/login.dto.ts +3 -3
  81. package/templates/prisma/src/auth/dto/register.dto.ts +4 -4
  82. package/templates/prisma/src/auth/dto/reset-password.dto.ts +3 -3
  83. package/templates/prisma/src/auth/guards/github-auth.guard.ts +10 -10
  84. package/templates/prisma/src/auth/guards/google-auth.guard.ts +10 -10
  85. package/templates/prisma/src/auth/guards/session-auth.guard.spec.ts +4 -4
  86. package/templates/prisma/src/auth/guards/session-auth.guard.ts +2 -2
  87. package/templates/prisma/src/auth/session.service.spec.ts +5 -5
  88. package/templates/prisma/src/auth/session.service.ts +5 -5
  89. package/templates/prisma/src/auth/strategies/github.strategy.ts +3 -3
  90. package/templates/prisma/src/auth/token.service.ts +14 -5
  91. package/templates/prisma/src/common/filters/http-exception.filter.ts +34 -34
  92. package/templates/prisma/src/common/guards/permissions.guard.spec.ts +7 -7
  93. package/templates/prisma/src/common/guards/roles.guard.spec.ts +4 -4
  94. package/templates/prisma/src/common/middleware/csrf.middleware.spec.ts +5 -5
  95. package/templates/prisma/src/common/middleware/csrf.middleware.ts +2 -2
  96. package/templates/prisma/src/common/utils/avatar-storage.util.ts +32 -32
  97. package/templates/prisma/src/config/env.validation.ts +1 -1
  98. package/templates/prisma/src/health/health.controller.ts +2 -2
  99. package/templates/prisma/src/health/indicators/prisma-health.indicator.spec.ts +39 -22
  100. package/templates/prisma/src/health/indicators/prisma-health.indicator.ts +24 -19
  101. package/templates/prisma/src/health/indicators/redis-health.indicator.spec.ts +5 -5
  102. package/templates/prisma/src/health/indicators/redis-health.indicator.ts +3 -3
  103. package/templates/prisma/src/mail/mail.processor.ts +4 -4
  104. package/templates/prisma/src/mail/templates/email-templates.ts +7 -7
  105. package/templates/prisma/src/metrics/metrics.service.ts +34 -34
  106. package/templates/prisma/src/users/dto/create-user.dto.ts +12 -12
  107. package/templates/prisma/src/users/dto/find-users-query.dto.ts +12 -12
  108. package/templates/prisma/src/users/users.controller.ts +21 -21
  109. package/templates/prisma/src/users/users.service.spec.ts +11 -11
  110. package/templates/prisma/src/users/users.service.ts +4 -4
  111. package/templates/prisma/test/auth.e2e-spec.ts +8 -8
  112. package/templates/prisma/test/session-auth.e2e-spec.ts +9 -9
  113. package/templates/prisma/test/users.e2e-spec.ts +14 -14
  114. package/templates/typeorm/README.md +2 -0
  115. package/templates/typeorm/README.pt-BR.md +2 -0
  116. package/templates/typeorm/src/auth/auth.controller.ts +35 -35
  117. package/templates/typeorm/src/auth/auth.service.spec.ts +4 -4
  118. package/templates/typeorm/src/auth/auth.service.ts +9 -9
  119. package/templates/typeorm/src/auth/dto/forgot-password.dto.ts +2 -2
  120. package/templates/typeorm/src/auth/dto/login.dto.ts +3 -3
  121. package/templates/typeorm/src/auth/dto/register.dto.ts +4 -4
  122. package/templates/typeorm/src/auth/dto/reset-password.dto.ts +3 -3
  123. package/templates/typeorm/src/auth/guards/github-auth.guard.ts +2 -2
  124. package/templates/typeorm/src/auth/guards/google-auth.guard.ts +2 -2
  125. package/templates/typeorm/src/auth/guards/session-auth.guard.spec.ts +4 -4
  126. package/templates/typeorm/src/auth/guards/session-auth.guard.ts +2 -2
  127. package/templates/typeorm/src/auth/session.service.spec.ts +5 -5
  128. package/templates/typeorm/src/auth/session.service.ts +5 -5
  129. package/templates/typeorm/src/auth/strategies/github.strategy.ts +3 -3
  130. package/templates/typeorm/src/auth/token.service.ts +3 -3
  131. package/templates/typeorm/src/common/filters/http-exception.filter.ts +1 -1
  132. package/templates/typeorm/src/common/guards/permissions.guard.spec.ts +7 -7
  133. package/templates/typeorm/src/common/guards/roles.guard.spec.ts +4 -4
  134. package/templates/typeorm/src/common/middleware/csrf.middleware.spec.ts +5 -5
  135. package/templates/typeorm/src/common/middleware/csrf.middleware.ts +2 -2
  136. package/templates/typeorm/src/common/utils/avatar-storage.util.ts +2 -2
  137. package/templates/typeorm/src/config/env.validation.ts +1 -1
  138. package/templates/typeorm/src/database/data-source.ts +2 -2
  139. package/templates/typeorm/src/database/seed.ts +3 -3
  140. package/templates/typeorm/src/database/typeorm-options.ts +2 -2
  141. package/templates/typeorm/src/health/health.controller.ts +2 -2
  142. package/templates/typeorm/src/health/indicators/redis-health.indicator.spec.ts +5 -5
  143. package/templates/typeorm/src/health/indicators/redis-health.indicator.ts +3 -3
  144. package/templates/typeorm/src/health/indicators/typeorm-health.indicator.spec.ts +4 -4
  145. package/templates/typeorm/src/health/indicators/typeorm-health.indicator.ts +2 -2
  146. package/templates/typeorm/src/mail/mail.processor.ts +4 -4
  147. package/templates/typeorm/src/mail/templates/email-templates.ts +7 -7
  148. package/templates/typeorm/src/metrics/metrics.service.ts +3 -3
  149. package/templates/typeorm/src/users/dto/create-user.dto.ts +5 -5
  150. package/templates/typeorm/src/users/dto/find-users-query.dto.ts +3 -3
  151. package/templates/typeorm/src/users/users.controller.ts +21 -21
  152. package/templates/typeorm/src/users/users.service.spec.ts +12 -12
  153. package/templates/typeorm/src/users/users.service.ts +4 -4
  154. package/templates/typeorm/test/auth.e2e-spec.ts +8 -8
  155. package/templates/typeorm/test/session-auth.e2e-spec.ts +9 -9
  156. package/templates/typeorm/test/users.e2e-spec.ts +18 -18
package/README.md CHANGED
@@ -23,7 +23,7 @@ For the testing guide, CLI prompts, and complete checklist, see [`TESTING.md`](T
23
23
  - Interactive prompts using `@clack/prompts`;
24
24
  - TypeScript or JavaScript generation;
25
25
  - Prisma, TypeORM, Drizzle ORM, or no ORM;
26
- - PostgreSQL, MySQL, and SQLite;
26
+ - PostgreSQL, MySQL, SQLite, and MongoDB with Prisma;
27
27
  - JWT, Session/Cookies, OAuth-only, or no authentication;
28
28
  - optional Docker;
29
29
  - optional Swagger/OpenAPI;
@@ -35,6 +35,19 @@ For the testing guide, CLI prompts, and complete checklist, see [`TESTING.md`](T
35
35
 
36
36
  Generated projects include features such as avatar upload, pagination, filters, health checks, metrics, unit tests, and E2E tests.
37
37
 
38
+ ## Project names
39
+
40
+ The CLI validates the name before creating the project directory. A valid name:
41
+
42
+ - uses only lowercase letters, numbers, dots, hyphens, or underscores;
43
+ - starts with a letter or number;
44
+ - has no leading or trailing whitespace;
45
+ - contains no path separators or npm scope;
46
+ - has no more than 214 characters;
47
+ - is not an npm or Windows reserved name.
48
+
49
+ The generator rejects invalid names and existing target directories without writing project files.
50
+
38
51
  ## Languages
39
52
 
40
53
  The CLI generates projects in:
@@ -61,9 +74,10 @@ Available with:
61
74
 
62
75
  - PostgreSQL;
63
76
  - MySQL;
64
- - SQLite.
77
+ - SQLite;
78
+ - MongoDB.
65
79
 
66
- The CLI adjusts the `schema.prisma` provider, database URL, and provider-specific resources.
80
+ The CLI adjusts the `schema.prisma` provider, database URL, and provider-specific resources. MongoDB projects use mapped `ObjectId` fields and `prisma db push` instead of Prisma Migrate.
67
81
 
68
82
  ### TypeORM
69
83
 
@@ -105,6 +119,8 @@ The Drizzle template includes:
105
119
 
106
120
  After generation, only the schema and driver for the selected database remain in the project.
107
121
 
122
+ > **MongoDB compatibility:** MongoDB generation is currently available only with Prisma. TypeORM provides basic MongoDB support, but it is not directly compatible with the relational architecture of NestForge's TypeORM template. Drizzle does not currently provide an official MongoDB dialect. Therefore, the CLI does not offer MongoDB when TypeORM or Drizzle is selected.
123
+
108
124
  ### No ORM
109
125
 
110
126
  The “None” option:
@@ -261,7 +277,7 @@ When requested, the CLI automatically creates `.env` from the already processed
261
277
  | Database: PostgreSQL | ✅ Implemented |
262
278
  | Database: MySQL | ✅ Implemented |
263
279
  | Database: SQLite | ✅ Implemented |
264
- | Database: MongoDB | ❌ Not implemented |
280
+ | Database: MongoDB | ✅ Implemented with Prisma |
265
281
  | Auth: JWT | ✅ Implemented |
266
282
  | Auth: Session/Cookies | ✅ Implemented |
267
283
  | Auth: OAuth-only | ✅ Implemented |
@@ -288,6 +304,8 @@ Coverage includes:
288
304
  - Prisma with PostgreSQL;
289
305
  - Prisma with MySQL;
290
306
  - Prisma with SQLite;
307
+ - Prisma with MongoDB and JWT;
308
+ - Prisma with MongoDB and Session/Cookies;
291
309
  - TypeORM with SQLite;
292
310
  - Drizzle with PostgreSQL;
293
311
  - Drizzle with MySQL;
@@ -316,7 +334,7 @@ The following combinations were validated with installation, build, unit tests,
316
334
  - TypeScript + Drizzle + SQLite + JWT;
317
335
  - TypeScript + Drizzle + SQLite + Session/Cookies.
318
336
 
319
- PostgreSQL and MySQL have automated generation, configuration, and unused-driver removal tests. Complete smoke tests for these databases still require local services or Docker.
337
+ PostgreSQL, MySQL, and MongoDB have automated generation and configuration tests. Complete smoke tests that connect to these databases still require local services or Docker; MongoDB must run as a replica set.
320
338
 
321
339
  ## Known limitations
322
340
 
@@ -384,7 +402,6 @@ The build:
384
402
 
385
403
  ## Next steps
386
404
 
387
- - MongoDB;
388
- - more complete project and package name validation;
405
+ - expand MongoDB support beyond Prisma when a compatible ORM integration is available;
389
406
  - expand the smoke-test matrix with real PostgreSQL and MySQL services;
390
407
  - reduce the known limitations in the earlier templates.
package/README.pt-BR.md CHANGED
@@ -23,7 +23,7 @@ Para o guia de testes, perguntas da CLI e checklist completo, consulte [`TESTING
23
23
  * Prompts interativos usando @clack/prompts;
24
24
  * geração em TypeScript ou JavaScript;
25
25
  * Prisma, TypeORM, Drizzle ORM ou nenhum ORM;
26
- * PostgreSQL, MySQL e SQLite;
26
+ * PostgreSQL, MySQL, SQLite e MongoDB com Prisma;
27
27
  * autenticação JWT, Session/Cookies, OAuth-only ou nenhuma;
28
28
  * Docker opcional;
29
29
  * Swagger/OpenAPI opcional;
@@ -35,6 +35,19 @@ Para o guia de testes, perguntas da CLI e checklist completo, consulte [`TESTING
35
35
 
36
36
  Os projetos incluem recursos como upload de avatar, paginação, filtros, health checks, métricas, testes unitários e testes E2E.
37
37
 
38
+ ## Nomes de projeto
39
+
40
+ A CLI valida o nome antes de criar o diretório do projeto. Um nome válido:
41
+
42
+ * usa apenas letras minúsculas, números, pontos, hífens ou underscores;
43
+ * começa com uma letra ou número;
44
+ * não possui espaços no início ou no fim;
45
+ * não contém separadores de caminho nem escopo npm;
46
+ * possui no máximo 214 caracteres;
47
+ * não é um nome reservado do npm ou do Windows.
48
+
49
+ O gerador recusa nomes inválidos e diretórios de destino existentes sem gravar arquivos do projeto.
50
+
38
51
  ## Linguagens
39
52
 
40
53
  A CLI gera projetos em:
@@ -61,9 +74,10 @@ Disponível com:
61
74
 
62
75
  * PostgreSQL;
63
76
  * MySQL;
64
- * SQLite.
77
+ * SQLite;
78
+ * MongoDB.
65
79
 
66
- A CLI ajusta o provider do schema.prisma, a URL do banco e os recursos específicos do provider.
80
+ A CLI ajusta o provider do schema.prisma, a URL do banco e os recursos específicos do provider. Projetos MongoDB usam campos `ObjectId` mapeados e `prisma db push` no lugar do Prisma Migrate.
67
81
 
68
82
  ### TypeORM
69
83
 
@@ -105,6 +119,8 @@ O template Drizzle inclui:
105
119
 
106
120
  Depois da geração, somente o schema e o driver do banco selecionado permanecem no projeto.
107
121
 
122
+ > **Compatibilidade com MongoDB:** a geração com MongoDB está disponível atualmente apenas com Prisma. O TypeORM oferece suporte básico a MongoDB, mas ele não é diretamente compatível com a arquitetura relacional do template TypeORM do NestForge. O Drizzle não oferece atualmente um dialeto oficial para MongoDB. Portanto, a CLI não disponibiliza MongoDB quando TypeORM ou Drizzle é selecionado.
123
+
108
124
  ### Sem ORM
109
125
 
110
126
  A opção “Nenhum”:
@@ -262,7 +278,7 @@ processado.
262
278
  | Banco: PostgreSQL | ✅ Implementado |
263
279
  | Banco: MySQL | ✅ Implementado |
264
280
  | Banco: SQLite | ✅ Implementado |
265
- | Banco: MongoDB | ❌ Não implementado |
281
+ | Banco: MongoDB | ✅ Com Prisma |
266
282
  | Auth: JWT | ✅ Implementada |
267
283
  | Auth: Session/Cookies | ✅ Implementada |
268
284
  | Auth: OAuth-only | ✅ Implementada |
@@ -287,6 +303,8 @@ A cobertura inclui:
287
303
  * Prisma com PostgreSQL;
288
304
  * Prisma com MySQL;
289
305
  * Prisma com SQLite;
306
+ * Prisma com MongoDB e JWT;
307
+ * Prisma com MongoDB e Session/Cookies;
290
308
  * TypeORM com SQLite;
291
309
  * Drizzle com PostgreSQL;
292
310
  * Drizzle com MySQL;
@@ -315,7 +333,7 @@ Foram validadas com instalação, build, testes unitários, migrations, seed e t
315
333
  * TypeScript + Drizzle + SQLite + JWT;
316
334
  * TypeScript + Drizzle + SQLite + Session/Cookies.
317
335
 
318
- PostgreSQL e MySQL possuem testes automatizados de geração, configuração e remoção dos drivers não utilizados. Smoke tests completos desses bancos ainda exigem serviços locais ou Docker.
336
+ PostgreSQL, MySQL e MongoDB possuem testes automatizados de geração e configuração. Smoke tests que conectam a esses bancos ainda exigem serviços locais ou Docker; o MongoDB deve funcionar como replica set.
319
337
 
320
338
  ## Limitações conhecidas
321
339
 
@@ -383,7 +401,6 @@ O build:
383
401
 
384
402
  ## Próximos itens
385
403
 
386
- * MongoDB;
387
- * validação mais completa do nome do projeto e do pacote;
404
+ * ampliar o suporte a MongoDB além do Prisma quando houver uma integração compatível com o ORM;
388
405
  * ampliação da matriz de smoke tests com PostgreSQL e MySQL reais;
389
406
  * redução das limitações conhecidas dos templates anteriores.
@@ -1,14 +1,14 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'node:path';
3
3
  /**
4
- * Remove src/auth/ e src/users/ inteiros quando a estratégia de autenticação é "none".
5
- * Pra "jwt" e "oauth" os dois módulos continuam (o OAuth também mora dentro de src/auth/).
4
+ * Removes the entire src/auth/ and src/users/ directories when authentication is "none".
5
+ * Both modules remain for "jwt" and "oauth" because OAuth also lives in src/auth/.
6
6
  *
7
- * Por que remoção de diretório em vez de marcador por arquivo: esses dois módulos têm
8
- * ~23 arquivos ao todo, e alguns já carregam um marcador de outra feature (ex:
9
- * forgot-password.dto.ts depende de "redis,auth:password"). Continuar tudo via
10
- * marcador por arquivo individual multiplicaria o número de combinações — remover a
11
- * pasta toda de uma vez pro caso "sem autenticação nenhuma" é mais simples de auditar.
7
+ * Directory removal is used instead of per-file markers because these two modules contain
8
+ * about 23 files, some of which already depend on another feature marker (for example,
9
+ * forgot-password.dto.ts requires "redis,auth:password"). Adding markers to every file
10
+ * would multiply the number of combinations, while removing both directories for the
11
+ * no-authentication case is easier to audit.
12
12
  */
13
13
  export async function applyAuthStrategyRemoval(targetDir, enabledFeatures) {
14
14
  if (!enabledFeatures.has('auth:none'))
@@ -16,6 +16,11 @@ const DATABASE_CONFIG = {
16
16
  devUrl: 'file:./dev.db',
17
17
  testUrl: 'file:./test.db',
18
18
  },
19
+ mongodb: {
20
+ provider: 'mongodb',
21
+ devUrl: 'mongodb://localhost:27017/nestforge?replicaSet=rs0',
22
+ testUrl: 'mongodb://localhost:27017/nestforge_test?replicaSet=rs0',
23
+ },
19
24
  };
20
25
  export async function applyDatabaseConfig(targetDir, database) {
21
26
  const databaseChoice = database;
@@ -24,6 +29,10 @@ export async function applyDatabaseConfig(targetDir, database) {
24
29
  return;
25
30
  }
26
31
  await updateSchemaProvider(targetDir, config.provider);
32
+ if (databaseChoice === 'mongodb') {
33
+ await updateMongoSchema(targetDir);
34
+ await updateMongoScripts(targetDir);
35
+ }
27
36
  await updateDatabaseType(targetDir, '.env.example', databaseChoice);
28
37
  await updateDatabaseType(targetDir, '.env.test', databaseChoice);
29
38
  await updateDatabaseUrl(targetDir, '.env.example', config.devUrl);
@@ -56,4 +65,30 @@ async function updateDatabaseUrl(targetDir, fileName, url) {
56
65
  const updated = content.replace(/^DATABASE_URL=.*$/m, `DATABASE_URL="${url}"`);
57
66
  await fs.writeFile(filePath, updated, 'utf-8');
58
67
  }
68
+ async function updateMongoScripts(targetDir) {
69
+ const packageJsonPath = path.join(targetDir, 'package.json');
70
+ if (!(await fs.pathExists(packageJsonPath))) {
71
+ return;
72
+ }
73
+ const packageJson = await fs.readJson(packageJsonPath);
74
+ packageJson.scripts['prisma:push'] =
75
+ 'prisma db push';
76
+ packageJson.scripts['pretest:e2e'] =
77
+ 'dotenv -e .env.test -- npx prisma db push --skip-generate';
78
+ delete packageJson.scripts['prisma:migrate'];
79
+ delete packageJson.scripts['prisma:deploy'];
80
+ await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
81
+ }
82
+ async function updateMongoSchema(targetDir) {
83
+ const schemaPath = path.join(targetDir, 'prisma', 'schema.prisma');
84
+ if (!(await fs.pathExists(schemaPath))) {
85
+ return;
86
+ }
87
+ const schema = await fs.readFile(schemaPath, 'utf8');
88
+ const updated = schema
89
+ .replaceAll('@id @default(uuid())', '@id @default(auto()) @map("_id") @db.ObjectId')
90
+ .replace(/id\s+String\s+@id\r?\n\s+sid String @unique/, 'id String @id @map("_id")\n sid String @unique')
91
+ .replace(/userId(\s+)String(?!\s+@db\.ObjectId)/g, 'userId$1String @db.ObjectId');
92
+ await fs.writeFile(schemaPath, updated, 'utf8');
93
+ }
59
94
  //# sourceMappingURL=database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/features/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/features/database.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'node:path';
3
3
  /**
4
- * Pacotes (dependencies ou devDependencies) que só fazem sentido se a feature
5
- * correspondente estiver habilitada. Mantido separado dos marcadores de código
6
- * porque package.json é JSON puro — não aceita comentário.
4
+ * Packages (dependencies or devDependencies) that are only needed when the corresponding
5
+ * feature is enabled. This remains separate from code markers because package.json is
6
+ * plain JSON and does not support comments.
7
7
  */
8
8
  const FEATURE_DEPENDENCIES = {
9
9
  swagger: ['@nestjs/swagger'],
@@ -109,7 +109,7 @@ async function transpileFile(filePath) {
109
109
  const details = errors
110
110
  .map((diagnostic) => ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'))
111
111
  .join('\n');
112
- throw new Error(`Falha ao converter "${filePath}" para JavaScript:\n${details}`);
112
+ throw new Error(`Failed to convert "${filePath}" to JavaScript:\n${details}`);
113
113
  }
114
114
  const javascriptPath = filePath.replace(/\.ts$/, '.js');
115
115
  await fs.writeFile(javascriptPath, result.outputText, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/features/language.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/features/language.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'node:path';
3
3
  const IGNORED_DIRS = new Set(['node_modules', '.git', 'dist', 'coverage']);
4
- // primeira linha não-vazia do arquivo: se bater, o arquivo inteiro pertence a uma feature
5
- // aceita "//" (TS/JS) e "#" (YAML/.env) como prefixo de comentário
4
+ // If the first non-empty line matches, the entire file belongs to a feature.
5
+ // Accepts "//" (TS/JS) and "#" (YAML/.env) as comment prefixes.
6
6
  const FILE_MARKER = /^(?:\/\/|#) nestforge:feature-file:(\S+)\s*$/;
7
- // marca o início/fim de um bloco dentro de um arquivo (várias linhas ou só uma)
7
+ // Marks the start/end of a block inside a file (one or multiple lines).
8
8
  const BLOCK_START = /^(\s*)(?:\/\/|#) nestforge:feature:(\S+)\s*$/;
9
9
  const BLOCK_END = /^(\s*)(?:\/\/|#) nestforge:feature:(\S+):end\s*$/;
10
10
  /**
11
- * Aplica os marcadores de features em todos os arquivos de texto do projeto gerado.
12
- * Recursos habilitados: mantém o conteúdo, remove só as linhas de marcador.
13
- * Recursos desabilitados: remove o bloco inteiro (ou o arquivo inteiro, no caso do marcador de arquivo).
11
+ * Applies feature markers to every text file in the generated project.
12
+ * Enabled features keep their content and remove only the marker lines.
13
+ * Disabled features remove the entire block, or the entire file for file markers.
14
14
  */
15
15
  export async function applyFeatureMarkers(targetDir, enabledFeatures) {
16
16
  const files = await collectFiles(targetDir);
@@ -36,10 +36,10 @@ async function collectFiles(dir) {
36
36
  return files;
37
37
  }
38
38
  /**
39
- * O nome depois de "feature:" pode ser uma lista separada por vírgula
40
- * (ex: "redis,auth:password") — nesse caso, TODAS precisam estar habilitadas
41
- * pro conteúdo ser mantido. Uma feature só (o caso mais comum) continua
42
- * funcionando igual, já que é só uma lista de um item.
39
+ * The name after "feature:" can be a comma-separated list
40
+ * (for example, "redis,auth:password"). In that case, every requirement must be
41
+ * enabled for the content to remain. A single feature, the most common case,
42
+ * continues to work as a one-item list.
43
43
  */
44
44
  function isRequirementMet(rawName, enabledFeatures) {
45
45
  return rawName
@@ -75,7 +75,7 @@ function stripBlockMarkers(lines, enabledFeatures) {
75
75
  if (endMatch && endMatch[2] === skippingFeature) {
76
76
  skippingFeature = null;
77
77
  }
78
- continue; // pula todo o conteúdo do bloco (e a linha de :end que o fecha)
78
+ continue; // Skip the entire block, including its closing :end line.
79
79
  }
80
80
  const endMatch = line.match(BLOCK_END);
81
81
  if (endMatch) {
@@ -1 +1 @@
1
- {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/features/markers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/features/markers.ts"],"names":[],"mappings":"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"}
package/dist/generator.js CHANGED
@@ -7,6 +7,7 @@ import { applyDatabaseConfig } from './features/database.js';
7
7
  import { applyAuthStrategyRemoval } from './features/auth-strategy.js';
8
8
  import { applyLanguageTransform } from './features/language.js';
9
9
  import { applyNoOrmTransform } from './features/no-orm.js';
10
+ import { assertValidProjectName } from './project-name.js';
10
11
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
12
  const PACKAGE_TEMPLATES_ROOT = path.resolve(__dirname, '../templates');
12
13
  const MONOREPO_TEMPLATES_ROOT = path.resolve(__dirname, '../../../templates');
@@ -18,7 +19,7 @@ const IMPLEMENTED_ORMS = [
18
19
  'none',
19
20
  ];
20
21
  const IMPLEMENTED_LANGUAGES = ['typescript', 'javascript'];
21
- const IMPLEMENTED_DATABASES = ['postgres', 'mysql', 'sqlite'];
22
+ const IMPLEMENTED_DATABASES = ['postgres', 'mysql', 'sqlite', 'mongodb'];
22
23
  const IMPLEMENTED_AUTH_STRATEGIES = ['jwt', 'session', 'oauth', 'none'];
23
24
  async function resolveTemplatesRoot() {
24
25
  if (await fs.pathExists(PACKAGE_TEMPLATES_ROOT)) {
@@ -28,6 +29,7 @@ async function resolveTemplatesRoot() {
28
29
  }
29
30
  export async function generateProject(options) {
30
31
  const { projectName, language, orm, database, features, authStrategy, accessControl, createEnv } = options;
32
+ assertValidProjectName(projectName);
31
33
  if (!IMPLEMENTED_LANGUAGES.includes(language)) {
32
34
  throw new Error(`Generation in "${language}" is not ready yet — only "typescript" is currently implemented. Contributions are welcome!`);
33
35
  }
@@ -40,6 +42,9 @@ export async function generateProject(options) {
40
42
  if (orm !== 'none' && !IMPLEMENTED_DATABASES.includes(database)) {
41
43
  throw new Error(`The "${database}" database is not ready yet — currently implemented: ${IMPLEMENTED_DATABASES.join(', ')}. Contributions are welcome!`);
42
44
  }
45
+ if (database === 'mongodb' && orm !== 'prisma') {
46
+ throw new Error('MongoDB is currently available only with Prisma.');
47
+ }
43
48
  if (orm === 'none' && authStrategy !== 'none') {
44
49
  throw new Error('Projects without an ORM currently support only the "none" authentication strategy.');
45
50
  }
@@ -52,7 +57,11 @@ export async function generateProject(options) {
52
57
  const templatesRoot = await resolveTemplatesRoot();
53
58
  const templateName = orm === 'none' ? 'prisma' : orm;
54
59
  const templateDir = path.join(templatesRoot, templateName);
55
- const targetDir = path.resolve(process.cwd(), projectName);
60
+ const currentDirectory = path.resolve(process.cwd());
61
+ const targetDir = path.resolve(currentDirectory, projectName);
62
+ if (path.dirname(targetDir) !== currentDirectory) {
63
+ throw new Error('Invalid project name: the project must be created inside the current directory.');
64
+ }
56
65
  if (await fs.pathExists(targetDir)) {
57
66
  throw new Error(`The "${projectName}" directory already exists. Choose another name or remove the directory.`);
58
67
  }
@@ -82,6 +91,9 @@ function buildEnabledFeatures(features, accessControl, database, authStrategy) {
82
91
  }
83
92
  enabled.add(`database:${database}`);
84
93
  enabled.add(`auth:${authStrategy}`);
94
+ if (['postgres', 'mysql', 'sqlite'].includes(database)) {
95
+ enabled.add('database:relational');
96
+ }
85
97
  if (authStrategy !== 'none') {
86
98
  enabled.add('auth:enabled');
87
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -39,7 +39,14 @@ async function main() {
39
39
  ...seedSteps,
40
40
  ]
41
41
  : [
42
- 'npx prisma migrate dev',
42
+ ...(options.database === 'mongodb'
43
+ ? [
44
+ 'npm run prisma:push',
45
+ ...(shouldRunSeed
46
+ ? ['npm run prisma:seed']
47
+ : []),
48
+ ]
49
+ : ['npx prisma migrate dev']),
43
50
  ];
44
51
  const steps = [
45
52
  `cd ${relativeDir}`,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,KAAK,UAAU,IAAI;IACf,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC;QACnE,MAAM,cAAc,GAAG;YACnB,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC1C,CAAC,CAAC,OAAO,CAAC,QAAQ;gBAClB,CAAC,CAAC,IAAI;YACV,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACtD;aACI,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;QAEf,MAAM,aAAa,GAAG;YAClB,KAAK;YACL,SAAS;SACZ,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEjC,MAAM,SAAS,GAAG,aAAa;YAC3B,CAAC,CAAC,CAAC,cAAc,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,aAAa,GACf,OAAO,CAAC,GAAG,KAAK,MAAM;YAClB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS;gBAC3B,CAAC,CAAC;oBACE,qEAAqE;oBACrE,uBAAuB;oBACvB,GAAG,SAAS;iBACf;gBACD,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS;oBACvB,CAAC,CAAC;wBACE,0BAA0B;wBAC1B,yBAAyB;wBACzB,GAAG,SAAS;qBACf;oBACD,CAAC,CAAC;wBACE,wBAAwB;qBAC3B,CAAC;QAEd,MAAM,KAAK,GAAG;YACV,MAAM,WAAW,EAAE;YACnB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;YACtD,aAAa;YACb,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc;gBACrD,CAAC,CAAC,CAAC,wBAAwB,cAAc,EAAE,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,aAAa;YAChB,mBAAmB;SACtB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;QAErC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,WAAW,yBAAyB,CAAC,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ const MAX_PACKAGE_NAME_LENGTH = 214;
2
+ const NPM_RESERVED_NAMES = new Set([
3
+ 'node_modules',
4
+ 'favicon.ico',
5
+ ]);
6
+ const WINDOWS_RESERVED_NAME = /^(?:con|prn|aux|nul|clock\$|com[1-9]|lpt[1-9])(?:\..*)?$/i;
7
+ const VALID_PROJECT_NAME = /^[a-z0-9][a-z0-9._-]*$/;
8
+ export function validateProjectName(projectName) {
9
+ if (projectName.length === 0) {
10
+ return 'Project name is required.';
11
+ }
12
+ if (projectName !== projectName.trim()) {
13
+ return 'Project name cannot start or end with whitespace.';
14
+ }
15
+ if (projectName.length > MAX_PACKAGE_NAME_LENGTH) {
16
+ return `Project name cannot exceed ${MAX_PACKAGE_NAME_LENGTH} characters.`;
17
+ }
18
+ if (projectName === '.' || projectName === '..') {
19
+ return 'Project name cannot be "." or "..".';
20
+ }
21
+ if (projectName.startsWith('@')) {
22
+ return 'Scoped package names are not supported as project names.';
23
+ }
24
+ if (projectName.includes('/') || projectName.includes('\\')) {
25
+ return 'Project name cannot contain path separators.';
26
+ }
27
+ if (projectName !== projectName.toLowerCase()) {
28
+ return 'Project name must be lowercase.';
29
+ }
30
+ if (!VALID_PROJECT_NAME.test(projectName)) {
31
+ return 'Project name must start with a letter or number and contain only lowercase letters, numbers, dots, hyphens, or underscores.';
32
+ }
33
+ if (projectName.endsWith('.')) {
34
+ return 'Project name cannot end with a dot.';
35
+ }
36
+ if (NPM_RESERVED_NAMES.has(projectName)) {
37
+ return `"${projectName}" is reserved and cannot be used as a project name.`;
38
+ }
39
+ if (WINDOWS_RESERVED_NAME.test(projectName)) {
40
+ return `"${projectName}" is a reserved name on Windows.`;
41
+ }
42
+ return undefined;
43
+ }
44
+ export function assertValidProjectName(projectName) {
45
+ const validationError = validateProjectName(projectName);
46
+ if (validationError) {
47
+ throw new Error(`Invalid project name: ${validationError}`);
48
+ }
49
+ }
50
+ //# sourceMappingURL=project-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-name.js","sourceRoot":"","sources":["../src/project-name.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,cAAc;IACd,aAAa;CAChB,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,2DAA2D,CAAC;AAC1F,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAEpD,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACnD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,2BAA2B,CAAC;IACvC,CAAC;IAED,IAAI,WAAW,KAAK,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,OAAO,mDAAmD,CAAC;IAC/D,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QAC/C,OAAO,8BAA8B,uBAAuB,cAAc,CAAC;IAC/E,CAAC;IAED,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,qCAAqC,CAAC;IACjD,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,0DAA0D,CAAC;IACtE,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,OAAO,8CAA8C,CAAC;IAC1D,CAAC;IAED,IAAI,WAAW,KAAK,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5C,OAAO,iCAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,6HAA6H,CAAC;IACzI,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,qCAAqC,CAAC;IACjD,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,WAAW,qDAAqD,CAAC;IAChF,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,WAAW,kCAAkC,CAAC;IAC7D,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACtD,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,eAAe,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;IAChE,CAAC;AACL,CAAC"}
package/dist/prompts.js CHANGED
@@ -1,18 +1,19 @@
1
1
  import { intro, outro, text, select, confirm, isCancel, cancel } from '@clack/prompts';
2
2
  import gradient from 'gradient-string';
3
3
  import pc from 'picocolors';
4
+ import { validateProjectName } from './project-name.js';
4
5
  // red -> orange, the NestJS colors
5
6
  const nestforgeGradient = gradient(['#e0234e', '#ff8a65']);
6
- const logo = `
7
- _ _ _ ______
8
- | \ | | | | | ____|
9
- | \| | ___ ___| |_| |__ ___ _ __ __ _ ___
10
- | . \` |/ _ \/ __| __| __/ _ \| '__/ _\` |/ _ \\
11
- | |\ | __/\__ \ |_| | | (_) | | | (_| | __/
12
- |_| \_|\___||___/\__|_| \___/|_| \__, |\___|
13
- __/ |
14
- |___/
15
- `;
7
+ const logo = [
8
+ ' _ _ _ ______',
9
+ ' | \\ | | | | | ____|',
10
+ ' | \\| | ___ ___| |_| |__ ___ _ __ __ _ ___',
11
+ " | . ` |/ _ \\/ __| __| __/ _ \\| '__/ _` |/ _ \\",
12
+ ' | |\\ | __/\\__ \\ |_| | | (_) | | | (_| | __/',
13
+ ' |_| \\_|\\___||___/\\__|_| \\___/|_| \\__, |\\___|',
14
+ ' __/ |',
15
+ ' |___/',
16
+ ].join('\n');
16
17
  function showBanner() {
17
18
  console.log();
18
19
  console.log(nestforgeGradient.multiline(logo));
@@ -32,6 +33,7 @@ export async function runPrompts() {
32
33
  message: 'What is your project name?',
33
34
  placeholder: 'my-nest-api',
34
35
  defaultValue: 'my-nest-api',
36
+ validate: (value) => validateProjectName(value ?? ''),
35
37
  });
36
38
  handleCancel(projectName);
37
39
  // 2. Language
@@ -63,7 +65,9 @@ export async function runPrompts() {
63
65
  { value: 'postgres', label: 'PostgreSQL', hint: 'Recommended' },
64
66
  { value: 'mysql', label: 'MySQL' },
65
67
  { value: 'sqlite', label: 'SQLite' },
66
- { value: 'mongodb', label: 'MongoDB', hint: 'coming soon' },
68
+ ...(orm === 'prisma'
69
+ ? [{ value: 'mongodb', label: 'MongoDB' }]
70
+ : []),
67
71
  ],
68
72
  });
69
73
  handleCancel(databaseSelection);