generator-jhipster 8.7.2 → 8.8.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 (523) hide show
  1. package/README.md +4 -4
  2. package/dist/cli/environment-builder.d.mts +1 -3
  3. package/dist/cli/jhipster-command.d.mts +2 -2
  4. package/dist/cli/program.mjs +2 -1
  5. package/dist/generators/angular/files-angular.d.ts +2 -0
  6. package/dist/generators/angular/files-angular.js +39 -4
  7. package/dist/generators/angular/generator.d.ts +14 -154
  8. package/dist/generators/angular/generator.js +98 -196
  9. package/dist/generators/angular/resources/package.json +26 -22
  10. package/dist/generators/angular/support/path-utils.d.ts +1 -0
  11. package/dist/generators/angular/support/path-utils.js +1 -0
  12. package/dist/generators/angular/support/translate-angular.d.ts +3 -2
  13. package/dist/generators/angular/support/translate-angular.js +2 -10
  14. package/dist/generators/angular/support/update-languages.d.ts +1 -1
  15. package/dist/generators/angular/support/update-languages.js +3 -1
  16. package/dist/generators/angular/templates/angular.json.ejs +7 -1
  17. package/dist/generators/angular/templates/angular.json.esbuild.ejs +160 -0
  18. package/dist/generators/angular/templates/build-plugins/define-esbuild.mjs.ejs +10 -0
  19. package/dist/generators/angular/templates/build-plugins/i18n-esbuild.mjs.ejs +49 -0
  20. package/dist/generators/angular/templates/eslint.config.js.jhi.angular.ejs +1 -7
  21. package/dist/generators/angular/templates/jest.conf.js.ejs +1 -2
  22. package/dist/generators/angular/templates/package.json.ejs +2 -19
  23. package/dist/generators/angular/templates/postcss.config.json.ejs +5 -0
  24. package/dist/generators/angular/templates/proxy.conf.json.ejs +27 -0
  25. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +0 -1
  26. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +0 -1
  27. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +0 -1
  28. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +0 -1
  29. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +0 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +0 -1
  31. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.ts.ejs +0 -1
  32. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.ts.ejs +0 -1
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +1 -1
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.ts.ejs +0 -1
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +0 -1
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.ts.ejs +0 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.ts.ejs +1 -2
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.model.ts.ejs +1 -3
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +0 -1
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +1 -1
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +0 -1
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.ts.ejs +0 -1
  43. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.ts.ejs +0 -1
  44. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.ts.ejs +0 -1
  45. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.ts.ejs +0 -1
  46. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.ts.ejs +0 -1
  47. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +1 -1
  48. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.ts.ejs +0 -1
  49. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +0 -1
  50. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.ts.ejs +0 -1
  51. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.ts.ejs +0 -1
  52. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +0 -3
  53. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.model.ts.ejs +1 -6
  54. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.ts.ejs +0 -1
  55. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.ts.ejs +0 -1
  56. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +1 -1
  57. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.ts.ejs +0 -1
  58. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
  59. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +1 -1
  60. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +1 -3
  61. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +1 -1
  62. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +1 -1
  63. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +0 -1
  64. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +1 -1
  65. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +0 -1
  66. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +2 -2
  67. package/dist/generators/angular/templates/src/main/webapp/app/config/translation.config.ts.ejs +16 -1
  68. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +2 -2
  69. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.ts.ejs +1 -1
  70. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +1 -1
  71. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.test-samples.ts.ejs +5 -5
  72. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +1 -1
  73. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.ts.ejs +0 -1
  74. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +4 -4
  75. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +2 -2
  76. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.ts.ejs +13 -2
  77. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +5 -7
  78. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +4 -5
  79. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +27 -17
  80. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +1 -1
  81. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +7 -7
  82. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +3 -3
  83. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +12 -12
  84. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +1 -2
  85. package/dist/generators/angular/templates/src/main/webapp/app/entities/entity-navbar-items.ts.ejs +1 -1
  86. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +0 -1
  87. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.ts.ejs +0 -1
  88. package/dist/generators/angular/templates/src/main/webapp/app/layouts/footer/footer.component.ts.ejs +0 -1
  89. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +7 -5
  90. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +0 -1
  91. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +0 -1
  92. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +2 -2
  93. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +0 -1
  94. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +0 -1
  95. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.ts.ejs +0 -1
  96. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.ts.ejs +0 -1
  97. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +2 -2
  98. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +7 -11
  99. package/dist/generators/angular/templates/src/main/webapp/app/shared/date/duration.pipe.ts.ejs +0 -1
  100. package/dist/generators/angular/templates/src/main/webapp/app/shared/date/format-medium-date.pipe.ts.ejs +0 -1
  101. package/dist/generators/angular/templates/src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts.ejs +0 -1
  102. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +2 -2
  103. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.ts.ejs +4 -5
  104. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/find-language-from-key.pipe.ts.ejs +0 -1
  105. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translate.directive.spec.ts.ejs +2 -2
  106. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translate.directive.ts.ejs +5 -6
  107. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +1 -1
  108. package/dist/generators/angular/templates/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +0 -1
  109. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +5 -6
  110. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +4 -5
  111. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +1 -2
  112. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.ts.ejs +8 -13
  113. package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +2 -2
  114. package/dist/generators/angular/templates/src/main/webapp/declarations.d.ts.ejs +5 -0
  115. package/dist/generators/angular/templates/src/main/webapp/{app/entities/_entityFolder_/list/pagination-template.ejs → environments/environment.development.ts.ejs} +4 -3
  116. package/dist/generators/angular/templates/src/main/webapp/environments/environment.ts.ejs +22 -0
  117. package/dist/generators/angular/templates/src/main/webapp/i18n/index.ts.ejs +14 -0
  118. package/dist/generators/angular/templates/webpack/environment.js.ejs +0 -1
  119. package/dist/generators/angular/templates/webpack/webpack.custom.js.ejs +2 -22
  120. package/dist/generators/angular/types-partial.d.ts +32 -0
  121. package/dist/generators/angular/types.d.ts +35 -1
  122. package/dist/generators/app/generator.d.ts +1 -0
  123. package/dist/generators/app/support/config.d.ts +2 -1
  124. package/dist/generators/base/shared-data.d.ts +12 -8
  125. package/dist/generators/base/shared-data.js +14 -4
  126. package/dist/generators/base/support/index.d.ts +4 -3
  127. package/dist/generators/base/support/index.js +4 -3
  128. package/dist/generators/base/support/jhipster7-context.d.ts +1 -1
  129. package/dist/generators/base/support/jhipster7-context.js +1 -1
  130. package/dist/generators/base/types.d.ts +8 -2
  131. package/dist/generators/base-application/generator.d.ts +98 -87
  132. package/dist/generators/base-application/support/prepare-entity.d.ts +6 -3
  133. package/dist/generators/base-application/support/prepare-entity.js +37 -40
  134. package/dist/generators/base-application/support/prepare-field.js +22 -23
  135. package/dist/generators/base-application/types.d.ts +8 -9
  136. package/dist/generators/base-core/generator.d.ts +5 -5
  137. package/dist/generators/base-core/generator.js +8 -7
  138. package/dist/generators/base-entity-changes/generator.d.ts +2 -4
  139. package/dist/generators/bootstrap/generator.d.ts +1 -0
  140. package/dist/generators/bootstrap/generator.js +2 -8
  141. package/dist/generators/bootstrap/support/eslint-worker.d.ts +1 -1
  142. package/dist/generators/bootstrap-application/generator.d.ts +1 -0
  143. package/dist/generators/bootstrap-application/generator.js +1 -1
  144. package/dist/generators/bootstrap-application-base/generator.d.ts +2 -1
  145. package/dist/generators/bootstrap-application-base/generator.js +10 -0
  146. package/dist/generators/bootstrap-application-base/utils.d.ts +4 -71
  147. package/dist/generators/bootstrap-application-base/utils.js +7 -6
  148. package/dist/generators/bootstrap-application-client/generator.d.ts +2 -1
  149. package/dist/generators/bootstrap-application-client/generator.js +16 -9
  150. package/dist/generators/bootstrap-application-server/generator.d.ts +2 -0
  151. package/dist/generators/bootstrap-application-server/generator.js +27 -5
  152. package/dist/generators/bootstrap-workspaces/generator.d.ts +1 -0
  153. package/dist/generators/ci-cd/generator.d.ts +1 -0
  154. package/dist/generators/ci-cd/templates/.gitlab-ci.yml.ejs +4 -6
  155. package/dist/generators/client/command.d.ts +15 -1
  156. package/dist/generators/client/command.js +15 -1
  157. package/dist/generators/client/files-common.js +1 -1
  158. package/dist/generators/client/generator.d.ts +2 -1
  159. package/dist/generators/client/generator.js +24 -11
  160. package/dist/generators/client/generators/common/generator.d.ts +1 -0
  161. package/dist/generators/client/prompts.d.ts +2 -2
  162. package/dist/generators/client/resources/package.json +5 -5
  163. package/dist/generators/client/support/config.js +4 -2
  164. package/dist/generators/client/support/entity-definition.d.ts +2 -5
  165. package/dist/generators/client/support/entity-definition.js +3 -8
  166. package/dist/generators/client/support/filter-entities.d.ts +5 -1
  167. package/dist/generators/client/support/filter-entities.js +4 -2
  168. package/dist/generators/client/support/prepare-entity.d.ts +20 -1
  169. package/dist/generators/client/support/prepare-entity.js +30 -19
  170. package/dist/generators/client/support/template-utils.d.ts +16 -12
  171. package/dist/generators/client/support/template-utils.js +45 -18
  172. package/dist/generators/client/support/update-languages.d.ts +4 -4
  173. package/dist/generators/client/types.d.ts +10 -3
  174. package/dist/generators/common/files.d.ts +1 -3
  175. package/dist/generators/common/files.js +3 -3
  176. package/dist/generators/common/generator.d.ts +2 -4
  177. package/dist/generators/common/generator.js +17 -15
  178. package/dist/generators/common/resources/package.json +2 -2
  179. package/dist/generators/common/templates/sonar-project.properties.ejs +34 -28
  180. package/dist/generators/cucumber/generator.d.ts +1 -0
  181. package/dist/generators/cypress/generator.d.ts +1 -0
  182. package/dist/generators/cypress/generator.js +12 -5
  183. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/logout.cy.ts.ejs +2 -2
  184. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/register-page.cy.ts.ejs +1 -1
  185. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +4 -1
  186. package/dist/generators/docker/generator.d.ts +1 -0
  187. package/dist/generators/docker/generator.js +1 -1
  188. package/dist/generators/docker/templates/docker/couchbase.yml.ejs +2 -2
  189. package/dist/generators/docker/templates/docker/kafka.yml.ejs +8 -16
  190. package/dist/generators/docker/templates/docker/mysql.yml.ejs +2 -2
  191. package/dist/generators/docker-compose/generator.d.ts +1 -0
  192. package/dist/generators/docker-compose/generator.js +3 -0
  193. package/dist/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +0 -1
  194. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +7 -9
  195. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +1 -3
  196. package/dist/generators/entities/generator.d.ts +1 -0
  197. package/dist/generators/entity/generator.d.ts +1 -0
  198. package/dist/generators/export-jdl/generator.d.ts +1 -0
  199. package/dist/generators/feign-client/generator.d.ts +1 -0
  200. package/dist/generators/gatling/generator.d.ts +1 -0
  201. package/dist/generators/generate-blueprint/command.d.ts +15 -0
  202. package/dist/generators/generate-blueprint/command.js +15 -0
  203. package/dist/generators/generate-blueprint/constants.d.ts +2 -2
  204. package/dist/generators/generate-blueprint/constants.js +1 -2
  205. package/dist/generators/generate-blueprint/files.js +4 -1
  206. package/dist/generators/generate-blueprint/generator.d.ts +2 -0
  207. package/dist/generators/generate-blueprint/generator.js +5 -3
  208. package/dist/generators/generate-blueprint/resources/package.json +3 -3
  209. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +10 -1
  210. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +64 -30
  211. package/dist/generators/{angular/templates/src/main/webapp/app/app.constants.ts.ejs → generate-blueprint/templates/.blueprint/github-build-matrix/command.mjs.ejs} +24 -8
  212. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +23 -7
  213. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.mjs.ejs +24 -0
  214. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +1 -0
  215. package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +14 -8
  216. package/dist/generators/generate-blueprint/templates/.gitignore.jhi.blueprint.ejs +22 -0
  217. package/dist/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +6 -7
  218. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -0
  219. package/dist/generators/generate-blueprint/templates/vitest.test-setup.ts.ejs +7 -0
  220. package/dist/generators/generator-constants.d.ts +1 -1
  221. package/dist/generators/generator-constants.js +1 -1
  222. package/dist/generators/git/generator.d.ts +1 -0
  223. package/dist/generators/git/templates/.gitignore.jhi.ejs +2 -2
  224. package/dist/generators/gradle/command.d.ts +31 -20
  225. package/dist/generators/gradle/generator.d.ts +1 -0
  226. package/dist/generators/gradle/generators/code-quality/generator.d.ts +1 -0
  227. package/dist/generators/gradle/generators/jib/generator.d.ts +1 -0
  228. package/dist/generators/gradle/generators/node-gradle/generator.d.ts +1 -0
  229. package/dist/generators/gradle/generators/node-gradle/templates/buildSrc/src/main/groovy/jhipster.node-gradle-conventions.gradle.ejs +5 -54
  230. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  231. package/dist/generators/heroku/generator.d.ts +1 -0
  232. package/dist/generators/info/generator.d.ts +1 -0
  233. package/dist/generators/info/support/extract-info.d.ts +2 -0
  234. package/dist/generators/info/support/extract-info.js +25 -12
  235. package/dist/generators/info/support/index.d.ts +1 -0
  236. package/dist/generators/info/support/index.js +1 -0
  237. package/dist/generators/info/support/markdown-content.d.ts +6 -0
  238. package/dist/generators/info/support/markdown-content.js +14 -0
  239. package/dist/generators/init/generator.d.ts +1 -0
  240. package/dist/generators/init/resources/.node-version +1 -1
  241. package/dist/generators/java/generators/bootstrap/generator.d.ts +2 -0
  242. package/dist/generators/java/generators/bootstrap/generator.js +13 -0
  243. package/dist/generators/java/generators/build-tool/generator.d.ts +1 -0
  244. package/dist/generators/java/generators/code-quality/generator.d.ts +1 -0
  245. package/dist/generators/java/generators/domain/generator.d.ts +1 -0
  246. package/dist/generators/java/generators/domain/generator.js +1 -1
  247. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/domain/AssertUtils.java.ejs +1 -1
  248. package/dist/generators/java/generators/graalvm/generator.d.ts +3 -1
  249. package/dist/generators/java/generators/graalvm/generator.js +16 -2
  250. package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -0
  251. package/dist/generators/java/generators/graalvm/internal/constants.js +2 -0
  252. package/dist/generators/java/generators/graalvm/internal/maven-definition.d.ts +2 -1
  253. package/dist/generators/java/generators/graalvm/internal/maven-definition.js +2 -1
  254. package/dist/generators/java/generators/graalvm/templates/gradle/native.gradle.ejs +5 -1
  255. package/dist/generators/java/generators/jib/generator.d.ts +1 -0
  256. package/dist/generators/java/generators/node/generator.d.ts +3 -1
  257. package/dist/generators/java/generators/node/generator.js +22 -1
  258. package/dist/generators/java/generators/node/templates/{npmw.cmd → npmw.cmd.ejs} +11 -11
  259. package/dist/generators/java/generators/node/templates/{npmw → npmw.ejs} +5 -2
  260. package/dist/generators/java/generators/openapi-generator/generator.d.ts +1 -0
  261. package/dist/generators/java/generators/server/command.d.ts +5 -0
  262. package/dist/generators/java/generators/server/command.js +5 -0
  263. package/dist/generators/java/generators/server/generator.d.ts +24 -0
  264. package/dist/generators/java/generators/server/generator.js +107 -0
  265. package/dist/generators/java/generators/server/index.d.ts +20 -0
  266. package/dist/generators/java/generators/server/index.js +20 -0
  267. package/dist/generators/java/types.d.ts +3 -0
  268. package/dist/generators/javascript/generators/bootstrap/generator.d.ts +3 -1
  269. package/dist/generators/javascript/generators/bootstrap/generator.js +18 -3
  270. package/dist/generators/javascript/generators/eslint/command.d.ts +12 -20
  271. package/dist/generators/javascript/generators/eslint/command.js +2 -0
  272. package/dist/generators/javascript/generators/eslint/generator.d.ts +1 -0
  273. package/dist/generators/javascript/generators/husky/generator.d.ts +1 -0
  274. package/dist/generators/javascript/generators/prettier/generator.d.ts +1 -0
  275. package/dist/generators/javascript/generators/prettier/generator.js +12 -2
  276. package/dist/generators/javascript/resources/package.json +2 -2
  277. package/dist/generators/javascript/types.d.ts +24 -9
  278. package/dist/generators/jdl/generator.d.ts +1 -0
  279. package/dist/generators/kubernetes/files.js +3 -0
  280. package/dist/generators/kubernetes/generator.d.ts +49 -0
  281. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +1 -3
  282. package/dist/generators/kubernetes/templates/messagebroker/kafka.yml.ejs +16 -55
  283. package/dist/generators/kubernetes-helm/generator.d.ts +42 -0
  284. package/dist/generators/kubernetes-helm/templates/csvc/helpers.tpl.ejs +1 -12
  285. package/dist/generators/kubernetes-helm/templates/csvc/values.yml.ejs +0 -7
  286. package/dist/generators/kubernetes-knative/generator.d.ts +27 -1
  287. package/dist/generators/languages/generator.d.ts +5 -6
  288. package/dist/generators/languages/generator.js +8 -8
  289. package/dist/generators/languages/prompts.js +8 -5
  290. package/dist/generators/languages/support/translate.d.ts +4 -3
  291. package/dist/generators/languages/support/translate.js +1 -19
  292. package/dist/generators/languages/templates/src/main/webapp/i18n/fr/user-management.json +1 -1
  293. package/dist/generators/liquibase/generator.d.ts +1 -0
  294. package/dist/generators/liquibase/generator.js +11 -10
  295. package/dist/generators/liquibase/support/relationship.d.ts +3 -2
  296. package/dist/generators/liquibase/templates/src/main/java/_package_/config/LiquibaseConfiguration.java.ejs +10 -9
  297. package/dist/generators/maven/generator.d.ts +1 -0
  298. package/dist/generators/maven/generators/code-quality/generator.d.ts +1 -0
  299. package/dist/generators/maven/generators/frontend-plugin/generator.d.ts +1 -0
  300. package/dist/generators/maven/generators/frontend-plugin/generator.js +5 -31
  301. package/dist/generators/maven/generators/jib/generator.d.ts +1 -0
  302. package/dist/generators/project-name/generator.d.ts +1 -0
  303. package/dist/generators/react/files-react.js +1 -6
  304. package/dist/generators/react/generator.d.ts +3 -4
  305. package/dist/generators/react/generator.js +21 -13
  306. package/dist/generators/react/resources/package.json +28 -27
  307. package/dist/generators/react/support/translate-react.d.ts +3 -2
  308. package/dist/generators/react/support/translate-react.js +2 -2
  309. package/dist/generators/react/support/update-languages.d.ts +1 -1
  310. package/dist/generators/react/templates/eslint.config.js.jhi.react.ejs +1 -0
  311. package/dist/generators/react/templates/jest.conf.js.ejs +1 -1
  312. package/dist/generators/react/templates/package.json.ejs +1 -2
  313. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.ts.ejs +4 -4
  314. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-reducer.spec.ts.ejs +3 -3
  315. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/index.tsx.ejs +1 -1
  316. package/dist/generators/react/templates/src/main/webapp/app/entities/routes.tsx.ejs +1 -1
  317. package/dist/generators/react/templates/src/main/webapp/app/modules/account/index.tsx.ejs +1 -1
  318. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/index.tsx.ejs +1 -1
  319. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/user-management/index.tsx.ejs +1 -1
  320. package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +4 -1
  321. package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +1 -1
  322. package/dist/generators/react/templates/src/main/webapp/app/shared/error/error-boundary-routes.spec.tsx.ejs +1 -1
  323. package/dist/generators/react/templates/src/main/webapp/app/shared/error/error-boundary-routes.tsx.ejs +2 -1
  324. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +7 -1
  325. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +1 -1
  326. package/dist/generators/react/templates/tsconfig.test.json.ejs +0 -5
  327. package/dist/generators/react/templates/webpack/webpack.dev.js.ejs +1 -1
  328. package/dist/generators/server/generator.d.ts +2 -34
  329. package/dist/generators/server/generator.js +4 -182
  330. package/dist/generators/server/resources/Dockerfile +13 -16
  331. package/dist/generators/server/resources/gradle/libs.versions.toml +8 -8
  332. package/dist/generators/server/resources/pom.xml +9 -9
  333. package/dist/generators/server/support/config.d.ts +2 -4
  334. package/dist/generators/server/support/config.js +0 -6
  335. package/dist/generators/server/support/prepare-entity.d.ts +2 -1
  336. package/dist/generators/server/support/prepare-entity.js +3 -2
  337. package/dist/generators/server/support/prepare-field.d.ts +2 -1
  338. package/dist/generators/server/support/prepare-field.js +2 -0
  339. package/dist/generators/server/support/prepare-relationship.d.ts +2 -1
  340. package/dist/generators/server/support/templates/field-values.d.ts +2 -1
  341. package/dist/generators/server/support/templates/field-values.js +4 -3
  342. package/dist/generators/server/support/update-languages.d.ts +9 -2
  343. package/dist/generators/server/types.d.ts +10 -0
  344. package/dist/generators/spring-boot/command.d.ts +8 -1
  345. package/dist/generators/spring-boot/command.js +13 -6
  346. package/dist/generators/spring-boot/generator.d.ts +3 -12
  347. package/dist/generators/spring-boot/generator.js +22 -28
  348. package/dist/generators/spring-boot/prompts.d.ts +2 -6
  349. package/dist/generators/spring-boot/prompts.js +25 -42
  350. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +191 -252
  351. package/dist/generators/spring-boot/templates/README.md.jhi.spring-boot.ejs +1 -1
  352. package/dist/generators/spring-boot/templates/build.gradle.ejs +6 -1
  353. package/dist/generators/spring-boot/templates/gradle/profile_dev.gradle.ejs +7 -48
  354. package/dist/generators/spring-boot/templates/gradle/profile_prod.gradle.ejs +1 -1
  355. package/dist/generators/spring-boot/templates/package.json.ejs +1 -4
  356. package/dist/generators/spring-boot/templates/pom.xml.ejs +6 -2
  357. package/dist/generators/spring-boot/templates/settings.gradle.ejs +1 -1
  358. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/repository/UserRepository.java.ejs +7 -7
  359. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/UserService.java.ejs +10 -4
  360. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/PublicUserResource.java.ejs +2 -0
  361. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/UserResource.java.ejs +1 -1
  362. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +14 -40
  363. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +3 -24
  364. package/dist/generators/spring-boot/templates/src/main/java/_package_/service/MailService.java.ejs +8 -8
  365. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -4
  366. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +4 -3
  367. package/dist/generators/spring-boot/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
  368. package/dist/generators/spring-boot/templates/src/main/resources/config/application-tls.yml.ejs +9 -1
  369. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +6 -6
  370. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/criteria/_entityClass_CriteriaTest.java.ejs +5 -4
  371. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/dto/_dtoClass_Test.java.ejs +2 -2
  372. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +19 -21
  373. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +40 -21
  374. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +3 -3
  375. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/JwtAuthenticationTestUtils.java.ejs +1 -0
  376. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/oauth2/CustomClaimConverterIT.java.ejs +2 -2
  377. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/MailServiceIT.java.ejs +2 -2
  378. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +2 -2
  379. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +19 -19
  380. package/dist/generators/spring-cache/generator.d.ts +1 -0
  381. package/dist/generators/spring-cache/generator.js +6 -4
  382. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  383. package/dist/generators/spring-cloud/generators/gateway/generator.d.ts +1 -0
  384. package/dist/generators/spring-cloud-stream/generator.d.ts +1 -0
  385. package/dist/generators/spring-cloud-stream/generators/kafka/generator.d.ts +1 -0
  386. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaProducer.java.ejs +1 -1
  387. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainer.java.ejs +2 -1
  388. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainersSpringContextCustomizerFactory.java.ejs +1 -2
  389. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_imperative.java.ejs +1 -1
  390. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +1 -1
  391. package/dist/generators/spring-cloud-stream/generators/pulsar/generator.d.ts +1 -0
  392. package/dist/generators/spring-data-cassandra/generator.d.ts +1 -0
  393. package/dist/generators/spring-data-cassandra/generator.js +1 -1
  394. package/dist/generators/spring-data-couchbase/generator.d.ts +1 -0
  395. package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
  396. package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +0 -21
  397. package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/repository/JHipsterCouchbaseRepository.java.ejs +1 -1
  398. package/dist/generators/spring-data-elasticsearch/generator.d.ts +1 -0
  399. package/dist/generators/spring-data-mongodb/generator.d.ts +1 -0
  400. package/dist/generators/spring-data-neo4j/generator.d.ts +1 -0
  401. package/dist/generators/spring-data-relational/generator.d.ts +2 -1
  402. package/dist/generators/spring-data-relational/generator.js +6 -4
  403. package/dist/generators/spring-data-relational/support/database-data.js +0 -3
  404. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +1 -2
  405. package/dist/generators/spring-websocket/generator.d.ts +1 -0
  406. package/dist/generators/upgrade/generator.d.ts +1 -0
  407. package/dist/generators/vue/files-vue.js +0 -9
  408. package/dist/generators/vue/generator.d.ts +4 -4
  409. package/dist/generators/vue/generator.js +47 -25
  410. package/dist/generators/vue/resources/package.json +29 -30
  411. package/dist/generators/vue/support/translate-vue.d.ts +4 -4
  412. package/dist/generators/vue/support/translate-vue.js +1 -1
  413. package/dist/generators/vue/support/update-languages.d.ts +1 -1
  414. package/dist/generators/vue/templates/package.json.ejs +0 -2
  415. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management-edit.component.spec.ts.ejs +1 -1
  416. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management-view.component.spec.ts.ejs +1 -1
  417. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management.component.spec.ts.ejs +1 -1
  418. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +7 -0
  419. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +3 -6
  420. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.component.spec.ts.ejs +1 -1
  421. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
  422. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.component.spec.ts.ejs +1 -1
  423. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.spec.ts.ejs +3 -3
  424. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +2 -2
  425. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +15 -0
  426. package/dist/generators/vue/templates/src/main/webapp/app/router/index.ts.ejs +2 -6
  427. package/dist/generators/vue/templates/vite.config.mts.ejs +1 -1
  428. package/dist/generators/vue/templates/vitest.config.mts.ejs +0 -7
  429. package/dist/generators/vue/templates/webpack/webpack.dev.js.ejs +1 -1
  430. package/dist/generators/workspaces/generator.d.ts +1 -0
  431. package/dist/lib/command/converter.d.ts +2 -2
  432. package/dist/lib/command/load.js +8 -25
  433. package/dist/lib/command/types.d.ts +9 -7
  434. package/dist/lib/internal/config-def.js +2 -8
  435. package/dist/lib/jdl/core/linters/rules.d.ts +1 -3
  436. package/dist/lib/jdl/core/models/jdl-application.d.ts +1 -1
  437. package/dist/lib/jhipster/default-application-options.d.ts +7 -4
  438. package/dist/lib/jhipster/default-application-options.js +14 -5
  439. package/dist/lib/testing/github-group.d.ts +1 -1
  440. package/dist/lib/testing/github-group.js +5 -3
  441. package/dist/lib/testing/github-matrix.js +2 -2
  442. package/dist/lib/testing/github.d.ts +5 -1
  443. package/dist/lib/testing/github.js +18 -5
  444. package/dist/lib/testing/helpers.d.ts +14 -1
  445. package/dist/lib/testing/helpers.js +34 -2
  446. package/dist/lib/testing/sample-config.js +2 -2
  447. package/dist/lib/testing/support/entity-samples.d.ts +29 -29
  448. package/dist/lib/testing/support/entity-samples.js +2 -2
  449. package/dist/lib/types/application/application.d.ts +4 -2
  450. package/dist/lib/types/application/entity.d.ts +47 -9
  451. package/dist/lib/types/application/field.d.ts +11 -2
  452. package/dist/lib/types/application/property.d.ts +10 -0
  453. package/dist/lib/types/application/relationship.d.ts +5 -1
  454. package/dist/lib/types/application/tasks.d.ts +14 -4
  455. package/dist/lib/types/base/entity.d.ts +11 -1
  456. package/dist/lib/types/base/field.d.ts +6 -2
  457. package/dist/lib/types/base/property.d.ts +6 -0
  458. package/dist/lib/types/base/relationship.d.ts +3 -1
  459. package/dist/lib/types/base/translation.d.ts +1 -0
  460. package/dist/lib/utils/derived-property.d.ts +6 -0
  461. package/dist/lib/utils/derived-property.js +27 -0
  462. package/dist/lib/utils/object.d.ts +4 -4
  463. package/dist/lib/utils/yo-rc.d.ts +22 -13
  464. package/package.json +37 -37
  465. package/dist/generators/angular/types-export.d.ts +0 -1
  466. package/dist/generators/app/types-export.d.ts +0 -1
  467. package/dist/generators/base/types-export.d.ts +0 -4
  468. package/dist/generators/base-application/types-export.d.ts +0 -6
  469. package/dist/generators/base-core/types-export.d.ts +0 -1
  470. package/dist/generators/base-entity-changes/types-export.d.ts +0 -1
  471. package/dist/generators/bootstrap/types-export.d.ts +0 -1
  472. package/dist/generators/bootstrap-application/types-export.d.ts +0 -1
  473. package/dist/generators/bootstrap-application-base/types-export.d.ts +0 -1
  474. package/dist/generators/bootstrap-application-client/types-export.d.ts +0 -1
  475. package/dist/generators/bootstrap-application-server/types-export.d.ts +0 -1
  476. package/dist/generators/ci-cd/types-export.d.ts +0 -1
  477. package/dist/generators/client/types-export.d.ts +0 -1
  478. package/dist/generators/common/types-export.d.ts +0 -1
  479. package/dist/generators/cucumber/types-export.d.ts +0 -1
  480. package/dist/generators/cypress/types-export.d.ts +0 -1
  481. package/dist/generators/docker/types-export.d.ts +0 -1
  482. package/dist/generators/docker-compose/types-export.d.ts +0 -1
  483. package/dist/generators/entities/types-export.d.ts +0 -1
  484. package/dist/generators/entity/types-export.d.ts +0 -1
  485. package/dist/generators/export-jdl/types-export.d.ts +0 -1
  486. package/dist/generators/feign-client/types-export.d.ts +0 -1
  487. package/dist/generators/gatling/types-export.d.ts +0 -1
  488. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/build-matrix.mjs.ejs +0 -22
  489. package/dist/generators/generate-blueprint/types-export.d.ts +0 -1
  490. package/dist/generators/git/types-export.d.ts +0 -1
  491. package/dist/generators/gradle/types-export.d.ts +0 -1
  492. package/dist/generators/heroku/types-export.d.ts +0 -1
  493. package/dist/generators/info/types-export.d.ts +0 -1
  494. package/dist/generators/init/types-export.d.ts +0 -1
  495. package/dist/generators/java/types-export.d.ts +0 -1
  496. package/dist/generators/jdl/types-export.d.ts +0 -1
  497. package/dist/generators/kubernetes/types-export.d.ts +0 -1
  498. package/dist/generators/kubernetes-helm/types-export.d.ts +0 -1
  499. package/dist/generators/kubernetes-knative/types-export.d.ts +0 -1
  500. package/dist/generators/languages/types-export.d.ts +0 -1
  501. package/dist/generators/liquibase/types-export.d.ts +0 -1
  502. package/dist/generators/maven/types-export.d.ts +0 -1
  503. package/dist/generators/project-name/types-export.d.ts +0 -1
  504. package/dist/generators/react/templates/src/main/webapp/microfrontends/entities-menu.tsx.ejs +0 -3
  505. package/dist/generators/react/templates/src/main/webapp/microfrontends/entities-routes.tsx.ejs +0 -3
  506. package/dist/generators/react/types-export.d.ts +0 -1
  507. package/dist/generators/server/types-export.d.ts +0 -1
  508. package/dist/generators/spring-boot/types-export.d.ts +0 -1
  509. package/dist/generators/spring-cache/types-export.d.ts +0 -1
  510. package/dist/generators/spring-cloud-stream/types-export.d.ts +0 -1
  511. package/dist/generators/spring-data-cassandra/types-export.d.ts +0 -1
  512. package/dist/generators/spring-data-couchbase/types-export.d.ts +0 -1
  513. package/dist/generators/spring-data-elasticsearch/types-export.d.ts +0 -1
  514. package/dist/generators/spring-data-mongodb/types-export.d.ts +0 -1
  515. package/dist/generators/spring-data-neo4j/types-export.d.ts +0 -1
  516. package/dist/generators/spring-data-relational/types-export.d.ts +0 -1
  517. package/dist/generators/spring-websocket/types-export.d.ts +0 -1
  518. package/dist/generators/upgrade/types-export.d.ts +0 -1
  519. package/dist/generators/vue/templates/src/main/webapp/microfrontends/entities-menu-test.vue.ejs +0 -7
  520. package/dist/generators/vue/templates/src/main/webapp/microfrontends/entities-menu.component-test.ts.ejs +0 -6
  521. package/dist/generators/vue/templates/src/main/webapp/microfrontends/entities-router-test.ts.ejs +0 -1
  522. package/dist/generators/vue/types-export.d.ts +0 -1
  523. package/dist/generators/workspaces/types-export.d.ts +0 -1
@@ -345,7 +345,7 @@ To stop and remove the containers, run:
345
345
  docker compose -f <%- dockerServicesDir %>services.yml down
346
346
  ```
347
347
 
348
- [Spring Docker Compose Integration](https://docs.spring.io/spring-boot/reference/features/dev-services.html) is enable by default. It's possible to disable it in application.yml:
348
+ [Spring Docker Compose Integration](https://docs.spring.io/spring-boot/reference/features/dev-services.html) is enabled by default. It's possible to disable it in application.yml:
349
349
 
350
350
  ```yaml
351
351
  spring:
@@ -264,10 +264,15 @@ task cleanResources(type: Delete) {
264
264
  delete "build/resources"
265
265
  }
266
266
 
267
- <%_ if (embeddableLaunchScript) { _%>
267
+ <%_ if ( embeddableLaunchScript || databaseTypeCouchbase ) { _%>
268
268
 
269
269
  bootJar {
270
+ <%_ if ( databaseTypeCouchbase ) { _%>
271
+ loaderImplementation = org.springframework.boot.loader.tools.LoaderImplementation.CLASSIC
272
+ <%_ } _%>
273
+ <%_ if ( embeddableLaunchScript ) { _%>
270
274
  launchScript()
275
+ <%_ } _%>
271
276
  }
272
277
  <%_ } _%>
273
278
 
@@ -51,59 +51,18 @@ bootRun {
51
51
  <%_ if (!skipClient) { _%>
52
52
  task webapp(type: NpmTask) {
53
53
  inputs.property('appVersion', project.version)
54
- inputs.files("package-lock.json")
55
- .withPropertyName('package-lock')
56
- .withPathSensitivity(PathSensitivity.RELATIVE)
57
54
  inputs.files("build.gradle")
58
55
  .withPropertyName('build.gradle')
59
56
  .withPathSensitivity(PathSensitivity.RELATIVE)
60
- <%_ if (clientFrameworkAngular) { _%>
61
- inputs.files("angular.json")
62
- .withPropertyName('angular.json')
63
- .withPathSensitivity(PathSensitivity.RELATIVE)
64
- inputs.files("tsconfig.json", "tsconfig.app.json")
65
- .withPropertyName("tsconfig")
66
- .withPathSensitivity(PathSensitivity.RELATIVE)
67
- inputs.dir("<%= CLIENT_WEBPACK_DIR %>")
68
- .withPropertyName("<%= CLIENT_WEBPACK_DIR %>")
69
- .withPathSensitivity(PathSensitivity.RELATIVE)
70
- <%_ } _%>
71
- inputs.dir("<%= clientSrcDir %>")
72
- .withPropertyName("webapp-source-dir")
73
- .withPathSensitivity(PathSensitivity.RELATIVE)
74
- <%_ if (clientFrameworkReact) { _%>
75
- inputs.files("tsconfig.json")
76
- .withPropertyName("tsconfig")
77
- .withPathSensitivity(PathSensitivity.RELATIVE)
78
-
79
- def webpackDevFiles = fileTree("<%= CLIENT_WEBPACK_DIR %>")
80
- webpackDevFiles.exclude("webpack.prod.js")
81
- inputs.files(webpackDevFiles)
82
- .withPropertyName("webpack-dir")
83
- .withPathSensitivity(PathSensitivity.RELATIVE)
84
- <%_ } _%>
85
- <%_ if (clientFrameworkVue) { _%>
86
- inputs.files("tsconfig.json", "tsconfig.app.json")
87
- .withPropertyName("tsconfig")
88
- .withPathSensitivity(PathSensitivity.RELATIVE)
89
-
90
- inputs.files(".postcssrc")
91
- .withPropertyName("postcssrc")
57
+ inputs.files(<%- javaNodeBuildPaths.filter(file => !file.endsWith('/')).map(file => `'${file}'`).join(', ') %>)
58
+ .withPropertyName('<%= clientFramework %>-build')
92
59
  .withPathSensitivity(PathSensitivity.RELATIVE)
93
- <%_ if (microfrontend) { _%>
94
-
95
- def webpackDevFiles = fileTree("<%= CLIENT_WEBPACK_DIR %>")
96
- webpackDevFiles.exclude("webpack.prod.js")
97
- inputs.files(webpackDevFiles)
98
- .withPropertyName("webpack-dir")
99
- .withPathSensitivity(PathSensitivity.RELATIVE)
100
- <%_ } else { _%>
101
-
102
- inputs.files("vite.config.ts")
103
- .withPropertyName("vite")
60
+ <%_ for (const file of javaNodeBuildPaths.filter(file => file.endsWith('/'))) { _%>
61
+ inputs.dir("<%= file %>")
62
+ .withPropertyName("<%= file %>")
104
63
  .withPathSensitivity(PathSensitivity.RELATIVE)
105
64
  <%_ } _%>
106
- <%_ } _%>
65
+
107
66
  outputs.dir("<%= clientDistDir %>")
108
67
  .withPropertyName("webapp-build-dir")
109
68
 
@@ -149,7 +108,7 @@ task integrationTest(type: Test) {
149
108
  events 'FAILED', 'SKIPPED'
150
109
  exceptionFormat "full"
151
110
  }
152
- systemProperty('spring.profiles.active', 'testdev')
111
+ systemProperty('spring.profiles.active', 'test,testdev')
153
112
  systemProperty('java.security.egd', 'file:/dev/./urandom')
154
113
  // uncomment if the tests reports are not generated
155
114
  // see https://github.com/jhipster/generator-jhipster/pull/2771 and https://github.com/jhipster/generator-jhipster/pull/4484
@@ -82,7 +82,7 @@ task integrationTest(type: Test) {
82
82
  events 'FAILED', 'SKIPPED'
83
83
  exceptionFormat "full"
84
84
  }
85
- systemProperty('spring.profiles.active', 'testprod')
85
+ systemProperty('spring.profiles.active', 'test,testprod')
86
86
  systemProperty('java.security.egd', 'file:/dev/./urandom')
87
87
  // uncomment if the tests reports are not generated
88
88
  // see https://github.com/jhipster/generator-jhipster/pull/2771 and https://github.com/jhipster/generator-jhipster/pull/4484
@@ -31,8 +31,5 @@
31
31
  "config": {
32
32
  "default_environment": "prod"
33
33
  },
34
- "scripts": {
35
- "prettier:check": "prettier --check \"{,src/**/,.blueprint/**/}*.{<%= prettierExtensions %>}\"",
36
- "prettier:format": "prettier --write \"{,src/**/,.blueprint/**/}*.{<%= prettierExtensions %>}\""
37
- }
34
+ "scripts": {}
38
35
  }
@@ -42,6 +42,7 @@
42
42
  Build properties
43
43
  The spring-boot version should match the one managed by https://mvnrepository.com/artifact/tech.jhipster/jhipster-dependencies/${jhipster-dependencies.version}
44
44
  -->
45
+ <spring.profiles.active>dev</spring.profiles.active>
45
46
  <maven.version>3.2.5</maven.version>
46
47
  <resource.delimiter>@</resource.delimiter>
47
48
  <java.version><%= JAVA_VERSION %></java.version>
@@ -527,6 +528,9 @@
527
528
  </executions>
528
529
  <configuration>
529
530
  <mainClass>${start-class}</mainClass>
531
+ <%_ if (databaseTypeCouchbase) { _%>
532
+ <loaderImplementation>CLASSIC</loaderImplementation>
533
+ <%_ } _%>
530
534
  <%_ if (embeddableLaunchScript) { _%>
531
535
  <executable>true</executable>
532
536
  <%_ } _%>
@@ -611,7 +615,7 @@
611
615
  <properties>
612
616
  <!-- default Spring profiles -->
613
617
  <spring.profiles.active>dev${profile.tls}<%_ if (databaseMigrationLiquibase) { _%>${profile.no-liquibase}<%_ } _%></spring.profiles.active>
614
- <profile.test>testdev</profile.test>
618
+ <profile.test>test,testdev</profile.test>
615
619
  </properties>
616
620
  <dependencies>
617
621
  <dependency>
@@ -626,7 +630,7 @@
626
630
  <properties>
627
631
  <!-- default Spring profiles -->
628
632
  <spring.profiles.active>prod${profile.api-docs}${profile.tls}${profile.e2e}<%_ if (databaseMigrationLiquibase) { _%>${profile.no-liquibase}<%_ } _%></spring.profiles.active>
629
- <profile.test>testprod</profile.test>
633
+ <profile.test>test,testprod</profile.test>
630
634
  </properties>
631
635
  <build>
632
636
  <plugins>
@@ -32,7 +32,7 @@ pluginManagement {
32
32
  mavenCentral()
33
33
  }
34
34
  dependencies {
35
- classpath group: 'org.liquibase', name: 'liquibase-core', version: "${liquibaseCoreVersion}"
35
+ classpath group: 'org.liquibase', name: 'liquibase-core', version: "${liquibaseVersion}"
36
36
  }
37
37
  }
38
38
  <%_ } _%>
@@ -203,7 +203,7 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
203
203
  <%_ if (!authenticationTypeOauth2) { _%>
204
204
  <%_ if (databaseTypeCouchbase || databaseTypeMongodb || databaseTypeNeo4j) { _%>
205
205
  <%_ if (cacheProviderAny) { _%>
206
- @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
206
+ @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE, unless="#result == null")
207
207
  <%_ } _%>
208
208
  <%_ } _%>
209
209
  <% if (databaseTypeCouchbase) { %>default <% } %><%= optionalOrMono %><<%= user.persistClass %>> findOneByEmailIgnoreCase(String email)<% if (!databaseTypeCouchbase) { %>;<% } else { %> {
@@ -219,14 +219,14 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
219
219
  <%_ } _%>
220
220
  <%_ if (databaseTypeCouchbase) { _%>
221
221
  <%_ if (cacheProviderAny) { _%>
222
- @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
222
+ @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
223
223
  <%_ } _%>
224
224
  default <%= optionalOrMono %><<%= user.persistClass %>> findOneByLogin(String login) {
225
225
  return findById(login);
226
226
  }
227
227
  <%_ } else if (databaseTypeMongodb || databaseTypeNeo4j) { _%>
228
228
  <%_ if (cacheProviderAny) { _%>
229
- @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
229
+ @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
230
230
  <%_ } _%>
231
231
  <%= optionalOrMono %><<%= user.persistClass %>> findOneByLogin(String login);
232
232
  <%_ } else { _%>
@@ -241,14 +241,14 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
241
241
  <%_ if (databaseTypeSql) { _%>
242
242
  @EntityGraph(attributePaths = "authorities")
243
243
  <%_ if (cacheProviderAny) { _%>
244
- @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
244
+ @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
245
245
  <%_ } _%>
246
246
  Optional<<%= user.persistClass %>> findOneWithAuthoritiesByLogin(String login);
247
247
 
248
248
  <%_ if (!authenticationTypeOauth2) { _%>
249
249
  @EntityGraph(attributePaths = "authorities")
250
250
  <%_ if (cacheProviderAny) { _%>
251
- @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
251
+ @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE, unless="#result == null")
252
252
  <%_ } _%>
253
253
  Optional<<%= user.persistClass %>> findOneWithAuthoritiesByEmailIgnoreCase(String email);
254
254
 
@@ -609,7 +609,7 @@ public class UserRepository {
609
609
  }
610
610
 
611
611
  <%_ if (cacheProviderAny) { _%>
612
- @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
612
+ @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE, unless="#result == null")
613
613
  <%_ } _%>
614
614
  public <%= optionalOrMono %><<%= user.persistClass %>> findOneByEmailIgnoreCase(String email) {
615
615
  BoundStatement stmt = findOneByEmailStmt.bind().setString("email", email.toLowerCase());
@@ -617,7 +617,7 @@ public class UserRepository {
617
617
  }
618
618
 
619
619
  <%_ if (cacheProviderAny) { _%>
620
- @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
620
+ @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
621
621
  <%_ } _%>
622
622
  public <%= optionalOrMono %><<%= user.persistClass %>> findOneByLogin(String login) {
623
623
  BoundStatement stmt = findOneByLoginStmt.bind().setString("login", login);
@@ -54,6 +54,9 @@ import org.slf4j.LoggerFactory;
54
54
  <%_ } _%>
55
55
  <%_ if (cacheProviderAny) { _%>
56
56
  import org.springframework.cache.CacheManager;
57
+ <%_ if (databaseTypeCouchbase) { _%>
58
+ import org.springframework.cache.annotation.CacheEvict;
59
+ <%_ } _%>
57
60
  <%_ } _%>
58
61
  <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
59
62
  <%_ if (!reactive) { _%>
@@ -573,6 +576,9 @@ public class UserService {
573
576
  .map(<%= user.adminUserDto %>::new);
574
577
  }
575
578
 
579
+ <%_ if (databaseTypeCouchbase && cacheProviderAny) { _%>
580
+ @CacheEvict(cacheNames = UserRepository.USERS_BY_LOGIN_CACHE, key = "#login")
581
+ <%_ } _%>
576
582
  <%_ if (reactive) { _%>
577
583
  <%_ if (databaseTypeSql) { _%>
578
584
  @Transactional
@@ -814,7 +820,7 @@ public class UserService {
814
820
  * Persistent Token are used for providing automatic authentication, they should be automatically deleted after
815
821
  * 30 days.
816
822
  * <p>
817
- * This is scheduled to get fired everyday, at midnight.
823
+ * This is scheduled to get fired every day, at midnight.
818
824
  */
819
825
  @Scheduled(cron = "0 0 0 * * ?")
820
826
  public void removeOldPersistentTokens() {
@@ -832,7 +838,7 @@ public class UserService {
832
838
  /**
833
839
  * Not activated users should be automatically deleted after 3 days.
834
840
  * <p>
835
- * This is scheduled to get fired everyday, at 01:00 (am).
841
+ * This is scheduled to get fired every day, at 01:00 (am).
836
842
  */
837
843
  @Scheduled(cron = "0 0 1 * * ?")
838
844
  public void removeNotActivatedUsers() {
@@ -1091,9 +1097,9 @@ public class UserService {
1091
1097
  <%_ if (cacheProviderAny && !databaseTypeNo) { _%>
1092
1098
 
1093
1099
  private void clearUserCaches(<%= user.persistClass %> user) {
1094
- Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).evict(user.getLogin());
1100
+ Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).evictIfPresent(user.getLogin());
1095
1101
  if (user.getEmail() != null) {
1096
- Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).evict(user.getEmail());
1102
+ Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).evictIfPresent(user.getEmail());
1097
1103
  }
1098
1104
  }
1099
1105
  <%_ } _%>
@@ -29,7 +29,9 @@ import java.util.stream.StreamSupport;
29
29
  <%_ } _%>
30
30
  <%_ if (!authenticationTypeOauth2) { _%>
31
31
  import org.springframework.data.domain.Sort;
32
+ <%_ if (reactive) { _%>
32
33
  import java.util.Collections;
34
+ <%_ } _%>
33
35
  <%_ } _%>
34
36
  import <%= packageName %>.service.UserService;
35
37
  import <%= packageName %>.service.dto.<%= user.dtoClass %>;
@@ -24,7 +24,6 @@ import <%= packageName %>.repository.UserRepository;
24
24
  import <%= packageName %>.security.AuthoritiesConstants;
25
25
  import <%= packageName %>.service.MailService;
26
26
  import org.springframework.data.domain.Sort;
27
- import java.util.Collections;
28
27
  import <%= packageName %>.service.UserService;
29
28
  import <%= packageName %>.service.dto.<%= user.adminUserDto %>;
30
29
  import <%= packageName %>.web.rest.errors.BadRequestAlertException;
@@ -77,6 +76,7 @@ import java.net.URISyntaxException;
77
76
  import java.util.ArrayList;
78
77
  import java.util.List;
79
78
  import java.util.Arrays;
79
+ import java.util.Collections;
80
80
  <%_ } else { _%>
81
81
  import java.util.*;
82
82
  <%_ } _%>
@@ -45,16 +45,9 @@ import org.springframework.security.web.SecurityFilterChain;
45
45
  <%_ if (!skipClient || authenticationUsesCsrf) { _%>
46
46
  import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
47
47
  <%_ } _%>
48
- <%_ if (authenticationUsesCsrf) { _%>
49
- import tech.jhipster.web.filter.CookieCsrfFilter;
50
- <%_ } _%>
51
48
  <%_ if (!skipClient) { _%>
52
49
  import <%= packageName %>.web.filter.SpaWebFilter;
53
50
  <%_ } _%>
54
- <%_ if (applicationTypeGateway) { _%>
55
- import org.springframework.beans.BeansException;
56
- import org.springframework.beans.factory.config.BeanPostProcessor;
57
- <%_ } _%>
58
51
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
59
52
  import jakarta.servlet.http.HttpServletRequest;
60
53
  import jakarta.servlet.http.HttpServletResponse;
@@ -117,10 +110,6 @@ import <%= packageName %>.security.oauth2.CustomClaimConverter;
117
110
  <%_ if(!skipClient) { _%>
118
111
  import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
119
112
  <%_ } _%>
120
- <%_ if (applicationTypeGateway) { _%>
121
- import org.springframework.security.web.server.WebFilterChainProxy;
122
- import org.springframework.security.web.server.firewall.ServerWebExchangeFirewall;
123
- <%_ } _%>
124
113
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
125
114
  import org.springframework.util.StringUtils;
126
115
  <%_ } _%>
@@ -183,17 +172,12 @@ public class SecurityConfiguration {
183
172
  <%_ if (!skipClient) { _%>
184
173
  .addFilterAfter(new SpaWebFilter(), BasicAuthenticationFilter.class)
185
174
  <%_ } _%>
186
- <%_ if (!applicationTypeMicroservice) { _%>
187
- <%_ if (authenticationUsesCsrf) { _%>
188
- .addFilterAfter(new CookieCsrfFilter(), BasicAuthenticationFilter.class)
189
- <%_ } _%>
190
- <%_ } _%>
191
175
  <%_ if (!skipClient) { _%>
192
176
  .headers(headers -> headers
193
177
  .contentSecurityPolicy(csp -> csp.policyDirectives(jHipsterProperties.getSecurity().getContentSecurityPolicy()))
194
178
  .frameOptions(FrameOptionsConfig::sameOrigin)
195
179
  .referrerPolicy(referrer -> referrer.policy(ReferrerPolicyHeaderWriter.ReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN))
196
- .permissionsPolicy(permissions ->
180
+ .permissionsPolicyHeader(permissions ->
197
181
  permissions.policy("camera=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), sync-xhr=()")))
198
182
  <%_ } _%>
199
183
  .authorizeHttpRequests(authz ->
@@ -204,6 +188,9 @@ public class SecurityConfiguration {
204
188
  .requestMatchers(mvc.pattern("/*.ico"), mvc.pattern("/*.png"), mvc.pattern("/*.svg"), mvc.pattern("/*.webapp")).permitAll()
205
189
  <%_ if (clientBundlerVite) { _%>
206
190
  .requestMatchers(mvc.pattern("/assets/**")).permitAll()
191
+ <%_ } else if (clientBundlerExperimentalEsbuild) { _%>
192
+ .requestMatchers(mvc.pattern("/content/**")).permitAll()
193
+ .requestMatchers(mvc.pattern("/resources/**")).permitAll()
207
194
  <%_ } else { _%>
208
195
  .requestMatchers(mvc.pattern("/app/**")).permitAll()
209
196
  .requestMatchers(mvc.pattern("/i18n/**")).permitAll()
@@ -384,15 +371,15 @@ public class SecurityConfiguration {
384
371
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
385
372
 
386
373
  /**
387
- * Custom CSRF handler to provide BREACH protection.
374
+ * Custom CSRF handler to provide BREACH protection for Single-Page Applications (SPA).
388
375
  *
389
376
  * @see <a href="https://docs.spring.io/spring-security/reference/servlet/exploits/csrf.html#csrf-integration-javascript-spa">Spring Security Documentation - Integrating with CSRF Protection</a>
390
377
  * @see <a href="https://github.com/jhipster/generator-jhipster/pull/25907">JHipster - use customized SpaCsrfTokenRequestHandler to handle CSRF token</a>
391
378
  * @see <a href="https://stackoverflow.com/q/74447118/65681">CSRF protection not working with Spring Security 6</a>
392
379
  */
393
- static final class SpaCsrfTokenRequestHandler extends CsrfTokenRequestAttributeHandler {
394
-
395
- private final CsrfTokenRequestHandler delegate = new XorCsrfTokenRequestAttributeHandler();
380
+ static final class SpaCsrfTokenRequestHandler implements CsrfTokenRequestHandler {
381
+ private final CsrfTokenRequestHandler plain = new CsrfTokenRequestAttributeHandler();
382
+ private final CsrfTokenRequestHandler xor = new XorCsrfTokenRequestAttributeHandler();
396
383
 
397
384
  @Override
398
385
  public void handle(HttpServletRequest request, HttpServletResponse response, Supplier<CsrfToken> csrfToken) {
@@ -400,7 +387,10 @@ public class SecurityConfiguration {
400
387
  * Always use XorCsrfTokenRequestAttributeHandler to provide BREACH protection of
401
388
  * the CsrfToken when it is rendered in the response body.
402
389
  */
403
- this.delegate.handle(request, response, csrfToken);
390
+ this.xor.handle(request, response, csrfToken);
391
+
392
+ // Render the token value to a cookie by causing the deferred token to be loaded.
393
+ csrfToken.get();
404
394
  }
405
395
 
406
396
  @Override
@@ -412,7 +402,7 @@ public class SecurityConfiguration {
412
402
  * raw CsrfToken.
413
403
  */
414
404
  if (StringUtils.hasText(request.getHeader(csrfToken.getHeaderName()))) {
415
- return super.resolveCsrfTokenValue(request, csrfToken);
405
+ return this.plain.resolveCsrfTokenValue(request, csrfToken);
416
406
  }
417
407
  /*
418
408
  * In all other cases (e.g. if the request contains a request parameter), use
@@ -420,24 +410,8 @@ public class SecurityConfiguration {
420
410
  * when a server-side rendered form includes the _csrf request parameter as a
421
411
  * hidden input.
422
412
  */
423
- return this.delegate.resolveCsrfTokenValue(request, csrfToken);
413
+ return this.xor.resolveCsrfTokenValue(request, csrfToken);
424
414
  }
425
415
  }
426
416
  <%_ } _%>
427
- <%_ if (applicationTypeGateway) { _%>
428
-
429
- // Fix for Spring Boot 3.3.5: https://github.com/spring-cloud/spring-cloud-gateway/issues/3568
430
- @Bean
431
- BeanPostProcessor beanPostProcessor() {
432
- return new BeanPostProcessor() {
433
- @Override
434
- public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
435
- if (bean instanceof WebFilterChainProxy springSecurity) {
436
- springSecurity.setFirewall(ServerWebExchangeFirewall.INSECURE_NOOP);
437
- }
438
- return bean;
439
- }
440
- };
441
- }
442
- <%_ } _%>
443
417
  }
@@ -39,10 +39,6 @@ import org.springframework.boot.autoconfigure.security.SecurityProperties;
39
39
  <%_ if (!skipClient) { _%>
40
40
  import <%= packageName %>.web.filter.SpaWebFilter;
41
41
  <%_ } _%>
42
- <%_ if (applicationTypeGateway) { _%>
43
- import org.springframework.beans.BeansException;
44
- import org.springframework.beans.factory.config.BeanPostProcessor;
45
- <%_ } _%>
46
42
  import org.springframework.context.annotation.Bean;
47
43
  import org.springframework.context.annotation.Configuration;
48
44
  <%_ if (authenticationTypeOauth2) { _%>
@@ -118,10 +114,6 @@ import org.springframework.security.web.server.savedrequest.NoOpServerRequestCac
118
114
  <%_ } _%>
119
115
  import org.springframework.security.web.server.util.matcher.NegatedServerWebExchangeMatcher;
120
116
  import org.springframework.security.web.server.util.matcher.OrServerWebExchangeMatcher;
121
- <%_ if (applicationTypeGateway) { _%>
122
- import org.springframework.security.web.server.WebFilterChainProxy;
123
- import org.springframework.security.web.server.firewall.ServerWebExchangeFirewall;
124
- <%_ } _%>
125
117
  <%_ if (authenticationUsesCsrf) { _%>
126
118
  import reactor.core.publisher.Mono;
127
119
  <%_ } _%>
@@ -225,6 +217,9 @@ public class SecurityConfiguration {
225
217
  pathMatchers(
226
218
  <%_ if (clientBundlerVite) { _%>
227
219
  "/assets/**",
220
+ <%_ } else if (clientBundlerExperimentalEsbuild) { _%>
221
+ "/content/**",
222
+ "/resources/**",
228
223
  <%_ } else { _%>
229
224
  "/app/**",
230
225
  "/i18n/**",
@@ -490,20 +485,4 @@ public class SecurityConfiguration {
490
485
  return Mono.empty();
491
486
  }
492
487
  <%_ } _%>
493
- <%_ if (applicationTypeGateway) { _%>
494
-
495
- // Fix for Spring Boot 3.3.5: https://github.com/spring-cloud/spring-cloud-gateway/issues/3568
496
- @Bean
497
- BeanPostProcessor beanPostProcessor() {
498
- return new BeanPostProcessor() {
499
- @Override
500
- public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
501
- if (bean instanceof WebFilterChainProxy springSecurity) {
502
- springSecurity.setFirewall(ServerWebExchangeFirewall.INSECURE_NOOP);
503
- }
504
- return bean;
505
- }
506
- };
507
- }
508
- <%_ } _%>
509
488
  }
@@ -88,11 +88,11 @@ public class MailService {
88
88
  public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
89
89
  <%_ if (reactive) { _%>
90
90
  Mono.defer(() -> {
91
- this.sendEmailSync(to, subject, content, isMultipart, isHtml);
91
+ sendEmailSync(to, subject, content, isMultipart, isHtml);
92
92
  return Mono.empty();
93
93
  }).subscribe();
94
94
  <%_ } else { _%>
95
- this.sendEmailSync(to, subject, content, isMultipart, isHtml);
95
+ sendEmailSync(to, subject, content, isMultipart, isHtml);
96
96
  <%_ } _%>
97
97
  }
98
98
 
@@ -127,11 +127,11 @@ public class MailService {
127
127
  public void sendEmailFromTemplate(<%= user.persistClass %> user, String templateName, String titleKey) {
128
128
  <%_ if (reactive) { _%>
129
129
  Mono.defer(() -> {
130
- this.sendEmailFromTemplateSync(user, templateName, titleKey);
130
+ sendEmailFromTemplateSync(user, templateName, titleKey);
131
131
  return Mono.empty();
132
132
  }).subscribe();
133
133
  <%_ } else { _%>
134
- this.sendEmailFromTemplateSync(user, templateName, titleKey);
134
+ sendEmailFromTemplateSync(user, templateName, titleKey);
135
135
  <%_ } _%>
136
136
  }
137
137
 
@@ -146,7 +146,7 @@ public class MailService {
146
146
  context.setVariable(BASE_URL, jHipsterProperties.getMail().getBaseUrl());
147
147
  String content = templateEngine.process(templateName, context);
148
148
  String subject = messageSource.getMessage(titleKey, null, locale);
149
- this.sendEmailSync(user.getEmail(), subject, content, false, true);
149
+ sendEmailSync(user.getEmail(), subject, content, false, true);
150
150
  }
151
151
  <%_ if (!authenticationTypeOauth2) { _%>
152
152
 
@@ -155,7 +155,7 @@ public class MailService {
155
155
  <%_ } _%>
156
156
  public void sendActivationEmail(<%= user.persistClass %> user) {
157
157
  LOG.debug("Sending activation email to '{}'", user.getEmail());
158
- this.<%- localSendEmailFromTemplateApi %>(user, "mail/activationEmail", "email.activation.title");
158
+ <%- localSendEmailFromTemplateApi %>(user, "mail/activationEmail", "email.activation.title");
159
159
  }
160
160
 
161
161
  <%_ if (!reactive) { _%>
@@ -163,7 +163,7 @@ public class MailService {
163
163
  <%_ } _%>
164
164
  public void sendCreationEmail(<%= user.persistClass %> user) {
165
165
  LOG.debug("Sending creation email to '{}'", user.getEmail());
166
- this.<%- localSendEmailFromTemplateApi %>(user, "mail/creationEmail", "email.activation.title");
166
+ <%- localSendEmailFromTemplateApi %>(user, "mail/creationEmail", "email.activation.title");
167
167
  }
168
168
 
169
169
  <%_ if (!reactive) { _%>
@@ -171,7 +171,7 @@ public class MailService {
171
171
  <%_ } _%>
172
172
  public void sendPasswordResetMail(<%= user.persistClass %> user) {
173
173
  LOG.debug("Sending password reset email to '{}'", user.getEmail());
174
- this.<%- localSendEmailFromTemplateApi %>(user, "mail/passwordResetEmail", "email.reset.title");
174
+ <%- localSendEmailFromTemplateApi %>(user, "mail/passwordResetEmail", "email.reset.title");
175
175
  }
176
176
  <%_ } _%>
177
177
  }
@@ -22,7 +22,7 @@ import org.springframework.http.ResponseEntity;
22
22
  import org.springframework.security.core.annotation.AuthenticationPrincipal;
23
23
  import org.springframework.security.oauth2.client.registration.ClientRegistration;
24
24
  import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
25
- import org.springframework.security.oauth2.core.oidc.OidcIdToken;
25
+ import org.springframework.security.oauth2.core.oidc.user.OidcUser;
26
26
  import org.springframework.web.bind.annotation.PostMapping;
27
27
  import org.springframework.web.bind.annotation.RestController;
28
28
  import jakarta.servlet.http.HttpServletRequest;
@@ -44,18 +44,18 @@ public class LogoutResource {
44
44
  * {@code POST /api/logout} : logout the current user.
45
45
  *
46
46
  * @param request the {@link HttpServletRequest}.
47
- * @param idToken the ID token.
47
+ * @param oidcUser the OIDC user.
48
48
  * @return the {@link ResponseEntity} with status {@code 200 (OK)} and a body with a global logout URL.
49
49
  */
50
50
  @PostMapping("/api/logout")
51
- public ResponseEntity<?> logout(HttpServletRequest request, @AuthenticationPrincipal(expression = "idToken") OidcIdToken idToken) {
51
+ public ResponseEntity<?> logout(HttpServletRequest request, @AuthenticationPrincipal OidcUser oidcUser) {
52
52
  StringBuilder logoutUrl = new StringBuilder();
53
53
 
54
54
  logoutUrl.append(this.registration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
55
55
 
56
56
  String originUrl = request.getHeader(HttpHeaders.ORIGIN);
57
57
 
58
- logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
58
+ logoutUrl.append("?id_token_hint=").append(oidcUser.getIdToken().getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
59
59
 
60
60
  request.getSession().invalidate();
61
61
  return ResponseEntity.ok().body(Map.of("logoutUrl", logoutUrl.toString()));
@@ -22,6 +22,7 @@ import org.springframework.security.core.annotation.AuthenticationPrincipal;
22
22
  import org.springframework.security.oauth2.client.registration.ClientRegistration;
23
23
  import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
24
24
  import org.springframework.security.oauth2.core.oidc.OidcIdToken;
25
+ import org.springframework.security.oauth2.core.oidc.user.OidcUser;
25
26
  import org.springframework.web.bind.annotation.PostMapping;
26
27
  import org.springframework.web.bind.annotation.RestController;
27
28
  import org.springframework.web.server.WebSession;
@@ -43,18 +44,18 @@ public class LogoutResource {
43
44
  /**
44
45
  * {@code POST /api/logout} : logout the current user.
45
46
  *
46
- * @param idToken the ID token.
47
+ * @param oidcUser the OIDC user.
47
48
  * @param request a {@link ServerHttpRequest} request.
48
49
  * @param session the current {@link WebSession}.
49
50
  * @return status {@code 200 (OK)} and a body with a global logout URL.
50
51
  */
51
52
  @PostMapping("/api/logout")
52
53
  public Mono<Map<String, String>> logout(
53
- @AuthenticationPrincipal(expression = "idToken") OidcIdToken idToken,
54
+ @AuthenticationPrincipal OidcUser oidcUser,
54
55
  ServerHttpRequest request,
55
56
  WebSession session
56
57
  ) {
57
- return session.invalidate().then(this.registration.map(oidc -> prepareLogoutUri(request, oidc, idToken)));
58
+ return session.invalidate().then(this.registration.map(oidc -> prepareLogoutUri(request, oidc, oidcUser.getIdToken())));
58
59
  }
59
60
 
60
61
  private Map<String, String> prepareLogoutUri(ServerHttpRequest request, ClientRegistration clientRegistration, OidcIdToken idToken) {
@@ -302,7 +302,7 @@ jhipster:
302
302
  <%_ if (microfrontend) { _%>
303
303
  # Ports <%= devServerPort + 1 %>-<%= devServerPort + 9 %> are allowed for microfrontend development
304
304
  <%_ } _%>
305
- allowed-origins: "http://localhost:8100,https://localhost:8100,http://localhost:9000,https://localhost:9000<%_ if (!skipClient) { _%>,http://localhost:<%= devServerPort %>,https://localhost:<%= devServerPort %><%_ if (microfrontend) { for (let port = 1; port < 10; port++) { _%>,http://localhost:<%= devServerPort + port %>,https://localhost:<%= devServerPort + port %><%_ } _%><%_ } } _%>"
305
+ allowed-origins: "http://localhost:8100,https://localhost:8100<%_ if (devServerPortProxy) { _%>,http://localhost:<%= devServerPortProxy %>,https://localhost:<%= devServerPortProxy %><%_ } _%><%_ if (!skipClient) { _%>,http://localhost:<%= devServerPort %>,https://localhost:<%= devServerPort %><%_ if (microfrontend) { for (let port = 1; port < 10; port++) { _%>,http://localhost:<%= devServerPort + port %>,https://localhost:<%= devServerPort + port %><%_ } _%><%_ } } _%>"
306
306
  # Enable CORS when running in GitHub Codespaces
307
307
  allowed-origin-patterns: 'https://*.githubpreview.dev'
308
308
  allowed-methods: "*"
@@ -31,7 +31,15 @@ server:
31
31
  key-store-password: password
32
32
  key-store-type: PKCS12
33
33
  key-alias: selfsigned
34
- ciphers: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
34
+ ciphers:
35
+ - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
36
+ - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
37
+ - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
38
+ - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
39
+ - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
40
+ - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
41
+ - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
42
+ - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
35
43
  enabled-protocols: TLSv1.2
36
44
  http2:
37
45
  enabled: true