generator-jhipster 8.0.0-rc.1 → 8.1.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 (369) hide show
  1. package/README.md +71 -58
  2. package/dist/cli/environment-builder.mjs +14 -7
  3. package/dist/cli/jhipster-command.mjs +7 -3
  4. package/dist/cli/program.mjs +2 -2
  5. package/dist/generators/angular/cleanup.mjs +7 -0
  6. package/dist/generators/angular/files-angular.mjs +3 -4
  7. package/dist/generators/angular/generator.mjs +10 -22
  8. package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
  9. package/dist/generators/angular/resources/package.json +25 -24
  10. package/dist/generators/angular/support/translate-angular.mjs +2 -2
  11. package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
  12. package/dist/generators/angular/templates/angular.json.ejs +3 -7
  13. package/dist/generators/angular/templates/package.json.ejs +4 -8
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
  43. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
  44. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
  45. package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
  46. package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
  48. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
  49. package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
  50. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
  51. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
  52. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
  53. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +44 -35
  54. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +1 -1
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
  58. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
  59. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
  60. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
  61. package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
  62. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
  63. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
  64. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
  65. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
  66. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
  67. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
  68. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +1 -1
  69. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  70. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
  71. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
  72. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
  73. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
  74. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
  75. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
  76. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
  77. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
  78. package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
  79. package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
  80. package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +48 -126
  81. package/dist/generators/app/README.md +108 -0
  82. package/dist/generators/app/USAGE +3 -0
  83. package/dist/generators/app/command.mjs +3 -3
  84. package/dist/generators/app/generator.mjs +11 -0
  85. package/dist/generators/app/support/config.mjs +3 -3
  86. package/dist/generators/base/command.mjs +0 -11
  87. package/dist/generators/base/generator.mjs +0 -3
  88. package/dist/generators/base/support/config.mjs +6 -6
  89. package/dist/generators/base/support/jhipster7-context.mjs +3 -3
  90. package/dist/generators/base-application/generator.mjs +7 -8
  91. package/dist/generators/base-application/support/entities.mjs +2 -2
  92. package/dist/generators/base-application/support/enum.mjs +1 -1
  93. package/dist/generators/base-application/support/index.mjs +1 -0
  94. package/dist/generators/base-application/support/prepare-entity.mjs +14 -11
  95. package/dist/generators/base-application/support/prepare-field.mjs +11 -7
  96. package/dist/generators/base-application/support/prepare-relationship.mjs +16 -14
  97. package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
  98. package/dist/generators/base-core/generator.mjs +17 -4
  99. package/dist/generators/base-entity-changes/generator.mjs +1 -1
  100. package/dist/generators/base-workspaces/internal/docker-prompts.mjs +13 -12
  101. package/dist/generators/bootstrap/command.mjs +6 -0
  102. package/dist/generators/bootstrap/generator.mjs +84 -45
  103. package/dist/generators/bootstrap/support/auto-crlf-transform.mjs +34 -21
  104. package/dist/generators/bootstrap/support/eslint-transform.mjs +2 -5
  105. package/dist/generators/bootstrap/support/java-unused-imports-transform.mjs +2 -2
  106. package/dist/generators/bootstrap/support/multi-step-transform/index.mjs +17 -28
  107. package/dist/generators/bootstrap/support/multi-step-transform/template-file-fs.mjs +12 -6
  108. package/dist/generators/bootstrap/support/multi-step-transform/template-file.mjs +1 -0
  109. package/dist/generators/bootstrap/support/prettier-support.mjs +2 -2
  110. package/dist/generators/bootstrap-application/generator.mjs +10 -21
  111. package/dist/generators/bootstrap-application-base/command.mjs +30 -0
  112. package/dist/generators/bootstrap-application-base/generator.mjs +36 -11
  113. package/dist/generators/bootstrap-application-base/index.mjs +1 -0
  114. package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
  115. package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
  116. package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
  117. package/dist/generators/bootstrap-application-server/generator.mjs +2 -2
  118. package/dist/generators/client/command.mjs +2 -0
  119. package/dist/generators/client/resources/package.json +4 -4
  120. package/dist/generators/client/support/entity-definition.mjs +3 -3
  121. package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
  122. package/dist/generators/client/templates/src/main/webapp/content/css/loading.css.ejs +1 -1
  123. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
  124. package/dist/generators/client/templates/webpack/webpack.microfrontend.js.jhi.ejs +14 -1
  125. package/dist/generators/common/command.mjs +2 -0
  126. package/dist/generators/common/files.mjs +1 -1
  127. package/dist/generators/common/generator.mjs +29 -7
  128. package/dist/generators/common/resources/package.json +4 -4
  129. package/dist/generators/common/templates/.lintstagedrc.cjs.ejs +21 -0
  130. package/dist/generators/common/templates/.prettierrc.ejs +1 -1
  131. package/dist/generators/common/templates/README.md.jhi.ejs +2 -0
  132. package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
  133. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/settings-page.cy.ts.ejs +3 -0
  134. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
  135. package/dist/generators/docker/generator.mjs +1 -1
  136. package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
  137. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
  138. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
  139. package/dist/generators/docker-compose/generator.mjs +4 -11
  140. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
  141. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
  142. package/dist/generators/entity/prompts.mjs +123 -306
  143. package/dist/generators/export-jdl/generator.mjs +1 -1
  144. package/dist/generators/feign-client/cleanup.mjs +12 -0
  145. package/dist/generators/feign-client/files.mjs +35 -0
  146. package/dist/generators/feign-client/generator.mjs +65 -0
  147. package/dist/generators/feign-client/index.mjs +19 -0
  148. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
  149. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
  150. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
  151. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
  152. package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
  153. package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
  154. package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
  155. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
  156. package/dist/generators/generate-blueprint/command.mjs +1 -1
  157. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  158. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
  159. package/dist/generators/generator-constants.mjs +11 -7
  160. package/dist/generators/generator-list.mjs +1 -0
  161. package/dist/generators/git/generator.mjs +3 -5
  162. package/dist/generators/gradle/constants.mjs +1 -1
  163. package/dist/generators/heroku/generator.mjs +318 -595
  164. package/dist/generators/heroku/templates/Procfile.ejs +1 -1
  165. package/dist/generators/heroku/templates/application-heroku.yml.ejs +0 -12
  166. package/dist/generators/info/generator.mjs +6 -4
  167. package/dist/generators/init/generator.mjs +2 -2
  168. package/dist/generators/java/command.mjs +6 -0
  169. package/dist/generators/java/entity-files.mjs +5 -1
  170. package/dist/generators/java/generator.mjs +15 -15
  171. package/dist/generators/java/support/package-info-transform.mjs +20 -6
  172. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +24 -28
  173. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
  174. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/enumeration/_enumName_.java.ejs +3 -3
  175. package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +86 -8
  176. package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +85 -0
  177. package/dist/generators/jdl/generator.mjs +32 -28
  178. package/dist/generators/kubernetes/templates/ingress.yml.ejs +0 -1
  179. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
  180. package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
  181. package/dist/generators/languages/command.mjs +5 -0
  182. package/dist/generators/languages/generator.mjs +44 -28
  183. package/dist/generators/languages/prompts.mjs +3 -1
  184. package/dist/generators/languages/support/translate.mjs +1 -1
  185. package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
  186. package/dist/generators/languages/translation-data.mjs +8 -13
  187. package/dist/generators/liquibase/README.md +19 -0
  188. package/dist/generators/liquibase/generator.mjs +7 -3
  189. package/dist/generators/project-name/generator.mjs +14 -19
  190. package/dist/generators/project-name/support/name-resolver.mjs +35 -6
  191. package/dist/generators/react/generator.mjs +18 -10
  192. package/dist/generators/react/resources/package.json +30 -29
  193. package/dist/generators/react/templates/package.json.ejs +4 -5
  194. package/dist/generators/react/templates/src/main/webapp/app/config/icon-loader.ts.ejs +35 -33
  195. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
  196. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
  197. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +19 -15
  198. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +1 -1
  199. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
  200. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
  201. package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  202. package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +9 -2
  203. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header-components.tsx.ejs +1 -1
  204. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +6 -5
  205. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +10 -1
  206. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
  207. package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
  208. package/dist/generators/react/templates/tsconfig.test.json.ejs +1 -1
  209. package/dist/generators/react/templates/webpack/webpack.microfrontend.js.jhi.react.ejs +13 -58
  210. package/dist/generators/server/cleanup.mjs +5 -0
  211. package/dist/generators/server/command.mjs +13 -2
  212. package/dist/generators/server/entity-files.mjs +3 -3
  213. package/dist/generators/server/files.mjs +2 -38
  214. package/dist/generators/server/generator.mjs +48 -23
  215. package/dist/generators/server/jdl/application-definition.mjs +5 -2
  216. package/dist/generators/server/options/feign-client.mjs +24 -0
  217. package/dist/generators/server/options/index.mjs +1 -0
  218. package/dist/generators/server/resources/Dockerfile +19 -19
  219. package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
  220. package/dist/generators/server/resources/pom.xml +18 -18
  221. package/dist/generators/server/support/config.mjs +5 -4
  222. package/dist/generators/server/support/prepare-entity.mjs +9 -6
  223. package/dist/generators/server/support/prepare-field.mjs +20 -0
  224. package/dist/generators/server/support/relationship.mjs +2 -1
  225. package/dist/generators/server/support/templates/field-values.mjs +5 -2
  226. package/dist/generators/server/templates/README.md.jhi.spring-boot.ejs +0 -1
  227. package/dist/generators/server/templates/build.gradle.ejs +1 -2
  228. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
  229. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
  230. package/dist/generators/server/templates/package.json.ejs +0 -5
  231. package/dist/generators/server/templates/pom.xml.ejs +2 -12
  232. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +8 -8
  233. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
  234. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
  235. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +2 -2
  236. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
  237. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +14 -14
  238. package/dist/generators/server/templates/src/main/java/_package_/config/JacksonConfiguration.java.ejs +2 -1
  239. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +21 -3
  240. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +6 -1
  241. package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
  242. package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -6
  243. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
  244. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
  245. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
  246. package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +6 -7
  247. package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -8
  248. package/dist/generators/server/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +4 -7
  249. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
  250. package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
  251. package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +11 -11
  252. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +4 -4
  253. package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
  254. package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
  255. package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
  256. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
  257. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
  258. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
  259. package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
  260. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
  261. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -3
  262. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
  263. package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
  264. package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +3 -37
  265. package/dist/generators/spring-data-relational/README.md +7 -0
  266. package/dist/generators/spring-data-relational/generator.mjs +2 -1
  267. package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
  268. package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
  269. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
  270. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
  271. package/dist/generators/upgrade/generator.mjs +3 -3
  272. package/dist/generators/vue/generator.mjs +25 -16
  273. package/dist/generators/vue/resources/package.json +29 -28
  274. package/dist/generators/vue/templates/package.json.ejs +4 -5
  275. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +10 -3
  276. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +3 -4
  277. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
  278. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
  279. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
  280. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
  281. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +1 -1
  282. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +14 -7
  283. package/dist/generators/vue/templates/src/main/webapp/app/router/index.ts.ejs +8 -1
  284. package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +19 -34
  285. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
  286. package/dist/jdl/converters/jdl-to-json/jdl-to-json-option-converter.js +2 -2
  287. package/dist/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +1 -1
  288. package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +1 -1
  289. package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
  290. package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
  291. package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -17
  292. package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
  293. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
  294. package/dist/jdl/exporters/applications/jhipster-application-formatter.js +17 -1
  295. package/dist/jdl/exporters/config.js +11 -0
  296. package/dist/jdl/exporters/export-utils.js +2 -13
  297. package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
  298. package/dist/jdl/index.js +1 -0
  299. package/dist/jdl/jdl-importer.js +6 -2
  300. package/dist/jdl/jhipster/default-application-options.js +1 -1
  301. package/dist/jdl/jhipster/field-types.js +1 -1
  302. package/dist/jdl/jhipster/json-entity.js +6 -0
  303. package/dist/jdl/models/jdl-application-configuration-factory.js +34 -2
  304. package/dist/jdl/models/jdl-application-configuration.js +6 -3
  305. package/dist/jdl/models/jdl-application-factory.js +2 -2
  306. package/dist/jdl/models/jdl-application.js +12 -3
  307. package/dist/jdl/models/jdl-entity.js +16 -1
  308. package/dist/jdl/models/jdl-field.js +13 -0
  309. package/dist/jdl/models/jdl-object.js +3 -3
  310. package/dist/jdl/models/jdl-relationship.js +23 -5
  311. package/dist/jdl/parsing/jdl-ast-builder-visitor.js +63 -7
  312. package/dist/jdl/parsing/jdl-parser.js +52 -6
  313. package/dist/jdl/parsing/lexer/application-tokens.js +2 -2
  314. package/dist/jdl/validators/entity-validator.js +4 -2
  315. package/dist/jdl/validators/enum-validator.js +4 -2
  316. package/dist/jdl/validators/jdl-with-application-validator.js +18 -8
  317. package/dist/jdl/validators/jdl-without-application-validator.js +30 -29
  318. package/dist/jdl/validators/validator.js +1 -1
  319. package/dist/testing/helpers.mjs +10 -3
  320. package/dist/types/cli/environment-builder.d.mts +2 -0
  321. package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
  322. package/dist/types/generators/base/api.d.mts +12 -0
  323. package/dist/types/generators/base/support/config.d.mts +3 -3
  324. package/dist/types/generators/base/support/needles.d.mts +1 -1
  325. package/dist/types/generators/base-application/generator.d.mts +2 -2
  326. package/dist/types/generators/base-application/support/index.d.mts +1 -0
  327. package/dist/types/generators/base-application/support/prepare-entity.d.mts +6 -1
  328. package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
  329. package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
  330. package/dist/types/generators/base-core/generator.d.mts +7 -1
  331. package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +3 -2
  332. package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +3 -20
  333. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +15 -9
  334. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +1 -0
  335. package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
  336. package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
  337. package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
  338. package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
  339. package/dist/types/generators/feign-client/types-export.d.ts +1 -0
  340. package/dist/types/generators/generator-constants.d.mts +52 -48
  341. package/dist/types/generators/generator-list.d.mts +1 -0
  342. package/dist/types/generators/java/support/package-info-transform.d.mts +1 -4
  343. package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
  344. package/dist/types/generators/server/options/feign-client.d.mts +21 -0
  345. package/dist/types/generators/server/options/index.d.mts +1 -0
  346. package/dist/types/generators/server/support/templates/field-values.d.mts +1 -1
  347. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
  348. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
  349. package/dist/types/jdl/exporters/config.d.ts +1 -0
  350. package/dist/types/jdl/index.d.ts +1 -0
  351. package/dist/types/jdl/jdl-importer.d.ts +1 -0
  352. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
  353. package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -0
  354. package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +2 -2
  355. package/dist/types/jdl/models/jdl-application-configuration.d.ts +8 -6
  356. package/dist/types/jdl/models/jdl-application-factory.d.ts +1 -1
  357. package/dist/types/jdl/models/jdl-application.d.ts +8 -4
  358. package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
  359. package/dist/types/jdl/models/jdl-object.d.ts +1 -1
  360. package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
  361. package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +1 -1
  362. package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +10 -0
  363. package/dist/types/jdl/parsing/jdl-parser.d.ts +3 -0
  364. package/dist/types/jdl/parsing/lexer/application-tokens.d.ts +1 -0
  365. package/dist/types/jdl/types/types.d.mts +2 -2
  366. package/dist/types/jdl/validators/entity-validator.d.ts +2 -2
  367. package/dist/types/jdl/validators/enum-validator.d.ts +2 -2
  368. package/dist/types/jdl/validators/validator.d.ts +4 -1
  369. package/package.json +41 -41
@@ -44,7 +44,7 @@ public class <%= upperFirstCamelCaseBaseName %>KafkaResource {
44
44
  }
45
45
 
46
46
  @PostMapping("/publish")
47
- public Mono<ResponseEntity<Void>> publish(@RequestParam String message) {
47
+ public Mono<ResponseEntity<Void>> publish(@RequestParam("message") String message) {
48
48
  log.debug("REST request the message : {} to send to Kafka topic", message);
49
49
  streamBridge.send(PRODUCER_BINDING_NAME, message);
50
50
  return Mono.just(ResponseEntity.noContent().build());
@@ -35,9 +35,11 @@ import java.util.Map;
35
35
 
36
36
  import org.junit.jupiter.api.Test;
37
37
  import org.springframework.beans.factory.annotation.Autowired;
38
+ import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
38
39
  import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
39
40
  import org.springframework.cloud.stream.binder.test.InputDestination;
40
41
  import org.springframework.cloud.stream.binder.test.OutputDestination;
42
+ import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration;
41
43
  import org.springframework.http.MediaType;
42
44
  import org.springframework.messaging.Message;
43
45
  import org.springframework.messaging.MessageHeaders;
@@ -50,6 +52,7 @@ import org.springframework.util.MimeTypeUtils;
50
52
  @WithMockUser
51
53
  @EmbeddedKafka
52
54
  @IntegrationTest
55
+ @ImportAutoConfiguration(TestChannelBinderConfiguration.class)
53
56
  class <%= upperFirstCamelCaseBaseName %>KafkaResourceIT {
54
57
  private static String KAFKA_API = "/api/<%= dasherizedBaseName %>-kafka/{command}";
55
58
 
@@ -45,7 +45,7 @@
45
45
 
46
46
  <%_ for (const relationship of relationships) { -%>
47
47
  <&_ if (fragment.relationship<%- relationship.relationshipNameCapitalized %>AnnotationSection) { -&>
48
- <% // just break the cycle // in the reactive area, we already have the annotation in place
48
+ <% /* just break the cycle in the reactive area, we already have the annotation in place */
49
49
  if (!relationship.ownerSide && !reactive) { %>
50
50
  @org.springframework.data.annotation.Transient
51
51
  <% } %>
@@ -19,12 +19,10 @@
19
19
  package <%= entityAbsolutePackage %>.repository.search;
20
20
 
21
21
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
22
- import <%= entityAbsolutePackage %>.repository.<%= persistClass %>Repository;
22
+ import <%= entityAbsolutePackage %>.repository.<%= entityClass %>Repository;
23
23
 
24
24
  <%_ if (!paginationNo) { _%>
25
25
  <%_ if (!reactive) { _%>
26
- import java.util.List;
27
-
28
26
  import org.springframework.data.domain.Page;
29
27
  import org.springframework.data.domain.PageImpl;
30
28
  import org.springframework.data.elasticsearch.core.SearchHits;
@@ -19,7 +19,7 @@
19
19
  package <%= packageName %>.repository.search;
20
20
 
21
21
  import <%= user.entityAbsoluteClass %>;
22
- import <%= packageName %>.repository.<%= user.persistClass %>Repository;
22
+ import <%= packageName %>.repository.<%= user.entityClass %>Repository;
23
23
 
24
24
  <%_ if (reactive) { _%>
25
25
  import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchTemplate;
@@ -49,7 +49,7 @@ import java.util.UUID;
49
49
  import static org.springframework.data.elasticsearch.client.elc.QueryBuilders.queryStringQuery;
50
50
 
51
51
  /**
52
- * Spring Data Elasticsearch repository for the User entity.
52
+ * Spring Data Elasticsearch repository for the <%= user.persistClass %> entity.
53
53
  */
54
54
  public interface UserSearchRepository extends <% if (reactive) {%>Reactive<% } %>ElasticsearchRepository<<%= user.persistClass %>, <%= user.primaryKey.type %>>, UserSearchRepositoryInternal {
55
55
  }
@@ -70,7 +70,7 @@ class UserSearchRepositoryInternalImpl implements UserSearchRepositoryInternal {
70
70
  @Override
71
71
  public Flux<<%= user.persistClass %>> search(String query) {
72
72
  NativeQuery nativeQuery = new NativeQuery(QueryStringQuery.of(qs -> qs.query(query))._toQuery());
73
- return reactiveElasticsearchTemplate.search(nativeQuery, User.class).map(SearchHit::getContent);
73
+ return reactiveElasticsearchTemplate.search(nativeQuery, <%= user.persistClass %>.class).map(SearchHit::getContent);
74
74
  }
75
75
  }
76
76
  <%_ } else { _%>
@@ -105,7 +105,7 @@ class UserSearchRepositoryInternalImpl implements UserSearchRepositoryInternal {
105
105
  public Stream<<%= user.persistClass %>> search(String query) {
106
106
  NativeQuery nativeQuery = new NativeQuery(QueryStringQuery.of(qs -> qs.query(query))._toQuery());
107
107
  return elasticsearchTemplate
108
- .search(nativeQuery, User.class)
108
+ .search(nativeQuery, <%= user.persistClass %>.class)
109
109
  .map(SearchHit::getContent)
110
110
  .stream();
111
111
  }
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import BaseApplicationGenerator from '../base-application/index.mjs';
20
- import { GENERATOR_BOOTSTRAP_APPLICATION, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_NEO4J } from '../generator-list.mjs';
20
+ import { GENERATOR_BOOTSTRAP_APPLICATION, GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_NEO4J } from '../generator-list.mjs';
21
21
  import writeTask from './files.mjs';
22
22
  import cleanupTask from './cleanup.mjs';
23
23
  import writeEntitiesTask, { cleanupEntitiesTask } from './entity-files.mjs';
@@ -28,6 +28,8 @@ export default class Neo4jGenerator extends BaseApplicationGenerator {
28
28
  }
29
29
  if (!this.delegateToBlueprint) {
30
30
  await this.dependsOnJHipster(GENERATOR_BOOTSTRAP_APPLICATION);
31
+ const javaGenerator = await this.dependsOnJHipster(GENERATOR_JAVA);
32
+ javaGenerator.useJacksonIdentityInfo = true;
31
33
  }
32
34
  }
33
35
  get composing() {
@@ -57,6 +59,46 @@ export default class Neo4jGenerator extends BaseApplicationGenerator {
57
59
  get [BaseApplicationGenerator.PREPARING]() {
58
60
  return this.delegateTasksToBlueprint(() => this.preparing);
59
61
  }
62
+ get configuringEachEntity() {
63
+ return this.asConfiguringEachEntityTaskGroup({
64
+ async configuringEachEntity({ entityConfig }) {
65
+ if (entityConfig.dto && entityConfig.dto !== 'no') {
66
+ this.log.warn(`The DTO option is not supported for Neo4j database. Neo4j persists the entire constellation, DTO causes the constelation to be incomplete. DTO is found in entity ${entityConfig.name}.`);
67
+ }
68
+ },
69
+ });
70
+ }
71
+ get [BaseApplicationGenerator.CONFIGURING_EACH_ENTITY]() {
72
+ return this.delegateTasksToBlueprint(() => this.configuringEachEntity);
73
+ }
74
+ get preparingEachEntity() {
75
+ return this.asPreparingEachEntityTaskGroup({
76
+ prepareEntity({ entity }) {
77
+ entity.relationships.forEach(relationship => {
78
+ if (relationship.persistableRelationship === undefined) {
79
+ relationship.persistableRelationship = true;
80
+ }
81
+ });
82
+ },
83
+ });
84
+ }
85
+ get [BaseApplicationGenerator.PREPARING_EACH_ENTITY]() {
86
+ return this.delegateTasksToBlueprint(() => this.preparingEachEntity);
87
+ }
88
+ get default() {
89
+ return this.asDefaultTaskGroup({
90
+ async checkUserRelationship({ entities }) {
91
+ entities.forEach(entity => {
92
+ if (entity.relationships.some(relationship => relationship.otherEntity.builtInUser)) {
93
+ this.log.warn(`Relationship with User entity should be avoided for Neo4j database. Neo4j persists the entire constelation, related User entity will be updated causing security problems. Relationship with User entity is found in entity ${entity.name}.`);
94
+ }
95
+ });
96
+ },
97
+ });
98
+ }
99
+ get [BaseApplicationGenerator.DEFAULT]() {
100
+ return this.delegateTasksToBlueprint(() => this.default);
101
+ }
60
102
  get writing() {
61
103
  return this.asWritingTaskGroup({
62
104
  cleanupTask,
@@ -53,45 +53,11 @@ import org.springframework.data.neo4j.core.schema.Relationship;
53
53
  <%_ } -%>
54
54
 
55
55
  <%_ for (const relationship of relationships) { -%>
56
- <%_ const relationshipForwardReference = "HAS_" + this._.toUpper(this._.snakeCase(relationship.relationshipName)); %>
57
- <%_ const relationshipBackReference = "HAS_" + this._.toUpper(this._.snakeCase(relationship.otherEntityRelationshipName)); %>
58
56
  <&_ if (fragment.relationship<%- relationship.relationshipNameCapitalized %>AnnotationSection) { -&>
59
- <%_ if (relationship.ownerSide) { _%>
60
- @Relationship(value = "<%= relationshipBackReference %>", direction = Relationship.Direction.INCOMING)
57
+ <%_ if (relationship.relationshipLeftSide) { _%>
58
+ @Relationship(value = "HAS_<%= this._.toUpper(this._.snakeCase(relationship.relationshipName)) %>", direction = Relationship.Direction.OUTGOING)
61
59
  <%_ } else { _%>
62
- @Relationship("<%= relationshipForwardReference %>")
60
+ @Relationship(value = "HAS_<%= this._.toUpper(this._.snakeCase(relationship.otherRelationship.relationshipName)) %>", direction = Relationship.Direction.INCOMING)
63
61
  <%_ } _%>
64
62
  <&_ } -&>
65
63
  <%_ } -%>
66
-
67
- <%_ for (const relationship of relationships) { _%>
68
- <&_ if (fragment.relationship<%- relationship.relationshipNameCapitalized %>CustomAddSection) { -&>
69
- public <%= persistClass %> add<%= relationship.relationshipNameCapitalized %>(<%= relationship.otherEntity.persistClass %> <%= relationship.otherEntityName %>) {
70
- this.<%= relationship.relationshipFieldNamePlural %>.add(<%= relationship.otherEntityName %>);
71
- <%_ if (!relationship.otherEntity.embedded || embedded && relationship.ownerSide) { _%>
72
- <%_ if (relationship.otherRelationship) { _%>
73
- <%_ if (relationship.otherRelationship.relationshipNamePlural && !relationship.otherEntityUser && relationship.otherRelationship.collection) { _%>
74
- <%= relationship.otherEntityName %>.get<%= relationship.otherRelationship.relationshipNameCapitalizedPlural %>().add(this);
75
- <%_ } _%>
76
- <%_ } _%>
77
- <%_ } _%>
78
- return this;
79
- }
80
- <&_ } -&>
81
- <%_ } -%>
82
-
83
- <%_ for (const relationship of relationships) { _%>
84
- <&_ if (fragment.relationship<%- relationship.relationshipNameCapitalized %>CustomRemoveSection) { -&>
85
- public <%= persistClass %> remove<%= relationship.relationshipNameCapitalized %>(<%= relationship.otherEntity.persistClass %> <%= relationship.otherEntityName %>) {
86
- this.<%= relationship.relationshipFieldNamePlural %>.remove(<%= relationship.otherEntityName %>);
87
- <%_ if (!relationship.otherEntity.embedded || (embedded && relationship.ownerSide)) { _%>
88
- <%_ if (relationship.otherRelationship) { _%>
89
- <%_ if (!relationship.otherEntityUser && relationship.otherRelationship.collection) { _%>
90
- <%= relationship.otherEntityName %>.get<%= relationship.otherRelationship.relationshipNameCapitalizedPlural %>().remove(this);
91
- <%_ } _%>
92
- <%_ } _%>
93
- <%_ } _%>
94
- return this;
95
- }
96
- <&_ } -&>
97
- <%_ } _%>
@@ -0,0 +1,7 @@
1
+ # SQL/spring-data-relational sub-generador
2
+
3
+ Adds support to spring-data-relational and provides sql related utilities.
4
+
5
+ ## Customizing
6
+
7
+ Customizing basics can be found at [Customizing](../app/README.md#customizing)
@@ -24,7 +24,7 @@ import writeEntitiesTask, { cleanupEntitiesTask } from './entity-files.mjs';
24
24
  import { isReservedTableName } from '../../jdl/jhipster/reserved-keywords.js';
25
25
  import { databaseTypes } from '../../jdl/jhipster/index.mjs';
26
26
  import { getDBCExtraOption, getJdbcUrl, getR2dbcUrl } from './support/index.mjs';
27
- import { getCommonMavenDefinition, getDatabaseTypeMavenDefinition, getH2MavenDefinition, getImperativeMavenDefinition, getReactiveMavenDefinition, } from './internal/dependencies.mjs';
27
+ import { getCommonMavenDefinition, getDatabaseDriverForDatabase, getDatabaseTypeMavenDefinition, getH2MavenDefinition, getImperativeMavenDefinition, getReactiveMavenDefinition, } from './internal/dependencies.mjs';
28
28
  import command from './command.mjs';
29
29
  const { SQL } = databaseTypes;
30
30
  export default class SqlGenerator extends BaseApplicationGenerator {
@@ -62,6 +62,7 @@ export default class SqlGenerator extends BaseApplicationGenerator {
62
62
  const anyApp = application;
63
63
  anyApp.devDatabaseExtraOptions = getDBCExtraOption(anyApp.devDatabaseType);
64
64
  anyApp.prodDatabaseExtraOptions = getDBCExtraOption(anyApp.prodDatabaseType);
65
+ anyApp.prodDatabaseDriver = getDatabaseDriverForDatabase(application.prodDatabaseType);
65
66
  },
66
67
  });
67
68
  }
@@ -22,6 +22,27 @@ const testcontainerFileForDB = {
22
22
  mysql: 'MysqlTestContainer.java',
23
23
  postgresql: 'PostgreSqlTestContainer.java',
24
24
  };
25
+ const databaseArtifactForDB = {
26
+ mariadb: {
27
+ jdbc: { groupId: 'org.mariadb.jdbc', artifactId: 'mariadb-java-client' },
28
+ // maria-r2dbc driver is failing.
29
+ // r2dbc: { groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb' },
30
+ r2dbc: { groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' },
31
+ },
32
+ mssql: {
33
+ jdbc: { groupId: 'com.microsoft.sqlserver', artifactId: 'mssql-jdbc' },
34
+ r2dbc: { groupId: 'io.r2dbc', artifactId: 'r2dbc-mssql' },
35
+ },
36
+ mysql: {
37
+ jdbc: { groupId: 'com.mysql', artifactId: 'mysql-connector-j' },
38
+ r2dbc: { groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' },
39
+ },
40
+ postgresql: {
41
+ jdbc: { groupId: 'org.postgresql', artifactId: 'postgresql' },
42
+ r2dbc: { groupId: 'org.postgresql', artifactId: 'r2dbc-postgresql' },
43
+ },
44
+ };
45
+ export const getDatabaseDriverForDatabase = (databaseType) => databaseArtifactForDB[databaseType];
25
46
  export const getCommonMavenDefinition = ({ javaDependencies }) => ({
26
47
  properties: [
27
48
  { property: 'jaxb-runtime.version', value: javaDependencies['jaxb-runtime'] },
@@ -98,34 +119,34 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile }) => {
98
119
  mariadb: {
99
120
  jdbc: {
100
121
  dependencies: [
101
- { inProfile, groupId: 'org.mariadb.jdbc', artifactId: 'mariadb-java-client' },
122
+ { inProfile, ...databaseArtifactForDB.mariadb.jdbc },
102
123
  { groupId: 'org.testcontainers', artifactId: 'mariadb', scope: 'test' },
103
124
  ],
104
125
  },
105
126
  r2dbc: {
106
- dependencies: [{ inProfile, groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb' }],
127
+ dependencies: [{ inProfile, ...databaseArtifactForDB.mariadb.r2dbc }],
107
128
  },
108
129
  },
109
130
  mssql: {
110
131
  jdbc: {
111
132
  dependencies: [
112
- { inProfile, groupId: 'com.microsoft.sqlserver', artifactId: 'mssql-jdbc' },
133
+ { inProfile, ...databaseArtifactForDB.mssql.jdbc },
113
134
  { groupId: 'org.testcontainers', artifactId: 'mssqlserver', scope: 'test' },
114
135
  ],
115
136
  },
116
137
  r2dbc: {
117
- dependencies: [{ inProfile, groupId: 'io.r2dbc', artifactId: 'r2dbc-mssql' }],
138
+ dependencies: [{ inProfile, ...databaseArtifactForDB.mssql.r2dbc }],
118
139
  },
119
140
  },
120
141
  mysql: {
121
142
  jdbc: {
122
143
  dependencies: [
123
- { inProfile, groupId: 'com.mysql', artifactId: 'mysql-connector-j' },
144
+ { inProfile, ...databaseArtifactForDB.mysql.jdbc },
124
145
  { groupId: 'org.testcontainers', artifactId: 'mysql', scope: 'test' },
125
146
  ],
126
147
  },
127
148
  r2dbc: {
128
- dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' }],
149
+ dependencies: [{ inProfile, ...databaseArtifactForDB.mysql.r2dbc }],
129
150
  },
130
151
  },
131
152
  oracle: {
@@ -140,12 +161,12 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile }) => {
140
161
  postgresql: {
141
162
  jdbc: {
142
163
  dependencies: [
143
- { inProfile, groupId: 'org.postgresql', artifactId: 'postgresql' },
164
+ { inProfile, ...databaseArtifactForDB.postgresql.jdbc },
144
165
  { groupId: 'org.testcontainers', artifactId: 'postgresql', scope: 'test' },
145
166
  ],
146
167
  },
147
168
  r2dbc: {
148
- dependencies: [{ inProfile, groupId: 'org.postgresql', artifactId: 'r2dbc-postgresql' }],
169
+ dependencies: [{ inProfile, ...databaseArtifactForDB.postgresql.r2dbc }],
149
170
  },
150
171
  },
151
172
  };
@@ -75,6 +75,10 @@ const databaseData = {
75
75
  defaultUsername: 'root',
76
76
  constraintNameMaxLength: 64,
77
77
  tableNameMaxLength: 64,
78
+ r2dbc: {
79
+ // TODO switch to mariadb if r2dbc-mariadb is reinstated
80
+ protocolSuffix: 'mysql://',
81
+ },
78
82
  },
79
83
  [MYSQL]: {
80
84
  name: 'MySQL',
@@ -21,27 +21,22 @@ package <%= packageName %>.repository;
21
21
  import java.util.ArrayList;
22
22
  import java.util.Collection;
23
23
  import java.util.List;
24
- import java.util.Map;
25
- import java.util.Map.Entry;
26
24
  import java.util.stream.Stream;
27
25
 
28
26
  import org.springframework.data.domain.Pageable;
29
27
  import org.springframework.data.domain.Sort;
30
- import org.springframework.data.r2dbc.convert.R2dbcConverter;
31
28
  import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
32
29
  import org.springframework.data.r2dbc.core.StatementMapper;
33
- import org.springframework.data.r2dbc.mapping.OutboundRow;
34
30
  import org.springframework.data.r2dbc.query.UpdateMapper;
31
+ import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
35
32
  import org.springframework.data.relational.core.query.Criteria;
36
33
  import org.springframework.data.relational.core.sql.Condition;
37
- import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
38
- import org.springframework.data.relational.core.sql.Conditions;
34
+ import org.springframework.data.relational.core.sql.Column;
39
35
  import org.springframework.data.relational.core.sql.OrderByField;
40
36
  import org.springframework.data.relational.core.sql.Select;
41
37
  import org.springframework.data.relational.core.sql.SelectBuilder.SelectFromAndJoin;
42
38
  import org.springframework.data.relational.core.sql.SelectBuilder.SelectFromAndJoinCondition;
43
39
  import org.springframework.data.relational.core.sql.SelectBuilder.SelectOrdered;
44
- import org.springframework.data.relational.core.sql.SqlIdentifier;
45
40
  import org.springframework.data.relational.core.sql.Table;
46
41
  import org.springframework.data.relational.core.sql.render.SqlRenderer;
47
42
  import org.springframework.r2dbc.core.Parameter;
@@ -240,11 +235,57 @@ public class EntityManager {
240
235
  for (Sort.Order order : sortToUse) {
241
236
 
242
237
  String propertyName = order.getProperty();
243
- OrderByField orderByField = OrderByField.from(table.column(propertyName).as(EntityManager.ALIAS_PREFIX + propertyName));
238
+ OrderByField orderByField = !propertyName.contains(".")
239
+ ? OrderByField.from(table.column(propertyName).as(EntityManager.ALIAS_PREFIX + propertyName))
240
+ : createOrderByField(propertyName);
244
241
 
245
242
  fields.add(order.isAscending() ? orderByField.asc() : orderByField.desc());
246
243
  }
247
244
 
248
245
  return fields;
249
246
  }
247
+
248
+ /**
249
+ * Creates an OrderByField instance for sorting a query by the specified property.
250
+ *
251
+ * @param propertyName The full property name in the format "tableName.columnName".
252
+ * @return An OrderByField instance for sorting by the specified property.
253
+ */
254
+ private static OrderByField createOrderByField(String propertyName) {
255
+ // Split the propertyName into table name and column name
256
+ String[] parts = propertyName.split("\\.");
257
+ String tableName = parts[0];
258
+ String columnName = parts[1];
259
+
260
+ // Create and return an OrderByField instance
261
+ return OrderByField.from(
262
+ // Create a column with the given name and alias it with the table name and column name
263
+ Column.aliased(
264
+ columnName,
265
+ // Create a table alias with the same name as the table
266
+ Table.aliased(camelCaseToSnakeCase(tableName), tableName),
267
+ // Use a composite alias of "tableName_columnName"
268
+ String.format("%s_%s", tableName, columnName)
269
+ )
270
+ );
271
+ }
272
+
273
+ /**
274
+ * Converts a camel case string to snake case.
275
+ *
276
+ * @param input The camel case string to be converted to snake case.
277
+ * @return The input string converted to snake case.
278
+ */
279
+ public static String camelCaseToSnakeCase(String input) {
280
+ // Regular Expression
281
+ String regex = "([a-z])([A-Z]+)";
282
+
283
+ // Replacement string
284
+ String replacement = "$1_$2";
285
+
286
+ // Replace the given regex
287
+ // with replacement string
288
+ // and convert it to lower case.
289
+ return input.replaceAll(regex, replacement).toLowerCase();
290
+ }
250
291
  }
@@ -69,7 +69,7 @@ public class SqlTestContainersSpringContextCustomizerFactory implements ContextC
69
69
  }
70
70
  }
71
71
  <%_ if (reactive) { _%>
72
- testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
72
+ testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMariadb) { %>.replace("mariadb", "mysql")<% } else if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
73
73
  testValues = testValues.and("spring.r2dbc.username=" + prodTestContainer.getTestContainer().getUsername());
74
74
  testValues = testValues.and("spring.r2dbc.password=" + prodTestContainer.getTestContainer().getPassword());
75
75
  testValues = testValues.and("spring.liquibase.url=" + prodTestContainer.getTestContainer().getJdbcUrl() + "<%- prodDatabaseExtraOptions %>");
@@ -152,11 +152,11 @@ export default class UpgradeGenerator extends BaseGenerator {
152
152
  const noPackageLockParam = '--no-package-lock';
153
153
  const generatorCommand = `${commandPrefix} ${npmPackage}@${version} ${devDependencyParam} ${noPackageLockParam} --ignore-scripts --force`;
154
154
  this.log.verboseInfo(generatorCommand);
155
- const npmIntall = this.spawnCommandSync(generatorCommand, { stdio: 'pipe', reject: false });
156
- if (npmIntall.exitCode === 0)
155
+ const npmInstall = this.spawnCommandSync(generatorCommand, { stdio: 'pipe', reject: false });
156
+ if (npmInstall.exitCode === 0)
157
157
  this.log.ok(`Installed ${npmPackage}@${version}`);
158
158
  else
159
- throw new Error(`Something went wrong while installing ${npmPackage}! ${npmIntall.stdout} ${npmIntall.stderr}`);
159
+ throw new Error(`Something went wrong while installing ${npmPackage}! ${npmInstall.stdout} ${npmInstall.stderr}`);
160
160
  }
161
161
  get [BaseGenerator.CONFIGURING]() {
162
162
  return this.asConfiguringTaskGroup({
@@ -19,7 +19,7 @@
19
19
  import { relative } from 'path';
20
20
  import chalk from 'chalk';
21
21
  import * as _ from 'lodash-es';
22
- import { isFilePending } from 'mem-fs-editor/state';
22
+ import { isFileStateModified } from 'mem-fs-editor/state';
23
23
  import BaseApplicationGenerator from '../base-application/index.mjs';
24
24
  import { fieldTypes, clientFrameworkTypes } from '../../jdl/jhipster/index.mjs';
25
25
  import { GENERATOR_VUE, GENERATOR_CLIENT, GENERATOR_LANGUAGES } from '../generator-list.mjs';
@@ -86,6 +86,30 @@ export default class VueGenerator extends BaseApplicationGenerator {
86
86
  get [BaseApplicationGenerator.PREPARING_EACH_ENTITY]() {
87
87
  return this.delegateTasksToBlueprint(() => this.preparingEachEntity);
88
88
  }
89
+ get default() {
90
+ return this.asDefaultTaskGroup({
91
+ async queueTranslateTransform({ control, application }) {
92
+ const { enableTranslation, clientSrcDir } = application;
93
+ const { getWebappTranslation } = control;
94
+ this.queueTransformStream({
95
+ name: 'translating vue application',
96
+ filter: file => isFileStateModified(file) && file.path.startsWith(this.destinationPath()) && isTranslatedVueFile(file),
97
+ refresh: false,
98
+ }, translateVueFilesTransform.call(this, { enableTranslation, getWebappTranslation }));
99
+ if (enableTranslation) {
100
+ const { transform, isTranslationFile } = convertTranslationsSupport({ clientSrcDir });
101
+ this.queueTransformStream({
102
+ name: 'converting vue translations',
103
+ filter: file => isFileStateModified(file) && file.path.startsWith(this.destinationPath()) && isTranslationFile(file),
104
+ refresh: false,
105
+ }, transform);
106
+ }
107
+ },
108
+ });
109
+ }
110
+ get [BaseApplicationGenerator.DEFAULT]() {
111
+ return this.asDefaultTaskGroup(this.delegateTasksToBlueprint(() => this.default));
112
+ }
89
113
  get writing() {
90
114
  return this.asWritingTaskGroup({
91
115
  cleanupOldFilesTask,
@@ -100,21 +124,6 @@ export default class VueGenerator extends BaseApplicationGenerator {
100
124
  cleanupEntitiesFiles,
101
125
  writeEntitiesFiles,
102
126
  writeEntityFiles,
103
- async queueTranslateTransform({ control, application }) {
104
- const { enableTranslation, clientSrcDir } = application;
105
- const { getWebappTranslation } = control;
106
- this.queueTransformStream(translateVueFilesTransform.call(this, { enableTranslation, getWebappTranslation }), {
107
- name: 'translating webapp',
108
- streamOptions: { filter: file => isFilePending(file) && isTranslatedVueFile(file) },
109
- });
110
- if (enableTranslation) {
111
- const { transform, isTranslationFile } = convertTranslationsSupport({ clientSrcDir });
112
- this.queueTransformStream(transform, {
113
- name: 'converting translations',
114
- streamOptions: { filter: file => isFilePending(file) && isTranslationFile(file) },
115
- });
116
- }
117
- },
118
127
  });
119
128
  }
120
129
  get [BaseApplicationGenerator.WRITING_ENTITIES]() {
@@ -1,32 +1,33 @@
1
1
  {
2
2
  "dependencies": {
3
- "@fortawesome/fontawesome-svg-core": "6.4.2",
4
- "@fortawesome/free-solid-svg-icons": "6.4.2",
5
- "@fortawesome/vue-fontawesome": "3.0.3",
3
+ "@fortawesome/fontawesome-svg-core": "6.5.1",
4
+ "@fortawesome/free-solid-svg-icons": "6.5.1",
5
+ "@fortawesome/vue-fontawesome": "3.0.5",
6
6
  "@vuelidate/core": "2.0.3",
7
7
  "@vuelidate/validators": "2.0.4",
8
- "@vueuse/core": "10.5.0",
9
- "axios": "1.5.1",
8
+ "@vueuse/core": "10.7.0",
9
+ "axios": "1.6.2",
10
10
  "bootstrap": "4.6.2",
11
11
  "bootstrap-vue": "2.23.1",
12
12
  "bootswatch": "5.3.2",
13
13
  "deepmerge": "4.3.1",
14
14
  "js-cookie": "3.0.5",
15
- "pinia": "2.1.6",
16
- "vue": "3.3.4",
17
- "vue-i18n": "9.5.0",
15
+ "pinia": "2.1.7",
16
+ "vue": "3.3.11",
17
+ "vue-i18n": "9.8.0",
18
18
  "vue-router": "4.2.5"
19
19
  },
20
20
  "devDependencies": {
21
+ "@module-federation/utilities": "3.0.3-0",
21
22
  "@pinia/testing": "0.1.3",
22
- "@rushstack/eslint-patch": "1.5.1",
23
+ "@rushstack/eslint-patch": "1.6.0",
23
24
  "@tsconfig/node18": "18.2.2",
24
- "@types/node": "18.18.5",
25
- "@types/sinon": "10.0.19",
26
- "@vitejs/plugin-vue": "4.4.0",
25
+ "@types/node": "18.19.3",
26
+ "@types/sinon": "17.0.2",
27
+ "@vitejs/plugin-vue": "4.5.2",
27
28
  "@vue/eslint-config-prettier": "8.0.0",
28
29
  "@vue/eslint-config-typescript": "10.0.0",
29
- "@vue/test-utils": "2.4.1",
30
+ "@vue/test-utils": "2.4.3",
30
31
  "@vue/tsconfig": "0.4.0",
31
32
  "autoprefixer": "10.4.16",
32
33
  "axios-mock-adapter": "1.22.0",
@@ -34,13 +35,13 @@
34
35
  "copy-webpack-plugin": "11.0.0",
35
36
  "css-loader": "6.8.1",
36
37
  "css-minimizer-webpack-plugin": "5.0.1",
37
- "eslint": "8.51.0",
38
+ "eslint": "8.55.0",
38
39
  "eslint-plugin-prettier": "5.0.1",
39
40
  "eslint-plugin-vue": "8.7.1",
40
41
  "flush-promises": "1.0.2",
41
42
  "folder-hash": "4.0.4",
42
- "happy-dom": "12.9.1",
43
- "html-webpack-plugin": "5.5.3",
43
+ "happy-dom": "12.10.3",
44
+ "html-webpack-plugin": "5.5.4",
44
45
  "merge-jsons-webpack-plugin": "2.0.1",
45
46
  "mini-css-extract-plugin": "2.7.6",
46
47
  "numeral": "2.0.6",
@@ -49,23 +50,23 @@
49
50
  "postcss-url": "10.1.3",
50
51
  "rimraf": "5.0.5",
51
52
  "rollup-plugin-copy": "3.5.0",
52
- "sass": "1.69.3",
53
+ "sass": "1.69.5",
53
54
  "sass-loader": "13.3.2",
54
- "sinon": "16.1.0",
55
+ "sinon": "17.0.1",
55
56
  "terser-webpack-plugin": "5.3.9",
56
- "ts-loader": "9.5.0",
57
- "typescript": "5.2.2",
58
- "vite": "4.4.11",
59
- "vitest": "0.34.6",
60
- "vitest-sonar-reporter": "0.4.1",
61
- "vue-loader": "17.3.0",
57
+ "ts-loader": "9.5.1",
58
+ "typescript": "5.3.3",
59
+ "vite": "5.0.7",
60
+ "vitest": "1.0.4",
61
+ "vitest-sonar-reporter": "1.0.0",
62
+ "vue-loader": "17.3.1",
62
63
  "vue-style-loader": "4.1.3",
63
- "vue-tsc": "1.8.19",
64
- "webpack": "5.88.2",
65
- "webpack-bundle-analyzer": "4.9.1",
64
+ "vue-tsc": "1.8.25",
65
+ "webpack": "5.89.0",
66
+ "webpack-bundle-analyzer": "4.10.1",
66
67
  "webpack-cli": "5.1.4",
67
68
  "webpack-dev-server": "4.15.1",
68
- "webpack-merge": "5.9.0",
69
+ "webpack-merge": "5.10.0",
69
70
  "workbox-webpack-plugin": "7.0.0"
70
71
  }
71
72
  }
@@ -55,6 +55,9 @@
55
55
  "vue-router": "<%= nodeDependencies['vue-router'] %>"
56
56
  },
57
57
  "devDependencies": {
58
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
59
+ "@module-federation/utilities": "<%= nodeDependencies['@module-federation/utilities'] %>",
60
+ <%_ } _%>
58
61
  <%_ if (microfrontend) { _%>
59
62
  "@originjs/vite-plugin-federation": "1.2.3",
60
63
  "browser-sync-webpack-plugin": "<%= nodeDependencies['browser-sync-webpack-plugin'] %>",
@@ -99,11 +102,6 @@
99
102
  "numeral": "<%= nodeDependencies['numeral'] %>",
100
103
  "postcss-import": "<%= nodeDependencies['postcss-import'] %>",
101
104
  "postcss-url": "<%= nodeDependencies['postcss-url'] %>",
102
- "prettier": "<%= nodeDependencies['prettier'] %>",
103
- <%_ if (!skipServer) { _%>
104
- "prettier-plugin-java": "<%= nodeDependencies['prettier-plugin-java'] %>",
105
- <%_ } _%>
106
- "prettier-plugin-packagejson": "<%= nodeDependencies['prettier-plugin-packagejson'] %>",
107
105
  <%_ if (cypressTests) { _%>
108
106
  "cypress": "<%= nodeDependencies['cypress'] %>",
109
107
  <%_ } _%>
@@ -158,6 +156,7 @@
158
156
  <%_ } else { %>
159
157
  "webapp:build:dev": "<%= clientPackageManager %> run vite-build",
160
158
  "webapp:build:prod": "<%= clientPackageManager %> run vite-build",
159
+ "webapp:dev": "<%= clientPackageManager %> run vite-serve",
161
160
  "webapp:serve": "<%= clientPackageManager %> run vite-serve",
162
161
  <%_ } %>
163
162
  "webapp:prod": "<%= clientPackageManager %> run clean-www && <%= clientPackageManager %> run webapp:build:prod --",