generator-jhipster 8.2.1 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/dist/cli/environment-builder.mjs +3 -3
  2. package/dist/cli/jhipster-command.mjs +1 -2
  3. package/dist/cli/jhipster.cjs +0 -0
  4. package/dist/generators/angular/command.js +5 -0
  5. package/dist/generators/angular/generator.js +36 -9
  6. package/dist/generators/angular/index.js +1 -0
  7. package/dist/generators/angular/needle-api/needle-client-angular.js +3 -3
  8. package/dist/generators/angular/resources/package.json +13 -10
  9. package/dist/generators/angular/support/index.js +0 -1
  10. package/dist/generators/angular/support/translate-angular.js +142 -8
  11. package/dist/generators/angular/templates/package.json.ejs +0 -10
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +4 -4
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.html.ejs +1 -1
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +18 -26
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +1 -1
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +18 -25
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +1 -1
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +10 -15
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +1 -1
  22. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +31 -46
  23. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +1 -1
  24. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +7 -8
  25. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.ts.ejs +1 -1
  26. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +20 -31
  27. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.ts.ejs +1 -1
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +4 -4
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +7 -7
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +7 -12
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.model.ts.ejs +9 -5
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +5 -9
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +5 -5
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +3 -3
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.ts.ejs +3 -3
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.html.ejs +5 -5
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +12 -12
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.ts.ejs +4 -4
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +36 -36
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.ts.ejs +4 -4
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +2 -2
  43. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.ts.ejs +3 -3
  44. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +33 -33
  45. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.ts.ejs +3 -3
  46. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +8 -8
  47. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +8 -8
  48. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.ts.ejs +4 -4
  49. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +13 -13
  50. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.ts.ejs +3 -3
  51. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +4 -4
  52. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +6 -6
  53. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.ts.ejs +2 -1
  54. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +4 -4
  55. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +26 -26
  56. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +3 -3
  57. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.ts.ejs +2 -2
  58. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +16 -18
  59. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +1 -2
  60. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +20 -34
  61. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +1 -1
  62. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +0 -2
  63. package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +7 -7
  64. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +4 -4
  65. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +25 -25
  66. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +3 -3
  67. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.ts.ejs +2 -2
  68. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +14 -14
  69. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +0 -2
  70. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +1 -2
  71. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +17 -24
  72. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +0 -2
  73. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +14 -15
  74. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs +1 -5
  75. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +1 -1
  76. package/dist/generators/angular/templates/src/main/webapp/app/layouts/footer/footer.component.html.ejs +1 -1
  77. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +11 -18
  78. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +1 -1
  79. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +21 -21
  80. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +0 -2
  81. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  82. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +11 -12
  83. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +1 -2
  84. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +1 -1
  85. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +3 -3
  86. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.ts.ejs +1 -1
  87. package/dist/generators/app/generator.js +4 -4
  88. package/dist/generators/base/generator.js +21 -2
  89. package/dist/generators/base/shared-data.js +1 -2
  90. package/dist/generators/base/support/basename.js +1 -2
  91. package/dist/generators/base/support/needles.js +3 -5
  92. package/dist/generators/base/support/string.js +2 -2
  93. package/dist/generators/base-application/generator.js +4 -4
  94. package/dist/generators/base-application/support/entity.js +1 -2
  95. package/dist/generators/base-application/support/enum.js +2 -2
  96. package/dist/generators/base-application/support/prepare-entity.js +1 -1
  97. package/dist/generators/base-application/support/prepare-field.js +5 -6
  98. package/dist/generators/base-application/support/relationship.js +1 -2
  99. package/dist/generators/base-application/support/task-type-inference.js +6 -0
  100. package/dist/generators/base-core/generator.js +83 -14
  101. package/dist/generators/base-workspaces/internal/deployments.js +2 -2
  102. package/dist/generators/base-workspaces/internal/docker-dependencies.js +2 -2
  103. package/dist/generators/bootstrap/generator.js +4 -5
  104. package/dist/generators/bootstrap/internal/transform-utils.js +4 -0
  105. package/dist/generators/bootstrap/support/eslint-transform.js +2 -1
  106. package/dist/generators/bootstrap/support/java-unused-imports-transform.js +2 -1
  107. package/dist/generators/bootstrap/support/prettier-worker.js +2 -4
  108. package/dist/generators/bootstrap-application/generator.js +3 -4
  109. package/dist/generators/bootstrap-application-base/generator.js +4 -5
  110. package/dist/generators/bootstrap-application-base/utils.js +3 -3
  111. package/dist/generators/bootstrap-application-client/generator.js +2 -3
  112. package/dist/generators/bootstrap-application-server/generator.js +21 -15
  113. package/dist/generators/bootstrap-workspaces/generator.js +1 -2
  114. package/dist/generators/ci-cd/command.js +1 -2
  115. package/dist/generators/ci-cd/generator.js +3 -3
  116. package/dist/generators/client/command.js +1 -2
  117. package/dist/generators/client/generator.js +12 -12
  118. package/dist/generators/client/needle-api/needle-client-vue.js +2 -2
  119. package/dist/generators/client/resources/package.json +4 -4
  120. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +1 -1
  121. package/dist/generators/common/generator.js +5 -5
  122. package/dist/generators/common/resources/package.json +1 -1
  123. package/dist/generators/cucumber/generator.js +17 -10
  124. package/dist/generators/cucumber/templates/buildSrc/src/main/groovy/jhipster.cucumber-conventions.gradle.ejs +1 -5
  125. package/dist/generators/cypress/generator.js +2 -3
  126. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/administration/administration.cy.ts.ejs +10 -0
  127. package/dist/generators/docker/generator.js +4 -6
  128. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +0 -32
  129. package/dist/generators/docker/utils.js +2 -3
  130. package/dist/generators/docker-compose/generator.js +4 -5
  131. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +0 -32
  132. package/dist/generators/entities/generator.js +4 -4
  133. package/dist/generators/entity/generator.js +10 -9
  134. package/dist/generators/entity/prompts.js +12 -12
  135. package/dist/generators/feign-client/generator.js +3 -4
  136. package/dist/generators/gatling/generator.js +2 -3
  137. package/dist/generators/generate-blueprint/files.js +1 -0
  138. package/dist/generators/generate-blueprint/generator.js +3 -4
  139. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +3 -2
  140. package/dist/generators/generate-blueprint/templates/generators/generator/command.mjs.ejs +19 -1
  141. package/dist/generators/generate-blueprint/templates/vitest.test-setup.ts.ejs +6 -0
  142. package/dist/generators/generator-constants.js +5 -2
  143. package/dist/generators/git/generator.js +3 -5
  144. package/dist/generators/gradle/command.js +32 -0
  145. package/dist/generators/gradle/constants.js +0 -1
  146. package/dist/generators/gradle/files.js +2 -8
  147. package/dist/generators/gradle/generator.js +85 -13
  148. package/dist/generators/gradle/generators/code-quality/generator.js +86 -0
  149. package/dist/generators/{java/cleanup.js → gradle/generators/code-quality/index.js} +1 -5
  150. package/dist/generators/gradle/generators/jib/generator.js +64 -0
  151. package/dist/generators/gradle/generators/jib/index.js +19 -0
  152. package/dist/generators/gradle/generators/node-gradle/generator.js +64 -0
  153. package/dist/generators/gradle/generators/node-gradle/index.js +19 -0
  154. package/dist/generators/gradle/generators/node-gradle/templates/buildSrc/src/main/groovy/jhipster.node-gradle-conventions.gradle.ejs +101 -0
  155. package/dist/generators/gradle/index.js +1 -0
  156. package/dist/generators/gradle/internal/needles.js +9 -3
  157. package/dist/generators/gradle/templates/buildSrc/build.gradle.ejs +3 -2
  158. package/dist/generators/gradle/templates/buildSrc/gradle/libs.versions.toml.ejs +8 -1
  159. package/dist/generators/gradle/templates/gradle/wrapper/{gradle-wrapper.properties.ejs → gradle-wrapper.properties} +1 -1
  160. package/dist/generators/heroku/generator.js +3 -3
  161. package/dist/generators/init/generator.js +3 -4
  162. package/dist/generators/init/resources/.node-version +1 -0
  163. package/dist/generators/java/command.js +2 -38
  164. package/dist/generators/java/generator.js +5 -260
  165. package/dist/generators/java/generators/bootstrap/command.js +35 -0
  166. package/dist/generators/java/generators/bootstrap/generator.js +178 -0
  167. package/dist/generators/java/generators/bootstrap/index.js +20 -0
  168. package/dist/generators/java/generators/build-tool/command.js +42 -0
  169. package/dist/generators/java/generators/build-tool/generator.js +143 -0
  170. package/dist/generators/java/generators/build-tool/index.js +20 -0
  171. package/dist/generators/java/generators/code-quality/command.js +5 -0
  172. package/dist/generators/java/generators/code-quality/generator.js +91 -0
  173. package/dist/generators/java/generators/code-quality/index.js +20 -0
  174. package/dist/generators/java/generators/domain/command.js +30 -0
  175. package/dist/generators/java/{entity-files.js → generators/domain/entity-files.js} +1 -1
  176. package/dist/generators/java/generators/domain/generator.js +153 -0
  177. package/dist/generators/java/generators/domain/index.js +20 -0
  178. package/dist/generators/java/generators/jib/command.js +5 -0
  179. package/dist/generators/java/generators/jib/generator.js +97 -0
  180. package/dist/generators/java/generators/jib/index.js +20 -0
  181. package/dist/generators/{server → java/generators/jib}/templates/src/main/docker/jib/entrypoint.sh.ejs +2 -0
  182. package/dist/generators/java/generators/node/command.js +5 -0
  183. package/dist/generators/java/generators/node/generator.js +97 -0
  184. package/dist/generators/java/generators/node/index.js +20 -0
  185. package/dist/generators/java/support/index.js +1 -0
  186. package/dist/generators/jdl/generator.js +6 -9
  187. package/dist/generators/kubernetes/generator.js +1 -1
  188. package/dist/generators/kubernetes/kubernetes-base.js +3 -3
  189. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +0 -32
  190. package/dist/generators/kubernetes-helm/generator.js +1 -1
  191. package/dist/generators/kubernetes-knative/generator.js +1 -1
  192. package/dist/generators/languages/entity-files.js +3 -2
  193. package/dist/generators/languages/generator.js +7 -10
  194. package/dist/generators/languages/support/translate.js +34 -9
  195. package/dist/generators/languages/translation-data.js +4 -5
  196. package/dist/generators/liquibase/generator.js +68 -25
  197. package/dist/generators/liquibase/support/maven-plugin.js +6 -0
  198. package/dist/generators/liquibase/templates/gradle/liquibase.gradle.ejs +3 -6
  199. package/dist/generators/maven/generator.js +14 -6
  200. package/dist/generators/maven/generators/code-quality/command.js +5 -0
  201. package/dist/generators/maven/generators/code-quality/generator.js +268 -0
  202. package/dist/generators/maven/generators/code-quality/index.js +20 -0
  203. package/dist/generators/maven/generators/frontend-plugin/command.js +5 -0
  204. package/dist/generators/maven/generators/frontend-plugin/generator.js +295 -0
  205. package/dist/generators/maven/generators/frontend-plugin/index.js +20 -0
  206. package/dist/generators/maven/generators/jib/command.js +5 -0
  207. package/dist/generators/maven/generators/jib/generator.js +136 -0
  208. package/dist/generators/maven/generators/jib/index.js +20 -0
  209. package/dist/generators/maven/internal/xml-store.js +1 -2
  210. package/dist/generators/maven/support/dependabot-maven.js +12 -2
  211. package/dist/generators/maven/support/pom-store.js +1 -2
  212. package/dist/generators/project-name/generator.js +9 -11
  213. package/dist/generators/react/generator.js +25 -6
  214. package/dist/generators/react/needle-api/needle-client-react.js +2 -2
  215. package/dist/generators/react/resources/package.json +18 -15
  216. package/dist/generators/react/templates/package.json.ejs +1 -7
  217. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/tracker/tracker.tsx.ejs +2 -2
  218. package/dist/generators/server/command.js +2 -34
  219. package/dist/generators/server/generator.js +20 -154
  220. package/dist/generators/server/jdl/application-definition.js +1 -2
  221. package/dist/generators/server/prompts.js +4 -46
  222. package/dist/generators/server/resources/Dockerfile +7 -7
  223. package/dist/generators/server/resources/build.gradle +1 -0
  224. package/dist/generators/server/resources/gradle/libs.versions.toml +25 -7
  225. package/dist/generators/server/resources/pom.xml +4 -22
  226. package/dist/generators/server/support/prepare-field.js +1 -2
  227. package/dist/generators/server/templates/build.gradle.ejs +29 -143
  228. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +1 -1
  229. package/dist/generators/server/templates/gradle.properties.ejs +0 -7
  230. package/dist/generators/server/templates/pom.xml.ejs +23 -444
  231. package/dist/generators/server/templates/settings.gradle.ejs +0 -4
  232. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +15 -3
  233. package/dist/generators/server/templates/src/main/java/_package_/web/filter/SpaWebFilter_imperative.java.ejs +4 -1
  234. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +15 -4
  235. package/dist/generators/server/templates/src/test/java/_package_/IntegrationTest.java.ejs +0 -2
  236. package/dist/generators/server/templates/src/test/java/_package_/config/TestContainersSpringContextCustomizerFactory.java.ejs +71 -46
  237. package/dist/generators/server/templates/src/test/java/_package_/security/jwt/AuthenticationIntegrationTest.java.ejs +0 -3
  238. package/dist/generators/server/templates/src/test/resources/config/application.yml.ejs +1 -1
  239. package/dist/generators/spring-boot/command.js +31 -2
  240. package/dist/generators/spring-boot/entity-files.js +2 -2
  241. package/dist/generators/spring-boot/files.js +3 -38
  242. package/dist/generators/spring-boot/generator.js +98 -37
  243. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +105 -105
  244. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +2 -2
  245. package/dist/generators/spring-cache/generator.js +11 -6
  246. package/dist/generators/spring-cache/internal/dependencies.js +5 -0
  247. package/dist/generators/spring-cache/resources/build.gradle +1 -0
  248. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +15 -0
  249. package/dist/generators/spring-cache/templates/src/test/java/_package_/config/RedisTestContainersSpringContextCustomizerFactory.java.ejs +29 -13
  250. package/dist/generators/spring-cloud/generators/gateway/command.js +5 -0
  251. package/dist/generators/spring-cloud/generators/gateway/generator.js +146 -0
  252. package/dist/generators/spring-cloud/generators/gateway/index.js +20 -0
  253. package/dist/generators/spring-cloud-stream/generator.js +2 -3
  254. package/dist/generators/spring-cloud-stream/generators/kafka/generator.js +2 -2
  255. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainersSpringContextCustomizerFactory.java.ejs +28 -12
  256. package/dist/generators/spring-cloud-stream/generators/pulsar/generator.js +2 -2
  257. package/dist/generators/spring-cloud-stream/generators/pulsar/templates/src/test/java/_package_/config/PulsarTestContainersSpringContextCustomizerFactory.java.ejs +33 -17
  258. package/dist/generators/spring-data-cassandra/generator.js +5 -6
  259. package/dist/generators/spring-data-cassandra/templates/src/test/java/_package_/config/CassandraTestContainersSpringContextCustomizerFactory.java.ejs +33 -17
  260. package/dist/generators/spring-data-couchbase/generator.js +3 -4
  261. package/dist/generators/spring-data-elasticsearch/generator.js +3 -5
  262. package/dist/generators/spring-data-mongodb/generator.js +5 -5
  263. package/dist/generators/spring-data-neo4j/generator.js +11 -5
  264. package/dist/generators/spring-data-neo4j/templates/src/test/java/_package_/config/Neo4jTestContainersSpringContextCustomizerFactory.java.ejs +32 -16
  265. package/dist/generators/spring-data-relational/generator.js +6 -7
  266. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +47 -32
  267. package/dist/generators/spring-websocket/generator.js +2 -3
  268. package/dist/generators/statistics.js +2 -2
  269. package/dist/generators/upgrade/generator.js +4 -3
  270. package/dist/generators/vue/generator.js +4 -4
  271. package/dist/generators/vue/resources/package.json +18 -15
  272. package/dist/generators/vue/templates/package.json.ejs +3 -3
  273. package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.spec.ts.ejs +1 -1
  274. package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.ts.ejs +1 -1
  275. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +3 -3
  276. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.vue.ejs +2 -2
  277. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +4 -3
  278. package/dist/generators/vue/templates/vite.config.mts.ejs +6 -0
  279. package/dist/generators/workspaces/generator.js +5 -4
  280. package/dist/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +2 -2
  281. package/dist/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +3 -3
  282. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +2 -2
  283. package/dist/jdl/jdl-importer.js +1 -2
  284. package/dist/jdl/jhipster/default-application-options.js +1 -1
  285. package/dist/jdl/jhipster/field-types.js +2 -2
  286. package/dist/jdl/jhipster/relationship-types.js +1 -2
  287. package/dist/jdl/models/jdl-deployment.js +1 -2
  288. package/dist/jdl/parsing/api.js +2 -2
  289. package/dist/jdl/parsing/lexer/token-creator.js +1 -2
  290. package/dist/jdl/parsing/self-checks/parsing-system-checker.js +13 -13
  291. package/dist/jdl/parsing/validator.js +5 -5
  292. package/dist/testing/get-generator.js +1 -1
  293. package/dist/testing/helpers.js +34 -9
  294. package/dist/types/generators/angular/support/index.d.ts +0 -1
  295. package/dist/types/generators/angular/support/translate-angular.d.ts +7 -4
  296. package/dist/types/generators/app/support/config.d.ts +1 -1
  297. package/dist/types/generators/base/api.d.ts +7 -0
  298. package/dist/types/generators/base/generator.d.ts +1 -1
  299. package/dist/types/generators/base-application/generator.d.ts +4 -4
  300. package/dist/types/generators/base-application/support/task-type-inference.d.ts +3 -0
  301. package/dist/types/generators/base-application/support/update-application-entities-transform.d.ts +1 -1
  302. package/dist/types/generators/base-core/generator.d.ts +33 -1
  303. package/dist/types/generators/bootstrap/internal/transform-utils.d.ts +1 -0
  304. package/dist/types/generators/bootstrap/support/java-unused-imports-transform.d.ts +1 -1
  305. package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.ts +2 -2
  306. package/dist/types/generators/docker/utils.d.ts +7 -0
  307. package/dist/types/generators/generator-constants.d.ts +2 -20
  308. package/dist/types/generators/gradle/types.d.ts +21 -7
  309. package/dist/types/generators/java/support/index.d.ts +1 -0
  310. package/dist/types/generators/java/types.d.ts +37 -22
  311. package/dist/types/generators/languages/support/translate.d.ts +29 -0
  312. package/dist/types/generators/maven/support/dependabot-maven.d.ts +17 -1
  313. package/dist/types/generators/project-name/support/name-resolver.d.ts +1 -1
  314. package/dist/types/generators/server/types.d.ts +2 -0
  315. package/dist/types/jdl/converters/jdl-to-json/jdl-to-json-field-converter.d.ts +0 -18
  316. package/dist/types/testing/helpers.d.ts +6 -0
  317. package/dist/types/testing/support/matrix-utils.d.ts +1 -1
  318. package/package.json +15 -27
  319. package/dist/generators/java/files.js +0 -20
  320. /package/dist/generators/{server → gradle/generators/code-quality}/templates/buildSrc/src/main/groovy/jhipster.code-quality-conventions.gradle.ejs +0 -0
  321. /package/dist/generators/{server → gradle/generators/jib}/templates/buildSrc/src/main/groovy/jhipster.docker-conventions.gradle.ejs +0 -0
  322. /package/dist/generators/java/{templates → generators/bootstrap/templates}/src/main/java/_package_/GeneratedByJHipster.java.ejs +0 -0
  323. /package/dist/generators/{server → java/generators/code-quality}/templates/checkstyle.xml.ejs +0 -0
  324. /package/dist/generators/java/{templates → generators/domain/templates}/_global_partials_entity_/field_validators.ejs +0 -0
  325. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +0 -0
  326. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +0 -0
  327. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_validation.ejs +0 -0
  328. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/enumeration/_enumName_.java.ejs +0 -0
  329. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +0 -0
  330. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +0 -0
  331. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +0 -0
  332. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/domain/AssertUtils.java.ejs +0 -0
  333. /package/dist/generators/{server → java/generators/node}/templates/npmw +0 -0
  334. /package/dist/generators/{server → java/generators/node}/templates/npmw.cmd +0 -0
  335. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/security/jwt/JWTRelayGatewayFilterFactory.java.ejs +0 -0
  336. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/web/filter/ModifyServersOpenApiFilter.java.ejs +0 -0
  337. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/web/rest/GatewayResource.java.ejs +0 -0
  338. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/web/rest/vm/RouteVM.java.ejs +0 -0
  339. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/test/java/_package_/web/filter/ModifyServersOpenApiFilterTest.java.ejs +0 -0
@@ -81,7 +81,7 @@ describe('Account Service test suite', () => {
81
81
  });
82
82
 
83
83
  it('should init service and check for authority after retrieving account', async () => {
84
- axiosStub.get.resolves({ status: 200, data: { authorities: ['USER'], langKey: 'en' } });
84
+ axiosStub.get.resolves({ status: 200, data: { authorities: ['USER'], langKey: 'en', login: 'ADMIN' } });
85
85
  accountService = new AccountService(store);
86
86
  await accountService.update();
87
87
 
@@ -29,7 +29,7 @@ export default class AccountService {
29
29
  public async retrieveAccount(): Promise<boolean> {
30
30
  try {
31
31
  const response = await axios.get<any>('api/account');
32
- if (response.status === 200 && response.data) {
32
+ if (response.status === 200 && response.data?.login) {
33
33
  const account = response.data;
34
34
  this.store.setAuthentication(account);
35
35
  return true;
@@ -1,6 +1,6 @@
1
1
  import { type ComputedRef, inject, ref, watch } from 'vue';
2
2
  import { useRouter } from 'vue-router';
3
- import * as SockJS from 'sockjs-client';
3
+ import <% if (microfrontend) { %>* as <% } %>SockJS from 'sockjs-client';
4
4
  import { map } from 'rxjs';
5
5
  import { RxStomp, RxStompState } from '@stomp/rx-stomp';
6
6
  import Cookies from 'js-cookie';
@@ -8,9 +8,9 @@ import Cookies from 'js-cookie';
8
8
  const DESTINATION_TRACKER = '/topic/tracker';
9
9
  const DESTINATION_ACTIVITY = '/topic/activity';
10
10
 
11
- export const useTrackerService = ({ stomp }: { stomp?: RxStomp } = {}) => {
11
+ export const useTrackerService = ({ stomp, authenticated }: { stomp?: RxStomp; authenticated?: ComputedRef<boolean> } = {}) => {
12
12
  const router = useRouter();
13
- const authenticated = inject<ComputedRef<boolean>>('authenticated');
13
+ authenticated = authenticated ?? inject('authenticated');
14
14
  const trackerService = new TrackerService({ stomp });
15
15
 
16
16
  router.afterEach(to => trackerService.sendActivity(to.fullPath));
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <div>
3
- <h2 id="tracker-page-heading" v-text="t$('tracker.title')">Real-time user activities</h2>
3
+ <h2 id="tracker-page-heading" v-text="t$('tracker.title')" data-cy="trackerPageHeading">Real-time user activities</h2>
4
4
 
5
5
  <div class="table-responsive">
6
- <table class="table table-striped">
6
+ <table class="table table-striped" data-cy="trackerTable">
7
7
  <thead>
8
8
  <tr>
9
9
  <th v-text="t$('tracker.table.userlogin')">User</th>
@@ -1,7 +1,7 @@
1
1
  // The Vue build version to load with the `import` command
2
2
  // (runtime-only or standalone) has been set in webpack.common with an alias.
3
3
  import Vue, { createApp, provide, computed, watch<% if (enableTranslation) { %>, onMounted<% } %> } from 'vue';
4
- import { createPinia } from 'pinia'
4
+ import { createPinia, storeToRefs } from 'pinia'
5
5
  <%_ if (enableTranslation) { _%>
6
6
  import { useI18n } from 'vue-i18n';
7
7
  <%_ } _%>
@@ -169,7 +169,8 @@ const app = createApp({
169
169
  }
170
170
  );
171
171
 
172
- provide('authenticated', computed(() => store.authenticated));
172
+ const { authenticated } = storeToRefs(store);
173
+ provide('authenticated', authenticated);
173
174
  provide('currentUsername', computed(() => store.account?.login));
174
175
 
175
176
  <%_ if (enableTranslation) { _%>
@@ -179,7 +180,7 @@ const app = createApp({
179
180
  // jhipster-needle-add-entity-service-to-main - JHipster will import entities services here
180
181
  <%_ if (communicationSpringWebsocket) { _%>
181
182
 
182
- provide('trackerService', useTrackerService());
183
+ provide('trackerService', useTrackerService({ authenticated }));
183
184
  <%_ } _%>
184
185
  <%_ if (applicationTypeMicroservice && microfrontend) { _%>
185
186
  provide('microfrontendI18n', false);
@@ -102,11 +102,17 @@ let config = defineConfig({
102
102
  <%_ } _%>
103
103
  <%_ if (applicationTypeGateway || applicationTypeMicroservice) { _%>
104
104
  '/services',
105
+ <%_ } _%>
106
+ <%_ if (communicationSpringWebsocket) { _%>
107
+ '/websocket',
105
108
  <%_ } _%>
106
109
  ].map(res => [
107
110
  res,
108
111
  {
109
112
  target: 'http://localhost:<%= applicationTypeMicroservice ? gatewayServerPort : serverPort %>',
113
+ <%_ if (communicationSpringWebsocket) { _%>
114
+ ws: res === '/websocket',
115
+ <%_ } _%>
110
116
  },
111
117
  ])
112
118
  ),
@@ -17,9 +17,8 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { existsSync } from 'fs';
20
- import { GENERATOR_ANGULAR, GENERATOR_BOOTSTRAP_WORKSPACES, GENERATOR_GIT, GENERATOR_WORKSPACES } from '../generator-list.js';
20
+ import { GENERATOR_ANGULAR, GENERATOR_BOOTSTRAP_WORKSPACES, GENERATOR_GIT } from '../generator-list.js';
21
21
  import BaseWorkspacesGenerator from '../base-workspaces/index.js';
22
- import command from './command.js';
23
22
  /**
24
23
  * Base class for a generator that can be extended through a blueprint.
25
24
  *
@@ -34,7 +33,7 @@ export default class WorkspacesGenerator extends BaseWorkspacesGenerator {
34
33
  generateWorkspaces;
35
34
  async beforeQueue() {
36
35
  if (!this.fromBlueprint) {
37
- await this.composeWithBlueprints(GENERATOR_WORKSPACES);
36
+ await this.composeWithBlueprints();
38
37
  }
39
38
  if (!this.delegateToBlueprint) {
40
39
  await this.dependsOnJHipster(GENERATOR_BOOTSTRAP_WORKSPACES, { generatorOptions: { customWorkspacesConfig: true } });
@@ -42,8 +41,10 @@ export default class WorkspacesGenerator extends BaseWorkspacesGenerator {
42
41
  }
43
42
  get initializing() {
44
43
  return this.asInitializingTaskGroup({
44
+ async parseCommand() {
45
+ await this.parseCurrentJHipsterCommand();
46
+ },
45
47
  loadConfig() {
46
- this.parseJHipsterOptions(command.options);
47
48
  // Generate workspaces file if workspace option is passed, or if workspace option is ommitted and monorepository is enabled, or if regenerating.
48
49
  this.generateWorkspaces = (this.workspaces ?? this.jhipsterConfig.monorepository) || Boolean(this.packageJson?.get('workspaces'));
49
50
  // When generating workspaces, save to .yo-rc.json. Use a dummy config otherwise.
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { capitalize } from 'lodash-es';
20
20
  import { validations } from '../../jhipster/index.js';
21
21
  import formatComment from '../../utils/format-utils.js';
22
22
  import { camelCase } from '../../utils/string-utils.js';
@@ -117,7 +117,7 @@ function getFieldValidations(jdlField) {
117
117
  jdlField.forEachValidation(validation => {
118
118
  fieldValidations.fieldValidateRules.push(validation.name);
119
119
  if (validation.name !== REQUIRED && validation.name !== UNIQUE) {
120
- fieldValidations[`fieldValidateRules${_.capitalize(validation.name)}`] = validation.value;
120
+ fieldValidations[`fieldValidateRules${capitalize(validation.name)}`] = validation.value;
121
121
  }
122
122
  });
123
123
  return fieldValidations;
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { kebabCase } from 'lodash-es';
20
20
  import { relationshipOptions, validations } from '../../jhipster/index.js';
21
21
  import { camelCase, lowerFirst } from '../../utils/string-utils.js';
22
22
  const { Validations: { REQUIRED }, } = validations;
@@ -66,7 +66,7 @@ function setRelationshipsFromEntity(relatedRelationships, entityName) {
66
66
  const otherSplitField = extractField(relationshipToConvert.injectedFieldInTo);
67
67
  const convertedRelationship = {
68
68
  relationshipSide: 'left',
69
- relationshipType: _.kebabCase(relationshipToConvert.type),
69
+ relationshipType: kebabCase(relationshipToConvert.type),
70
70
  otherEntityName: camelCase(relationshipToConvert.to),
71
71
  };
72
72
  if (otherSplitField.relationshipName) {
@@ -94,7 +94,7 @@ function setRelationshipsToEntity(relatedRelationships, entityName) {
94
94
  const otherSplitField = extractField(relationshipToConvert.injectedFieldInFrom);
95
95
  const convertedRelationship = {
96
96
  relationshipSide: 'right',
97
- relationshipType: otherRelationshipType(_.kebabCase(relationshipToConvert.type)),
97
+ relationshipType: otherRelationshipType(kebabCase(relationshipToConvert.type)),
98
98
  otherEntityName: camelCase(relationshipToConvert.from),
99
99
  };
100
100
  if (otherSplitField.relationshipName) {
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { lowerFirst } from 'lodash-es';
20
20
  import JDLObject from '../../models/jdl-object.js';
21
21
  import JDLBinaryOption from '../../models/jdl-binary-option.js';
22
22
  import { applicationTypes, binaryOptions } from '../../jhipster/index.js';
@@ -128,7 +128,7 @@ function fillAssociations() {
128
128
  function convertAnnotationsToOptions(annotations) {
129
129
  const result = {};
130
130
  annotations.forEach(annotation => {
131
- const annotationName = _.lowerFirst(annotation.optionName);
131
+ const annotationName = lowerFirst(annotation.optionName);
132
132
  const value = annotation.optionValue ? annotation.optionValue : true;
133
133
  if (annotationName in result) {
134
134
  const previousValue = result[annotationName];
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { uniqBy } from 'lodash-es';
20
20
  import * as JDLReader from './readers/jdl-reader.js';
21
21
  import ParsedJDLToJDLObjectConverter from './converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js';
22
22
  import { readJSONFile } from './readers/json-file-reader.js';
@@ -31,7 +31,6 @@ import createWithoutApplicationValidator from './validators/jdl-without-applicat
31
31
  import { applicationOptions } from './jhipster/index.js';
32
32
  const { OptionNames } = applicationOptions;
33
33
  const { APPLICATION_TYPE, BASE_NAME } = OptionNames;
34
- const { uniqBy } = _;
35
34
  /**
36
35
  * Creates a new JDL importer from files.
37
36
  * There are two ways to create an importer:
@@ -187,8 +187,8 @@ export function getServerConfigForGatewayApplication(customOptions = {}) {
187
187
  options[CACHE_PROVIDER] = NO_CACHE_PROVIDER;
188
188
  options[ENABLE_HIBERNATE_CACHE] = false;
189
189
  return {
190
- ...options,
191
190
  [REACTIVE]: true,
191
+ ...options,
192
192
  [APPLICATION_TYPE]: GATEWAY,
193
193
  };
194
194
  }
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { snakeCase } from 'lodash-es';
20
20
  import validations from './validations.js';
21
21
  import JDLEnum from '../models/jdl-enum.js';
22
22
  import databaseTypes from './database-types.js';
@@ -84,7 +84,7 @@ export function isCommonDBType(type) {
84
84
  if (!type) {
85
85
  throw new Error('The passed type must not be nil.');
86
86
  }
87
- return _.snakeCase(type).toUpperCase() in CommonDBTypes || type instanceof JDLEnum;
87
+ return snakeCase(type).toUpperCase() in CommonDBTypes || type instanceof JDLEnum;
88
88
  }
89
89
  export function isBlobType(type) {
90
90
  if (!type) {
@@ -16,9 +16,8 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { camelCase, upperFirst } from 'lodash-es';
20
20
  import { relationshipTypes } from '../basic-types/relationships.js';
21
- const { camelCase, upperFirst } = _;
22
21
  export const asJdlRelationshipType = (type) => upperFirst(camelCase(type));
23
22
  export const relationshipTypeExists = (relationship) => Object.values(relationshipTypes).includes(relationship);
24
23
  export default relationshipTypes;
@@ -16,12 +16,11 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { isEqual } from 'lodash-es';
20
20
  import { deploymentOptions, applicationOptions, serviceDiscoveryTypes } from '../jhipster/index.js';
21
21
  import { merge } from '../utils/object-utils.js';
22
22
  import { join } from '../utils/set-utils.js';
23
23
  const { Options } = deploymentOptions;
24
- const { isEqual } = _;
25
24
  const arrayTypes = ['appsFolders', 'clusteredDbApps'];
26
25
  const NO_SERVICE_DISCOVERY = serviceDiscoveryTypes.NO;
27
26
  export default class JDLDeployment {
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { uniq } from 'lodash-es';
20
20
  import { EOF } from 'chevrotain';
21
21
  import JDLAstBuilderVisitor from './jdl-ast-builder-visitor.js';
22
22
  import { JDLLexer, tokens } from './lexer/lexer.js';
@@ -78,5 +78,5 @@ export function getSyntacticAutoCompleteSuggestions(input, startRule = 'prog') {
78
78
  // Each suggestion includes additional information such as the "Rule Stack" at suggestion point.
79
79
  // This may be handy for advanced implementations, e.g: different logic for suggesting a NAME token in an entity
80
80
  // or a field. But it is irrelevant in the scope of the POC.
81
- return _.uniq(syntacticSuggestions.map(suggestion => suggestion.nextTokenType));
81
+ return uniq(syntacticSuggestions.map(suggestion => suggestion.nextTokenType));
82
82
  }
@@ -16,10 +16,9 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { isString } from 'lodash-es';
20
20
  import { createToken } from 'chevrotain';
21
21
  import { NAME, KEYWORD, namePattern } from './shared-tokens.js';
22
- const { isString } = _;
23
22
  export default function createTokenFromConfig(config) {
24
23
  if (!config) {
25
24
  throw new Error("Can't create a token without the proper config.");
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import * as _ from 'lodash-es';
19
+ import { difference, flatMap, includes, isEmpty, reject, some, uniq, values } from 'lodash-es';
20
20
  import { Lexer } from 'chevrotain';
21
21
  import TokenCollectorVisitor from './token-collector-visitor.js';
22
22
  export function checkTokens(allDefinedTokens, rules) {
@@ -31,37 +31,37 @@ function getUsedTokens(rules) {
31
31
  return rules.reduce((result, currentRule) => {
32
32
  const collector = new TokenCollectorVisitor();
33
33
  currentRule.accept(collector);
34
- return _.uniq(result.concat(collector.actualTokens));
34
+ return uniq(result.concat(collector.actualTokens));
35
35
  }, []);
36
36
  }
37
37
  function getUselessTokens(usedTokens, allDefinedTokens) {
38
- const usedCategories = _.uniq(_.flatMap(usedTokens, 'CATEGORIES'));
38
+ const usedCategories = uniq(flatMap(usedTokens, 'CATEGORIES'));
39
39
  // TODO: Calling uniq with two parameters is probably a bug.
40
40
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
41
41
  // @ts-expect-error
42
- const notDirectlyUsedTokens = _.difference(allDefinedTokens, _.uniq(usedTokens, usedCategories));
43
- const redundant = _.reject(notDirectlyUsedTokens, token => {
42
+ const notDirectlyUsedTokens = difference(allDefinedTokens, uniq(usedTokens, usedCategories));
43
+ const redundant = reject(notDirectlyUsedTokens, token => {
44
44
  const tokCategories = token.CATEGORIES;
45
- return _.some(tokCategories, category => _.includes(usedCategories, category));
45
+ return some(tokCategories, category => includes(usedCategories, category));
46
46
  });
47
- return _.reject(redundant, tokenType => tokenType.GROUP === Lexer.SKIPPED);
47
+ return reject(redundant, tokenType => tokenType.GROUP === Lexer.SKIPPED);
48
48
  }
49
49
  export function checkConfigKeys(definedTokensMap, usedConfigKeys) {
50
50
  checkForUselessConfigurationKeys(definedTokensMap, usedConfigKeys);
51
51
  checkForMissingConfigurationKeys(definedTokensMap, usedConfigKeys);
52
52
  }
53
53
  function checkForUselessConfigurationKeys(definedTokensMap, usedConfigKeys) {
54
- const redundantConfigKeys = _.difference(usedConfigKeys, Object.keys(definedTokensMap));
55
- if (!_.isEmpty(redundantConfigKeys)) {
54
+ const redundantConfigKeys = difference(usedConfigKeys, Object.keys(definedTokensMap));
55
+ if (!isEmpty(redundantConfigKeys)) {
56
56
  throw Error(`Useless configuration keys: [ ${redundantConfigKeys.join(', ')} ]`);
57
57
  }
58
58
  }
59
59
  function checkForMissingConfigurationKeys(definedTokensMap, usedConfigKeys) {
60
- const definedConfigKeyNames = _.values(definedTokensMap)
61
- .filter(tokenType => _.includes(tokenType.CATEGORIES, definedTokensMap.CONFIG_KEY))
60
+ const definedConfigKeyNames = values(definedTokensMap)
61
+ .filter(tokenType => includes(tokenType.CATEGORIES, definedTokensMap.CONFIG_KEY))
62
62
  .map(tokenType => tokenType.name);
63
- const missingConfigKeys = _.difference(definedConfigKeyNames, usedConfigKeys);
64
- if (!_.isEmpty(missingConfigKeys)) {
63
+ const missingConfigKeys = difference(definedConfigKeyNames, usedConfigKeys);
64
+ if (!isEmpty(missingConfigKeys)) {
65
65
  throw Error(`Missing configuration keys: [ ${missingConfigKeys.join(', ')} ]`);
66
66
  }
67
67
  }
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  /* eslint-disable no-useless-escape */
20
- import * as _ from 'lodash-es';
20
+ import { first, flatten, includes, values } from 'lodash-es';
21
21
  import { tokenMatcher as matchesToken } from 'chevrotain';
22
22
  import JDLParser from './jdl-parser.js';
23
23
  import { tokens as LexerTokens } from './lexer/lexer.js';
@@ -351,7 +351,7 @@ class JDLSyntaxValidatorVisitor extends BaseJDLCSTVisitorWithDefaults {
351
351
  if (actual.name !== 'qualifiedName' &&
352
352
  // a Boolean (true/false) is also a valid name.
353
353
  actual.tokenType &&
354
- !_.includes(actual.tokenType.CATEGORIES, LexerTokens.BOOLEAN)) {
354
+ !includes(actual.tokenType.CATEGORIES, LexerTokens.BOOLEAN)) {
355
355
  this.errors.push({
356
356
  message: `A name is expected, but found: "${getFirstToken(actual).image}"`,
357
357
  token: getFirstToken(actual),
@@ -517,14 +517,14 @@ class JDLSyntaxValidatorVisitor extends BaseJDLCSTVisitorWithDefaults {
517
517
  this.visit(context.configValue, context.CONFIG_KEY[0]);
518
518
  }
519
519
  configValue(context, configKey) {
520
- const configValue = _.first(_.first(Object.values(context)));
520
+ const configValue = first(first(Object.values(context)));
521
521
  this.checkConfigPropSyntax(configKey, configValue);
522
522
  }
523
523
  deploymentConfigDeclaration(context) {
524
524
  this.visit(context.deploymentConfigValue, context.DEPLOYMENT_KEY[0]);
525
525
  }
526
526
  deploymentConfigValue(context, configKey) {
527
- const configValue = _.first(_.first(_.values(context)));
527
+ const configValue = first(first(values(context)));
528
528
  this.checkDeploymentConfigPropSyntax(configKey, configValue);
529
529
  }
530
530
  }
@@ -542,5 +542,5 @@ function getFirstToken(tokOrCstNode) {
542
542
  return tokOrCstNode;
543
543
  }
544
544
  // CST Node - - assumes no nested CST Nodes, only terminals
545
- return _.flatten(Object.values(tokOrCstNode.children)).reduce((firstTok, nextTok) => (firstTok.startOffset > nextTok.startOffset ? nextTok : firstTok), { startOffset: Infinity });
545
+ return flatten(Object.values(tokOrCstNode.children)).reduce((firstTok, nextTok) => (firstTok.startOffset > nextTok.startOffset ? nextTok : firstTok), { startOffset: Infinity });
546
546
  }
@@ -4,7 +4,7 @@ import { existsSync } from 'fs';
4
4
  const __filename = fileURLToPath(import.meta.url);
5
5
  const __dirname = dirname(__filename);
6
6
  export const getGeneratorFolder = (generatorName) => {
7
- return resolve(__dirname, '../generators', generatorName);
7
+ return resolve(__dirname, '../generators', generatorName.split(':').join('/generators/'));
8
8
  };
9
9
  const getGenerator = (generatorName) => {
10
10
  const generatorFolder = getGeneratorFolder(generatorName);
@@ -1,6 +1,8 @@
1
1
  import { YeomanTest, RunContext, result } from 'yeoman-test';
2
- import * as _ from 'lodash-es';
3
- import { basename, join } from 'path';
2
+ import { merge, set } from 'lodash-es';
3
+ import { globSync } from 'glob';
4
+ import { basename, dirname, join } from 'path';
5
+ import { fileURLToPath } from 'url';
4
6
  import EnvironmentBuilder from '../cli/environment-builder.mjs';
5
7
  import { JHIPSTER_CONFIG_DIR } from '../generators/generator-constants.js';
6
8
  import { GENERATOR_WORKSPACES } from '../generators/generator-list.js';
@@ -8,12 +10,20 @@ import getGenerator from './get-generator.js';
8
10
  import { createJHipsterLogger, normalizePathEnd, parseCreationTimestamp } from '../generators/base/support/index.js';
9
11
  import BaseGenerator from '../generators/base/index.js';
10
12
  import { getPackageRoot, isDistFolder } from '../lib/index.js';
11
- const { set } = _;
12
13
  const runResult = result;
13
14
  export { runResult, runResult as result };
14
15
  const DEFAULT_TEST_SETTINGS = { forwardCwd: true };
15
16
  const DEFAULT_TEST_OPTIONS = { skipInstall: true };
16
17
  const DEFAULT_TEST_ENV_OPTIONS = { skipInstall: true, dryRun: false };
18
+ const generatorsDir = join(fileURLToPath(import.meta.url), '../../generators');
19
+ const mockedGenerators = [
20
+ ...globSync('*/index.{j,t}s', { cwd: generatorsDir, posix: true }).map(file => dirname(file)),
21
+ ...globSync('*/generators/*/index.{j,t}s', { cwd: generatorsDir, posix: true }).map(file => dirname(file).replace('/generators/', ':')),
22
+ ]
23
+ .filter(gen => !gen.startsWith('bootstrap-'))
24
+ .map(gen => `jhipster:${gen}`)
25
+ .sort();
26
+ const defaultSharedApplication = Object.fromEntries(['CLIENT_WEBPACK_DIR'].map(key => [key, undefined]));
17
27
  let defaultMockFactory;
18
28
  export const defineDefaults = async ({ mockFactory } = {}) => {
19
29
  if (mockFactory) {
@@ -165,10 +175,25 @@ class JHipsterRunContext extends RunContext {
165
175
  return this.withSharedData({ control: this.sharedControl });
166
176
  }
167
177
  withSharedApplication(sharedApplication) {
168
- this.sharedApplication = this.sharedApplication ?? {};
169
- Object.assign(this.sharedApplication, sharedApplication);
178
+ this.sharedApplication = this.sharedApplication ?? { ...defaultSharedApplication };
179
+ merge(this.sharedApplication, sharedApplication);
170
180
  return this.withSharedData({ sharedApplication: this.sharedApplication });
171
181
  }
182
+ withMockedJHipsterGenerators(exceptList = []) {
183
+ return this.withMockedGenerators(mockedGenerators.filter(gen => !exceptList.includes(gen) && this.Generator !== gen));
184
+ }
185
+ withGradleBuildTool() {
186
+ return this.withFiles({
187
+ 'build.gradle': `
188
+ dependencies {
189
+ // jhipster-needle-gradle-dependency
190
+ }
191
+ plugins {
192
+ // jhipster-needle-gradle-plugins
193
+ }
194
+ `,
195
+ }).withJHipsterConfig({ buildTool: 'gradle' });
196
+ }
172
197
  withSharedData(sharedData) {
173
198
  if (!this.sharedData) {
174
199
  const applicationId = 'test-application';
@@ -182,7 +207,7 @@ class JHipsterRunContext extends RunContext {
182
207
  return this;
183
208
  }
184
209
  async run() {
185
- const runResult = await super.run();
210
+ const runResult = (await super.run());
186
211
  if (this.sharedSource) {
187
212
  const sourceCallsArg = Object.fromEntries(Object.entries(this.sharedSource).map(([name, fn]) => [name, fn.mock.calls.map(args => args[0])]));
188
213
  if (sourceCallsArg.addEntitiesToClient) {
@@ -197,9 +222,9 @@ class JHipsterRunContext extends RunContext {
197
222
  relationships: relationships.map(rel => `Relationship[${rel.relationshipName}]`),
198
223
  }));
199
224
  }
200
- const jhipsterRunResult = runResult;
201
- jhipsterRunResult.sourceCallsArg = sourceCallsArg;
225
+ runResult.sourceCallsArg = sourceCallsArg;
202
226
  }
227
+ runResult.composedMockedGenerators = mockedGenerators.filter(gen => runResult.mockedGenerators[gen]?.called && !['jhipster:bootstrap', 'jhipster:project-name'].includes(gen));
203
228
  return runResult;
204
229
  }
205
230
  }
@@ -220,7 +245,7 @@ class JHipsterTest extends YeomanTest {
220
245
  class BlueprintedGenerator extends BaseGenerator {
221
246
  async beforeQueue() {
222
247
  if (!this.fromBlueprint) {
223
- await this.composeWithBlueprints('test-blueprint');
248
+ await this.composeWithBlueprints();
224
249
  }
225
250
  }
226
251
  rootGeneratorName() {
@@ -20,5 +20,4 @@ export * from './needles.js';
20
20
  export * from './path-utils.js';
21
21
  export * from './reserved-keywords.js';
22
22
  export * from './translate-angular.js';
23
- export { default as translateAngularFilesTransform } from './translate-angular.js';
24
23
  export { default as updateLanguagesTask } from './update-languages.js';
@@ -1,11 +1,14 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
+ export type ReplacerOptions = {
3
+ jhiPrefix: string;
4
+ enableTranslation: boolean;
5
+ };
2
6
  /**
3
7
  * Replace and cleanup translations.
4
8
  *
5
9
  * @type {import('../generator-base.js').EditFileCallback}
6
10
  * @this {import('../generator-base.js')}
7
11
  */
8
- export const createTranslationReplacer: any;
9
- export function isTranslatedAngularFile(file: any): boolean;
10
- export default translateAngularFilesTransform;
11
- declare function translateAngularFilesTransform(getWebappTranslation: any, enableTranslation: any): import("stream").Transform;
12
+ export declare const createTranslationReplacer: (getWebappTranslation: any, opts: ReplacerOptions | boolean) => (content: any, filePath: any) => any;
13
+ export declare const isTranslatedAngularFile: (file: any) => boolean;
14
+ export declare const translateAngularFilesTransform: (getWebappTranslation: any, opts: ReplacerOptions | boolean) => import("stream").Transform;
@@ -17,7 +17,7 @@ export declare function loadStoredAppOptions(this: any, { options, jhipsterConfi
17
17
  export declare const loadAppConfig: ({ config, application, useVersionPlaceholders, }: {
18
18
  config: any;
19
19
  application: any;
20
- useVersionPlaceholders?: boolean | undefined;
20
+ useVersionPlaceholders?: boolean;
21
21
  }) => void;
22
22
  /**
23
23
  * @param {Object} dest - destination context to use default is context
@@ -196,6 +196,7 @@ export type PromptSpec = {
196
196
  default?: any | ((any) => any);
197
197
  filter?: any | ((any) => any);
198
198
  transformer?: any | ((any) => any);
199
+ validate?: any | ((any) => any);
199
200
  };
200
201
 
201
202
  export type JHipsterArgumentConfig = SetOptional<ArgumentSpec, 'name'> & { scope?: 'storage' | 'blueprint' | 'generator' };
@@ -231,6 +232,12 @@ export type JHipsterCommandDefinition = {
231
232
  * @example ['server', 'jhipster-blueprint:server']
232
233
  */
233
234
  import?: string[];
235
+ /**
236
+ * @experimental
237
+ * Compose with generator.
238
+ * @example ['server', 'jhipster-blueprint:server']
239
+ */
240
+ compose?: string[];
234
241
  /**
235
242
  * Override options from the generator been blueprinted.
236
243
  */
@@ -1,6 +1,6 @@
1
1
  import type { ComposeOptions } from 'yeoman-generator';
2
2
  import { BaseGeneratorDefinition, GenericTaskGroup } from './tasks.js';
3
- import { JHipsterGeneratorFeatures, JHipsterGeneratorOptions } from './api.js';
3
+ import type { JHipsterGeneratorFeatures, JHipsterGeneratorOptions } from './api.js';
4
4
  import CoreGenerator from '../base-core/index.js';
5
5
  /**
6
6
  * Base class that contains blueprints support.
@@ -27,10 +27,10 @@ export default class BaseApplicationGenerator<Definition extends BaseApplication
27
27
  static WRITING_ENTITIES: string;
28
28
  static POST_WRITING_ENTITIES: string;
29
29
  constructor(args: string | string[], options: JHipsterGeneratorOptions, features: JHipsterGeneratorFeatures);
30
- dependsOnBootstrapAplication(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
31
- dependsOnBootstrapAplicationBase(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
32
- dependsOnBootstrapAplicationServer(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
33
- dependsOnBootstrapAplicationClient(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
30
+ dependsOnBootstrapApplication(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
31
+ dependsOnBootstrapApplicationBase(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
32
+ dependsOnBootstrapApplicationServer(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
33
+ dependsOnBootstrapApplicationClient(options?: ComposeOptions | undefined): Promise<import("@yeoman/types").BaseGenerator[]>;
34
34
  /**
35
35
  * Get Entities configuration path
36
36
  * @returns
@@ -1,5 +1,8 @@
1
1
  import CoreGenerator from '../../base-core/generator.js';
2
+ import { WriteFileSection, WriteFileBlock } from '../../base/api.js';
2
3
  import { GeneratorDefinition } from '../generator.js';
4
+ export declare function asWriteFilesSection<Data = GeneratorDefinition['writingTaskParam']['application']>(section: WriteFileSection<CoreGenerator, Data>): WriteFileSection<CoreGenerator, Data>;
5
+ export declare function asWriteFilesBlock<Data = GeneratorDefinition['writingTaskParam']['application']>(section: WriteFileBlock<CoreGenerator, Data>): WriteFileBlock<CoreGenerator, Data>;
3
6
  export declare function asInitializingTask(task: (this: CoreGenerator, params: GeneratorDefinition['initializingTaskParam']) => void): (this: CoreGenerator, params: GeneratorDefinition['initializingTaskParam']) => void;
4
7
  export declare function asPromptingTask(task: (this: CoreGenerator, params: GeneratorDefinition['promptingTaskParam']) => void): (this: CoreGenerator, params: GeneratorDefinition['promptingTaskParam']) => void;
5
8
  export declare function asConfiguringTask(task: (this: CoreGenerator, params: GeneratorDefinition['configuringTaskParam']) => void): (this: CoreGenerator, params: GeneratorDefinition['configuringTaskParam']) => void;
@@ -1,4 +1,4 @@
1
1
  export declare const updateApplicationEntitiesTransform: ({ destinationPath, throwOnMissingConfig, }: {
2
2
  destinationPath: string;
3
- throwOnMissingConfig?: boolean | undefined;
3
+ throwOnMissingConfig?: boolean;
4
4
  }) => import("p-transform").DuplexWithDebug;