generator-jhipster 7.8.0 → 7.9.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 (519) hide show
  1. package/README.md +1 -1
  2. package/cli/environment-builder.js +3 -1
  3. package/cli/import-jdl.js +61 -35
  4. package/cli/jdl.js +5 -4
  5. package/cli/jhipster-command.js +1 -1
  6. package/cli/program.js +5 -3
  7. package/generators/app/index.js +11 -0
  8. package/generators/app/prompts.js +60 -12
  9. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +3 -3
  10. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +3 -3
  11. package/generators/bootstrap/index.js +1 -0
  12. package/generators/bootstrap-application/generator.mjs +1 -0
  13. package/generators/ci-cd/templates/.gitlab-ci.yml.ejs +2 -3
  14. package/generators/client/files-angular.js +72 -89
  15. package/generators/client/files-react.js +63 -74
  16. package/generators/client/files-vue.js +8 -54
  17. package/generators/client/index.js +18 -11
  18. package/generators/client/needle-api/needle-client-angular.js +1 -4
  19. package/generators/client/needle-api/needle-client-react.js +2 -2
  20. package/generators/client/prompts.js +1 -0
  21. package/generators/client/templates/angular/.eslintrc.json.ejs +10 -1
  22. package/generators/client/templates/angular/angular.json.ejs +0 -1
  23. package/generators/client/templates/angular/jest.conf.js.ejs +3 -1
  24. package/generators/client/templates/angular/package.json +32 -32
  25. package/generators/client/templates/angular/package.json.ejs +23 -22
  26. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +4 -4
  27. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.html.ejs +1 -1
  28. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +15 -15
  29. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.ts.ejs +17 -11
  30. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +16 -16
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +14 -9
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +9 -9
  33. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +27 -27
  34. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.ts.ejs +28 -13
  35. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.html.ejs +7 -7
  36. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +19 -19
  37. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
  38. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.ts.ejs +35 -37
  39. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +4 -4
  40. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +7 -7
  41. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.ts.ejs +14 -0
  42. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +6 -6
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.module.ts.ejs +0 -1
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +3 -3
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +5 -5
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +1 -1
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.html.ejs +5 -5
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +10 -10
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +10 -10
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +9 -9
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +8 -8
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +5 -5
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +4 -4
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +5 -5
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +4 -4
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +14 -14
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +16 -16
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +2 -1
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +133 -138
  60. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +22 -24
  61. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +40 -49
  62. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +2 -2
  63. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.module.ts.ejs +0 -1
  64. package/generators/client/templates/angular/src/main/webapp/app/config/navigation.constants.ts.ejs +23 -0
  65. package/generators/client/templates/angular/src/main/webapp/app/config/pagination.constants.ts.ejs +2 -3
  66. package/generators/client/templates/angular/src/main/webapp/app/core/request/request-util.ts.ejs +1 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs +2 -2
  68. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.ts.ejs +7 -3
  69. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.html.ejs +14 -14
  70. package/generators/client/templates/angular/src/main/webapp/app/layouts/error/error.component.html.ejs +1 -1
  71. package/generators/client/templates/angular/src/main/webapp/app/layouts/footer/footer.component.html.ejs +1 -1
  72. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +21 -21
  73. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  74. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +9 -9
  75. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.ts.ejs +16 -27
  76. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.html.ejs +10 -0
  77. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.ts.ejs +23 -0
  78. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +40 -0
  79. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.ts.ejs +95 -0
  80. package/generators/client/templates/angular/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
  81. package/generators/client/templates/angular/src/main/webapp/app/shared/shared.module.ts.ejs +3 -0
  82. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.service.ts.ejs +31 -0
  83. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +3 -8
  84. package/generators/client/templates/angular/tsconfig.json.ejs +6 -0
  85. package/generators/client/templates/angular/tsconfig.spec.json.ejs +1 -1
  86. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +6 -2
  87. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +1 -1
  88. package/generators/client/templates/common/package.json +6 -6
  89. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +2 -0
  90. package/generators/client/templates/react/.eslintrc.json.ejs +10 -1
  91. package/generators/client/templates/react/jest.conf.js.ejs +3 -1
  92. package/generators/client/templates/react/package.json +57 -57
  93. package/generators/client/templates/react/package.json.ejs +3 -3
  94. package/generators/client/templates/react/src/main/webapp/app/app.tsx.ejs +3 -3
  95. package/generators/client/templates/react/src/main/webapp/app/entities/menu.tsx.ejs +1 -1
  96. package/generators/client/templates/react/src/main/webapp/app/entities/routes.tsx.ejs +7 -5
  97. package/generators/client/templates/react/src/main/webapp/app/index.tsx.ejs +4 -5
  98. package/generators/client/templates/react/src/main/webapp/app/modules/account/activate/activate.tsx.ejs +8 -4
  99. package/generators/client/templates/react/src/main/webapp/app/modules/account/index.tsx.ejs +9 -6
  100. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +1 -0
  101. package/generators/client/templates/react/src/main/webapp/app/modules/account/password-reset/finish/password-reset-finish.tsx.ejs +8 -5
  102. package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.ts.ejs +6 -7
  103. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +9 -1
  104. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health-modal.tsx.ejs +3 -2
  105. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health.tsx.ejs +4 -4
  106. package/generators/client/templates/react/src/main/webapp/app/modules/administration/index.tsx.ejs +14 -11
  107. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +8 -2
  108. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/index.tsx.ejs +13 -13
  109. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-delete-dialog.tsx.ejs +7 -4
  110. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-detail.tsx.ejs +5 -3
  111. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-update.tsx.ejs +10 -6
  112. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +18 -26
  113. package/generators/client/templates/react/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +6 -3
  114. package/generators/client/templates/react/src/main/webapp/app/modules/login/login.tsx.ejs +6 -5
  115. package/generators/client/templates/react/src/main/webapp/app/routes.tsx.ejs +53 -25
  116. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +30 -27
  117. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.tsx.ejs +35 -34
  118. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-routes.spec.tsx.ejs +55 -0
  119. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-routes.tsx.ejs +21 -0
  120. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.spec.tsx.ejs +1 -1
  121. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.tsx.ejs +1 -1
  122. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-loading.tsx.ejs +8 -10
  123. package/generators/client/templates/react/src/main/webapp/app/shared/error/page-not-found.tsx.ejs +9 -13
  124. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +3 -5
  125. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +5 -8
  126. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +1 -1
  127. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-item.tsx.ejs +12 -11
  128. package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +2 -2
  129. package/generators/client/templates/react/tsconfig.json.ejs +2 -4
  130. package/generators/client/templates/react/tsconfig.test.json.ejs +1 -0
  131. package/generators/client/templates/react/webpack/webpack.common.js.ejs +7 -3
  132. package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +4 -4
  133. package/generators/client/templates/vue/.eslintrc.js.ejs +10 -1
  134. package/generators/client/templates/vue/package.json +40 -39
  135. package/generators/client/templates/vue/package.json.ejs +3 -3
  136. package/generators/client/templates/vue/src/main/webapp/app/account/login-form/login-form.component.ts.ejs +2 -2
  137. package/generators/client/templates/vue/src/main/webapp/app/admin/gateway/gateway.component.ts.ejs +14 -0
  138. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.vue.ejs +1 -1
  139. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +2 -2
  140. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +5 -3
  141. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +2 -2
  142. package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +1 -1
  143. package/generators/client/templates/vue/src/main/webapp/app/shared/date/filters.ts.ejs +0 -6
  144. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +5 -0
  145. package/generators/client/templates/vue/src/test/javascript/spec/app/account/register/register.component.spec.ts.ejs +1 -1
  146. package/generators/client/templates/vue/tsconfig.json.ejs +1 -1
  147. package/generators/client/templates/vue/tsconfig.spec.json.ejs +2 -2
  148. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +4 -0
  149. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +8 -1
  150. package/generators/client/transform-angular.cjs +117 -0
  151. package/generators/client/transform-react.cjs +126 -0
  152. package/generators/client/transform-vue.cjs +42 -0
  153. package/generators/common/files.js +2 -9
  154. package/generators/common/templates/README.md.jhi.ejs +21 -5
  155. package/generators/common/templates/package.json +3 -3
  156. package/generators/cypress/files.js +34 -22
  157. package/generators/cypress/index.js +42 -19
  158. package/generators/cypress/templates/cypress-audits.config.ts.ejs +28 -0
  159. package/generators/cypress/templates/cypress.config.ts.ejs +57 -0
  160. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/login-page.spec.ts.ejs → e2e/account/login-page.cy.ts.ejs} +0 -0
  161. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/password-page.spec.ts.ejs → e2e/account/password-page.cy.ts.ejs} +0 -0
  162. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/register-page.spec.ts.ejs → e2e/account/register-page.cy.ts.ejs} +0 -0
  163. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/reset-password-page.spec.ts.ejs → e2e/account/reset-password-page.cy.ts.ejs} +0 -0
  164. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/settings-page.spec.ts.ejs → e2e/account/settings-page.cy.ts.ejs} +0 -0
  165. package/generators/cypress/templates/src/test/javascript/cypress/{integration/administration/administration.spec.ts.ejs → e2e/administration/administration.cy.ts.ejs} +1 -1
  166. package/generators/cypress/templates/src/test/javascript/cypress/{integration → e2e}/lighthouse.audits.ts.ejs +0 -0
  167. package/generators/cypress/templates/src/test/javascript/cypress/plugins/global.d.ts.ejs +25 -0
  168. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +13 -14
  169. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +4 -4
  170. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
  171. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +8 -8
  172. package/generators/cypress/templates/src/test/javascript/cypress/tsconfig.json.ejs +8 -5
  173. package/generators/database-changelog-liquibase/files.js +1 -1
  174. package/generators/database-changelog-liquibase/index.js +3 -0
  175. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +1 -1
  176. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity_constraints.xml.ejs +1 -1
  177. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +1 -1
  178. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +2 -2
  179. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_migrate.xml.ejs +1 -1
  180. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +2 -2
  181. package/generators/docker-base.js +6 -3
  182. package/generators/docker-compose/files.js +5 -2
  183. package/generators/docker-compose/index.js +13 -24
  184. package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +1 -1
  185. package/generators/docker-compose/templates/docker-compose.yml.ejs +10 -8
  186. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +62 -4
  187. package/generators/docker-prompts.js +1 -2
  188. package/generators/docker-utils.js +0 -1
  189. package/generators/entity/index.js +5 -15
  190. package/generators/entity/prompts.js +1 -52
  191. package/generators/entity-client/files-angular.cjs +169 -0
  192. package/generators/entity-client/files-cypress.cjs +52 -0
  193. package/generators/entity-client/files-react.cjs +113 -0
  194. package/generators/entity-client/files-vue.cjs +140 -0
  195. package/generators/entity-client/files.js +10 -381
  196. package/generators/entity-client/index.js +120 -19
  197. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +4 -5
  198. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.ts.ejs +2 -1
  199. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +12 -11
  200. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +0 -5
  201. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.model.ts.ejs +18 -25
  202. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.test-samples.ts.ejs +45 -0
  203. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +45 -37
  204. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +47 -28
  205. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +292 -94
  206. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +5 -106
  207. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +2 -82
  208. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +5 -5
  209. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.ts.ejs +5 -5
  210. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +2 -3
  211. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +89 -175
  212. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +69 -44
  213. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.spec.ts.ejs +111 -0
  214. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.ts.ejs +263 -0
  215. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +99 -120
  216. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +47 -71
  217. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +79 -195
  218. package/generators/entity-client/templates/{common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs → cypress/src/test/javascript/cypress/e2e/entity/entity.cy.ts.ejs} +26 -17
  219. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +10 -5
  220. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-detail.tsx.ejs +5 -3
  221. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +11 -6
  222. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -10
  223. package/generators/entity-client/templates/react/src/main/webapp/app/entities/index.tsx.ejs +13 -13
  224. package/generators/entity-client/templates/react/src/main/webapp/app/entities/react_validators.ejs +25 -32
  225. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +2 -2
  226. package/generators/entity-server/cleanup.js +41 -0
  227. package/generators/entity-server/files.js +118 -53
  228. package/generators/entity-server/index.js +14 -27
  229. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  230. package/generators/entity-server/templates/partials/update_template.ejs +1 -1
  231. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +11 -5
  232. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.elastic_search.ejs +17 -0
  233. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_cassandra.ejs +3 -1
  234. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +6 -1
  235. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +11 -12
  236. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +2 -2
  237. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +13 -6
  238. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +3 -3
  239. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +46 -9
  240. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +3 -3
  241. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +2 -2
  242. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +2 -5
  243. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +140 -132
  244. package/generators/gae/index.js +1 -1
  245. package/generators/generate-blueprint/constants.mjs +22 -2
  246. package/generators/generate-blueprint/generator.mjs +25 -6
  247. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +5 -3
  248. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +2 -1
  249. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +6 -5
  250. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +10 -1
  251. package/generators/generator-base-blueprint.js +19 -20
  252. package/generators/generator-base-private.js +116 -64
  253. package/generators/generator-base.js +241 -91
  254. package/generators/generator-constants.js +118 -66
  255. package/generators/generator-defaults.js +1 -0
  256. package/generators/heroku/index.js +5 -4
  257. package/generators/heroku/templates/application-heroku.yml.ejs +1 -2
  258. package/generators/heroku/templates/heroku.gradle.ejs +28 -1
  259. package/generators/heroku/templates/pom-profile.xml.ejs +29 -0
  260. package/generators/java/index.cjs +2 -2
  261. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -2
  262. package/generators/kubernetes/templates/db/mongodb.yml.ejs +1 -2
  263. package/generators/kubernetes/templates/ingress.yml.ejs +11 -4
  264. package/generators/kubernetes/templates/monitoring/jhipster-grafana.yml.ejs +6 -2
  265. package/generators/kubernetes/templates/registry/consul.yml.ejs +1 -2
  266. package/generators/kubernetes/templates/registry/jhipster-registry.yml.ejs +1 -2
  267. package/generators/languages/templates/src/main/webapp/i18n/al/global.json.ejs +7 -1
  268. package/generators/languages/templates/src/main/webapp/i18n/ar-ly/global.json.ejs +7 -1
  269. package/generators/languages/templates/src/main/webapp/i18n/bg/global.json.ejs +7 -1
  270. package/generators/languages/templates/src/main/webapp/i18n/bn/global.json.ejs +7 -1
  271. package/generators/languages/templates/src/main/webapp/i18n/by/global.json.ejs +7 -1
  272. package/generators/languages/templates/src/main/webapp/i18n/ca/global.json.ejs +7 -1
  273. package/generators/languages/templates/src/main/webapp/i18n/cs/global.json.ejs +7 -1
  274. package/generators/languages/templates/src/main/webapp/i18n/da/global.json.ejs +7 -1
  275. package/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +7 -1
  276. package/generators/languages/templates/src/main/webapp/i18n/el/global.json.ejs +7 -1
  277. package/generators/languages/templates/src/main/webapp/i18n/en/global.json.ejs +7 -1
  278. package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +3 -0
  279. package/generators/languages/templates/src/main/webapp/i18n/es/global.json.ejs +7 -1
  280. package/generators/languages/templates/src/main/webapp/i18n/et/global.json.ejs +7 -1
  281. package/generators/languages/templates/src/main/webapp/i18n/fa/global.json.ejs +7 -1
  282. package/generators/languages/templates/src/main/webapp/i18n/fi/global.json.ejs +7 -1
  283. package/generators/languages/templates/src/main/webapp/i18n/fr/global.json.ejs +7 -1
  284. package/generators/languages/templates/src/main/webapp/i18n/gl/global.json.ejs +7 -1
  285. package/generators/languages/templates/src/main/webapp/i18n/hi/global.json.ejs +7 -1
  286. package/generators/languages/templates/src/main/webapp/i18n/hr/global.json.ejs +7 -1
  287. package/generators/languages/templates/src/main/webapp/i18n/hu/global.json.ejs +7 -1
  288. package/generators/languages/templates/src/main/webapp/i18n/hy/global.json.ejs +7 -1
  289. package/generators/languages/templates/src/main/webapp/i18n/in/global.json.ejs +7 -1
  290. package/generators/languages/templates/src/main/webapp/i18n/it/global.json.ejs +7 -1
  291. package/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +7 -1
  292. package/generators/languages/templates/src/main/webapp/i18n/ko/global.json.ejs +7 -1
  293. package/generators/languages/templates/src/main/webapp/i18n/mr/global.json.ejs +7 -1
  294. package/generators/languages/templates/src/main/webapp/i18n/my/global.json.ejs +7 -1
  295. package/generators/languages/templates/src/main/webapp/i18n/nl/global.json.ejs +7 -1
  296. package/generators/languages/templates/src/main/webapp/i18n/pa/global.json.ejs +7 -1
  297. package/generators/languages/templates/src/main/webapp/i18n/pl/global.json.ejs +7 -1
  298. package/generators/languages/templates/src/main/webapp/i18n/pt-br/global.json.ejs +7 -1
  299. package/generators/languages/templates/src/main/webapp/i18n/pt-pt/global.json.ejs +7 -1
  300. package/generators/languages/templates/src/main/webapp/i18n/ro/global.json.ejs +7 -1
  301. package/generators/languages/templates/src/main/webapp/i18n/ru/global.json.ejs +7 -1
  302. package/generators/languages/templates/src/main/webapp/i18n/si/global.json.ejs +7 -1
  303. package/generators/languages/templates/src/main/webapp/i18n/sk/global.json.ejs +7 -1
  304. package/generators/languages/templates/src/main/webapp/i18n/sr/global.json.ejs +7 -1
  305. package/generators/languages/templates/src/main/webapp/i18n/sv/global.json.ejs +7 -1
  306. package/generators/languages/templates/src/main/webapp/i18n/ta/global.json.ejs +7 -1
  307. package/generators/languages/templates/src/main/webapp/i18n/te/global.json.ejs +7 -1
  308. package/generators/languages/templates/src/main/webapp/i18n/th/global.json.ejs +7 -1
  309. package/generators/languages/templates/src/main/webapp/i18n/tr/global.json.ejs +7 -1
  310. package/generators/languages/templates/src/main/webapp/i18n/ua/global.json.ejs +7 -1
  311. package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json +7 -1
  312. package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/global.json.ejs +7 -1
  313. package/generators/languages/templates/src/main/webapp/i18n/vi/global.json.ejs +7 -1
  314. package/generators/languages/templates/src/main/webapp/i18n/zh-cn/global.json.ejs +7 -1
  315. package/generators/languages/templates/src/main/webapp/i18n/zh-tw/global.json.ejs +7 -1
  316. package/generators/languages/templates/src/test/resources/i18n/messages_al.properties.ejs +4 -1
  317. package/generators/languages/templates/src/test/resources/i18n/messages_ar_LY.properties.ejs +4 -1
  318. package/generators/languages/templates/src/test/resources/i18n/messages_bg.properties.ejs +1 -1
  319. package/generators/languages/templates/src/test/resources/i18n/messages_bn.properties.ejs +4 -1
  320. package/generators/languages/templates/src/test/resources/i18n/messages_by.properties.ejs +4 -1
  321. package/generators/languages/templates/src/test/resources/i18n/messages_ca.properties.ejs +4 -1
  322. package/generators/languages/templates/src/test/resources/i18n/messages_cs.properties.ejs +4 -1
  323. package/generators/languages/templates/src/test/resources/i18n/messages_da.properties.ejs +4 -1
  324. package/generators/languages/templates/src/test/resources/i18n/messages_de.properties.ejs +4 -1
  325. package/generators/languages/templates/src/test/resources/i18n/messages_el.properties.ejs +4 -1
  326. package/generators/languages/templates/src/test/resources/i18n/messages_es.properties.ejs +4 -1
  327. package/generators/languages/templates/src/test/resources/i18n/messages_et.properties.ejs +4 -1
  328. package/generators/languages/templates/src/test/resources/i18n/messages_fa.properties.ejs +4 -1
  329. package/generators/languages/templates/src/test/resources/i18n/messages_fi.properties.ejs +1 -1
  330. package/generators/languages/templates/src/test/resources/i18n/messages_gl.properties.ejs +4 -1
  331. package/generators/languages/templates/src/test/resources/i18n/messages_hi.properties.ejs +4 -1
  332. package/generators/languages/templates/src/test/resources/i18n/messages_hr.properties.ejs +1 -1
  333. package/generators/languages/templates/src/test/resources/i18n/messages_hu.properties.ejs +4 -1
  334. package/generators/languages/templates/src/test/resources/i18n/messages_hy.properties.ejs +4 -1
  335. package/generators/languages/templates/src/test/resources/i18n/messages_in.properties.ejs +4 -1
  336. package/generators/languages/templates/src/test/resources/i18n/messages_it.properties.ejs +4 -1
  337. package/generators/languages/templates/src/test/resources/i18n/messages_ja.properties.ejs +4 -1
  338. package/generators/languages/templates/src/test/resources/i18n/messages_ko.properties.ejs +4 -1
  339. package/generators/languages/templates/src/test/resources/i18n/messages_mr.properties.ejs +4 -1
  340. package/generators/languages/templates/src/test/resources/i18n/messages_my.properties.ejs +4 -1
  341. package/generators/languages/templates/src/test/resources/i18n/messages_nl.properties.ejs +4 -1
  342. package/generators/languages/templates/src/test/resources/i18n/messages_pa.properties.ejs +1 -1
  343. package/generators/languages/templates/src/test/resources/i18n/messages_pl.properties.ejs +4 -1
  344. package/generators/languages/templates/src/test/resources/i18n/messages_pt_BR.properties.ejs +1 -1
  345. package/generators/languages/templates/src/test/resources/i18n/messages_pt_PT.properties.ejs +4 -1
  346. package/generators/languages/templates/src/test/resources/i18n/messages_ro.properties.ejs +4 -1
  347. package/generators/languages/templates/src/test/resources/i18n/messages_ru.properties.ejs +4 -1
  348. package/generators/languages/templates/src/test/resources/i18n/messages_si.properties.ejs +4 -1
  349. package/generators/languages/templates/src/test/resources/i18n/messages_sk.properties.ejs +4 -1
  350. package/generators/languages/templates/src/test/resources/i18n/messages_sr.properties.ejs +4 -1
  351. package/generators/languages/templates/src/test/resources/i18n/messages_sv.properties.ejs +4 -1
  352. package/generators/languages/templates/src/test/resources/i18n/messages_ta.properties.ejs +4 -1
  353. package/generators/languages/templates/src/test/resources/i18n/messages_te.properties.ejs +4 -1
  354. package/generators/languages/templates/src/test/resources/i18n/messages_th.properties.ejs +4 -1
  355. package/generators/languages/templates/src/test/resources/i18n/messages_tr.properties.ejs +4 -1
  356. package/generators/languages/templates/src/test/resources/i18n/messages_ua.properties.ejs +4 -1
  357. package/generators/languages/templates/src/test/resources/i18n/messages_uz_Cyrl_UZ.properties.ejs +4 -1
  358. package/generators/languages/templates/src/test/resources/i18n/messages_uz_Latn_UZ.properties.ejs +4 -1
  359. package/generators/languages/templates/src/test/resources/i18n/messages_vi.properties.ejs +4 -1
  360. package/generators/languages/templates/src/test/resources/i18n/messages_zh_CN.properties.ejs +4 -1
  361. package/generators/languages/templates/src/test/resources/i18n/messages_zh_TW.properties.ejs +4 -1
  362. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  363. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +5 -5
  364. package/generators/maven/templates/pom.xml.jhi.ejs +2 -2
  365. package/generators/openapi-client/files.js +2 -8
  366. package/generators/openapi-client/index.js +2 -0
  367. package/generators/openshift/templates/registry/consul.yml.ejs +1 -2
  368. package/generators/openshift/templates/registry/jhipster-registry.yml.ejs +1 -2
  369. package/generators/project-name/index.cjs +8 -5
  370. package/generators/server/cleanup-angular.js +37 -0
  371. package/generators/server/cleanup-cache-provider.js +46 -0
  372. package/generators/server/cleanup-cassandra.js +49 -0
  373. package/generators/server/cleanup-cucumber.js +40 -0
  374. package/generators/server/cleanup-elasticsearch.js +48 -0
  375. package/generators/server/cleanup-gradle.js +40 -0
  376. package/generators/server/cleanup-kafka.js +41 -0
  377. package/generators/server/cleanup-maven.js +37 -0
  378. package/generators/server/cleanup-mongodb.js +40 -0
  379. package/generators/server/cleanup-oauth2.js +43 -0
  380. package/generators/server/cleanup-reactive.js +38 -0
  381. package/generators/server/cleanup-sql.js +48 -0
  382. package/generators/server/cleanup.js +85 -51
  383. package/generators/server/esm.mjs +1 -0
  384. package/generators/server/files-couchbase.js +11 -10
  385. package/generators/server/files-sql.js +197 -4
  386. package/generators/server/files.js +180 -273
  387. package/generators/server/index.js +32 -86
  388. package/generators/server/needles.cjs +79 -0
  389. package/generators/server/templates/.mvn/jvm.config +1 -1
  390. package/generators/server/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  391. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +5 -5
  392. package/generators/server/templates/.npmrc.ejs +1 -0
  393. package/generators/server/templates/build.gradle.ejs +121 -226
  394. package/generators/server/templates/couchbase/src/test/java/package/config/CouchbaseTestContainer.java.ejs +67 -0
  395. package/generators/server/templates/couchbase/src/test/java/package/config/EmbeddedCouchbase.java.ejs +30 -0
  396. package/generators/server/templates/gradle/docker.gradle.ejs +6 -0
  397. package/generators/server/templates/gradle/profile_dev.gradle.ejs +95 -3
  398. package/generators/server/templates/gradle/profile_prod.gradle.ejs +80 -4
  399. package/generators/server/templates/gradle.properties.ejs +17 -13
  400. package/generators/server/templates/pom.xml.ejs +274 -225
  401. package/generators/server/templates/settings.gradle.ejs +2 -1
  402. package/generators/server/templates/sql/common/src/main/docker/config/mariadb/my.cnf +49 -0
  403. package/generators/server/templates/sql/common/src/main/docker/config/mysql/my.cnf +82 -0
  404. package/generators/server/templates/{src → sql/common/src}/main/docker/mariadb.yml.ejs +2 -0
  405. package/generators/server/templates/{src → sql/common/src}/main/docker/mssql.yml.ejs +0 -0
  406. package/generators/server/templates/{src → sql/common/src}/main/docker/mysql.yml.ejs +2 -2
  407. package/generators/server/templates/{src → sql/common/src}/main/docker/postgresql.yml.ejs +0 -0
  408. package/generators/server/templates/{src → sql/common/src}/main/java/package/config/LiquibaseConfiguration.java.ejs +0 -0
  409. package/generators/server/templates/{src → sql/common/src}/main/resources/h2.server.properties.ejs +0 -0
  410. package/generators/server/templates/sql/common/src/test/java/package/config/EmbeddedSQL.java.ejs +30 -0
  411. package/generators/server/templates/sql/common/src/test/java/package/config/MariadbTestContainer.java.ejs +60 -0
  412. package/generators/server/templates/sql/common/src/test/java/package/config/MsSqlTestContainer.java.ejs +59 -0
  413. package/generators/server/templates/sql/common/src/test/java/package/config/MysqlTestContainer.java.ejs +69 -0
  414. package/generators/server/templates/sql/common/src/test/java/package/config/PostgreSqlTestContainer.java.ejs +59 -0
  415. package/generators/server/templates/sql/common/src/test/java/package/config/SqlTestContainer.java.ejs +28 -0
  416. package/generators/server/templates/{src → sql/common/src}/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs +0 -0
  417. package/generators/server/templates/{src → sql/common/src}/test/java/package/repository/timezone/DateTimeWrapper.java.ejs +0 -0
  418. package/generators/server/templates/{src → sql/common/src}/test/java/package/repository/timezone/DateTimeWrapperRepository.java.ejs +0 -0
  419. package/generators/server/templates/sql/common/src/test/resources/config/application-testdev.yml.ejs +93 -0
  420. package/generators/server/templates/{src/test/resources/config/application-testcontainers.yml.ejs → sql/common/src/test/resources/config/application-testprod.yml.ejs} +17 -33
  421. package/generators/server/templates/sql/common/src/test/resources/testcontainers/mariadb/my.cnf +49 -0
  422. package/generators/server/templates/sql/common/src/test/resources/testcontainers/mysql/my.cnf +83 -0
  423. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/EntityManager.java.ejs +45 -35
  424. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/rowmapper/ColumnConverter.java.ejs +0 -0
  425. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/rowmapper/UserRowMapper.java.ejs +0 -0
  426. package/generators/server/templates/src/main/docker/app.yml.ejs +16 -14
  427. package/generators/server/templates/src/main/docker/cassandra-migration.yml.ejs +1 -0
  428. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +62 -6
  429. package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +1 -1
  430. package/generators/server/templates/src/main/docker/jhipster-registry.yml.ejs +1 -1
  431. package/generators/server/templates/src/main/docker/jib/entrypoint.sh.ejs +36 -1
  432. package/generators/server/templates/src/main/docker/keycloak.yml.ejs +8 -6
  433. package/generators/server/templates/src/main/java/package/config/ApplicationProperties.java.ejs +3 -0
  434. package/generators/server/templates/src/main/java/package/config/AsyncConfiguration.java.ejs +2 -6
  435. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +1 -1
  436. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +16 -30
  437. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +108 -15
  438. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +6 -0
  439. package/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +6 -3
  440. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +10 -3
  441. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +12 -2
  442. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource.java.ejs +1 -5
  443. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -5
  444. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +3 -4
  445. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +4 -3
  446. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -1
  447. package/generators/server/templates/src/main/resources/config/application.yml.ejs +1 -1
  448. package/generators/server/templates/src/main/resources/config/liquibase/changelog/initial_schema.xml.ejs +1 -1
  449. package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +54 -24
  450. package/generators/server/templates/src/main/resources/swagger/api.yml.ejs +3 -3
  451. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +32 -19
  452. package/generators/server/templates/src/test/java/package/{repository/search/UserSearchRepositoryMockConfiguration.java.ejs → config/AsyncSyncConfiguration.java.ejs} +12 -10
  453. package/generators/server/templates/src/test/java/package/config/CassandraTestContainer.java.ejs +20 -1
  454. package/generators/{entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs → server/templates/src/test/java/package/config/ElasticsearchReactiveTestConfiguration.java.ejs} +14 -11
  455. package/generators/server/templates/src/test/java/package/config/ElasticsearchTestContainer.java.ejs +68 -0
  456. package/generators/server/templates/src/test/java/package/config/EmbeddedCassandra.java.ejs +19 -0
  457. package/generators/server/templates/src/test/java/package/config/EmbeddedElasticsearch.java.ejs +30 -0
  458. package/generators/server/templates/src/test/java/package/config/EmbeddedKafka.java.ejs +19 -0
  459. package/generators/server/templates/src/test/java/package/config/EmbeddedMongo.java.ejs +19 -0
  460. package/generators/server/templates/src/test/java/package/config/EmbeddedNeo4j.java.ejs +29 -0
  461. package/generators/server/templates/src/test/java/package/config/EmbeddedRedis.java.ejs +30 -0
  462. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +11 -2
  463. package/generators/server/templates/src/test/java/package/config/KafkaTestContainer.java.ejs +19 -1
  464. package/generators/server/templates/src/test/java/package/config/MongoDbTestContainer.java.ejs +5 -5
  465. package/generators/server/templates/src/test/java/package/config/Neo4jTestContainer.java.ejs +66 -0
  466. package/generators/server/templates/src/test/java/package/config/RedisTestContainer.java.ejs +57 -0
  467. package/generators/server/templates/src/test/java/package/config/{NoOpMailConfiguration.java.ejs → SpringBootTestClassOrderer.java.ejs} +16 -16
  468. package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +166 -30
  469. package/generators/server/templates/src/test/java/package/config/WebConfigurerTest.java.ejs +0 -23
  470. package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +5 -3
  471. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +7 -15
  472. package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +8 -11
  473. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  474. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +19 -73
  475. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +0 -8
  476. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +13 -10
  477. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +76 -51
  478. package/generators/server/templates/src/test/resources/config/application.yml.ejs +13 -62
  479. package/generators/server/templates/src/test/resources/junit-platform.properties.ejs +1 -0
  480. package/generators/server/templates/src/test/resources/templates/mail/activationEmail.html.ejs +19 -0
  481. package/generators/server/templates/src/test/resources/templates/mail/creationEmail.html.ejs +19 -0
  482. package/generators/server/templates/src/test/resources/templates/mail/passwordResetEmail.html.ejs +21 -0
  483. package/generators/spring-controller/index.js +16 -1
  484. package/generators/sql-constants.js +85 -0
  485. package/generators/statistics.js +6 -5
  486. package/generators/upgrade/index.js +1 -1
  487. package/generators/utils.js +32 -30
  488. package/generators/workspaces/index.js +31 -28
  489. package/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +2 -3
  490. package/jdl/converters/json-to-jdl-converter.js +23 -6
  491. package/jdl/exporters/applications/jhipster-application-formatter.js +7 -0
  492. package/jdl/jhipster/application-options.js +8 -0
  493. package/jdl/jhipster/default-application-options.js +2 -2
  494. package/jdl/parsing/lexer/application-tokens.js +6 -0
  495. package/jdl/parsing/validator.js +7 -0
  496. package/jdl/validators/application-validator.js +3 -1
  497. package/jdl/validators/jdl-with-application-validator.js +1 -0
  498. package/jdl/validators/jdl-without-application-validator.js +3 -2
  499. package/lib/support/base.cjs +43 -0
  500. package/lib/support/needles.cjs +221 -0
  501. package/lib/support/shared-data.cjs +2 -2
  502. package/package.json +29 -27
  503. package/utils/blueprint.js +1 -1
  504. package/utils/entity.js +9 -1
  505. package/utils/field.js +24 -11
  506. package/utils/liquibase.js +5 -8
  507. package/utils/relationship.js +3 -2
  508. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.spec.tsx.ejs +0 -33
  509. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.tsx.ejs +0 -17
  510. package/generators/cypress/templates/cypress-audits.json.ejs +0 -32
  511. package/generators/cypress/templates/cypress.json.ejs +0 -46
  512. package/generators/docker-compose/templates/realm-config/jhipster-users-0.json.ejs +0 -61
  513. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/no-pagination-template.ejs +0 -81
  514. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +0 -56
  515. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-users-0.json.ejs +0 -61
  516. package/generators/server/templates/src/test/java/package/AbstractNeo4jIT.java.ejs +0 -44
  517. package/generators/server/templates/src/test/java/package/ReactiveSqlTestContainerExtension.java.ejs +0 -79
  518. package/generators/server/templates/src/test/java/package/RedisTestContainerExtension.java.ejs +0 -44
  519. package/generators/server/templates/src/test/resources/testcontainers/mariadb/my.cnf +0 -2
@@ -25,6 +25,7 @@ const prioritiesForSub = subGenerator => (subGenerator.startsWith('entit') ? ENT
25
25
 
26
26
  export const GENERATORS = 'generators';
27
27
  export const SUB_GENERATORS = 'subGenerators';
28
+ export const ADDITIONAL_SUB_GENERATORS = 'additionalSubGenerators';
28
29
  export const DYNAMIC = 'dynamic';
29
30
  export const JS = 'js';
30
31
 
@@ -43,6 +44,11 @@ export const options = () => ({
43
44
  type: Array,
44
45
  scope: 'storage',
45
46
  },
47
+ [ADDITIONAL_SUB_GENERATORS]: {
48
+ desc: 'Comma separated additional sub generators to generate',
49
+ type: String,
50
+ scope: 'storage',
51
+ },
46
52
  [DYNAMIC]: {
47
53
  desc: 'Genate dynamic generators (advanced)',
48
54
  type: Boolean,
@@ -73,6 +79,7 @@ export const defaultConfig = () => ({
73
79
  [DYNAMIC]: false,
74
80
  [JS]: false,
75
81
  [SUB_GENERATORS]: [],
82
+ [ADDITIONAL_SUB_GENERATORS]: '',
76
83
  });
77
84
 
78
85
  export const defaultSubGeneratorConfig = () => ({
@@ -91,6 +98,7 @@ const allSubGeneratorConfig = subGenerator => ({
91
98
  export const allGeneratorsConfig = () => ({
92
99
  ...requiredConfig,
93
100
  [SUB_GENERATORS]: Object.values(GENERATOR_LIST),
101
+ [ADDITIONAL_SUB_GENERATORS]: '',
94
102
  [DYNAMIC]: false,
95
103
  [JS]: false,
96
104
  [GENERATORS]: Object.fromEntries(
@@ -110,6 +118,17 @@ export const prompts = () => {
110
118
  pageSize: 30,
111
119
  loop: false,
112
120
  },
121
+ {
122
+ type: 'input',
123
+ name: ADDITIONAL_SUB_GENERATORS,
124
+ message: 'Comma separated additional sub-generators.',
125
+ validate: input => {
126
+ if (input) {
127
+ return /^([\w,-]*)$/.test(input) ? true : 'Please provide valid generator names';
128
+ }
129
+ return true;
130
+ },
131
+ },
113
132
  {
114
133
  type: 'confirm',
115
134
  name: 'cli',
@@ -119,11 +138,12 @@ export const prompts = () => {
119
138
  ];
120
139
  };
121
140
 
122
- export const subGeneratorPrompts = subGenerator => {
141
+ export const subGeneratorPrompts = (subGenerator, additionalSubGenerator) => {
123
142
  return [
124
143
  {
125
144
  type: 'confirm',
126
145
  name: SBS,
146
+ when: !additionalSubGenerator,
127
147
  message: `Is ${chalk.yellow(subGenerator)} generator a side-by-side blueprint?`,
128
148
  default: true,
129
149
  },
@@ -139,7 +159,7 @@ export const subGeneratorPrompts = subGenerator => {
139
159
  message: `What task do you want do implement at ${chalk.yellow(subGenerator)} generator?`,
140
160
  choices: prioritiesForSub(subGenerator),
141
161
  pageSize: 30,
142
- default: answers => (answers.sbs ? [] : prioritiesForSub(subGenerator)),
162
+ default: answers => (answers.sbs || additionalSubGenerator ? [] : prioritiesForSub(subGenerator)),
143
163
  loop: false,
144
164
  },
145
165
  ];
@@ -21,6 +21,7 @@ import lodash from 'lodash';
21
21
  import { readFile } from 'fs/promises';
22
22
 
23
23
  import BaseBlueprintGenerator from '../generator-base-blueprint.js';
24
+ import { SKIP_COMMIT_HOOK } from '../init/constants.cjs';
24
25
  import {
25
26
  PRIORITY_PREFIX,
26
27
  INITIALIZING_PRIORITY,
@@ -45,6 +46,7 @@ import {
45
46
  GENERATORS,
46
47
  PRIORITIES,
47
48
  SUB_GENERATORS,
49
+ ADDITIONAL_SUB_GENERATORS,
48
50
  WRITTEN,
49
51
  } from './constants.mjs';
50
52
 
@@ -73,6 +75,9 @@ export default class extends BaseBlueprintGenerator {
73
75
  if (this.options.defaults) {
74
76
  this.config.defaults(defaultConfig());
75
77
  }
78
+ this.config.defaults({
79
+ [SKIP_COMMIT_HOOK]: true,
80
+ });
76
81
  }
77
82
 
78
83
  /** @inheritdoc */
@@ -120,6 +125,16 @@ export default class extends BaseBlueprintGenerator {
120
125
  await this.prompt(subGeneratorPrompts(subGenerator), subGeneratorStorage);
121
126
  }
122
127
  },
128
+ async eachAdditionalSubGenerator() {
129
+ const additionalSubGenerators = this.config.get(ADDITIONAL_SUB_GENERATORS) || '';
130
+ for (const subGenerator of additionalSubGenerators
131
+ .split(',')
132
+ .map(sub => sub.trim())
133
+ .filter(Boolean)) {
134
+ const subGeneratorStorage = this.getSubGeneratorStorage(subGenerator);
135
+ await this.prompt(subGeneratorPrompts(subGenerator, true), subGeneratorStorage);
136
+ }
137
+ },
123
138
  };
124
139
  }
125
140
 
@@ -161,7 +176,8 @@ export default class extends BaseBlueprintGenerator {
161
176
  return {
162
177
  prepareCommands() {
163
178
  this.application.commands = [];
164
- for (const generator of this.application[SUB_GENERATORS]) {
179
+ if (!this.application[GENERATORS]) return;
180
+ for (const generator of Object.keys(this.application[GENERATORS])) {
165
181
  const subGeneratorConfig = this.getSubGeneratorStorage(generator).getAll();
166
182
  if (subGeneratorConfig.command) {
167
183
  this.application.commands.push(generator);
@@ -184,8 +200,10 @@ export default class extends BaseBlueprintGenerator {
184
200
  sections: files,
185
201
  context: this.application,
186
202
  });
187
- // function to use directly template
188
- for (const generator of this.jhipsterConfig[SUB_GENERATORS] || []) {
203
+ },
204
+ async writingGenerators() {
205
+ if (!this.application[GENERATORS]) return;
206
+ for (const generator of Object.keys(this.application[GENERATORS])) {
189
207
  const subGeneratorStorage = this.getSubGeneratorStorage(generator);
190
208
  const subGeneratorConfig = subGeneratorStorage.getAll();
191
209
  const priorities = (subGeneratorConfig[PRIORITIES] || []).map(priority => ({
@@ -199,6 +217,7 @@ export default class extends BaseBlueprintGenerator {
199
217
  ...defaultSubGeneratorConfig(),
200
218
  ...subGeneratorConfig,
201
219
  generator,
220
+ customGenerator,
202
221
  jhipsterGenerator,
203
222
  subGenerator: generator,
204
223
  generatorClass: upperFirst(camelCase(jhipsterGenerator)),
@@ -234,8 +253,8 @@ export default class extends BaseBlueprintGenerator {
234
253
  lint: 'eslint .',
235
254
  'lint-fix': 'npm run ejslint && npm run lint -- --fix',
236
255
  mocha: 'mocha generators --no-insight --forbid-only',
237
- 'prettier-format': 'prettier --write "{,**/}*.{js,cjs,mjs,json,md,yml}"',
238
- pretest: 'npm run lint',
256
+ 'prettier-format': 'prettier --write "{,**/}*.{md,json,yml,html,js,cjs,mjs,ts,tsx,css,scss,vue,java}"',
257
+ pretest: 'npm run prettier-check && npm run lint',
239
258
  test: 'npm run mocha --',
240
259
  'update-snapshot': 'npm run mocha -- --no-parallel --updateSnapshot',
241
260
  },
@@ -331,7 +350,7 @@ To begin to work:
331
350
  - launch: ${chalk.yellow.bold('npm install')}
332
351
  - link: ${chalk.yellow.bold('npm link')}
333
352
  - link JHipster: ${chalk.yellow.bold('npm link generator-jhipster')}
334
- - test your module in a JHipster project:
353
+ - test your module in a JHipster project:
335
354
  - create a new directory and go into it
336
355
  - link the blueprint: ${chalk.yellow.bold(`npm link generator-jhipster-${this.moduleName}`)}
337
356
  - launch JHipster with flags: ${chalk.yellow.bold(`jhipster --blueprints ${this.moduleName}`)}
@@ -18,15 +18,17 @@
18
18
  -%>
19
19
  name: Generator
20
20
  on: [push, pull_request]
21
+ permissions:
22
+ contents: read
21
23
  jobs:
22
24
  <%= baseName %>:
23
25
  name: npm-test
24
26
  runs-on: ubuntu-20.04
25
27
  timeout-minutes: 10
26
28
  steps:
27
- - uses: actions/checkout@v2
28
- - uses: actions/setup-node@v2
29
+ - uses: actions/checkout@v3
30
+ - uses: actions/setup-node@v3
29
31
  with:
30
- node-version: '16'
32
+ node-version: 16
31
33
  - run: npm ci
32
34
  - run: npm run test
@@ -19,7 +19,8 @@
19
19
  module.exports = {
20
20
  <% for (const command of commands) { %>
21
21
  '<%= command %>': {
22
- desc: 'Run <%= command %>',
22
+ desc: 'Run <%= command %> sub-generator (<%= baseName %> blueprint)',
23
+ blueprint: 'generator-jhipster-<%= baseName %>',
23
24
  },
24
25
  <% } %>
25
26
  };
@@ -35,7 +35,6 @@ import {
35
35
  } from 'generator-jhipster/esm/priorities';
36
36
  <%_ } _%>
37
37
 
38
-
39
38
  <%_ if (application.dynamic) { _%>
40
39
  // eslint-disable-next-line import/prefer-default-export
41
40
  export async function createGenerator(env) {
@@ -57,13 +56,15 @@ export default class extends <%= generatorClass %>Generator {
57
56
  super(args, opts, { taskPrefix: PRIORITY_PREFIX, ...features });
58
57
 
59
58
  if (this.options.help) return;
59
+ <%_ if (!customGenerator) { _%>
60
60
 
61
61
  if (!this.options.jhipsterContext) {
62
62
  throw new Error(`This is a JHipster blueprint and should be used only like ${chalk.yellow('jhipster --blueprints <%= application.baseName %>')}`);
63
63
  }
64
- <%_ if (sbs) { _%>
64
+ <%_ if (sbs) { _%>
65
65
 
66
66
  this.sbsBlueprint = true
67
+ <%_ } _%>
67
68
  <%_ } _%>
68
69
  }
69
70
 
@@ -73,6 +74,9 @@ export default class extends <%= generatorClass %>Generator {
73
74
 
74
75
  get [<%= priority.constant %>]() {
75
76
  return {
77
+ <%_ if (!sbs) { _%>
78
+ ...super._<%= priority.name %>(),
79
+ <%_ } _%>
76
80
  async <%= priority.name %>TemplateTask() {
77
81
  <%_ if (priority.name == 'writing') { %>
78
82
  await this.writeFiles({
@@ -85,9 +89,6 @@ export default class extends <%= generatorClass %>Generator {
85
89
  });
86
90
  <%_ } %>
87
91
  },
88
- <%_ if (!sbs) { _%>
89
- ...super._<%= priority.name %>(),
90
- <%_ } _%>
91
92
  };
92
93
  }
93
94
  <& } -&>
@@ -20,16 +20,25 @@ import expect from 'expect';
20
20
 
21
21
  import { helpers, lookups } from '#test-utils';
22
22
 
23
+ const SUB_GENERATOR = '<%= subGenerator %>';
24
+ <%_ if (customGenerator) { _%>
25
+ const SUB_GENERATOR_NAMESPACE = `jhipster-<%= application.baseName %>:${SUB_GENERATOR}`;
26
+ <%_ } else { _%>
27
+ const BLUEPRINT_NAMESPACE = `jhipster:${SUB_GENERATOR}`;
28
+ <%_ } _%>
29
+
23
30
  describe('SubGenerator <%= subGenerator %> of <%= application.baseName %> JHipster blueprint', () => {
24
31
  describe('run', () => {
25
32
  let result;
26
33
  before(async function() {
27
34
  result = await helpers
28
- .create('jhipster:<%= subGenerator %>')
35
+ .create(<%= customGenerator ? 'SUB_GENERATOR_NAMESPACE' : 'BLUEPRINT_NAMESPACE' %>)
29
36
  .withOptions({
30
37
  reproducible: true,
31
38
  defaults: true,
39
+ <%_ if (!customGenerator) { _%>
32
40
  blueprint: '<%= application.baseName %>',
41
+ <%_ } _%>
33
42
  })
34
43
  .withLookups(lookups)
35
44
  .run();
@@ -383,6 +383,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
383
383
  _isPriorityMissing(priorityName, destPriority = 'related') {
384
384
  const ownPrototype = Object.getPrototypeOf(this);
385
385
  const parentPrototype = Object.getPrototypeOf(ownPrototype);
386
+ priorityName = `${this.features.taskPrefix || ''}${priorityName}`;
386
387
  if (
387
388
  parentPrototype !== JHipsterBaseBlueprintGenerator.prototype &&
388
389
  !Object.getOwnPropertyDescriptor(ownPrototype, priorityName) &&
@@ -482,7 +483,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
482
483
  * Compose external blueprint module
483
484
  * @param {string} blueprint - name of the blueprint
484
485
  * @param {string} subGen - sub generator
485
- * @param {any} options - options to pass to blueprint generator
486
+ * @param {any} [extraOptions] - options to pass to blueprint generator
486
487
  * @return {Generator|undefined}
487
488
  */
488
489
  async _composeBlueprint(blueprint, subGen, extraOptions = {}) {
@@ -534,7 +535,11 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
534
535
  this.warning(`Could not retrieve packagePath of blueprint '${blueprintPkgName}'`);
535
536
  return undefined;
536
537
  }
537
- return JSON.parse(fs.readFileSync(path.join(blueprintPackagePath, 'package.json')));
538
+ const packageJsonFile = path.join(blueprintPackagePath, 'package.json');
539
+ if (!fs.existsSync(packageJsonFile)) {
540
+ return undefined;
541
+ }
542
+ return JSON.parse(fs.readFileSync(packageJsonFile));
538
543
  }
539
544
 
540
545
  /**
@@ -561,13 +566,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
561
566
  if (blueprint === 'generator-jhipster') {
562
567
  this.error(`You cannot use ${chalk.yellow(blueprint)} as the blueprint.`);
563
568
  }
564
- if (!this._findBlueprintPackageJson(blueprint)) {
565
- this.error(
566
- `The ${chalk.yellow(blueprint)} blueprint provided is not installed. Please install it using command ${chalk.yellow(
567
- `npm i -g ${blueprint}`
568
- )}.`
569
- );
570
- }
569
+ this._findBlueprintPackageJson(blueprint);
571
570
  }
572
571
 
573
572
  /**
@@ -583,19 +582,19 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
583
582
  }
584
583
  const mainGeneratorJhipsterVersion = packagejs.version;
585
584
  const blueprintJhipsterVersion = blueprintPackageJson.dependencies && blueprintPackageJson.dependencies['generator-jhipster'];
586
- if (blueprintJhipsterVersion && !semver.valid(blueprintJhipsterVersion) && !semver.validRange(blueprintJhipsterVersion)) {
587
- this.info(`Blueprint ${blueprintPkgName} contains generator-jhipster dependency with non comparable version`);
588
- return;
589
- }
590
585
  if (blueprintJhipsterVersion) {
591
- if (mainGeneratorJhipsterVersion !== blueprintJhipsterVersion) {
592
- this.error(
593
- `The installed ${chalk.yellow(
594
- blueprintPkgName
595
- )} blueprint targets JHipster v${blueprintJhipsterVersion} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`
596
- );
586
+ if (!semver.valid(blueprintJhipsterVersion) && !semver.validRange(blueprintJhipsterVersion)) {
587
+ this.info(`Blueprint ${blueprintPkgName} contains generator-jhipster dependency with non comparable version`);
588
+ return;
597
589
  }
598
- return;
590
+ if (semver.satisfies(mainGeneratorJhipsterVersion, blueprintJhipsterVersion)) {
591
+ return;
592
+ }
593
+ throw new Error(
594
+ `The installed ${chalk.yellow(
595
+ blueprintPkgName
596
+ )} blueprint targets JHipster v${blueprintJhipsterVersion} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`
597
+ );
599
598
  }
600
599
  const blueprintPeerJhipsterVersion =
601
600
  blueprintPackageJson.peerDependencies && blueprintPackageJson.peerDependencies['generator-jhipster'];
@@ -34,6 +34,8 @@ const { languageToJavaLanguage } = require('./utils');
34
34
  const JSONToJDLEntityConverter = require('../jdl/converters/json-to-jdl-entity-converter');
35
35
  const JSONToJDLOptionConverter = require('../jdl/converters/json-to-jdl-option-converter');
36
36
  const { stringify } = require('../utils');
37
+ const { fieldIsEnum } = require('../utils/field');
38
+ const { databaseData } = require('./sql-constants');
37
39
 
38
40
  const { ANGULAR, REACT, VUE } = SUPPORTED_CLIENT_FRAMEWORKS;
39
41
  const dbTypes = require('../jdl/jhipster/field-types');
@@ -104,6 +106,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
104
106
  * @param {any} _this - reference to generator
105
107
  * @param {string} resourceDir - resource directory
106
108
  * @param {string} lang - language code
109
+ * @param {string} testResourceDir - test resource directory
107
110
  */
108
111
  installI18nServerFilesByLanguage(_this, resourceDir, lang, testResourceDir) {
109
112
  const generator = _this || this;
@@ -196,6 +199,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
196
199
  * Update Languages In MailServiceIT
197
200
  *
198
201
  * @param languages
202
+ * @param packageFolder
199
203
  */
200
204
  updateLanguagesInLanguageMailServiceIT(languages, packageFolder) {
201
205
  const fullPath = `${SERVER_TEST_SRC_DIR}${packageFolder}/service/MailServiceIT.java`;
@@ -431,7 +435,9 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
431
435
  if (this.options.reproducible) {
432
436
  return projectNameReproducibleConfigForTests.baseName;
433
437
  }
434
- return /^[a-zA-Z0-9_]+$/.test(path.basename(process.cwd())) ? path.basename(process.cwd()) : 'jhipster';
438
+ return /^[a-zA-Z0-9_-]+$/.test(path.basename(process.cwd()))
439
+ ? path.basename(process.cwd()).replace('generator-jhipster-', '')
440
+ : 'jhipster';
435
441
  }
436
442
 
437
443
  /**
@@ -545,10 +551,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
545
551
  * @returns {boolean} true if input is number; false otherwise
546
552
  */
547
553
  isNumber(input) {
548
- if (isNaN(this.filterNumber(input))) {
549
- return false;
550
- }
551
- return true;
554
+ return !isNaN(this.filterNumber(input));
552
555
  }
553
556
 
554
557
  /**
@@ -556,10 +559,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
556
559
  * @returns {boolean} true if input is a signed number; false otherwise
557
560
  */
558
561
  isSignedNumber(input) {
559
- if (isNaN(this.filterNumber(input, true))) {
560
- return false;
561
- }
562
- return true;
562
+ return !isNaN(this.filterNumber(input, true));
563
563
  }
564
564
 
565
565
  /**
@@ -567,10 +567,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
567
567
  * @returns {boolean} true if input is a signed decimal number; false otherwise
568
568
  */
569
569
  isSignedDecimalNumber(input) {
570
- if (isNaN(this.filterNumber(input, true, true))) {
571
- return false;
572
- }
573
- return true;
570
+ return !isNaN(this.filterNumber(input, true, true));
574
571
  }
575
572
 
576
573
  /**
@@ -850,6 +847,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
850
847
  * Generate Entity Client Field Default Values
851
848
  *
852
849
  * @param {Array|Object} fields - array of fields
850
+ * @param [clientFramework]
853
851
  * @returns {Array} defaultVariablesValues
854
852
  */
855
853
  generateEntityClientFieldDefaultValues(fields, clientFramework = ANGULAR) {
@@ -871,7 +869,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
871
869
  /**
872
870
  * Find key type for Typescript
873
871
  *
874
- * @param {string} primaryKey - primary key definition
872
+ * @param {string | object} primaryKey - primary key definition
875
873
  * @returns {string} primary key type in Typescript
876
874
  */
877
875
  getTypescriptKeyType(primaryKey) {
@@ -884,6 +882,28 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
884
882
  return 'string';
885
883
  }
886
884
 
885
+ /**
886
+ * Find type for Typescript
887
+ *
888
+ * @param {string} fieldType - field type
889
+ * @returns {string} field type in Typescript
890
+ */
891
+ getTypescriptType(fieldType) {
892
+ if ([TYPE_INTEGER, TYPE_LONG, TYPE_FLOAT, TYPE_DOUBLE, TYPE_BIG_DECIMAL].includes(fieldType)) {
893
+ return 'number';
894
+ }
895
+ if ([TYPE_LOCAL_DATE, TYPE_ZONED_DATE_TIME, TYPE_INSTANT].includes(fieldType)) {
896
+ return 'dayjs.Dayjs';
897
+ }
898
+ if ([TYPE_BOOLEAN].includes(fieldType)) {
899
+ return 'boolean';
900
+ }
901
+ if (fieldIsEnum(fieldType)) {
902
+ return fieldType;
903
+ }
904
+ return 'string';
905
+ }
906
+
887
907
  /**
888
908
  * Generate Entity Client Field Declarations
889
909
  *
@@ -891,6 +911,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
891
911
  * @param {Array|Object} fields - array of fields
892
912
  * @param {Array|Object} relationships - array of relationships
893
913
  * @param {string} dto - dto
914
+ * @param [customDateType]
894
915
  * @param {boolean} embedded - either the actual entity is embedded or not
895
916
  * @returns variablesWithTypes: Array
896
917
  */
@@ -985,13 +1006,13 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
985
1006
  const typeImports = new Map();
986
1007
  const uniqueEnums = {};
987
1008
  fields.forEach(field => {
988
- const fileName = _.kebabCase(field.fieldType);
989
- if (field.fieldIsEnum && (!uniqueEnums[field.fieldType] || (uniqueEnums[field.fieldType] && field.fieldValues.length !== 0))) {
990
- const importType = `${field.fieldType}`;
1009
+ const { enumFileName, fieldType } = field;
1010
+ if (field.fieldIsEnum && (!uniqueEnums[fieldType] || (uniqueEnums[fieldType] && field.fieldValues.length !== 0))) {
1011
+ const importType = `${fieldType}`;
991
1012
  const basePath = clientFramework === VUE ? '@' : 'app';
992
1013
  const modelPath = clientFramework === ANGULAR ? 'entities' : 'shared/model';
993
- const importPath = `${basePath}/${modelPath}/enumerations/${fileName}.model`;
994
- uniqueEnums[field.fieldType] = field.fieldType;
1014
+ const importPath = `${basePath}/${modelPath}/enumerations/${enumFileName}.model`;
1015
+ uniqueEnums[fieldType] = field.fieldType;
995
1016
  typeImports.set(importType, importPath);
996
1017
  }
997
1018
  });
@@ -1044,6 +1065,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
1044
1065
  /**
1045
1066
  * Generate language objects in array of "'en': { name: 'English' }" format
1046
1067
  * @param {string[]} languages
1068
+ * @param clientFramework
1047
1069
  * @returns generated language options
1048
1070
  */
1049
1071
  generateLanguageOptions(languages, clientFramework) {
@@ -1149,10 +1171,48 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
1149
1171
  );
1150
1172
  }
1151
1173
 
1174
+ /**
1175
+ * Generate a test entity, according to the references
1176
+ *
1177
+ * @param references
1178
+ * @param additionalFields
1179
+ * @return {String} test sample
1180
+ */
1181
+ generateTypescriptTestEntity(references, additionalFields = {}) {
1182
+ const entries = references
1183
+ .map(reference => {
1184
+ if (reference.field) {
1185
+ const field = reference.field;
1186
+ const { fieldIsEnum, fieldType, fieldTypeTimed, fieldTypeLocalDate, fieldWithContentType, fieldName, contentTypeFieldName } =
1187
+ field;
1188
+
1189
+ const fakeData = field.generateFakeData('ts');
1190
+ if (fieldWithContentType) {
1191
+ return [
1192
+ [fieldName, fakeData],
1193
+ [contentTypeFieldName, "'unknown'"],
1194
+ ];
1195
+ }
1196
+ if (fieldIsEnum) {
1197
+ return [[fieldName, `${fieldType}[${fakeData}]`]];
1198
+ }
1199
+ if (fieldTypeTimed || fieldTypeLocalDate) {
1200
+ return [[fieldName, `dayjs(${fakeData})`]];
1201
+ }
1202
+ return [[fieldName, fakeData]];
1203
+ }
1204
+ return [[reference.name, this.generateTestEntityId(reference.type, 'random', false)]];
1205
+ })
1206
+ .flat();
1207
+ return `{
1208
+ ${[...entries, ...Object.entries(additionalFields)].map(([key, value]) => `${key}: ${value}`).join(',\n ')}
1209
+ }`;
1210
+ }
1211
+
1152
1212
  /**
1153
1213
  * Generate a test entity, according to the type
1154
1214
  *
1155
- * @param {any} primaryKey - primary key definition.
1215
+ * @param references
1156
1216
  * @param {number} [index] - index of the primary key sample, pass undefined for a random key.
1157
1217
  */
1158
1218
  generateTestEntity(references, index = 'random') {
@@ -1205,62 +1265,54 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
1205
1265
  if (!protocol) {
1206
1266
  throw new Error('protocol is required');
1207
1267
  }
1208
- if (!options.databaseName) {
1268
+ const { databaseName } = options;
1269
+ if (!databaseName) {
1209
1270
  throw new Error("option 'databaseName' is required");
1210
1271
  }
1211
1272
  if ([MYSQL, MARIADB, POSTGRESQL, ORACLE, MSSQL].includes(databaseType) && !options.hostname) {
1212
1273
  throw new Error(`option 'hostname' is required for ${databaseType} databaseType`);
1274
+ } else if (![MYSQL, MARIADB, POSTGRESQL, ORACLE, MSSQL, H2_DISK, H2_MEMORY].includes(databaseType)) {
1275
+ throw new Error(`${databaseType} databaseType is not supported`);
1213
1276
  }
1214
- let dbcUrl;
1215
- let extraOptions;
1216
- if (databaseType === MYSQL) {
1217
- dbcUrl = `${protocol}:mysql://${options.hostname}:3306/${options.databaseName}`;
1218
- extraOptions =
1219
- '?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true';
1220
- } else if (databaseType === MARIADB) {
1221
- dbcUrl = `${protocol}:mariadb://${options.hostname}:3306/${options.databaseName}`;
1222
- extraOptions = '?useLegacyDatetimeCode=false&serverTimezone=UTC';
1223
- } else if (databaseType === POSTGRESQL) {
1224
- dbcUrl = `${protocol}:postgresql://${options.hostname}:5432/${options.databaseName}`;
1225
- } else if (databaseType === ORACLE) {
1226
- dbcUrl = `${protocol}:oracle:thin:@${options.hostname}:1521:${options.databaseName}`;
1227
- } else if (databaseType === MSSQL) {
1228
- if (protocol === 'r2dbc') {
1229
- dbcUrl = `${protocol}:mssql://${options.hostname}:1433/${options.databaseName}`;
1230
- } else {
1231
- dbcUrl = `${protocol}:sqlserver://${options.hostname}:1433;database=${options.databaseName}`;
1232
- }
1233
- } else if (databaseType === H2_DISK) {
1234
- if (!options.localDirectory) {
1235
- throw new Error(`'localDirectory' option should be provided for ${databaseType} databaseType`);
1236
- }
1237
- if (protocol === 'r2dbc') {
1238
- dbcUrl = `${protocol}:h2:file://${options.localDirectory}/${options.databaseName}`;
1239
- } else {
1240
- dbcUrl = `${protocol}:h2:file:${options.localDirectory}/${options.databaseName}`;
1241
- }
1242
- extraOptions = ';DB_CLOSE_DELAY=-1';
1243
- } else if (databaseType === H2_MEMORY) {
1244
- if (protocol === 'r2dbc') {
1245
- dbcUrl = `${protocol}:h2:mem:///${options.databaseName}`;
1246
- } else {
1247
- dbcUrl = `${protocol}:h2:mem:${options.databaseName}`;
1248
- }
1249
- extraOptions = ';DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE';
1277
+ let databaseDataForType = databaseData[databaseType];
1278
+ if (databaseDataForType[protocol]) {
1279
+ databaseDataForType = {
1280
+ ...databaseDataForType,
1281
+ ...databaseDataForType[protocol],
1282
+ };
1283
+ }
1284
+ const { protocolSuffix = '', extraOptions = '', useDirectory = false } = databaseDataForType;
1285
+ let { port = '' } = databaseDataForType;
1286
+ if (useDirectory && !options.localDirectory) {
1287
+ throw new Error(`'localDirectory' option should be provided for ${databaseType} databaseType`);
1288
+ }
1289
+ const databaseHasHost = options.hostname;
1290
+ if (options.itests && H2_MEMORY === databaseType) {
1291
+ port = ':12344';
1292
+ }
1293
+ let url = `${protocol}:${protocolSuffix}`;
1294
+ if (options.localDirectory) {
1295
+ url += `${options.localDirectory}/`;
1250
1296
  } else {
1251
- throw new Error(`${databaseType} databaseType is not supported`);
1297
+ url += databaseHasHost ? options.hostname : databaseName;
1298
+ url += port;
1252
1299
  }
1253
-
1254
- if (!options.skipExtraOptions && extraOptions) {
1255
- dbcUrl += extraOptions;
1300
+ if (databaseHasHost || options.localDirectory) {
1301
+ url += databaseName;
1256
1302
  }
1257
- return dbcUrl;
1303
+ return `${url}${options.skipExtraOptions ? '' : extraOptions}`;
1304
+ }
1305
+
1306
+ getDBCExtraOption(databaseType) {
1307
+ const databaseDataForType = databaseData[databaseType];
1308
+ const { extraOptions = '' } = databaseDataForType;
1309
+ return extraOptions;
1258
1310
  }
1259
1311
 
1260
1312
  /**
1261
1313
  * Returns the primary key value based on the primary key type, DB and default value
1262
1314
  *
1263
- * @param {string} primaryKeyType - the primary key type
1315
+ * @param {string} primaryKey - the primary key type
1264
1316
  * @param {string} databaseType - the database type
1265
1317
  * @param {string} defaultValue - default value
1266
1318
  * @returns {string} java primary key value
@@ -1550,7 +1602,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
1550
1602
  * Create a angular form path getter method of reference.
1551
1603
  *
1552
1604
  * @param {object} reference
1553
- * @param {string[]} valueDefinition
1605
+ * @param {string[]} prefix
1554
1606
  * @return {string}
1555
1607
  */
1556
1608
  buildAngularFormPath(reference, prefix = []) {