@mshima/generator-jhipster-nodejs 0.0.0-stage → 0.0.1

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 (209) hide show
  1. package/LICENSE.txt +204 -0
  2. package/README.md +243 -2
  3. package/build-info.json +3 -0
  4. package/cli/cli-customizations.cjs +9 -0
  5. package/cli/cli.cjs +40 -0
  6. package/cli/logo.js +31 -0
  7. package/cli/version.cjs +12 -0
  8. package/generators/ci-cd/USAGE +5 -0
  9. package/generators/ci-cd/command.js +5 -0
  10. package/generators/ci-cd/generator.js +158 -0
  11. package/generators/ci-cd/index.js +2 -0
  12. package/generators/ci-cd/templates/.gitlab-ci.yml.ejs +137 -0
  13. package/generators/ci-cd/templates/azure-pipelines.yml.ejs +68 -0
  14. package/generators/ci-cd/templates/circle.yml.ejs +59 -0
  15. package/generators/ci-cd/templates/docker-registry.yml.ejs +58 -0
  16. package/generators/ci-cd/templates/github-ci.yml.ejs +90 -0
  17. package/generators/ci-cd/templates/jenkins/Jenkinsfile.ejs +104 -0
  18. package/generators/ci-cd/templates/jenkins/idea.gdsl +90 -0
  19. package/generators/ci-cd/templates/jenkins/jenkins.yml.ejs +33 -0
  20. package/generators/ci-cd/templates/travis.yml.ejs +75 -0
  21. package/generators/client/command.js +5 -0
  22. package/generators/client/generator.js +21 -0
  23. package/generators/client/generators/bootstrap/command.js +5 -0
  24. package/generators/client/generators/bootstrap/generator.js +28 -0
  25. package/generators/client/generators/bootstrap/index.js +2 -0
  26. package/generators/client/index.js +2 -0
  27. package/generators/common/generators/bootstrap/command.js +5 -0
  28. package/generators/common/generators/bootstrap/generator.js +37 -0
  29. package/generators/common/generators/bootstrap/index.js +2 -0
  30. package/generators/docker/command.js +5 -0
  31. package/generators/docker/generator.js +16 -0
  32. package/generators/docker/generators/bootstrap/command.js +5 -0
  33. package/generators/docker/generators/bootstrap/generator.js +56 -0
  34. package/generators/docker/generators/bootstrap/index.js +2 -0
  35. package/generators/docker/index.js +2 -0
  36. package/generators/docker/templates/docker/app.yml.ejs +25 -0
  37. package/generators/generator-nodejs-constants.js +32 -0
  38. package/generators/languages/command.js +5 -0
  39. package/generators/languages/generator.js +22 -0
  40. package/generators/languages/index.js +2 -0
  41. package/generators/languages/templates/src/main/webapp/i18n/en/home.json +19 -0
  42. package/generators/languages/templates/src/main/webapp/i18n/es/home.json +19 -0
  43. package/generators/languages/templates/src/main/webapp/i18n/it/home.json +19 -0
  44. package/generators/node-server/command.js +96 -0
  45. package/generators/node-server/entity-files.js +41 -0
  46. package/generators/node-server/files.js +254 -0
  47. package/generators/node-server/generator.js +702 -0
  48. package/generators/node-server/generators/bootstrap/command.js +5 -0
  49. package/generators/node-server/generators/bootstrap/generator.js +83 -0
  50. package/generators/node-server/generators/bootstrap/index.js +2 -0
  51. package/generators/node-server/index.js +2 -0
  52. package/generators/node-server/resources/package.json +76 -0
  53. package/generators/node-server/support/api-fake-data.js +54 -0
  54. package/generators/node-server/support/columns.js +73 -0
  55. package/generators/node-server/support/database.js +24 -0
  56. package/generators/node-server/support/entity-authorities.js +32 -0
  57. package/generators/node-server/support/entity-paths.js +13 -0
  58. package/generators/node-server/support/enums.js +11 -0
  59. package/generators/node-server/support/index.js +9 -0
  60. package/generators/node-server/support/mail-templates.js +82 -0
  61. package/generators/node-server/support/migrations.js +197 -0
  62. package/generators/node-server/support/validators.js +25 -0
  63. package/generators/node-server/templates/.dockerignore.ejs +16 -0
  64. package/generators/node-server/templates/.gitignore.jhi.nodejs.ejs +24 -0
  65. package/generators/node-server/templates/Dockerfile.ejs +54 -0
  66. package/generators/node-server/templates/README.md.jhi.nodejs.ejs +220 -0
  67. package/generators/node-server/templates/package.json.ejs +84 -0
  68. package/generators/node-server/templates/server/README.md.ejs +269 -0
  69. package/generators/node-server/templates/server/e2e/_entityFileName_.database.e2e-spec.ts.ejs +192 -0
  70. package/generators/node-server/templates/server/e2e/_entityFileName_.e2e-spec.ts.ejs +402 -0
  71. package/generators/node-server/templates/server/e2e/account.e2e-spec.ts.ejs +349 -0
  72. package/generators/node-server/templates/server/e2e/app.e2e-spec.ts.ejs +188 -0
  73. package/generators/node-server/templates/server/e2e/authority.e2e-spec.ts.ejs +50 -0
  74. package/generators/node-server/templates/server/e2e/cors.e2e-spec.ts.ejs +110 -0
  75. package/generators/node-server/templates/server/e2e/management.e2e-spec.ts.ejs +180 -0
  76. package/generators/node-server/templates/server/e2e/oauth2-bearer.e2e-spec.ts.ejs +71 -0
  77. package/generators/node-server/templates/server/e2e/session.e2e-spec.ts.ejs +219 -0
  78. package/generators/node-server/templates/server/e2e/setup.test.js.ejs +1 -0
  79. package/generators/node-server/templates/server/e2e/user.e2e-spec.ts.ejs +318 -0
  80. package/generators/node-server/templates/server/env.ejs +1 -0
  81. package/generators/node-server/templates/server/eslint.config.mjs.ejs +48 -0
  82. package/generators/node-server/templates/server/nest-cli.json.ejs +11 -0
  83. package/generators/node-server/templates/server/ormconfig.ts.ejs +35 -0
  84. package/generators/node-server/templates/server/package.json.ejs +143 -0
  85. package/generators/node-server/templates/server/sonar-project.properties.ejs +10 -0
  86. package/generators/node-server/templates/server/src/app.config.spec.ts.ejs +13 -0
  87. package/generators/node-server/templates/server/src/app.config.ts.ejs +179 -0
  88. package/generators/node-server/templates/server/src/app.module.ts.ejs +80 -0
  89. package/generators/node-server/templates/server/src/application-config.ts.ejs +153 -0
  90. package/generators/node-server/templates/server/src/auth/account.controller.ts.ejs +183 -0
  91. package/generators/node-server/templates/server/src/auth/auth.module.ts.ejs +104 -0
  92. package/generators/node-server/templates/server/src/auth/auth.service.ts.ejs +294 -0
  93. package/generators/node-server/templates/server/src/auth/csrf.middleware.spec.ts.ejs +65 -0
  94. package/generators/node-server/templates/server/src/auth/csrf.middleware.ts.ejs +76 -0
  95. package/generators/node-server/templates/server/src/auth/decorators/auth-user.decorator.ts.ejs +8 -0
  96. package/generators/node-server/templates/server/src/auth/decorators/roles.decorator.ts.ejs +4 -0
  97. package/generators/node-server/templates/server/src/auth/dto/key-and-password.dto.ts.ejs +17 -0
  98. package/generators/node-server/templates/server/src/auth/dto/password-change.dto.ts.ejs +17 -0
  99. package/generators/node-server/templates/server/src/auth/dto/user-login.dto.ts.ejs +21 -0
  100. package/generators/node-server/templates/server/src/auth/guards/auth.guard.ts.ejs +50 -0
  101. package/generators/node-server/templates/server/src/auth/guards/oauth2-login.guard.ts.ejs +6 -0
  102. package/generators/node-server/templates/server/src/auth/guards/roles.guard.ts.ejs +25 -0
  103. package/generators/node-server/templates/server/src/auth/index.ts.ejs +8 -0
  104. package/generators/node-server/templates/server/src/auth/jwt.config.spec.ts.ejs +22 -0
  105. package/generators/node-server/templates/server/src/auth/jwt.config.ts.ejs +29 -0
  106. package/generators/node-server/templates/server/src/auth/oauth2.authorities.spec.ts.ejs +24 -0
  107. package/generators/node-server/templates/server/src/auth/oauth2.authorities.ts.ejs +33 -0
  108. package/generators/node-server/templates/server/src/auth/oauth2.config.ts.ejs +51 -0
  109. package/generators/node-server/templates/server/src/auth/passport.jwt.strategy.ts.ejs +45 -0
  110. package/generators/node-server/templates/server/src/auth/passport.oauth2-bearer.strategy.ts.ejs +32 -0
  111. package/generators/node-server/templates/server/src/auth/passport.oauth2.strategy.spec.ts.ejs +27 -0
  112. package/generators/node-server/templates/server/src/auth/passport.oauth2.strategy.ts.ejs +44 -0
  113. package/generators/node-server/templates/server/src/auth/password-util.ts.ejs +10 -0
  114. package/generators/node-server/templates/server/src/auth/password.service.ts.ejs +34 -0
  115. package/generators/node-server/templates/server/src/auth/payload.interface.ts.ejs +14 -0
  116. package/generators/node-server/templates/server/src/auth/role-type.ts.ejs +7 -0
  117. package/generators/node-server/templates/server/src/auth/session-user.middleware.ts.ejs +33 -0
  118. package/generators/node-server/templates/server/src/auth/session.entity.ts.ejs +36 -0
  119. package/generators/node-server/templates/server/src/auth/session.store.spec.ts.ejs +99 -0
  120. package/generators/node-server/templates/server/src/auth/session.store.ts.ejs +116 -0
  121. package/generators/node-server/templates/server/src/auth/user.jwt.controller.ts.ejs +26 -0
  122. package/generators/node-server/templates/server/src/auth/user.oauth2.controller.ts.ejs +78 -0
  123. package/generators/node-server/templates/server/src/auth/user.session.controller.ts.ejs +103 -0
  124. package/generators/node-server/templates/server/src/common/common.module.ts.ejs +19 -0
  125. package/generators/node-server/templates/server/src/common/database/base.entity.ts.ejs +13 -0
  126. package/generators/node-server/templates/server/src/common/database/column-transformers.spec.ts.ejs +46 -0
  127. package/generators/node-server/templates/server/src/common/database/column-transformers.ts.ejs +69 -0
  128. package/generators/node-server/templates/server/src/common/database/column-types.spec.ts.ejs +21 -0
  129. package/generators/node-server/templates/server/src/common/database/column-types.ts.ejs +29 -0
  130. package/generators/node-server/templates/server/src/common/database/pagination.entity.spec.ts.ejs +66 -0
  131. package/generators/node-server/templates/server/src/common/database/pagination.entity.ts.ejs +108 -0
  132. package/generators/node-server/templates/server/src/common/dto/base.dto.ts.ejs +19 -0
  133. package/generators/node-server/templates/server/src/common/errors/error-constants.ts.ejs +10 -0
  134. package/generators/node-server/templates/server/src/common/errors/problem-details.filter.ts.ejs +63 -0
  135. package/generators/node-server/templates/server/src/common/errors/problem.exception.ts.ejs +92 -0
  136. package/generators/node-server/templates/server/src/common/field_validators.ejs +77 -0
  137. package/generators/node-server/templates/server/src/common/header-util.ts.ejs +105 -0
  138. package/generators/node-server/templates/server/src/common/interceptors/logging.interceptor.spec.ts.ejs +93 -0
  139. package/generators/node-server/templates/server/src/common/interceptors/logging.interceptor.ts.ejs +48 -0
  140. package/generators/node-server/templates/server/src/common/logging.spec.ts.ejs +83 -0
  141. package/generators/node-server/templates/server/src/common/logging.ts.ejs +129 -0
  142. package/generators/node-server/templates/server/src/common/metrics.spec.ts.ejs +43 -0
  143. package/generators/node-server/templates/server/src/common/metrics.ts.ejs +198 -0
  144. package/generators/node-server/templates/server/src/common/request.ts.ejs +8 -0
  145. package/generators/node-server/templates/server/src/common/sortable-properties.ts.ejs +43 -0
  146. package/generators/node-server/templates/server/src/common/updatable-properties.ts.ejs +14 -0
  147. package/generators/node-server/templates/server/src/config/application-dev.yml.ejs +118 -0
  148. package/generators/node-server/templates/server/src/config/application-prod.yml.ejs +97 -0
  149. package/generators/node-server/templates/server/src/config/application-secret-samples.yml.ejs +42 -0
  150. package/generators/node-server/templates/server/src/config/application-test.yml.ejs +68 -0
  151. package/generators/node-server/templates/server/src/config/application-tls-samples.yml.ejs +15 -0
  152. package/generators/node-server/templates/server/src/config/application-tls.yml.ejs +15 -0
  153. package/generators/node-server/templates/server/src/config/application.yml.ejs +149 -0
  154. package/generators/node-server/templates/server/src/config.spec.ts.ejs +81 -0
  155. package/generators/node-server/templates/server/src/config.ts.ejs +255 -0
  156. package/generators/node-server/templates/server/src/entities/_entityFileName_/_entityFileName_.controller.ts.ejs +178 -0
  157. package/generators/node-server/templates/server/src/entities/_entityFileName_/_entityFileName_.entity.ts.ejs +110 -0
  158. package/generators/node-server/templates/server/src/entities/_entityFileName_/_entityFileName_.mapper.ts.ejs +37 -0
  159. package/generators/node-server/templates/server/src/entities/_entityFileName_/_entityFileName_.module.ts.ejs +14 -0
  160. package/generators/node-server/templates/server/src/entities/_entityFileName_/_entityFileName_.service.ts.ejs +123 -0
  161. package/generators/node-server/templates/server/src/entities/_entityFileName_/dto/_entityFileName_.dto.ts.ejs +99 -0
  162. package/generators/node-server/templates/server/src/mail/mail.module.ts.ejs +49 -0
  163. package/generators/node-server/templates/server/src/mail/mail.service.spec.ts.ejs +105 -0
  164. package/generators/node-server/templates/server/src/mail/mail.service.ts.ejs +120 -0
  165. package/generators/node-server/templates/server/src/main.ts.ejs +114 -0
  166. package/generators/node-server/templates/server/src/management/api-docs.controller.ts.ejs +27 -0
  167. package/generators/node-server/templates/server/src/management/api-docs.service.ts.ejs +8 -0
  168. package/generators/node-server/templates/server/src/management/configuration.controller.ts.ejs +80 -0
  169. package/generators/node-server/templates/server/src/management/health.controller.spec.ts.ejs +79 -0
  170. package/generators/node-server/templates/server/src/management/health.controller.ts.ejs +87 -0
  171. package/generators/node-server/templates/server/src/management/health.module.ts.ejs +9 -0
  172. package/generators/node-server/templates/server/src/management/loggers.controller.ts.ejs +40 -0
  173. package/generators/node-server/templates/server/src/management/management.controller.spec.ts.ejs +26 -0
  174. package/generators/node-server/templates/server/src/management/management.controller.ts.ejs +34 -0
  175. package/generators/node-server/templates/server/src/management/management.module.ts.ejs +21 -0
  176. package/generators/node-server/templates/server/src/management/metrics.controller.ts.ejs +85 -0
  177. package/generators/node-server/templates/server/src/migrations/1570200270081-CreateTables.ts.ejs +64 -0
  178. package/generators/node-server/templates/server/src/migrations/1570200270082-CreateSessions.ts.ejs +26 -0
  179. package/generators/node-server/templates/server/src/migrations/1570200490072-SeedUsersRoles.ts.ejs +74 -0
  180. package/generators/node-server/templates/server/src/migrations/_entityConstraintsMigration_.ts.ejs +40 -0
  181. package/generators/node-server/templates/server/src/migrations/_entityMigration_.ts.ejs +26 -0
  182. package/generators/node-server/templates/server/src/migrations/support/schema.ts.ejs +202 -0
  183. package/generators/node-server/templates/server/src/orm.config.ts.ejs +147 -0
  184. package/generators/node-server/templates/server/src/registry/consul.service.ts.ejs +70 -0
  185. package/generators/node-server/templates/server/src/registry/eureka.service.ts.ejs +129 -0
  186. package/generators/node-server/templates/server/src/swagger.ts.ejs +24 -0
  187. package/generators/node-server/templates/server/src/tls.ts.ejs +27 -0
  188. package/generators/node-server/templates/server/src/users/authority.controller.ts.ejs +85 -0
  189. package/generators/node-server/templates/server/src/users/authority.entity.ts.ejs +22 -0
  190. package/generators/node-server/templates/server/src/users/dto/authority.dto.ts.ejs +10 -0
  191. package/generators/node-server/templates/server/src/users/dto/user.dto.ts.ejs +116 -0
  192. package/generators/node-server/templates/server/src/users/public.user.controller.ts.ejs +51 -0
  193. package/generators/node-server/templates/server/src/users/user.controller.ts.ejs +191 -0
  194. package/generators/node-server/templates/server/src/users/user.entity.ts.ejs +63 -0
  195. package/generators/node-server/templates/server/src/users/user.mapper.ts.ejs +26 -0
  196. package/generators/node-server/templates/server/src/users/user.module.ts.ejs +19 -0
  197. package/generators/node-server/templates/server/src/users/user.service.ts.ejs +156 -0
  198. package/generators/node-server/templates/server/tsconfig.build.json.ejs +9 -0
  199. package/generators/node-server/templates/server/tsconfig.json.ejs +23 -0
  200. package/generators/node-server/templates/server/typeorm-migration.ts.ejs +18 -0
  201. package/generators/node-server/templates/server/vitest.config.e2e.ts.ejs +16 -0
  202. package/generators/node-server/templates/server/vitest.config.ts.ejs +16 -0
  203. package/generators/server/command.js +7 -0
  204. package/generators/server/generator.js +20 -0
  205. package/generators/server/generators/bootstrap/command.js +5 -0
  206. package/generators/server/generators/bootstrap/generator.js +15 -0
  207. package/generators/server/generators/bootstrap/index.js +2 -0
  208. package/generators/server/index.js +2 -0
  209. package/package.json +75 -4
@@ -0,0 +1,96 @@
1
+ import chalk from 'chalk';
2
+ import { asCommand } from 'generator-jhipster';
3
+ import { command as commonCommand } from 'generator-jhipster/generators/common';
4
+ import { command as javaSimpleApplicationCommand } from 'generator-jhipster/generators/java-simple-application';
5
+ import { command as serverCommand } from 'generator-jhipster/generators/server';
6
+ import { command as springBootCommand } from 'generator-jhipster/generators/spring-boot';
7
+
8
+ const { applicationType } = commonCommand.configs;
9
+
10
+ /**
11
+ * The JDL definition of an option of JHipster's commands. The server command of the blueprint replaces the one of
12
+ * JHipster, which imports spring-boot: the JDL of the blueprint cli only knows the options of its own commands.
13
+ * Without a jdl definition (generator-jhipster 9.4.0, whose JDL knows every option), nothing is added.
14
+ */
15
+ const jdlOf = config => (config?.jdl ? { jdl: config.jdl } : {});
16
+
17
+ /**
18
+ * The options of the Java server of JHipster the NodeJS server uses, for the JDL only (no cli option, no prompt). The
19
+ * other ones (searchEngine, messageBroker, buildTool, ...) are unknown options of the JDL of the blueprint.
20
+ */
21
+ const jdlOptions = Object.fromEntries(
22
+ Object.entries({
23
+ databaseType: serverCommand.configs.databaseType,
24
+ devDatabaseType: serverCommand.configs.devDatabaseType,
25
+ serviceDiscoveryType: springBootCommand.configs.serviceDiscoveryType,
26
+ syncUserWithIdp: springBootCommand.configs.syncUserWithIdp,
27
+ packageName: javaSimpleApplicationCommand.configs.packageName,
28
+ })
29
+ .filter(([, config]) => config?.jdl)
30
+ .map(([name, { description, jdl, choices, scope }]) => [name, { description, jdl, choices, scope }]),
31
+ );
32
+ if (jdlOptions.devDatabaseType) {
33
+ // SQLite, the embedded development database of the NodeJS server, on disk or in memory, instead of the H2 databases of
34
+ // JHipster Spring Boot.
35
+ jdlOptions.devDatabaseType.choices = [
36
+ ...jdlOptions.devDatabaseType.choices.filter(choice => !choice.startsWith('h2')),
37
+ 'sqlite',
38
+ 'sqliteMemory',
39
+ ];
40
+ }
41
+
42
+ export default asCommand({
43
+ configs: {
44
+ ...jdlOptions,
45
+ // The secret shared with JHipster's Spring Boot applications, given by the JDL or, like for them, by the hidden
46
+ // --jwt-secret-key option (the one of the samples of a gateway and its microservices).
47
+ jwtSecretKey: springBootCommand.configs.jwtSecretKey,
48
+ applicationType,
49
+ serverPort: {
50
+ ...jdlOf(commonCommand.configs.serverPort),
51
+ prompt: {
52
+ when: answers => answers.applicationType === 'gateway' || answers.applicationType === 'microservice',
53
+ type: 'input',
54
+ validate: input => (/^([0-9]*)$/.test(input) ? true : 'This is not a valid port number.'),
55
+ message:
56
+ 'As you are running in a microservice architecture, on which port would like your server to run? It should be unique to avoid port conflicts.',
57
+ default: answers => (answers.applicationType === 'gateway' ? '8080' : '8081'),
58
+ },
59
+ scope: 'storage',
60
+ },
61
+ authenticationType: {
62
+ ...jdlOf(commonCommand.configs.authenticationType),
63
+ cli: {
64
+ type: String,
65
+ },
66
+ prompt: {
67
+ type: 'list',
68
+ message: `Which ${chalk.yellow('*type*')} of authentication would you like to use?`,
69
+ },
70
+ choices: [
71
+ { value: 'jwt', name: 'JWT authentication (stateless, with a token)' },
72
+ { value: 'oauth2', name: 'OAuth 2.0 / OIDC Authentication (stateful, works with Okta)' },
73
+ ],
74
+ scope: 'storage',
75
+ },
76
+ prodDatabaseType: {
77
+ ...jdlOf(serverCommand.configs.prodDatabaseType),
78
+ cli: {
79
+ type: String,
80
+ },
81
+ prompt: {
82
+ type: 'list',
83
+ message: `Which ${chalk.yellow('*production*')} database would you like to use?`,
84
+ },
85
+ choices: [
86
+ { value: 'postgresql', name: 'PostgreSQL' },
87
+ { value: 'mysql', name: 'MySQL' },
88
+ { value: 'mariadb', name: 'MariaDB' },
89
+ { value: 'oracle', name: 'Oracle (Please follow our documentation to use the Oracle proprietary driver)' },
90
+ { value: 'mssql', name: 'Microsoft SQL Server' },
91
+ { value: 'mongodb', name: 'MongoDB' },
92
+ ],
93
+ scope: 'storage',
94
+ },
95
+ },
96
+ });
@@ -0,0 +1,41 @@
1
+ import { SERVER_NODEJS_SRC_DIR } from '../generator-nodejs-constants.js';
2
+
3
+ const SERVER_NODEJS_DIR = `${SERVER_NODEJS_SRC_DIR}/`;
4
+
5
+ /**
6
+ * The default is to use a file path string. It implies use of the template method.
7
+ * For any other config an object { file:.., method:.., template:.. } can be used
8
+ */
9
+ export const entityFiles = {
10
+ server: [
11
+ {
12
+ path: SERVER_NODEJS_DIR,
13
+ renameTo: (data, filepath) => `${SERVER_NODEJS_DIR}${filepath.replaceAll('_entityFileName_', data.entityFileName)}`,
14
+ templates: [
15
+ 'src/entities/_entityFileName_/_entityFileName_.entity.ts',
16
+ 'src/entities/_entityFileName_/_entityFileName_.module.ts',
17
+ 'src/entities/_entityFileName_/_entityFileName_.service.ts',
18
+ 'src/entities/_entityFileName_/dto/_entityFileName_.dto.ts',
19
+ 'src/entities/_entityFileName_/_entityFileName_.mapper.ts',
20
+ 'src/entities/_entityFileName_/_entityFileName_.controller.ts',
21
+ 'e2e/_entityFileName_.e2e-spec.ts',
22
+ 'e2e/_entityFileName_.database.e2e-spec.ts',
23
+ ],
24
+ },
25
+ ],
26
+ // The migrations of the entity, like its Liquibase changelogs: its table, then its constraints when it has some.
27
+ migrations: [
28
+ {
29
+ path: SERVER_NODEJS_DIR,
30
+ condition: ctx => ctx.databaseTypeSql,
31
+ renameTo: data => `${SERVER_NODEJS_DIR}src/migrations/${data.nodejsMigration.fileName}.ts`,
32
+ templates: ['src/migrations/_entityMigration_.ts'],
33
+ },
34
+ {
35
+ path: SERVER_NODEJS_DIR,
36
+ condition: ctx => ctx.databaseTypeSql && ctx.nodejsConstraintsMigration,
37
+ renameTo: data => `${SERVER_NODEJS_DIR}src/migrations/${data.nodejsConstraintsMigration.fileName}.ts`,
38
+ templates: ['src/migrations/_entityConstraintsMigration_.ts'],
39
+ },
40
+ ],
41
+ };
@@ -0,0 +1,254 @@
1
+ import { SERVER_NODEJS_SRC_DIR } from '../generator-nodejs-constants.js';
2
+
3
+ const SERVER_NODEJS_DIR = `${SERVER_NODEJS_SRC_DIR}/`;
4
+
5
+ export const serverFiles = {
6
+ common: [
7
+ {
8
+ templates: ['.dockerignore', 'README.md.jhi.nodejs', '.gitignore.jhi.nodejs', 'Dockerfile'],
9
+ },
10
+ {
11
+ path: SERVER_NODEJS_DIR,
12
+ // The users administration API, not generated with OAuth2 (users come from the identity provider).
13
+ condition: ctx => ctx.generateUserManagement,
14
+ templates: [
15
+ 'src/users/user.controller.ts',
16
+ 'e2e/user.e2e-spec.ts',
17
+ 'src/mail/mail.service.ts',
18
+ 'src/mail/mail.module.ts',
19
+ 'src/mail/mail.service.spec.ts',
20
+ ],
21
+ },
22
+
23
+ {
24
+ path: SERVER_NODEJS_DIR,
25
+ // The users of the application, synchronized from the identity provider with OAuth2 and syncUserWithIdp.
26
+ condition: ctx => ctx.generateBuiltInUserEntity,
27
+ templates: [
28
+ 'src/users/user.entity.ts',
29
+ 'src/users/user.mapper.ts',
30
+ 'src/users/user.service.ts',
31
+ 'src/users/user.module.ts',
32
+ 'src/users/public.user.controller.ts',
33
+ ],
34
+ },
35
+ {
36
+ path: SERVER_NODEJS_DIR,
37
+ // The transformers of the columns whose values the SQL drivers do not give as the API exchanges them.
38
+ condition: ctx => ctx.databaseTypeSql,
39
+ templates: ['src/common/database/column-transformers.ts', 'src/common/database/column-transformers.spec.ts'],
40
+ },
41
+ {
42
+ path: SERVER_NODEJS_DIR,
43
+ // The tables of the built-in users (SQL), the schema synchronized from the entities (MongoDB, its indices).
44
+ condition: ctx => ctx.databaseTypeMongodb || ctx.generateBuiltInUserEntity || ctx.generateBuiltInAuthorityEntity,
45
+ templates: ['src/migrations/1570200270081-CreateTables.ts'],
46
+ },
47
+ {
48
+ path: SERVER_NODEJS_DIR,
49
+ condition: ctx => ctx.databaseTypeSql,
50
+ // The column types of the database of the active profiles, given to the entities and to the migrations.
51
+ templates: ['src/migrations/support/schema.ts', 'src/common/database/column-types.ts', 'src/common/database/column-types.spec.ts'],
52
+ },
53
+ {
54
+ path: SERVER_NODEJS_DIR,
55
+ condition: ctx => ctx.generateBuiltInAuthorityEntity,
56
+ templates: [
57
+ 'src/users/authority.entity.ts',
58
+ 'src/migrations/1570200490072-SeedUsersRoles.ts',
59
+ 'src/users/dto/authority.dto.ts',
60
+ 'src/users/authority.controller.ts',
61
+ 'e2e/authority.e2e-spec.ts',
62
+ ],
63
+ },
64
+ {
65
+ path: SERVER_NODEJS_DIR,
66
+ templates: [
67
+ 'src/users/dto/user.dto.ts',
68
+ 'src/auth/account.controller.ts',
69
+ 'src/management/management.controller.ts',
70
+ 'src/management/health.controller.ts',
71
+ 'src/management/health.module.ts',
72
+ 'src/management/management.module.ts',
73
+ 'src/management/loggers.controller.ts',
74
+ 'src/management/metrics.controller.ts',
75
+ 'src/management/configuration.controller.ts',
76
+ 'src/management/api-docs.controller.ts',
77
+ 'src/management/api-docs.service.ts',
78
+ 'src/common/metrics.ts',
79
+ 'src/common/metrics.spec.ts',
80
+ 'src/common/logging.ts',
81
+ 'src/common/logging.spec.ts',
82
+ 'src/auth/decorators/auth-user.decorator.ts',
83
+ 'src/auth/auth.module.ts',
84
+ 'src/config/application-dev.yml',
85
+ 'src/config/application-test.yml',
86
+ 'src/config.ts',
87
+ 'src/config/application-prod.yml',
88
+ 'src/config/application-secret-samples.yml',
89
+ 'src/config/application-tls.yml',
90
+ 'src/config/application-tls-samples.yml',
91
+ 'src/config/application.yml',
92
+ 'src/common/database/pagination.entity.ts',
93
+ 'src/common/database/pagination.entity.spec.ts',
94
+ 'src/common/database/base.entity.ts',
95
+ 'src/auth/guards/roles.guard.ts',
96
+ 'src/auth/guards/auth.guard.ts',
97
+ 'src/auth/role-type.ts',
98
+ 'src/auth/decorators/roles.decorator.ts',
99
+ 'src/auth/index.ts',
100
+ 'src/common/header-util.ts',
101
+ 'src/common/interceptors/logging.interceptor.ts',
102
+ 'src/common/request.ts',
103
+ 'src/common/errors/error-constants.ts',
104
+ 'src/common/errors/problem.exception.ts',
105
+ 'src/common/errors/problem-details.filter.ts',
106
+ 'src/auth/auth.service.ts',
107
+ 'src/common/dto/base.dto.ts',
108
+ 'src/main.ts',
109
+ 'src/app.config.ts',
110
+ 'src/application-config.ts',
111
+ 'src/common/common.module.ts',
112
+ 'src/swagger.ts',
113
+ 'src/tls.ts',
114
+ 'src/app.module.ts',
115
+ 'src/orm.config.ts',
116
+ 'tsconfig.build.json',
117
+ 'src/management/management.controller.spec.ts',
118
+ 'src/management/health.controller.spec.ts',
119
+ 'src/common/interceptors/logging.interceptor.spec.ts',
120
+ 'src/config.spec.ts',
121
+ 'src/app.config.spec.ts',
122
+ 'nest-cli.json',
123
+ {
124
+ // The profile of the development scripts (nest start --env-file .env.dev), not of the built application.
125
+ file: 'env',
126
+ renameTo: () => '.env.dev',
127
+ },
128
+ 'eslint.config.mjs',
129
+ 'package.json',
130
+ 'tsconfig.json',
131
+ 'vitest.config.ts',
132
+ 'vitest.config.e2e.ts',
133
+ 'README.md',
134
+ 'sonar-project.properties',
135
+ 'ormconfig.ts',
136
+ ],
137
+ },
138
+ {
139
+ path: SERVER_NODEJS_DIR,
140
+ // The migrations of the developers, created after the constraints migrations of the entities (SQL).
141
+ condition: ctx => ctx.databaseTypeSql,
142
+ templates: ['typeorm-migration.ts'],
143
+ },
144
+ {
145
+ path: SERVER_NODEJS_DIR,
146
+ condition: ctx => ctx.serviceDiscoveryEureka,
147
+ templates: ['src/registry/eureka.service.ts'],
148
+ },
149
+ {
150
+ path: SERVER_NODEJS_DIR,
151
+ condition: ctx => ctx.serviceDiscoveryConsul,
152
+ templates: ['src/registry/consul.service.ts'],
153
+ },
154
+ {
155
+ path: SERVER_NODEJS_DIR,
156
+ // Helper of the MongoDB updates: the MongoDB driver of TypeORM ignores the update: false option.
157
+ condition: ctx => ctx.databaseTypeMongodb,
158
+ templates: ['src/common/updatable-properties.ts'],
159
+ },
160
+ {
161
+ path: SERVER_NODEJS_DIR,
162
+ // Validates the sort of the entity lists by introspection of the TypeORM metadata.
163
+ templates: ['src/common/sortable-properties.ts'],
164
+ },
165
+ ],
166
+ e2e: [
167
+ {
168
+ path: SERVER_NODEJS_DIR,
169
+ templates: ['e2e/app.e2e-spec.ts', 'e2e/cors.e2e-spec.ts', 'e2e/management.e2e-spec.ts', 'e2e/setup.test.js'],
170
+ },
171
+ {
172
+ path: SERVER_NODEJS_DIR,
173
+ condition: generator => generator.generateUserManagement,
174
+ templates: ['e2e/account.e2e-spec.ts'],
175
+ },
176
+ ],
177
+ other: [
178
+ {
179
+ templates: ['package.json'],
180
+ },
181
+ ],
182
+ jwt: [
183
+ {
184
+ path: SERVER_NODEJS_DIR,
185
+ condition: ctx => ctx.authenticationTypeJwt,
186
+ templates: [
187
+ 'src/auth/passport.jwt.strategy.ts',
188
+ 'src/auth/payload.interface.ts',
189
+ 'src/auth/jwt.config.ts',
190
+ 'src/auth/jwt.config.spec.ts',
191
+ ],
192
+ },
193
+ {
194
+ path: SERVER_NODEJS_DIR,
195
+ // The authentication API, without built-in User (a microservice) the application only validates the tokens.
196
+ condition: ctx => ctx.authenticationTypeJwt && ctx.generateBuiltInUserEntity,
197
+ templates: ['src/auth/user.jwt.controller.ts', 'src/auth/dto/user-login.dto.ts'],
198
+ },
199
+ ],
200
+ userManagement: [
201
+ {
202
+ path: SERVER_NODEJS_DIR,
203
+ // The passwords of the users of the user management, the ones of JWT and of the sessions.
204
+ condition: ctx => ctx.generateUserManagement,
205
+ templates: [
206
+ 'src/auth/password-util.ts',
207
+ 'src/auth/password.service.ts',
208
+ 'src/auth/dto/password-change.dto.ts',
209
+ 'src/auth/dto/key-and-password.dto.ts',
210
+ ],
211
+ },
212
+ ],
213
+ session: [
214
+ {
215
+ path: SERVER_NODEJS_DIR,
216
+ // The sessions of the server, of the session login and of the OAuth2 login, protected from CSRF.
217
+ condition: ctx => ctx.authenticationUsesCsrf,
218
+ templates: [
219
+ 'src/auth/csrf.middleware.ts',
220
+ 'src/auth/csrf.middleware.spec.ts',
221
+ 'src/auth/session.entity.ts',
222
+ 'src/auth/session.store.ts',
223
+ 'src/auth/session.store.spec.ts',
224
+ ],
225
+ },
226
+ {
227
+ path: SERVER_NODEJS_DIR,
228
+ condition: ctx => ctx.authenticationUsesCsrf && ctx.databaseTypeSql,
229
+ templates: ['src/migrations/1570200270082-CreateSessions.ts'],
230
+ },
231
+ {
232
+ path: SERVER_NODEJS_DIR,
233
+ condition: ctx => ctx.authenticationTypeSession,
234
+ templates: ['src/auth/user.session.controller.ts', 'src/auth/session-user.middleware.ts', 'e2e/session.e2e-spec.ts'],
235
+ },
236
+ ],
237
+ oauth2: [
238
+ {
239
+ path: SERVER_NODEJS_DIR,
240
+ condition: generator => generator.authenticationTypeOauth2,
241
+ templates: [
242
+ 'src/auth/user.oauth2.controller.ts',
243
+ 'src/auth/passport.oauth2.strategy.ts',
244
+ 'src/auth/oauth2.config.ts',
245
+ 'src/auth/oauth2.authorities.ts',
246
+ 'src/auth/passport.oauth2-bearer.strategy.ts',
247
+ 'src/auth/guards/oauth2-login.guard.ts',
248
+ 'src/auth/oauth2.authorities.spec.ts',
249
+ 'src/auth/passport.oauth2.strategy.spec.ts',
250
+ 'e2e/oauth2-bearer.e2e-spec.ts',
251
+ ],
252
+ },
253
+ ],
254
+ };