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
@@ -21,7 +21,7 @@ import { existsSync, readFileSync } from 'fs';
21
21
  import path, { dirname, resolve } from 'path';
22
22
  import { fileURLToPath, pathToFileURL } from 'url';
23
23
  import chalk from 'chalk';
24
- import * as _ from 'lodash-es';
24
+ import { cloneDeep, mergeWith } from 'lodash-es';
25
25
  import Environment from 'yeoman-environment';
26
26
  import { QueuedAdapter } from '@yeoman/adapter';
27
27
  import { CLI_NAME, logger } from './utils.mjs';
@@ -366,7 +366,7 @@ export default class EnvironmentBuilder {
366
366
  const blueprintCommandsUrl = pathToFileURL(resolve(`${blueprintCommandFile}${blueprintCommandExtension}`));
367
367
  try {
368
368
  blueprintCommand = (await import(blueprintCommandsUrl)).default;
369
- const blueprintCommands = _.cloneDeep(blueprintCommand);
369
+ const blueprintCommands = cloneDeep(blueprintCommand);
370
370
  Object.entries(blueprintCommands).forEach(([_command, commandSpec]) => {
371
371
  commandSpec.blueprint = commandSpec.blueprint || blueprint;
372
372
  });
@@ -437,7 +437,7 @@ export default class EnvironmentBuilder {
437
437
  for (const [blueprint, packagePath] of blueprintPackagePaths) {
438
438
  const errorMsg = `No custom sharedOptions found within blueprint: ${blueprint} at ${packagePath}`;
439
439
  const opts = await loadSharedOptionsFromFile(`${packagePath}/cli/sharedOptions`, undefined, errorMsg);
440
- result = _.mergeWith(result, opts, joiner);
440
+ result = mergeWith(result, opts, joiner);
441
441
  }
442
442
  return result;
443
443
  }
@@ -18,9 +18,8 @@
18
18
  */
19
19
  import chalk from 'chalk';
20
20
  import { Command, Option } from 'commander';
21
- import lodash from 'lodash';
21
+ import { kebabCase } from 'lodash-es';
22
22
  import { convertConfigToOption } from '../lib/internal/index.js';
23
- const { kebabCase } = lodash;
24
23
  export default class JHipsterCommand extends Command {
25
24
  createCommand(name) {
26
25
  return new JHipsterCommand(name);
File without changes
@@ -0,0 +1,5 @@
1
+ const command = {
2
+ options: {},
3
+ import: [],
4
+ };
5
+ export default command;
@@ -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 { camelCase } from 'lodash-es';
20
20
  import chalk from 'chalk';
21
21
  import { isFileStateModified } from 'mem-fs-editor/state';
22
22
  import BaseApplicationGenerator from '../base-application/index.js';
@@ -34,7 +34,7 @@ export default class AngularGenerator extends BaseApplicationGenerator {
34
34
  localEntities;
35
35
  async beforeQueue() {
36
36
  if (!this.fromBlueprint) {
37
- await this.composeWithBlueprints(GENERATOR_ANGULAR);
37
+ await this.composeWithBlueprints();
38
38
  }
39
39
  if (!this.delegateToBlueprint) {
40
40
  await this.dependsOnJHipster(GENERATOR_CLIENT);
@@ -49,7 +49,7 @@ export default class AngularGenerator extends BaseApplicationGenerator {
49
49
  });
50
50
  }
51
51
  get [BaseApplicationGenerator.LOADING]() {
52
- return this.asLoadingTaskGroup(this.delegateTasksToBlueprint(() => this.loading));
52
+ return this.delegateTasksToBlueprint(() => this.loading);
53
53
  }
54
54
  get preparing() {
55
55
  return this.asPreparingTaskGroup({
@@ -94,7 +94,7 @@ export default class AngularGenerator extends BaseApplicationGenerator {
94
94
  });
95
95
  }
96
96
  get [BaseApplicationGenerator.PREPARING]() {
97
- return this.asPreparingTaskGroup(this.delegateTasksToBlueprint(() => this.preparing));
97
+ return this.delegateTasksToBlueprint(() => this.preparing);
98
98
  }
99
99
  get preparingEachEntity() {
100
100
  return this.asPreparingEachEntityTaskGroup({
@@ -120,16 +120,17 @@ export default class AngularGenerator extends BaseApplicationGenerator {
120
120
  this.localEntities = entities.filter(entity => !entity.builtIn && !entity.skipClient);
121
121
  },
122
122
  queueTranslateTransform({ control, application }) {
123
+ const { enableTranslation, jhiPrefix } = application;
123
124
  this.queueTransformStream({
124
125
  name: 'translating angular application',
125
126
  filter: file => isFileStateModified(file) && file.path.startsWith(this.destinationPath()) && isTranslatedAngularFile(file),
126
127
  refresh: false,
127
- }, translateAngularFilesTransform(control.getWebappTranslation, application.enableTranslation));
128
+ }, translateAngularFilesTransform(control.getWebappTranslation, { enableTranslation, jhiPrefix }));
128
129
  },
129
130
  });
130
131
  }
131
132
  get [BaseApplicationGenerator.DEFAULT]() {
132
- return this.asDefaultTaskGroup(this.delegateTasksToBlueprint(() => this.default));
133
+ return this.delegateTasksToBlueprint(() => this.default);
133
134
  }
134
135
  get writing() {
135
136
  return this.asWritingTaskGroup({
@@ -149,6 +150,32 @@ export default class AngularGenerator extends BaseApplicationGenerator {
149
150
  get [BaseApplicationGenerator.WRITING_ENTITIES]() {
150
151
  return this.delegateTasksToBlueprint(() => this.writingEntities);
151
152
  }
153
+ get postWriting() {
154
+ return this.asPostWritingTaskGroup({
155
+ addWebsocketDependencies({ application }) {
156
+ const { authenticationTypeSession, communicationSpringWebsocket, nodeDependencies } = application;
157
+ const dependencies = {};
158
+ if (communicationSpringWebsocket) {
159
+ if (authenticationTypeSession) {
160
+ dependencies['ngx-cookie-service'] = nodeDependencies['ngx-cookie-service'];
161
+ }
162
+ this.packageJson.merge({
163
+ dependencies: {
164
+ 'sockjs-client': nodeDependencies['sockjs-client'],
165
+ '@stomp/rx-stomp': nodeDependencies['@stomp/rx-stomp'],
166
+ ...dependencies,
167
+ },
168
+ devDependencies: {
169
+ '@types/sockjs-client': nodeDependencies['@types/sockjs-client'],
170
+ },
171
+ });
172
+ }
173
+ },
174
+ });
175
+ }
176
+ get [BaseApplicationGenerator.POST_WRITING]() {
177
+ return this.delegateTasksToBlueprint(() => this.postWriting);
178
+ }
152
179
  get postWritingEntities() {
153
180
  return this.asPostWritingEntitiesTaskGroup({
154
181
  postWriteEntitiesFiles,
@@ -168,7 +195,7 @@ export default class AngularGenerator extends BaseApplicationGenerator {
168
195
  });
169
196
  }
170
197
  get [BaseApplicationGenerator.END]() {
171
- return this.asEndTaskGroup(this.delegateTasksToBlueprint(() => this.end));
198
+ return this.delegateTasksToBlueprint(() => this.end);
172
199
  }
173
200
  /**
174
201
  * @private
@@ -239,7 +266,7 @@ export default class AngularGenerator extends BaseApplicationGenerator {
239
266
  * @param {boolean} enableTranslation - If translations are enabled or not
240
267
  * @param {string} translationKeyMenu - i18n key for entry in the admin menu
241
268
  */
242
- addElementToAdminMenu(routerName, iconName, enableTranslation, translationKeyMenu = _.camelCase(routerName), jhiPrefix) {
269
+ addElementToAdminMenu(routerName, iconName, enableTranslation, translationKeyMenu = camelCase(routerName), jhiPrefix) {
243
270
  this.needleApi.clientAngular.addElementToAdminMenu(routerName, iconName, enableTranslation, translationKeyMenu, jhiPrefix);
244
271
  }
245
272
  addEntitiesToMenu({ application, entities }) {
@@ -344,7 +371,7 @@ export default class AngularGenerator extends BaseApplicationGenerator {
344
371
  * @param {string} clientFramework - The name of the client framework
345
372
  * @param {string} translationKeyMenu - i18n key for entry in the menu
346
373
  */
347
- addElementToMenu(routerName, iconName, enableTranslation, clientFramework, translationKeyMenu = _.camelCase(routerName)) {
374
+ addElementToMenu(routerName, iconName, enableTranslation, clientFramework, translationKeyMenu = camelCase(routerName)) {
348
375
  this.needleApi.clientAngular.addElementToMenu(routerName, iconName, enableTranslation, translationKeyMenu);
349
376
  }
350
377
  }
@@ -17,3 +17,4 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  export { default } from './generator.js';
20
+ export { default as command } from './command.js';
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import chalk from 'chalk';
20
- import * as _ from 'lodash-es';
20
+ import { startCase } from 'lodash-es';
21
21
  import needleClientBase from '../../client/needle-api/needle-client.js';
22
22
  import { LINE_LENGTH } from '../../generator-constants.js';
23
23
  import { stripMargin, upperFirstCamelCase } from '../../base/support/index.js';
@@ -82,7 +82,7 @@ export default class extends needleClientBase {
82
82
  const entityEntry = `<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
83
83
  <a class="nav-link" ${routerLink} (click)="collapseNavbar()">
84
84
  <fa-icon icon="${iconName}" [fixedWidth]="true"></fa-icon>
85
- <span${enableTranslation ? ` ${jhiPrefix}Translate="global.menu.${translationKeyMenu}"` : ''}>${_.startCase(routerName)}</span>
85
+ <span${enableTranslation ? ` ${jhiPrefix}Translate="global.menu.${translationKeyMenu}"` : ''}>${startCase(routerName)}</span>
86
86
  </a>
87
87
  </li>`;
88
88
  const rewriteFileModel = this.generateFileModel(entityMenuPath, 'jhipster-needle-add-element-to-menu', entityEntry);
@@ -98,7 +98,7 @@ export default class extends needleClientBase {
98
98
  const entityEntry = `<li>
99
99
  <a class="dropdown-item" ${routerLink} routerLinkActive="active" (click)="collapseNavbar()">
100
100
  <fa-icon icon="${iconName}" [fixedWidth]="true"></fa-icon>
101
- <span${enableTranslation ? ` ${jhiPrefix}Translate="global.menu.admin.${translationKeyMenu}"` : ''}>${_.startCase(routerName)}</span>
101
+ <span${enableTranslation ? ` ${jhiPrefix}Translate="global.menu.admin.${translationKeyMenu}"` : ''}>${startCase(routerName)}</span>
102
102
  </a>
103
103
  </li>`;
104
104
  const rewriteFileModel = this.generateFileModel(navbarAdminPath, 'jhipster-needle-add-element-to-admin-menu', entityEntry);
@@ -1,31 +1,34 @@
1
1
  {
2
2
  "dependencies": {
3
- "@angular/common": "17.3.0",
3
+ "@angular/common": "17.3.3",
4
4
  "@fortawesome/angular-fontawesome": "0.14.1",
5
- "@fortawesome/fontawesome-svg-core": "6.5.1",
6
- "@fortawesome/free-solid-svg-icons": "6.5.1",
5
+ "@fortawesome/fontawesome-svg-core": "6.5.2",
6
+ "@fortawesome/free-solid-svg-icons": "6.5.2",
7
7
  "@ng-bootstrap/ng-bootstrap": "16.0.0",
8
8
  "@ngx-translate/core": "15.0.0",
9
9
  "@ngx-translate/http-loader": "8.0.0",
10
10
  "@popperjs/core": "2.11.8",
11
+ "@stomp/rx-stomp": "2.0.0",
11
12
  "bootstrap": "5.3.3",
12
13
  "bootswatch": "5.3.3",
13
14
  "ngx-cookie-service": "17.1.0",
14
15
  "ngx-infinite-scroll": "17.0.0",
15
16
  "rxjs": "7.8.1",
17
+ "sockjs-client": "1.6.1",
16
18
  "tslib": "2.6.2",
17
19
  "zone.js": "0.14.4"
18
20
  },
19
21
  "devDependencies": {
20
22
  "@angular-architects/module-federation": "17.0.8",
21
23
  "@angular-architects/module-federation-runtime": "17.0.8",
22
- "@angular-builders/custom-webpack": "17.0.1",
23
- "@angular-builders/jest": "17.0.2",
24
+ "@angular-builders/custom-webpack": "17.0.2",
25
+ "@angular-builders/jest": "17.0.3",
24
26
  "@angular-eslint/eslint-plugin": "17.3.0",
25
- "@angular/cli": "17.3.0",
27
+ "@angular/cli": "17.3.3",
26
28
  "@types/jest": "29.5.12",
27
29
  "@types/node": "20.11.25",
28
- "@typescript-eslint/eslint-plugin": "7.3.1",
30
+ "@types/sockjs-client": "1.5.4",
31
+ "@typescript-eslint/eslint-plugin": "7.6.0",
29
32
  "browser-sync": "3.0.2",
30
33
  "browser-sync-webpack-plugin": "2.3.0",
31
34
  "buffer": "6.0.3",
@@ -35,7 +38,7 @@
35
38
  "eslint-webpack-plugin": "4.1.0",
36
39
  "folder-hash": "4.0.4",
37
40
  "jest": "29.7.0",
38
- "jest-date-mock": "1.0.8",
41
+ "jest-date-mock": "1.0.9",
39
42
  "jest-junit": "16.0.0",
40
43
  "jest-preset-angular": "14.0.3",
41
44
  "jest-sonar": "0.2.16",
@@ -43,8 +46,8 @@
43
46
  "postcss-rtlcss": "5.1.0",
44
47
  "rimraf": "5.0.5",
45
48
  "ts-jest": "29.1.2",
46
- "typescript": "5.4.2",
47
- "webpack": "5.90.3",
49
+ "typescript": "5.4.4",
50
+ "webpack": "5.91.0",
48
51
  "webpack-bundle-analyzer": "4.10.1",
49
52
  "webpack-merge": "5.10.0",
50
53
  "webpack-notifier": "1.15.0"
@@ -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';
@@ -16,9 +16,10 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import { extname } from 'node:path';
19
20
  import { passthrough } from '@yeoman/transform';
20
21
  import { Minimatch } from 'minimatch';
21
- import { createJhiTransformTranslateReplacer, createJhiTransformTranslateStringifyReplacer } from '../../languages/support/index.js';
22
+ import { createJhiTransformTranslateReplacer, createJhiTransformTranslateStringifyReplacer, createJhiTranslateReplacer, escapeHtmlTranslationValue, escapeTsTranslationValue, } from '../../languages/support/index.js';
22
23
  const PLACEHOLDER_REGEX = /(?:placeholder|title)=['|"](\{\{\s?['|"]([a-zA-Z0-9.\-_]+)['|"]\s?\|\s?translate\s?\}\})['|"]/.source;
23
24
  const JHI_TRANSLATE_REGEX = /(\n?\s*[a-z][a-zA-Z]*Translate="[a-zA-Z0-9 +{}'_!?.]+")/.source;
24
25
  const TRANSLATE_VALUES_REGEX = /(\n?\s*\[translateValues\]="\{(?:(?!\}").)*?\}")/.source;
@@ -35,9 +36,10 @@ function getTranslationValue(getWebappTranslation, key, data) {
35
36
  * @param {object} [options]
36
37
  * @param {number} [options.keyIndex]
37
38
  * @param {number} [options.replacementIndex]
39
+ * @param {any} [options.escape]
38
40
  * @returns {string}
39
41
  */
40
- function replaceTranslationKeysWithText(getWebappTranslation, content, regexSource, { keyIndex = 1, replacementIndex = 1, escape } = {}) {
42
+ function replaceTranslationKeysWithText(getWebappTranslation, content, regexSource, { keyIndex = 1, replacementIndex = 1, escape, } = {}) {
41
43
  const regex = new RegExp(regexSource, 'g');
42
44
  const allMatches = content.matchAll(regex);
43
45
  for (const match of allMatches) {
@@ -87,15 +89,145 @@ function replacePlaceholders(getWebappTranslation, content) {
87
89
  function replaceErrorMessage(getWebappTranslation, content) {
88
90
  return replaceJSTranslation(getWebappTranslation, content, 'errorMessage');
89
91
  }
92
+ /**
93
+ * Creates a `jhiTranslate` attribute with optional translateValues.
94
+ * Or the translation value if translation is disabled.
95
+ */
96
+ const tagTranslation = (getWebappTranslation, { enableTranslation, jhiPrefix }, { key, parsedInterpolate, prefix, suffix }) => {
97
+ const translatedValueInterpolate = parsedInterpolate
98
+ ? Object.fromEntries(Object.entries(parsedInterpolate).map(([key, value]) => [key, `{{ ${value} }}`]))
99
+ : undefined;
100
+ const translatedValue = escapeHtmlTranslationValue(getTranslationValue(getWebappTranslation, key, translatedValueInterpolate));
101
+ if (enableTranslation) {
102
+ const translateValuesAttr = parsedInterpolate
103
+ ? ` [translateValues]="{ ${Object.entries(parsedInterpolate)
104
+ .map(([key, value]) => `${key}: ${value}`)
105
+ .join(', ')} }"`
106
+ : '';
107
+ return ` ${jhiPrefix}Translate="${key}"${translateValuesAttr}${prefix}${translatedValue}${suffix}`;
108
+ }
109
+ return `${prefix}${translatedValue}${suffix}`;
110
+ };
111
+ /**
112
+ * Creates a `jhiTranslate` attribute with translateValues.
113
+ * Or the translation value if translation is disabled.
114
+ */
115
+ const validationTagTranslation = (getWebappTranslation, { enableTranslation, jhiPrefix }, { key, parsedInterpolate, prefix, suffix }) => {
116
+ if (!parsedInterpolate || Object.keys(parsedInterpolate).length === 0) {
117
+ throw new Error(`No interpolation values found for translation key ${key}, use __jhiTranslateTag__ instead.`);
118
+ }
119
+ const translatedValue = escapeHtmlTranslationValue(getTranslationValue(getWebappTranslation, key, parsedInterpolate));
120
+ if (enableTranslation) {
121
+ const translateValuesAttr = parsedInterpolate
122
+ ? ` [translateValues]="{ ${Object.entries(parsedInterpolate)
123
+ .map(([key, value]) => `${key}: '${value}'`)
124
+ .join(', ')} }"`
125
+ : '';
126
+ return ` ${jhiPrefix}Translate="${key}"${translateValuesAttr}${prefix}${translatedValue}${suffix}`;
127
+ }
128
+ return `${prefix}${translatedValue}${suffix}`;
129
+ };
130
+ /**
131
+ * Creates a `jhiTranslate` attribute with optional translateValues.
132
+ * Or the translation value if translation is disabled.
133
+ */
134
+ const tagPipeTranslation = (getWebappTranslation, { enableTranslation, jhiPrefix }, { key, parsedInterpolate, prefix, suffix }) => {
135
+ if (!parsedInterpolate || Object.keys(parsedInterpolate).length === 0) {
136
+ throw new Error(`No interpolation values found for translation key ${key}, use __jhiTranslateTag__ instead.`);
137
+ }
138
+ const translatedValueInterpolate = Object.fromEntries(Object.entries(parsedInterpolate).map(([key, value]) => [key, getWebappTranslation(value)]));
139
+ const translatedValue = escapeHtmlTranslationValue(getTranslationValue(getWebappTranslation, key, translatedValueInterpolate));
140
+ if (enableTranslation) {
141
+ const translateValuesAttr = ` [translateValues]="{ ${Object.entries(parsedInterpolate)
142
+ .map(([key, value]) => `${key}: ('${value}' | translate)`)
143
+ .join(', ')} }"`;
144
+ return ` ${jhiPrefix}Translate="${key}"${translateValuesAttr}${prefix}${translatedValue}${suffix}`;
145
+ }
146
+ return `${prefix}${translatedValue}${suffix}`;
147
+ };
148
+ /**
149
+ * Creates a `jhiTranslate` attribute with optional translateValues.
150
+ * Or the translation value if translation is disabled.
151
+ */
152
+ const tagEnumTranslation = (getWebappTranslation, { enableTranslation, jhiPrefix }, { key, parsedInterpolate, prefix, suffix }) => {
153
+ if (!parsedInterpolate?.value) {
154
+ throw new Error(`Value is required for TagEnum ${key}.`);
155
+ }
156
+ const { value, fallback } = parsedInterpolate;
157
+ const translatedValue = `{{ ${JSON.stringify(getTranslationValue(getWebappTranslation, key))}[${value}]${fallback ? ` || ${fallback}` : ''} }}`;
158
+ if (enableTranslation) {
159
+ return ` [${jhiPrefix}Translate]="'${key}.' + (${parsedInterpolate?.value})"${prefix}${translatedValue}${suffix}`;
160
+ }
161
+ return `${prefix}${translatedValue}${suffix}`;
162
+ };
163
+ /**
164
+ * Creates a `translate` pipe.
165
+ * Or the translation value if translation is disabled.
166
+ */
167
+ const pipeTranslation = (getWebappTranslation, { enableTranslation }, { key, prefix, suffix }) => {
168
+ if (enableTranslation) {
169
+ return `${prefix}{{ '${key}' | translate }}${suffix}`;
170
+ }
171
+ return `${prefix}${escapeHtmlTranslationValue(getTranslationValue(getWebappTranslation, key))}${suffix}`;
172
+ };
173
+ /**
174
+ * Get translation value.
175
+ */
176
+ const valueTranslation = (getWebappTranslation, _replacerOptions, { filePath, key, prefix, suffix }) => {
177
+ let translationValue = getTranslationValue(getWebappTranslation, key);
178
+ const fileExtension = extname(filePath);
179
+ if (fileExtension === '.html') {
180
+ translationValue = escapeHtmlTranslationValue(translationValue);
181
+ }
182
+ else if (fileExtension === '.ts') {
183
+ translationValue = escapeTsTranslationValue(translationValue);
184
+ }
185
+ return `${prefix}${translationValue}${suffix}`;
186
+ };
187
+ /**
188
+ * Creates a `translate` pipe.
189
+ * Or the translation value if translation is disabled.
190
+ */
191
+ const pipeEnumTranslation = (getWebappTranslation, { enableTranslation }, { key, parsedInterpolate, prefix, suffix }) => {
192
+ if (!parsedInterpolate?.value) {
193
+ throw new Error(`Value is required for TagEnum ${key}.`);
194
+ }
195
+ const { value, fallback } = parsedInterpolate;
196
+ if (enableTranslation) {
197
+ return `${prefix}{{ '${key}.' + ${value} | translate }}${suffix}`;
198
+ }
199
+ const translatedValue = `{{ ${JSON.stringify(getTranslationValue(getWebappTranslation, key))}[${value}]${fallback ? ` ?? ${fallback}` : ''} }}`;
200
+ return `${prefix}${translatedValue}${suffix}`;
201
+ };
202
+ const replaceImplementations = {
203
+ Tag: tagTranslation,
204
+ TagPipe: tagPipeTranslation,
205
+ TagEnum: tagEnumTranslation,
206
+ ValidationTag: validationTagTranslation,
207
+ Pipe: pipeTranslation,
208
+ PipeEnum: pipeEnumTranslation,
209
+ Value: valueTranslation,
210
+ };
90
211
  /**
91
212
  * Replace and cleanup translations.
92
213
  *
93
214
  * @type {import('../generator-base.js').EditFileCallback}
94
215
  * @this {import('../generator-base.js')}
95
216
  */
96
- export const createTranslationReplacer = (getWebappTranslation, enableTranslation) => {
217
+ export const createTranslationReplacer = (getWebappTranslation, opts) => {
97
218
  const htmlJhiTranslateReplacer = createJhiTransformTranslateReplacer(getWebappTranslation, { escapeHtml: true });
98
- const htmlJhiTranslateStringifyReplacer = createJhiTransformTranslateStringifyReplacer(getWebappTranslation, { escapeHtml: true });
219
+ const htmlJhiTranslateStringifyReplacer = createJhiTransformTranslateStringifyReplacer(getWebappTranslation);
220
+ let translationReplacer;
221
+ const enableTranslation = typeof opts === 'boolean' ? opts : opts.enableTranslation;
222
+ if (typeof opts !== 'boolean') {
223
+ translationReplacer = createJhiTranslateReplacer(optsReplacer => {
224
+ const replacer = replaceImplementations[optsReplacer.type] ??
225
+ (() => {
226
+ throw new Error(`Translation type not supported ${optsReplacer.type}`);
227
+ });
228
+ return replacer(getWebappTranslation, opts, optsReplacer);
229
+ }, { prefixPattern: '>\\s*', suffixPattern: '\\s*<' });
230
+ }
99
231
  return function replaceAngularTranslations(content, filePath) {
100
232
  if (/\.html$/.test(filePath)) {
101
233
  if (!enableTranslation) {
@@ -108,6 +240,9 @@ export const createTranslationReplacer = (getWebappTranslation, enableTranslatio
108
240
  content = htmlJhiTranslateReplacer(content);
109
241
  content = htmlJhiTranslateStringifyReplacer(content);
110
242
  }
243
+ if (/(:?\.html|.ts)$/.test(filePath)) {
244
+ content = translationReplacer?.(content, filePath);
245
+ }
111
246
  if (!enableTranslation) {
112
247
  if (/(:?route|module)\.ts$/.test(filePath)) {
113
248
  content = replacePageTitles(getWebappTranslation, content);
@@ -119,12 +254,11 @@ export const createTranslationReplacer = (getWebappTranslation, enableTranslatio
119
254
  return content;
120
255
  };
121
256
  };
122
- const minimatch = new Minimatch('**/*{.html,.component.ts,.route.ts,.module.ts}');
257
+ const minimatch = new Minimatch('**/*{.html,.ts}');
123
258
  export const isTranslatedAngularFile = file => minimatch.match(file.path);
124
- const translateAngularFilesTransform = (getWebappTranslation, enableTranslation) => {
125
- const translate = createTranslationReplacer(getWebappTranslation, enableTranslation);
259
+ export const translateAngularFilesTransform = (getWebappTranslation, opts) => {
260
+ const translate = createTranslationReplacer(getWebappTranslation, opts);
126
261
  return passthrough(file => {
127
262
  file.contents = Buffer.from(translate(file.contents.toString(), file.path));
128
263
  });
129
264
  };
130
- export default translateAngularFilesTransform;
@@ -48,16 +48,9 @@
48
48
  "bootswatch": "<%= nodeDependencies.bootswatch %>",
49
49
  <%_ } _%>
50
50
  "dayjs": "<%= nodeDependencies['dayjs'] %>",
51
- <%_ if (authenticationTypeSession && communicationSpringWebsocket) { _%>
52
- "ngx-cookie-service": "<%= nodeDependencies['ngx-cookie-service'] %>",
53
- <%_ } _%>
54
51
  "ngx-infinite-scroll": "<%= nodeDependencies['ngx-infinite-scroll'] %>",
55
52
  "@popperjs/core": "<%= nodeDependencies['@popperjs/core'] %>",
56
53
  "rxjs": "<%= nodeDependencies['rxjs'] %>",
57
- <%_ if (communicationSpringWebsocket) { _%>
58
- "sockjs-client": "1.6.1",
59
- "@stomp/rx-stomp": "1.2.0",
60
- <%_ } _%>
61
54
  "tslib": "<%= nodeDependencies['tslib'] %>",
62
55
  "zone.js": "<%= nodeDependencies['zone.js'] %>"
63
56
  },
@@ -71,9 +64,6 @@
71
64
  <%_ } _%>
72
65
  "@angular-architects/module-federation": "<%= nodeDependencies['@angular-architects/module-federation'] %>",
73
66
  <%_ } _%>
74
- <%_ if (communicationSpringWebsocket) { _%>
75
- "@types/sockjs-client": "1.5.1",
76
- <%_ } _%>
77
67
  <%_ if (cypressTests) { _%>
78
68
  "cypress": "<%= nodeDependencies['cypress'] %>",
79
69
  <%_ } _%>
@@ -19,15 +19,15 @@
19
19
  <div>
20
20
  <div class="d-flex justify-content-center">
21
21
  <div class="col-md-8">
22
- <h1 <%= jhiPrefix %>Translate="activate.title">__jhiTransformTranslate__('activate.title')</h1>
22
+ <h1>__jhiTranslateTag__('activate.title')</h1>
23
23
  @if (success()) {
24
24
  <div class="alert alert-success">
25
- <span <%= jhiPrefix %>Translate="activate.messages.success">__jhiTransformTranslate__('activate.messages.success')</span>
26
- <a class="alert-link" routerLink="/login" <%= jhiPrefix %>Translate="global.messages.info.authenticated.link">__jhiTransformTranslate__('global.messages.info.authenticated.link')</a>.
25
+ <span>__jhiTranslateTag__('activate.messages.success')</span>
26
+ <a class="alert-link" routerLink="/login">__jhiTranslateTag__('global.messages.info.authenticated.link')</a>.
27
27
  </div>
28
28
  }
29
29
  @if (error()) {
30
- <div class="alert alert-danger" <%= jhiPrefix %>Translate="activate.messages.error">__jhiTransformTranslate__('activate.messages.error')</div>
30
+ <div class="alert alert-danger">__jhiTranslateTag__('activate.messages.error')</div>
31
31
  }
32
32
  </div>
33
33
  </div>
@@ -24,8 +24,8 @@ import SharedModule from 'app/shared/shared.module';
24
24
  import { ActivateService } from './activate.service';
25
25
 
26
26
  @Component({
27
- selector: '<%= jhiPrefixDashed %>-activate',
28
27
  standalone: true,
28
+ selector: '<%= jhiPrefixDashed %>-activate',
29
29
  imports: [SharedModule, RouterModule],
30
30
  templateUrl: './activate.component.html',
31
31
  })
@@ -17,7 +17,7 @@
17
17
  limitations under the License.
18
18
  -%>
19
19
  <div id="strength">
20
- <small<% if (enableTranslation) { %> <%= jhiPrefix %>Translate="global.messages.validate.newpassword.strength"<% } %>>__jhiTransformTranslate__('global.messages.validate.newpassword.strength')</small>
20
+ <small>__jhiTranslateTag__('global.messages.validate.newpassword.strength')</small>
21
21
  <ul id="strengthBar">
22
22
  <li class="point"></li>
23
23
  <li class="point"></li>
@@ -21,8 +21,8 @@ import { Component, ElementRef, inject, Input, Renderer2 } from '@angular/core';
21
21
  import SharedModule from 'app/shared/shared.module';
22
22
 
23
23
  @Component({
24
- selector: '<%= jhiPrefixDashed %>-password-strength-bar',
25
24
  standalone: true,
25
+ selector: '<%= jhiPrefixDashed %>-password-strength-bar',
26
26
  imports: [SharedModule],
27
27
  templateUrl: './password-strength-bar.component.html',
28
28
  styleUrl: './password-strength-bar.component.scss',