generator-jhipster 7.7.0 → 7.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/README.md +2 -3
  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/jhipster.js +0 -0
  7. package/cli/program.js +5 -3
  8. package/generators/app/index.js +21 -0
  9. package/generators/app/prompts.js +60 -12
  10. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +3 -3
  11. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +3 -3
  12. package/generators/bootstrap/index.js +1 -0
  13. package/generators/bootstrap-application/generator.mjs +1 -0
  14. package/generators/ci-cd/index.js +1 -1
  15. package/generators/ci-cd/templates/.gitlab-ci.yml.ejs +2 -3
  16. package/generators/ci-cd/templates/github-actions.yml.ejs +4 -4
  17. package/generators/client/files-angular.js +72 -89
  18. package/generators/client/files-common.js +1 -2
  19. package/generators/client/files-react.js +83 -71
  20. package/generators/client/files-vue.js +8 -54
  21. package/generators/client/index.js +19 -12
  22. package/generators/client/needle-api/needle-client-angular.js +1 -4
  23. package/generators/client/needle-api/needle-client-react.js +11 -8
  24. package/generators/client/prompts.js +1 -0
  25. package/generators/client/templates/angular/.eslintrc.json.ejs +10 -1
  26. package/generators/client/templates/angular/angular.json.ejs +1 -10
  27. package/generators/client/templates/angular/jest.conf.js.ejs +4 -2
  28. package/generators/client/templates/angular/package.json +33 -34
  29. package/generators/client/templates/angular/package.json.ejs +24 -23
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +4 -4
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.html.ejs +1 -1
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +15 -15
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.ts.ejs +17 -11
  34. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +16 -16
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +14 -9
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +9 -9
  37. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +27 -27
  38. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.ts.ejs +28 -13
  39. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.html.ejs +7 -7
  40. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +19 -19
  41. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
  42. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.ts.ejs +35 -37
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +4 -4
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +7 -7
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +6 -6
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.module.ts.ejs +0 -1
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +3 -3
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +5 -5
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +1 -1
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.html.ejs +5 -5
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +10 -10
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +10 -10
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +9 -9
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +8 -8
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +5 -5
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +4 -4
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +5 -5
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +4 -4
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +14 -14
  60. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +16 -16
  61. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +3 -2
  62. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +133 -138
  63. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +22 -24
  64. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +40 -49
  65. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +2 -2
  66. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.module.ts.ejs +0 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/config/navigation.constants.ts.ejs +23 -0
  68. package/generators/client/templates/angular/src/main/webapp/app/config/pagination.constants.ts.ejs +2 -3
  69. package/generators/client/templates/angular/src/main/webapp/app/core/request/request-util.ts.ejs +1 -1
  70. package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +1 -1
  71. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  72. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs +2 -2
  73. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.ts.ejs +7 -3
  74. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.html.ejs +14 -14
  75. package/generators/client/templates/angular/src/main/webapp/app/layouts/error/error.component.html.ejs +1 -1
  76. package/generators/client/templates/angular/src/main/webapp/app/layouts/footer/footer.component.html.ejs +1 -1
  77. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +21 -21
  78. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  79. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +9 -9
  80. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.ts.ejs +16 -27
  81. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.html.ejs +10 -0
  82. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.ts.ejs +23 -0
  83. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +40 -0
  84. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.ts.ejs +95 -0
  85. package/generators/client/templates/angular/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
  86. package/generators/client/templates/angular/src/main/webapp/app/shared/shared.module.ts.ejs +3 -0
  87. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.service.ts.ejs +31 -0
  88. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +3 -8
  89. package/generators/client/templates/angular/tsconfig.json.ejs +6 -0
  90. package/generators/client/templates/angular/tsconfig.spec.json.ejs +1 -1
  91. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +17 -2
  92. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +1 -1
  93. package/generators/client/templates/common/package.json +8 -7
  94. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +2 -0
  95. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +2 -3
  96. package/generators/client/templates/react/.eslintrc.json.ejs +10 -1
  97. package/generators/client/templates/react/jest.conf.js.ejs +4 -2
  98. package/generators/client/templates/react/package.json +58 -59
  99. package/generators/client/templates/react/package.json.ejs +4 -3
  100. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +1 -1
  101. package/generators/client/templates/react/src/main/webapp/app/app.tsx.ejs +3 -3
  102. package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +53 -6
  103. package/generators/client/templates/react/src/main/webapp/app/config/translation-middleware.ts.ejs +58 -0
  104. package/generators/client/templates/react/src/main/webapp/app/entities/menu.tsx.ejs +45 -0
  105. package/generators/client/templates/react/src/main/webapp/app/entities/reducers.ts.ejs +25 -0
  106. package/generators/client/templates/react/src/main/webapp/app/entities/routes.tsx.ejs +49 -0
  107. package/generators/client/templates/react/src/main/webapp/app/index.tsx.ejs +7 -7
  108. package/generators/client/templates/react/src/main/webapp/app/main.tsx.ejs +19 -0
  109. package/generators/client/templates/react/src/main/webapp/app/modules/account/activate/activate.tsx.ejs +8 -4
  110. package/generators/client/templates/react/src/main/webapp/app/modules/account/index.tsx.ejs +9 -6
  111. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +1 -0
  112. package/generators/client/templates/react/src/main/webapp/app/modules/account/password-reset/finish/password-reset-finish.tsx.ejs +8 -5
  113. package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.ts.ejs +6 -7
  114. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health-modal.tsx.ejs +3 -2
  115. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health.tsx.ejs +4 -4
  116. package/generators/client/templates/react/src/main/webapp/app/modules/administration/index.tsx.ejs +14 -11
  117. package/generators/client/templates/react/src/main/webapp/app/modules/administration/logs/logs.tsx.ejs +1 -1
  118. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +8 -2
  119. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/index.tsx.ejs +13 -13
  120. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-delete-dialog.tsx.ejs +7 -4
  121. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-detail.tsx.ejs +5 -3
  122. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-update.tsx.ejs +10 -6
  123. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +20 -27
  124. package/generators/client/templates/react/src/main/webapp/app/modules/login/login-modal.tsx.ejs +5 -1
  125. package/generators/client/templates/react/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +6 -3
  126. package/generators/client/templates/react/src/main/webapp/app/modules/login/login.tsx.ejs +6 -5
  127. package/generators/client/templates/react/src/main/webapp/app/routes.tsx.ejs +70 -25
  128. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +30 -27
  129. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.tsx.ejs +35 -34
  130. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-routes.spec.tsx.ejs +55 -0
  131. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-routes.tsx.ejs +21 -0
  132. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.spec.tsx.ejs +1 -1
  133. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.tsx.ejs +1 -1
  134. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-loading.tsx.ejs +13 -0
  135. package/generators/client/templates/react/src/main/webapp/app/shared/error/page-not-found.tsx.ejs +9 -13
  136. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +3 -5
  137. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +5 -8
  138. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +35 -7
  139. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-item.tsx.ejs +12 -11
  140. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/index.ts.ejs +9 -2
  141. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +9 -3
  142. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +21 -5
  143. package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +15 -0
  144. package/generators/client/templates/react/src/main/webapp/microfrontends/entities-menu.tsx.ejs +3 -0
  145. package/generators/client/templates/react/src/main/webapp/microfrontends/entities-routes.tsx.ejs +3 -0
  146. package/generators/client/templates/react/tsconfig.json.ejs +5 -7
  147. package/generators/client/templates/react/tsconfig.test.json.ejs +10 -1
  148. package/generators/client/templates/react/webpack/webpack.common.js.ejs +12 -15
  149. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +7 -8
  150. package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +99 -0
  151. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +31 -21
  152. package/generators/client/templates/vue/.eslintrc.js.ejs +10 -1
  153. package/generators/client/templates/vue/package.json +42 -42
  154. package/generators/client/templates/vue/package.json.ejs +4 -4
  155. package/generators/client/templates/vue/src/main/webapp/app/account/login-form/login-form.component.ts.ejs +2 -2
  156. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.vue.ejs +1 -1
  157. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +2 -2
  158. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +6 -3
  159. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +2 -2
  160. package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +1 -1
  161. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +1 -1
  162. package/generators/client/templates/vue/src/main/webapp/app/shared/date/filters.ts.ejs +0 -6
  163. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +7 -2
  164. package/generators/client/templates/vue/src/test/javascript/spec/app/account/register/register.component.spec.ts.ejs +1 -1
  165. package/generators/client/templates/vue/tsconfig.json.ejs +1 -4
  166. package/generators/client/templates/vue/tsconfig.spec.json.ejs +2 -2
  167. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +6 -2
  168. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +4 -0
  169. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +8 -1
  170. package/generators/client/transform-angular.cjs +117 -0
  171. package/generators/client/transform-react.cjs +126 -0
  172. package/generators/client/transform-vue.cjs +42 -0
  173. package/generators/common/files.js +2 -9
  174. package/generators/common/templates/.husky/pre-commit.ejs +0 -0
  175. package/generators/common/templates/README.md.jhi.ejs +21 -5
  176. package/generators/common/templates/package.json +3 -3
  177. package/generators/cypress/files.js +34 -22
  178. package/generators/cypress/index.js +42 -19
  179. package/generators/cypress/templates/cypress-audits.config.ts.ejs +28 -0
  180. package/generators/cypress/templates/cypress.config.ts.ejs +57 -0
  181. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/login-page.spec.ts.ejs → e2e/account/login-page.cy.ts.ejs} +0 -0
  182. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/password-page.spec.ts.ejs → e2e/account/password-page.cy.ts.ejs} +0 -0
  183. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/register-page.spec.ts.ejs → e2e/account/register-page.cy.ts.ejs} +0 -0
  184. 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
  185. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/settings-page.spec.ts.ejs → e2e/account/settings-page.cy.ts.ejs} +0 -0
  186. package/generators/cypress/templates/src/test/javascript/cypress/{integration/administration/administration.spec.ts.ejs → e2e/administration/administration.cy.ts.ejs} +1 -1
  187. package/generators/cypress/templates/src/test/javascript/cypress/{integration → e2e}/lighthouse.audits.ts.ejs +0 -0
  188. package/generators/cypress/templates/src/test/javascript/cypress/plugins/global.d.ts.ejs +25 -0
  189. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +13 -14
  190. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +4 -4
  191. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
  192. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +8 -8
  193. package/generators/cypress/templates/src/test/javascript/cypress/tsconfig.json.ejs +8 -5
  194. package/generators/database-changelog-liquibase/files.js +1 -1
  195. package/generators/database-changelog-liquibase/index.js +3 -0
  196. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +1 -1
  197. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity_constraints.xml.ejs +1 -1
  198. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +1 -1
  199. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +2 -2
  200. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_migrate.xml.ejs +1 -1
  201. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +2 -2
  202. package/generators/docker-base.js +6 -3
  203. package/generators/docker-compose/files.js +5 -2
  204. package/generators/docker-compose/index.js +18 -25
  205. package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +1 -1
  206. package/generators/docker-compose/templates/docker-compose.yml.ejs +10 -8
  207. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +62 -4
  208. package/generators/docker-prompts.js +1 -2
  209. package/generators/docker-utils.js +0 -1
  210. package/generators/entity/index.js +39 -34
  211. package/generators/entity/prompts.js +1 -52
  212. package/generators/entity-client/files-angular.cjs +169 -0
  213. package/generators/entity-client/files-cypress.cjs +52 -0
  214. package/generators/entity-client/files-react.cjs +113 -0
  215. package/generators/entity-client/files-vue.cjs +140 -0
  216. package/generators/entity-client/files.js +10 -381
  217. package/generators/entity-client/index.js +126 -17
  218. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +4 -5
  219. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.ts.ejs +2 -1
  220. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +12 -11
  221. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +0 -5
  222. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.model.ts.ejs +18 -25
  223. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.test-samples.ts.ejs +45 -0
  224. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +45 -37
  225. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +47 -28
  226. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +292 -94
  227. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +5 -106
  228. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +2 -82
  229. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +5 -5
  230. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.ts.ejs +5 -5
  231. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +2 -3
  232. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +89 -175
  233. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +69 -44
  234. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.spec.ts.ejs +111 -0
  235. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.ts.ejs +263 -0
  236. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +99 -120
  237. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +47 -71
  238. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +79 -195
  239. 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} +27 -17
  240. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +12 -7
  241. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-detail.tsx.ejs +10 -7
  242. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +29 -23
  243. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +2 -2
  244. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +32 -30
  245. package/generators/entity-client/templates/react/src/main/webapp/app/entities/index.tsx.ejs +13 -13
  246. package/generators/entity-client/templates/react/src/main/webapp/app/entities/react_validators.ejs +25 -32
  247. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +2 -2
  248. package/generators/entity-i18n/templates/i18n/entity_fr.json.ejs +1 -1
  249. package/generators/entity-server/cleanup.js +41 -0
  250. package/generators/entity-server/files.js +148 -63
  251. package/generators/entity-server/index.js +30 -25
  252. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +1 -1
  253. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +31 -8
  254. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  255. package/generators/entity-server/templates/partials/update_template.ejs +77 -0
  256. package/generators/entity-server/templates/reactive/partials/save_template.ejs +1 -1
  257. package/generators/entity-server/templates/reactive/partials/update_template.ejs +41 -0
  258. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +13 -7
  259. package/generators/entity-server/templates/src/main/java/package/common/get_template.ejs +1 -1
  260. package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +13 -4
  261. package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +2 -2
  262. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -1
  263. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.elastic_search.ejs +17 -0
  264. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_lifecycle_events.ejs +31 -0
  265. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_cassandra.ejs +3 -1
  266. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_persistable.ejs +54 -0
  267. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_reactive.ejs +1 -1
  268. package/generators/entity-server/templates/src/main/java/package/domain/EntityCallback.java.ejs +43 -0
  269. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +12 -7
  270. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +23 -27
  271. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +2 -2
  272. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +17 -9
  273. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +18 -26
  274. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +2 -2
  275. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +2 -2
  276. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +50 -26
  277. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +3 -3
  278. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +10 -2
  279. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +22 -6
  280. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +61 -90
  281. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +8 -9
  282. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +165 -144
  283. package/generators/gae/index.js +1 -1
  284. package/generators/generate-blueprint/constants.mjs +22 -2
  285. package/generators/generate-blueprint/esm.mjs +0 -0
  286. package/generators/generate-blueprint/generator.mjs +25 -6
  287. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +5 -3
  288. package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +0 -0
  289. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +2 -1
  290. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +6 -5
  291. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +10 -1
  292. package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
  293. package/generators/generator-base-blueprint.js +19 -20
  294. package/generators/generator-base-private.js +117 -65
  295. package/generators/generator-base.js +270 -91
  296. package/generators/generator-constants.js +119 -67
  297. package/generators/generator-defaults.js +1 -0
  298. package/generators/generator-transforms.js +0 -1
  299. package/generators/gradle/constants.cjs +1 -1
  300. package/generators/heroku/index.js +5 -4
  301. package/generators/heroku/templates/application-heroku.yml.ejs +1 -2
  302. package/generators/heroku/templates/heroku.gradle.ejs +28 -1
  303. package/generators/heroku/templates/pom-profile.xml.ejs +29 -0
  304. package/generators/init/templates/.husky/pre-commit +0 -0
  305. package/generators/java/index.cjs +2 -2
  306. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -2
  307. package/generators/kubernetes/templates/db/mongodb.yml.ejs +1 -2
  308. package/generators/kubernetes/templates/ingress.yml.ejs +11 -4
  309. package/generators/kubernetes/templates/kubectl-apply.sh.ejs +0 -0
  310. package/generators/kubernetes/templates/monitoring/jhipster-grafana.yml.ejs +6 -2
  311. package/generators/kubernetes/templates/registry/consul.yml.ejs +1 -2
  312. package/generators/kubernetes/templates/registry/jhipster-registry.yml.ejs +1 -2
  313. package/generators/kubernetes-knative/templates/kubectl-apply.sh.ejs +0 -0
  314. package/generators/languages/templates/src/main/webapp/i18n/al/global.json.ejs +7 -1
  315. package/generators/languages/templates/src/main/webapp/i18n/ar-ly/global.json.ejs +7 -1
  316. package/generators/languages/templates/src/main/webapp/i18n/bg/global.json.ejs +7 -1
  317. package/generators/languages/templates/src/main/webapp/i18n/bn/global.json.ejs +7 -1
  318. package/generators/languages/templates/src/main/webapp/i18n/by/global.json.ejs +7 -1
  319. package/generators/languages/templates/src/main/webapp/i18n/ca/global.json.ejs +7 -1
  320. package/generators/languages/templates/src/main/webapp/i18n/cs/global.json.ejs +7 -1
  321. package/generators/languages/templates/src/main/webapp/i18n/da/global.json.ejs +7 -1
  322. package/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +7 -1
  323. package/generators/languages/templates/src/main/webapp/i18n/el/global.json.ejs +7 -1
  324. package/generators/languages/templates/src/main/webapp/i18n/en/global.json.ejs +7 -1
  325. package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +3 -0
  326. package/generators/languages/templates/src/main/webapp/i18n/es/global.json.ejs +7 -1
  327. package/generators/languages/templates/src/main/webapp/i18n/et/global.json.ejs +7 -1
  328. package/generators/languages/templates/src/main/webapp/i18n/fa/global.json.ejs +7 -1
  329. package/generators/languages/templates/src/main/webapp/i18n/fi/global.json.ejs +7 -1
  330. package/generators/languages/templates/src/main/webapp/i18n/fr/global.json.ejs +7 -1
  331. package/generators/languages/templates/src/main/webapp/i18n/gl/global.json.ejs +7 -1
  332. package/generators/languages/templates/src/main/webapp/i18n/hi/global.json.ejs +7 -1
  333. package/generators/languages/templates/src/main/webapp/i18n/hr/global.json.ejs +7 -1
  334. package/generators/languages/templates/src/main/webapp/i18n/hu/global.json.ejs +7 -1
  335. package/generators/languages/templates/src/main/webapp/i18n/hy/global.json.ejs +7 -1
  336. package/generators/languages/templates/src/main/webapp/i18n/in/global.json.ejs +7 -1
  337. package/generators/languages/templates/src/main/webapp/i18n/it/global.json.ejs +7 -1
  338. package/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +7 -1
  339. package/generators/languages/templates/src/main/webapp/i18n/ko/global.json.ejs +7 -1
  340. package/generators/languages/templates/src/main/webapp/i18n/mr/global.json.ejs +7 -1
  341. package/generators/languages/templates/src/main/webapp/i18n/my/global.json.ejs +7 -1
  342. package/generators/languages/templates/src/main/webapp/i18n/nl/global.json.ejs +7 -1
  343. package/generators/languages/templates/src/main/webapp/i18n/pa/global.json.ejs +7 -1
  344. package/generators/languages/templates/src/main/webapp/i18n/pl/global.json.ejs +7 -1
  345. package/generators/languages/templates/src/main/webapp/i18n/pt-br/global.json.ejs +7 -1
  346. package/generators/languages/templates/src/main/webapp/i18n/pt-pt/global.json.ejs +7 -1
  347. package/generators/languages/templates/src/main/webapp/i18n/ro/global.json.ejs +7 -1
  348. package/generators/languages/templates/src/main/webapp/i18n/ru/global.json.ejs +7 -1
  349. package/generators/languages/templates/src/main/webapp/i18n/si/global.json.ejs +7 -1
  350. package/generators/languages/templates/src/main/webapp/i18n/sk/global.json.ejs +7 -1
  351. package/generators/languages/templates/src/main/webapp/i18n/sr/global.json.ejs +7 -1
  352. package/generators/languages/templates/src/main/webapp/i18n/sv/global.json.ejs +7 -1
  353. package/generators/languages/templates/src/main/webapp/i18n/ta/global.json.ejs +7 -1
  354. package/generators/languages/templates/src/main/webapp/i18n/te/global.json.ejs +7 -1
  355. package/generators/languages/templates/src/main/webapp/i18n/th/global.json.ejs +7 -1
  356. package/generators/languages/templates/src/main/webapp/i18n/tr/global.json.ejs +7 -1
  357. package/generators/languages/templates/src/main/webapp/i18n/ua/global.json.ejs +7 -1
  358. package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json +7 -1
  359. package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/global.json.ejs +7 -1
  360. package/generators/languages/templates/src/main/webapp/i18n/vi/global.json.ejs +7 -1
  361. package/generators/languages/templates/src/main/webapp/i18n/zh-cn/global.json.ejs +7 -1
  362. package/generators/languages/templates/src/main/webapp/i18n/zh-tw/global.json.ejs +7 -1
  363. package/generators/languages/templates/src/test/resources/i18n/messages_al.properties.ejs +4 -1
  364. package/generators/languages/templates/src/test/resources/i18n/messages_ar_LY.properties.ejs +4 -1
  365. package/generators/languages/templates/src/test/resources/i18n/messages_bg.properties.ejs +1 -1
  366. package/generators/languages/templates/src/test/resources/i18n/messages_bn.properties.ejs +4 -1
  367. package/generators/languages/templates/src/test/resources/i18n/messages_by.properties.ejs +4 -1
  368. package/generators/languages/templates/src/test/resources/i18n/messages_ca.properties.ejs +4 -1
  369. package/generators/languages/templates/src/test/resources/i18n/messages_cs.properties.ejs +4 -1
  370. package/generators/languages/templates/src/test/resources/i18n/messages_da.properties.ejs +4 -1
  371. package/generators/languages/templates/src/test/resources/i18n/messages_de.properties.ejs +4 -1
  372. package/generators/languages/templates/src/test/resources/i18n/messages_el.properties.ejs +4 -1
  373. package/generators/languages/templates/src/test/resources/i18n/messages_es.properties.ejs +4 -1
  374. package/generators/languages/templates/src/test/resources/i18n/messages_et.properties.ejs +4 -1
  375. package/generators/languages/templates/src/test/resources/i18n/messages_fa.properties.ejs +4 -1
  376. package/generators/languages/templates/src/test/resources/i18n/messages_fi.properties.ejs +1 -1
  377. package/generators/languages/templates/src/test/resources/i18n/messages_gl.properties.ejs +4 -1
  378. package/generators/languages/templates/src/test/resources/i18n/messages_hi.properties.ejs +4 -1
  379. package/generators/languages/templates/src/test/resources/i18n/messages_hr.properties.ejs +1 -1
  380. package/generators/languages/templates/src/test/resources/i18n/messages_hu.properties.ejs +4 -1
  381. package/generators/languages/templates/src/test/resources/i18n/messages_hy.properties.ejs +4 -1
  382. package/generators/languages/templates/src/test/resources/i18n/messages_in.properties.ejs +4 -1
  383. package/generators/languages/templates/src/test/resources/i18n/messages_it.properties.ejs +4 -1
  384. package/generators/languages/templates/src/test/resources/i18n/messages_ja.properties.ejs +4 -1
  385. package/generators/languages/templates/src/test/resources/i18n/messages_ko.properties.ejs +4 -1
  386. package/generators/languages/templates/src/test/resources/i18n/messages_mr.properties.ejs +4 -1
  387. package/generators/languages/templates/src/test/resources/i18n/messages_my.properties.ejs +4 -1
  388. package/generators/languages/templates/src/test/resources/i18n/messages_nl.properties.ejs +4 -1
  389. package/generators/languages/templates/src/test/resources/i18n/messages_pa.properties.ejs +1 -1
  390. package/generators/languages/templates/src/test/resources/i18n/messages_pl.properties.ejs +4 -1
  391. package/generators/languages/templates/src/test/resources/i18n/messages_pt_BR.properties.ejs +1 -1
  392. package/generators/languages/templates/src/test/resources/i18n/messages_pt_PT.properties.ejs +4 -1
  393. package/generators/languages/templates/src/test/resources/i18n/messages_ro.properties.ejs +4 -1
  394. package/generators/languages/templates/src/test/resources/i18n/messages_ru.properties.ejs +4 -1
  395. package/generators/languages/templates/src/test/resources/i18n/messages_si.properties.ejs +4 -1
  396. package/generators/languages/templates/src/test/resources/i18n/messages_sk.properties.ejs +4 -1
  397. package/generators/languages/templates/src/test/resources/i18n/messages_sr.properties.ejs +4 -1
  398. package/generators/languages/templates/src/test/resources/i18n/messages_sv.properties.ejs +4 -1
  399. package/generators/languages/templates/src/test/resources/i18n/messages_ta.properties.ejs +4 -1
  400. package/generators/languages/templates/src/test/resources/i18n/messages_te.properties.ejs +4 -1
  401. package/generators/languages/templates/src/test/resources/i18n/messages_th.properties.ejs +4 -1
  402. package/generators/languages/templates/src/test/resources/i18n/messages_tr.properties.ejs +4 -1
  403. package/generators/languages/templates/src/test/resources/i18n/messages_ua.properties.ejs +4 -1
  404. package/generators/languages/templates/src/test/resources/i18n/messages_uz_Cyrl_UZ.properties.ejs +4 -1
  405. package/generators/languages/templates/src/test/resources/i18n/messages_uz_Latn_UZ.properties.ejs +4 -1
  406. package/generators/languages/templates/src/test/resources/i18n/messages_vi.properties.ejs +4 -1
  407. package/generators/languages/templates/src/test/resources/i18n/messages_zh_CN.properties.ejs +4 -1
  408. package/generators/languages/templates/src/test/resources/i18n/messages_zh_TW.properties.ejs +4 -1
  409. package/generators/maven/files.cjs +0 -1
  410. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  411. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
  412. package/generators/maven/templates/mvnw +13 -7
  413. package/generators/maven/templates/mvnw.cmd +19 -13
  414. package/generators/maven/templates/pom.xml.jhi.ejs +2 -2
  415. package/generators/openapi-client/files.js +2 -8
  416. package/generators/openapi-client/index.js +2 -0
  417. package/generators/openshift/templates/registry/consul.yml.ejs +1 -2
  418. package/generators/openshift/templates/registry/jhipster-registry.yml.ejs +1 -2
  419. package/generators/project-name/index.cjs +8 -5
  420. package/generators/server/cleanup-angular.js +37 -0
  421. package/generators/server/cleanup-cache-provider.js +46 -0
  422. package/generators/server/cleanup-cassandra.js +49 -0
  423. package/generators/server/cleanup-cucumber.js +40 -0
  424. package/generators/server/cleanup-elasticsearch.js +48 -0
  425. package/generators/server/cleanup-gradle.js +40 -0
  426. package/generators/server/cleanup-kafka.js +41 -0
  427. package/generators/server/cleanup-maven.js +37 -0
  428. package/generators/server/cleanup-mongodb.js +40 -0
  429. package/generators/server/cleanup-oauth2.js +43 -0
  430. package/generators/server/cleanup-reactive.js +38 -0
  431. package/generators/server/cleanup-sql.js +48 -0
  432. package/generators/server/cleanup.js +89 -39
  433. package/generators/server/esm.mjs +1 -0
  434. package/generators/server/files-couchbase.js +11 -10
  435. package/generators/server/files-sql.js +197 -4
  436. package/generators/server/files.js +239 -248
  437. package/generators/server/index.js +38 -86
  438. package/generators/server/needle-api/needle-server-gradle.js +38 -0
  439. package/generators/server/needles.cjs +79 -0
  440. package/generators/server/templates/.mvn/jvm.config +1 -0
  441. package/generators/server/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  442. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
  443. package/generators/server/templates/.npmrc.ejs +1 -0
  444. package/generators/server/templates/build.gradle.ejs +126 -229
  445. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +24 -1
  446. package/generators/server/templates/couchbase/src/test/java/package/config/CouchbaseTestContainer.java.ejs +67 -0
  447. package/generators/server/templates/couchbase/src/test/java/package/config/EmbeddedCouchbase.java.ejs +30 -0
  448. package/generators/server/templates/devcontainer/Dockerfile.ejs +25 -0
  449. package/generators/server/templates/devcontainer/devcontainer.json.ejs +64 -0
  450. package/generators/server/templates/gradle/docker.gradle.ejs +6 -0
  451. package/generators/server/templates/gradle/profile_dev.gradle.ejs +95 -3
  452. package/generators/server/templates/gradle/profile_prod.gradle.ejs +80 -4
  453. package/generators/server/templates/gradle/wrapper/gradle-wrapper.jar +0 -0
  454. package/generators/server/templates/gradle.properties.ejs +17 -13
  455. package/generators/server/templates/gradlew +0 -0
  456. package/generators/server/templates/mvnw +13 -7
  457. package/generators/server/templates/mvnw.cmd +19 -13
  458. package/generators/server/templates/npmw +0 -0
  459. package/generators/server/templates/pom.xml.ejs +287 -236
  460. package/generators/server/templates/settings.gradle.ejs +8 -5
  461. package/generators/server/templates/sql/common/src/main/docker/config/mariadb/my.cnf +49 -0
  462. package/generators/server/templates/sql/common/src/main/docker/config/mysql/my.cnf +82 -0
  463. package/generators/server/templates/{src → sql/common/src}/main/docker/mariadb.yml.ejs +2 -0
  464. package/generators/server/templates/{src → sql/common/src}/main/docker/mssql.yml.ejs +0 -0
  465. package/generators/server/templates/{src → sql/common/src}/main/docker/mysql.yml.ejs +2 -1
  466. package/generators/server/templates/{src → sql/common/src}/main/docker/postgresql.yml.ejs +0 -0
  467. package/generators/server/templates/{src → sql/common/src}/main/java/package/config/LiquibaseConfiguration.java.ejs +0 -0
  468. package/generators/server/templates/{src → sql/common/src}/main/resources/h2.server.properties.ejs +0 -0
  469. package/generators/server/templates/sql/common/src/test/java/package/config/EmbeddedSQL.java.ejs +30 -0
  470. package/generators/server/templates/sql/common/src/test/java/package/config/MariadbTestContainer.java.ejs +60 -0
  471. package/generators/server/templates/sql/common/src/test/java/package/config/MsSqlTestContainer.java.ejs +59 -0
  472. package/generators/server/templates/sql/common/src/test/java/package/config/MysqlTestContainer.java.ejs +69 -0
  473. package/generators/server/templates/sql/common/src/test/java/package/config/PostgreSqlTestContainer.java.ejs +59 -0
  474. package/generators/server/templates/sql/common/src/test/java/package/config/SqlTestContainer.java.ejs +28 -0
  475. package/generators/server/templates/{src → sql/common/src}/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs +0 -0
  476. package/generators/server/templates/{src → sql/common/src}/test/java/package/repository/timezone/DateTimeWrapper.java.ejs +0 -0
  477. package/generators/server/templates/{src → sql/common/src}/test/java/package/repository/timezone/DateTimeWrapperRepository.java.ejs +0 -0
  478. package/generators/server/templates/sql/common/src/test/resources/config/application-testdev.yml.ejs +93 -0
  479. package/generators/server/templates/{src/test/resources/config/application-testcontainers.yml.ejs → sql/common/src/test/resources/config/application-testprod.yml.ejs} +17 -33
  480. package/generators/server/templates/sql/common/src/test/resources/testcontainers/mariadb/my.cnf +49 -0
  481. package/generators/server/templates/sql/common/src/test/resources/testcontainers/mysql/my.cnf +83 -0
  482. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/EntityManager.java.ejs +48 -38
  483. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/rowmapper/ColumnConverter.java.ejs +0 -0
  484. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/rowmapper/UserRowMapper.java.ejs +0 -0
  485. package/generators/server/templates/src/main/docker/app.yml.ejs +18 -20
  486. package/generators/server/templates/src/main/docker/cassandra-migration.yml.ejs +1 -0
  487. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +64 -7
  488. package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +1 -1
  489. package/generators/server/templates/src/main/docker/jhipster-registry.yml.ejs +1 -1
  490. package/generators/server/templates/src/main/docker/jib/entrypoint.sh.ejs +36 -1
  491. package/generators/server/templates/src/main/docker/keycloak.yml.ejs +8 -6
  492. package/generators/server/templates/src/main/java/package/config/ApplicationProperties.java.ejs +3 -0
  493. package/generators/server/templates/src/main/java/package/config/AsyncConfiguration.java.ejs +2 -0
  494. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +1 -1
  495. package/generators/{client/templates/react/src/main/webapp/app/entities/index.tsx.ejs → server/templates/src/main/java/package/config/KafkaSseConsumer.java.ejs} +8 -14
  496. package/generators/server/templates/src/main/java/package/config/KafkaSseProducer.java.ejs +30 -0
  497. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +21 -33
  498. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +108 -15
  499. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +6 -0
  500. package/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +6 -3
  501. package/generators/server/templates/src/main/java/package/security/jwt/JWTFilter.java.ejs +1 -1
  502. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +1 -1
  503. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +10 -3
  504. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +12 -2
  505. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource.java.ejs +60 -108
  506. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource_reactive.java.ejs +74 -0
  507. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource.java.ejs +1 -5
  508. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -5
  509. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +3 -4
  510. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +4 -3
  511. package/generators/server/templates/src/main/resources/config/application.yml.ejs +27 -23
  512. package/generators/server/templates/src/main/resources/config/liquibase/changelog/initial_schema.xml.ejs +1 -1
  513. package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +54 -24
  514. package/generators/server/templates/src/main/resources/swagger/api.yml.ejs +3 -3
  515. package/generators/server/templates/src/test/java/package/CassandraKeyspaceIT.java.ejs +3 -4
  516. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +40 -21
  517. package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +0 -3
  518. package/generators/server/templates/src/test/java/package/{repository/search/UserSearchRepositoryMockConfiguration.java.ejs → config/AsyncSyncConfiguration.java.ejs} +12 -10
  519. package/generators/server/templates/src/test/java/package/config/CassandraTestContainer.java.ejs +141 -0
  520. 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
  521. package/generators/server/templates/src/test/java/package/config/ElasticsearchTestContainer.java.ejs +68 -0
  522. package/generators/server/templates/src/test/java/package/config/EmbeddedCassandra.java.ejs +30 -0
  523. package/generators/server/templates/src/test/java/package/config/EmbeddedElasticsearch.java.ejs +30 -0
  524. package/generators/server/templates/src/test/java/package/config/EmbeddedKafka.java.ejs +30 -0
  525. package/generators/server/templates/src/test/java/package/config/EmbeddedMongo.java.ejs +30 -0
  526. package/generators/server/templates/src/test/java/package/config/EmbeddedNeo4j.java.ejs +29 -0
  527. package/generators/server/templates/src/test/java/package/config/EmbeddedRedis.java.ejs +30 -0
  528. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +11 -2
  529. package/generators/server/templates/src/test/java/package/config/KafkaTestContainer.java.ejs +56 -0
  530. package/generators/server/templates/src/test/java/package/config/MongoDbTestContainer.java.ejs +67 -0
  531. package/generators/server/templates/src/test/java/package/config/Neo4jTestContainer.java.ejs +66 -0
  532. package/generators/server/templates/src/test/java/package/config/RedisTestContainer.java.ejs +57 -0
  533. package/generators/server/templates/src/test/java/package/config/{NoOpMailConfiguration.java.ejs → SpringBootTestClassOrderer.java.ejs} +16 -16
  534. package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +250 -0
  535. package/generators/server/templates/src/test/java/package/config/WebConfigurerTest.java.ejs +0 -23
  536. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +3 -10
  537. package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +6 -7
  538. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +5 -5
  539. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +9 -19
  540. package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +9 -15
  541. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  542. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +20 -74
  543. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_oauth2.java.ejs +1 -4
  544. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +1 -12
  545. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT.java.ejs +52 -123
  546. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT_reactive.java.ejs +99 -0
  547. package/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +7 -10
  548. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +13 -10
  549. package/generators/server/templates/src/test/java/package/web/rest/UserJWTControllerIT.java.ejs +1 -4
  550. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +78 -56
  551. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs +1 -4
  552. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -4
  553. package/generators/server/templates/src/test/resources/META-INF/spring.factories.ejs +1 -1
  554. package/generators/server/templates/src/test/resources/config/application.yml.ejs +33 -81
  555. package/generators/server/templates/src/test/resources/junit-platform.properties.ejs +1 -0
  556. package/generators/server/templates/src/test/resources/templates/mail/activationEmail.html.ejs +19 -0
  557. package/generators/server/templates/src/test/resources/templates/mail/creationEmail.html.ejs +19 -0
  558. package/generators/server/templates/src/test/resources/templates/mail/passwordResetEmail.html.ejs +21 -0
  559. package/generators/server/templates/src/test/resources/testcontainers.properties.ejs +1 -0
  560. package/generators/spring-controller/index.js +16 -1
  561. package/generators/sql-constants.js +85 -0
  562. package/generators/statistics.js +6 -5
  563. package/generators/upgrade/index.js +1 -1
  564. package/generators/utils.js +32 -30
  565. package/generators/workspaces/index.js +32 -28
  566. package/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +2 -3
  567. package/jdl/converters/json-to-jdl-converter.js +23 -6
  568. package/jdl/exporters/applications/jhipster-application-formatter.js +7 -0
  569. package/jdl/jhipster/application-options.js +8 -0
  570. package/jdl/jhipster/default-application-options.js +2 -2
  571. package/jdl/parsing/lexer/application-tokens.js +6 -0
  572. package/jdl/parsing/validator.js +7 -0
  573. package/jdl/validators/application-validator.js +3 -1
  574. package/jdl/validators/jdl-with-application-validator.js +1 -0
  575. package/jdl/validators/jdl-without-application-validator.js +3 -2
  576. package/lib/support/base.cjs +43 -0
  577. package/lib/support/needles.cjs +221 -0
  578. package/lib/support/shared-data.cjs +2 -2
  579. package/package.json +34 -32
  580. package/utils/blueprint.js +1 -1
  581. package/utils/entity.js +11 -1
  582. package/utils/field.js +26 -6
  583. package/utils/liquibase.js +5 -8
  584. package/utils/relationship.js +13 -3
  585. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.spec.tsx.ejs +0 -33
  586. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.tsx.ejs +0 -17
  587. package/generators/cypress/templates/cypress-audits.json.ejs +0 -32
  588. package/generators/cypress/templates/cypress.json.ejs +0 -46
  589. package/generators/docker-compose/templates/realm-config/jhipster-users-0.json.ejs +0 -61
  590. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/no-pagination-template.ejs +0 -81
  591. package/generators/entity-server/templates/src/main/java/package/repository/search/SortToSortBuilderListConverter.java.ejs +0 -25
  592. package/generators/maven/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  593. package/generators/server/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  594. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +0 -56
  595. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-users-0.json.ejs +0 -61
  596. package/generators/server/templates/src/main/java/package/config/KafkaProperties.java.ejs +0 -68
  597. package/generators/server/templates/src/test/java/package/AbstractCassandraTest.java.ejs +0 -125
  598. package/generators/server/templates/src/test/java/package/AbstractNeo4jIT.java.ejs +0 -44
  599. package/generators/server/templates/src/test/java/package/MongoDbTestContainerExtension.java.ejs +0 -37
  600. package/generators/server/templates/src/test/java/package/ReactiveSqlTestContainerExtension.java.ejs +0 -79
  601. package/generators/server/templates/src/test/java/package/RedisTestContainerExtension.java.ejs +0 -44
  602. package/generators/server/templates/src/test/java/package/TestContainersSpringContextCustomizerFactory.java.ejs +0 -24
  603. package/generators/server/templates/src/test/resources/testcontainers/mariadb/my.cnf +0 -2
@@ -42,7 +42,8 @@ const { formatDateForChangelog } = require('../utils/liquibase');
42
42
  const { calculateDbNameWithLimit, hibernateSnakeCase } = require('../utils/db');
43
43
  const defaultApplicationOptions = require('../jdl/jhipster/default-application-options');
44
44
  const databaseTypes = require('../jdl/jhipster/database-types');
45
- const { ANGULAR_X: ANGULAR, REACT, VUE, NO: CLIENT_FRAMEWORK_NO } = require('../jdl/jhipster/client-framework-types');
45
+ const { databaseData } = require('./sql-constants');
46
+ const { ANGULAR_X: ANGULAR, REACT, VUE, SVELTE, NO: CLIENT_FRAMEWORK_NO } = require('../jdl/jhipster/client-framework-types');
46
47
  const {
47
48
  PRIORITY_NAMES: {
48
49
  LOADING,
@@ -67,6 +68,8 @@ const {
67
68
  END,
68
69
  },
69
70
  } = require('../lib/constants/priorities.cjs');
71
+ const { insertContentIntoApplicationProperties } = require('./server/needles.cjs');
72
+ const { joinCallbacks } = require('../lib/support/base.cjs');
70
73
 
71
74
  const JHIPSTER_CONFIG_DIR = constants.JHIPSTER_CONFIG_DIR;
72
75
  const MODULES_HOOK_FILE = `${JHIPSTER_CONFIG_DIR}/modules/jhi-hooks.json`;
@@ -101,14 +104,31 @@ const NO_SEARCH_ENGINE = searchEngineTypes.FALSE;
101
104
  const NO_MESSAGE_BROKER = messageBrokerTypes.NO;
102
105
  const NO_WEBSOCKET = websocketTypes.FALSE;
103
106
 
107
+ const isWin32 = os.platform() === 'win32';
108
+
109
+ /**
110
+ * @callback EditFileCallback
111
+ * @param {JHipsterBaseGenerator} this
112
+ * @param {string} content
113
+ * @param {string} filePath
114
+ * @returns {CascatedEditFileCallback} callback for cascated edit
115
+ */
116
+
117
+ /**
118
+ * @callback CascatedEditFileCallback
119
+ * @param {...EditFileCallback} callbacks
120
+ * @returns {CascatedEditFileCallback} callback for cascated edit
121
+ */
104
122
  /**
105
123
  * This is the Generator base class.
106
124
  * This provides all the public API methods exposed via the module system.
107
125
  * The public API methods can be directly utilized as well using commonJS require.
108
126
  *
109
127
  * The method signatures in public API should not be changed without a major version change
128
+ *
129
+ * @extends {import('yeoman-generator')}
110
130
  */
111
- module.exports = class JHipsterBaseGenerator extends PrivateBase {
131
+ class JHipsterBaseGenerator extends PrivateBase {
112
132
  constructor(args, options, features) {
113
133
  super(args, options, features);
114
134
 
@@ -184,9 +204,8 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
184
204
  try {
185
205
  this._jhipsterGenerator = this._jhipsterGenerator || this.env.requireNamespace(this.options.namespace).generator;
186
206
  } catch (error) {
187
- throw new Error(
188
- `The Namespace ${this.options.namespace} may not be correct. Please check your configuration and ensure your blueprint folder start with "generator-". Detail: ${error}`
189
- );
207
+ const split = this.options.namespace.split(':', 2);
208
+ this._jhipsterGenerator = split.length === 1 ? split[0] : split[1];
190
209
  }
191
210
  return this.fetchFromInstalledJHipster(this._jhipsterGenerator, 'templates', ...args);
192
211
  }
@@ -335,6 +354,9 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
335
354
  if (this.jhipsterConfig.clientFramework === VUE) {
336
355
  prettierExtensions = `${prettierExtensions},vue`;
337
356
  }
357
+ if (this.jhipsterConfig.clientFramework === SVELTE) {
358
+ prettierExtensions = `${prettierExtensions},svelte`;
359
+ }
338
360
  }
339
361
  if (!this.skipServer && !this.jhipsterConfig.skipServer) {
340
362
  prettierExtensions = `${prettierExtensions},java`;
@@ -1136,6 +1158,16 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1136
1158
  this.needleApi.serverGradle.addPlugin(group, name, version);
1137
1159
  }
1138
1160
 
1161
+ /**
1162
+ * A new Gradle plugin to plugin management block in settings.gradle
1163
+ *
1164
+ * @param {string} id - plugin id
1165
+ * @param {string} version - explicit plugin version number
1166
+ */
1167
+ addGradlePluginToPluginManagement(id, version) {
1168
+ this.needleApi.serverGradle.addPluginToPluginManagement(id, version);
1169
+ }
1170
+
1139
1171
  /**
1140
1172
  * Add Gradle plugin to the plugins block
1141
1173
  *
@@ -1201,6 +1233,26 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1201
1233
  this.needleApi.serverGradle.addMavenRepository(url, username, password);
1202
1234
  }
1203
1235
 
1236
+ /**
1237
+ * Add a remote Maven repository to the Gradle plugin management block in settings.gradle
1238
+ *
1239
+ * @param {string} url - url of the repository
1240
+ * @param {string} username - (optional) username of the repository credentials
1241
+ * @param {string} password - (optional) password of the repository credentials
1242
+ */
1243
+ addGradlePluginManagementRepository(url, username, password) {
1244
+ this.needleApi.serverGradle.addPluginManagementRepository(url, username, password);
1245
+ }
1246
+
1247
+ /**
1248
+ * Insert content into ApplicationProperties class
1249
+ * @param {import("./server/needles.cjs").ApplicationPropertiesNeedles} needlesContent
1250
+ * @returns {string} ApplicationProperties contents
1251
+ */
1252
+ insertContentIntoApplicationProperties(needlesContent) {
1253
+ return insertContentIntoApplicationProperties(this, needlesContent);
1254
+ }
1255
+
1204
1256
  /**
1205
1257
  * Generate a date to be used by Liquibase changelogs.
1206
1258
  *
@@ -1265,7 +1317,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1265
1317
  regex = new RegExp(
1266
1318
  [
1267
1319
  /([\s\n\r]+[a-z][a-zA-Z]*Translate="[a-zA-Z0-9 +{}'_!?.]+")/, // jhiTranslate
1268
- /([\s\n\r]+\[translate(-v|V)alues\]="\{([a-zA-Z]|\d|:|\{|\}|\[|\]|-|'|\s|\.|_)*?\}")/, // translate-values or translateValues
1320
+ /([\s\n\r]+\[translate(-v|V)alues\]="\{([a-zA-Z]|\d|:|\{|\}|\[|\]|\(|\)|\||-|'|\s|\.|_)*?\}")/, // translate-values or translateValues
1269
1321
  /([\s\n\r]+translate-compile)/, // translate-compile
1270
1322
  /([\s\n\r]+translate-value-max="[0-9{}()|]*")/, // translate-value-max
1271
1323
  ]
@@ -1304,6 +1356,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1304
1356
  }
1305
1357
 
1306
1358
  /**
1359
+ * @deprecated
1307
1360
  * Copy html templates after stripping translation keys when translation is disabled.
1308
1361
  *
1309
1362
  * @param {string} source - path of the source file to copy from
@@ -1317,6 +1370,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1317
1370
  }
1318
1371
 
1319
1372
  /**
1373
+ * @deprecated
1320
1374
  * Copy Js templates after stripping translation keys when translation is disabled.
1321
1375
  *
1322
1376
  * @param {string} source - path of the source file to copy from
@@ -1330,6 +1384,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1330
1384
  }
1331
1385
 
1332
1386
  /**
1387
+ * @deprecated
1333
1388
  * Copy JSX templates after stripping translation keys when translation is disabled.
1334
1389
  *
1335
1390
  * @param {string} source - path of the source file to copy from
@@ -1511,6 +1566,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1511
1566
  /**
1512
1567
  * Compose with a jhipster generator using default jhipster config.
1513
1568
  * @param {string} generator - jhipster generator.
1569
+ * @param {object} args - args to pass
1514
1570
  * @param {object} [options] - options to pass
1515
1571
  * @param {boolean} [once] - compose once with the generator
1516
1572
  * @return {object} the composed generator
@@ -1655,10 +1711,12 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1655
1711
  }
1656
1712
  dir.closeSync();
1657
1713
 
1658
- return [...new Set((this.jhipsterConfig.entities || []).concat(entityNames))]
1714
+ const entities = [...new Set((this.jhipsterConfig.entities || []).concat(entityNames))]
1659
1715
  .map(entityName => ({ name: entityName, definition: this.readEntityJson(entityName) }))
1660
- .filter(entity => entity && !this.isBuiltInUser(entity.name) && !this.isBuiltInAuthority(entity.name))
1716
+ .filter(entity => entity && !this.isBuiltInUser(entity.name) && !this.isBuiltInAuthority(entity.name) && entity.definition)
1661
1717
  .sort(isBefore);
1718
+ this.jhipsterConfig.entities = entities.map(({ name }) => name);
1719
+ return entities;
1662
1720
  }
1663
1721
 
1664
1722
  /**
@@ -1734,38 +1792,58 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1734
1792
  const separator = legacyDbNames ? '_' : '__';
1735
1793
  const prefix = legacyDbNames ? '' : 'rel_';
1736
1794
  const joinTableName = `${prefix}${this.getTableName(entityName)}${separator}${this.getTableName(relationshipName)}`;
1737
- let limit = 0;
1738
- if (prodDatabaseType === ORACLE && joinTableName.length > 30 && !this.skipCheckLengthOfIdentifier) {
1739
- this.warning(
1740
- `The generated join table "${joinTableName}" is too long for Oracle (which has a 30 character limit). It will be truncated!`
1741
- );
1742
-
1743
- limit = 30;
1744
- } else if (prodDatabaseType === MYSQL && joinTableName.length > 64 && !this.skipCheckLengthOfIdentifier) {
1745
- this.warning(
1746
- `The generated join table "${joinTableName}" is too long for MySQL (which has a 64 character limit). It will be truncated!`
1747
- );
1748
-
1749
- limit = 64;
1750
- } else if (prodDatabaseType === POSTGRESQL && joinTableName.length >= 63 && !this.skipCheckLengthOfIdentifier) {
1795
+ const { name, tableNameMaxLength } = databaseData[prodDatabaseType] || {};
1796
+ // FIXME: In V8, remove specific condition for POSTGRESQL joinTableName.length === 63
1797
+ if (
1798
+ tableNameMaxLength &&
1799
+ (joinTableName.length > tableNameMaxLength || (prodDatabaseType === POSTGRESQL && joinTableName.length === 63)) &&
1800
+ !this.skipCheckLengthOfIdentifier
1801
+ ) {
1751
1802
  this.warning(
1752
- `The generated join table "${joinTableName}" is too long for PostgreSQL (which has a 63 character limit). It will be truncated!`
1803
+ `The generated join table "${joinTableName}" is too long for ${name} (which has a ${tableNameMaxLength} character limit). It will be truncated!`
1753
1804
  );
1805
+ return calculateDbNameWithLimit(entityName, relationshipName, tableNameMaxLength, { prefix, separator, appendHash: !legacyDbNames });
1806
+ }
1807
+ return joinTableName;
1808
+ }
1754
1809
 
1755
- limit = 63;
1756
- } else if (prodDatabaseType === MARIADB && joinTableName.length > 64 && !this.skipCheckLengthOfIdentifier) {
1810
+ /**
1811
+ * get a constraint name for tables in JHipster preferred style
1812
+ *
1813
+ * @param {string} entityName - name of the entity
1814
+ * @param {string} columnOrRelationName - name of the column or related entity
1815
+ * @param {string} prodDatabaseType - database type
1816
+ * @param {boolean} noSnakeCase - do not convert names to snakecase
1817
+ * @param {string} prefix - constraintName prefix for the constraintName
1818
+ * @param {string} suffix - constraintName suffix for the constraintName
1819
+ */
1820
+ getConstraintName(entityName, columnOrRelationName, prodDatabaseType, noSnakeCase, prefix = '', suffix = '') {
1821
+ let constraintName;
1822
+ const legacyDbNames = this.jhipsterConfig && this.jhipsterConfig.legacyDbNames;
1823
+ const separator = legacyDbNames ? '_' : '__';
1824
+ if (noSnakeCase) {
1825
+ constraintName = `${prefix}${entityName}${separator}${columnOrRelationName}${suffix}`;
1826
+ } else {
1827
+ constraintName = `${prefix}${this.getTableName(entityName)}${separator}${this.getTableName(columnOrRelationName)}${suffix}`;
1828
+ }
1829
+ const { name, constraintNameMaxLength } = databaseData[prodDatabaseType] || {};
1830
+ if (constraintNameMaxLength && constraintName.length > constraintNameMaxLength && !this.skipCheckLengthOfIdentifier) {
1757
1831
  this.warning(
1758
- `The generated join table "${joinTableName}" is too long for MariaDB (which has a 64 character limit). It will be truncated!`
1832
+ `The generated constraint name "${constraintName}" is too long for ${name} (which has a ${constraintNameMaxLength} character limit). It will be truncated!`
1759
1833
  );
1760
-
1761
- limit = 64;
1834
+ return `${calculateDbNameWithLimit(entityName, columnOrRelationName, constraintNameMaxLength - suffix.length, {
1835
+ separator,
1836
+ noSnakeCase,
1837
+ prefix,
1838
+ appendHash: !legacyDbNames,
1839
+ })}${suffix}`;
1762
1840
  }
1763
- return limit === 0
1764
- ? joinTableName
1765
- : calculateDbNameWithLimit(entityName, relationshipName, limit, { prefix, separator, appendHash: !legacyDbNames });
1841
+ return constraintName;
1766
1842
  }
1767
1843
 
1768
1844
  /**
1845
+ * @deprecated Should be removed in V8 in favour of getConstraintName
1846
+ *
1769
1847
  * get a constraint name for tables in JHipster preferred style after applying any length limits required.
1770
1848
  *
1771
1849
  * @param {string} entityName - name of the entity
@@ -1784,13 +1862,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1784
1862
  constraintName = `${prefix}${this.getTableName(entityName)}${separator}${this.getTableName(columnOrRelationName)}`;
1785
1863
  }
1786
1864
  let limit = 0;
1787
- if (prodDatabaseType === ORACLE && constraintName.length >= 27 && !this.skipCheckLengthOfIdentifier) {
1788
- this.warning(
1789
- `The generated constraint name "${constraintName}" is too long for Oracle (which has a 30 character limit). It will be truncated!`
1790
- );
1791
-
1792
- limit = 28;
1793
- } else if (prodDatabaseType === MYSQL && constraintName.length >= 61 && !this.skipCheckLengthOfIdentifier) {
1865
+ if (prodDatabaseType === MYSQL && constraintName.length >= 61 && !this.skipCheckLengthOfIdentifier) {
1794
1866
  this.warning(
1795
1867
  `The generated constraint name "${constraintName}" is too long for MySQL (which has a 64 character limit). It will be truncated!`
1796
1868
  );
@@ -1819,19 +1891,6 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1819
1891
  });
1820
1892
  }
1821
1893
 
1822
- /**
1823
- * get a foreign key constraint name for tables in JHipster preferred style.
1824
- *
1825
- * @param {string} entityName - name of the entity
1826
- * @param {string} relationshipName - name of the related entity
1827
- * @param {string} prodDatabaseType - database type
1828
- * @param {boolean} noSnakeCase - do not convert names to snakecase
1829
- */
1830
- getConstraintName(entityName, relationshipName, prodDatabaseType, noSnakeCase) {
1831
- // for backward compatibility
1832
- return this.getFKConstraintName(entityName, relationshipName, prodDatabaseType, noSnakeCase);
1833
- }
1834
-
1835
1894
  /**
1836
1895
  * get a foreign key constraint name for tables in JHipster preferred style.
1837
1896
  *
@@ -1841,7 +1900,10 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1841
1900
  * @param {boolean} noSnakeCase - do not convert names to snakecase
1842
1901
  */
1843
1902
  getFKConstraintName(entityName, relationshipName, prodDatabaseType, noSnakeCase) {
1844
- return `${this.getConstraintNameWithLimit(entityName, relationshipName, prodDatabaseType, noSnakeCase, 'fk_')}_id`;
1903
+ // FIXME: In V8, this should use only this.getConstraintName that calculates constraint length correctly
1904
+ return prodDatabaseType === ORACLE
1905
+ ? this.getConstraintName(entityName, relationshipName, prodDatabaseType, noSnakeCase, 'fk_', '_id')
1906
+ : `${this.getConstraintNameWithLimit(entityName, relationshipName, prodDatabaseType, noSnakeCase, 'fk_')}_id`;
1845
1907
  }
1846
1908
 
1847
1909
  /**
@@ -1853,7 +1915,10 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1853
1915
  * @param {boolean} noSnakeCase - do not convert names to snakecase
1854
1916
  */
1855
1917
  getUXConstraintName(entityName, columnName, prodDatabaseType, noSnakeCase) {
1856
- return `ux_${this.getConstraintNameWithLimit(entityName, columnName, prodDatabaseType, noSnakeCase)}`;
1918
+ // FIXME: In V8, this should use only this.getConstraintName that calculates constraint length correctly
1919
+ return prodDatabaseType === ORACLE
1920
+ ? this.getConstraintName(entityName, columnName, prodDatabaseType, noSnakeCase, 'ux_')
1921
+ : `ux_${this.getConstraintNameWithLimit(entityName, columnName, prodDatabaseType, noSnakeCase)}`;
1857
1922
  }
1858
1923
 
1859
1924
  /**
@@ -1986,7 +2051,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1986
2051
  * Return the user home
1987
2052
  */
1988
2053
  getUserHome() {
1989
- return process.env[process.platform === 'win32' ? 'USERPROFILE' : 'HOME'];
2054
+ return process.env[isWin32 ? 'USERPROFILE' : 'HOME'];
1990
2055
  }
1991
2056
 
1992
2057
  /**
@@ -2122,7 +2187,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
2122
2187
  buildCmd += ' -Pwar';
2123
2188
  }
2124
2189
 
2125
- if (os.platform() !== 'win32') {
2190
+ if (!isWin32) {
2126
2191
  buildCmd = `./${buildCmd}`;
2127
2192
  }
2128
2193
  buildCmd += ` -P${profile}`;
@@ -2148,7 +2213,7 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
2148
2213
  buildCmd = `gradlew -x ${command}`;
2149
2214
  }
2150
2215
 
2151
- if (os.platform() !== 'win32') {
2216
+ if (!isWin32) {
2152
2217
  buildCmd = `./${buildCmd}`;
2153
2218
  }
2154
2219
  buildCmd += ` -P${profile}`;
@@ -2335,7 +2400,9 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2335
2400
  assert(paramCount > 0, 'One of sections, blocks or files is required');
2336
2401
  assert(paramCount === 1, 'Only one of sections, blocks or files must be provided');
2337
2402
 
2338
- const { sections, blocks, templates, rootTemplatesPath, context = this } = options;
2403
+ const { sections, blocks, templates, rootTemplatesPath, context = this, transform: methodTransform = [] } = options;
2404
+ const { _: commonSpec = {} } = sections;
2405
+ const { transform: sectionTransform = [] } = commonSpec;
2339
2406
  const startTime = new Date();
2340
2407
 
2341
2408
  /* Build lookup order first has preference.
@@ -2371,20 +2438,18 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2371
2438
  return val;
2372
2439
  }
2373
2440
  if (typeof val === 'function') {
2374
- return val.call(this, context, this);
2441
+ return val.call(this, context, this) || false;
2375
2442
  }
2376
2443
  throw new Error(`Type not supported ${val}`);
2377
2444
  };
2378
2445
 
2379
- const renderTemplate = async ({ sourceFile, destinationFile, options, transform = true }) => {
2446
+ const renderTemplate = async ({ sourceFile, destinationFile, options, noEjs, transform, binary }) => {
2380
2447
  const extension = path.extname(sourceFile);
2381
- const appendEjs = transform && !['.ejs', '.png', '.jpg', '.gif', '.svg', '.ico'].includes(extension);
2448
+ binary = binary || ['.png', '.jpg', '.gif', '.svg', '.ico'].includes(extension);
2449
+ const appendEjs = noEjs === undefined ? !binary && extension !== '.ejs' : !noEjs;
2382
2450
  const ejsFile = appendEjs || extension === '.ejs';
2383
2451
 
2384
- if (typeof transform !== 'boolean') {
2385
- throw new Error(`Transform ${transform} value is not supported`);
2386
- }
2387
- destinationFile = transform ? normalizeEjs(destinationFile) : destinationFile;
2452
+ destinationFile = appendEjs ? normalizeEjs(destinationFile) : destinationFile;
2388
2453
 
2389
2454
  let sourceFileFrom;
2390
2455
  if (Array.isArray(rootTemplatesAbsolutePath)) {
@@ -2419,11 +2484,33 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2419
2484
  if (!ejsFile) {
2420
2485
  await this.copyTemplateAsync(sourceFileFrom, destinationFile);
2421
2486
  } else {
2422
- await this.renderTemplateAsync(sourceFileFrom, destinationFile, context, {
2487
+ let useAsync = true;
2488
+ if (context.entityClass) {
2489
+ const basename = path.basename(sourceFileFrom);
2490
+ if (context.configOptions && context.configOptions.sharedEntities) {
2491
+ Object.values(context.configOptions.sharedEntities).forEach(entity => {
2492
+ entity.resetFakerSeed(`${context.entityClass}-${basename}`);
2493
+ });
2494
+ } else if (context.resetFakerSeed) {
2495
+ context.resetFakerSeed(basename);
2496
+ }
2497
+ // Async calls will make the render method to be scheduled, allowing the faker key to change in the meantime.
2498
+ useAsync = false;
2499
+ }
2500
+
2501
+ const renderOptions = {
2423
2502
  ...options,
2424
2503
  // Set root for ejs to lookup for partials.
2425
2504
  root: rootTemplatesAbsolutePath,
2426
- });
2505
+ };
2506
+ if (useAsync) {
2507
+ await this.renderTemplateAsync(sourceFileFrom, destinationFile, context, renderOptions);
2508
+ } else {
2509
+ this.renderTemplate(sourceFileFrom, destinationFile, context, renderOptions);
2510
+ }
2511
+ }
2512
+ if (!binary && transform && transform.length) {
2513
+ this.editFile(destinationFile, ...transform);
2427
2514
  }
2428
2515
  return destinationFile;
2429
2516
  };
@@ -2431,10 +2518,13 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2431
2518
  let parsedBlocks = blocks;
2432
2519
  if (sections) {
2433
2520
  assert(typeof sections === 'object', 'sections must be an object');
2434
- const parsedSections = Object.entries(sections).map(([sectionName, sectionBlocks]) => {
2435
- assert(Array.isArray(sectionBlocks), `Section must be an array for ${sectionName}`);
2436
- return { sectionName, sectionBlocks };
2437
- });
2521
+ const parsedSections = Object.entries(sections)
2522
+ .map(([sectionName, sectionBlocks]) => {
2523
+ if (sectionName.startsWith('_')) return undefined;
2524
+ assert(Array.isArray(sectionBlocks), `Section must be an array for ${sectionName}`);
2525
+ return { sectionName, sectionBlocks };
2526
+ })
2527
+ .filter(Boolean);
2438
2528
 
2439
2529
  parsedBlocks = parsedSections
2440
2530
  .map(({ sectionName, sectionBlocks }) => {
@@ -2457,7 +2547,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2457
2547
  from: blockFromCallback,
2458
2548
  to: blockToCallback,
2459
2549
  condition: blockConditionCallback,
2460
- transform: blockTransform,
2550
+ transform: blockTransform = [],
2461
2551
  } = block;
2462
2552
  assert(typeof block === 'object', `Block must be an object for ${blockSpecPath}`);
2463
2553
  assert(Array.isArray(block.templates), `Block templates must be an array for ${blockSpecPath}`);
@@ -2470,13 +2560,31 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2470
2560
  return block.templates.map((fileSpec, fileIdx) => {
2471
2561
  const fileSpecPath = `${blockSpecPath}[${fileIdx}]`;
2472
2562
  assert(typeof fileSpec === 'object' || typeof fileSpec === 'string', `File must be an object or a string for ${fileSpecPath}`);
2563
+ let { noEjs } = fileSpec;
2564
+ let derivedTransform;
2565
+ if (typeof blockTransform === 'boolean') {
2566
+ noEjs = !blockTransform;
2567
+ derivedTransform = [...methodTransform, ...sectionTransform];
2568
+ } else {
2569
+ derivedTransform = [...methodTransform, ...sectionTransform, ...blockTransform];
2570
+ }
2473
2571
  if (typeof fileSpec === 'string') {
2474
2572
  const sourceFile = path.join(blockPath, fileSpec);
2475
2573
  const destinationFile = this.destinationPath(blockTo, fileSpec);
2476
- return { sourceFile, destinationFile, transform: blockTransform };
2574
+ return { sourceFile, destinationFile, noEjs, transform: derivedTransform };
2477
2575
  }
2576
+
2577
+ const { options, file, renameTo, transform: fileTransform = [], binary } = fileSpec;
2478
2578
  let { sourceFile, destinationFile } = fileSpec;
2479
- const { options, file, renameTo } = fileSpec;
2579
+
2580
+ if (typeof fileTransform === 'boolean') {
2581
+ noEjs = !fileTransform;
2582
+ } else if (Array.isArray(fileTransform)) {
2583
+ derivedTransform = [...derivedTransform, ...fileTransform];
2584
+ } else if (fileTransform !== undefined) {
2585
+ throw new Error(`Transform ${fileTransform} value is not supported`);
2586
+ }
2587
+
2480
2588
  const normalizedFile = resolveCallback(sourceFile || file);
2481
2589
  sourceFile = path.join(blockPath, normalizedFile);
2482
2590
  destinationFile = this.destinationPath(blockTo, path.join(resolveCallback(destinationFile || renameTo, normalizedFile)));
@@ -2486,16 +2594,23 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2486
2594
  this.debug(`skipping file ${destinationFile}`);
2487
2595
  return undefined;
2488
2596
  }
2489
- let { transform } = fileSpec;
2490
- if (transform === undefined) {
2491
- // TODO remove for jhipster 8
2492
- const { noEjs, method } = fileSpec;
2493
- transform = noEjs || method === 'copy' ? false : undefined;
2494
- }
2495
- if (transform === undefined) {
2496
- transform = blockTransform;
2597
+
2598
+ // TODO remove for jhipster 8
2599
+ if (noEjs === undefined) {
2600
+ const { method } = fileSpec;
2601
+ if (method === 'copy') {
2602
+ noEjs = true;
2603
+ }
2497
2604
  }
2498
- return { sourceFile, destinationFile, options, transform };
2605
+
2606
+ return {
2607
+ sourceFile,
2608
+ destinationFile,
2609
+ options,
2610
+ transform: derivedTransform,
2611
+ noEjs,
2612
+ binary,
2613
+ };
2499
2614
  });
2500
2615
  })
2501
2616
  .flat()
@@ -2682,9 +2797,15 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2682
2797
  if (options.cypressCoverage !== undefined) {
2683
2798
  this.jhipsterConfig.cypressCoverage = options.cypressCoverage;
2684
2799
  }
2800
+ if (options.cypressAudit !== undefined) {
2801
+ this.jhipsterConfig.cypressAudit = options.cypressAudit;
2802
+ }
2685
2803
  if (options.legacyDbNames !== undefined) {
2686
2804
  this.jhipsterConfig.legacyDbNames = options.legacyDbNames;
2687
2805
  }
2806
+ if (options.enableTranslation !== undefined) {
2807
+ this.jhipsterConfig.enableTranslation = options.enableTranslation;
2808
+ }
2688
2809
  if (options.language) {
2689
2810
  // workaround double options parsing, remove once generator supports skipping parse options
2690
2811
  const languages = options.language.flat();
@@ -2719,6 +2840,14 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2719
2840
  this.jhipsterConfig.pkType = options.pkType;
2720
2841
  }
2721
2842
 
2843
+ if (options.cacheProvider !== undefined) {
2844
+ this.jhipsterConfig.cacheProvider = options.cacheProvider;
2845
+ }
2846
+
2847
+ if (options.enableHibernateCache !== undefined) {
2848
+ this.jhipsterConfig.enableHibernateCache = options.enableHibernateCache;
2849
+ }
2850
+
2722
2851
  if (options.microfrontend) {
2723
2852
  this.jhipsterConfig.microfrontend = options.microfrontend;
2724
2853
  }
@@ -2797,6 +2926,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2797
2926
  dest.skipUserManagement = config.skipUserManagement;
2798
2927
  dest.skipCheckLengthOfIdentifier = config.skipCheckLengthOfIdentifier;
2799
2928
  dest.microfrontend = config.microfrontend;
2929
+ dest.microfrontends = config.microfrontends;
2800
2930
 
2801
2931
  dest.skipServer = config.skipServer;
2802
2932
  dest.skipCommitHook = config.skipCommitHook;
@@ -2815,6 +2945,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2815
2945
 
2816
2946
  dest.testFrameworks = config.testFrameworks || [];
2817
2947
  dest.cypressCoverage = config.cypressCoverage;
2948
+ dest.cypressAudit = config.cypressAudit === undefined ? true : config.cypressAudit;
2818
2949
 
2819
2950
  dest.remotes = Object.entries(config.applications || {}).map(([baseName, config]) => ({ baseName, ...config })) || [];
2820
2951
 
@@ -2852,7 +2983,14 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2852
2983
  dest.endpointPrefix = !dest.applicationType || dest.applicationTypeMicroservice ? `services/${dest.lowercaseBaseName}` : '';
2853
2984
  }
2854
2985
 
2855
- if (dest.remotes) {
2986
+ if (dest.microfrontends && dest.microfrontends.length > 0) {
2987
+ dest.microfrontends.forEach(microfrontend => {
2988
+ const { baseName } = microfrontend;
2989
+ microfrontend.lowercaseBaseName = baseName.toLowerCase();
2990
+ microfrontend.capitalizedBaseName = _.upperFirst(baseName);
2991
+ microfrontend.endpointPrefix = `services/${microfrontend.lowercaseBaseName}`;
2992
+ });
2993
+ } else if ((!dest.microfrontends || dest.microfrontends.length === 0) && dest.remotes) {
2856
2994
  dest.remotes.forEach(app => this.loadDerivedAppConfig(app));
2857
2995
  dest.microfrontends = dest.remotes.filter(r => r.clientFramework && r.clientFramework !== CLIENT_FRAMEWORK_NO);
2858
2996
  }
@@ -2861,6 +2999,10 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2861
2999
  (dest.applicationTypeMicroservice && !dest.skipClient) ||
2862
3000
  (dest.applicationTypeGateway && dest.microfrontends && dest.microfrontends.length > 0);
2863
3001
 
3002
+ if (dest.microfrontend && dest.applicationTypeMicroservice && !dest.gatewayServerPort) {
3003
+ dest.gatewayServerPort = 8080;
3004
+ }
3005
+
2864
3006
  dest.authenticationTypeSession = dest.authenticationType === SESSION;
2865
3007
  dest.authenticationTypeJwt = dest.authenticationType === JWT;
2866
3008
  dest.authenticationTypeOauth2 = dest.authenticationType === OAUTH2;
@@ -3016,11 +3158,6 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
3016
3158
 
3017
3159
  dest.searchEngineCouchbase = dest.searchEngine === COUCHBASE;
3018
3160
  dest.searchEngineElasticsearch = dest.searchEngine === ELASTICSEARCH;
3019
-
3020
- dest.reactiveSqlTestContainers =
3021
- dest.reactive &&
3022
- ([MYSQL, POSTGRESQL, MSSQL, MARIADB].includes(dest.prodDatabaseType) ||
3023
- [MYSQL, POSTGRESQL, MSSQL, MARIADB].includes(dest.devDatabaseType));
3024
3161
  }
3025
3162
 
3026
3163
  loadPlatformConfig(config = _.defaults({}, this.jhipsterConfig, this.jhipsterDefaults), dest = this) {
@@ -3163,7 +3300,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
3163
3300
  * @experimental
3164
3301
  * Load dependabot package.json into shared dependabot dependencies.
3165
3302
  * @example this.loadDependabotDependencies(this.fetchFromInstalledJHipster('init', 'templates', 'package.json'));
3166
- * @param String dependabotFile - package.json path
3303
+ * @param {string} packageJson - package.json path
3167
3304
  */
3168
3305
  loadDependabotDependencies(packageJson) {
3169
3306
  const { dependencies, devDependencies } = this.fs.readJSON(packageJson);
@@ -3232,7 +3369,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
3232
3369
  * @experimental
3233
3370
  * Load options from an object.
3234
3371
  * When composing, we need to load options from others generators, externalising options allow to easily load them.
3235
- * @param String options - Object containing options.
3372
+ * @param {Object} [options] - Object containing options.
3236
3373
  */
3237
3374
  jhipsterOptions(options = {}) {
3238
3375
  options = _.cloneDeep(options);
@@ -3307,4 +3444,46 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
3307
3444
  LANG: 'en',
3308
3445
  });
3309
3446
  }
3310
- };
3447
+
3448
+ /**
3449
+ * Edit file content
3450
+ * @param {string} file
3451
+ * @param {...EditFileCallback} transformCallbacks
3452
+ * @returns {CascatedEditFileCallback}
3453
+ */
3454
+ editFile(file, ...transformCallbacks) {
3455
+ let filePath = this.destinationPath(file);
3456
+ if (!this.env.sharedFs.existsInMemory(filePath) && this.env.sharedFs.existsInMemory(`${filePath}.jhi`)) {
3457
+ filePath = `${filePath}.jhi`;
3458
+ }
3459
+
3460
+ let content;
3461
+
3462
+ try {
3463
+ content = this.readDestination(filePath);
3464
+ } catch (_error) {
3465
+ if (transformCallbacks.length === 0) {
3466
+ throw new Error(`File ${filePath} doesn't exist`);
3467
+ }
3468
+ // allow to edit non existing files
3469
+ content = '';
3470
+ }
3471
+
3472
+ const writeCallback = (...callbacks) => {
3473
+ if (callbacks.length === 0) {
3474
+ return writeCallback;
3475
+ }
3476
+ try {
3477
+ content = joinCallbacks(...callbacks).call(this, content, filePath);
3478
+ this.writeDestination(filePath, content);
3479
+ } catch (error) {
3480
+ throw new Error(`Error editing file ${filePath}: ${error.message} at ${error.stack}`);
3481
+ }
3482
+ return writeCallback;
3483
+ };
3484
+
3485
+ return writeCallback(...transformCallbacks);
3486
+ }
3487
+ }
3488
+
3489
+ module.exports = JHipsterBaseGenerator;