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
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Copyright 2013-2024 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import BaseApplicationGenerator from '../../../base-application/index.js';
20
+ export default class NodeGenerator extends BaseApplicationGenerator {
21
+ async beforeQueue() {
22
+ if (!this.fromBlueprint) {
23
+ await this.composeWithBlueprints();
24
+ }
25
+ if (!this.delegateToBlueprint) {
26
+ await this.dependsOnBootstrapApplication();
27
+ await this.dependsOnJHipster('jhipster:java:build-tool');
28
+ }
29
+ }
30
+ get initializing() {
31
+ return this.asInitializingTaskGroup({
32
+ async parseCommand() {
33
+ await this.parseCurrentJHipsterCommand();
34
+ },
35
+ });
36
+ }
37
+ get [BaseApplicationGenerator.INITIALIZING]() {
38
+ return this.delegateTasksToBlueprint(() => this.initializing);
39
+ }
40
+ get prompting() {
41
+ return this.asPromptingTaskGroup({
42
+ async promptCommand({ control }) {
43
+ if (control.existingProject && this.options.askAnswered !== true)
44
+ return;
45
+ await this.promptCurrentJHipsterCommand();
46
+ },
47
+ });
48
+ }
49
+ get [BaseApplicationGenerator.PROMPTING]() {
50
+ return this.delegateTasksToBlueprint(() => this.prompting);
51
+ }
52
+ get composing() {
53
+ return this.asComposingTaskGroup({
54
+ async compose() {
55
+ const { buildTool } = this.jhipsterConfigWithDefaults;
56
+ if (buildTool === 'maven') {
57
+ await this.composeWithJHipster('jhipster:maven:frontend-plugin');
58
+ }
59
+ else if (buildTool === 'gradle') {
60
+ await this.composeWithJHipster('jhipster:gradle:node-gradle');
61
+ }
62
+ },
63
+ });
64
+ }
65
+ get [BaseApplicationGenerator.COMPOSING]() {
66
+ return this.delegateTasksToBlueprint(() => this.composing);
67
+ }
68
+ get loading() {
69
+ return this.asLoadingTaskGroup({
70
+ async loadConfig({ application }) {
71
+ await this.loadCurrentJHipsterCommandConfig(application);
72
+ },
73
+ });
74
+ }
75
+ get [BaseApplicationGenerator.LOADING]() {
76
+ return this.delegateTasksToBlueprint(() => this.loading);
77
+ }
78
+ get writing() {
79
+ return this.asWritingTaskGroup({
80
+ async writing({ application }) {
81
+ await this.writeFiles({
82
+ blocks: [
83
+ {
84
+ condition: (ctx) => ctx.useNpmWrapper,
85
+ transform: false,
86
+ templates: ['npmw', 'npmw.cmd'],
87
+ },
88
+ ],
89
+ context: application,
90
+ });
91
+ },
92
+ });
93
+ }
94
+ get [BaseApplicationGenerator.WRITING]() {
95
+ return this.delegateTasksToBlueprint(() => this.writing);
96
+ }
97
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright 2013-2024 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ export { default } from './generator.js';
20
+ export { default as command } from './command.js';
@@ -25,5 +25,6 @@ export { default as generatedAnnotationTransform } from './generated-annotation-
25
25
  export * from './java-formatting.js';
26
26
  export * from './key-store.js';
27
27
  export { default as packageInfoTransform } from './package-info-transform.js';
28
+ export * from './package-info-transform.js';
28
29
  export * from './reserved-keywords.js';
29
30
  export * from './util.js';
@@ -17,12 +17,11 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { extname } from 'path';
20
- import * as _ from 'lodash-es';
20
+ import { upperFirst } from 'lodash-es';
21
21
  import { create as createMemFs } from 'mem-fs';
22
22
  import { create as createMemFsEditor } from 'mem-fs-editor';
23
23
  import { readFile } from 'fs/promises';
24
24
  import BaseGenerator from '../base/index.js';
25
- import command from './command.js';
26
25
  import { downloadJdlFile } from '../../cli/download.mjs';
27
26
  import EnvironmentBuilder from '../../cli/environment-builder.mjs';
28
27
  import { CLI_NAME } from '../../cli/utils.mjs';
@@ -34,7 +33,6 @@ import { addApplicationIndex, allNewApplications, customizeForMicroservices } fr
34
33
  import { mergeYoRcContent } from '../../jdl/index.js';
35
34
  import { normalizeBlueprintName } from '../base/internal/blueprint.js';
36
35
  import { updateApplicationEntitiesTransform } from '../base-application/support/update-application-entities-transform.js';
37
- const { upperFirst } = _;
38
36
  /**
39
37
  * Add jdl extension to the file
40
38
  */
@@ -66,25 +64,24 @@ export default class JdlGenerator extends BaseGenerator {
66
64
  exportedDeployments;
67
65
  async beforeQueue() {
68
66
  if (!this.fromBlueprint) {
69
- await this.composeWithBlueprints('jdl');
67
+ await this.composeWithBlueprints();
70
68
  }
71
69
  }
72
70
  get initializing() {
73
71
  return this.asInitializingTaskGroup({
72
+ async parseCommand() {
73
+ await this.parseCurrentJHipsterCommand();
74
+ },
74
75
  loadArguments() {
75
- this.parseJHipsterArguments(command.arguments);
76
76
  if (this.jdlFiles) {
77
77
  this.log.verboseInfo('Generating jdls', ...this.jdlFiles);
78
78
  }
79
79
  },
80
- loadOptions() {
81
- this.parseJHipsterOptions(command.options);
82
- },
83
80
  existingProject() {
84
81
  this.existingProject = this.jhipsterConfig.baseName !== undefined && this.config.existed;
85
82
  },
86
83
  checkOptions() {
87
- if (!this.inline && !this.jdlFiles?.length) {
84
+ if (!this.skipChecks && !this.inline && !this.jdlFiles?.length) {
88
85
  throw new Error('At least one jdl file is required.');
89
86
  }
90
87
  },
@@ -41,7 +41,7 @@ const { MAVEN } = buildToolTypes;
41
41
  export default class KubernetesGenerator extends BaseWorkspacesGenerator {
42
42
  async beforeQueue() {
43
43
  if (!this.fromBlueprint) {
44
- await this.composeWithBlueprints(GENERATOR_KUBERNETES);
44
+ await this.composeWithBlueprints();
45
45
  }
46
46
  }
47
47
  get initializing() {
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import crypto from 'crypto';
20
- import * as _ from 'lodash-es';
20
+ import { defaults } from 'lodash-es';
21
21
  import { defaultKubernetesConfig } from './kubernetes-constants.js';
22
22
  import { loadFromYoRc } from '../base-workspaces/internal/docker-base.js';
23
23
  import { KUBERNETES_CORE_API_VERSION, KUBERNETES_BATCH_API_VERSION, KUBERNETES_DEPLOYMENT_API_VERSION, KUBERNETES_STATEFULSET_API_VERSION, KUBERNETES_INGRESS_API_VERSION, KUBERNETES_ISTIO_NETWORKING_API_VERSION, KUBERNETES_RBAC_API_VERSION, HELM_KAFKA, HELM_ELASTICSEARCH, HELM_PROMETHEUS, HELM_GRAFANA, HELM_MARIADB, HELM_MYSQL, HELM_POSTGRESQL, HELM_MONGODB_REPLICASET, HELM_COUCHBASE_OPERATOR, } from '../generator-constants.js';
@@ -54,7 +54,7 @@ export function loadConfig() {
54
54
  if (!this.jhipsterConfig.dbRandomPassword) {
55
55
  this.jhipsterConfig.dbRandomPassword = this.options.reproducibleTests ? 'SECRET-PASSWORD' : crypto.randomBytes(30).toString('hex');
56
56
  }
57
- const kubernetesWithDefaults = _.defaults({}, this.jhipsterConfig, defaultKubernetesConfig);
57
+ const kubernetesWithDefaults = defaults({}, this.jhipsterConfig, defaultKubernetesConfig);
58
58
  this.kubernetesNamespace = kubernetesWithDefaults.kubernetesNamespace;
59
59
  this.kubernetesServiceType = kubernetesWithDefaults.kubernetesServiceType;
60
60
  this.ingressType = kubernetesWithDefaults.ingressType;
@@ -66,7 +66,7 @@ export function loadConfig() {
66
66
  this.generatorType = kubernetesWithDefaults.generatorType;
67
67
  }
68
68
  export function saveConfig() {
69
- this.config.set(_.defaults({
69
+ this.config.set(defaults({
70
70
  appsFolders: this.appsFolders,
71
71
  directoryPath: this.directoryPath,
72
72
  clusteredDbApps: this.clusteredDbApps,
@@ -1855,22 +1855,6 @@ data:
1855
1855
  "topLevel": false,
1856
1856
  "builtIn": true,
1857
1857
  "authenticationExecutions": [
1858
- {
1859
- "authenticator": "basic-auth",
1860
- "authenticatorFlow": false,
1861
- "requirement": "REQUIRED",
1862
- "priority": 10,
1863
- "userSetupAllowed": false,
1864
- "autheticatorFlow": false
1865
- },
1866
- {
1867
- "authenticator": "basic-auth-otp",
1868
- "authenticatorFlow": false,
1869
- "requirement": "DISABLED",
1870
- "priority": 20,
1871
- "userSetupAllowed": false,
1872
- "autheticatorFlow": false
1873
- },
1874
1858
  {
1875
1859
  "authenticator": "auth-spnego",
1876
1860
  "authenticatorFlow": false,
@@ -2261,14 +2245,6 @@ data:
2261
2245
  "topLevel": true,
2262
2246
  "builtIn": true,
2263
2247
  "authenticationExecutions": [
2264
- {
2265
- "authenticator": "no-cookie-redirect",
2266
- "authenticatorFlow": false,
2267
- "requirement": "REQUIRED",
2268
- "priority": 10,
2269
- "userSetupAllowed": false,
2270
- "autheticatorFlow": false
2271
- },
2272
2248
  {
2273
2249
  "authenticatorFlow": true,
2274
2250
  "requirement": "REQUIRED",
@@ -2314,14 +2290,6 @@ data:
2314
2290
  "userSetupAllowed": false,
2315
2291
  "autheticatorFlow": false
2316
2292
  },
2317
- {
2318
- "authenticator": "registration-profile-action",
2319
- "authenticatorFlow": false,
2320
- "requirement": "REQUIRED",
2321
- "priority": 40,
2322
- "userSetupAllowed": false,
2323
- "autheticatorFlow": false
2324
- },
2325
2293
  {
2326
2294
  "authenticator": "registration-password-action",
2327
2295
  "authenticatorFlow": false,
@@ -40,7 +40,7 @@ const { KAFKA } = messageBrokerTypes;
40
40
  export default class KubernetesHelmGenerator extends BaseWorkspacesGenerator {
41
41
  async beforeQueue() {
42
42
  if (!this.fromBlueprint) {
43
- await this.composeWithBlueprints(GENERATOR_KUBERNETES_HELM);
43
+ await this.composeWithBlueprints();
44
44
  }
45
45
  }
46
46
  get initializing() {
@@ -43,7 +43,7 @@ const { K8S } = GeneratorTypes;
43
43
  export default class KubernetesKnativeGenerator extends BaseWorkspacesGenerator {
44
44
  async beforeQueue() {
45
45
  if (!this.fromBlueprint) {
46
- await this.composeWithBlueprints(GENERATOR_KUBERNETES_KNATIVE);
46
+ await this.composeWithBlueprints();
47
47
  }
48
48
  }
49
49
  get initializing() {
@@ -59,8 +59,9 @@ export const enumClientI18nFiles = {
59
59
  export function writeEntityFiles() {
60
60
  return {
61
61
  async writeEnumFiles({ entities, application }) {
62
- if (!application.enableTranslation || application.skipClient)
62
+ if (application.skipClient)
63
63
  return;
64
+ const languagesToApply = application.enableTranslation ? this.languagesToApply : [...new Set([application.nativeLanguage, 'en'])];
64
65
  entities = entities.filter(entity => !entity.skipClient && !entity.builtInUser);
65
66
  const { clientSrcDir, packageName, frontendAppName } = application;
66
67
  await Promise.all(entities
@@ -68,7 +69,7 @@ export function writeEntityFiles() {
68
69
  .map(field => {
69
70
  if (!field.fieldIsEnum)
70
71
  return undefined;
71
- return this.languagesToApply.map(lang => this.writeFiles({
72
+ return languagesToApply.map(lang => this.writeFiles({
72
73
  sections: enumClientI18nFiles,
73
74
  context: {
74
75
  ...getEnumInfo(field, entity.clientRootFolder),
@@ -18,11 +18,11 @@
18
18
  */
19
19
  /* eslint-disable consistent-return */
20
20
  import chalk from 'chalk';
21
- import * as _ from 'lodash-es';
21
+ import { padEnd, startCase } from 'lodash-es';
22
22
  import BaseApplicationGenerator from '../base-application/index.js';
23
23
  import { askForLanguages, askI18n } from './prompts.js';
24
24
  import statistics from '../statistics.js';
25
- import { GENERATOR_LANGUAGES, GENERATOR_BOOTSTRAP_APPLICATION } from '../generator-list.js';
25
+ import { GENERATOR_LANGUAGES } from '../generator-list.js';
26
26
  import { clientI18nFiles } from './files.js';
27
27
  import { writeEntityFiles } from './entity-files.js';
28
28
  import TranslationData, { createTranslationsFileFilter, createTranslationsFilter } from './translation-data.js';
@@ -32,10 +32,8 @@ import { updateLanguagesTask as updateLanguagesInReact } from '../react/support/
32
32
  import { updateLanguagesTask as updateLanguagesInVue } from '../vue/support/index.js';
33
33
  import { updateLanguagesTask as updateLanguagesInJava } from '../server/support/index.js';
34
34
  import { SERVER_MAIN_RES_DIR, SERVER_TEST_RES_DIR } from '../generator-constants.js';
35
- import command from './command.js';
36
35
  import { QUEUES } from '../base-application/priorities.js';
37
36
  import { PRIORITY_NAMES } from '../base/priorities.js';
38
- const { startCase } = _;
39
37
  /**
40
38
  * This is the base class for a generator that generates entities.
41
39
  *
@@ -62,10 +60,10 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
62
60
  async beforeQueue() {
63
61
  this.supportedLanguages = supportedLanguages;
64
62
  if (!this.fromBlueprint) {
65
- this.composedBlueprints = await this.composeWithBlueprints('languages');
63
+ this.composedBlueprints = await this.composeWithBlueprints();
66
64
  }
67
65
  if (!this.delegateToBlueprint) {
68
- await this.dependsOnJHipster(GENERATOR_BOOTSTRAP_APPLICATION);
66
+ await this.dependsOnBootstrapApplication();
69
67
  }
70
68
  if (!this.jhipsterConfigWithDefaults.skipClient &&
71
69
  this.jhipsterConfigWithDefaults.clientFramework !== 'no' &&
@@ -79,9 +77,8 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
79
77
  // Public API method used by the getter and also by Blueprints
80
78
  get initializing() {
81
79
  return this.asInitializingTaskGroup({
82
- parseCli() {
83
- this.parseJHipsterArguments(command.arguments);
84
- this.parseJHipsterOptions(command.options);
80
+ async parseCommand() {
81
+ await this.parseCurrentJHipsterCommand();
85
82
  },
86
83
  languagesToApply() {
87
84
  // Validate languages passed as argument.
@@ -99,7 +96,7 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
99
96
  if (unsupportedLanguage) {
100
97
  throw new Error(`Unsupported language "${unsupportedLanguage}" passed as argument to language generator.` +
101
98
  `\nSupported languages: ${this.supportedLanguages
102
- .map(language => `\n ${_.padEnd(language.languageTag, 5)} (${language.name})`)
99
+ .map(language => `\n ${padEnd(language.languageTag, 5)} (${language.name})`)
103
100
  .join('')}`);
104
101
  }
105
102
  }
@@ -17,17 +17,19 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  const TRANSLATE_FUNCTION_ARGS = /\(\s*'(?<key>[^']+)'(?:,\s*(?<interpolate>\{(?:(?!\}\))[\s\S])*\}))?\)/gs.source;
20
+ export const escapeHtmlTranslationValue = (translation) => translation.replace(/'/g, '&apos;').replace(/"/g, '&quot;').replace(/@/g, '&#64;');
21
+ export const escapeTsTranslationValue = (translation) => translation.replace(/'/g, "\\'").replace(/\\/g, '\\\\');
20
22
  function getTranslationValue(getWebappTranslation, key, data) {
21
23
  return getWebappTranslation(key, data) || undefined;
22
24
  }
23
25
  export const replaceTranslationKeysWithText = (getWebappTranslation, body, regexp, { keyPattern, interpolatePattern, wrapTranslation, escapeHtml, stringify } = {}) => {
24
- const matches = body.matchAll(new RegExp(regexp, 'g'));
26
+ const matches = [...body.matchAll(new RegExp(regexp, 'g'))].reverse();
25
27
  if (typeof wrapTranslation === 'string') {
26
28
  wrapTranslation = [wrapTranslation, wrapTranslation];
27
29
  }
28
30
  for (const match of matches) {
29
31
  const target = match[0];
30
- let key = match?.groups?.key;
32
+ let key = match.groups?.key;
31
33
  if (!key && keyPattern) {
32
34
  const keyMatch = target.match(new RegExp(keyPattern));
33
35
  key = keyMatch?.groups?.key;
@@ -35,7 +37,7 @@ export const replaceTranslationKeysWithText = (getWebappTranslation, body, regex
35
37
  if (!key) {
36
38
  throw new Error(`Translation key not found for ${target}`);
37
39
  }
38
- let interpolate = match.groups && match.groups.interpolate;
40
+ let interpolate = match.groups?.interpolate;
39
41
  if (!interpolate && interpolatePattern) {
40
42
  const interpolateMatch = target.match(new RegExp(interpolatePattern));
41
43
  interpolate = interpolateMatch?.groups?.interpolate;
@@ -44,10 +46,7 @@ export const replaceTranslationKeysWithText = (getWebappTranslation, body, regex
44
46
  if (interpolate) {
45
47
  data = {};
46
48
  try {
47
- const interpolateValues = JSON.parse(interpolate);
48
- for (const [field, value] of Object.entries(interpolateValues)) {
49
- data[field] = value;
50
- }
49
+ data = JSON.parse(interpolate);
51
50
  }
52
51
  catch {
53
52
  throw new Error(`Translation interpolations values should be a JSON, ${interpolate}`);
@@ -63,12 +62,12 @@ export const replaceTranslationKeysWithText = (getWebappTranslation, body, regex
63
62
  }
64
63
  else if (escapeHtml) {
65
64
  // Escape specific chars
66
- replacement = replacement.replace(/'/g, '&apos;').replace(/"/g, '&quot;').replace(/@/g, '&#64;');
65
+ replacement = escapeHtmlTranslationValue(replacement);
67
66
  }
68
67
  else if (stringify) {
69
68
  replacement = JSON.stringify(replacement);
70
69
  }
71
- body = body.replace(target, replacement);
70
+ body = `${body.slice(0, match.index)}${replacement}${body.slice(match.index + target.length)}`;
72
71
  }
73
72
  return body;
74
73
  };
@@ -76,3 +75,29 @@ export const createJhiTransformTranslateReplacer = (getWebappTranslation, transl
76
75
  export const createJhiTransformTranslateStringifyReplacer = getWebappTranslation => (body) => replaceTranslationKeysWithText(getWebappTranslation, body, `__jhiTransformTranslateStringify__${TRANSLATE_FUNCTION_ARGS}`, {
77
76
  stringify: true,
78
77
  });
78
+ export const replaceTranslateContents = (body, filePath, regexp, converter) => {
79
+ const matches = [...body.matchAll(new RegExp(regexp, 'g'))].reverse();
80
+ for (const match of matches) {
81
+ const target = match[0];
82
+ const { key, interpolate, type, prefix = '', suffix = '' } = match.groups ?? {};
83
+ if (!type) {
84
+ throw new Error(`Translation type not found for ${target}`);
85
+ }
86
+ if (!key) {
87
+ throw new Error(`Translation key not found for ${target}`);
88
+ }
89
+ let parsedInterpolate;
90
+ if (interpolate) {
91
+ parsedInterpolate = {};
92
+ try {
93
+ parsedInterpolate = JSON.parse(interpolate);
94
+ }
95
+ catch {
96
+ throw new Error(`Translation interpolations values should be a JSON, ${interpolate}`);
97
+ }
98
+ }
99
+ body = `${body.slice(0, match.index)}${converter({ filePath, key, interpolate, parsedInterpolate, type, prefix, suffix })}${body.slice(match.index + target.length)}`;
100
+ }
101
+ return body;
102
+ };
103
+ export const createJhiTranslateReplacer = (converter, { prefixPattern = '', suffixPattern = '' } = {}) => (body, filePath) => replaceTranslateContents(body, filePath, `${prefixPattern ? `(?<prefix>(${prefixPattern}))?` : ''}__jhiTranslate(?<type>(\\w+))__${TRANSLATE_FUNCTION_ARGS}${suffixPattern ? `(?<suffix>(${suffixPattern}))?` : ''}`, converter);
@@ -17,10 +17,9 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { inspect } from 'node:util';
20
- import * as _ from 'lodash-es';
20
+ import { defaultsDeep, get, merge, template } from 'lodash-es';
21
21
  import { transform } from '@yeoman/transform';
22
22
  import { Minimatch } from 'minimatch';
23
- const { get } = _;
24
23
  export const createTranslationsFilter = ({ clientSrcDir, nativeLanguage, fallbackLanguage }) => {
25
24
  const pattern = !fallbackLanguage || nativeLanguage === fallbackLanguage
26
25
  ? `**/${clientSrcDir}i18n/${nativeLanguage}/*.json`
@@ -57,10 +56,10 @@ export default class TranslationData {
57
56
  }
58
57
  mergeTranslation(translation, fallback) {
59
58
  if (fallback) {
60
- _.defaultsDeep(this.translations, translation);
59
+ defaultsDeep(this.translations, translation);
61
60
  }
62
61
  else {
63
- _.merge(this.translations, translation);
62
+ merge(this.translations, translation);
64
63
  }
65
64
  }
66
65
  /**
@@ -90,7 +89,7 @@ export default class TranslationData {
90
89
  if (translatedValue.includes('{{ login }}') && !data.login) {
91
90
  data.login = data.id;
92
91
  }
93
- const compiledTemplate = _.template(translatedValue, { interpolate: /{{([\s\S]+?)}}/g });
92
+ const compiledTemplate = template(translatedValue, { interpolate: /{{([\s\S]+?)}}/g });
94
93
  return compiledTemplate(data);
95
94
  }
96
95
  }