generator-jhipster 8.9.0 → 8.11.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 (312) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/cli.mjs +0 -13
  3. package/dist/cli/download.mjs +2 -3
  4. package/dist/cli/environment-builder.mjs +5 -3
  5. package/dist/generators/angular/generator.d.ts +10 -1
  6. package/dist/generators/angular/resources/package.json +27 -27
  7. package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
  8. package/dist/generators/angular/templates/eslint.config.js.jhi.angular.ejs +4 -6
  9. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +1 -1
  10. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +3 -3
  11. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +1 -1
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +6 -4
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +1 -1
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +1 -1
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +1 -1
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +1 -1
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
  20. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +1 -1
  21. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +1 -1
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +1 -1
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +8 -13
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +1 -1
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +1 -1
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +3 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +2 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +1 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -3
  31. package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -3
  32. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +1 -1
  33. package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +1 -1
  34. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.ts.ejs +1 -2
  35. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.spec.ts.ejs +0 -1
  36. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +1 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +2 -2
  38. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +2 -2
  39. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +4 -5
  40. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +4 -4
  41. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -2
  42. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +4 -4
  43. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +2 -2
  44. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +7 -7
  45. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs +4 -4
  46. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.html.ejs +4 -4
  47. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
  48. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +1 -1
  49. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +8 -6
  50. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +3 -3
  51. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +8 -8
  52. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +2 -2
  53. package/dist/generators/angular/templates/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
  54. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.service.ts.ejs +3 -3
  55. package/dist/generators/app/generator.d.ts +4 -1
  56. package/dist/generators/base/api.d.ts +3 -1
  57. package/dist/generators/base/shared-data.js +1 -0
  58. package/dist/generators/base/support/contents.d.ts +10 -1
  59. package/dist/generators/base/support/contents.js +9 -0
  60. package/dist/generators/base/support/index.d.ts +1 -0
  61. package/dist/generators/base/support/index.js +1 -0
  62. package/dist/generators/base/support/needles.d.ts +14 -5
  63. package/dist/generators/base/support/needles.js +21 -17
  64. package/dist/generators/base/support/os.d.ts +1 -0
  65. package/dist/generators/base/support/os.js +20 -0
  66. package/dist/generators/base/support/write-files.d.ts +18 -0
  67. package/dist/generators/base/support/write-files.js +0 -26
  68. package/dist/generators/base-application/support/prepare-entity.js +14 -26
  69. package/dist/generators/base-application/support/update-application-entities-transform.js +3 -2
  70. package/dist/generators/base-application/types.d.ts +5 -0
  71. package/dist/generators/base-core/generator.js +7 -4
  72. package/dist/generators/bootstrap/generator.d.ts +6 -1
  73. package/dist/generators/bootstrap/generator.js +31 -2
  74. package/dist/generators/bootstrap/support/auto-crlf-transform.js +2 -2
  75. package/dist/generators/bootstrap/support/eslint-worker.js +5 -2
  76. package/dist/generators/bootstrap-application/generator.d.ts +4 -1
  77. package/dist/generators/bootstrap-application-base/generator.d.ts +12 -2
  78. package/dist/generators/bootstrap-application-base/generator.js +4 -3
  79. package/dist/generators/bootstrap-application-client/generator.d.ts +3 -1
  80. package/dist/generators/bootstrap-application-server/generator.d.ts +8 -1
  81. package/dist/generators/bootstrap-workspaces/generator.d.ts +9 -1
  82. package/dist/generators/ci-cd/generator.d.ts +6 -1
  83. package/dist/generators/client/generator.d.ts +13 -1
  84. package/dist/generators/client/generators/common/generator.d.ts +1 -1
  85. package/dist/generators/client/resources/package.json +5 -5
  86. package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +8 -6
  87. package/dist/generators/common/generator.d.ts +8 -1
  88. package/dist/generators/common/resources/package.json +2 -2
  89. package/dist/generators/cucumber/generator.d.ts +2 -1
  90. package/dist/generators/cypress/generator.d.ts +7 -1
  91. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/logout.cy.ts.ejs +11 -3
  92. package/dist/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +4 -4
  93. package/dist/generators/docker/generator.d.ts +4 -1
  94. package/dist/generators/docker-compose/generator.d.ts +23 -1
  95. package/dist/generators/entities/generator.d.ts +4 -1
  96. package/dist/generators/entity/generator.d.ts +5 -1
  97. package/dist/generators/export-jdl/generator.d.ts +3 -1
  98. package/dist/generators/feign-client/generator.d.ts +2 -1
  99. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +1 -1
  100. package/dist/generators/gatling/generator.d.ts +3 -1
  101. package/dist/generators/generate-blueprint/constants.d.ts +1 -1
  102. package/dist/generators/generate-blueprint/constants.js +1 -1
  103. package/dist/generators/generate-blueprint/files.js +2 -2
  104. package/dist/generators/generate-blueprint/generator.d.ts +10 -1
  105. package/dist/generators/generate-blueprint/generator.js +16 -16
  106. package/dist/generators/generate-blueprint/resources/package.json +3 -3
  107. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +1 -1
  108. package/dist/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +1 -0
  109. package/dist/generators/generator-constants.d.ts +1 -1
  110. package/dist/generators/generator-constants.js +2 -2
  111. package/dist/generators/git/generator.d.ts +5 -1
  112. package/dist/generators/gradle/generator.d.ts +5 -1
  113. package/dist/generators/gradle/generators/code-quality/generator.d.ts +2 -1
  114. package/dist/generators/gradle/generators/jib/generator.d.ts +2 -1
  115. package/dist/generators/gradle/generators/node-gradle/generator.d.ts +2 -1
  116. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  117. package/dist/generators/heroku/generator.d.ts +6 -1
  118. package/dist/generators/info/generator.d.ts +1 -1
  119. package/dist/generators/init/generator.d.ts +2 -1
  120. package/dist/generators/init/resources/.node-version +1 -1
  121. package/dist/generators/java/generators/bootstrap/generator.d.ts +8 -2
  122. package/dist/generators/java/generators/bootstrap/generator.js +17 -3
  123. package/dist/generators/java/generators/build-tool/generator.d.ts +2 -1
  124. package/dist/generators/java/generators/code-quality/generator.d.ts +2 -1
  125. package/dist/generators/java/generators/domain/generator.d.ts +6 -1
  126. package/dist/generators/java/generators/graalvm/generator.d.ts +6 -1
  127. package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -1
  128. package/dist/generators/java/generators/graalvm/internal/constants.js +2 -2
  129. package/dist/generators/java/generators/graalvm/resources/gradle/libs.versions.toml +1 -1
  130. package/dist/generators/java/generators/jib/generator.d.ts +2 -1
  131. package/dist/generators/java/generators/node/generator.d.ts +4 -1
  132. package/dist/generators/java/generators/node/generator.js +2 -1
  133. package/dist/generators/java/generators/openapi-generator/generator.d.ts +2 -1
  134. package/dist/generators/java/generators/server/generator.d.ts +1 -1
  135. package/dist/generators/java/support/index.d.ts +2 -0
  136. package/dist/generators/java/support/index.js +2 -0
  137. package/dist/generators/java/support/java-enum.d.ts +8 -0
  138. package/dist/generators/java/support/java-enum.js +20 -0
  139. package/dist/generators/java/support/java-file-edit.d.ts +18 -0
  140. package/dist/generators/java/support/java-file-edit.js +94 -0
  141. package/dist/generators/java/types.d.ts +37 -1
  142. package/dist/generators/javascript/generators/bootstrap/generator.d.ts +4 -1
  143. package/dist/generators/javascript/generators/eslint/generator.d.ts +4 -1
  144. package/dist/generators/javascript/generators/eslint/templates/eslint.config.js.jhi.ejs +8 -0
  145. package/dist/generators/javascript/generators/husky/generator.d.ts +3 -1
  146. package/dist/generators/javascript/generators/prettier/generator.d.ts +4 -1
  147. package/dist/generators/javascript/resources/package.json +3 -3
  148. package/dist/generators/jdl/generator.d.ts +3 -1
  149. package/dist/generators/kubernetes/generator.d.ts +25 -19
  150. package/dist/generators/kubernetes-helm/generator.d.ts +18 -12
  151. package/dist/generators/kubernetes-knative/generator.d.ts +14 -8
  152. package/dist/generators/languages/generator.d.ts +9 -1
  153. package/dist/generators/languages/support/languages.js +1 -0
  154. package/dist/generators/languages/templates/entity/i18n/entity_he.json.ejs +78 -0
  155. package/dist/generators/languages/templates/src/main/resources/i18n/messages_he.properties.ejs +41 -0
  156. package/dist/generators/languages/templates/src/main/webapp/i18n/he/activate.json.ejs +27 -0
  157. package/dist/generators/languages/templates/src/main/webapp/i18n/he/configuration.json +11 -0
  158. package/dist/generators/languages/templates/src/main/webapp/i18n/he/error.json +15 -0
  159. package/dist/generators/languages/templates/src/main/webapp/i18n/he/gateway.json +16 -0
  160. package/dist/generators/languages/templates/src/main/webapp/i18n/he/global.json.ejs +172 -0
  161. package/dist/generators/languages/templates/src/main/webapp/i18n/he/health.json.ejs +75 -0
  162. package/dist/generators/languages/templates/src/main/webapp/i18n/he/home.json.ejs +20 -0
  163. package/dist/generators/languages/templates/src/main/webapp/i18n/he/login.json +20 -0
  164. package/dist/generators/languages/templates/src/main/webapp/i18n/he/logs.json +12 -0
  165. package/dist/generators/languages/templates/src/main/webapp/i18n/he/metrics.json +103 -0
  166. package/dist/generators/languages/templates/src/main/webapp/i18n/he/password.json +13 -0
  167. package/dist/generators/languages/templates/src/main/webapp/i18n/he/register.json +25 -0
  168. package/dist/generators/languages/templates/src/main/webapp/i18n/he/reset.json.ejs +45 -0
  169. package/dist/generators/languages/templates/src/main/webapp/i18n/he/sessions.json +16 -0
  170. package/dist/generators/languages/templates/src/main/webapp/i18n/he/settings.json +33 -0
  171. package/dist/generators/languages/templates/src/main/webapp/i18n/he/tracker.json +13 -0
  172. package/dist/generators/languages/templates/src/main/webapp/i18n/he/user-management.json +32 -0
  173. package/dist/generators/languages/templates/src/test/resources/i18n/messages_he.properties.ejs +4 -0
  174. package/dist/generators/liquibase/generator.d.ts +9 -1
  175. package/dist/generators/liquibase/generator.js +3 -19
  176. package/dist/generators/maven/generator.d.ts +6 -1
  177. package/dist/generators/maven/generators/code-quality/generator.d.ts +1 -1
  178. package/dist/generators/maven/generators/frontend-plugin/generator.d.ts +1 -1
  179. package/dist/generators/maven/generators/jib/generator.d.ts +1 -1
  180. package/dist/generators/project-name/generator.d.ts +3 -1
  181. package/dist/generators/react/generator.d.ts +15 -1
  182. package/dist/generators/react/resources/package.json +34 -34
  183. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-delete-dialog.tsx.ejs +2 -1
  184. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +4 -4
  185. package/dist/generators/react/templates/src/main/webapp/app/entities/menu.tsx.ejs +2 -2
  186. package/dist/generators/react/templates/src/main/webapp/app/entities/routes.tsx.ejs +1 -1
  187. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +0 -6
  188. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/application-profile.spec.ts.ejs +0 -6
  189. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +0 -47
  190. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
  191. package/dist/generators/react/templates/src/main/webapp/app/shared/util/entity-utils.ts.ejs +1 -1
  192. package/dist/generators/server/generator.d.ts +7 -1
  193. package/dist/generators/server/resources/Dockerfile +17 -17
  194. package/dist/generators/server/resources/gradle/libs.versions.toml +15 -15
  195. package/dist/generators/server/resources/pom.xml +16 -16
  196. package/dist/generators/server/types.d.ts +22 -0
  197. package/dist/generators/spring-boot/generator.d.ts +14 -2
  198. package/dist/generators/spring-boot/generator.js +35 -4
  199. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +158 -148
  200. package/dist/generators/spring-boot/templates/src/main/java/_package_/Application.java.ejs +11 -0
  201. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +12 -23
  202. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +0 -1
  203. package/dist/generators/spring-boot/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +61 -5
  204. package/dist/generators/spring-boot/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +29 -1
  205. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +7 -6
  206. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +8 -6
  207. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +8 -6
  208. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +17 -11
  209. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +8 -3
  210. package/dist/generators/spring-boot/templates/src/main/resources/config/application.yml.ejs +3 -0
  211. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +3 -3
  212. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +4 -4
  213. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +4 -4
  214. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +3 -3
  215. package/dist/generators/spring-boot/templates/src/test/java/_package_/config/JHipsterBlockHoundIntegration.java.ejs +0 -2
  216. package/dist/generators/spring-boot/templates/src/test/java/_package_/config/WebConfigurerTest.java.ejs +1 -1
  217. package/dist/generators/spring-boot/templates/src/test/java/_package_/management/SecurityMetersServiceTests.java.ejs +1 -1
  218. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +2 -2
  219. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/SecurityUtilsUnitTest_imperative.java.ejs +35 -11
  220. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/SecurityUtilsUnitTest_reactive.java.ejs +35 -6
  221. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/JwtAuthenticationTestUtils.java.ejs +3 -2
  222. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TestAuthenticationResource.java.ejs +5 -5
  223. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationIT.java.ejs +2 -2
  224. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationSecurityMetersIT.java.ejs +1 -4
  225. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  226. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/MailServiceIT.java.ejs +1 -1
  227. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +1 -1
  228. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
  229. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -2
  230. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +9 -15
  231. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +8 -17
  232. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_skipUserManagement.java.ejs +6 -15
  233. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/LogoutResourceIT.java.ejs +1 -1
  234. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
  235. package/dist/generators/spring-cache/cleanup.d.ts +2 -20
  236. package/dist/generators/spring-cache/cleanup.js +24 -2
  237. package/dist/generators/spring-cache/files.js +0 -6
  238. package/dist/generators/spring-cache/generator.d.ts +5 -1
  239. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  240. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +0 -14
  241. package/dist/generators/spring-cloud/generators/gateway/generator.d.ts +5 -1
  242. package/dist/generators/spring-cloud-stream/generator.d.ts +2 -1
  243. package/dist/generators/spring-cloud-stream/generators/kafka/generator.d.ts +2 -1
  244. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +1 -1
  245. package/dist/generators/spring-cloud-stream/generators/pulsar/generator.d.ts +2 -1
  246. package/dist/generators/spring-data-cassandra/generator.d.ts +4 -1
  247. package/dist/generators/spring-data-couchbase/generator.d.ts +9 -1
  248. package/dist/generators/spring-data-elasticsearch/generator.d.ts +10 -1
  249. package/dist/generators/spring-data-mongodb/generator.d.ts +9 -1
  250. package/dist/generators/spring-data-neo4j/generator.d.ts +11 -1
  251. package/dist/generators/spring-data-relational/generator.d.ts +11 -1
  252. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/timezone/HibernateTimeZoneIT.java.ejs +2 -2
  253. package/dist/generators/spring-websocket/generator.d.ts +2 -1
  254. package/dist/generators/upgrade/generator.d.ts +3 -1
  255. package/dist/generators/vue/cleanup.js +7 -1
  256. package/dist/generators/vue/files-vue.js +3 -8
  257. package/dist/generators/vue/generator.d.ts +9 -1
  258. package/dist/generators/vue/resources/package.json +31 -31
  259. package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.ts.ejs +9 -9
  260. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +21 -7
  261. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +23 -9
  262. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.service.ts.ejs +1 -1
  263. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.vue.ejs +1 -1
  264. package/dist/generators/vue/templates/src/main/webapp/app/account/change-password/change-password.vue.ejs +1 -1
  265. package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.component.spec.ts.ejs +22 -10
  266. package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.component.ts.ejs +24 -5
  267. package/dist/generators/vue/templates/src/main/webapp/app/account/login-modal.ts.ejs +38 -0
  268. package/dist/generators/vue/templates/src/main/webapp/app/account/login.service.spec.ts.ejs +0 -4
  269. package/dist/generators/vue/templates/src/main/webapp/app/account/login.service.ts.ejs +3 -25
  270. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +24 -8
  271. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.component.ts.ejs +23 -9
  272. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.service.ts.ejs +1 -1
  273. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.vue.ejs +1 -1
  274. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.spec.ts.ejs +20 -4
  275. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.ts.ejs +23 -13
  276. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.vue.ejs +1 -1
  277. package/dist/generators/vue/templates/src/main/webapp/app/account/settings/settings.vue.ejs +1 -1
  278. package/dist/generators/vue/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +2 -2
  279. package/dist/generators/vue/templates/src/main/webapp/app/admin/gateway/gateway.service.ts.ejs +1 -1
  280. package/dist/generators/vue/templates/src/main/webapp/app/admin/health/health.service.ts.ejs +10 -10
  281. package/dist/generators/vue/templates/src/main/webapp/app/admin/logs/logs.service.ts.ejs +2 -2
  282. package/dist/generators/vue/templates/src/main/webapp/app/admin/metrics/metrics-modal.vue.ejs +2 -2
  283. package/dist/generators/vue/templates/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +2 -2
  284. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -5
  285. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management.service.ts.ejs +6 -6
  286. package/dist/generators/vue/templates/src/main/webapp/app/app.component.ts.ejs +29 -7
  287. package/dist/generators/vue/templates/src/main/webapp/app/app.vue.ejs +19 -1
  288. package/dist/generators/vue/templates/src/main/webapp/app/core/error/error.component.spec.ts.ejs +66 -51
  289. package/dist/generators/vue/templates/src/main/webapp/app/core/error/error.component.ts.ejs +30 -8
  290. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.component.spec.ts.ejs +41 -11
  291. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.component.ts.ejs +10 -11
  292. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.vue.ejs +2 -2
  293. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +43 -16
  294. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +14 -9
  295. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +1 -1
  296. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +7 -7
  297. package/dist/generators/vue/templates/src/main/webapp/app/entities/user/user.service.ts.ejs +1 -1
  298. package/dist/generators/vue/templates/src/main/webapp/app/locale/translation.service.ts.ejs +5 -5
  299. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +18 -14
  300. package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.ts.ejs +4 -4
  301. package/dist/generators/workspaces/generator.d.ts +7 -1
  302. package/dist/generators/workspaces/support/applications-lookup.js +2 -2
  303. package/dist/lib/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +1 -1
  304. package/dist/lib/jdl/core/built-in-options/binary-options.d.ts +12 -1
  305. package/dist/lib/testing/apply-patch-to-template.d.ts +13 -0
  306. package/dist/lib/testing/apply-patch-to-template.js +90 -0
  307. package/dist/lib/testing/github.js +6 -3
  308. package/dist/lib/testing/helpers.d.ts +1 -0
  309. package/dist/lib/testing/helpers.js +15 -0
  310. package/dist/lib/utils/yo-rc.d.ts +3 -219
  311. package/package.json +36 -37
  312. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +0 -49
@@ -1,14 +1,23 @@
1
1
  import type CoreGenerator from '../../base-core/index.js';
2
2
  import type { CascatedEditFileCallback, EditFileCallback, NeedleCallback } from '../api.js';
3
+ type NeedleContentToAddCallback = {
4
+ /**
5
+ * Position of the needle start.
6
+ */
7
+ needleIndex: number;
8
+ /**
9
+ * Position of the needle line's new line char.
10
+ */
11
+ needleLineIndex: number;
12
+ needleIndent: number;
13
+ indentPrefix: string;
14
+ };
3
15
  export type NeedleInsertion = {
4
16
  needle: string;
5
17
  /**
6
18
  * Content to add.
7
19
  */
8
- contentToAdd: string | string[] | ((content: string, options: {
9
- needleIndent: number;
10
- indentPrefix: string;
11
- }) => string);
20
+ contentToAdd: string | string[] | ((content: string, options: NeedleContentToAddCallback) => string);
12
21
  contentToCheck?: string | RegExp;
13
22
  /**
14
23
  * check existing content ignoring white spaces and new lines.
@@ -38,7 +47,7 @@ type NeedleContentInsertion = NeedleInsertion & {
38
47
  content: string;
39
48
  };
40
49
  /**
41
- * Change spaces sequences and '>' to allow any number of spaces or new line prefix
50
+ * Change spaces sequences and characters that prettier breaks line (<>()) to allow any number of spaces or new line prefix
42
51
  */
43
52
  export declare const convertToPrettierExpressions: (str: string) => string;
44
53
  /**
@@ -20,9 +20,12 @@ import assert from 'assert';
20
20
  import { escapeRegExp, kebabCase } from 'lodash-es';
21
21
  import { joinCallbacks } from './write-files.js';
22
22
  /**
23
- * Change spaces sequences and '>' to allow any number of spaces or new line prefix
23
+ * Change spaces sequences and characters that prettier breaks line (<>()) to allow any number of spaces or new line prefix
24
24
  */
25
- export const convertToPrettierExpressions = (str) => str.replace(/\s+/g, '([\\s\n]*)').replace(/>+/g, '(\n?[\\s]*)>');
25
+ export const convertToPrettierExpressions = (str) => str
26
+ .replace(/(<|\\\()(?! )/g, '$1\\n?[\\s]*')
27
+ .replace(/(?! )(>|\\\))/g, ',?\\n?[\\s]*$1')
28
+ .replace(/\s+/g, '[\\s\\n]*');
26
29
  /**
27
30
  * Check if contentToCheck existing in content
28
31
  *
@@ -59,28 +62,28 @@ export const insertContentBeforeNeedle = ({ content, contentToAdd, needle, autoI
59
62
  assert(content, 'content is required');
60
63
  assert(contentToAdd, 'contentToAdd is required');
61
64
  needle = needle.includes('jhipster-needle-') ? needle : `jhipster-needle-${needle}`;
62
- let regexp = new RegExp(`(?://|<!--|/*|#) ${needle}(?:$|\n| )`, 'g');
63
- let firstMatch = regexp.exec(content);
65
+ const regexp = new RegExp(`(?://|<!--|/\\*|#) ${needle}(?:$|\n| )`, 'g');
66
+ const firstMatch = regexp.exec(content);
64
67
  if (!firstMatch) {
65
- regexp = new RegExp(`"${needle}": `, 'g');
66
- firstMatch = regexp.exec(content);
67
- if (!firstMatch) {
68
- return null;
69
- }
68
+ return null;
70
69
  }
71
70
  // Replacements using functions allows to replace multiples needles
72
71
  if (typeof contentToAdd !== 'function' && regexp.exec(content)) {
73
72
  throw new Error(`Multiple needles found for ${needle}`);
74
73
  }
75
74
  const needleIndex = firstMatch.index;
76
- const needleLineIndex = content.lastIndexOf('\n', needleIndex);
77
- const beforeContent = content.substring(0, needleLineIndex + 1);
78
- const afterContent = content.substring(needleLineIndex + 1);
79
- // Find needle ident
80
- const needleLine = afterContent.split('\n', 2)[0];
81
- const needleIndent = needleLine.length - needleLine.trimStart().length;
75
+ const needleLineIndex = content.lastIndexOf('\n', needleIndex) + 1;
76
+ const beforeContent = content.substring(0, needleLineIndex);
77
+ const afterContent = content.substring(needleLineIndex);
78
+ const needleIndent = needleIndex - needleLineIndex;
82
79
  if (typeof contentToAdd === 'function') {
83
- return contentToAdd(content, { needleIndent, indentPrefix: ' '.repeat(needleIndent) });
80
+ const newContent = contentToAdd(content, {
81
+ needleIndex,
82
+ needleLineIndex,
83
+ needleIndent,
84
+ indentPrefix: ' '.repeat(needleIndent),
85
+ });
86
+ return newContent;
84
87
  }
85
88
  contentToAdd = Array.isArray(contentToAdd) ? contentToAdd : [contentToAdd];
86
89
  if (autoIndent) {
@@ -110,7 +113,8 @@ export const insertContentBeforeNeedle = ({ content, contentToAdd, needle, autoI
110
113
  });
111
114
  contentToAdd = contentToAdd.map(line => (line.length > identToRemove ? line.substring(identToRemove) : ''));
112
115
  }
113
- return `${beforeContent}${contentToAdd.join('\n')}\n${afterContent}`;
116
+ const newContent = `${beforeContent}${contentToAdd.join('\n')}\n${afterContent}`;
117
+ return newContent;
114
118
  };
115
119
  /**
116
120
  * Create an callback to insert the new content into existing content.
@@ -0,0 +1 @@
1
+ export declare const isWin32: boolean;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright 2013-2025 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 { platform } from 'os';
20
+ export const isWin32 = platform() === 'win32';
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Copyright 2013-2025 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
+ */
1
19
  import type { EditFileCallback } from '../api.js';
2
20
  /**
3
21
  * TODO move to utils when converted to typescripts
@@ -1,35 +1,9 @@
1
- /**
2
- * Copyright 2013-2025 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 { platform } from 'os';
20
- import { normalizeLineEndings } from './contents.js';
21
- const isWin32 = platform() === 'win32';
22
1
  /**
23
2
  * TODO move to utils when converted to typescripts
24
3
  * Converts multiples EditFileCallback callbacks into one.
25
4
  */
26
5
  export function joinCallbacks(...callbacks) {
27
6
  return function (content, filePath) {
28
- if (isWin32 && /\r\n/.exec(content)) {
29
- const removeSlashRSlashN = ct => normalizeLineEndings(ct, '\n');
30
- const addSlashRSlashN = ct => normalizeLineEndings(ct, '\r\n');
31
- callbacks = [removeSlashRSlashN, ...callbacks, addSlashRSlashN];
32
- }
33
7
  for (const callback of callbacks) {
34
8
  content = callback.call(this, content, filePath);
35
9
  }
@@ -112,9 +112,8 @@ export const entityDefaultConfig = {
112
112
  },
113
113
  };
114
114
  export default function prepareEntity(entityWithConfig, generator, application) {
115
- const { applicationTypeMicroservice, microfrontend } = application;
115
+ const { applicationTypeMicroservice, microfrontend, dtoSuffix = '' } = application;
116
116
  const entityName = upperFirst(entityWithConfig.name);
117
- const entitySuffix = entityWithConfig.entitySuffix ?? application.entitySuffix;
118
117
  mutateData(entityWithConfig, entityDefaultConfig, BASE_TEMPLATE_DATA);
119
118
  if (entityWithConfig.changelogDate) {
120
119
  try {
@@ -139,42 +138,31 @@ export default function prepareEntity(entityWithConfig, generator, application)
139
138
  }
140
139
  mutateData(entityWithConfig, {
141
140
  entityNameCapitalized: entityName,
141
+ entityNamePlural: pluralize(entityName),
142
+ entityNamePluralizedAndSpinalCased: ({ entityNamePlural }) => kebabCase(entityNamePlural),
142
143
  entityClass: upperFirst(entityName),
144
+ entityClassPlural: ({ entityNamePlural }) => upperFirst(entityNamePlural),
143
145
  entityInstance: lowerFirst(entityName),
146
+ entityInstancePlural: ({ entityNamePlural }) => lowerFirst(entityNamePlural),
144
147
  entityTableName: hibernateSnakeCase(entityName),
145
- entityNamePlural: pluralize(entityName),
146
148
  entityAuthority: entityWithConfig.adminEntity ? 'ROLE_ADMIN' : undefined,
147
149
  });
150
+ const entitySuffix = entityWithConfig.entitySuffix ?? application.entitySuffix;
151
+ const dto = entityWithConfig.dto && entityWithConfig.dto !== NO_DTO;
148
152
  mutateData(entityWithConfig, {
149
153
  persistClass: `${entityWithConfig.entityClass}${entitySuffix ?? ''}`,
150
154
  persistInstance: `${entityWithConfig.entityInstance}${entitySuffix ?? ''}`,
151
- });
152
- const dto = entityWithConfig.dto && entityWithConfig.dto !== NO_DTO;
153
- if (dto) {
154
- const { dtoSuffix = '' } = application;
155
- mutateData(entityWithConfig, {
156
- dtoClass: `${entityWithConfig.entityClass}${dtoSuffix}`,
157
- dtoInstance: `${entityWithConfig.entityInstance}${dtoSuffix}`,
158
- restClass: ({ dtoClass }) => dtoClass,
159
- restInstance: ({ dtoInstance }) => dtoInstance,
160
- });
161
- }
162
- else {
163
- mutateData(entityWithConfig, {
164
- restClass: ({ persistClass }) => persistClass,
165
- restInstance: ({ persistInstance }) => persistInstance,
166
- });
167
- }
168
- mutateData(entityWithConfig, {
169
- entityNamePluralizedAndSpinalCased: kebabCase(entityWithConfig.entityNamePlural),
170
- entityClassPlural: upperFirst(entityWithConfig.entityNamePlural),
171
- entityInstancePlural: lowerFirst(entityWithConfig.entityNamePlural),
155
+ // Even if dto is not used, we need to generate the dtoClass and dtoInstance is added to avoid errors in rendered relationships templates. The resulting class will not exist then.
156
+ dtoClass: `${entityWithConfig.entityClass}${dtoSuffix}`,
157
+ dtoInstance: `${entityWithConfig.entityInstance}${dtoSuffix}`,
158
+ restClass: dto ? ({ dtoClass }) => dtoClass : ({ persistClass }) => persistClass,
159
+ restInstance: dto ? ({ dtoInstance }) => dtoInstance : ({ persistInstance }) => persistInstance,
172
160
  });
173
161
  mutateData(entityWithConfig, {
174
162
  // Implement i18n variant ex: 'male', 'female' when applied
175
163
  entityI18nVariant: 'default',
176
- entityClassHumanized: startCase(entityWithConfig.entityNameCapitalized),
177
- entityClassPluralHumanized: startCase(entityWithConfig.entityClassPlural),
164
+ entityClassHumanized: ({ entityNameCapitalized }) => startCase(entityNameCapitalized),
165
+ entityClassPluralHumanized: ({ entityNamePlural }) => startCase(entityNamePlural),
178
166
  });
179
167
  mutateData(entityWithConfig, {
180
168
  __override__: false,
@@ -2,19 +2,20 @@ import { readdir } from 'fs/promises';
2
2
  import { basename, join } from 'path';
3
3
  import { loadFile } from 'mem-fs';
4
4
  import { Minimatch } from 'minimatch';
5
+ import normalizePath from 'normalize-path';
5
6
  import { transform } from 'p-transform';
6
7
  import { GENERATOR_JHIPSTER } from '../../generator-constants.js';
7
8
  export const updateApplicationEntitiesTransform = ({ destinationPath, throwOnMissingConfig = true, }) => {
8
9
  let yoRcFileInMemory;
9
10
  const entities = [];
10
11
  const yoRcFilePath = join(destinationPath, '.yo-rc.json');
11
- const entitiesMatcher = new Minimatch(`${destinationPath}/.jhipster/*.json`);
12
+ const entitiesMatcher = new Minimatch(`${normalizePath(destinationPath)}/.jhipster/*.json`);
12
13
  return transform(file => {
13
14
  if (file.path === yoRcFilePath) {
14
15
  yoRcFileInMemory = file;
15
16
  return undefined;
16
17
  }
17
- if (entitiesMatcher.match(file.path)) {
18
+ if (entitiesMatcher.match(normalizePath(file.path))) {
18
19
  entities.push(basename(file.path).replace('.json', ''));
19
20
  }
20
21
  return file;
@@ -42,6 +42,11 @@ export type BaseApplication = {
42
42
  blueprints?: { name: string; version: string }[];
43
43
  testFrameworks?: string[];
44
44
 
45
+ /**
46
+ * True if the application has at least one non-builtin entity.
47
+ */
48
+ hasNonBuiltInEntity?: boolean;
49
+
45
50
  /** Customize templates sourceFile and destinationFile */
46
51
  customizeTemplatePaths: ((
47
52
  this: CoreGenerator,
@@ -32,7 +32,7 @@ import YeomanGenerator from 'yeoman-generator';
32
32
  import latestVersion from 'latest-version';
33
33
  import SharedData from '../base/shared-data.js';
34
34
  import { CUSTOM_PRIORITIES, PRIORITY_NAMES, PRIORITY_PREFIX, QUEUES } from '../base/priorities.js';
35
- import { createJHipster7Context, formatDateForChangelog, joinCallbacks, removeFieldsWithNullishValues } from '../base/support/index.js';
35
+ import { CRLF, LF, createJHipster7Context, formatDateForChangelog, hasCrlr, joinCallbacks, normalizeLineEndings, removeFieldsWithNullishValues, } from '../base/support/index.js';
36
36
  import { convertConfigToOption, } from '../../lib/command/index.js';
37
37
  import { packageJson } from '../../lib/index.js';
38
38
  import { GENERATOR_BOOTSTRAP } from '../generator-list.js';
@@ -171,6 +171,7 @@ export default class CoreGenerator extends YeomanGenerator {
171
171
  skipFakeData: false,
172
172
  skipCheckLengthOfIdentifier: false,
173
173
  enableGradleEnterprise: false,
174
+ autoCrlf: false,
174
175
  pages: [],
175
176
  });
176
177
  return configWithDefaults;
@@ -1051,16 +1052,18 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
1051
1052
  }
1052
1053
  let newContent = originalContent;
1053
1054
  const writeCallback = (...callbacks) => {
1055
+ const { autoCrlf = this.jhipsterConfigWithDefaults.autoCrlf, assertModified } = actualOptions;
1054
1056
  try {
1055
- newContent = joinCallbacks(...callbacks).call(this, newContent, filePath);
1056
- if (actualOptions.assertModified && originalContent === newContent) {
1057
+ const fileHasCrlf = autoCrlf && hasCrlr(newContent);
1058
+ newContent = joinCallbacks(...callbacks).call(this, fileHasCrlf ? normalizeLineEndings(newContent, LF) : newContent, filePath);
1059
+ if (assertModified && originalContent === newContent) {
1057
1060
  const errorMessage = `${chalk.yellow('Fail to modify ')}${filePath}.`;
1058
1061
  if (!this.ignoreNeedlesError) {
1059
1062
  throw new Error(errorMessage);
1060
1063
  }
1061
1064
  this.log(errorMessage);
1062
1065
  }
1063
- this.writeDestination(filePath, newContent);
1066
+ this.writeDestination(filePath, fileHasCrlf ? normalizeLineEndings(newContent, CRLF) : newContent);
1064
1067
  }
1065
1068
  catch (error) {
1066
1069
  if (error instanceof Error) {
@@ -3,8 +3,12 @@ import type { Options as PrettierOptions } from 'prettier';
3
3
  import type { FileTransform, PipelineOptions } from 'mem-fs';
4
4
  import BaseGenerator from '../base/index.js';
5
5
  import type { GenericTaskGroup, TaskParamWithControl } from '../../lib/types/base/tasks.js';
6
+ declare const MULTISTEP_TRANSFORM_PRIORITY: string;
7
+ declare const PRE_CONFLICTS_PRIORITY: string;
6
8
  export default class BootstrapGenerator extends BaseGenerator {
7
- [x: string]: any;
9
+ [BaseGenerator.INITIALIZING]: any;
10
+ [MULTISTEP_TRANSFORM_PRIORITY]: Record<string, (this: this) => unknown | Promise<unknown>>;
11
+ [PRE_CONFLICTS_PRIORITY]: GenericTaskGroup<this, TaskParamWithControl>;
8
12
  static MULTISTEP_TRANSFORM: string;
9
13
  static PRE_CONFLICTS: string;
10
14
  upgradeCommand?: boolean;
@@ -33,3 +37,4 @@ export default class BootstrapGenerator extends BaseGenerator {
33
37
  log?: string;
34
38
  }, ...transforms: FileTransform<MemFsEditorFile>[]): Promise<void>;
35
39
  }
40
+ export {};
@@ -16,6 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import { rm } from 'fs/promises';
19
20
  import { createConflicterTransform, createYoResolveTransform, forceYoFiles } from '@yeoman/conflicter';
20
21
  import { transform } from '@yeoman/transform';
21
22
  import { isFilePending, isFileStateModified } from 'mem-fs-editor/state';
@@ -169,9 +170,37 @@ export default class BootstrapGenerator extends BaseGenerator {
169
170
  }));
170
171
  }
171
172
  const autoCrlfTransforms = [];
172
- if (this.jhipsterConfig.autoCrlf) {
173
+ if (this.jhipsterConfigWithDefaults.autoCrlf) {
173
174
  autoCrlfTransforms.push(await autoCrlfTransform({ baseDir: this.destinationPath() }));
174
175
  }
176
+ let customizeActions;
177
+ if (this.options.devBlueprintEnabled) {
178
+ customizeActions = (actions, { separator }) => {
179
+ return [
180
+ ...actions,
181
+ ...(separator ? [separator()] : []),
182
+ {
183
+ key: 't',
184
+ name: 'apply to template',
185
+ value: async ({ file }) => {
186
+ const { applyChangesToFileOrCopy } = await import('../../lib/testing/apply-patch-to-template.js');
187
+ if (file.history?.[0] && file.conflicterData?.diskContents) {
188
+ const templateFile = file.history[0];
189
+ if (!file.contents) {
190
+ await rm(templateFile, { force: true });
191
+ }
192
+ else {
193
+ const oldFileContents = file.conflicterData.diskContents.toString();
194
+ const newFileContents = file.contents.toString();
195
+ applyChangesToFileOrCopy({ templateFile, oldFileContents, newFileContents });
196
+ }
197
+ }
198
+ return 'skip';
199
+ },
200
+ },
201
+ ];
202
+ };
203
+ }
175
204
  const transformStreams = [
176
205
  ...skipYoResolveTransforms,
177
206
  forceYoFiles(),
@@ -179,7 +208,7 @@ export default class BootstrapGenerator extends BaseGenerator {
179
208
  createForceWriteConfigFilesTransform(),
180
209
  ...prettierTransforms,
181
210
  ...autoCrlfTransforms,
182
- createConflicterTransform(this.env.adapter, { ...this.env.conflicterOptions }),
211
+ createConflicterTransform(this.env.adapter, { ...this.env.conflicterOptions, customizeActions }),
183
212
  createCommitTransform(),
184
213
  ];
185
214
  await this.pipeline({
@@ -23,7 +23,7 @@ import { transform } from 'p-transform';
23
23
  import { isBinaryFile } from 'isbinaryfile';
24
24
  import { simpleGit } from 'simple-git';
25
25
  import { isFileStateModified } from 'mem-fs-editor/state';
26
- import { normalizeLineEndings } from '../../base/support/index.js';
26
+ import { CRLF, normalizeLineEndings } from '../../base/support/index.js';
27
27
  /**
28
28
  * Detect the file first line endings
29
29
  */
@@ -70,7 +70,7 @@ const autoCrlfTransform = async ({ baseDir }) => {
70
70
  .map(attr => attr.split(':'))
71
71
  .map(([_file, attr, value]) => [attr, value]));
72
72
  if (attrs.eol === 'crlf' || (attrs.binary !== 'set' && attrs.eol !== 'lf' && (await detectCrLf(file.path)))) {
73
- file.contents = Buffer.from(normalizeLineEndings(file.contents.toString(), '\r\n'));
73
+ file.contents = Buffer.from(normalizeLineEndings(file.contents.toString(), CRLF));
74
74
  }
75
75
  }
76
76
  }
@@ -7,10 +7,13 @@ export default async ({ cwd, filePath, fileContents, extensions, config, additio
7
7
  eslintInstance = new eslint.ESLint({
8
8
  fix: true,
9
9
  overrideConfigFile: true,
10
- allowInlineConfig: false,
11
10
  cache: false,
12
11
  cwd,
13
- baseConfig: ts.config({ files: [`**/*.{${extensions}}`] }, ts.configs.base, ...additionalConfig, config ? JSON.parse(config) : jhipster.base),
12
+ baseConfig: ts.config({ files: [`**/*.{${extensions}}`] }, ts.configs.base, ...additionalConfig, config ? JSON.parse(config) : jhipster.base, {
13
+ linterOptions: {
14
+ reportUnusedDisableDirectives: 'off',
15
+ },
16
+ }),
14
17
  });
15
18
  }
16
19
  if (await eslintInstance.isPathIgnored(filePath)) {
@@ -1,6 +1,9 @@
1
1
  import BaseApplicationGenerator from '../base-application/index.js';
2
2
  export default class BootstrapApplicationGenerator extends BaseApplicationGenerator {
3
- [x: string]: any;
3
+ [BaseApplicationGenerator.PREPARING]: any;
4
+ [BaseApplicationGenerator.CONFIGURING_EACH_ENTITY]: any;
5
+ [BaseApplicationGenerator.POST_PREPARING_EACH_ENTITY]: any;
6
+ [BaseApplicationGenerator.DEFAULT]: any;
4
7
  constructor(args: any, options: any, features: any);
5
8
  beforeQueue(): Promise<void>;
6
9
  get preparing(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PreparingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "preparing">;
@@ -1,7 +1,17 @@
1
1
  import BaseApplicationGenerator from '../base-application/index.js';
2
2
  import type { Entity } from '../../lib/types/application/entity.js';
3
3
  export default class BootstrapApplicationBase extends BaseApplicationGenerator {
4
- [x: string]: any;
4
+ [BaseApplicationGenerator.INITIALIZING]: any;
5
+ [BaseApplicationGenerator.CONFIGURING]: any;
6
+ [BaseApplicationGenerator.LOADING]: any;
7
+ [BaseApplicationGenerator.PREPARING]: any;
8
+ [BaseApplicationGenerator.CONFIGURING_EACH_ENTITY]: any;
9
+ [BaseApplicationGenerator.LOADING_ENTITIES]: any;
10
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY]: any;
11
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY_FIELD]: any;
12
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY_RELATIONSHIP]: any;
13
+ [BaseApplicationGenerator.POST_PREPARING_EACH_ENTITY]: any;
14
+ [BaseApplicationGenerator.DEFAULT]: any;
5
15
  constructor(args: any, options: any, features: any);
6
16
  beforeQueue(): Promise<void>;
7
17
  get initializing(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "jdlStore" | "displayLogo">;
@@ -14,7 +24,7 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
14
24
  get preparingEachEntityField(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PreparingEachEntityFieldTaskParam<Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("../base-application/index.js").Field, never>>>, "prepareFieldsForTemplates">;
15
25
  get preparingEachEntityRelationship(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PreparingEachEntityRelationshipTaskParam<Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("../base-application/index.js").Field, never>>>, "prepareRelationshipsForTemplates">;
16
26
  get postPreparingEachEntity(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").PreparingEachEntityTaskParam<Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("../base-application/index.js").Field, never>>>, "hasRequiredRelationship" | "checkForCircularRelationships">;
17
- get default(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").TaskParamWithEntities<Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("../base-application/index.js").Field, never>>>, "loadApplicationKeys" | "task">;
27
+ get default(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").TaskParamWithEntities<Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<Entity<import("../base-application/index.js").Field, never>>>, "hasNonBuiltInEntity" | "loadApplicationKeys" | "task">;
18
28
  /**
19
29
  * Return the user home
20
30
  */
@@ -17,7 +17,6 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import assert from 'assert';
20
- import os from 'os';
21
20
  import { lowerFirst } from 'lodash-es';
22
21
  import chalk from 'chalk';
23
22
  import { passthrough } from '@yeoman/transform';
@@ -32,11 +31,10 @@ import { loadAppConfig, loadDerivedAppConfig, loadStoredAppOptions } from '../ap
32
31
  import { lookupCommandsConfigs } from '../../lib/command/lookup-commands-configs.js';
33
32
  import { loadCommandConfigsIntoApplication, loadCommandConfigsKeysIntoTemplatesContext } from '../../lib/command/load.js';
34
33
  import { getConfigWithDefaults } from '../../lib/jhipster/default-application-options.js';
35
- import { removeFieldsWithNullishValues } from '../base/support/index.js';
34
+ import { isWin32, removeFieldsWithNullishValues } from '../base/support/index.js';
36
35
  import { convertFieldBlobType, getBlobContentType, isFieldBinaryType, isFieldBlobType } from '../../lib/application/field-types.js';
37
36
  import { createAuthorityEntity, createUserEntity, createUserManagementEntity } from './utils.js';
38
37
  import { exportJDLTransform, importJDLTransform } from './support/index.js';
39
- const isWin32 = os.platform() === 'win32';
40
38
  export default class BootstrapApplicationBase extends BaseApplicationGenerator {
41
39
  constructor(args, options, features) {
42
40
  super(args, options, { jhipsterBootstrap: false, ...features });
@@ -399,6 +397,9 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
399
397
  commandsConfigs: await lookupCommandsConfigs(),
400
398
  });
401
399
  },
400
+ hasNonBuiltInEntity({ application, entities }) {
401
+ application.hasNonBuiltInEntity = entities.filter(e => !e.builtIn).length > 0;
402
+ },
402
403
  task({ application }) {
403
404
  const packageJsonFiles = [this.destinationPath('package.json')];
404
405
  if (application.clientRootDir) {
@@ -1,6 +1,8 @@
1
1
  import BaseApplicationGenerator from '../base-application/index.js';
2
2
  export default class BootStrapApplicationClient extends BaseApplicationGenerator {
3
- [x: string]: any;
3
+ [BaseApplicationGenerator.LOADING]: any;
4
+ [BaseApplicationGenerator.PREPARING]: any;
5
+ [BaseApplicationGenerator.DEFAULT]: any;
4
6
  constructor(args: any, options: any, features: any);
5
7
  beforeQueue(): Promise<void>;
6
8
  get loading(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "loadApplication">;
@@ -18,7 +18,14 @@
18
18
  */
19
19
  import BaseApplicationGenerator from '../base-application/index.js';
20
20
  export default class BoostrapApplicationServer extends BaseApplicationGenerator {
21
- [x: string]: any;
21
+ [BaseApplicationGenerator.LOADING]: any;
22
+ [BaseApplicationGenerator.PREPARING]: any;
23
+ [BaseApplicationGenerator.LOADING_ENTITIES]: any;
24
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY]: any;
25
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY_FIELD]: any;
26
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY_RELATIONSHIP]: any;
27
+ [BaseApplicationGenerator.POST_PREPARING_EACH_ENTITY]: any;
28
+ [BaseApplicationGenerator.DEFAULT]: any;
22
29
  constructor(args: any, options: any, features: any);
23
30
  beforeQueue(): Promise<void>;
24
31
  get loading(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "loadApplication">;
@@ -18,7 +18,15 @@
18
18
  */
19
19
  import BaseWorkspacesGenerator from '../base-workspaces/index.js';
20
20
  export default class DockerComposeGenerator extends BaseWorkspacesGenerator {
21
- [x: string]: any;
21
+ [BaseWorkspacesGenerator.PROMPTING]: any;
22
+ [BaseWorkspacesGenerator.CONFIGURING]: any;
23
+ [BaseWorkspacesGenerator.LOADING]: any;
24
+ [BaseWorkspacesGenerator.PREPARING]: any;
25
+ [BaseWorkspacesGenerator.LOADING_WORKSPACES]: {
26
+ loadWorkspacesConfig({ workspaces }: {
27
+ workspaces: any;
28
+ }): void;
29
+ };
22
30
  sharedWorkspaces: any;
23
31
  customWorkspacesConfig?: boolean;
24
32
  beforeQueue(): Promise<void>;
@@ -18,7 +18,12 @@
18
18
  */
19
19
  import BaseApplicationGenerator from '../base-application/index.js';
20
20
  export default class CiCdGenerator extends BaseApplicationGenerator {
21
- [x: string]: any;
21
+ [BaseApplicationGenerator.INITIALIZING]: any;
22
+ [BaseApplicationGenerator.LOADING]: any;
23
+ [BaseApplicationGenerator.PREPARING]: any;
24
+ [BaseApplicationGenerator.DEFAULT]: any;
25
+ [BaseApplicationGenerator.WRITING]: any;
26
+ [BaseApplicationGenerator.POST_WRITING]: any;
22
27
  insideDocker: any;
23
28
  context: {};
24
29
  beforeQueue(): Promise<void>;
@@ -1,6 +1,18 @@
1
1
  import BaseApplicationGenerator from '../base-application/index.js';
2
2
  export default class JHipsterClientGenerator extends BaseApplicationGenerator {
3
- [x: string]: any;
3
+ [BaseApplicationGenerator.PROMPTING]: import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "askForClientTheme" | "askForClientThemeVariant">;
4
+ [BaseApplicationGenerator.CONFIGURING]: any;
5
+ [BaseApplicationGenerator.COMPOSING]: any;
6
+ [BaseApplicationGenerator.LOADING]: any;
7
+ [BaseApplicationGenerator.PREPARING]: any;
8
+ [BaseApplicationGenerator.PREPARING_EACH_ENTITY]: {
9
+ prepareEntity({ entity }: {
10
+ entity: any;
11
+ }): void;
12
+ };
13
+ [BaseApplicationGenerator.WRITING]: any;
14
+ [BaseApplicationGenerator.WRITING_ENTITIES]: any;
15
+ [BaseApplicationGenerator.POST_WRITING]: any;
4
16
  beforeQueue(): Promise<void>;
5
17
  get prompting(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "askForClientTheme" | "askForClientThemeVariant">;
6
18
  get configuring(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "applyNoFramework" | "mergeTestConfig" | "upgradeAngular" | "configureDevServerPort">;
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import BaseApplicationGenerator from '../../../base-application/index.js';
20
20
  export default class CommonGenerator extends BaseApplicationGenerator {
21
- [x: string]: any;
21
+ [BaseApplicationGenerator.WRITING]: any;
22
22
  beforeQueue(): Promise<void>;
23
23
  get writing(): import("../../../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../../../lib/types/application/tasks.js").WritingTaskParam<import("../../../base-application/index.js").Entity<import("../../../base-application/index.js").Field, never>, import("../../../../lib/types/application/application.js").ApplicationType<import("../../../base-application/index.js").Entity<import("../../../base-application/index.js").Field, never>>>, "writing">;
24
24
  }
@@ -3,15 +3,15 @@
3
3
  "dayjs": "1.11.13"
4
4
  },
5
5
  "devDependencies": {
6
- "@cypress/code-coverage": "3.13.11",
6
+ "@cypress/code-coverage": "3.14.0",
7
7
  "babel-loader": "9.2.1",
8
8
  "babel-plugin-istanbul": "7.0.0",
9
- "cypress": "14.0.2",
9
+ "cypress": "14.3.2",
10
10
  "cypress-audit": "1.1.0",
11
- "eslint-plugin-cypress": "4.1.0",
12
- "lighthouse": "12.3.0",
11
+ "eslint-plugin-cypress": "4.3.0",
12
+ "lighthouse": "12.6.0",
13
13
  "nyc": "17.1.0",
14
- "swagger-ui-dist": "5.18.3"
14
+ "swagger-ui-dist": "5.21.0"
15
15
  },
16
16
  "packageManager": "npm@11"
17
17
  }