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
@@ -1,10 +1,10 @@
1
1
  import { readdir } from 'node:fs/promises';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import BaseGenerator from 'generator-jhipster/generators/base';
4
- import command from './command.mjs';
5
4
 
6
5
  export default class extends BaseGenerator {
7
6
  sampleName;
7
+ all;
8
8
 
9
9
  constructor(args, opts, features) {
10
10
  super(args, opts, { ...features, jhipsterBootstrap: false });
@@ -26,15 +26,7 @@ export default class extends BaseGenerator {
26
26
  get [BaseGenerator.PROMPTING]() {
27
27
  return this.asPromptingTaskGroup({
28
28
  async askForSample() {
29
- if (!this.sampleName) {
30
- const answers = await this.prompt({
31
- type: 'list',
32
- name: 'sampleName',
33
- message: 'which sample do you want to generate?',
34
- choices: async () => readdir(this.templatePath('samples')),
35
- })
36
- this.sampleName = answers.sampleName;
37
- }
29
+ await this.promptCurrentJHipsterCommand();
38
30
  },
39
31
  });
40
32
  }
@@ -42,7 +34,11 @@ export default class extends BaseGenerator {
42
34
  get [BaseGenerator.WRITING]() {
43
35
  return this.asWritingTaskGroup({
44
36
  async copySample() {
45
- this.copyTemplate(`samples/${this.sampleName}`, this.sampleName, { noGlob: true });
37
+ if (this.all) {
38
+ this.copyTemplate('samples/*.jdl', '');
39
+ } else {
40
+ this.copyTemplate(`samples/${this.sampleName}`, this.sampleName, { noGlob: true });
41
+ }
46
42
  },
47
43
  });
48
44
  }
@@ -54,13 +50,13 @@ export default class extends BaseGenerator {
54
50
  const projectVersion = `${packageJson.version}-git`;
55
51
 
56
52
  await this.composeWithJHipster('jdl', {
57
- generatorArgs: [this.sampleName],
53
+ generatorArgs: this.all ? await readdir(this.templatePath('samples')) : [this.sampleName],
58
54
  generatorOptions: {
59
55
  skipJhipsterDependencies: true,
60
56
  insight: false,
61
57
  skipChecks: true,
62
- skipInstall: true,
63
58
  projectVersion,
59
+ ...(this.all ? { workspaces: true, monorepository: true } : { skipInstall: true }),
64
60
  },
65
61
  });
66
62
  },
@@ -0,0 +1,22 @@
1
+ import { readdir } from 'fs/promises';
2
+ import { RECOMMENDED_JAVA_VERSION, RECOMMENDED_NODE_VERSION } from 'generator-jhipster';
3
+ import { fromMatrix } from 'generator-jhipster/testing';
4
+
5
+ const defaultMatrix = {
6
+ os: ['ubuntu-latest'],
7
+ 'node-version': [RECOMMENDED_NODE_VERSION],
8
+ 'java-version': [RECOMMENDED_JAVA_VERSION],
9
+ 'default-environment': ['prod'],
10
+ };
11
+
12
+ export const buildMatrix = async samplesFolder => {
13
+ const samples = await readdir(samplesFolder);
14
+ return {
15
+ include: Object.values(
16
+ fromMatrix({
17
+ ...defaultMatrix,
18
+ 'sample-name': samples.filter(sample => !sample.includes('disabled')),
19
+ }),
20
+ ),
21
+ };
22
+ };
@@ -0,0 +1,20 @@
1
+ import { existsSync, appendFileSync } from 'node:fs';
2
+ import os from 'node:os';
3
+ import BaseGenerator from 'generator-jhipster/generators/base';
4
+ import { setGithubTaskOutput } from 'generator-jhipster/testing';
5
+ import { buildMatrix } from './build-matrix.mjs';
6
+
7
+ export default class extends BaseGenerator {
8
+ constructor(args, opts, features) {
9
+ super(args, opts, { ...features, jhipsterBootstrap: false });
10
+ }
11
+
12
+ get [BaseGenerator.WRITING]() {
13
+ return this.asWritingTaskGroup({
14
+ async buildMatrix() {
15
+ const matrix = await buildMatrix(this.templatePath('../../generate-sample/templates/samples'));
16
+ setGithubTaskOutput('matrix', matrix);
17
+ },
18
+ });
19
+ }
20
+ }
@@ -0,0 +1 @@
1
+ export { default } from './generator.mjs';
@@ -0,0 +1,39 @@
1
+ name: build-cache
2
+ on:
3
+ workflow_dispatch:
4
+ schedule:
5
+ - cron: '0 0 * * 0'
6
+ jobs:
7
+ build-cache:
8
+ runs-on: ubuntu-latest
9
+ defaults:
10
+ run:
11
+ working-directory: ${{ github.workspace }}/app
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ with:
15
+ path: generator-jhipster-<%= baseName %>
16
+ - uses: jhipster/actions/setup-runner@v0
17
+ with:
18
+ node-version: 20
19
+ binary-dir: ${{ github.workspace }}/generator-jhipster-<%= baseName %>/cli/
20
+ - uses: jhipster/actions/cache-npm-dependencies@v0
21
+ with:
22
+ generator-path: generator-jhipster-<%= baseName %>
23
+ if: always()
24
+ - run: cli.cjs generate-sample --all
25
+ continue-on-error: true
26
+ - run: npm run backend:build-cache --workspaces
27
+ continue-on-error: true
28
+ - uses: jhipster/actions/save-cache@v0
29
+ if: always()
30
+ with:
31
+ key: ${{ github.run_id }}
32
+ npm: true
33
+ maven: true
34
+ gradle: true
35
+ - uses: jhipster/actions/restore-cache@v0
36
+ with:
37
+ npm: true
38
+ maven: true
39
+ gradle: true
@@ -0,0 +1,105 @@
1
+ name: Verify Sample Projects
2
+ on:
3
+ push:
4
+ branches:
5
+ - 'main'
6
+ - '**maintenance'
7
+ paths-ignore:
8
+ - 'package*.json'
9
+ pull_request:
10
+ branches:
11
+ - '*'
12
+ permissions:
13
+ contents: read
14
+ jobs:
15
+ build-matrix:
16
+ runs-on: ubuntu-latest
17
+ outputs:
18
+ matrix: ${{ steps.build.outputs.matrix }}
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-node@v4
22
+ with:
23
+ node-version: <%- nodeVersion.split('.', 2)[0] %>
24
+ - id: build
25
+ run: |
26
+ npm install
27
+ ./cli/cli.cjs github-build-matrix
28
+ samples:
29
+ name: ${{ matrix.sample-name }}
30
+ runs-on: ubuntu-latest
31
+ needs: build-matrix
32
+ defaults:
33
+ run:
34
+ working-directory: ${{ github.workspace }}/app
35
+ timeout-minutes: 30
36
+ strategy:
37
+ fail-fast: false
38
+ matrix: ${{fromJson(needs.build-matrix.outputs.matrix)}}
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+ with:
42
+ path: generator-jhipster-<%= baseName %>
43
+ fetch-depth: 2
44
+ - uses: jhipster/actions/setup-runner@v0
45
+ with:
46
+ java-version: ${{ matrix.java-version }}
47
+ node-version: ${{ matrix.node-version }}
48
+ maven-cache: true
49
+ gradle-cache: true
50
+ binary-dir: ${{ github.workspace }}/generator-jhipster-<%= baseName %>/cli/
51
+ - name: 'Install blueprint'
52
+ run: npm install
53
+ working-directory: ${{ github.workspace }}/generator-jhipster-<%= baseName %>
54
+ - name: 'Generate Project'
55
+ run: cli.cjs generate-sample ${{ matrix.sample-name }} --skip-jhipster-dependencies --force
56
+ - uses: jhipster/actions/compare-sample@v0
57
+ id: compare
58
+ if: >-
59
+ github.event.pull_request &&
60
+ !contains(github.event.pull_request.labels.*.name, 'pr: disable-compare')
61
+ with:
62
+ generator-path: generator-jhipster-<%= baseName %>
63
+ cmd: cli.cjs generate-sample ${{ matrix.sample-name }} --skip-jhipster-dependencies --force --skip-install
64
+ - run: npm run ci:backend:test
65
+ if: steps.compare.outputs.equals != 'true'
66
+ id: backend
67
+ - run: npm run ci:frontend:test --if-present
68
+ if: steps.compare.outputs.equals != 'true'
69
+ - run: npm run ci:e2e:package
70
+ if: steps.compare.outputs.equals != 'true'
71
+ - run: npm run ci:e2e:prepare
72
+ if: steps.compare.outputs.equals != 'true'
73
+ - run: npm run ci:e2e:run --if-present
74
+ if: steps.compare.outputs.equals != 'true'
75
+ id: e2e
76
+ - name: 'BACKEND: Store failure logs'
77
+ uses: actions/upload-artifact@v4
78
+ if: always() && steps.backend.outcome == 'failure'
79
+ with:
80
+ name: log-${{ matrix.sample-name }}
81
+ path: |
82
+ ${{ github.workspace }}/app/build/test-results/**/*.xml
83
+ ${{ github.workspace }}/app/target/surefire-reports
84
+ - name: 'E2E: Store failure screenshots'
85
+ uses: actions/upload-artifact@v4
86
+ if: always() && steps.e2e.outcome == 'failure'
87
+ with:
88
+ name: screenshots-${{ matrix.sample-name }}
89
+ path: ${{ github.workspace }}/app/**/cypress/screenshots
90
+ - name: Dump docker logs
91
+ if: always()
92
+ uses: jwalton/gh-docker-logs@v2
93
+ check-samples:
94
+ permissions:
95
+ contents: none
96
+ runs-on: ubuntu-latest
97
+ needs: [samples]
98
+ if: always()
99
+ steps:
100
+ - run: |
101
+ echo '${{ toJSON(needs) }}'
102
+ if [ 'skipped' == '${{ needs.samples.result }}' ] || [ 'success' == '${{ needs.samples.result }}' ] || [ 'closed' == '${{ github.event.action }}' ]; then
103
+ exit 0
104
+ fi
105
+ exit 1
@@ -18,5 +18,5 @@
18
18
  -%>
19
19
  <&_ if (!fragment.section) { -&>
20
20
  # blueprint rules:
21
- **/templates/**/
21
+ generators/**/templates/**/
22
22
  <&_ } -&>
@@ -22,7 +22,7 @@
22
22
 
23
23
  [![NPM version][npm-image]][npm-url]
24
24
  [![Generator][github-generator-image]][github-generator-url]
25
- [![Integration Test][github-integration-image]][github-integration-url]
25
+ [![Samples][github-samples-image]][github-samples-url]
26
26
 
27
27
  # Introduction
28
28
 
@@ -30,9 +30,9 @@ This is a [JHipster](https://www.jhipster.tech/) blueprint, that is meant to be
30
30
 
31
31
  # Prerequisites
32
32
 
33
- As this is a [JHipster](https://www.jhipster.tech/) blueprint, we expect you have JHipster and its related tools already installed:
33
+ As this is a [JHipster](https://www.jhipster.tech/) blueprint, we expect you have JHipster basic knowledge:
34
34
 
35
- - [Installing JHipster](https://www.jhipster.tech/installation/)
35
+ - [JHipster](https://www.jhipster.tech/)
36
36
 
37
37
  # Installation
38
38
 
@@ -47,13 +47,21 @@ npm install -g generator-jhipster-<%= baseName %>
47
47
  To use this blueprint, run the below command
48
48
 
49
49
  ```bash
50
+ <%_ if (cli) { _%>
51
+ <%= cliName %>
52
+ <%_ } else { _%>
50
53
  jhipster --blueprints <%= baseName %>
54
+ <%_ } _%>
51
55
  ```
52
56
 
53
57
  You can look for updated <%= baseName %> blueprint specific options by running
54
58
 
55
59
  ```bash
60
+ <%_ if (cli) { _%>
61
+ <%= cliName %> app --help
62
+ <%_ } else { _%>
56
63
  jhipster app --blueprints <%= baseName %> --help
64
+ <%_ } _%>
57
65
  ```
58
66
 
59
67
  And looking for `(blueprint option: <%= baseName %>)` like
@@ -63,13 +71,13 @@ And looking for `(blueprint option: <%= baseName %>)` like
63
71
  To use an unreleased version, install it using git.
64
72
 
65
73
  ```bash
66
- npm install -g jhipster/generator-jhipster-<%= baseName %>#main
74
+ npm install -g <%= githubRepository %>#main
67
75
  jhipster --blueprints <%= baseName %> --skip-jhipster-dependencies
68
76
  ```
69
77
 
70
78
  [npm-image]: https://img.shields.io/npm/v/generator-jhipster-<%= baseName %>.svg
71
79
  [npm-url]: https://npmjs.org/package/generator-jhipster-<%= baseName %>
72
- [github-generator-image]: https://github.com/jhipster/generator-jhipster-<%= baseName %>/actions/workflows/generator.yml/badge.svg
73
- [github-generator-url]: https://github.com/jhipster/generator-jhipster-<%= baseName %>/actions/workflows/generator.yml
74
- [github-integration-image]: https://github.com/jhipster/generator-jhipster-<%= baseName %>/actions/workflows/integration.yml/badge.svg
75
- [github-integration-url]: https://github.com/jhipster/generator-jhipster-<%= baseName %>/actions/workflows/integration.yml
80
+ [github-generator-image]: https://github.com/<%= githubRepository %>/actions/workflows/generator.yml/badge.svg
81
+ [github-generator-url]: https://github.com/<%= githubRepository %>/actions/workflows/generator.yml
82
+ [github-samples-image]: https://github.com/<%= githubRepository %>/actions/workflows/samples.yml/badge.svg
83
+ [github-samples-url]: https://github.com/<%= githubRepository %>/actions/workflows/samples.yml
@@ -0,0 +1,33 @@
1
+ <%#
2
+ Copyright 2013-2024 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ import globals from 'globals';
20
+ import prettierRecommended from 'eslint-plugin-prettier/recommended';
21
+ import jhipsterRecommended from 'generator-jhipster/eslint/recommended';
22
+
23
+ export default [
24
+ {
25
+ languageOptions: {
26
+ globals: {
27
+ ...globals.node,
28
+ },
29
+ },
30
+ },
31
+ jhipsterRecommended,
32
+ prettierRecommended,
33
+ ];
@@ -5,5 +5,6 @@ export default defineConfig({
5
5
  pool: 'forks',
6
6
  hookTimeout: 20000,
7
7
  exclude: [...defaultExclude.filter(val => val !== '**/cypress/**'), '**/templates/**', '**/resources/**'],
8
+ setupFiles: ['./vitest.test-setup.ts'],
8
9
  },
9
10
  });
@@ -21,10 +21,10 @@ import { join } from 'path';
21
21
  import { fileURLToPath } from 'url';
22
22
  export const BLUEPRINT_API_VERSION = 'jhipster-8';
23
23
  // jhipster-bom version
24
- export const JHIPSTER_DEPENDENCIES_VERSION = '8.4.0';
24
+ export const JHIPSTER_DEPENDENCIES_VERSION = '8.6.0';
25
25
  // Version of Java
26
26
  export const JAVA_VERSION = '17';
27
- export const JAVA_COMPATIBLE_VERSIONS = ['17', '18', '19', '20', '21'];
27
+ export const JAVA_COMPATIBLE_VERSIONS = ['17', '18', '19', '20', '21', '22'];
28
28
  // Force spring milestone repository. Spring Boot milestones are detected.
29
29
  export const ADD_SPRING_MILESTONE_REPOSITORY = false;
30
30
  // Version of Node, NPM
@@ -1,5 +1,5 @@
1
1
  distributionBase=GRADLE_USER_HOME
2
2
  distributionPath=wrapper/dists
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
4
4
  zipStoreBase=GRADLE_USER_HOME
5
5
  zipStorePath=wrapper/dists
@@ -476,7 +476,7 @@ export default class HerokuGenerator extends BaseGenerator {
476
476
  * @param {string} other - explicit other thing: build, dependencies...
477
477
  */
478
478
  addMavenProfile(profileId, other) {
479
- createPomStorage(this).addProfile({ id: profileId, content: other });
479
+ createPomStorage(this, { sortFile: false }).addProfile({ id: profileId, content: other });
480
480
  }
481
481
  /**
482
482
  * @param {string} command
@@ -121,9 +121,7 @@ export default class InfoGenerator extends BaseApplicationGenerator {
121
121
  this.getExistingEntities().forEach(entity => {
122
122
  entities.set(entity.name, entity.definition);
123
123
  });
124
- jdlObject = JSONToJDLEntityConverter.convertEntitiesToJDL({
125
- entities,
126
- });
124
+ jdlObject = JSONToJDLEntityConverter.convertEntitiesToJDL(entities);
127
125
  JSONToJDLOptionConverter.convertServerOptionsToJDL({ 'generator-jhipster': this.config.getAll() }, jdlObject);
128
126
  }
129
127
  catch (error) {
@@ -0,0 +1,60 @@
1
+ import { GENERATOR_JHIPSTER } from '../../generator-constants.js';
2
+ export const extractDataFromInfo = (info) => {
3
+ const regexp = /<summary>(?<title>(?:(?!<\/summary>).)+)<\/summary>\s+<pre>(?<body>(?:(?!<\/pre>).)+)/gs;
4
+ let yoRcContent;
5
+ let jdlEntitiesDefinitions;
6
+ let jdlDefinitions;
7
+ let workspacesFolders;
8
+ const files = [];
9
+ for (const match of info.matchAll(regexp)) {
10
+ const { title, body } = match.groups ?? {};
11
+ if (title?.trim() && body?.trim()) {
12
+ if (title.includes('.yo-rc.json file')) {
13
+ if (title.includes(' for ')) {
14
+ const folder = title.split(' for ')[1].trim();
15
+ files.push({ filename: `${folder}/.yo-rc.json`, content: body.trim() });
16
+ }
17
+ else {
18
+ yoRcContent = body.trim();
19
+ }
20
+ }
21
+ else if (title.includes('JDL entity definitions')) {
22
+ jdlEntitiesDefinitions = body.trim();
23
+ }
24
+ else if (title.includes('JDL definitions')) {
25
+ // JDL definitions can be be a placehoder
26
+ if (body.includes('application')) {
27
+ jdlDefinitions = body.trim();
28
+ }
29
+ }
30
+ }
31
+ }
32
+ let yoRcBlank = true;
33
+ let yoRcValid = false;
34
+ if (yoRcContent) {
35
+ yoRcBlank = false;
36
+ try {
37
+ let content = JSON.parse(yoRcContent);
38
+ content = GENERATOR_JHIPSTER in content ? content : { [GENERATOR_JHIPSTER]: content };
39
+ workspacesFolders = content[GENERATOR_JHIPSTER].appsFolders;
40
+ yoRcContent = JSON.stringify(content);
41
+ yoRcValid = true;
42
+ }
43
+ catch (error) {
44
+ // eslint-disable-next-line no-console
45
+ console.log('Invalid .yo-rc.json file', error);
46
+ }
47
+ }
48
+ if (jdlDefinitions) {
49
+ files.push({ filename: 'app.jdl', content: jdlDefinitions });
50
+ yoRcContent = undefined;
51
+ jdlEntitiesDefinitions = undefined;
52
+ }
53
+ if (jdlEntitiesDefinitions) {
54
+ files.push({ filename: 'entities.jdl', content: jdlEntitiesDefinitions });
55
+ }
56
+ if (yoRcContent) {
57
+ files.push({ filename: '.yo-rc.json', content: yoRcContent });
58
+ }
59
+ return { yoRcContent, jdlEntitiesDefinitions, jdlDefinitions, yoRcBlank, yoRcValid, files, workspacesFolders };
60
+ };
@@ -17,3 +17,4 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  export * from './utils.js';
20
+ export * from './extract-info.js';
@@ -101,8 +101,8 @@ export default class InitGenerator extends BaseApplicationGenerator {
101
101
  addPrettierDependencies({ application }) {
102
102
  this.packageJson.merge({
103
103
  scripts: {
104
- 'prettier-check': 'prettier --check "{,**/}*.{md,json,yml,html,js,ts,tsx,css,scss,vue,java}"',
105
- 'prettier-format': 'prettier --write "{,**/}*.{md,json,yml,html,js,ts,tsx,css,scss,vue,java}"',
104
+ 'prettier-check': 'prettier --check "{,**/}*.{md,json,yml,html,cjs,mjs,js,cts,mts,ts,tsx,css,scss,vue,java}"',
105
+ 'prettier-format': 'prettier --write "{,**/}*.{md,json,yml,html,cjs,mjs,js,cts,mts,ts,tsx,css,scss,vue,java}"',
106
106
  },
107
107
  devDependencies: {
108
108
  prettier: application.nodeDependencies.prettier,
@@ -1 +1 @@
1
- 20.12.2
1
+ 20.15.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "husky": "7.0.2",
4
- "lint-staged": "11.0.0"
3
+ "husky": "9.0.11",
4
+ "lint-staged": "15.2.7"
5
5
  }
6
6
  }
@@ -19,7 +19,7 @@
19
19
  import { isFileStateModified } from 'mem-fs-editor/state';
20
20
  import BaseApplicationGenerator from '../../../base-application/index.js';
21
21
  import { JAVA_COMPATIBLE_VERSIONS } from '../../../generator-constants.js';
22
- import { packageInfoTransform, generatedAnnotationTransform, checkJava, isReservedJavaKeyword, matchMainJavaFiles, javaMainPackageTemplatesBlock, } from '../../support/index.js';
22
+ import { packageInfoTransform, generatedAnnotationTransform, checkJava, isReservedJavaKeyword, matchMainJavaFiles, javaMainPackageTemplatesBlock, addJavaImport, addJavaAnnotation, } from '../../support/index.js';
23
23
  export default class BootstrapGenerator extends BaseApplicationGenerator {
24
24
  packageInfoFile;
25
25
  async beforeQueue() {
@@ -87,6 +87,9 @@ export default class BootstrapGenerator extends BaseApplicationGenerator {
87
87
  source.hasJavaProperty = (property) => application.javaProperties[property] !== undefined;
88
88
  source.hasJavaManagedProperty = (property) => application.javaManagedProperties[property] !== undefined;
89
89
  },
90
+ needles({ source }) {
91
+ source.editJavaFile = (file, { staticImports = [], imports = [], annotations = [] }, ...editFileCallback) => this.editFile(file, ...staticImports.map(classPath => addJavaImport(classPath, { staticImport: true })), ...imports.map(classPath => addJavaImport(classPath)), ...annotations.map(annotation => addJavaAnnotation(annotation)), ...editFileCallback);
92
+ },
90
93
  });
91
94
  }
92
95
  get [BaseApplicationGenerator.PREPARING]() {
@@ -102,7 +105,7 @@ export default class BootstrapGenerator extends BaseApplicationGenerator {
102
105
  application.domains = entityPackages;
103
106
  },
104
107
  generatedAnnotation({ application }) {
105
- if (this.jhipsterConfig.withGeneratedFlag) {
108
+ if (this.jhipsterConfig.withGeneratedFlag && application.backendTypeJavaAny) {
106
109
  this.queueTransformStream({
107
110
  name: 'adding @GeneratedByJHipster annotations',
108
111
  filter: file => isFileStateModified(file) && file.path.startsWith(this.destinationPath()) && file.path.endsWith('.java'),
@@ -111,6 +114,8 @@ export default class BootstrapGenerator extends BaseApplicationGenerator {
111
114
  }
112
115
  },
113
116
  generatedPackageInfo({ application }) {
117
+ if (!application.backendTypeJavaAny)
118
+ return;
114
119
  const { srcMainJava } = application;
115
120
  if (this.packageInfoFile && srcMainJava) {
116
121
  const mainPackageMatch = matchMainJavaFiles(srcMainJava);
@@ -145,6 +150,8 @@ export default class BootstrapGenerator extends BaseApplicationGenerator {
145
150
  get writing() {
146
151
  return this.asWritingTaskGroup({
147
152
  async writing({ application }) {
153
+ if (!application.backendTypeJavaAny)
154
+ return;
148
155
  await this.writeFiles({
149
156
  blocks: [
150
157
  javaMainPackageTemplatesBlock({
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { buildToolTypes } from '../../../../jdl/index.js';
20
- import { GENERATOR_GRADLE } from '../../../generator-list.js';
20
+ import { GENERATOR_GRADLE, GENERATOR_MAVEN } from '../../../generator-list.js';
21
21
  const { GRADLE, MAVEN } = buildToolTypes;
22
22
  const command = {
23
23
  options: {},
@@ -31,12 +31,15 @@ const command = {
31
31
  type: 'list',
32
32
  message: 'Would you like to use Maven or Gradle for building the backend?',
33
33
  },
34
- choices: [MAVEN, GRADLE],
34
+ choices: [
35
+ { name: 'Maven', value: MAVEN },
36
+ { name: 'Gradle', value: GRADLE },
37
+ ],
35
38
  default: MAVEN,
36
39
  description: 'Provide build tool for the application when skipping server side generation',
37
40
  scope: 'storage',
38
41
  },
39
42
  },
40
- import: [GENERATOR_GRADLE],
43
+ import: [GENERATOR_GRADLE, GENERATOR_MAVEN],
41
44
  };
42
45
  export default command;
@@ -134,7 +134,7 @@ public class <%= persistClass %> <&- fragments.extendsSection() -&>implements Se
134
134
 
135
135
  <%_
136
136
  // An embedded entity should not reference entities that embed it, unless the other entities are also embedded
137
- for (relationship of relationships.filter(relationship => !relationship.embedded || relationship.otherEntity.embedded || relationship.ownerSide)) {
137
+ for (relationship of relationships) {
138
138
  if (typeof relationship.fieldApiDescription) { _%>
139
139
  <%- relationship.relationshipJavadoc %>
140
140
  <%_ if (!dtoMapstruct && relationship.relationshipyApiDescription) { _%>
@@ -223,10 +223,6 @@ for (relationship of relationships.filter(relationship => !relationship.embedded
223
223
  <&- fragments.classAdditionalFieldsMethodsSection('\n\n') -&>
224
224
  <%_
225
225
  for (const relationship of relationships) {
226
- // An embedded entity should not reference entities that embed it, unless the other entities are also embedded
227
- if (embedded && !relationship.otherEntity.embedded && !relationship.ownerSide) {
228
- continue;
229
- }
230
226
  _%>
231
227
  <%_ if (relationship.collection) { _%>
232
228
  public Set<<%= relationship.otherEntity.persistClass %>> get<%= relationship.relationshipNameCapitalizedPlural %>() {
@@ -78,7 +78,7 @@ public class <%= persistClass %>Asserts {
78
78
  <%_ for (const field of fields.filter(field => !field.transient && field.autoGenerate)) { _%>
79
79
  .satisfies(e -> assertThat(e.get<%- field.fieldInJavaBeanMethod %>()).as("check <%- field.propertyName %>").isEqualTo(actual.get<%- field.fieldInJavaBeanMethod %>()))
80
80
  <%_ } _%>
81
- <%_ for (const relationship of relationships.filter(relationship => relationship.autoGenerate && !relationship.otherEntity.builtInUser)) { _%>
81
+ <%_ for (const relationship of relationships.filter(relationship => (!embedded || relationship.otherEntity.embedded) && relationship.autoGenerate && !relationship.otherEntity.builtInUser)) { _%>
82
82
  .satisfies(e -> assertThat(e.get<%- relationship.propertyJavaBeanName %>()).as("check <%- relationship.propertyName %>").isEqualTo(actual.get<%- relationship.propertyJavaBeanName %>()))
83
83
  <%_ } _%>
84
84
  ;
@@ -121,10 +121,10 @@ public class <%= persistClass %>Asserts {
121
121
  <%_ if (relationships.some(relationship => relationship.persistableRelationship && !relationship.id && !relationship.autoGenerate && !relationship.otherEntity.builtInUser)) { _%>
122
122
  assertThat(expected)
123
123
  .as("Verify <%- persistClass %> relationships")
124
- <%_ for (const relationship of relationships.filter(relationship => relationship.persistableRelationship && !relationship.id && !relationship.autoGenerate && !relationship.otherEntity.builtInUser)) { _%>
124
+ <%_ for (const relationship of relationships.filter(relationship => (!embedded || relationship.otherEntity.embedded) && relationship.persistableRelationship && !relationship.id && !relationship.autoGenerate && !relationship.otherEntity.builtInUser)) { _%>
125
125
  .satisfies(e -> assertThat(e.get<%- relationship.propertyJavaBeanName %>()).as("check <%- relationship.propertyName %>").isEqualTo(actual.get<%- relationship.propertyJavaBeanName %>()))
126
126
  <%_ } _%>
127
127
  ;
128
128
  <%_ } _%>
129
129
  }
130
- }
130
+ }
@@ -53,7 +53,7 @@ class <%= persistClass %>Test {
53
53
  <%_if (!updatableEntity) { _%>
54
54
 
55
55
  @Test
56
- void hashCodeVerifier() throws Exception {
56
+ void hashCodeVerifier() {
57
57
  <%= persistClass %> <%= persistInstance %> = new <%= persistClass %>();
58
58
  assertThat(<%= persistInstance %>.hashCode()).isZero();
59
59
 
@@ -62,10 +62,10 @@ class <%= persistClass %>Test {
62
62
  assertThat(<%= persistInstance %>).hasSameHashCodeAs(<%= persistInstance %>1);
63
63
  }
64
64
  <%_ } _%>
65
- <%_ for (const relationship of relationships.filter(relationship => !relationship.otherEntity.builtIn)) { _%>
65
+ <%_ for (const relationship of relationships.filter(rel => !rel.otherEntity.builtIn && (!embedded || (rel.otherEntity.embedded && rel.ownerSide)))) { _%>
66
66
 
67
67
  @Test
68
- void <%- relationship.relationshipName %>Test() throws Exception {
68
+ void <%- relationship.relationshipName %>Test() {
69
69
  <%= persistClass %> <%= persistInstance %> = get<%= persistClass %>RandomSampleGenerator();
70
70
  <%= relationship.otherEntity.persistClass %> <%= relationship.otherEntity.persistInstance %>Back = get<%= relationship.otherEntity.persistClass %>RandomSampleGenerator();
71
71
  <%_ if (relationship.collection) { _%>