generator-jhipster 8.7.1 → 8.7.3

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 (300) hide show
  1. package/README.md +3 -3
  2. package/dist/cli/commands.d.mts +89 -89
  3. package/dist/cli/environment-builder.d.mts +7 -6
  4. package/dist/cli/environment-builder.mjs +5 -3
  5. package/dist/cli/jhipster-command.d.mts +2 -2
  6. package/dist/cli/jhipster-command.mjs +13 -4
  7. package/dist/cli/program.d.mts +53 -36
  8. package/dist/cli/program.mjs +41 -32
  9. package/dist/cli/utils.d.mts +2 -3
  10. package/dist/cli/utils.mjs +11 -21
  11. package/dist/generators/angular/generator.js +2 -2
  12. package/dist/generators/angular/resources/package.json +13 -13
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +2 -2
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.service.ts.ejs +2 -2
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +2 -2
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +2 -2
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.service.ts.ejs +2 -2
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +2 -2
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.ts.ejs +2 -2
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +2 -2
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.service.ts.ejs +2 -2
  22. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +2 -2
  23. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.service.ts.ejs +2 -2
  24. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.ts.ejs +2 -2
  25. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.service.ts.ejs +2 -2
  26. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.ts.ejs +2 -2
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.ts.ejs +2 -2
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +2 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway-routes.service.ts.ejs +2 -2
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.ts.ejs +1 -1
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.ts.ejs +2 -2
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.model.ts.ejs +1 -3
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.service.ts.ejs +2 -2
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +1 -1
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +3 -3
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.service.ts.ejs +2 -2
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +1 -1
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +2 -2
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.model.ts.ejs +1 -6
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +2 -2
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.ts.ejs +1 -1
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.ts.ejs +2 -2
  43. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +5 -5
  44. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.ts.ejs +3 -3
  45. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +2 -2
  46. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +4 -4
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.ts.ejs +7 -7
  48. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-jwt.service.ts.ejs +3 -3
  49. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-session.service.ts.ejs +2 -2
  50. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/csrf.service.ts.ejs +1 -1
  51. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/state-storage.service.ts.ejs +3 -3
  52. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/notification.interceptor.ts.ejs +1 -1
  53. package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +5 -5
  54. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.ts.ejs +2 -2
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +4 -4
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +3 -3
  58. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +7 -7
  59. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +7 -7
  60. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  61. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/profile.service.ts.ejs +3 -3
  62. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +3 -3
  63. package/dist/generators/angular/templates/src/main/webapp/app/login/login.service.ts.ejs +4 -4
  64. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.ts.ejs +3 -3
  65. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.ts.ejs +1 -1
  66. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +2 -2
  67. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translate.directive.ts.ejs +2 -2
  68. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +3 -3
  69. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +1 -1
  70. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.service.ts.ejs +1 -1
  71. package/dist/generators/base/api.d.ts +10 -4
  72. package/dist/generators/base/generator.d.ts +4 -0
  73. package/dist/generators/base/generator.js +10 -1
  74. package/dist/generators/base/shared-data.js +2 -0
  75. package/dist/generators/base/support/faker.d.ts +1 -1
  76. package/dist/generators/base/support/faker.js +1 -1
  77. package/dist/generators/base/support/timestamp.js +10 -2
  78. package/dist/generators/base-application/support/prepare-entity.js +6 -1
  79. package/dist/generators/base-application/support/prepare-field.js +40 -16
  80. package/dist/generators/base-application/support/prepare-relationship.d.ts +1 -1
  81. package/dist/generators/base-application/support/task-type-inference.d.ts +18 -18
  82. package/dist/generators/base-application/types.d.ts +4 -0
  83. package/dist/generators/base-core/generator.d.ts +7 -4
  84. package/dist/generators/base-core/generator.js +31 -35
  85. package/dist/generators/base-workspaces/generator.d.ts +34 -1
  86. package/dist/generators/base-workspaces/generator.js +1 -1
  87. package/dist/generators/base-workspaces/internal/docker-base.js +1 -3
  88. package/dist/generators/bootstrap/support/eslint-transform.js +2 -2
  89. package/dist/generators/bootstrap/support/java-unused-imports-transform.js +2 -2
  90. package/dist/generators/bootstrap/support/prettier-support.js +2 -2
  91. package/dist/generators/bootstrap-application-base/generator.d.ts +2 -2
  92. package/dist/generators/bootstrap-application-base/generator.js +19 -5
  93. package/dist/generators/bootstrap-application-base/utils.d.ts +3 -3
  94. package/dist/generators/bootstrap-application-base/utils.js +9 -3
  95. package/dist/generators/bootstrap-workspaces/command.d.ts +12 -2
  96. package/dist/generators/bootstrap-workspaces/command.js +5 -3
  97. package/dist/generators/bootstrap-workspaces/generator.d.ts +8 -2
  98. package/dist/generators/bootstrap-workspaces/generator.js +0 -2
  99. package/dist/generators/bootstrap-workspaces/index.d.ts +1 -0
  100. package/dist/generators/bootstrap-workspaces/index.js +1 -0
  101. package/dist/generators/client/command.d.ts +22 -0
  102. package/dist/generators/client/command.js +22 -0
  103. package/dist/generators/client/files-common.js +1 -1
  104. package/dist/generators/client/generator.js +4 -5
  105. package/dist/generators/client/prompts.js +10 -9
  106. package/dist/generators/client/resources/package.json +3 -3
  107. package/dist/generators/client/templates/webpack/webpack.microfrontend.js.jhi.ejs +16 -5
  108. package/dist/generators/common/generator.js +2 -2
  109. package/dist/generators/common/resources/package.json +1 -1
  110. package/dist/generators/common/templates/sonar-project.properties.ejs +13 -7
  111. package/dist/generators/cypress/files.js +6 -0
  112. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/login-page.cy.ts.ejs +2 -2
  113. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/logout.cy.ts.ejs +39 -0
  114. package/dist/generators/docker/generator.d.ts +1 -1
  115. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +2 -1
  116. package/dist/generators/docker-compose/command.js +9 -1
  117. package/dist/generators/docker-compose/generator.d.ts +11 -53
  118. package/dist/generators/docker-compose/generator.js +24 -23
  119. package/dist/generators/generate-blueprint/command.d.ts +97 -20
  120. package/dist/generators/generate-blueprint/command.js +28 -0
  121. package/dist/generators/generate-blueprint/constants.d.ts +2 -2
  122. package/dist/generators/generate-blueprint/files.d.ts +1 -42
  123. package/dist/generators/generate-blueprint/files.js +27 -29
  124. package/dist/generators/generate-blueprint/generator.d.ts +5 -2
  125. package/dist/generators/generate-blueprint/generator.js +78 -22
  126. package/dist/generators/generate-blueprint/resources/package.json +3 -3
  127. package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +6 -8
  128. package/dist/generators/generate-blueprint/templates/README.md.ejs +12 -2
  129. package/dist/generators/generate-blueprint/templates/cli/cli-customizations.cjs.ejs +2 -0
  130. package/dist/generators/generate-blueprint/templates/cli/cli.cjs.ejs +2 -1
  131. package/dist/generators/generate-blueprint/templates/cli/commands.cjs.ejs +1 -1
  132. package/dist/generators/generate-blueprint/templates/eslint.config.js.jhi.blueprint.ejs +3 -2
  133. package/dist/generators/generate-blueprint/templates/generators/generator/command.mjs.ejs +8 -12
  134. package/dist/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +8 -11
  135. package/dist/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +2 -2
  136. package/dist/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +2 -4
  137. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +0 -1
  138. package/dist/generators/generator-constants.d.ts +2 -2
  139. package/dist/generators/generator-constants.js +3 -3
  140. package/dist/generators/git/command.d.ts +10 -0
  141. package/dist/generators/git/command.js +10 -0
  142. package/dist/generators/git/generator.d.ts +5 -4
  143. package/dist/generators/git/generator.js +6 -4
  144. package/dist/generators/gradle/generators/node-gradle/templates/buildSrc/src/main/groovy/jhipster.node-gradle-conventions.gradle.ejs +16 -10
  145. package/dist/generators/gradle/internal/needles.d.ts +3 -1
  146. package/dist/generators/gradle/internal/needles.js +10 -5
  147. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  148. package/dist/generators/gradle/types.d.ts +3 -2
  149. package/dist/generators/init/command.d.ts +4 -20
  150. package/dist/generators/init/command.js +1 -1
  151. package/dist/generators/init/resources/.node-version +1 -1
  152. package/dist/generators/java/command.d.ts +3 -5
  153. package/dist/generators/java/command.js +1 -20
  154. package/dist/generators/java/generators/bootstrap/command.d.ts +7 -0
  155. package/dist/generators/java/generators/bootstrap/command.js +7 -0
  156. package/dist/generators/java/generators/build-tool/generator.js +37 -13
  157. package/dist/generators/java/generators/graalvm/command.d.ts +5 -0
  158. package/dist/generators/java/generators/graalvm/command.js +5 -0
  159. package/dist/generators/java/generators/graalvm/generator.d.ts +9 -0
  160. package/dist/generators/java/generators/graalvm/generator.js +222 -0
  161. package/dist/generators/java/generators/graalvm/index.d.ts +20 -0
  162. package/dist/generators/java/generators/graalvm/index.js +20 -0
  163. package/dist/generators/java/generators/graalvm/internal/maven-definition.d.ts +8 -0
  164. package/dist/generators/java/generators/graalvm/internal/maven-definition.js +130 -0
  165. package/dist/generators/java/generators/graalvm/resources/build.gradle +1 -0
  166. package/dist/generators/java/generators/graalvm/resources/gradle/libs.versions.toml +5 -0
  167. package/dist/generators/java/generators/graalvm/templates/README.md.jhi.native.ejs +53 -0
  168. package/dist/generators/java/generators/graalvm/templates/gradle/native.gradle.ejs +44 -0
  169. package/dist/generators/java/generators/graalvm/templates/src/main/java/_package_/config/NativeConfiguration.java.ejs +14 -0
  170. package/dist/generators/java/generators/node/generator.d.ts +6 -18
  171. package/dist/generators/java/generators/node/generator.js +31 -0
  172. package/dist/generators/java/generators/openapi-generator/generator.js +2 -2
  173. package/dist/generators/java/support/util.d.ts +1 -1
  174. package/dist/generators/java/types.d.ts +4 -1
  175. package/dist/generators/javascript/generators/bootstrap/command.d.ts +21 -20
  176. package/dist/generators/javascript/generators/bootstrap/generator.d.ts +1 -2
  177. package/dist/generators/javascript/generators/bootstrap/generator.js +9 -5
  178. package/dist/generators/javascript/types.d.ts +9 -2
  179. package/dist/generators/kubernetes/command.d.ts +12 -0
  180. package/dist/generators/kubernetes/command.js +12 -0
  181. package/dist/generators/kubernetes/index.d.ts +1 -0
  182. package/dist/generators/kubernetes/index.js +1 -0
  183. package/dist/generators/kubernetes-helm/index.d.ts +1 -0
  184. package/dist/generators/kubernetes-helm/index.js +1 -0
  185. package/dist/generators/kubernetes-knative/generator.d.ts +1 -1
  186. package/dist/generators/kubernetes-knative/index.d.ts +1 -0
  187. package/dist/generators/kubernetes-knative/index.js +1 -0
  188. package/dist/generators/languages/entity-files.d.ts +3 -2
  189. package/dist/generators/languages/entity-files.js +0 -1
  190. package/dist/generators/languages/generator.d.ts +1 -0
  191. package/dist/generators/languages/generator.js +1 -0
  192. package/dist/generators/liquibase/files.js +8 -0
  193. package/dist/generators/liquibase/generator.d.ts +1 -1
  194. package/dist/generators/liquibase/generator.js +15 -0
  195. package/dist/generators/liquibase/templates/src/main/resources/META-INF/native-image/liquibase/reflect-config.json +145 -0
  196. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/add_relationship_constraints.ejs +81 -0
  197. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity_constraints.xml.ejs +2 -62
  198. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +3 -60
  199. package/dist/generators/maven/generators/frontend-plugin/generator.js +10 -5
  200. package/dist/generators/maven/types.d.ts +3 -6
  201. package/dist/generators/project-name/command.d.ts +25 -20
  202. package/dist/generators/project-name/command.js +20 -4
  203. package/dist/generators/project-name/generator.d.ts +3 -12
  204. package/dist/generators/project-name/generator.js +6 -38
  205. package/dist/generators/react/generator.d.ts +1 -1
  206. package/dist/generators/react/generator.js +15 -2
  207. package/dist/generators/react/resources/package.json +26 -25
  208. package/dist/generators/react/templates/package.json.ejs +0 -3
  209. package/dist/generators/server/generator.d.ts +1 -7
  210. package/dist/generators/server/generator.js +22 -50
  211. package/dist/generators/server/resources/Dockerfile +12 -12
  212. package/dist/generators/server/resources/gradle/libs.versions.toml +10 -7
  213. package/dist/generators/server/resources/pom.xml +11 -11
  214. package/dist/generators/server/types.d.ts +8 -0
  215. package/dist/generators/spring-boot/cleanup.js +2 -2
  216. package/dist/generators/spring-boot/command.d.ts +19 -0
  217. package/dist/generators/spring-boot/command.js +19 -0
  218. package/dist/generators/spring-boot/generator.d.ts +2 -2
  219. package/dist/generators/spring-boot/generator.js +5 -9
  220. package/dist/generators/spring-boot/prompts.js +12 -12
  221. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +107 -106
  222. package/dist/generators/spring-boot/templates/README.md.jhi.spring-boot.ejs +22 -16
  223. package/dist/generators/spring-boot/templates/gradle/profile_dev.gradle.ejs +2 -46
  224. package/dist/generators/spring-boot/templates/gradle/profile_prod.gradle.ejs +1 -47
  225. package/dist/generators/spring-boot/templates/src/main/java/_package_/Application.java.ejs +4 -1
  226. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +29 -6
  227. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +32 -6
  228. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/WebConfigurer.java.ejs +13 -8
  229. package/dist/generators/spring-boot/templates/src/main/java/_package_/domain/User.java.ejs +2 -3
  230. package/dist/generators/spring-boot/templates/src/main/resources/config/application-dev.yml.ejs +8 -3
  231. package/dist/generators/spring-boot/templates/src/main/resources/config/application.yml.ejs +4 -2
  232. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +8 -7
  233. package/dist/generators/spring-cache/generator.d.ts +2 -1
  234. package/dist/generators/spring-cache/generator.js +22 -0
  235. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  236. package/dist/generators/spring-cloud/generators/gateway/generator.js +2 -2
  237. package/dist/generators/spring-data-couchbase/generator.js +2 -2
  238. package/dist/generators/spring-data-mongodb/generator.d.ts +1 -1
  239. package/dist/generators/spring-data-relational/files.d.ts +1 -0
  240. package/dist/generators/spring-data-relational/files.js +6 -0
  241. package/dist/generators/spring-data-relational/generator.d.ts +2 -1
  242. package/dist/generators/spring-data-relational/generator.js +63 -2
  243. package/dist/generators/spring-data-relational/internal/dependencies.d.ts +87 -7
  244. package/dist/generators/spring-data-relational/internal/dependencies.js +30 -18
  245. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_persistable.ejs +6 -0
  246. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_reactive.ejs +1 -2
  247. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +8 -3
  248. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/JacksonNativeConfiguration.java.ejs +98 -0
  249. package/dist/generators/vue/files-vue.js +4 -1
  250. package/dist/generators/vue/generator.d.ts +1 -1
  251. package/dist/generators/vue/generator.js +84 -3
  252. package/dist/generators/vue/resources/package.json +21 -20
  253. package/dist/generators/vue/support/update-languages.js +1 -1
  254. package/dist/generators/vue/templates/module-federation.config.cjs.ejs +55 -0
  255. package/dist/generators/vue/templates/package.json.ejs +11 -62
  256. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +1 -1
  257. package/dist/generators/vue/templates/vite.config.mts.ejs +15 -21
  258. package/dist/generators/workspaces/generator.d.ts +20 -9
  259. package/dist/generators/workspaces/generator.js +3 -3
  260. package/dist/lib/application/field-types.d.ts +2 -1
  261. package/dist/lib/command/converter.d.ts +6 -2
  262. package/dist/lib/command/converter.js +4 -1
  263. package/dist/lib/command/load.js +1 -0
  264. package/dist/lib/command/lookup-commands-configs.js +9 -12
  265. package/dist/lib/command/support/merge-union.d.ts +17 -6
  266. package/dist/lib/command/types.d.ts +38 -11
  267. package/dist/lib/eslint/index.d.ts +6 -14
  268. package/dist/lib/eslint/index.js +1 -2
  269. package/dist/lib/index.d.ts +1 -0
  270. package/dist/lib/index.js +7 -3
  271. package/dist/lib/jdl/core/linters/rules.d.ts +1 -3
  272. package/dist/lib/jdl/core/parsing/validator.js +2 -2
  273. package/dist/lib/jhipster/default-application-options.d.ts +83 -15
  274. package/dist/lib/jhipster/default-application-options.js +28 -28
  275. package/dist/lib/testing/get-generator.d.ts +1 -0
  276. package/dist/lib/testing/get-generator.js +6 -2
  277. package/dist/lib/testing/github-group.d.ts +6 -0
  278. package/dist/lib/testing/github-group.js +56 -0
  279. package/dist/lib/testing/github-matrix.d.ts +38 -0
  280. package/dist/lib/testing/github-matrix.js +72 -0
  281. package/dist/lib/testing/github.d.ts +1 -0
  282. package/dist/lib/testing/github.js +6 -2
  283. package/dist/lib/testing/helpers.d.ts +41 -3
  284. package/dist/lib/testing/helpers.js +74 -12
  285. package/dist/lib/testing/index.d.ts +2 -0
  286. package/dist/lib/testing/index.js +2 -0
  287. package/dist/lib/testing/support/matcher.d.ts +2 -2
  288. package/dist/lib/testing/support/matcher.js +3 -3
  289. package/dist/lib/types/application/application.d.ts +6 -1
  290. package/dist/lib/types/application/entity.d.ts +3 -1
  291. package/dist/lib/types/application/field.d.ts +16 -4
  292. package/dist/lib/types/application/options.d.ts +4 -0
  293. package/dist/lib/types/application/relationship.d.ts +1 -0
  294. package/dist/lib/types/application/yo-rc.d.ts +4 -0
  295. package/dist/lib/types/base/entity.d.ts +1 -0
  296. package/dist/lib/utils/logger.d.ts +1 -1
  297. package/dist/lib/utils/yo-rc.d.ts +27 -3
  298. package/package.json +33 -31
  299. package/dist/generators/generate-blueprint/templates/vitest.test-setup.ts.ejs +0 -6
  300. package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +0 -45
@@ -329,46 +329,52 @@ sonar.password=admin
329
329
 
330
330
  For more information, refer to the [Code quality page][].
331
331
 
332
- ### Using Docker to simplify development (optional)
332
+ ### Docker Compose support
333
333
 
334
- You can use Docker to improve your JHipster development experience. A number of docker-compose configuration are available in the [src/main/docker](src/main/docker) folder to launch required third party services.
334
+ JHipster generates a number of Docker Compose configuration files in the [<%- dockerServicesDir %>](<%- dockerServicesDir %>) folder to launch required third party services.
335
335
 
336
- <%_ if (!databaseTypeNo) { _%>
337
- For example, to start a <%= prodDatabaseType %> database in a docker container, run:
336
+ For example, to start required services in Docker containers, run:
338
337
 
339
338
  ```
340
- docker compose -f src/main/docker/<%= prodDatabaseType ?? databaseType %>.yml up -d
339
+ docker compose -f <%- dockerServicesDir %>services.yml up -d
341
340
  ```
342
341
 
343
- To stop it and remove the container, run:
342
+ To stop and remove the containers, run:
344
343
 
345
344
  ```
346
- docker compose -f src/main/docker/<%= prodDatabaseType ?? databaseType %>.yml down
345
+ docker compose -f <%- dockerServicesDir %>services.yml down
347
346
  ```
348
- <%_ } _%>
349
347
 
350
- You can also fully dockerize your application and all the services that it depends on.
351
- To achieve this, first build a docker image of your app by running:
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:
352
349
 
350
+ ```yaml
351
+ spring:
352
+ ...
353
+ docker:
354
+ compose:
355
+ enabled: false
353
356
  ```
357
+
358
+ You can also fully dockerize your application and all the services that it depends on.
359
+ To achieve this, first build a Docker image of your app by running:
360
+
361
+ ```sh
354
362
  npm run java:docker
355
363
  ```
356
364
 
357
- Or build a arm64 docker image when using an arm64 processor os like MacOS with M1 processor family running:
365
+ Or build a arm64 Docker image when using an arm64 processor os like MacOS with M1 processor family running:
358
366
 
359
- ```
367
+ ```sh
360
368
  npm run java:docker:arm64
361
369
  ```
362
370
 
363
371
  Then run:
364
372
 
365
- ```
373
+ ```sh
366
374
  docker compose -f <%- dockerServicesDir %>app.yml up -d
367
375
  ```
368
376
 
369
- When running Docker Desktop on MacOS Big Sur or later, consider enabling experimental `Use the new Virtualization framework` for better processing performance ([disk access performance is worse](https://github.com/docker/roadmap/issues/7)).
370
-
371
- For more information refer to [Using Docker and Docker-Compose][], this page also contains information on the docker-compose sub-generator (`jhipster docker-compose`), which is able to generate docker configurations for one or several JHipster applications.
377
+ For more information refer to [Using Docker and Docker-Compose][], this page also contains information on the Docker Compose sub-generator (`jhipster docker-compose`), which is able to generate Docker configurations for one or several JHipster applications.
372
378
 
373
379
  ## Continuous Integration (optional)
374
380
 
@@ -24,56 +24,12 @@ sourceSets {
24
24
  }
25
25
  }
26
26
  }
27
- <%_ } _%>
28
- <%_ if (databaseTypeSql) { _%>
29
-
30
- configurations {
31
- all {
32
- resolutionStrategy {
33
- <%_ if (prodDatabaseDriver?.r2dbc?.version) { _%>
34
- force "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>:<%- prodDatabaseDriver.r2dbc.version %>"
35
- <%_ } _%>
36
- <%_ if (prodDatabaseDriver?.jdbc?.version) { _%>
37
- force "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>:<%- prodDatabaseDriver.jdbc.version %>"
38
- <%_ } _%>
39
- }
40
- }
41
- }
42
27
 
28
+ <%_ } _%>
43
29
  dependencies {
44
30
  developmentOnly "org.springframework.boot:spring-boot-devtools"
45
- <%_ if (devDatabaseTypeH2Any && !reactive) { _%>
46
- implementation "com.h2database:h2"
47
- <%_ } _%>
48
- <%_ if (devDatabaseTypeOracle) { _%>
49
- implementation "com.oracle.database.jdbc:ojdbc8"
50
- <%_ } _%>
51
- <%_ if (devDatabaseTypeH2Any && reactive) { _%>
52
- implementation "io.r2dbc:r2dbc-h2"
53
- <%_ } _%>
54
- <%_ if (devDatabaseTypeMariadb || devDatabaseTypeMssql || devDatabaseTypePostgres || devDatabaseTypeMysql) { _%>
55
- <%_ if (reactive) { _%>
56
- implementation "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>"
57
- <%_ } _%>
58
- implementation "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>"
59
- <%_ } _%>
60
- <%_ if (prodDatabaseTypeMariadb) { _%>
61
- testImplementation "org.testcontainers:mariadb"
62
- <%_ } _%>
63
- <%_ if (prodDatabaseTypeMssql) { _%>
64
- testImplementation "org.testcontainers:mssqlserver"
65
- <%_ } _%>
66
- <%_ if (prodDatabaseTypeMysql) { _%>
67
- testImplementation "org.testcontainers:mysql"
68
- <%_ } _%>
69
- <%_ if (prodDatabaseTypeOracle) { _%>
70
- testImplementation "org.testcontainers:oracle-xe"
71
- <%_ } _%>
72
- <%_ if (prodDatabaseTypePostgresql) { _%>
73
- testImplementation "org.testcontainers:postgresql"
74
- <%_ } _%>
31
+ // jhipster-needle-gradle-dependency - JHipster will add additional dependencies here
75
32
  }
76
- <%_ } _%>
77
33
 
78
34
  ext {
79
35
  springProfiles = "dev" + springProfiles
@@ -16,55 +16,9 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- <%_ if (devDatabaseType !== prodDatabaseType && (devDatabaseTypeMariadb || devDatabaseTypeMssql || devDatabaseTypeMysql || devDatabaseTypePostgres)) { _%>
20
- sourceSets {
21
- test {
22
- java {
23
- exclude '<%= packageFolder %>/config/<% if (devDatabaseTypeMariadb) { %>Mariadb<% } else if (devDatabaseTypeMssql) { %>MsSql<% } else if (devDatabaseTypeMysql) { %>Mysql<% } else if (devDatabaseTypePostgres) { %>PostgreSql<% } %>TestContainer.java'
24
- }
25
- }
26
- }
27
- <%_ } _%>
28
- <%_ if (databaseTypeSql) { _%>
29
-
30
- configurations {
31
- all {
32
- resolutionStrategy {
33
- <%_ if (prodDatabaseDriver?.r2dbc?.version) { _%>
34
- force "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>:<%- prodDatabaseDriver.r2dbc.version %>"
35
- <%_ } _%>
36
- <%_ if (prodDatabaseDriver?.jdbc?.version) { _%>
37
- force "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>:<%- prodDatabaseDriver.jdbc.version %>"
38
- <%_ } _%>
39
- }
40
- }
41
- }
42
-
43
19
  dependencies {
44
- <%_ if (prodDatabaseTypeMariadb || prodDatabaseTypeMssql || prodDatabaseTypeMysql || prodDatabaseTypePostgresql) { _%>
45
- <%_ if (reactive) { _%>
46
- implementation "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>"
47
- <%_ } _%>
48
- implementation "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>"
49
- <%_ } _%>
50
- <%_ if (prodDatabaseTypeMariadb) { _%>
51
- testImplementation "org.testcontainers:mariadb"
52
- <%_ } _%>
53
- <%_ if (prodDatabaseTypeMssql) { _%>
54
- testImplementation "org.testcontainers:mssqlserver"
55
- <%_ } _%>
56
- <%_ if (prodDatabaseTypeMysql) { _%>
57
- testImplementation "org.testcontainers:mysql"
58
- <%_ } _%>
59
- <%_ if (prodDatabaseTypeOracle) { _%>
60
- implementation "com.oracle.database.jdbc:ojdbc8"
61
- testImplementation "org.testcontainers:oracle-xe"
62
- <%_ } _%>
63
- <%_ if (prodDatabaseTypePostgresql) { _%>
64
- testImplementation "org.testcontainers:postgresql"
65
- <%_ } _%>
20
+ // jhipster-needle-gradle-dependency - JHipster will add additional dependencies here
66
21
  }
67
- <%_ } _%>
68
22
 
69
23
  ext {
70
24
  springProfiles = "prod" + springProfiles
@@ -41,8 +41,11 @@ import java.net.UnknownHostException;
41
41
  import java.util.Arrays;
42
42
  import java.util.Collection;
43
43
  import java.util.Optional;
44
+ <%_ if (devDatabaseTypeH2Any) { _%>
45
+ import org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration;
46
+ <%_ } _%>
44
47
 
45
- @SpringBootApplication
48
+ @SpringBootApplication(<% if (devDatabaseTypeH2Any) { %>exclude = { H2ConsoleAutoConfiguration.class }<% } %>)
46
49
  @EnableConfigurationProperties({<% if (databaseMigrationLiquibase) { %>LiquibaseProperties.class, <% } %>ApplicationProperties.class})
47
50
  public class <%= mainClass %> {
48
51
 
@@ -51,6 +51,10 @@ import tech.jhipster.web.filter.CookieCsrfFilter;
51
51
  <%_ if (!skipClient) { _%>
52
52
  import <%= packageName %>.web.filter.SpaWebFilter;
53
53
  <%_ } _%>
54
+ <%_ if (applicationTypeGateway) { _%>
55
+ import org.springframework.beans.BeansException;
56
+ import org.springframework.beans.factory.config.BeanPostProcessor;
57
+ <%_ } _%>
54
58
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
55
59
  import jakarta.servlet.http.HttpServletRequest;
56
60
  import jakarta.servlet.http.HttpServletResponse;
@@ -113,6 +117,10 @@ import <%= packageName %>.security.oauth2.CustomClaimConverter;
113
117
  <%_ if(!skipClient) { _%>
114
118
  import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
115
119
  <%_ } _%>
120
+ <%_ if (applicationTypeGateway) { _%>
121
+ import org.springframework.security.web.server.WebFilterChainProxy;
122
+ import org.springframework.security.web.server.firewall.ServerWebExchangeFirewall;
123
+ <%_ } _%>
116
124
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
117
125
  import org.springframework.util.StringUtils;
118
126
  <%_ } _%>
@@ -194,17 +202,13 @@ public class SecurityConfiguration {
194
202
  <%_ if (!skipClient) { _%>
195
203
  .requestMatchers(mvc.pattern("/index.html"), mvc.pattern("/*.js"), mvc.pattern("/*.txt"), mvc.pattern("/*.json"), mvc.pattern("/*.map"), mvc.pattern("/*.css")).permitAll()
196
204
  .requestMatchers(mvc.pattern("/*.ico"), mvc.pattern("/*.png"), mvc.pattern("/*.svg"), mvc.pattern("/*.webapp")).permitAll()
197
- <%_ if (clientFrameworkVue) { _%>
205
+ <%_ if (clientBundlerVite) { _%>
198
206
  .requestMatchers(mvc.pattern("/assets/**")).permitAll()
199
- <%_ if (microfrontend) { _%>
200
- .requestMatchers(mvc.pattern("/app/**")).permitAll()
201
- .requestMatchers(mvc.pattern("/i18n/**")).permitAll()
202
- <%_ } _%>
203
207
  <%_ } else { _%>
204
208
  .requestMatchers(mvc.pattern("/app/**")).permitAll()
205
209
  .requestMatchers(mvc.pattern("/i18n/**")).permitAll()
206
- <%_ } _%>
207
210
  .requestMatchers(mvc.pattern("/content/**")).permitAll()
211
+ <%_ } _%>
208
212
  .requestMatchers(mvc.pattern("/swagger-ui/**")).permitAll()
209
213
  <%_ } _%>
210
214
  <%_ if (authenticationTypeJwt) { _%>
@@ -227,6 +231,9 @@ public class SecurityConfiguration {
227
231
  <%_ if (applicationTypeGateway) { _%>
228
232
  <%_ if (microfrontend) { _%>
229
233
  // microfrontend resources are loaded by webpack without authentication, they need to be public
234
+ <%_ if (clientBundlerVite) { _%>
235
+ .requestMatchers(mvc.pattern("/services/*/assets/**")).permitAll()
236
+ <%_ } _%>
230
237
  .requestMatchers(mvc.pattern("/services/*/*.js")).permitAll()
231
238
  .requestMatchers(mvc.pattern("/services/*/*.txt")).permitAll()
232
239
  .requestMatchers(mvc.pattern("/services/*/*.json")).permitAll()
@@ -417,4 +424,20 @@ public class SecurityConfiguration {
417
424
  }
418
425
  }
419
426
  <%_ } _%>
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
+ <%_ } _%>
420
443
  }
@@ -39,6 +39,10 @@ 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
+ <%_ } _%>
42
46
  import org.springframework.context.annotation.Bean;
43
47
  import org.springframework.context.annotation.Configuration;
44
48
  <%_ if (authenticationTypeOauth2) { _%>
@@ -114,6 +118,10 @@ import org.springframework.security.web.server.savedrequest.NoOpServerRequestCac
114
118
  <%_ } _%>
115
119
  import org.springframework.security.web.server.util.matcher.NegatedServerWebExchangeMatcher;
116
120
  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
+ <%_ } _%>
117
125
  <%_ if (authenticationUsesCsrf) { _%>
118
126
  import reactor.core.publisher.Mono;
119
127
  <%_ } _%>
@@ -214,19 +222,16 @@ public class SecurityConfiguration {
214
222
  public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
215
223
  http
216
224
  .securityMatcher(new NegatedServerWebExchangeMatcher(new OrServerWebExchangeMatcher(
217
- <%_ if (clientFrameworkVue) { _%>
218
225
  pathMatchers(
226
+ <%_ if (clientBundlerVite) { _%>
219
227
  "/assets/**",
220
- <%_ if (microfrontend) { _%>
228
+ <%_ } else { _%>
221
229
  "/app/**",
222
230
  "/i18n/**",
223
231
  "/content/**",
224
- <%_ } _%>
232
+ <%_ } _%>
225
233
  "/swagger-ui/**"
226
234
  )
227
- <%_ } else { _%>
228
- pathMatchers("/app/**", "/i18n/**", "/content/**", "/swagger-ui/**")
229
- <%_ } _%>
230
235
  )))
231
236
  <%_ if (!applicationTypeMicroservice) { _%>
232
237
  .cors(withDefaults())
@@ -286,10 +291,15 @@ public class SecurityConfiguration {
286
291
  <%_ if (applicationTypeGateway) { _%>
287
292
  <%_ if (microfrontend) { _%>
288
293
  // microfrontend resources are loaded by webpack without authentication, they need to be public
294
+ <%_ if (clientBundlerVite) { _%>
295
+ .pathMatchers("/services/*/assets/**").permitAll()
296
+ .pathMatchers("/services/*/*.js").permitAll()
297
+ <%_ } else { _%>
289
298
  .pathMatchers("/services/*/*.js").permitAll()
290
299
  .pathMatchers("/services/*/*.txt").permitAll()
291
300
  .pathMatchers("/services/*/*.json").permitAll()
292
301
  .pathMatchers("/services/*/*.js.map").permitAll()
302
+ <%_ } _%>
293
303
  <%_ } _%>
294
304
  .pathMatchers("/services/*/management/health/readiness").permitAll()
295
305
  .pathMatchers("/services/*/v3/api-docs").hasAuthority(AuthoritiesConstants.ADMIN)
@@ -480,4 +490,20 @@ public class SecurityConfiguration {
480
490
  return Mono.empty();
481
491
  }
482
492
  <%_ } _%>
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
+ <%_ } _%>
483
509
  }
@@ -26,6 +26,7 @@ import tech.jhipster.config.JHipsterConstants;
26
26
  <%_ } _%>
27
27
  import tech.jhipster.config.JHipsterProperties;
28
28
  <%_ if (devDatabaseTypeH2Any) { _%>
29
+ import tech.jhipster.config.ApplicationProperties;
29
30
  import tech.jhipster.config.h2.H2ConfigurationHelper;
30
31
  <%_ } _%>
31
32
  <%_ if (!skipClient && reactive) { _%>
@@ -102,14 +103,15 @@ public class WebConfigurer implements <% if (!reactive) { %>ServletContextInitia
102
103
  <%_ } _%>
103
104
  private final JHipsterProperties jHipsterProperties;
104
105
 
105
- public WebConfigurer(<% if (!reactive || (devDatabaseTypeH2Any && reactive)) { %>Environment env, <% } %>JHipsterProperties jHipsterProperties) {
106
+ public WebConfigurer(<% if (!reactive || devDatabaseTypeH2Any) { %>Environment env, <% } %>JHipsterProperties jHipsterProperties) {
106
107
  <%_ if (!reactive) { _%>
107
108
  this.env = env;
108
109
  <%_ } _%>
109
110
  this.jHipsterProperties = jHipsterProperties;
110
111
  <%_ if (devDatabaseTypeH2Any && reactive) { _%>
111
- if (env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT))) {
112
+ if (h2ConsoleIsEnabled(env)) {
112
113
  try {
114
+ LOG.info("Initialize H2 console");
113
115
  H2ConfigurationHelper.initH2Console();
114
116
  } catch (Exception e) {
115
117
  // Console may already be running on another app or after a refresh.
@@ -118,8 +120,6 @@ public class WebConfigurer implements <% if (!reactive) { %>ServletContextInitia
118
120
  }
119
121
  <%_ } _%>
120
122
  }
121
-
122
-
123
123
  <%_ if (!reactive) { _%>
124
124
 
125
125
  @Override
@@ -129,7 +129,7 @@ public class WebConfigurer implements <% if (!reactive) { %>ServletContextInitia
129
129
  }
130
130
 
131
131
  <%_ if (devDatabaseTypeH2Any) { _%>
132
- if (env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT))) {
132
+ if (h2ConsoleIsEnabled(env)) {
133
133
  initH2Console(servletContext);
134
134
  }
135
135
  <%_ } _%>
@@ -170,7 +170,6 @@ public class WebConfigurer implements <% if (!reactive) { %>ServletContextInitia
170
170
  }
171
171
  return extractedPath.substring(0, extractionEndIndex);
172
172
  }
173
-
174
173
  <%_ } _%>
175
174
  <%_ } _%>
176
175
 
@@ -230,14 +229,20 @@ public class WebConfigurer implements <% if (!reactive) { %>ServletContextInitia
230
229
  }
231
230
  <%_ } _%>
232
231
  <%_ } _%>
233
- <%_ if (devDatabaseTypeH2Any && !reactive) { _%>
232
+ <%_ if (devDatabaseTypeH2Any) { _%>
233
+
234
+ private boolean h2ConsoleIsEnabled(Environment env) {
235
+ return env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT)) && "true".equals(env.getProperty("spring.h2.console.enabled"));
236
+ }
237
+ <%_ if (!reactive) { _%>
234
238
 
235
239
  /**
236
240
  * Initializes H2 console.
237
241
  */
238
242
  private void initH2Console(ServletContext servletContext) {
239
- LOG.debug("Initialize H2 console");
243
+ LOG.info("Initialize H2 console");
240
244
  H2ConfigurationHelper.initH2Console(servletContext);
241
245
  }
246
+ <%_ } _%>
242
247
  <%_ } _%>
243
248
  }
@@ -41,7 +41,6 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
41
41
  <%_ } _%>
42
42
  <%_ if (databaseTypeSql && reactive) { _%>
43
43
  import org.springframework.data.annotation.Id;
44
- import org.springframework.data.annotation.Transient;
45
44
  import org.springframework.data.relational.core.mapping.Column;
46
45
  import org.springframework.data.relational.core.mapping.Table;
47
46
  <%_ if (requiresPersistableImplementation) { _%>
@@ -395,7 +394,7 @@ public class <%= user.persistClass %><% if (generateSpringAuditor) { %> extends
395
394
  @BatchSize(size = 20)
396
395
  <%_ } _%>
397
396
  <%_ if (databaseTypeSql && reactive) { _%>
398
- @Transient
397
+ @org.springframework.data.annotation.Transient
399
398
  <%_ } _%>
400
399
  <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
401
400
  private Set<Authority> authorities = new HashSet<>();
@@ -413,7 +412,7 @@ public class <%= user.persistClass %><% if (generateSpringAuditor) { %> extends
413
412
  <%_ } _%>
414
413
  <%_ if (databaseTypeSql && reactive && requiresPersistableImplementation) { _%>
415
414
 
416
- @Transient
415
+ @org.springframework.data.annotation.Transient
417
416
  private boolean isPersisted;
418
417
  <%_ } _%>
419
418
 
@@ -87,9 +87,10 @@ spring:
87
87
  additional-exclude: static/**<% if (devDatabaseTypeH2Any) { %>,.h2.server.properties<% } %>
88
88
  livereload:
89
89
  enabled: false # we use Webpack dev server + BrowserSync for livereload
90
- <%_ if (devDatabaseTypeH2Any) { _%>
90
+ <%_ if (devDatabaseTypeH2Any && 'dockerServices' in locals && dockerServices && dockerServices.length > 1) { _%>
91
91
  docker:
92
92
  compose:
93
+ enabled: <%- authenticationTypeOauth2 || messageBrokerAny || serviceDiscoveryAny || cacheProviderRedis %>
93
94
  profiles:
94
95
  active: dev
95
96
  <%_ } _%>
@@ -154,8 +155,12 @@ spring:
154
155
  <%_ if (devDatabaseTypeH2Any) { _%>
155
156
  h2:
156
157
  console:
157
- # disable spring boot built-in h2-console since we start it manually with correct configuration
158
- enabled: false
158
+ # JHipster uses a custom h2-console initializer
159
+ <%_ if (graalvmSupport) { _%>
160
+ enabled: '@spring.h2.console.enabled@'
161
+ <%_ } else { _%>
162
+ enabled: true
163
+ <%_ } _%>
159
164
  <%_ } _%>
160
165
  <%_ if (databaseTypeMongodb) { _%>
161
166
  data:
@@ -269,14 +269,16 @@ spring:
269
269
  group: <%= dasherizedBaseName %>
270
270
  <%_ } _%>
271
271
  <%_ } _%>
272
+ <%_ if ('dockerServices' in locals && dockerServices && dockerServices.length > 1) { _%>
272
273
  docker:
273
274
  compose:
274
275
  enabled: true
275
276
  lifecycle-management: start-only
276
- <%_ if (applicationTypeMicroservice) { _%>
277
+ <%_ if (applicationTypeMicroservice) { _%>
277
278
  file: <%- dockerServicesDir %><%- databaseTypeSql ? prodDatabaseType : databaseType %>.yml
278
- <%_ } else { _%>
279
+ <%_ } else { _%>
279
280
  file: <%- dockerServicesDir %>services.yml
281
+ <%_ } _%>
280
282
  <%_ } _%>
281
283
  profiles:
282
284
  # The commented value for `active` can be replaced with valid Spring profiles to load.
@@ -329,24 +329,25 @@ if (field.fieldTypeString || field.blobContentTypeText) {
329
329
  // Generate Strings, using pattern
330
330
  try {
331
331
  const patternRegExp = new RegExp(field.fieldValidateRulesPattern);
332
- const randExp = field.createRandexp();
333
332
  // set infinite repetitions max range
334
333
  if (!patternRegExp.test(sampleTextString.replace(/\\"/g, '"').replace(/\\\\/g, '\\'))) {
335
- sampleTextString = randExp.gen().replace(/\\/g, '\\\\').replace(/"/g, '\\"');
334
+ const value = field.generateFakeDataFromPattern();
335
+ sampleTextString = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
336
336
  }
337
337
  if (!patternRegExp.test(updatedTextString.replace(/\\"/g, '"').replace(/\\\\/g, '\\'))) {
338
- updatedTextString = randExp.gen().replace(/\\/g, '\\\\').replace(/"/g, '\\"');
338
+ const value = field.generateFakeDataFromPattern();
339
+ updatedTextString = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
339
340
  }
340
341
  } catch (error) {
341
- log(this.chalkRed('Error generating test value for entity "' + entityClass +
342
+ this.log.warn('Error generating test value for entity "' + entityClass +
342
343
  '" field "' + field.fieldName + '" with pattern "' + field.fieldValidateRulesPattern +
343
- '", generating default values for this field. Detailed error message: "' + error.message + '".'));
344
+ '", generating default values for this field. Detailed error message: "' + error.message + '".');
344
345
  }
345
346
  if (sampleTextString === updatedTextString) {
346
347
  updatedTextString = updatedTextString + "B";
347
- log(this.chalkRed('Randomly generated first and second test values for entity "' + entityClass +
348
+ this.log.warn('Randomly generated first and second test values for entity "' + entityClass +
348
349
  '" field "' + field.fieldName + '" with pattern "' + field.fieldValidateRulesPattern +
349
- '" in file "' + entityClass + 'ResourceIT" where equal, added symbol "B" to second value.'));
350
+ '" in file "' + entityClass + 'ResourceIT" where equal, added symbol "B" to second value.');
350
351
  }
351
352
  } _%>
352
353
 
@@ -19,7 +19,8 @@
19
19
  import BaseApplicationGenerator from '../base-application/index.js';
20
20
  export default class SpringCacheGenerator extends BaseApplicationGenerator {
21
21
  beforeQueue(): Promise<void>;
22
- get preparing(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PreparingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "addNeedles" | "loadDependabot">;
22
+ get configuring(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "configure">;
23
+ get preparing(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PreparingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "cancel" | "addNeedles" | "loadDependabot">;
23
24
  get writing(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").WritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "cleanupTask" | "writeTask">;
24
25
  get postWriting(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PostWritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "addDependencies" | "addTestSpringFactory" | "applyGradleScript">;
25
26
  get postWritingEntities(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PostWritingEntitiesTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "customizeFiles">;
@@ -30,8 +30,30 @@ export default class SpringCacheGenerator extends BaseApplicationGenerator {
30
30
  await this.dependsOnBootstrapApplication();
31
31
  }
32
32
  }
33
+ get configuring() {
34
+ return this.asConfiguringTaskGroup({
35
+ configure() {
36
+ const { databaseType, reactive, cacheProvider } = this.jhipsterConfigWithDefaults;
37
+ if (this.jhipsterConfig.enableHibernateCache && (reactive || databaseType !== 'sql')) {
38
+ this.log.verboseInfo(`Disabling hibernate cache for ${reactive ? 'reactive application' : 'non-SQL databases'}`);
39
+ this.jhipsterConfig.enableHibernateCache = undefined;
40
+ }
41
+ if (reactive && cacheProvider !== 'no') {
42
+ this.log.error(`Cache provider is not supported in reactive application`);
43
+ }
44
+ },
45
+ });
46
+ }
47
+ get [BaseApplicationGenerator.CONFIGURING]() {
48
+ return this.delegateTasksToBlueprint(() => this.configuring);
49
+ }
33
50
  get preparing() {
34
51
  return this.asPreparingTaskGroup({
52
+ cancel() {
53
+ if (this.jhipsterConfigWithDefaults.cacheProvider === 'no') {
54
+ this.cancelCancellableTasks();
55
+ }
56
+ },
35
57
  loadDependabot({ application }) {
36
58
  this.loadJavaDependenciesFromGradleCatalog(application.javaDependencies, true);
37
59
  },
@@ -12,4 +12,4 @@ xmemcached-provider = { module = 'com.google.code.simple-spring-memcached:xmemca
12
12
 
13
13
  xmemcached = { module = 'com.googlecode.xmemcached:xmemcached', version = '2.4.8' }
14
14
 
15
- redisson = { module = 'org.redisson:redisson', version = '3.36.0' }
15
+ redisson = { module = 'org.redisson:redisson', version = '3.37.0' }
@@ -62,8 +62,8 @@ export default class GatewayGenerator extends BaseApplicationGenerator {
62
62
  }
63
63
  get writing() {
64
64
  return this.asWritingTaskGroup({
65
- cleanup({ control, application }) {
66
- control.cleanupFiles({
65
+ async cleanup({ control, application }) {
66
+ await control.cleanupFiles({
67
67
  '8.6.1': [
68
68
  [
69
69
  application.reactive && application.serviceDiscoveryAny,
@@ -55,11 +55,11 @@ export default class CouchbaseGenerator extends BaseApplicationGenerator {
55
55
  });
56
56
  },
57
57
  addDependencies({ application, source }) {
58
- const { reactive } = application;
58
+ const { reactive, javaDependencies } = application;
59
59
  source.addJavaDependencies?.([
60
60
  { groupId: 'commons-codec', artifactId: 'commons-codec' },
61
61
  { groupId: 'com.couchbase.client', artifactId: 'java-client' },
62
- { groupId: 'com.github.differentway', artifactId: 'couchmove' },
62
+ { groupId: 'com.github.differentway', artifactId: 'couchmove', version: javaDependencies.couchmove },
63
63
  { groupId: 'org.springframework.boot', artifactId: `spring-boot-starter-data-couchbase${reactive ? '-reactive' : ''}` },
64
64
  { scope: 'test', groupId: 'org.testcontainers', artifactId: 'junit-jupiter' },
65
65
  { scope: 'test', groupId: 'org.testcontainers', artifactId: 'testcontainers' },
@@ -28,5 +28,5 @@ export default class MongoDBGenerator extends BaseApplicationGenerator {
28
28
  cleanupMongodbEntityFilesTask: typeof cleanupMongodbEntityFilesTask;
29
29
  writeMongodbEntityFilesTask: (this: import("../index.js").GeneratorBaseCore, params: import("../../lib/types/application/tasks.js").TaskParamWithEntities<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>) => void;
30
30
  };
31
- get postWriting(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PostWritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "addDependencies" | "addTestSpringFactory" | "blockhound">;
31
+ get postWriting(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PostWritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "addDependencies" | "blockhound" | "addTestSpringFactory">;
32
32
  }
@@ -32,6 +32,7 @@ export declare const sqlFiles: {
32
32
  renameTo?: string | ((this: import("../index.js").GeneratorBaseCore, data: import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>, filePath: string) => string) | undefined;
33
33
  condition: (generator: any) => boolean;
34
34
  })[];
35
+ graalvm: import("../base/api.js").WriteFileBlock[];
35
36
  };
36
37
  export declare const h2Files: {
37
38
  serverResource: {