generator-jhipster 8.4.0 → 8.6.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 (430) hide show
  1. package/README.md +3 -4
  2. package/dist/cli/commands.mjs +2 -0
  3. package/dist/cli/environment-builder.mjs +5 -0
  4. package/dist/cli/program.mjs +10 -4
  5. package/dist/generators/angular/entity-files-angular.js +6 -7
  6. package/dist/generators/angular/resources/package.json +20 -20
  7. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +4 -3
  8. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +3 -2
  9. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +4 -5
  10. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.service.spec.ts.ejs +3 -2
  11. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +6 -5
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +3 -6
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +3 -2
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +5 -5
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +3 -6
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +3 -2
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +2 -3
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +3 -6
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.service.spec.ts.ejs +3 -2
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +3 -3
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +3 -4
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +3 -3
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +3 -2
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +4 -4
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +3 -2
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +3 -3
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +4 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +3 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.ts.ejs +1 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +11 -11
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.spec.ts.ejs +3 -3
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +3 -2
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +3 -2
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +0 -2
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +3 -3
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +3 -4
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +3 -3
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -2
  40. package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -1
  41. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +0 -1
  42. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +2 -2
  43. package/dist/generators/angular/templates/src/main/webapp/app/config/uib-pagination.config.ts.ejs +1 -1
  44. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +7 -5
  45. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-jwt.service.spec.ts.ejs +3 -2
  46. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +1 -1
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth-expired.interceptor.ts.ejs +3 -3
  48. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth.interceptor.ts.ejs +2 -2
  49. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/error-handler.interceptor.ts.ejs +1 -1
  50. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +6 -6
  51. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +0 -3
  52. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +3 -4
  53. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +2 -2
  54. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +1 -1
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -3
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +4 -5
  58. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +5 -3
  59. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +5 -6
  60. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +11 -17
  61. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.ts.ejs +2 -2
  62. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +6 -6
  63. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
  64. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +3 -2
  65. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +2 -2
  66. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +3 -4
  67. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +2 -2
  68. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +11 -9
  69. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +3 -8
  70. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +6 -2
  71. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/find-language-from-key.pipe.ts.ejs +1 -1
  72. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +2 -2
  73. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +10 -10
  74. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +6 -7
  75. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +4 -4
  76. package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +2 -0
  77. package/dist/generators/app/generator.js +4 -13
  78. package/dist/generators/base/command.js +1 -0
  79. package/dist/generators/base/generator.js +22 -28
  80. package/dist/generators/base/internal/command.js +13 -0
  81. package/dist/generators/base/internal/index.js +1 -0
  82. package/dist/generators/base/priorities.js +12 -1
  83. package/dist/generators/base/shared-data.js +74 -2
  84. package/dist/generators/base/support/config.js +1 -1
  85. package/dist/generators/base/support/jhipster7-context.js +155 -52
  86. package/dist/generators/base-application/generator.js +15 -3
  87. package/dist/generators/base-application/priorities.js +1 -0
  88. package/dist/generators/base-application/support/prepare-entity.js +7 -8
  89. package/dist/generators/base-application/support/prepare-relationship.js +3 -2
  90. package/dist/generators/base-core/generator.js +132 -63
  91. package/dist/generators/bootstrap/generator.js +1 -1
  92. package/dist/generators/bootstrap/support/eslint-worker.js +14 -12
  93. package/dist/generators/bootstrap/support/multi-step-transform/template-file.js +6 -1
  94. package/dist/generators/bootstrap-application/generator.js +1 -1
  95. package/dist/generators/bootstrap-application-base/generator.js +7 -3
  96. package/dist/generators/bootstrap-application-client/generator.js +5 -1
  97. package/dist/generators/bootstrap-application-server/generator.js +1 -0
  98. package/dist/generators/ci-cd/generator.js +1 -1
  99. package/dist/generators/ci-cd/templates/docker-registry.yml.ejs +0 -1
  100. package/dist/generators/ci-cd/templates/jenkins/jenkins.yml.ejs +0 -1
  101. package/dist/generators/client/command.js +2 -2
  102. package/dist/generators/client/generator.js +2 -3
  103. package/dist/generators/client/generators/common/command.js +5 -0
  104. package/dist/generators/client/generators/common/generator.js +79 -0
  105. package/dist/generators/client/generators/common/index.js +20 -0
  106. package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/headers.ts.ejs +57 -0
  107. package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/problem-details.ts.ejs +51 -0
  108. package/dist/generators/client/resources/package.json +6 -6
  109. package/dist/generators/client/support/filter-entities.js +1 -1
  110. package/dist/generators/client/templates/.eslintignore.ejs +9 -5
  111. package/dist/generators/client/templates/README.md.jhi.client.ejs +29 -20
  112. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +1 -1
  113. package/dist/generators/common/generator.js +5 -0
  114. package/dist/generators/common/resources/package.json +2 -2
  115. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/login-page.cy.ts.ejs +4 -4
  116. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/password-page.cy.ts.ejs +2 -2
  117. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/register-page.cy.ts.ejs +1 -1
  118. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/reset-password-page.cy.ts.ejs +1 -1
  119. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +10 -10
  120. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +2 -1
  121. package/dist/generators/docker/templates/docker/mariadb.yml.ejs +1 -1
  122. package/dist/generators/docker/templates/docker/mysql.yml.ejs +1 -2
  123. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +14 -3
  124. package/dist/generators/docker/templates/docker/realm-config/keycloak-health-check.sh +2 -2
  125. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -0
  126. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +14 -3
  127. package/dist/generators/docker-compose/templates/realm-config/keycloak-health-check.sh +2 -2
  128. package/dist/generators/entity/generator.js +2 -10
  129. package/dist/generators/entity/prompts.js +6 -11
  130. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +1 -1
  131. package/dist/generators/gatling/README.md +15 -0
  132. package/dist/generators/gatling/generator.js +0 -1
  133. package/dist/generators/gatling/templates/src/test/java/gatling/simulations/_entityClass_GatlingTest.java.ejs +2 -10
  134. package/dist/generators/generate-blueprint/command.js +16 -0
  135. package/dist/generators/generate-blueprint/files.js +11 -1
  136. package/dist/generators/generate-blueprint/generator.js +34 -17
  137. package/dist/generators/generate-blueprint/resources/package.json +3 -1
  138. package/dist/generators/generate-blueprint/templates/.blueprint/cli/commands.mjs.ejs +6 -0
  139. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +20 -0
  140. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +9 -13
  141. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/build-matrix.mjs.ejs +22 -0
  142. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +20 -0
  143. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +1 -0
  144. package/dist/generators/generate-blueprint/templates/.github/workflows/build-cache.yml.ejs +39 -0
  145. package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +105 -0
  146. package/dist/generators/generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs +1 -1
  147. package/dist/generators/generate-blueprint/templates/README.md.ejs +16 -8
  148. package/dist/generators/generate-blueprint/templates/eslint.config.js.ejs +33 -0
  149. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -0
  150. package/dist/generators/generator-constants.js +2 -2
  151. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  152. package/dist/generators/heroku/generator.js +1 -1
  153. package/dist/generators/info/generator.js +1 -3
  154. package/dist/generators/info/support/extract-info.js +60 -0
  155. package/dist/generators/info/support/index.js +1 -0
  156. package/dist/generators/init/generator.js +2 -2
  157. package/dist/generators/init/resources/.node-version +1 -1
  158. package/dist/generators/init/resources/package.json +2 -2
  159. package/dist/generators/java/generators/bootstrap/generator.js +9 -2
  160. package/dist/generators/java/generators/build-tool/command.js +6 -3
  161. package/dist/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +1 -5
  162. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +3 -3
  163. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +3 -3
  164. package/dist/generators/java/generators/node/templates/npmw +1 -5
  165. package/dist/generators/java/support/add-java-annotation.js +28 -7
  166. package/dist/generators/java/support/generated-annotation-transform.js +1 -1
  167. package/dist/generators/java/support/index.js +1 -1
  168. package/dist/generators/jdl/generator.js +7 -7
  169. package/dist/generators/kubernetes/files.js +1 -1
  170. package/dist/generators/kubernetes/templates/db/mysql.yml.ejs +1 -1
  171. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +14 -3
  172. package/dist/generators/languages/generator.js +5 -2
  173. package/dist/generators/liquibase/templates/src/main/java/_package_/config/LiquibaseConfiguration.java.ejs +1 -1
  174. package/dist/generators/maven/command.js +15 -0
  175. package/dist/generators/maven/generator.js +6 -1
  176. package/dist/generators/maven/index.js +1 -0
  177. package/dist/generators/maven/internal/xml-store.js +7 -6
  178. package/dist/generators/maven/support/pom-store.js +24 -9
  179. package/dist/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +2 -2
  180. package/dist/generators/maven/templates/mvnw +185 -243
  181. package/dist/generators/maven/templates/mvnw.cmd +121 -180
  182. package/dist/generators/react/entity-files-react.js +7 -7
  183. package/dist/generators/react/generator.js +10 -0
  184. package/dist/generators/react/resources/package.json +28 -28
  185. package/dist/generators/react/templates/src/main/webapp/app/app.tsx.ejs +9 -0
  186. package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +1 -1
  187. package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.ts.ejs +1 -1
  188. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +1 -1
  189. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.ts.ejs +80 -87
  190. package/dist/generators/react/templates/src/main/webapp/app/config/store.ts.ejs +1 -1
  191. package/dist/generators/react/templates/src/main/webapp/app/config/translation.ts.ejs +4 -0
  192. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +3 -3
  193. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +12 -7
  194. package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +15 -1
  195. package/dist/generators/react/templates/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +4 -0
  196. package/dist/generators/react/templates/src/main/webapp/app/modules/login/logout.tsx.ejs +5 -3
  197. package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +1 -1
  198. package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +1 -1
  199. package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.tsx.ejs +1 -1
  200. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.tsx.ejs +0 -9
  201. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +1 -3
  202. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +29 -6
  203. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +2 -3
  204. package/dist/generators/react/templates/src/main/webapp/app/shared/util/url-utils.ts.ejs +1 -1
  205. package/dist/generators/server/command.js +0 -11
  206. package/dist/generators/server/generator.js +16 -75
  207. package/dist/generators/server/jdl/application-definition.js +3 -1
  208. package/dist/generators/server/resources/Dockerfile +13 -13
  209. package/dist/generators/server/resources/gradle/libs.versions.toml +9 -7
  210. package/dist/generators/server/resources/pom.xml +16 -16
  211. package/dist/generators/server/support/config.js +4 -8
  212. package/dist/generators/server/support/prepare-entity.js +5 -6
  213. package/dist/generators/server/support/relationship.js +5 -2
  214. package/dist/generators/server/templates/build.gradle.ejs +5 -3
  215. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +2 -1
  216. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +2 -1
  217. package/dist/generators/server/templates/gradle.properties.ejs +1 -1
  218. package/dist/generators/server/templates/pom.xml.ejs +7 -31
  219. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +1 -1
  220. package/dist/generators/server/templates/src/main/java/_package_/config/AsyncConfiguration.java.ejs +1 -1
  221. package/dist/generators/server/templates/src/main/java/_package_/config/Constants.java.ejs +0 -2
  222. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +1 -18
  223. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +1 -15
  224. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +1 -21
  225. package/dist/generators/server/templates/src/main/java/_package_/config/WebConfigurer.java.ejs +1 -1
  226. package/dist/generators/server/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +1 -1
  227. package/dist/generators/server/templates/src/main/java/_package_/security/PersistentTokenRememberMeServices.java.ejs +1 -1
  228. package/dist/generators/server/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +65 -5
  229. package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/AudienceValidator.java.ejs +1 -1
  230. package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +1 -1
  231. package/dist/generators/server/templates/src/main/java/_package_/service/dto/UserDTO.java.ejs +34 -0
  232. package/dist/generators/server/templates/src/main/java/_package_/service/mapper/UserMapper.java.ejs +8 -4
  233. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
  234. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +1 -1
  235. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +44 -10
  236. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +1 -1
  237. package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
  238. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +60 -22
  239. package/dist/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +1 -1
  240. package/dist/generators/server/templates/src/main/resources/swagger/api.yml.ejs +1 -1
  241. package/dist/generators/server/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +31 -13
  242. package/dist/generators/server/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +84 -17
  243. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +62 -6
  244. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +22 -0
  245. package/dist/generators/server/templates/src/test/resources/config/application.yml.ejs +20 -10
  246. package/dist/generators/spring-boot/command.js +117 -6
  247. package/dist/generators/spring-boot/files.js +0 -5
  248. package/dist/generators/spring-boot/generator.js +44 -9
  249. package/dist/generators/spring-boot/prompts.js +6 -70
  250. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +374 -582
  251. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/UserService.java.ejs +1 -1
  252. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +1 -1
  253. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/impl/_entityClass_ServiceImpl.java.ejs +1 -1
  254. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/PublicUserResource.java.ejs +1 -1
  255. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/UserResource.java.ejs +1 -1
  256. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +1 -1
  257. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +47 -11
  258. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +60 -24
  259. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +195 -318
  260. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +58 -51
  261. package/dist/generators/spring-cache/internal/dependencies.js +2 -2
  262. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  263. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +3 -3
  264. package/dist/generators/spring-cloud/generators/gateway/command.js +10 -1
  265. package/dist/generators/spring-cloud/generators/gateway/generator.js +13 -0
  266. package/dist/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.js +6 -0
  267. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_imperative.java.ejs +1 -1
  268. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_reactive.java.ejs +1 -1
  269. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
  270. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
  271. package/dist/generators/spring-data-cassandra/generator.js +2 -2
  272. package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
  273. package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs +18 -2
  274. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
  275. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +3 -1
  276. package/dist/generators/vue/entity-files-vue.js +7 -7
  277. package/dist/generators/vue/resources/package.json +21 -21
  278. package/dist/generators/vue/templates/.eslintrc.cjs.ejs +7 -0
  279. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.spec.ts.ejs +1 -1
  280. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -1
  281. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +1 -1
  282. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +1 -1
  283. package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.spec.ts.ejs +8 -8
  284. package/dist/generators/vue/templates/src/main/webapp/app/shared/data/data-utils.service.spec.ts.ejs +1 -1
  285. package/dist/generators/vue/templates/tsconfig.app.json.ejs +1 -1
  286. package/dist/generators/vue/templates/vite.config.mts.ejs +5 -4
  287. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -1
  288. package/dist/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +4 -4
  289. package/dist/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.js +9 -9
  290. package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +2 -2
  291. package/dist/jdl/converters/json-to-jdl-application-converter.js +1 -1
  292. package/dist/jdl/converters/json-to-jdl-converter.js +6 -5
  293. package/dist/jdl/converters/json-to-jdl-entity-converter.js +14 -14
  294. package/dist/jdl/converters/json-to-jdl-option-converter.js +1 -2
  295. package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -1
  296. package/dist/jdl/converters/parsed-jdl-to-jdl-object/option-converter.js +2 -2
  297. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +7 -6
  298. package/dist/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.js +1 -1
  299. package/dist/jdl/exporters/applications/jhipster-application-formatter.js +16 -23
  300. package/dist/jdl/exporters/config.js +1 -0
  301. package/dist/jdl/exporters/jhipster-deployment-exporter.js +5 -5
  302. package/dist/jdl/exporters/jhipster-entity-exporter.js +1 -1
  303. package/dist/jdl/jdl-importer.js +22 -20
  304. package/dist/jdl/jhipster/binary-options.js +12 -8
  305. package/dist/jdl/jhipster/json-entity.js +1 -1
  306. package/dist/jdl/models/abstract-jdl-option.js +2 -2
  307. package/dist/jdl/models/jdl-application-configuration-factory.js +2 -0
  308. package/dist/jdl/models/jdl-binary-option.js +2 -2
  309. package/dist/jdl/models/jdl-deployment.js +11 -0
  310. package/dist/jdl/models/jdl-entity.js +1 -1
  311. package/dist/jdl/models/jdl-enum.js +1 -1
  312. package/dist/jdl/models/jdl-enums.js +0 -18
  313. package/dist/jdl/models/jdl-field.js +2 -2
  314. package/dist/jdl/models/jdl-object-wrapper.js +1 -0
  315. package/dist/jdl/models/jdl-object.js +23 -45
  316. package/dist/jdl/models/jdl-options.js +0 -18
  317. package/dist/jdl/models/jdl-relationships.js +8 -16
  318. package/dist/jdl/models/jdl-unary-option.js +1 -1
  319. package/dist/jdl/models/list-jdl-application-configuration-option.js +5 -2
  320. package/dist/jdl/parsing/jdl-ast-builder-visitor.js +12 -0
  321. package/dist/jdl/parsing/jdl-parser.js +14 -0
  322. package/dist/jdl/parsing/lexer/lexer.js +17 -11
  323. package/dist/jdl/parsing/validator.js +16 -2
  324. package/dist/jdl/readers/json-reader.js +1 -1
  325. package/dist/jdl/utils/array-utils.js +6 -0
  326. package/dist/jdl/utils/set-utils.js +3 -2
  327. package/dist/jdl/validators/jdl-without-application-validator.js +2 -2
  328. package/dist/lib/eslint/base.js +25 -0
  329. package/dist/lib/eslint/recommended.js +22 -0
  330. package/dist/testing/github.js +32 -0
  331. package/dist/testing/helpers.js +13 -0
  332. package/dist/testing/index.js +2 -0
  333. package/dist/testing/sample-config.js +31 -0
  334. package/dist/types/cli/commands.d.mts +2 -0
  335. package/dist/types/cli/environment-builder.d.mts +1 -0
  336. package/dist/types/generators/base/api.d.ts +19 -8
  337. package/dist/types/generators/base/generator.d.ts +10 -4
  338. package/dist/types/generators/base/internal/command.d.ts +2 -0
  339. package/dist/types/generators/base/internal/index.d.ts +1 -0
  340. package/dist/types/generators/base/priorities.d.ts +4 -0
  341. package/dist/types/generators/base/shared-data.d.ts +11 -2
  342. package/dist/types/generators/base/types.d.ts +12 -0
  343. package/dist/types/generators/base-application/priorities.d.ts +2 -0
  344. package/dist/types/generators/base-application/support/entity.d.ts +2 -2
  345. package/dist/types/generators/base-application/support/prepare-entity.d.ts +3 -3
  346. package/dist/types/generators/base-application/support/relationship.d.ts +5 -5
  347. package/dist/types/generators/base-application/types.d.ts +11 -0
  348. package/dist/types/generators/base-core/generator.d.ts +18 -2
  349. package/dist/types/generators/generator-constants.d.ts +1 -1
  350. package/dist/types/generators/info/support/extract-info.d.ts +14 -0
  351. package/dist/types/generators/info/support/index.d.ts +1 -0
  352. package/dist/types/generators/java/support/add-java-annotation.d.ts +10 -20
  353. package/dist/types/generators/java/support/doc.d.ts +1 -1
  354. package/dist/types/generators/java/support/index.d.ts +1 -1
  355. package/dist/types/generators/java/types.d.ts +12 -0
  356. package/dist/types/generators/maven/internal/xml-store.d.ts +3 -2
  357. package/dist/types/generators/maven/support/pom-store.d.ts +5 -2
  358. package/dist/types/generators/maven/types.d.ts +1 -0
  359. package/dist/types/generators/server/support/relationship.d.ts +2 -2
  360. package/dist/types/generators/server/types.d.ts +7 -1
  361. package/dist/types/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.d.ts +2 -0
  362. package/dist/types/generators/spring-cloud/generators/gateway/types.d.ts +4 -0
  363. package/dist/types/jdl/converters/jdl-to-json/jdl-to-json-field-converter.d.ts +2 -2
  364. package/dist/types/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.d.ts +2 -1
  365. package/dist/types/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.d.ts +3 -1
  366. package/dist/types/jdl/converters/json-to-jdl-application-converter.d.ts +9 -2
  367. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +3 -3
  368. package/dist/types/jdl/converters/json-to-jdl-entity-converter.d.ts +2 -4
  369. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/application-converter.d.ts +3 -1
  370. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/deployment-converter.d.ts +2 -1
  371. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.d.ts +3 -1
  372. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/enum-converter.d.ts +2 -1
  373. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/field-converter.d.ts +2 -1
  374. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +3 -3
  375. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.d.ts +2 -1
  376. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/relationship-converter.d.ts +2 -1
  377. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/types.d.ts +110 -0
  378. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.d.ts +2 -1
  379. package/dist/types/jdl/converters/types.d.ts +102 -14
  380. package/dist/types/jdl/exporters/applications/jhipster-application-formatter.d.ts +4 -4
  381. package/dist/types/jdl/exporters/config.d.ts +2 -1
  382. package/dist/types/jdl/exporters/export-utils.d.ts +2 -1
  383. package/dist/types/jdl/exporters/jdl-exporter.d.ts +2 -1
  384. package/dist/types/jdl/exporters/jhipster-deployment-exporter.d.ts +3 -1
  385. package/dist/types/jdl/exporters/jhipster-entity-exporter.d.ts +3 -1
  386. package/dist/types/jdl/exporters/types.d.ts +61 -0
  387. package/dist/types/jdl/jhipster/binary-options.d.ts +8 -26
  388. package/dist/types/jdl/jhipster/field-types.d.ts +2 -2
  389. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -2
  390. package/dist/types/jdl/models/abstract-jdl-option.d.ts +14 -9
  391. package/dist/types/jdl/models/boolean-jdl-application-configuration-option.d.ts +1 -1
  392. package/dist/types/jdl/models/integer-jdl-application-configuration-option.d.ts +1 -1
  393. package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -1
  394. package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +4 -4
  395. package/dist/types/jdl/models/jdl-application-configuration.d.ts +4 -4
  396. package/dist/types/jdl/models/jdl-application-definition.d.ts +4 -4
  397. package/dist/types/jdl/models/jdl-application-entities.d.ts +4 -4
  398. package/dist/types/jdl/models/jdl-application.d.ts +16 -13
  399. package/dist/types/jdl/models/jdl-binary-option.d.ts +5 -3
  400. package/dist/types/jdl/models/jdl-deployment.d.ts +13 -1
  401. package/dist/types/jdl/models/jdl-entity.d.ts +5 -5
  402. package/dist/types/jdl/models/jdl-enum-value.d.ts +4 -4
  403. package/dist/types/jdl/models/jdl-enum.d.ts +9 -5
  404. package/dist/types/jdl/models/jdl-enums.d.ts +6 -5
  405. package/dist/types/jdl/models/jdl-field.d.ts +10 -8
  406. package/dist/types/jdl/models/jdl-object-wrapper.d.ts +25 -0
  407. package/dist/types/jdl/models/jdl-object.d.ts +23 -19
  408. package/dist/types/jdl/models/jdl-options.d.ts +7 -24
  409. package/dist/types/jdl/models/jdl-relationship.d.ts +16 -10
  410. package/dist/types/jdl/models/jdl-relationships.d.ts +5 -5
  411. package/dist/types/jdl/models/jdl-validation.d.ts +3 -3
  412. package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +4 -3
  413. package/dist/types/jdl/models/string-jdl-application-configuration-option.d.ts +2 -2
  414. package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +1 -0
  415. package/dist/types/jdl/parsing/jdl-parser.d.ts +1 -0
  416. package/dist/types/jdl/parsing/jdl-parsing-types.d.ts +23 -0
  417. package/dist/types/jdl/parsing/lexer/lexer.d.ts +6 -2
  418. package/dist/types/jdl/parsing/validator.d.ts +1 -1
  419. package/dist/types/jdl/utils/array-utils.d.ts +1 -0
  420. package/dist/types/jdl/utils/set-utils.d.ts +1 -19
  421. package/dist/types/jdl/validators/deployment-validator.d.ts +2 -1
  422. package/dist/types/lib/eslint/base.d.ts +20 -0
  423. package/dist/types/lib/eslint/recommended.d.ts +20 -0
  424. package/dist/types/testing/github.d.ts +11 -0
  425. package/dist/types/testing/helpers.d.ts +21 -3
  426. package/dist/types/testing/index.d.ts +2 -0
  427. package/dist/types/testing/sample-config.d.ts +4 -0
  428. package/package.json +35 -30
  429. package/dist/generators/generate-blueprint/templates/.eslintrc.json.ejs +0 -35
  430. /package/dist/jdl/converters/{types.js → parsed-jdl-to-jdl-object/types.js} +0 -0
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Component, DebugElement } from '@angular/core';
19
+ import { Component, DebugElement, Type } from '@angular/core';
20
20
  import { ComponentFixture, TestBed } from '@angular/core/testing';
21
21
  import { By } from '@angular/platform-browser';
22
22
 
@@ -57,7 +57,7 @@ describe('Directive: SortDirective', () => {
57
57
 
58
58
  it('should invoke sortChange function', () => {
59
59
  // GIVEN
60
- const sortDirective = tableRow.injector.get(SortDirective);
60
+ const sortDirective = tableRow.injector.get(SortDirective as Type<SortDirective>);
61
61
 
62
62
  // WHEN
63
63
  fixture.detectChanges();
@@ -70,7 +70,7 @@ describe('Directive: SortDirective', () => {
70
70
 
71
71
  it('should change sort order to descending, neutral when same field is sorted again', () => {
72
72
  // GIVEN
73
- const sortDirective = tableRow.injector.get(SortDirective);
73
+ const sortDirective = tableRow.injector.get(SortDirective as Type<SortDirective>);
74
74
 
75
75
  // WHEN
76
76
  fixture.detectChanges();
@@ -89,7 +89,7 @@ describe('Directive: SortDirective', () => {
89
89
 
90
90
  it('should change sort order to ascending when different field is sorted', () => {
91
91
  // GIVEN
92
- const sortDirective = tableRow.injector.get(SortDirective);
92
+ const sortDirective = tableRow.injector.get(SortDirective as Type<SortDirective>);
93
93
 
94
94
  // WHEN
95
95
  fixture.detectChanges();
@@ -122,9 +122,11 @@ Generic styles
122
122
  word-break: break-all;
123
123
  }
124
124
 
125
+ <%_ if (clientThemeNone || clientTheme !== 'quartz') { _%>
125
126
  .form-control {
126
127
  background-color: #fff;
127
128
  }
129
+ <%_ } _%>
128
130
 
129
131
  .readonly {
130
132
  background-color: #eee;
@@ -114,8 +114,8 @@ export default class JHipsterAppGenerator extends BaseApplicationGenerator {
114
114
  get [BaseApplicationGenerator.CONFIGURING]() {
115
115
  return this.delegateTasksToBlueprint(() => this.configuring);
116
116
  }
117
- get composing() {
118
- return this.asComposingTaskGroup({
117
+ get composingComponent() {
118
+ return this.asComposingComponentTaskGroup({
119
119
  /**
120
120
  * Composing with others generators, must be executed after `configuring` priority to let others
121
121
  * generators `configuring` priority to run.
@@ -138,19 +138,10 @@ export default class JHipsterAppGenerator extends BaseApplicationGenerator {
138
138
  await this.composeWithJHipster(GENERATOR_CLIENT);
139
139
  }
140
140
  },
141
- /**
142
- * At this point every other generator should already be configured, so, enforce defaults fallback.
143
- */
144
- saveConfigWithDefaults() {
145
- const config = this.jhipsterConfigWithDefaults;
146
- if (config.entitySuffix === config.dtoSuffix) {
147
- throw new Error('Entities cannot be generated as the entity suffix and DTO suffix are equals !');
148
- }
149
- },
150
141
  });
151
142
  }
152
- get [BaseApplicationGenerator.COMPOSING]() {
153
- return this.delegateTasksToBlueprint(() => this.composing);
143
+ get [BaseApplicationGenerator.COMPOSING_COMPONENT]() {
144
+ return this.delegateTasksToBlueprint(() => this.composingComponent);
154
145
  }
155
146
  get writing() {
156
147
  return this.asWritingTaskGroup({
@@ -41,6 +41,7 @@ const command = {
41
41
  description: 'Ignore needles failures',
42
42
  type: Boolean,
43
43
  hide: true,
44
+ scope: 'generator',
44
45
  },
45
46
  },
46
47
  };
@@ -20,14 +20,12 @@ import fs from 'fs';
20
20
  import path from 'path';
21
21
  import chalk from 'chalk';
22
22
  import semver from 'semver';
23
- import { defaults } from 'lodash-es';
24
23
  import { packageJson } from '../../lib/index.js';
25
- import { packageNameToNamespace, removeFieldsWithNullishValues } from './support/index.js';
24
+ import { packageNameToNamespace } from './support/index.js';
26
25
  import { mergeBlueprints, parseBluePrints, loadBlueprintsFromConfiguration, normalizeBlueprintName } from './internal/index.js';
27
26
  import { PRIORITY_NAMES } from './priorities.js';
28
27
  import CoreGenerator from '../base-core/index.js';
29
28
  import { LOCAL_BLUEPRINT_PACKAGE_NAMESPACE } from './support/constants.js';
30
- import { getConfigWithDefaults } from '../../jdl/index.js';
31
29
  import { loadStoredAppOptions } from '../app/support/index.js';
32
30
  /**
33
31
  * Base class that contains blueprints support.
@@ -160,6 +158,20 @@ export default class JHipsterBaseBlueprintGenerator extends CoreGenerator {
160
158
  asComposingTaskGroup(taskGroup) {
161
159
  return taskGroup;
162
160
  }
161
+ /**
162
+ * Priority API stub for blueprints.
163
+ *
164
+ * ComposingComponent priority should be used to handle component configuration order.
165
+ */
166
+ get composingComponent() {
167
+ return {};
168
+ }
169
+ /**
170
+ * Utility method to get typed objects for autocomplete.
171
+ */
172
+ asComposingComponentTaskGroup(taskGroup) {
173
+ return taskGroup;
174
+ }
163
175
  /**
164
176
  * Priority API stub for blueprints.
165
177
  *
@@ -343,19 +355,6 @@ export default class JHipsterBaseBlueprintGenerator extends CoreGenerator {
343
355
  asEndTaskGroup(taskGroup) {
344
356
  return taskGroup;
345
357
  }
346
- /**
347
- * JHipster config with default values fallback
348
- */
349
- get jhipsterConfigWithDefaults() {
350
- const configWithDefaults = getConfigWithDefaults(removeFieldsWithNullishValues(this.config.getAll()));
351
- defaults(configWithDefaults, {
352
- skipFakeData: false,
353
- skipCheckLengthOfIdentifier: false,
354
- enableGradleEnterprise: false,
355
- pages: [],
356
- });
357
- return configWithDefaults;
358
- }
359
358
  /**
360
359
  * @protected
361
360
  * Composes with blueprint generators, if any.
@@ -569,23 +568,18 @@ export default class JHipsterBaseBlueprintGenerator extends CoreGenerator {
569
568
  return;
570
569
  }
571
570
  const mainGeneratorJhipsterVersion = packageJson.version;
572
- const blueprintJhipsterVersion = blueprintPackageJson.dependencies && blueprintPackageJson.dependencies['generator-jhipster'];
573
- if (blueprintJhipsterVersion) {
574
- if (!semver.valid(blueprintJhipsterVersion) && !semver.validRange(blueprintJhipsterVersion)) {
571
+ const compatibleJhipsterRange = blueprintPackageJson.engines?.['generator-jhipster'] ??
572
+ blueprintPackageJson.dependencies?.['generator-jhipster'] ??
573
+ blueprintPackageJson.peerDependencies?.['generator-jhipster'];
574
+ if (compatibleJhipsterRange) {
575
+ if (!semver.valid(compatibleJhipsterRange) && !semver.validRange(compatibleJhipsterRange)) {
575
576
  this.log.verboseInfo(`Blueprint ${blueprintPkgName} contains generator-jhipster dependency with non comparable version`);
576
577
  return;
577
578
  }
578
- if (semver.satisfies(mainGeneratorJhipsterVersion, blueprintJhipsterVersion, { includePrerelease: true })) {
579
- return;
580
- }
581
- throw new Error(`The installed ${chalk.yellow(blueprintPkgName)} blueprint targets JHipster v${blueprintJhipsterVersion} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`);
582
- }
583
- const blueprintPeerJhipsterVersion = blueprintPackageJson.peerDependencies && blueprintPackageJson.peerDependencies['generator-jhipster'];
584
- if (blueprintPeerJhipsterVersion) {
585
- if (semver.satisfies(mainGeneratorJhipsterVersion, blueprintPeerJhipsterVersion, { includePrerelease: true })) {
579
+ if (semver.satisfies(mainGeneratorJhipsterVersion, compatibleJhipsterRange, { includePrerelease: true })) {
586
580
  return;
587
581
  }
588
- throw new Error(`The installed ${chalk.yellow(blueprintPkgName)} blueprint targets JHipster ${blueprintPeerJhipsterVersion} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`);
582
+ throw new Error(`The installed ${chalk.yellow(blueprintPkgName)} blueprint targets JHipster v${compatibleJhipsterRange} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`);
589
583
  }
590
584
  this.log.warn(`Could not retrieve version of JHipster declared by blueprint '${blueprintPkgName}'`);
591
585
  }
@@ -0,0 +1,13 @@
1
+ export const extractArgumentsFromConfigs = (configs) => {
2
+ if (!configs)
3
+ return {};
4
+ return Object.fromEntries(Object.entries(configs)
5
+ .filter(([_name, def]) => def.argument)
6
+ .map(([name, def]) => [
7
+ name,
8
+ {
9
+ description: def.description,
10
+ ...def.argument,
11
+ },
12
+ ]));
13
+ };
@@ -17,3 +17,4 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  export * from './blueprint.js';
20
+ export * from './command.js';
@@ -32,6 +32,8 @@ const END = 'end';
32
32
  /** Custom priorities */
33
33
  const COMPOSING = 'composing';
34
34
  const COMPOSING_QUEUE = `${QUEUE_PREFIX}${COMPOSING}`;
35
+ const COMPOSING_COMPONENT = 'composingComponent';
36
+ const COMPOSING_COMPONENT_QUEUE = `${QUEUE_PREFIX}${COMPOSING_COMPONENT}`;
35
37
  const LOADING = 'loading';
36
38
  const LOADING_QUEUE = `${QUEUE_PREFIX}${LOADING}`;
37
39
  const PREPARING = 'preparing';
@@ -70,9 +72,15 @@ export const CUSTOM_PRIORITIES = [
70
72
  {
71
73
  priorityName: COMPOSING,
72
74
  queueName: COMPOSING_QUEUE,
73
- before: LOADING,
75
+ before: COMPOSING_COMPONENT,
74
76
  args: generator => generator.getArgsForPriority(COMPOSING),
75
77
  },
78
+ {
79
+ priorityName: COMPOSING_COMPONENT,
80
+ queueName: COMPOSING_COMPONENT_QUEUE,
81
+ before: LOADING,
82
+ args: generator => generator.getArgsForPriority(COMPOSING_COMPONENT),
83
+ },
76
84
  {
77
85
  priorityName: LOADING,
78
86
  queueName: LOADING_QUEUE,
@@ -140,6 +148,7 @@ export const PRIORITY_NAMES = {
140
148
  PROMPTING,
141
149
  CONFIGURING,
142
150
  COMPOSING,
151
+ COMPOSING_COMPONENT,
143
152
  LOADING,
144
153
  PREPARING,
145
154
  POST_PREPARING,
@@ -158,6 +167,7 @@ export const PRIORITY_NAMES_LIST = [
158
167
  PROMPTING,
159
168
  CONFIGURING,
160
169
  COMPOSING,
170
+ COMPOSING_COMPONENT,
161
171
  LOADING,
162
172
  PREPARING,
163
173
  POST_PREPARING,
@@ -175,6 +185,7 @@ export const QUEUES = {
175
185
  PROMPTING_QUEUE: PROMPTING,
176
186
  CONFIGURING_QUEUE: CONFIGURING,
177
187
  COMPOSING_QUEUE,
188
+ COMPOSING_COMPONENT_QUEUE,
178
189
  LOADING_QUEUE,
179
190
  PREPARING_QUEUE,
180
191
  POST_PREPARING_QUEUE,
@@ -16,13 +16,30 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import { existsSync, readFileSync, statSync } from 'fs';
20
+ import { rm } from 'fs/promises';
21
+ import { isAbsolute, join, relative } from 'path';
22
+ import { lt as semverLessThan } from 'semver';
19
23
  import { defaults } from 'lodash-es';
24
+ import { create } from 'mem-fs-editor';
25
+ import { GENERATOR_JHIPSTER } from '../generator-constants.js';
20
26
  export default class SharedData {
21
27
  _storage;
22
- constructor(storage, initialControl = {}) {
28
+ _editor;
29
+ _log;
30
+ _logCwd;
31
+ constructor(storage, { memFs, destinationPath, log, logCwd }, initialControl = {}) {
23
32
  if (!storage) {
24
33
  throw new Error('Storage is required for SharedData');
25
34
  }
35
+ this._editor = create(memFs);
36
+ this._log = log;
37
+ this._logCwd = logCwd;
38
+ let jhipsterOldVersion;
39
+ if (existsSync(join(destinationPath, '.yo-rc.json'))) {
40
+ jhipsterOldVersion = JSON.parse(readFileSync(join(destinationPath, '.yo-rc.json'), 'utf-8').toString())[GENERATOR_JHIPSTER]
41
+ ?.jhipsterVersion;
42
+ }
26
43
  // Backward compatibility sharedData
27
44
  this._storage = storage;
28
45
  defaults(this._storage, {
@@ -34,7 +51,62 @@ export default class SharedData {
34
51
  control: initialControl,
35
52
  props: {},
36
53
  });
37
- this._storage.sharedApplication.nodeDependencies = this._storage.sharedApplication.nodeDependencies ?? {};
54
+ defaults(this._storage.sharedApplication, {
55
+ nodeDependencies: {},
56
+ customizeTemplatePaths: [],
57
+ });
58
+ let customizeRemoveFiles = [];
59
+ const removeFiles = async (assertions, ...files) => {
60
+ if (typeof assertions === 'string') {
61
+ files = [assertions, ...files];
62
+ assertions = {};
63
+ }
64
+ for (const customize of customizeRemoveFiles) {
65
+ files = files.map(customize).filter(file => file);
66
+ }
67
+ const { removedInVersion } = assertions;
68
+ if (removedInVersion && jhipsterOldVersion && !semverLessThan(jhipsterOldVersion, removedInVersion)) {
69
+ return;
70
+ }
71
+ const absolutePaths = files.map(file => (isAbsolute(file) ? file : join(destinationPath, file)));
72
+ // Delete from memory fs to keep updated.
73
+ this._editor.delete(absolutePaths);
74
+ await Promise.all(absolutePaths.map(async (file) => {
75
+ const relativePath = relative(logCwd, file);
76
+ try {
77
+ if (statSync(file).isFile()) {
78
+ this._log.info(`Removing legacy file ${relativePath}`);
79
+ await rm(file, { force: true });
80
+ }
81
+ }
82
+ catch {
83
+ this._log.info(`Could not remove legacy file ${relativePath}`);
84
+ }
85
+ }));
86
+ };
87
+ defaults(this._storage.control, {
88
+ jhipsterOldVersion,
89
+ removeFiles,
90
+ customizeRemoveFiles: [],
91
+ cleanupFiles: async (cleanup) => {
92
+ await Promise.all(Object.entries(cleanup).map(async ([version, files]) => {
93
+ const stringFiles = [];
94
+ for (const file of files) {
95
+ if (Array.isArray(file)) {
96
+ const [condition, ...fileParts] = file;
97
+ if (condition) {
98
+ stringFiles.push(join(...fileParts));
99
+ }
100
+ }
101
+ else {
102
+ stringFiles.push(file);
103
+ }
104
+ }
105
+ await removeFiles({ removedInVersion: version }, ...stringFiles);
106
+ }));
107
+ },
108
+ });
109
+ customizeRemoveFiles = this._storage.control.customizeRemoveFiles;
38
110
  }
39
111
  getSource() {
40
112
  return this._storage.sharedSource;
@@ -80,7 +80,7 @@ export const mutateData = (context, ...mutations) => {
80
80
  context[key] = value(context);
81
81
  }
82
82
  }
83
- else if (context[key] === undefined) {
83
+ else if (context[key] === undefined || override === true) {
84
84
  context[key] = value;
85
85
  }
86
86
  }
@@ -1,5 +1,13 @@
1
1
  /* eslint-disable no-console */
2
2
  import chalk from 'chalk';
3
+ import { camelCase } from 'lodash-es';
4
+ import { isReservedTableName } from '../../../jdl/jhipster/reserved-keywords.js';
5
+ import { upperFirstCamelCase } from './string.js';
6
+ import { getJavaValueGeneratorForType, getJoinTableName, getPrimaryKeyValue, getSpecificationBuildForType, hibernateSnakeCase, } from '../../server/support/index.js';
7
+ import { getDBCExtraOption } from '../../spring-data-relational/support/database-data.js';
8
+ import { getJdbcUrl, getR2dbcUrl } from '../../spring-data-relational/support/database-url.js';
9
+ import { fieldTypes } from '../../../jdl/index.js';
10
+ const { BYTES, BYTE_BUFFER } = fieldTypes.RelationalOnlyDBTypes;
3
11
  const deprecatedProperties = {
4
12
  GRADLE_VERSION: {
5
13
  replacement: 'gradleVersion',
@@ -17,6 +25,18 @@ const deprecatedProperties = {
17
25
  replacement: 'jhipsterDependenciesVersion',
18
26
  get: ({ data }) => data.jhipsterDependenciesVersion,
19
27
  },
28
+ JAVA_VERSION: {
29
+ replacement: 'javaVersion',
30
+ get: ({ data }) => data.javaVersion,
31
+ },
32
+ JAVA_COMPATIBLE_VERSIONS: {
33
+ replacement: 'javaCompatibleVersions',
34
+ get: ({ data }) => data.javaCompatibleVersions,
35
+ },
36
+ SPRING_BOOT_VERSION: {
37
+ replacement: "javaDependencies['spring-boot']",
38
+ get: ({ data }) => data.javaDependencies['spring-boot'],
39
+ },
20
40
  DOCKER_DIR: {
21
41
  replacement: 'dockerServicesDir',
22
42
  get: ({ data }) => data.dockerServicesDir,
@@ -123,7 +143,7 @@ const deprecatedProperties = {
123
143
  },
124
144
  dependabotPackageJson: {
125
145
  replacement: 'nodeDependencies',
126
- get: ({ data }) => data.nodeDependencies,
146
+ get: ({ data }) => ({ dependencies: data.nodeDependencies, devDependencies: data.nodeDependencies }),
127
147
  },
128
148
  cacheManagerIsAvailable: {
129
149
  replacement: 'cacheProviderAny',
@@ -157,31 +177,113 @@ const deprecatedProperties = {
157
177
  replacement: 'prodDatabaseTypeMssql',
158
178
  get: ({ data }) => data.prodDatabaseTypeMssql,
159
179
  },
180
+ cacheProviderEhCache: {
181
+ replacement: 'cacheProviderEhcache',
182
+ get: ({ data }) => data.cacheProviderEhcache,
183
+ },
184
+ getJDBCUrl: {
185
+ replacement: '(prod/dev)(Jdbc/Liquibase)Url or this.getJDBCUrl',
186
+ get: () => getJdbcUrl,
187
+ },
188
+ getR2DBCUrl: {
189
+ replacement: '(prod/dev)R2dbcUrl of this.getR2DBCUrl',
190
+ get: () => getR2dbcUrl,
191
+ },
192
+ getDBCExtraOption: {
193
+ replacement: '???',
194
+ get: () => getDBCExtraOption,
195
+ },
196
+ getPrimaryKeyValue: {
197
+ replacement: 'current generator this.getPrimaryKeyValue',
198
+ get: () => getPrimaryKeyValue,
199
+ },
200
+ getJoinTableName: {
201
+ replacement: 'joinTable property',
202
+ get: () => (...args) => getJoinTableName(...args).value,
203
+ },
204
+ getJavaValueGeneratorForType: {
205
+ replacement: 'javaValueGenerator property',
206
+ get: () => type => getJavaValueGeneratorForType(type).replace('longCount', 'count'),
207
+ },
208
+ asEntity: {
209
+ replacement: 'persistClass property',
210
+ get: ({ data }) => name => `${name}${data.entitySuffix}`,
211
+ },
212
+ asDto: {
213
+ replacement: 'restClass property',
214
+ get: ({ data }) => name => `${name}${data.dtoSuffix}`,
215
+ },
216
+ upperFirstCamelCase: {
217
+ replacement: 'upperFirstCamelCase* property alternative',
218
+ get: () => upperFirstCamelCase,
219
+ },
220
+ hasOauthUser: {
221
+ replacement: 'authenticationTypeOauth2 && generateBuiltInUserEntity',
222
+ get: ({ data }) => data.authenticationTypeOauth2 && data.generateBuiltInUserEntity,
223
+ },
224
+ getPrettierExtensions: {
225
+ replacement: 'prettierExtensions',
226
+ get: ({ data }) => () => data.prettierExtensions,
227
+ },
228
+ _generateSqlSafeName: {
229
+ replacement: 'relationshipSqlSafeName',
230
+ get: () => name => (isReservedTableName(name, 'sql') ? `e_${name}` : name),
231
+ },
232
+ isFilterableType: {
233
+ replacement: 'filterableField property',
234
+ get: () => fieldType => ![BYTES, BYTE_BUFFER].includes(fieldType),
235
+ },
236
+ getSpecificationBuilder: {
237
+ replacement: 'field.fieldJavaBuildSpecification || primaryKey.javaBuildSpecification',
238
+ get: () => getSpecificationBuildForType,
239
+ },
240
+ getColumnName: {
241
+ replacement: 'entityTableName || relationship.columnName',
242
+ get: () => hibernateSnakeCase,
243
+ },
244
+ isUsingBuiltInUser: {
245
+ replacement: 'generateBuiltInUserEntity',
246
+ get: ({ data }) => () => data.generateBuiltInUserEntity,
247
+ },
248
+ isUsingBuiltInAuthority: {
249
+ replacement: 'generateBuiltInAuthorityEntity',
250
+ get: ({ data }) => () => data.generateBuiltInAuthorityEntity,
251
+ },
252
+ jhipsterConfig: {
253
+ replacement: 'none',
254
+ get: ({ generator }) => generator.config?.getAll?.(),
255
+ },
256
+ configOptions: {
257
+ replacement: 'none',
258
+ get: () => ({}),
259
+ },
160
260
  };
161
261
  const ejsBuiltInProperties = ['__append', '__line', 'escapeFn', 'include', 'undefined'];
162
262
  const javascriptBuiltInProperties = ['parseInt', 'Boolean', 'JSON', 'Object', 'toString'];
163
- const getProperty = (context, prop) => {
263
+ const getPropertBuilder = ({ log = msg => console.log(msg) } = {}) => (context, prop) => {
164
264
  if (typeof prop === 'symbol') {
165
265
  return undefined;
166
266
  }
267
+ const { generator, data } = context;
268
+ const value = prop in data ? data[prop] : undefined;
167
269
  if (prop in deprecatedProperties) {
168
270
  const { replacement, get } = deprecatedProperties[prop];
169
- const value = get(context);
170
- console.log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(replacement)}. Value: ${value}`);
171
- return value;
271
+ const fallBackValue = get(context);
272
+ const valueDesc = prop in data ? `Value: ${value}, ` : '';
273
+ log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(replacement)}. ${valueDesc}FallbackValue: ${fallBackValue}`);
274
+ return value ?? fallBackValue;
172
275
  }
173
276
  if (prop?.startsWith?.('DOCKER_')) {
174
- console.log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(
175
- // eslint-disable-next-line no-template-curly-in-string
176
- 'dockerContainers.${dockerImage}')}.`);
277
+ const container = camelCase(prop.replace('DOCKER_', '').replace('_CONTAINER', ''));
278
+ log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(`dockerContainers.${container}`)}.`);
279
+ return value ?? data.dockerContainers[container];
177
280
  }
178
- const { generator, data } = context;
179
281
  if (prop in data) {
180
- return data[prop];
282
+ return value;
181
283
  }
182
284
  if (prop in generator) {
183
- console.log(`Template data ${chalk.yellow(String(prop))} is a generator property.`);
184
- console.log(`Change the template to '${chalk.yellow(`this.${String(prop)}`)}'`);
285
+ log(`Template data ${chalk.yellow(String(prop))} is a generator property.`);
286
+ log(`Change the template to '${chalk.yellow(`this.${String(prop)}`)}'`);
185
287
  return generator[prop];
186
288
  }
187
289
  // console.log(`Template data '${chalk.yellow(String(prop))}' not found. Check your data.`);
@@ -191,47 +293,48 @@ const getProperty = (context, prop) => {
191
293
  }
192
294
  return undefined;
193
295
  };
194
- const createHandler = ({ ignoreWarnings = false } = {}) => ({
195
- ...Object.fromEntries([
196
- 'apply',
197
- 'construct',
198
- 'defineProperty',
199
- 'deleteProperty',
200
- 'getOwnPropertyDescriptor',
201
- 'getPrototypeOf',
202
- 'isExtensible',
203
- 'ownKeys',
204
- 'preventExtensions',
205
- 'setPrototypeOf',
206
- 'set',
207
- ].map(method => [method, (...args) => console.log(`Fixme: template data called ${method}(${args?.pop() ?? ''})`)])),
208
- ownKeys: ({ data }) => {
209
- return Reflect.ownKeys(data);
210
- },
211
- getPrototypeOf: ({ data }) => {
212
- return Object.getPrototypeOf(data);
213
- },
214
- getOwnPropertyDescriptor: ({ data }, prop) => {
215
- return Object.getOwnPropertyDescriptor(data, prop);
216
- },
217
- has: (context, prop) => {
218
- if (ejsBuiltInProperties.includes(prop)) {
219
- return false;
220
- }
221
- if (javascriptBuiltInProperties.includes(prop)) {
222
- if (!ignoreWarnings) {
223
- console.log(`${chalk.yellow(prop)} is a javascript built in symbol, its use is discouraged inside templates`);
296
+ const createHandler = ({ log } = {}) => {
297
+ const getProperty = getPropertBuilder({ log });
298
+ return {
299
+ ...Object.fromEntries([
300
+ 'apply',
301
+ 'construct',
302
+ 'defineProperty',
303
+ 'deleteProperty',
304
+ 'getOwnPropertyDescriptor',
305
+ 'getPrototypeOf',
306
+ 'isExtensible',
307
+ 'ownKeys',
308
+ 'preventExtensions',
309
+ 'setPrototypeOf',
310
+ 'set',
311
+ ].map(method => [method, (...args) => console.log(`Fixme: template data called ${method}(${args?.pop() ?? ''})`)])),
312
+ ownKeys: ({ data }) => {
313
+ return Reflect.ownKeys(data);
314
+ },
315
+ getPrototypeOf: ({ data }) => {
316
+ return Object.getPrototypeOf(data);
317
+ },
318
+ getOwnPropertyDescriptor: ({ data }, prop) => {
319
+ return Object.getOwnPropertyDescriptor(data, prop);
320
+ },
321
+ has: (context, prop) => {
322
+ if (ejsBuiltInProperties.includes(prop)) {
323
+ return false;
224
324
  }
225
- return false;
226
- }
227
- const propValue = getProperty(context, prop);
228
- if (propValue === undefined) {
229
- return prop in context.data;
230
- }
231
- return propValue !== undefined;
232
- },
233
- get: getProperty,
234
- });
325
+ if (javascriptBuiltInProperties.includes(prop)) {
326
+ log(`${chalk.yellow(prop)} is a javascript built in symbol, its use is discouraged inside templates`);
327
+ return false;
328
+ }
329
+ const propValue = getProperty(context, prop);
330
+ if (propValue === undefined) {
331
+ return prop in context.data;
332
+ }
333
+ return propValue !== undefined;
334
+ },
335
+ get: getProperty,
336
+ };
337
+ };
235
338
  export default function createJHipster7Context(generator, data, options) {
236
339
  return new Proxy({ generator, data }, createHandler(options));
237
340
  }