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
@@ -66,6 +66,12 @@ export const sqlFiles = {
66
66
  templates: ['config/application-testprod.yml'],
67
67
  },
68
68
  ],
69
+ graalvm: [
70
+ javaMainPackageTemplatesBlock({
71
+ condition: ctx => !ctx.reactive && ctx.graalvmSupport,
72
+ templates: ['config/JacksonNativeConfiguration.java'],
73
+ }),
74
+ ],
69
75
  };
70
76
  export const h2Files = {
71
77
  serverResource: [
@@ -29,7 +29,8 @@ export default class SqlGenerator extends BaseApplicationGenerator {
29
29
  cleanupEntitiesTask: typeof cleanupEntitiesTask;
30
30
  writeEntitiesTask: (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;
31
31
  };
32
- 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" | "addLog">;
32
+ 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" | "nativeHints" | "addTestSpringFactory" | "addLog" | "nativeGradleBuildTool">;
33
+ 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>>>, "jsonFilter">;
33
34
  /**
34
35
  * @private
35
36
  * Returns the JDBC URL for a databaseType
@@ -25,7 +25,7 @@ import writeTask from './files.js';
25
25
  import cleanupTask from './cleanup.js';
26
26
  import writeEntitiesTask, { cleanupEntitiesTask } from './entity-files.js';
27
27
  import { getDBCExtraOption, getJdbcUrl, getR2dbcUrl } from './support/index.js';
28
- import { getDatabaseDriverForDatabase, getDatabaseTypeMavenDefinition, getH2MavenDefinition } from './internal/dependencies.js';
28
+ import { getDatabaseDriverForDatabase, getDatabaseTypeMavenDefinition, getH2MavenDefinition, javaSqlDatabaseArtifacts, } from './internal/dependencies.js';
29
29
  const { SQL } = databaseTypes;
30
30
  export default class SqlGenerator extends BaseApplicationGenerator {
31
31
  async beforeQueue() {
@@ -132,7 +132,12 @@ export default class SqlGenerator extends BaseApplicationGenerator {
132
132
  source.addJavaDefinitions?.({
133
133
  condition: reactive,
134
134
  dependencies: [
135
- { groupId: 'commons-beanutils', artifactId: 'commons-beanutils', version: javaDependencies['commons-beanutils'] },
135
+ {
136
+ groupId: 'commons-beanutils',
137
+ artifactId: 'commons-beanutils',
138
+ version: javaDependencies['commons-beanutils'],
139
+ exclusions: [{ groupId: 'commons-logging', artifactId: 'commons-logging' }],
140
+ },
136
141
  { groupId: 'jakarta.persistence', artifactId: 'jakarta.persistence-api' },
137
142
  { groupId: 'org.springframework.boot', artifactId: 'spring-boot-starter-data-r2dbc' },
138
143
  ],
@@ -165,12 +170,68 @@ export default class SqlGenerator extends BaseApplicationGenerator {
165
170
  condition: devDatabaseTypeH2Any && reactive,
166
171
  mavenDefinition: h2Definitions?.r2dbc,
167
172
  });
173
+ if (application.buildToolGradle) {
174
+ const artifacts = javaSqlDatabaseArtifacts[prodDatabaseType];
175
+ source.addJavaDefinition({ dependencies: [artifacts.jdbc, artifacts.testContainer, ...(reactive && artifacts.r2dbc ? [artifacts.r2dbc] : [])] }, { gradleFile: devDatabaseTypeH2Any ? 'gradle/profile_prod.gradle' : 'build.gradle' });
176
+ if (devDatabaseTypeH2Any) {
177
+ source.addJavaDefinition({ dependencies: [javaSqlDatabaseArtifacts.h2.jdbc, ...(reactive ? [javaSqlDatabaseArtifacts.h2.r2dbc] : [])] }, { gradleFile: 'gradle/profile_dev.gradle' });
178
+ }
179
+ }
180
+ },
181
+ nativeHints({ application, source }) {
182
+ if (application.reactive || !application.graalvmSupport)
183
+ return;
184
+ // Latest hibernate-core version supported by Reachability Repository is 6.5.0.Final
185
+ // Hints may be dropped if newer version is supported
186
+ // https://github.com/oracle/graalvm-reachability-metadata/blob/master/metadata/org.hibernate.orm/hibernate-core/index.json
187
+ source.addNativeHint({
188
+ publicConstructors: ['org.hibernate.binder.internal.BatchSizeBinder.class'],
189
+ });
190
+ },
191
+ async nativeGradleBuildTool({ application, source }) {
192
+ if (!application.buildToolGradle || !application.graalvmSupport)
193
+ return;
194
+ const { reactive, javaManagedProperties, buildToolMaven } = application;
195
+ if (buildToolMaven) {
196
+ source.addMavenProperty({ property: 'spring.h2.console.enabled', value: 'true' });
197
+ }
198
+ if (!reactive) {
199
+ source.addGradleDependencyCatalogVersion({ name: 'hibernate', version: javaManagedProperties['hibernate.version'] });
200
+ source.addGradleDependencyCatalogPlugin({
201
+ addToBuild: true,
202
+ pluginName: 'hibernate',
203
+ id: 'org.hibernate.orm',
204
+ 'version.ref': 'hibernate',
205
+ });
206
+ }
168
207
  },
169
208
  });
170
209
  }
171
210
  get [BaseApplicationGenerator.POST_WRITING]() {
172
211
  return this.delegateTasksToBlueprint(() => this.postWriting);
173
212
  }
213
+ get postWritingEntities() {
214
+ return this.asPostWritingEntitiesTaskGroup({
215
+ async jsonFilter({ application, entities, source }) {
216
+ if (application.reactive || !application.graalvmSupport)
217
+ return;
218
+ for (const entity of entities.filter(({ builtIn, builtInUser, embedded }) => builtInUser || (!builtIn && !embedded))) {
219
+ source.editJavaFile(`${application.srcMainJava}/${entity.entityAbsoluteFolder}/domain/${entity.entityClass}.java`, {
220
+ annotations: [
221
+ {
222
+ package: 'com.fasterxml.jackson.annotation',
223
+ annotation: 'JsonFilter',
224
+ parameters: () => '"lazyPropertyFilter"',
225
+ },
226
+ ],
227
+ });
228
+ }
229
+ },
230
+ });
231
+ }
232
+ get [BaseApplicationGenerator.POST_WRITING_ENTITIES]() {
233
+ return this.delegateTasksToBlueprint(() => this.postWritingEntities);
234
+ }
174
235
  /**
175
236
  * @private
176
237
  * Returns the JDBC URL for a databaseType
@@ -16,21 +16,101 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import type { JavaDependency } from '../../java/types.js';
19
20
  import type { MavenDefinition } from '../../maven/types.js';
20
21
  type DatabaseTypeDependencies = {
21
22
  jdbc: MavenDefinition;
22
23
  r2dbc: MavenDefinition;
23
24
  };
24
- type JavaDependency = {
25
- groupId: string;
26
- artifactId: string;
27
- version?: string;
28
- };
29
25
  export type DatabaseArtifact = {
30
26
  jdbc: JavaDependency;
31
- r2dbc: JavaDependency;
27
+ r2dbc?: JavaDependency;
28
+ testContainer?: JavaDependency;
29
+ };
30
+ export declare const javaSqlDatabaseArtifacts: {
31
+ readonly mariadb: {
32
+ readonly jdbc: {
33
+ readonly groupId: "org.mariadb.jdbc";
34
+ readonly artifactId: "mariadb-java-client";
35
+ };
36
+ readonly r2dbc: {
37
+ readonly groupId: "io.asyncer";
38
+ readonly artifactId: "r2dbc-mysql";
39
+ };
40
+ readonly testContainer: {
41
+ readonly groupId: "org.testcontainers";
42
+ readonly artifactId: "mariadb";
43
+ readonly scope: "test";
44
+ };
45
+ };
46
+ readonly mssql: {
47
+ readonly jdbc: {
48
+ readonly groupId: "com.microsoft.sqlserver";
49
+ readonly artifactId: "mssql-jdbc";
50
+ };
51
+ readonly r2dbc: {
52
+ readonly groupId: "io.r2dbc";
53
+ readonly artifactId: "r2dbc-mssql";
54
+ };
55
+ readonly testContainer: {
56
+ readonly groupId: "org.testcontainers";
57
+ readonly artifactId: "mssqlserver";
58
+ readonly scope: "test";
59
+ };
60
+ };
61
+ readonly mysql: {
62
+ readonly jdbc: {
63
+ readonly groupId: "com.mysql";
64
+ readonly artifactId: "mysql-connector-j";
65
+ };
66
+ readonly r2dbc: {
67
+ readonly groupId: "io.asyncer";
68
+ readonly artifactId: "r2dbc-mysql";
69
+ };
70
+ readonly testContainer: {
71
+ readonly groupId: "org.testcontainers";
72
+ readonly artifactId: "mysql";
73
+ readonly scope: "test";
74
+ };
75
+ };
76
+ readonly postgresql: {
77
+ readonly jdbc: {
78
+ readonly groupId: "org.postgresql";
79
+ readonly artifactId: "postgresql";
80
+ };
81
+ readonly r2dbc: {
82
+ readonly groupId: "org.postgresql";
83
+ readonly artifactId: "r2dbc-postgresql";
84
+ };
85
+ readonly testContainer: {
86
+ readonly groupId: "org.testcontainers";
87
+ readonly artifactId: "postgresql";
88
+ readonly scope: "test";
89
+ };
90
+ };
91
+ readonly oracle: {
92
+ readonly jdbc: {
93
+ readonly groupId: "com.oracle.database.jdbc";
94
+ readonly artifactId: "ojdbc8";
95
+ };
96
+ readonly testContainer: {
97
+ readonly groupId: "org.testcontainers";
98
+ readonly artifactId: "oracle-xe";
99
+ readonly scope: "test";
100
+ };
101
+ };
102
+ readonly h2: {
103
+ readonly jdbc: {
104
+ readonly groupId: "com.h2database";
105
+ readonly artifactId: "h2";
106
+ };
107
+ readonly r2dbc: {
108
+ readonly groupId: "io.r2dbc";
109
+ readonly artifactId: "r2dbc-h2";
110
+ };
111
+ };
32
112
  };
33
- export declare const getDatabaseDriverForDatabase: (databaseType: string) => DatabaseArtifact;
113
+ export declare const getDatabaseDriverForDatabase: (databaseType: string) => any;
34
114
  export declare const getH2MavenDefinition: ({ prodDatabaseType, packageFolder, }: {
35
115
  prodDatabaseType: string;
36
116
  packageFolder: string;
@@ -22,27 +22,39 @@ const testcontainerFileForDB = {
22
22
  mysql: 'MysqlTestContainer.java',
23
23
  postgresql: 'PostgreSqlTestContainer.java',
24
24
  };
25
- const databaseArtifactForDB = {
25
+ export const javaSqlDatabaseArtifacts = {
26
26
  mariadb: {
27
27
  jdbc: { groupId: 'org.mariadb.jdbc', artifactId: 'mariadb-java-client' },
28
28
  // maria-r2dbc driver is failing.
29
29
  // r2dbc: { groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb' },
30
30
  r2dbc: { groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' },
31
+ testContainer: { groupId: 'org.testcontainers', artifactId: 'mariadb', scope: 'test' },
31
32
  },
32
33
  mssql: {
33
34
  jdbc: { groupId: 'com.microsoft.sqlserver', artifactId: 'mssql-jdbc' },
34
35
  r2dbc: { groupId: 'io.r2dbc', artifactId: 'r2dbc-mssql' },
36
+ testContainer: { groupId: 'org.testcontainers', artifactId: 'mssqlserver', scope: 'test' },
35
37
  },
36
38
  mysql: {
37
39
  jdbc: { groupId: 'com.mysql', artifactId: 'mysql-connector-j' },
38
40
  r2dbc: { groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' },
41
+ testContainer: { groupId: 'org.testcontainers', artifactId: 'mysql', scope: 'test' },
39
42
  },
40
43
  postgresql: {
41
44
  jdbc: { groupId: 'org.postgresql', artifactId: 'postgresql' },
42
45
  r2dbc: { groupId: 'org.postgresql', artifactId: 'r2dbc-postgresql' },
46
+ testContainer: { groupId: 'org.testcontainers', artifactId: 'postgresql', scope: 'test' },
47
+ },
48
+ oracle: {
49
+ jdbc: { groupId: 'com.oracle.database.jdbc', artifactId: 'ojdbc8' },
50
+ testContainer: { groupId: 'org.testcontainers', artifactId: 'oracle-xe', scope: 'test' },
51
+ },
52
+ h2: {
53
+ jdbc: { groupId: 'com.h2database', artifactId: 'h2' },
54
+ r2dbc: { groupId: 'io.r2dbc', artifactId: 'r2dbc-h2' },
43
55
  },
44
56
  };
45
- export const getDatabaseDriverForDatabase = (databaseType) => databaseArtifactForDB[databaseType];
57
+ export const getDatabaseDriverForDatabase = (databaseType) => javaSqlDatabaseArtifacts[databaseType];
46
58
  export const getH2MavenDefinition = ({ prodDatabaseType, packageFolder, }) => {
47
59
  const testcontainerFile = testcontainerFileForDB[prodDatabaseType];
48
60
  const excludeContainerPlugin = testcontainerFile
@@ -63,11 +75,11 @@ export const getH2MavenDefinition = ({ prodDatabaseType, packageFolder, }) => {
63
75
  : [];
64
76
  return {
65
77
  jdbc: {
66
- dependencies: [{ inProfile: 'dev', groupId: 'com.h2database', artifactId: 'h2' }],
78
+ dependencies: [{ inProfile: 'dev', ...javaSqlDatabaseArtifacts.h2.jdbc }],
67
79
  plugins: excludeContainerPlugin,
68
80
  },
69
81
  r2dbc: {
70
- dependencies: [{ inProfile: 'dev', groupId: 'io.r2dbc', artifactId: 'r2dbc-h2' }],
82
+ dependencies: [{ inProfile: 'dev', ...javaSqlDatabaseArtifacts.h2.r2dbc }],
71
83
  },
72
84
  };
73
85
  };
@@ -76,41 +88,41 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile }) => {
76
88
  mariadb: {
77
89
  jdbc: {
78
90
  dependencies: [
79
- { inProfile, ...databaseArtifactForDB.mariadb.jdbc },
80
- { groupId: 'org.testcontainers', artifactId: 'mariadb', scope: 'test' },
91
+ { inProfile, ...javaSqlDatabaseArtifacts.mariadb.jdbc },
92
+ { inProfile, ...javaSqlDatabaseArtifacts.mariadb.testContainer },
81
93
  ],
82
94
  },
83
95
  r2dbc: {
84
- dependencies: [{ inProfile, ...databaseArtifactForDB.mariadb.r2dbc }],
96
+ dependencies: [{ inProfile, ...javaSqlDatabaseArtifacts.mariadb.r2dbc }],
85
97
  },
86
98
  },
87
99
  mssql: {
88
100
  jdbc: {
89
101
  dependencies: [
90
- { inProfile, ...databaseArtifactForDB.mssql.jdbc },
91
- { groupId: 'org.testcontainers', artifactId: 'mssqlserver', scope: 'test' },
102
+ { inProfile, ...javaSqlDatabaseArtifacts.mssql.jdbc },
103
+ { inProfile, ...javaSqlDatabaseArtifacts.mssql.testContainer },
92
104
  ],
93
105
  },
94
106
  r2dbc: {
95
- dependencies: [{ inProfile, ...databaseArtifactForDB.mssql.r2dbc }],
107
+ dependencies: [{ inProfile, ...javaSqlDatabaseArtifacts.mssql.r2dbc }],
96
108
  },
97
109
  },
98
110
  mysql: {
99
111
  jdbc: {
100
112
  dependencies: [
101
- { inProfile, ...databaseArtifactForDB.mysql.jdbc },
102
- { groupId: 'org.testcontainers', artifactId: 'mysql', scope: 'test' },
113
+ { inProfile, ...javaSqlDatabaseArtifacts.mysql.jdbc },
114
+ { inProfile, ...javaSqlDatabaseArtifacts.mysql.testContainer },
103
115
  ],
104
116
  },
105
117
  r2dbc: {
106
- dependencies: [{ inProfile, ...databaseArtifactForDB.mysql.r2dbc }],
118
+ dependencies: [{ inProfile, ...javaSqlDatabaseArtifacts.mysql.r2dbc }],
107
119
  },
108
120
  },
109
121
  oracle: {
110
122
  jdbc: {
111
123
  dependencies: [
112
- { inProfile, groupId: 'com.oracle.database.jdbc', artifactId: 'ojdbc8' },
113
- { groupId: 'org.testcontainers', artifactId: 'oracle-xe', scope: 'test' },
124
+ { inProfile, ...javaSqlDatabaseArtifacts.oracle.jdbc },
125
+ { inProfile, ...javaSqlDatabaseArtifacts.oracle.testContainer },
114
126
  ],
115
127
  },
116
128
  r2dbc: {},
@@ -118,12 +130,12 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile }) => {
118
130
  postgresql: {
119
131
  jdbc: {
120
132
  dependencies: [
121
- { inProfile, ...databaseArtifactForDB.postgresql.jdbc },
122
- { groupId: 'org.testcontainers', artifactId: 'postgresql', scope: 'test' },
133
+ { inProfile, ...javaSqlDatabaseArtifacts.postgresql.jdbc },
134
+ { inProfile, ...javaSqlDatabaseArtifacts.postgresql.testContainer },
123
135
  ],
124
136
  },
125
137
  r2dbc: {
126
- dependencies: [{ inProfile, ...databaseArtifactForDB.postgresql.r2dbc }],
138
+ dependencies: [{ inProfile, ...javaSqlDatabaseArtifacts.postgresql.r2dbc }],
127
139
  },
128
140
  },
129
141
  };
@@ -36,7 +36,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
36
36
  <&_ } -&>
37
37
 
38
38
  <&_ if (fragment.classAdditionalFieldsSection) { -&>
39
+ @org.springframework.data.annotation.Transient
40
+ <%_ if (!reactive) { _%>
39
41
  @Transient
42
+ <%_ } _%>
40
43
  private boolean isPersisted;
41
44
  <&_ } -&>
42
45
 
@@ -48,7 +51,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
48
51
  }
49
52
  <%_ } -%>
50
53
 
54
+ @org.springframework.data.annotation.Transient
55
+ <%_ if (!reactive) { _%>
51
56
  @Transient
57
+ <%_ } _%>
52
58
  @Override
53
59
  public boolean isNew() {
54
60
  return !this.isPersisted;
@@ -22,7 +22,6 @@
22
22
  -%>
23
23
  <&_ if (fragment.importSection) { -&>
24
24
  import org.springframework.data.annotation.Id;
25
- import org.springframework.data.annotation.Transient;
26
25
  import org.springframework.data.relational.core.mapping.Column;
27
26
  import org.springframework.data.relational.core.mapping.Table;
28
27
  <&_ } -&>
@@ -55,7 +54,7 @@ import org.springframework.data.relational.core.mapping.Table;
55
54
 
56
55
  <%_ for (const relationship of relationships) { _%>
57
56
  <&_ if (fragment.relationship<%- relationship.relationshipNameCapitalized %>AnnotationSection) { -&>
58
- @Transient
57
+ @org.springframework.data.annotation.Transient
59
58
  <&_ } -&>
60
59
  <%_ } -%>
61
60
 
@@ -43,6 +43,10 @@ import org.springframework.core.convert.converter.Converter;
43
43
  import org.springframework.data.elasticsearch.repository.config.Enable<% if (reactive) { %>Reactive<% } %>ElasticsearchRepositories;
44
44
  <%_ } _%>
45
45
  <%_ if (devDatabaseTypeH2Any) { _%>
46
+ import java.sql.SQLException;
47
+ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
48
+ import org.springframework.boot.context.properties.EnableConfigurationProperties;
49
+ import org.springframework.boot.autoconfigure.h2.H2ConsoleProperties;
46
50
  import org.springframework.core.env.Environment;
47
51
  <%_ } _%>
48
52
  <%_ if (reactive) { _%>
@@ -64,9 +68,6 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
64
68
  <%_ } _%>
65
69
  import org.springframework.transaction.annotation.EnableTransactionManagement;
66
70
 
67
- <%_ if (devDatabaseTypeH2Any) { _%>
68
- import java.sql.SQLException;
69
- <%_ } _%>
70
71
  <%_ if (reactive) { _%>
71
72
  import java.time.Duration;
72
73
  import java.time.Instant;
@@ -94,6 +95,9 @@ import java.util.UUID;
94
95
  <%_ if (searchEngineElasticsearch) { _%>
95
96
  @Enable<% if (reactive) { %>Reactive<% } %>ElasticsearchRepositories("<%= packageName %>.repository.search")
96
97
  <%_ } _%>
98
+ <%_ if (devDatabaseTypeH2Any) { _%>
99
+ @EnableConfigurationProperties(H2ConsoleProperties.class)
100
+ <%_ } _%>
97
101
  public class DatabaseConfiguration {
98
102
 
99
103
  <%_ if (devDatabaseTypeH2Any) { _%>
@@ -113,6 +117,7 @@ public class DatabaseConfiguration {
113
117
  */
114
118
  @Bean(initMethod = "start", destroyMethod = "stop")
115
119
  @Profile(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT)
120
+ @ConditionalOnProperty(prefix = "spring.h2.console", name = "enabled", havingValue = "true")
116
121
  public Object h2TCPServer() throws SQLException {
117
122
  String port = getValidPortForH2();
118
123
  LOG.debug("H2 database is available on port {}", port);
@@ -0,0 +1,98 @@
1
+ package <%=packageName%>.config;
2
+
3
+ import com.fasterxml.jackson.core.JsonGenerator;
4
+ import com.fasterxml.jackson.databind.JsonMappingException;
5
+ import com.fasterxml.jackson.databind.SerializerProvider;
6
+ import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitor;
7
+ import com.fasterxml.jackson.databind.node.ObjectNode;
8
+ import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
9
+ import com.fasterxml.jackson.databind.ser.PropertyFilter;
10
+ import com.fasterxml.jackson.databind.ser.PropertyWriter;
11
+ import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
12
+ import jakarta.persistence.Basic;
13
+ import jakarta.persistence.ElementCollection;
14
+ import jakarta.persistence.FetchType;
15
+ import jakarta.persistence.ManyToOne;
16
+ import jakarta.persistence.OneToMany;
17
+ import java.lang.annotation.Annotation;
18
+ import java.util.function.Function;
19
+ import org.hibernate.Hibernate;
20
+ import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
21
+ import org.springframework.context.annotation.Bean;
22
+ import org.springframework.context.annotation.Configuration;
23
+
24
+ @Configuration
25
+ public class JacksonNativeConfiguration {
26
+
27
+ /*
28
+ * Filter to allow Jackson serializer to detect lazy-loaded properties when using hibernate-enhance-maven-plugin
29
+ * see: https://github.com/FasterXML/jackson-datatype-hibernate/issues/148#issuecomment-1383923857
30
+ */
31
+ @Bean
32
+ public Jackson2ObjectMapperBuilderCustomizer customizeJackson() {
33
+ return builder -> {
34
+ String filterName = "lazyPropertyFilter";
35
+ builder.filters(new SimpleFilterProvider().addFilter(filterName, new LazyPropertyFilter()));
36
+ };
37
+ }
38
+
39
+ <%- // Thanks to @hurelhuyag for contributing the LazyPropertyFilter source. %>
40
+ private class LazyPropertyFilter implements PropertyFilter {
41
+
42
+ public static boolean isPropertyInitialized(BeanPropertyWriter prop, Object bean) throws Exception {
43
+ return (
44
+ Hibernate.isPropertyInitialized(bean, prop.getName()) &&
45
+ isInitialized(prop, bean, ManyToOne.class, ManyToOne::fetch) &&
46
+ isInitialized(prop, bean, ElementCollection.class, ElementCollection::fetch) &&
47
+ isInitialized(prop, bean, OneToMany.class, OneToMany::fetch) &&
48
+ isInitialized(prop, bean, Basic.class, Basic::fetch)
49
+ );
50
+ }
51
+
52
+ public static <A extends Annotation> boolean isInitialized(
53
+ BeanPropertyWriter prop,
54
+ Object bean,
55
+ Class<A> type,
56
+ Function<A, FetchType> fetch
57
+ ) throws Exception {
58
+ var ann = prop.getAnnotation(type);
59
+ if (ann == null) {
60
+ return true;
61
+ }
62
+ var fetchType = fetch.apply(ann);
63
+ if (fetchType == FetchType.EAGER) {
64
+ return true;
65
+ }
66
+ var value = prop.get(bean);
67
+ return Hibernate.isInitialized(value);
68
+ }
69
+
70
+ @Override
71
+ public void serializeAsField(Object pojo, JsonGenerator gen, SerializerProvider prov, PropertyWriter writer) throws Exception {
72
+ var initialized = isPropertyInitialized((BeanPropertyWriter) writer, pojo);
73
+ if (initialized) {
74
+ writer.serializeAsField(pojo, gen, prov);
75
+ } else if (!gen.canOmitFields()) { // since 2.3
76
+ writer.serializeAsOmittedField(pojo, gen, prov);
77
+ }
78
+ }
79
+
80
+ @Override
81
+ public void serializeAsElement(Object elementValue, JsonGenerator gen, SerializerProvider prov, PropertyWriter writer) {
82
+ throw new RuntimeException("LazyPropertyFilter.serializeAsElement() currently unsupported");
83
+ }
84
+
85
+ @SuppressWarnings("deprecation")
86
+ @Override
87
+ public void depositSchemaProperty(PropertyWriter writer, ObjectNode propertiesNode, SerializerProvider provider)
88
+ throws JsonMappingException {
89
+ writer.depositSchemaProperty(propertiesNode, provider);
90
+ }
91
+
92
+ @Override
93
+ public void depositSchemaProperty(PropertyWriter writer, JsonObjectFormatVisitor objectVisitor, SerializerProvider provider)
94
+ throws JsonMappingException {
95
+ writer.depositSchemaProperty(objectVisitor, provider);
96
+ }
97
+ }
98
+ }
@@ -37,13 +37,16 @@ export const vueFiles = {
37
37
  microfrontend: [
38
38
  clientRootTemplatesBlock({
39
39
  condition: generator => generator.microfrontend,
40
+ templates: ['module-federation.config.cjs'],
41
+ }),
42
+ clientRootTemplatesBlock({
43
+ condition: ctx => ctx.microfrontend && ctx.clientBundlerWebpack,
40
44
  templates: [
41
45
  'webpack/config.js',
42
46
  'webpack/webpack.common.js',
43
47
  'webpack/webpack.dev.js',
44
48
  'webpack/webpack.prod.js',
45
49
  'webpack/vue.utils.js',
46
- 'webpack/webpack.microfrontend.js.jhi.vue',
47
50
  ],
48
51
  }),
49
52
  {
@@ -6,7 +6,7 @@ export default class VueGenerator extends BaseApplicationGenerator {
6
6
  get default(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, 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>>>, "queueTranslateTransform">;
7
7
  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>>>, "cleanup" | "cleanupOldFilesTask" | "writeEslintClientRootConfigFile" | "writeFiles">;
8
8
  get writingEntities(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, 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>>>, "cleanupEntitiesFiles" | "writeEntitiesFiles" | "writeEntityFiles">;
9
- 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>>>, "addIndexAsset">;
9
+ 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>>>, "addMicrofrontendDependencies" | "addPackageJsonScripts" | "addIndexAsset">;
10
10
  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>>>, "postWriteEntityFiles">;
11
11
  get end(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").TaskParamWithApplication<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>>>, "end">;
12
12
  /**