generator-jhipster 8.0.0 → 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 (258) hide show
  1. package/README.md +61 -57
  2. package/dist/cli/environment-builder.mjs +11 -4
  3. package/dist/cli/program.mjs +1 -1
  4. package/dist/generators/angular/cleanup.mjs +7 -0
  5. package/dist/generators/angular/files-angular.mjs +3 -4
  6. package/dist/generators/angular/generator.mjs +2 -15
  7. package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
  8. package/dist/generators/angular/resources/package.json +23 -23
  9. package/dist/generators/angular/support/translate-angular.mjs +2 -2
  10. package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
  11. package/dist/generators/angular/templates/angular.json.ejs +3 -7
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
  20. package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
  21. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
  41. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
  42. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
  43. package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
  44. package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
  45. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
  46. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
  48. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
  49. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
  50. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
  51. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +38 -25
  52. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
  53. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
  54. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
  58. package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
  59. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
  60. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
  61. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
  62. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
  63. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
  64. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
  65. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  66. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
  67. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
  68. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
  69. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
  70. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
  71. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
  72. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
  73. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
  74. package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
  75. package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
  76. package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +2 -2
  77. package/dist/generators/app/README.md +108 -0
  78. package/dist/generators/app/USAGE +3 -0
  79. package/dist/generators/app/command.mjs +3 -3
  80. package/dist/generators/app/generator.mjs +11 -0
  81. package/dist/generators/base/command.mjs +0 -11
  82. package/dist/generators/base-application/generator.mjs +5 -6
  83. package/dist/generators/base-application/support/entities.mjs +2 -2
  84. package/dist/generators/base-application/support/index.mjs +1 -0
  85. package/dist/generators/base-application/support/prepare-entity.mjs +0 -1
  86. package/dist/generators/base-application/support/prepare-relationship.mjs +4 -0
  87. package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
  88. package/dist/generators/base-core/generator.mjs +17 -4
  89. package/dist/generators/base-entity-changes/generator.mjs +1 -1
  90. package/dist/generators/bootstrap/command.mjs +6 -0
  91. package/dist/generators/bootstrap/generator.mjs +27 -9
  92. package/dist/generators/bootstrap-application/generator.mjs +1 -19
  93. package/dist/generators/bootstrap-application-base/command.mjs +30 -0
  94. package/dist/generators/bootstrap-application-base/generator.mjs +27 -5
  95. package/dist/generators/bootstrap-application-base/index.mjs +1 -0
  96. package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
  97. package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
  98. package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
  99. package/dist/generators/client/command.mjs +2 -0
  100. package/dist/generators/client/resources/package.json +4 -4
  101. package/dist/generators/client/support/entity-definition.mjs +3 -3
  102. package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
  103. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
  104. package/dist/generators/common/command.mjs +2 -0
  105. package/dist/generators/common/resources/package.json +3 -3
  106. package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
  107. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
  108. package/dist/generators/docker/generator.mjs +1 -1
  109. package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
  110. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
  111. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
  112. package/dist/generators/docker-compose/generator.mjs +4 -11
  113. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
  114. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
  115. package/dist/generators/export-jdl/generator.mjs +1 -1
  116. package/dist/generators/feign-client/cleanup.mjs +12 -0
  117. package/dist/generators/feign-client/files.mjs +35 -0
  118. package/dist/generators/feign-client/generator.mjs +65 -0
  119. package/dist/generators/feign-client/index.mjs +19 -0
  120. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
  121. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
  122. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
  123. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
  124. package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
  125. package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
  126. package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
  127. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
  128. package/dist/generators/generate-blueprint/command.mjs +1 -1
  129. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  130. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
  131. package/dist/generators/generator-constants.mjs +9 -5
  132. package/dist/generators/generator-list.mjs +1 -0
  133. package/dist/generators/git/generator.mjs +3 -5
  134. package/dist/generators/gradle/constants.mjs +1 -1
  135. package/dist/generators/java/command.mjs +6 -0
  136. package/dist/generators/java/entity-files.mjs +4 -0
  137. package/dist/generators/java/generator.mjs +3 -2
  138. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
  139. package/dist/generators/jdl/generator.mjs +18 -23
  140. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
  141. package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
  142. package/dist/generators/languages/generator.mjs +24 -15
  143. package/dist/generators/languages/prompts.mjs +3 -1
  144. package/dist/generators/languages/support/translate.mjs +1 -1
  145. package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
  146. package/dist/generators/liquibase/README.md +19 -0
  147. package/dist/generators/project-name/generator.mjs +14 -19
  148. package/dist/generators/project-name/support/name-resolver.mjs +35 -6
  149. package/dist/generators/react/resources/package.json +24 -24
  150. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
  151. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
  152. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +12 -13
  153. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
  154. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
  155. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +1 -1
  156. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
  157. package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
  158. package/dist/generators/server/cleanup.mjs +5 -0
  159. package/dist/generators/server/command.mjs +13 -2
  160. package/dist/generators/server/entity-files.mjs +3 -3
  161. package/dist/generators/server/files.mjs +2 -38
  162. package/dist/generators/server/generator.mjs +35 -19
  163. package/dist/generators/server/jdl/application-definition.mjs +5 -2
  164. package/dist/generators/server/options/feign-client.mjs +24 -0
  165. package/dist/generators/server/options/index.mjs +1 -0
  166. package/dist/generators/server/resources/Dockerfile +16 -16
  167. package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
  168. package/dist/generators/server/resources/pom.xml +11 -11
  169. package/dist/generators/server/support/config.mjs +1 -0
  170. package/dist/generators/server/support/prepare-entity.mjs +4 -1
  171. package/dist/generators/server/templates/build.gradle.ejs +1 -2
  172. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
  173. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
  174. package/dist/generators/server/templates/pom.xml.ejs +1 -4
  175. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +7 -7
  176. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
  177. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
  178. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
  179. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +3 -3
  180. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +20 -2
  181. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +4 -1
  182. package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
  183. package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -12
  184. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
  185. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
  186. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
  187. package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +3 -3
  188. package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -6
  189. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
  190. package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
  191. package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +8 -8
  192. package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
  193. package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
  194. package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
  195. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
  196. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
  197. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
  198. package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
  199. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
  200. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -1
  201. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
  202. package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
  203. package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +1 -1
  204. package/dist/generators/spring-data-relational/README.md +7 -0
  205. package/dist/generators/spring-data-relational/generator.mjs +2 -1
  206. package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
  207. package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
  208. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
  209. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
  210. package/dist/generators/upgrade/generator.mjs +3 -3
  211. package/dist/generators/vue/resources/package.json +21 -21
  212. package/dist/generators/vue/templates/package.json.ejs +1 -0
  213. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
  214. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
  215. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
  216. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
  217. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +2 -7
  218. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
  219. package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
  220. package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
  221. package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
  222. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
  223. package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
  224. package/dist/jdl/jhipster/default-application-options.js +1 -1
  225. package/dist/jdl/jhipster/field-types.js +1 -1
  226. package/dist/jdl/jhipster/json-entity.js +6 -0
  227. package/dist/jdl/models/jdl-entity.js +16 -1
  228. package/dist/jdl/models/jdl-field.js +13 -0
  229. package/dist/jdl/models/jdl-object.js +3 -3
  230. package/dist/jdl/models/jdl-relationship.js +23 -5
  231. package/dist/jdl/parsing/lexer/application-tokens.js +1 -1
  232. package/dist/testing/helpers.mjs +10 -3
  233. package/dist/types/cli/environment-builder.d.mts +2 -0
  234. package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
  235. package/dist/types/generators/base/api.d.mts +12 -0
  236. package/dist/types/generators/base/support/needles.d.mts +1 -1
  237. package/dist/types/generators/base-application/generator.d.mts +2 -2
  238. package/dist/types/generators/base-application/support/index.d.mts +1 -0
  239. package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
  240. package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
  241. package/dist/types/generators/base-core/generator.d.mts +7 -1
  242. package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
  243. package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
  244. package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
  245. package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
  246. package/dist/types/generators/feign-client/types-export.d.ts +1 -0
  247. package/dist/types/generators/generator-constants.d.mts +52 -48
  248. package/dist/types/generators/generator-list.d.mts +1 -0
  249. package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
  250. package/dist/types/generators/server/options/feign-client.d.mts +21 -0
  251. package/dist/types/generators/server/options/index.d.mts +1 -0
  252. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
  253. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
  254. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
  255. package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
  256. package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
  257. package/dist/types/jdl/types/types.d.mts +2 -2
  258. package/package.json +27 -27
@@ -114,14 +114,13 @@ _%>
114
114
  </dd>
115
115
  <%_ } _%>
116
116
  <%_ for (relationship of relationships) {
117
- const ownerSide = relationship.ownerSide;
118
117
  const relationshipName = relationship.relationshipName;
119
118
  const relationshipFieldName = relationship.relationshipFieldName;
120
119
  const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
121
120
  const relationshipNameHumanized = relationship.relationshipNameHumanized;
122
121
  const otherEntityPkName = relationship.otherEntity.primaryKey && relationship.otherEntity.primaryKey.name || 'id';
123
122
  const otherEntityField = relationship.otherEntityField; _%>
124
- <%_ if (ownerSide) { _%>
123
+ <%_ if (relationship.persistableRelationship) { _%>
125
124
  <dt>
126
125
  <Translate contentKey="<%= i18nKeyPrefix %>.<%= relationshipName %>">
127
126
  <%= relationshipNameHumanized %>
@@ -50,16 +50,16 @@ let uniqueRelationFields = new Set();
50
50
 
51
51
  Object.keys(differentRelationships).forEach(key => {
52
52
 
53
- const hasAnyRelationshipQuery = differentRelationships[key].some(rel =>
54
- (rel.relationshipOneToOne && rel.ownerSide && !rel.otherEntityUser)
55
- || !rel.relationshipOneToMany);
53
+ const hasAnyRelationshipQuery = differentRelationships[key].some(rel => rel.persistableRelationship);
56
54
  if (hasAnyRelationshipQuery) {
57
55
  hasRelationshipQuery = true;
58
56
  differentRelationships[key].forEach(rel => {
59
- if (rel.relationshipManyToMany && rel.ownerSide) {
60
- manyToManyOwners.add(rel);
61
- } else {
62
- relFieldNames.add(rel);
57
+ if (rel.persistableRelationship) {
58
+ if (rel.relationshipManyToMany) {
59
+ manyToManyOwners.add(rel);
60
+ } else {
61
+ relFieldNames.add(rel);
62
+ }
63
63
  }
64
64
  });
65
65
  }
@@ -169,7 +169,7 @@ _%>
169
169
  <%= rel.relationshipFieldNamePlural %>: mapIdList(values.<%= rel.relationshipFieldNamePlural %>),
170
170
  <%_ }) _%>
171
171
  <%_ relFieldNames.forEach(rel => { _%>
172
- <%_ if (rel.relationshipManyToOne || (rel.ownerSide && rel.relationshipOneToOne)) { _%>
172
+ <%_ if (rel.persistableRelationship && !rel.collection) { _%>
173
173
  <%= rel.relationshipFieldName %>: <%= rel.otherEntityNamePlural %>.find(it => it.<%= rel.otherEntity.primaryKey.name %>.toString() === values.<%= rel.relationshipFieldName %>.toString()),
174
174
  <%_ } _%>
175
175
  <%_ }) _%>
@@ -213,9 +213,9 @@ _%>
213
213
  const otherEntityPkName = rel.otherEntity.primaryKey && rel.otherEntity.primaryKey.name || 'id';
214
214
  const relationshipFieldName = rel.relationshipFieldName;
215
215
  const relationshipFieldNamePlural = rel.relationshipFieldNamePlural;
216
- if (rel.relationshipManyToOne || (rel.relationshipOneToOne && rel.ownerSide)) { _%>
216
+ if (rel.persistableRelationship && !rel.collection) { _%>
217
217
  <%= relationshipFieldName %>: <%= entityInstance %>Entity?.<%= relationshipFieldName %>?.<%= otherEntityPkName %>,
218
- <%_ } else if (rel.relationshipManyToMany && rel.ownerSide) { _%>
218
+ <%_ } else if (rel.persistableRelationship) { _%>
219
219
  <%= relationshipFieldNamePlural %>: <%= entityInstance %>Entity?.<%= relationshipFieldNamePlural %>?.map(e => e.<%= otherEntityPkName %>.toString()),
220
220
  <%_ } _%>
221
221
  <%_ }) _%>
@@ -321,7 +321,6 @@ _%>
321
321
  <%_ } _%>
322
322
  <%_ } _%>
323
323
  <%_ relationships.forEach(rel => {
324
- const ownerSide = rel.ownerSide;
325
324
  const otherEntityPkName = rel.otherEntity.primaryKey && rel.otherEntity.primaryKey.name || 'id';
326
325
  const otherEntityNamePlural = rel.otherEntityNamePlural;
327
326
  const relationshipName = rel.relationshipName;
@@ -331,7 +330,7 @@ _%>
331
330
  const otherEntityField = rel.otherEntityField;
332
331
  const relationshipRequired = rel.relationshipRequired;
333
332
  const translationKey = `${i18nKeyPrefix}.${relationshipName}`; _%>
334
- <%_ if (rel.relationshipManyToOne || (rel.relationshipOneToOne && ownerSide)) { _%>
333
+ <%_ if (rel.persistableRelationship && !rel.collection) { _%>
335
334
  <ValidatedField
336
335
  id="<%= entityFileName %>-<%= relationshipName %>"
337
336
  name="<%= relationshipFieldName %>"
@@ -360,7 +359,7 @@ _%>
360
359
  <%_ if (relationshipRequired) { _%>
361
360
  <FormText><Translate contentKey="entity.validation.required">This field is required.</Translate></FormText>
362
361
  <%_ } _%>
363
- <%_ } else if (rel.relationshipManyToMany && rel.ownerSide) { _%>
362
+ <%_ } else if (rel.persistableRelationship) { _%>
364
363
  <ValidatedField
365
364
  <%_ if (enableTranslation) { _%>
366
365
  label={translate('<%= i18nKeyPrefix %>.<%= relationshipName %>')}
@@ -376,9 +376,7 @@ export const <%= entityReactName %> = () => {
376
376
  <th className="hand" onClick={sort('<%= field.fieldName %>')} ><Translate contentKey="<%= `${i18nKeyPrefix}.${field.fieldName}` %>"><%= field.fieldNameHumanized %></Translate> <FontAwesomeIcon icon={getSortIconByFieldName('<%= field.fieldName %>')} /></th>
377
377
  <%_ } _%>
378
378
  <%_ for (relationship of relationships) { _%>
379
- <%_ if (relationship.relationshipManyToOne
380
- || (relationship.relationshipOneToOne && relationship.ownerSide)
381
- || (relationship.relationshipManyToMany && relationship.ownerSide && paginationNo)) { _%>
379
+ <%_ if (relationship.persistableRelationship && (paginationNo || !relationship.collection)) { _%>
382
380
  <th><Translate contentKey="<%= `${i18nKeyPrefix}.${relationship.relationshipName}` %>"><%= relationship.relationshipNameHumanized %></Translate> <FontAwesomeIcon icon="sort" /></th>
383
381
  <%_ } _%>
384
382
  <%_ } _%>
@@ -442,14 +440,11 @@ _%>
442
440
  <%_ } _%>
443
441
  <%_ for (relationship of relationships) {
444
442
  const otherEntity = relationship.otherEntity;
445
- const ownerSide = relationship.ownerSide;
446
443
  const relationshipFieldName = relationship.relationshipFieldName;
447
444
  const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
448
445
  const otherEntityPkName = relationship.otherEntity.primaryKey && relationship.otherEntity.primaryKey.name || 'id';
449
446
  const otherEntityField = relationship.otherEntityField; _%>
450
- <%_ if (relationship.relationshipManyToOne
451
- || (relationship.relationshipOneToOne && ownerSide)
452
- || (relationship.relationshipManyToMany && ownerSide && paginationNo)) { _%>
447
+ <%_ if (relationship.persistableRelationship && (paginationNo || !relationship.collection)) { _%>
453
448
  <td>
454
449
  <%_ if (relationship.otherEntityUser) { _%>
455
450
  <%_ if (relationship.relationshipManyToMany) { _%>
@@ -491,7 +486,7 @@ _%>
491
486
  <Button tag={Link} to={`/<%= entityPage %>/${<%= entityInstance %>.<%= primaryKey.name %>}/edit<%_ if (paginationPagination) { _%>?page=${paginationState.activePage}&sort=${paginationState.sort},${paginationState.order}<%_ } _%>`} color="primary" size="sm" data-cy="entityEditButton">
492
487
  <FontAwesomeIcon icon="pencil-alt" /> <span className="d-none d-md-inline"><Translate contentKey="entity.action.edit">Edit</Translate></span>
493
488
  </Button>
494
- <Button onClick={() => location.href=`/<%= entityPage %>/${<%= entityInstance %>.<%= primaryKey.name %>}/delete<%_ if (paginationPagination) { _%>?page=${paginationState.activePage}&sort=${paginationState.sort},${paginationState.order}<%_ } _%>`} color="danger" size="sm" data-cy="entityDeleteButton">
489
+ <Button onClick={() => <% if (entityInstance !== 'window' ) { %>window.<% } %>location.href=`/<%= entityPage %>/${<%= entityInstance %>.<%= primaryKey.name %>}/delete<%_ if (paginationPagination) { _%>?page=${paginationState.activePage}&sort=${paginationState.sort},${paginationState.order}<%_ } _%>`} color="danger" size="sm" data-cy="entityDeleteButton">
495
490
  <FontAwesomeIcon icon="trash" /> <span className="d-none d-md-inline"><Translate contentKey="entity.action.delete">Delete</Translate></span>
496
491
  </Button>
497
492
  <%_ } _%>
@@ -17,7 +17,7 @@
17
17
  limitations under the License.
18
18
  -%>
19
19
  <%
20
- const variablesWithTypes = this.generateEntityClientFields(primaryKey, fields, relationships, dto, 'string', embedded);
20
+ const variablesWithTypes = this.generateEntityClientFields(primaryKey, fields, relationships, dto, customDateType = 'dayjs.Dayjs', embedded);
21
21
  const typeImports = this.generateEntityClientImports(relationships, dto);
22
22
  const defaultVariablesValues = this.generateEntityClientFieldDefaultValues(fields.filter(field => !field.id));
23
23
  const enumImports = this.generateEntityClientEnumImports(fields.filter(field => !field.id));
@@ -21,7 +21,7 @@ $header-color-secondary: #bbb;
21
21
  $header-color-hover: darken($header-color, 20%);
22
22
 
23
23
  /* ==========================================================================
24
- Developement Ribbon
24
+ Development Ribbon
25
25
  ========================================================================== */
26
26
  .ribbon {
27
27
  background-color: rgba(170, 0, 0, 0.5);
@@ -129,7 +129,7 @@ export const createEntitySlice = <T, Reducers extends SliceCaseReducers<EntitySt
129
129
  extraReducers(builder);
130
130
  /*
131
131
  * Common rejection logic is handled here.
132
- * If you want to add your own rejcetion logic, pass `skipRejectionHandling: true`
132
+ * If you want to add your own rejection logic, pass `skipRejectionHandling: true`
133
133
  * while calling `createEntitySlice`
134
134
  * */
135
135
  if (!skipRejectionHandling) {
@@ -23,6 +23,6 @@ import { APP_LOCAL_DATETIME_FORMAT } from 'app/config/constants';
23
23
  export const convertDateTimeFromServer = date =>
24
24
  date ? dayjs(date).format(APP_LOCAL_DATETIME_FORMAT) : null;
25
25
 
26
- export const convertDateTimeToServer = date => date ? dayjs(date).toDate() : null;
26
+ export const convertDateTimeToServer = (date?: string) : dayjs.Dayjs | null => (date ? dayjs(date) : null);
27
27
 
28
28
  export const displayDefaultDateTime = () => dayjs().startOf('day').format(APP_LOCAL_DATETIME_FORMAT);
@@ -186,4 +186,9 @@ export default function cleanupOldServerFilesTask(taskParam) {
186
186
  this.removeFile(`${application.javaPackageTestDir}config/TestContainersSpringContextCustomizerFactory.java`);
187
187
  }
188
188
  }
189
+ if (this.isJhipsterVersionLessThan('8.0.1')) {
190
+ if (application.authenticationTypeOauth2) {
191
+ this.removeFile(`${application.javaPackageSrcDir}security/oauth2/OAuthIdpTokenResponseDTO.java`);
192
+ }
193
+ }
189
194
  }
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import chalk from 'chalk';
20
- import { GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_RELATIONAL } from '../generator-list.mjs';
20
+ import { GENERATOR_COMMON, GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_RELATIONAL } from '../generator-list.mjs';
21
21
  import { APPLICATION_TYPE_GATEWAY, APPLICATION_TYPE_MICROSERVICE, APPLICATION_TYPE_MONOLITH } from '../../jdl/index.js';
22
22
  const command = {
23
23
  options: {
@@ -145,7 +145,18 @@ const command = {
145
145
  },
146
146
  ],
147
147
  },
148
+ feignClient: {
149
+ description: 'Generate a feign client',
150
+ cli: {
151
+ type: Boolean,
152
+ },
153
+ prompt: {
154
+ type: 'confirm',
155
+ message: 'Do you want to generate a feign client?',
156
+ },
157
+ default: false,
158
+ },
148
159
  },
149
- import: [GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_RELATIONAL],
160
+ import: [GENERATOR_COMMON, GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_RELATIONAL],
150
161
  };
151
162
  export default command;
@@ -75,8 +75,8 @@ const filteringReactiveFiles = {
75
75
  },
76
76
  ],
77
77
  };
78
- export const respositoryFiles = {
79
- respositoryFiles: [
78
+ export const repositoryFiles = {
79
+ repositoryFiles: [
80
80
  {
81
81
  condition: generator => !generator.reactive && !generator.embedded && generator.databaseType !== COUCHBASE,
82
82
  ...javaMainPackageTemplatesBlock('_entityPackage_/'),
@@ -175,7 +175,7 @@ export const serverFiles = {
175
175
  ...restFiles,
176
176
  ...filteringFiles,
177
177
  ...filteringReactiveFiles,
178
- ...respositoryFiles,
178
+ ...repositoryFiles,
179
179
  ...serviceFiles,
180
180
  ...dtoFiles,
181
181
  };
@@ -52,48 +52,12 @@ const reactiveConfigFiles = {
52
52
  },
53
53
  ],
54
54
  };
55
- const feignFiles = {
56
- microserviceFeignFiles: [
57
- {
58
- path: `${SERVER_MAIN_SRC_DIR}_package_/`,
59
- renameTo: moveToJavaPackageSrcDir,
60
- templates: ['config/FeignConfiguration.java'],
61
- },
62
- {
63
- condition: generator => generator.authenticationTypeOauth2,
64
- path: `${SERVER_MAIN_SRC_DIR}_package_/`,
65
- renameTo: moveToJavaPackageSrcDir,
66
- templates: [
67
- 'security/oauth2/AuthorizationHeaderUtil.java',
68
- 'client/AuthorizedFeignClient.java',
69
- 'client/OAuth2InterceptedFeignConfiguration.java',
70
- 'client/TokenRelayRequestInterceptor.java',
71
- ],
72
- },
73
- {
74
- condition: generator => generator.authenticationTypeJwt,
75
- path: `${SERVER_MAIN_SRC_DIR}_package_/`,
76
- renameTo: moveToJavaPackageSrcDir,
77
- templates: ['client/UserFeignClientInterceptor_jwt.java'],
78
- },
79
- {
80
- condition: generator => generator.authenticationTypeOauth2,
81
- path: `${SERVER_TEST_SRC_DIR}_package_/`,
82
- renameTo: moveToJavaPackageTestDir,
83
- templates: ['security/oauth2/AuthorizationHeaderUtilTest.java'],
84
- },
85
- ],
86
- };
87
55
  const oauth2Files = {
88
56
  oauth2Files: [
89
57
  {
90
58
  path: `${SERVER_MAIN_SRC_DIR}_package_/`,
91
59
  renameTo: moveToJavaPackageSrcDir,
92
- templates: [
93
- 'security/oauth2/AudienceValidator.java',
94
- 'security/oauth2/JwtGrantedAuthorityConverter.java',
95
- 'security/oauth2/OAuthIdpTokenResponseDTO.java',
96
- ],
60
+ templates: ['security/oauth2/AudienceValidator.java', 'security/oauth2/JwtGrantedAuthorityConverter.java'],
97
61
  },
98
62
  {
99
63
  path: `${SERVER_TEST_SRC_DIR}_package_/`,
@@ -581,7 +545,7 @@ export const baseServerFiles = {
581
545
  },
582
546
  ],
583
547
  };
584
- export const serverFiles = mergeSections(baseServerFiles, addSectionsCondition(jwtFiles, context => context.authenticationTypeJwt), addSectionsCondition(oauth2Files, context => context.authenticationTypeOauth2), addSectionsCondition(gatewayFiles, context => context.applicationTypeGateway), addSectionsCondition(accountFiles, context => context.generateAuthenticationApi), addSectionsCondition(feignFiles, context => !context.reactive && context.applicationTypeMicroservice), addSectionsCondition(userManagementFiles, context => context.generateUserManagement), addSectionsCondition(imperativeConfigFiles, context => !context.reactive), addSectionsCondition(reactiveConfigFiles, context => context.reactive), addSectionsCondition(swaggerFiles, context => context.enableSwaggerCodegen));
548
+ export const serverFiles = mergeSections(baseServerFiles, addSectionsCondition(jwtFiles, context => context.authenticationTypeJwt), addSectionsCondition(oauth2Files, context => context.authenticationTypeOauth2), addSectionsCondition(gatewayFiles, context => context.applicationTypeGateway), addSectionsCondition(accountFiles, context => context.generateAuthenticationApi), addSectionsCondition(userManagementFiles, context => context.generateUserManagement), addSectionsCondition(imperativeConfigFiles, context => !context.reactive), addSectionsCondition(reactiveConfigFiles, context => context.reactive), addSectionsCondition(swaggerFiles, context => context.enableSwaggerCodegen));
585
549
  /**
586
550
  * @this {import('./index.mjs')}
587
551
  */
@@ -23,14 +23,14 @@ import os from 'os';
23
23
  import chalk from 'chalk';
24
24
  import { getDBTypeFromDBValue, buildJavaGet as javaGetCall, javaBeanCase as javaBeanClassNameFormat, buildJavaGetter as javaGetter, buildJavaSetter as javaSetter, getJavaValueGeneratorForType as getJavaValueForType, getPrimaryKeyValue as getPKValue, generateKeyStore, addSpringFactory, hibernateSnakeCase, } from './support/index.mjs';
25
25
  import { askForOptionalItems, askForServerSideOpts, askForServerTestOpts } from './prompts.mjs';
26
- import { GENERATOR_BOOTSTRAP_APPLICATION, GENERATOR_SPRING_DATA_CASSANDRA, GENERATOR_COMMON, GENERATOR_SPRING_DATA_COUCHBASE, GENERATOR_CUCUMBER, GENERATOR_DOCKER, GENERATOR_SPRING_DATA_ELASTICSEARCH, GENERATOR_GATLING, GENERATOR_GRADLE, GENERATOR_JAVA, GENERATOR_SPRING_CLOUD_STREAM, GENERATOR_LANGUAGES, GENERATOR_MAVEN, GENERATOR_SPRING_DATA_MONGODB, GENERATOR_SPRING_DATA_NEO4J, GENERATOR_SERVER, GENERATOR_SPRING_CACHE, GENERATOR_SPRING_WEBSOCKET, GENERATOR_SPRING_DATA_RELATIONAL, } from '../generator-list.mjs';
26
+ import { GENERATOR_BOOTSTRAP_APPLICATION, GENERATOR_SPRING_DATA_CASSANDRA, GENERATOR_COMMON, GENERATOR_SPRING_DATA_COUCHBASE, GENERATOR_CUCUMBER, GENERATOR_DOCKER, GENERATOR_SPRING_DATA_ELASTICSEARCH, GENERATOR_GATLING, GENERATOR_GRADLE, GENERATOR_JAVA, GENERATOR_SPRING_CLOUD_STREAM, GENERATOR_LANGUAGES, GENERATOR_MAVEN, GENERATOR_SPRING_DATA_MONGODB, GENERATOR_SPRING_DATA_NEO4J, GENERATOR_SERVER, GENERATOR_SPRING_CACHE, GENERATOR_SPRING_WEBSOCKET, GENERATOR_SPRING_DATA_RELATIONAL, GENERATOR_FEIGN_CLIENT, } from '../generator-list.mjs';
27
27
  import BaseApplicationGenerator from '../base-application/index.mjs';
28
28
  import { writeFiles } from './files.mjs';
29
29
  import { writeFiles as writeEntityFiles } from './entity-files.mjs';
30
30
  import { packageJson } from '../../lib/index.mjs';
31
31
  import { SERVER_MAIN_SRC_DIR, SERVER_MAIN_RES_DIR, SERVER_TEST_SRC_DIR, SERVER_TEST_RES_DIR, CLIENT_WEBPACK_DIR, MAIN_DIR, LOGIN_REGEX, TEST_DIR, JAVA_VERSION, JAVA_COMPATIBLE_VERSIONS, ADD_SPRING_MILESTONE_REPOSITORY, JHIPSTER_DEPENDENCIES_VERSION, } from '../generator-constants.mjs';
32
32
  import statistics from '../statistics.mjs';
33
- import { applicationTypes, authenticationTypes, buildToolTypes, databaseTypes, cacheTypes, serviceDiscoveryTypes, websocketTypes, fieldTypes, entityOptions, validations, reservedKeywords, searchEngineTypes, messageBrokerTypes, clientFrameworkTypes, testFrameworkTypes, } from '../../jdl/jhipster/index.mjs';
33
+ import { applicationTypes, authenticationTypes, buildToolTypes, databaseTypes, cacheTypes, serviceDiscoveryTypes, websocketTypes, fieldTypes, entityOptions, validations, reservedKeywords, searchEngineTypes, messageBrokerTypes, clientFrameworkTypes, testFrameworkTypes, APPLICATION_TYPE_MICROSERVICE, } from '../../jdl/jhipster/index.mjs';
34
34
  import { stringifyApplicationData } from '../base-application/support/index.mjs';
35
35
  import { createBase64Secret, createSecret, createNeedleCallback } from '../base/support/index.mjs';
36
36
  import command from './command.mjs';
@@ -121,6 +121,23 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
121
121
  configure() {
122
122
  this._configureServer();
123
123
  },
124
+ feignMigration() {
125
+ const { reactive, applicationType, feignClient } = this.jhipsterConfigWithDefaults;
126
+ if (feignClient) {
127
+ if (reactive) {
128
+ this.handleCheckFailure('Feign client is not supported by reactive applications.');
129
+ }
130
+ if (applicationType !== APPLICATION_TYPE_MICROSERVICE) {
131
+ this.handleCheckFailure('Feign client is only supported by microservice applications.');
132
+ }
133
+ }
134
+ if (feignClient === undefined &&
135
+ this.isJhipsterVersionLessThan('8.0.1') &&
136
+ reactive &&
137
+ applicationType === APPLICATION_TYPE_MICROSERVICE) {
138
+ this.jhipsterConfig.feignClient = true;
139
+ }
140
+ },
124
141
  });
125
142
  }
126
143
  get [BaseApplicationGenerator.CONFIGURING]() {
@@ -129,7 +146,7 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
129
146
  get composing() {
130
147
  return this.asComposingTaskGroup({
131
148
  async composing() {
132
- const { buildTool, enableTranslation, databaseType, messageBroker, searchEngine, testFrameworks, websocket, cacheProvider } = this.jhipsterConfigWithDefaults;
149
+ const { buildTool, enableTranslation, databaseType, messageBroker, searchEngine, testFrameworks, websocket, cacheProvider, feignClient, } = this.jhipsterConfigWithDefaults;
133
150
  if (buildTool === GRADLE) {
134
151
  await this.composeWithJHipster(GENERATOR_GRADLE);
135
152
  }
@@ -176,6 +193,9 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
176
193
  if ([EHCACHE, CAFFEINE, HAZELCAST, INFINISPAN, MEMCACHED, REDIS].includes(cacheProvider)) {
177
194
  await this.composeWithJHipster(GENERATOR_SPRING_CACHE);
178
195
  }
196
+ if (feignClient) {
197
+ await this.composeWithJHipster(GENERATOR_FEIGN_CLIENT);
198
+ }
179
199
  },
180
200
  });
181
201
  }
@@ -310,7 +330,7 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
310
330
  const { applicationTypeMicroservice, applicationTypeGateway, clientFrameworkAny } = application;
311
331
  if (entityConfig.microserviceName && !(applicationTypeMicroservice && clientFrameworkAny)) {
312
332
  if (!entityConfig.searchEngine) {
313
- // If a non-microfrontent microservice entity, should be disabled by default.
333
+ // If a non-microfrontend microservice entity, should be disabled by default.
314
334
  entityConfig.searchEngine = NO_SEARCH_ENGINE;
315
335
  }
316
336
  }
@@ -335,7 +355,7 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
335
355
  entityConfig.jpaMetamodelFiltering = false;
336
356
  }
337
357
  },
338
- configureEntityTable({ application, entityName, entityConfig, entityStorage }) {
358
+ configureEntityTable({ application, entityName, entityConfig }) {
339
359
  if ((application.applicationTypeGateway && entityConfig.microserviceName) || entityConfig.skipServer)
340
360
  return;
341
361
  entityConfig.entityTableName = entityConfig.entityTableName || hibernateSnakeCase(entityName);
@@ -353,19 +373,11 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
353
373
  (application.applicationType !== GATEWAY || !entityConfig.microserviceName)) {
354
374
  entityConfig.pagination = NO_PAGINATION;
355
375
  }
356
- // Validate root entity json content
357
- if (entityConfig.changelogDate === undefined) {
358
- const currentDate = this.dateFormatForLiquibase();
359
- if (entityStorage.existed) {
360
- this.log.verboseInfo(`changelogDate is missing in .jhipster/${entityConfig.name}.json, using ${currentDate} as fallback`);
361
- }
362
- entityConfig.changelogDate = currentDate;
363
- }
364
376
  if (entityConfig.incrementalChangelog === undefined) {
365
377
  // Keep entity's original incrementalChangelog option.
366
378
  entityConfig.incrementalChangelog =
367
379
  application.incrementalChangelog &&
368
- !existsSync(this.destinationPath(`src/main/resources/config/liquibase/changelog/${entityConfig.changelogDate}_added_entity_${entityConfig.name}.xml`));
380
+ !existsSync(this.destinationPath(`src/main/resources/config/liquibase/changelog/${entityConfig.annotations?.changelogDate}_added_entity_${entityConfig.name}.xml`));
369
381
  }
370
382
  },
371
383
  configureFields({ application, entityConfig, entityName }) {
@@ -544,7 +556,7 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
544
556
  'java:docker': './mvnw -ntp verify -DskipTests -Pprod jib:dockerBuild',
545
557
  'java:docker:arm64': 'npm run java:docker -- -Djib-maven-plugin.architecture=arm64',
546
558
  'backend:unit:test': `./mvnw -ntp${excludeWebapp} verify --batch-mode ${javaCommonLog} ${javaTestLog}`,
547
- 'backend:build-cache': './mvnw dependency:go-offline',
559
+ 'backend:build-cache': './mvnw dependency:go-offline -ntp',
548
560
  'backend:debug': './mvnw -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000"',
549
561
  });
550
562
  }
@@ -563,7 +575,7 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
563
575
  'java:docker:arm64': 'npm run java:docker -- -PjibArchitecture=arm64',
564
576
  'backend:unit:test': `./gradlew test integrationTest ${excludeWebapp} ${javaCommonLog} ${javaTestLog}`,
565
577
  'postci:e2e:package': 'cp build/libs/*.$npm_package_config_packaging e2e.$npm_package_config_packaging',
566
- 'backend:build-cache': 'npm run backend:info && npm run backend:nohttp:test && npm run ci:e2e:package',
578
+ 'backend:build-cache': 'npm run backend:info && npm run backend:nohttp:test && npm run ci:e2e:package -- -x webapp -x webapp_test',
567
579
  });
568
580
  }
569
581
  scriptsStorage.set({
@@ -675,9 +687,13 @@ export default class JHipsterServerGenerator extends BaseApplicationGenerator {
675
687
  if (!config.devDatabaseType && config.prodDatabaseType) {
676
688
  dest.devDatabaseType = config.prodDatabaseType;
677
689
  }
678
- // force variables unused by microservice applications
679
- if (config.applicationType === MICROSERVICE) {
680
- dest.websocket = NO_WEBSOCKET;
690
+ if (config.websocket && config.websocket !== NO_WEBSOCKET) {
691
+ if (config.reactive) {
692
+ throw new Error('Spring Websocket is not supported with reactive applications.');
693
+ }
694
+ if (config.applicationType === MICROSERVICE) {
695
+ throw new Error('Spring Websocket is not supported with microservice applications.');
696
+ }
681
697
  }
682
698
  const databaseType = config.databaseType;
683
699
  if (databaseType === NO_DATABASE) {
@@ -19,8 +19,9 @@
19
19
  import * as _ from 'lodash-es';
20
20
  import databaseMigrationOption from '../options/database-migration.mjs';
21
21
  import messageBrokerOption from '../options/message-broker.mjs';
22
+ import { feignClientDefinition } from '../options/index.mjs';
22
23
  const { upperCase, snakeCase } = _;
23
- const jdlOptions = [databaseMigrationOption, messageBrokerOption];
24
+ const jdlOptions = [databaseMigrationOption, messageBrokerOption, feignClientDefinition];
24
25
  const applicationConfig = {
25
26
  tokenConfigs: jdlOptions.map(option => ({
26
27
  name: upperCase(snakeCase(option.name)),
@@ -34,7 +35,9 @@ const applicationConfig = {
34
35
  msg: `${option.name} property`,
35
36
  },
36
37
  ])),
37
- optionsValues: Object.fromEntries(jdlOptions.map(option => [option.name, Object.fromEntries(option.knownChoices.map(choice => [choice, choice]))])),
38
+ optionsValues: Object.fromEntries(jdlOptions
39
+ .filter(option => option.knownChoices)
40
+ .map(option => [option.name, Object.fromEntries(option.knownChoices.map(choice => [choice, choice]))])),
38
41
  optionsTypes: Object.fromEntries(jdlOptions.map(option => [
39
42
  option.name,
40
43
  {
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright 2013-2023 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ export const FEIGN_CLIENT = 'feignClient';
20
+ export const feignClientDefinition = {
21
+ name: FEIGN_CLIENT,
22
+ type: 'boolean',
23
+ tokenType: 'BOOLEAN',
24
+ };
@@ -18,3 +18,4 @@
18
18
  */
19
19
  export * from './database-migration.mjs';
20
20
  export * from './message-broker.mjs';
21
+ export * from './feign-client.mjs';
@@ -10,52 +10,52 @@ LABEL ALIAS=jhipster-control-center
10
10
  FROM jhipster/consul-config-loader:v0.4.1
11
11
  LABEL ALIAS=consul-config-loader
12
12
 
13
- FROM postgres:16.0
13
+ FROM postgres:16.1
14
14
  LABEL ALIAS=postgresql
15
15
 
16
- FROM quay.io/keycloak/keycloak:22.0.5
16
+ FROM quay.io/keycloak/keycloak:23.0.1
17
17
  LABEL ALIAS=keycloak
18
18
 
19
19
  FROM mysql:8.2.0
20
20
 
21
- FROM mariadb:11.1.2
21
+ FROM mariadb:11.2.2
22
22
 
23
- FROM mongo:7.0.2
23
+ FROM mongo:7.0.4
24
24
  LABEL ALIAS=mongodb
25
25
 
26
- FROM couchbase/server:7.2.2
26
+ FROM couchbase/server:7.2.3
27
27
  LABEL ALIAS=couchbase
28
28
 
29
- FROM cassandra:3.11.14
29
+ FROM cassandra:4.1.3
30
30
 
31
31
  FROM mcr.microsoft.com/mssql/server:2019-CU16-GDR1-ubuntu-20.04
32
32
  LABEL ALIAS=mssql
33
33
 
34
- FROM neo4j:5.13.0
34
+ FROM neo4j:5.14.0
35
35
 
36
36
  FROM hazelcast/management-center:5.3.3
37
37
  LABEL ALIAS=hazelcast
38
38
 
39
39
  FROM memcached:1.6.22-alpine
40
40
 
41
- FROM redis:7.2.2
41
+ FROM redis:7.2.3
42
42
 
43
- FROM confluentinc/cp-kafka:7.5.1
43
+ FROM confluentinc/cp-kafka:7.5.2
44
44
  LABEL ALIAS=kafka
45
45
 
46
- FROM confluentinc/cp-zookeeper:7.5.1
46
+ FROM confluentinc/cp-zookeeper:7.5.2
47
47
  LABEL ALIAS=zookeeper
48
48
 
49
- FROM apachepulsar/pulsar:3.0.1
49
+ FROM apachepulsar/pulsar:3.1.1
50
50
  LABEL ALIAS=pulsar
51
51
 
52
- FROM sonarqube:10.2.1-community
52
+ FROM sonarqube:10.3.0-community
53
53
  LABEL ALIAS=sonar
54
54
 
55
- FROM docker.io/bitnami/consul:1.16.2
55
+ FROM docker.io/bitnami/consul:1.17.0
56
56
  LABEL ALIAS=consul
57
57
 
58
- FROM prom/prometheus:v2.47.2
58
+ FROM prom/prometheus:v2.48.0
59
59
  LABEL ALIAS=prometheus
60
60
 
61
61
  FROM prom/alertmanager:v0.26.0
@@ -64,7 +64,7 @@ LABEL ALIAS=prometheus-alertmanager
64
64
  FROM quay.io/coreos/prometheus-operator:v0.42.1
65
65
  LABEL ALIAS=prometheus-operator
66
66
 
67
- FROM grafana/grafana:10.2.0
67
+ FROM grafana/grafana:10.2.2
68
68
  LABEL ALIAS=grafana
69
69
 
70
70
  FROM quay.io/coreos/grafana-watcher:v0.0.8
@@ -79,5 +79,5 @@ LABEL ALIAS=java-jre
79
79
  FROM swaggerapi/swagger-editor:latest
80
80
  LABEL ALIAS=swagger-editor
81
81
 
82
- FROM openzipkin/zipkin:2.24
82
+ FROM openzipkin/zipkin:3.0
83
83
  LABEL ALIAS=zipkin
@@ -3,16 +3,16 @@ gradle-git-properties = { id = 'com.gorylenko.gradle-git-properties', version =
3
3
 
4
4
  node-gradle = { id = 'com.github.node-gradle.node', version = '7.0.1' }
5
5
 
6
- gradle-liquibase = { id = 'org.liquibase.gradle', version = '2.2.0' }
6
+ gradle-liquibase = { id = 'org.liquibase.gradle', version = '2.2.1' }
7
7
 
8
8
  gradle-sonarqube = { id = 'org.sonarqube', version = '4.4.1.3373' }
9
9
 
10
- spotless-gradle-plugin = { id = 'com.diffplug.spotless', version = '6.22.0' }
10
+ spotless-gradle-plugin = { id = 'com.diffplug.spotless', version = '6.23.3' }
11
11
 
12
12
  gradle-modernizer-plugin = { id = 'com.github.andygoossens.gradle-modernizer-plugin', version = '1.9.0' }
13
13
 
14
- gradle-enterprise = { id = 'com.gradle.enterprise', version = '3.15.1' }
14
+ gradle-enterprise = { id = 'com.gradle.enterprise', version = '3.16' }
15
15
 
16
- common-custom-user-data-gradle-plugin = { id = 'com.gradle.common-custom-user-data-gradle-plugin', version = '1.12' }
16
+ common-custom-user-data-gradle-plugin = { id = 'com.gradle.common-custom-user-data-gradle-plugin', version = '1.12.1' }
17
17
 
18
18
  gatling-gradle = { id = 'io.gatling.gradle', version = '3.9.5.6' }