generator-jhipster 8.0.0-rc.1 → 8.1.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 (369) hide show
  1. package/README.md +71 -58
  2. package/dist/cli/environment-builder.mjs +14 -7
  3. package/dist/cli/jhipster-command.mjs +7 -3
  4. package/dist/cli/program.mjs +2 -2
  5. package/dist/generators/angular/cleanup.mjs +7 -0
  6. package/dist/generators/angular/files-angular.mjs +3 -4
  7. package/dist/generators/angular/generator.mjs +10 -22
  8. package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
  9. package/dist/generators/angular/resources/package.json +25 -24
  10. package/dist/generators/angular/support/translate-angular.mjs +2 -2
  11. package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
  12. package/dist/generators/angular/templates/angular.json.ejs +3 -7
  13. package/dist/generators/angular/templates/package.json.ejs +4 -8
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
  43. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
  44. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
  45. package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
  46. package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
  48. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
  49. package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
  50. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
  51. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
  52. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
  53. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +44 -35
  54. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +1 -1
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
  58. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
  59. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
  60. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
  61. package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
  62. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
  63. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
  64. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
  65. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
  66. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
  67. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
  68. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +1 -1
  69. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  70. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
  71. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
  72. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
  73. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
  74. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
  75. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
  76. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
  77. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
  78. package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
  79. package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
  80. package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +48 -126
  81. package/dist/generators/app/README.md +108 -0
  82. package/dist/generators/app/USAGE +3 -0
  83. package/dist/generators/app/command.mjs +3 -3
  84. package/dist/generators/app/generator.mjs +11 -0
  85. package/dist/generators/app/support/config.mjs +3 -3
  86. package/dist/generators/base/command.mjs +0 -11
  87. package/dist/generators/base/generator.mjs +0 -3
  88. package/dist/generators/base/support/config.mjs +6 -6
  89. package/dist/generators/base/support/jhipster7-context.mjs +3 -3
  90. package/dist/generators/base-application/generator.mjs +7 -8
  91. package/dist/generators/base-application/support/entities.mjs +2 -2
  92. package/dist/generators/base-application/support/enum.mjs +1 -1
  93. package/dist/generators/base-application/support/index.mjs +1 -0
  94. package/dist/generators/base-application/support/prepare-entity.mjs +14 -11
  95. package/dist/generators/base-application/support/prepare-field.mjs +11 -7
  96. package/dist/generators/base-application/support/prepare-relationship.mjs +16 -14
  97. package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
  98. package/dist/generators/base-core/generator.mjs +17 -4
  99. package/dist/generators/base-entity-changes/generator.mjs +1 -1
  100. package/dist/generators/base-workspaces/internal/docker-prompts.mjs +13 -12
  101. package/dist/generators/bootstrap/command.mjs +6 -0
  102. package/dist/generators/bootstrap/generator.mjs +84 -45
  103. package/dist/generators/bootstrap/support/auto-crlf-transform.mjs +34 -21
  104. package/dist/generators/bootstrap/support/eslint-transform.mjs +2 -5
  105. package/dist/generators/bootstrap/support/java-unused-imports-transform.mjs +2 -2
  106. package/dist/generators/bootstrap/support/multi-step-transform/index.mjs +17 -28
  107. package/dist/generators/bootstrap/support/multi-step-transform/template-file-fs.mjs +12 -6
  108. package/dist/generators/bootstrap/support/multi-step-transform/template-file.mjs +1 -0
  109. package/dist/generators/bootstrap/support/prettier-support.mjs +2 -2
  110. package/dist/generators/bootstrap-application/generator.mjs +10 -21
  111. package/dist/generators/bootstrap-application-base/command.mjs +30 -0
  112. package/dist/generators/bootstrap-application-base/generator.mjs +36 -11
  113. package/dist/generators/bootstrap-application-base/index.mjs +1 -0
  114. package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
  115. package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
  116. package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
  117. package/dist/generators/bootstrap-application-server/generator.mjs +2 -2
  118. package/dist/generators/client/command.mjs +2 -0
  119. package/dist/generators/client/resources/package.json +4 -4
  120. package/dist/generators/client/support/entity-definition.mjs +3 -3
  121. package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
  122. package/dist/generators/client/templates/src/main/webapp/content/css/loading.css.ejs +1 -1
  123. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
  124. package/dist/generators/client/templates/webpack/webpack.microfrontend.js.jhi.ejs +14 -1
  125. package/dist/generators/common/command.mjs +2 -0
  126. package/dist/generators/common/files.mjs +1 -1
  127. package/dist/generators/common/generator.mjs +29 -7
  128. package/dist/generators/common/resources/package.json +4 -4
  129. package/dist/generators/common/templates/.lintstagedrc.cjs.ejs +21 -0
  130. package/dist/generators/common/templates/.prettierrc.ejs +1 -1
  131. package/dist/generators/common/templates/README.md.jhi.ejs +2 -0
  132. package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
  133. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/settings-page.cy.ts.ejs +3 -0
  134. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
  135. package/dist/generators/docker/generator.mjs +1 -1
  136. package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
  137. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
  138. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
  139. package/dist/generators/docker-compose/generator.mjs +4 -11
  140. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
  141. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
  142. package/dist/generators/entity/prompts.mjs +123 -306
  143. package/dist/generators/export-jdl/generator.mjs +1 -1
  144. package/dist/generators/feign-client/cleanup.mjs +12 -0
  145. package/dist/generators/feign-client/files.mjs +35 -0
  146. package/dist/generators/feign-client/generator.mjs +65 -0
  147. package/dist/generators/feign-client/index.mjs +19 -0
  148. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
  149. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
  150. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
  151. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
  152. package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
  153. package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
  154. package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
  155. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
  156. package/dist/generators/generate-blueprint/command.mjs +1 -1
  157. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  158. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
  159. package/dist/generators/generator-constants.mjs +11 -7
  160. package/dist/generators/generator-list.mjs +1 -0
  161. package/dist/generators/git/generator.mjs +3 -5
  162. package/dist/generators/gradle/constants.mjs +1 -1
  163. package/dist/generators/heroku/generator.mjs +318 -595
  164. package/dist/generators/heroku/templates/Procfile.ejs +1 -1
  165. package/dist/generators/heroku/templates/application-heroku.yml.ejs +0 -12
  166. package/dist/generators/info/generator.mjs +6 -4
  167. package/dist/generators/init/generator.mjs +2 -2
  168. package/dist/generators/java/command.mjs +6 -0
  169. package/dist/generators/java/entity-files.mjs +5 -1
  170. package/dist/generators/java/generator.mjs +15 -15
  171. package/dist/generators/java/support/package-info-transform.mjs +20 -6
  172. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +24 -28
  173. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
  174. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/enumeration/_enumName_.java.ejs +3 -3
  175. package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +86 -8
  176. package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +85 -0
  177. package/dist/generators/jdl/generator.mjs +32 -28
  178. package/dist/generators/kubernetes/templates/ingress.yml.ejs +0 -1
  179. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
  180. package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
  181. package/dist/generators/languages/command.mjs +5 -0
  182. package/dist/generators/languages/generator.mjs +44 -28
  183. package/dist/generators/languages/prompts.mjs +3 -1
  184. package/dist/generators/languages/support/translate.mjs +1 -1
  185. package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
  186. package/dist/generators/languages/translation-data.mjs +8 -13
  187. package/dist/generators/liquibase/README.md +19 -0
  188. package/dist/generators/liquibase/generator.mjs +7 -3
  189. package/dist/generators/project-name/generator.mjs +14 -19
  190. package/dist/generators/project-name/support/name-resolver.mjs +35 -6
  191. package/dist/generators/react/generator.mjs +18 -10
  192. package/dist/generators/react/resources/package.json +30 -29
  193. package/dist/generators/react/templates/package.json.ejs +4 -5
  194. package/dist/generators/react/templates/src/main/webapp/app/config/icon-loader.ts.ejs +35 -33
  195. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
  196. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
  197. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +19 -15
  198. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +1 -1
  199. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
  200. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
  201. package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  202. package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +9 -2
  203. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header-components.tsx.ejs +1 -1
  204. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +6 -5
  205. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +10 -1
  206. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
  207. package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
  208. package/dist/generators/react/templates/tsconfig.test.json.ejs +1 -1
  209. package/dist/generators/react/templates/webpack/webpack.microfrontend.js.jhi.react.ejs +13 -58
  210. package/dist/generators/server/cleanup.mjs +5 -0
  211. package/dist/generators/server/command.mjs +13 -2
  212. package/dist/generators/server/entity-files.mjs +3 -3
  213. package/dist/generators/server/files.mjs +2 -38
  214. package/dist/generators/server/generator.mjs +48 -23
  215. package/dist/generators/server/jdl/application-definition.mjs +5 -2
  216. package/dist/generators/server/options/feign-client.mjs +24 -0
  217. package/dist/generators/server/options/index.mjs +1 -0
  218. package/dist/generators/server/resources/Dockerfile +19 -19
  219. package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
  220. package/dist/generators/server/resources/pom.xml +18 -18
  221. package/dist/generators/server/support/config.mjs +5 -4
  222. package/dist/generators/server/support/prepare-entity.mjs +9 -6
  223. package/dist/generators/server/support/prepare-field.mjs +20 -0
  224. package/dist/generators/server/support/relationship.mjs +2 -1
  225. package/dist/generators/server/support/templates/field-values.mjs +5 -2
  226. package/dist/generators/server/templates/README.md.jhi.spring-boot.ejs +0 -1
  227. package/dist/generators/server/templates/build.gradle.ejs +1 -2
  228. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
  229. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
  230. package/dist/generators/server/templates/package.json.ejs +0 -5
  231. package/dist/generators/server/templates/pom.xml.ejs +2 -12
  232. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +8 -8
  233. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
  234. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
  235. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +2 -2
  236. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
  237. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +14 -14
  238. package/dist/generators/server/templates/src/main/java/_package_/config/JacksonConfiguration.java.ejs +2 -1
  239. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +21 -3
  240. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +6 -1
  241. package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
  242. package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -6
  243. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
  244. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
  245. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
  246. package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +6 -7
  247. package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -8
  248. package/dist/generators/server/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +4 -7
  249. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
  250. package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
  251. package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +11 -11
  252. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +4 -4
  253. package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
  254. package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
  255. package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
  256. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
  257. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
  258. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
  259. package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
  260. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
  261. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -3
  262. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
  263. package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
  264. package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +3 -37
  265. package/dist/generators/spring-data-relational/README.md +7 -0
  266. package/dist/generators/spring-data-relational/generator.mjs +2 -1
  267. package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
  268. package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
  269. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
  270. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
  271. package/dist/generators/upgrade/generator.mjs +3 -3
  272. package/dist/generators/vue/generator.mjs +25 -16
  273. package/dist/generators/vue/resources/package.json +29 -28
  274. package/dist/generators/vue/templates/package.json.ejs +4 -5
  275. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +10 -3
  276. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +3 -4
  277. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
  278. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
  279. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
  280. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
  281. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +1 -1
  282. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +14 -7
  283. package/dist/generators/vue/templates/src/main/webapp/app/router/index.ts.ejs +8 -1
  284. package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +19 -34
  285. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
  286. package/dist/jdl/converters/jdl-to-json/jdl-to-json-option-converter.js +2 -2
  287. package/dist/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +1 -1
  288. package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +1 -1
  289. package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
  290. package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
  291. package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -17
  292. package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
  293. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
  294. package/dist/jdl/exporters/applications/jhipster-application-formatter.js +17 -1
  295. package/dist/jdl/exporters/config.js +11 -0
  296. package/dist/jdl/exporters/export-utils.js +2 -13
  297. package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
  298. package/dist/jdl/index.js +1 -0
  299. package/dist/jdl/jdl-importer.js +6 -2
  300. package/dist/jdl/jhipster/default-application-options.js +1 -1
  301. package/dist/jdl/jhipster/field-types.js +1 -1
  302. package/dist/jdl/jhipster/json-entity.js +6 -0
  303. package/dist/jdl/models/jdl-application-configuration-factory.js +34 -2
  304. package/dist/jdl/models/jdl-application-configuration.js +6 -3
  305. package/dist/jdl/models/jdl-application-factory.js +2 -2
  306. package/dist/jdl/models/jdl-application.js +12 -3
  307. package/dist/jdl/models/jdl-entity.js +16 -1
  308. package/dist/jdl/models/jdl-field.js +13 -0
  309. package/dist/jdl/models/jdl-object.js +3 -3
  310. package/dist/jdl/models/jdl-relationship.js +23 -5
  311. package/dist/jdl/parsing/jdl-ast-builder-visitor.js +63 -7
  312. package/dist/jdl/parsing/jdl-parser.js +52 -6
  313. package/dist/jdl/parsing/lexer/application-tokens.js +2 -2
  314. package/dist/jdl/validators/entity-validator.js +4 -2
  315. package/dist/jdl/validators/enum-validator.js +4 -2
  316. package/dist/jdl/validators/jdl-with-application-validator.js +18 -8
  317. package/dist/jdl/validators/jdl-without-application-validator.js +30 -29
  318. package/dist/jdl/validators/validator.js +1 -1
  319. package/dist/testing/helpers.mjs +10 -3
  320. package/dist/types/cli/environment-builder.d.mts +2 -0
  321. package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
  322. package/dist/types/generators/base/api.d.mts +12 -0
  323. package/dist/types/generators/base/support/config.d.mts +3 -3
  324. package/dist/types/generators/base/support/needles.d.mts +1 -1
  325. package/dist/types/generators/base-application/generator.d.mts +2 -2
  326. package/dist/types/generators/base-application/support/index.d.mts +1 -0
  327. package/dist/types/generators/base-application/support/prepare-entity.d.mts +6 -1
  328. package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
  329. package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
  330. package/dist/types/generators/base-core/generator.d.mts +7 -1
  331. package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +3 -2
  332. package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +3 -20
  333. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +15 -9
  334. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +1 -0
  335. package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
  336. package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
  337. package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
  338. package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
  339. package/dist/types/generators/feign-client/types-export.d.ts +1 -0
  340. package/dist/types/generators/generator-constants.d.mts +52 -48
  341. package/dist/types/generators/generator-list.d.mts +1 -0
  342. package/dist/types/generators/java/support/package-info-transform.d.mts +1 -4
  343. package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
  344. package/dist/types/generators/server/options/feign-client.d.mts +21 -0
  345. package/dist/types/generators/server/options/index.d.mts +1 -0
  346. package/dist/types/generators/server/support/templates/field-values.d.mts +1 -1
  347. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
  348. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
  349. package/dist/types/jdl/exporters/config.d.ts +1 -0
  350. package/dist/types/jdl/index.d.ts +1 -0
  351. package/dist/types/jdl/jdl-importer.d.ts +1 -0
  352. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
  353. package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -0
  354. package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +2 -2
  355. package/dist/types/jdl/models/jdl-application-configuration.d.ts +8 -6
  356. package/dist/types/jdl/models/jdl-application-factory.d.ts +1 -1
  357. package/dist/types/jdl/models/jdl-application.d.ts +8 -4
  358. package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
  359. package/dist/types/jdl/models/jdl-object.d.ts +1 -1
  360. package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
  361. package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +1 -1
  362. package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +10 -0
  363. package/dist/types/jdl/parsing/jdl-parser.d.ts +3 -0
  364. package/dist/types/jdl/parsing/lexer/application-tokens.d.ts +1 -0
  365. package/dist/types/jdl/types/types.d.mts +2 -2
  366. package/dist/types/jdl/validators/entity-validator.d.ts +2 -2
  367. package/dist/types/jdl/validators/enum-validator.d.ts +2 -2
  368. package/dist/types/jdl/validators/validator.d.ts +4 -1
  369. package/package.json +41 -41
@@ -16,138 +16,60 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
19
+ const { withModuleFederationPlugin } = require('@angular-architects/module-federation/webpack');
20
20
  const packageJson = require('../package.json');
21
- const appVersion = packageJson.version;
21
+ // Microfrontend api, should match across gateway and microservices.
22
+ const apiVersion = '0.0.1';
23
+
24
+ const sharedDefaults = { singleton: true, strictVersion: true, requiredVersion: apiVersion };
25
+ const shareAllDefaults = { ...sharedDefaults, requiredVersion: 'auto' }
26
+ const shareMappings = (...mappings) => Object.fromEntries(mappings.map(map => [map, { ...sharedDefaults, version: apiVersion }]));
27
+
28
+ const shareDependencies = ({ skipList = [] } = {}) =>
29
+ Object.fromEntries(
30
+ Object.entries(packageJson.dependencies)
31
+ .filter(([dependency]) => !skipList.includes(dependency))
32
+ .map(([dependency, version]) => [dependency, { ...sharedDefaults, version, requiredVersion: version }]),
33
+ );
34
+
35
+ let sharedDependencies = shareDependencies({ skipList: ['@angular/localize', 'zone.js'] });
36
+ sharedDependencies = {
37
+ ...sharedDependencies,
38
+ '@angular/common/http': sharedDependencies['@angular/common'],
39
+ 'rxjs/operators': sharedDependencies.rxjs,
40
+ };
22
41
 
23
42
  module.exports = (config, options, targetOptions) => {
24
- return {
25
- experiments: {
26
- outputModule: true,
27
- },
28
- plugins: [
29
- new ModuleFederationPlugin({
30
- library: {
31
- type: 'module',
32
- },
43
+ return withModuleFederationPlugin({
44
+ name: '<%= lowercaseBaseName %>',
33
45
  <%_ if (applicationTypeMicroservice) { _%>
34
- name: '<%= lowercaseBaseName %>',
35
- filename: 'remoteEntry.js',
36
- exposes: {
46
+ exposes: {
37
47
  <%_ if (enableTranslation) { _%>
38
- './translation-module': 'app/shared/language/translation.module.ts',
48
+ './translation-module': 'app/shared/language/translation.module.ts',
39
49
  <%_ } _%>
40
- './entity-navbar-items': 'app/entities/entity-navbar-items.ts',
41
- './entity-routing': 'app/entities/entity-routing.module.ts',
42
- },
43
- <%_ } _%>
44
- <%_ if (applicationTypeGateway) { _%>
45
- remotes: {},
46
- <%_ } _%>
47
- shared: {
48
- // { eager?, import?, packageName?, requiredVersion?, shareKey?, shareScope?, singleton?, strictVersion?, version? }
49
- '@angular/core': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@angular/common'] %>' },
50
- '@angular/common': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@angular/common'] %>' },
51
- '@angular/common/http': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@angular/common'] %>' },
52
- '@angular/router': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@angular/common'] %>' },
53
- '@angular/forms': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@angular/common'] %>' },
54
- '@angular/platform-browser': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@angular/common'] %>' },
55
- '@fortawesome/angular-fontawesome': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@fortawesome/angular-fontawesome'] %>' },
56
- '@fortawesome/fontawesome-common-types': { singleton: true, strictVersion: true },
57
- '@fortawesome/fontawesome-svg-core': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@fortawesome/fontawesome-svg-core'] %>' },
58
- '@fortawesome/free-solid-svg-icons': { singleton: true },
59
- '@ng-bootstrap/ng-bootstrap': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@ng-bootstrap/ng-bootstrap'] %>' },
60
- '@ngx-translate/core': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@ngx-translate/core'] %>' },
61
- '@ngx-translate/http-loader': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['@ngx-translate/http-loader'] %>' },
62
- dayjs: { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['dayjs'] %>' },
63
- 'ngx-infinite-scroll': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['ngx-infinite-scroll'] %>' },
64
- rxjs: { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['rxjs'] %>' },
65
- 'rxjs/operators': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['rxjs'] %>' },
66
- 'zone.js': { singleton: true, strictVersion: true, requiredVersion: '<%= nodeDependencies['zone.js'] %>' },
67
- 'app/config/input.constants': {
68
- singleton: true,
69
- import: 'app/config/input.constants',
70
- requiredVersion: appVersion,
71
- },
72
- 'app/config/pagination.constants': {
73
- singleton: true,
74
- import: 'app/config/pagination.constants',
75
- requiredVersion: appVersion,
76
- },
77
- 'app/config/translation.config': {
78
- singleton: true,
79
- import: 'app/config/translation.config',
80
- requiredVersion: appVersion,
81
- },
82
- 'app/core/auth': {
83
- singleton: true,
84
- import: 'app/core/auth',
85
- requiredVersion: appVersion,
86
- },
87
- 'app/core/config': {
88
- singleton: true,
89
- import: 'app/core/config',
90
- requiredVersion: appVersion,
91
- },
92
- 'app/core/interceptor': {
93
- singleton: true,
94
- import: 'app/core/interceptor',
95
- requiredVersion: appVersion,
96
- },
97
- 'app/core/request': {
98
- singleton: true,
99
- import: 'app/core/request',
100
- requiredVersion: appVersion,
101
- },
102
- 'app/core/util': {
103
- singleton: true,
104
- import: 'app/core/util',
105
- requiredVersion: appVersion,
106
- },
107
- 'app/shared': {
108
- singleton: true,
109
- import: 'app/shared',
110
- requiredVersion: appVersion,
111
- },
112
- 'app/shared/alert': {
113
- singleton: true,
114
- import: 'app/shared/alert',
115
- requiredVersion: appVersion,
116
- },
117
- 'app/shared/auth': {
118
- singleton: true,
119
- import: 'app/shared/auth',
120
- requiredVersion: appVersion,
121
- },
122
- 'app/shared/date': {
123
- singleton: true,
124
- import: 'app/shared/date',
125
- requiredVersion: appVersion,
126
- },
127
- 'app/shared/language': {
128
- singleton: true,
129
- import: 'app/shared/language',
130
- requiredVersion: appVersion,
131
- },
132
- 'app/shared/pagination': {
133
- singleton: true,
134
- import: 'app/shared/pagination',
135
- requiredVersion: appVersion,
136
- },
137
- 'app/shared/sort': {
138
- singleton: true,
139
- import: 'app/shared/sort',
140
- requiredVersion: appVersion,
141
- },
142
- },
143
- }),
144
- ],
145
- output: {
146
- publicPath: 'auto',
147
- uniqueName: '<%= lowercaseBaseName %>',
50
+ './entity-navbar-items': 'app/entities/entity-navbar-items.ts',
51
+ './entity-routes': 'app/entities/entity.routes.ts',
148
52
  },
149
- optimization: {
150
- runtimeChunk: false,
53
+ <%_ } _%>
54
+ shared: {
55
+ ...sharedDependencies,
56
+ ...shareMappings(
57
+ 'app/config/input.constants',
58
+ 'app/config/pagination.constants',
59
+ 'app/config/translation.config',
60
+ 'app/core/auth',
61
+ 'app/core/config',
62
+ 'app/core/interceptor',
63
+ 'app/core/request',
64
+ 'app/core/util',
65
+ 'app/shared',
66
+ 'app/shared/alert',
67
+ 'app/shared/auth',
68
+ 'app/shared/date',
69
+ 'app/shared/language',
70
+ 'app/shared/pagination',
71
+ 'app/shared/sort',
72
+ ),
151
73
  },
152
- };
74
+ });
153
75
  };
@@ -0,0 +1,108 @@
1
+ # app sub-generador
2
+
3
+ `jhipster` command entrypoint, it composes with `common`, `languages`, `server`, and `client`.
4
+
5
+ ## Customizing
6
+
7
+ JHipster implementation allows you to override almost every aspect of the generation process.
8
+
9
+ [SQL/spring-data-relational customizations](https://github.com/jhipster/generator-jhipster/blob/skip_ci-architecture/generators/spring-data-relational/README.md#sqlspring-data-relational-sub-generador)
10
+
11
+ ### Application
12
+
13
+ JDL doesn't support annotations, customizations must be done through local blueprint.
14
+
15
+ `.blueprint/app/generator.mjs` (to create a local blueprint follow https://www.jhipster.tech/modules/creating-a-blueprint/#local-blueprints):
16
+
17
+ ```js
18
+ get [Generator.PREPARING]() {
19
+ return {
20
+ customize({ application }) {
21
+ application.baseNameHumanized = 'Custom application title';
22
+ },
23
+ };
24
+ }
25
+ ```
26
+
27
+ ### Entities
28
+
29
+ Every annotation is loaded as entities properties and will be used at generation process.
30
+
31
+ ```jdl
32
+ @CustomsProp1(customValue)
33
+ entity Bar {}
34
+ ```
35
+
36
+ `.jhipster/Bar.json`:
37
+
38
+ ```json
39
+ {
40
+ "name": "Bar",
41
+ "annotations": {
42
+ "customsProp1": "customValue"
43
+ }
44
+ }
45
+ ```
46
+
47
+ #### Notable customizations
48
+
49
+ ##### Label
50
+
51
+ ```
52
+ @EntityClassHumanized("Departamento")
53
+ @EntityClassPluralHumanized("Departamentos")
54
+ entity Department {}
55
+ ```
56
+
57
+ ##### Translation variant
58
+
59
+ Translation variant allows different translations for the entity whenever applicable.
60
+
61
+ ```jdl
62
+ @EntityI18nVariant('female')
63
+ @EntityClassHumanized("Empresa")
64
+ @EntityClassPluralHumanized("Empresas")
65
+ entity Company {}
66
+ ```
67
+
68
+ `female` variant is supported by `pt-br` locale.
69
+
70
+ ### Fields
71
+
72
+ #### Notable customizations
73
+
74
+ ##### Label
75
+
76
+ ```jdl
77
+ entity Company {
78
+ @FieldNameHumanized('Company Name')
79
+ company_name
80
+ }
81
+ ```
82
+
83
+ ### Relationships
84
+
85
+ #### Notable customizations
86
+
87
+ ##### Label
88
+
89
+ ```jdl
90
+ relationship ManyToOnly {
91
+ @RelationshipNameHumanized('Company user') Company{user} to User
92
+ }
93
+ ```
94
+
95
+ ##### Eager loading relationships
96
+
97
+ Appliable to SQL/spring-data-relational with partial support at MongoDb/spring-data-mongodb.
98
+ Neo4j eager loads every relationship by default.
99
+
100
+ JHipster UI uses only the id and `otherEntityFieldName` properties, by default only fields used by the UI will be fetched.
101
+
102
+ ```jdl
103
+ relationship OneToMany {
104
+ @RelationshipEagerLoad Bar to @RelationshipEagerLoad Foo
105
+ }
106
+ ```
107
+
108
+ Related issues: (#23917)[https://github.com/jhipster/generator-jhipster/issues/23917]
@@ -5,3 +5,6 @@ Example:
5
5
  jhipster
6
6
 
7
7
  This will compose jhipster:client, jhipster:server and jhipster:languages to scaffold a full application
8
+
9
+ More information:
10
+ https://github.com/jhipster/generator-jhipster/tree/main/generators/app
@@ -1,4 +1,4 @@
1
- import { GENERATOR_BOOTSTRAP, GENERATOR_CLIENT, GENERATOR_COMMON, GENERATOR_CYPRESS, GENERATOR_GIT, GENERATOR_LANGUAGES, GENERATOR_SERVER, } from '../generator-list.mjs';
1
+ import { GENERATOR_BOOTSTRAP, GENERATOR_BOOTSTRAP_APPLICATION_BASE, GENERATOR_CLIENT, GENERATOR_COMMON, GENERATOR_CYPRESS, GENERATOR_GIT, GENERATOR_LANGUAGES, GENERATOR_SERVER, } from '../generator-list.mjs';
2
2
  const command = {
3
3
  options: {
4
4
  defaults: {
@@ -57,12 +57,12 @@ const command = {
57
57
  type: Array,
58
58
  },
59
59
  },
60
- configs: {},
61
60
  import: [
62
61
  GENERATOR_BOOTSTRAP,
62
+ GENERATOR_BOOTSTRAP_APPLICATION_BASE,
63
+ GENERATOR_COMMON,
63
64
  GENERATOR_SERVER,
64
65
  GENERATOR_CLIENT,
65
- GENERATOR_COMMON,
66
66
  GENERATOR_GIT,
67
67
  GENERATOR_CYPRESS,
68
68
  GENERATOR_LANGUAGES,
@@ -25,6 +25,8 @@ import cleanupOldFilesTask from './cleanup.mjs';
25
25
  import { askForInsightOptIn } from './prompts.mjs';
26
26
  import statistics from '../statistics.mjs';
27
27
  import { GENERATOR_APP, GENERATOR_COMMON, GENERATOR_CLIENT, GENERATOR_SERVER, GENERATOR_BOOTSTRAP_APPLICATION_BASE, } from '../generator-list.mjs';
28
+ import { getDefaultAppName } from '../project-name/support/index.mjs';
29
+ import { packageJson } from '../../lib/index.mjs';
28
30
  import { applicationTypes, applicationOptions } from '../../jdl/jhipster/index.mjs';
29
31
  import command from './command.mjs';
30
32
  const { MICROSERVICE } = applicationTypes;
@@ -82,6 +84,7 @@ export default class JHipsterAppGenerator extends BaseApplicationGenerator {
82
84
  get configuring() {
83
85
  return {
84
86
  setup() {
87
+ this.jhipsterConfig.jhipsterVersion = packageJson.version;
85
88
  if (this.jhipsterConfig.applicationType === MICROSERVICE) {
86
89
  this.jhipsterConfig.skipUserManagement = true;
87
90
  }
@@ -91,6 +94,14 @@ export default class JHipsterAppGenerator extends BaseApplicationGenerator {
91
94
  this.jhipsterConfig.jhiPrefix = _.camelCase(this.jhipsterConfig.jhiPrefix);
92
95
  }
93
96
  },
97
+ defaults() {
98
+ if (!this.options.reproducible) {
99
+ this.config.defaults({
100
+ baseName: getDefaultAppName(this),
101
+ creationTimestamp: new Date().getTime(),
102
+ });
103
+ }
104
+ },
94
105
  };
95
106
  }
96
107
  get [BaseApplicationGenerator.CONFIGURING]() {
@@ -1,7 +1,7 @@
1
1
  import { camelCase, kebabCase, startCase, upperFirst } from 'lodash-es';
2
2
  import { NODE_VERSION } from '../../generator-constants.mjs';
3
3
  import { applicationTypes, authenticationTypes, databaseTypes, testFrameworkTypes } from '../../../jdl/index.js';
4
- import { getHipster, mutateApplication, pickFields, upperFirstCamelCase } from '../../base/support/index.mjs';
4
+ import { getHipster, mutateData, pickFields, upperFirstCamelCase } from '../../base/support/index.mjs';
5
5
  import { getDBTypeFromDBValue } from '../../server/support/index.mjs';
6
6
  import detectLanguage from '../../languages/support/detect-language.mjs';
7
7
  import { loadConfig, loadDerivedConfig } from '../../../lib/internal/index.mjs';
@@ -72,7 +72,7 @@ export function loadStoredAppOptions({ options = this.options, jhipsterConfig =
72
72
  */
73
73
  export const loadAppConfig = ({ config, application, useVersionPlaceholders, }) => {
74
74
  loadConfig(serverCommand.configs, { config, application });
75
- mutateApplication(application, {
75
+ mutateData(application, {
76
76
  nodeVersion: useVersionPlaceholders ? 'NODE_VERSION' : NODE_VERSION,
77
77
  jhipsterVersion: useVersionPlaceholders ? 'JHIPSTER_VERSION' : undefined,
78
78
  }, pickFields(config, [
@@ -116,7 +116,7 @@ export const loadAppConfig = ({ config, application, useVersionPlaceholders, })
116
116
  */
117
117
  export const loadDerivedAppConfig = ({ application }) => {
118
118
  loadDerivedConfig(serverCommand.configs, { application });
119
- mutateApplication(application, {
119
+ mutateData(application, {
120
120
  jhiPrefixCapitalized: ({ jhiPrefix }) => upperFirst(jhiPrefix),
121
121
  jhiPrefixDashed: ({ jhiPrefix }) => kebabCase(jhiPrefix),
122
122
  camelizedBaseName: ({ baseName }) => camelCase(baseName),
@@ -1,4 +1,3 @@
1
- import { parseCreationTimestamp } from './support/timestamp.mjs';
2
1
  const command = {
3
2
  options: {
4
3
  useVersionPlaceholders: {
@@ -25,16 +24,6 @@ const command = {
25
24
  type: Boolean,
26
25
  scope: 'generator',
27
26
  },
28
- skipJhipsterDependencies: {
29
- description: "Don't write jhipster dependencies to package.json.",
30
- type: Boolean,
31
- scope: 'storage',
32
- },
33
- creationTimestamp: {
34
- description: 'Project creation timestamp (used for reproducible builds)',
35
- type: parseCreationTimestamp,
36
- scope: 'storage',
37
- },
38
27
  reproducible: {
39
28
  description: 'Try to reproduce changelog',
40
29
  type: Boolean,
@@ -462,9 +462,6 @@ export default class JHipsterBaseBlueprintGenerator extends CoreGenerator {
462
462
  }
463
463
  const generatorName = packageNameToNamespace(blueprint);
464
464
  const generatorNamespace = `${generatorName}:${subGen}`;
465
- if (!this.env.isPackageRegistered(generatorName)) {
466
- await this.env.lookup({ filterPaths: true, packagePatterns: blueprint });
467
- }
468
465
  if (!(await this.env.get(generatorNamespace))) {
469
466
  this.log.debug(`No blueprint found for blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(subGen)} with namespace ${chalk.yellow(generatorNamespace)} subgenerator: falling back to default generator`);
470
467
  return undefined;
@@ -65,20 +65,20 @@ export const pickFields = (source, fields) => Object.fromEntries(fields.map(fiel
65
65
  *
66
66
  * @example
67
67
  * // application = { prop: 'foo-bar', prop2: 'foo2' }
68
- * mutateApplication(
69
- * application,
68
+ * mutateData(
69
+ * data,
70
70
  * { prop: 'foo', prop2: ({ prop }) => prop + 2 },
71
71
  * { prop: ({ prop }) => prop + '-bar', prop2: 'won\'t override' },
72
72
  * );
73
73
  */
74
- export const mutateApplication = (application, ...mutations) => {
74
+ export const mutateData = (context, ...mutations) => {
75
75
  for (const mutation of mutations) {
76
76
  for (const [key, value] of Object.entries(mutation)) {
77
77
  if (typeof value === 'function') {
78
- application[key] = value(application);
78
+ context[key] = value(context);
79
79
  }
80
- else if (application[key] === undefined) {
81
- application[key] = value;
80
+ else if (context[key] === undefined) {
81
+ context[key] = value;
82
82
  }
83
83
  }
84
84
  }
@@ -159,9 +159,9 @@ const deprecatedProperties = {
159
159
  },
160
160
  };
161
161
  const ejsBuiltInProperties = ['__append', '__line', 'escapeFn', 'include', 'undefined'];
162
- const javascriptBuiltInProperties = ['parseInt', 'Boolean', 'JSON', 'Object'];
162
+ const javascriptBuiltInProperties = ['parseInt', 'Boolean', 'JSON', 'Object', 'toString'];
163
163
  const getProperty = (context, prop) => {
164
- if (prop === Symbol.unscopables) {
164
+ if (typeof prop === 'symbol') {
165
165
  return undefined;
166
166
  }
167
167
  if (prop in deprecatedProperties) {
@@ -170,7 +170,7 @@ const getProperty = (context, prop) => {
170
170
  console.log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(replacement)}. Value: ${value}`);
171
171
  return value;
172
172
  }
173
- if (prop.startsWith('DOCKER_')) {
173
+ if (prop?.startsWith?.('DOCKER_')) {
174
174
  console.log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(
175
175
  // eslint-disable-next-line no-template-curly-in-string
176
176
  'dockerContainers.${dockerImage}')}.`);
@@ -21,8 +21,7 @@ import BaseGenerator from '../base/index.mjs';
21
21
  import { CUSTOM_PRIORITIES, PRIORITY_NAMES, QUEUES } from './priorities.mjs';
22
22
  import { JHIPSTER_CONFIG_DIR } from '../generator-constants.mjs';
23
23
  import { getEntitiesFromDir } from './support/index.mjs';
24
- import command from './command.mjs';
25
- import { mutateApplication } from '../base/support/config.mjs';
24
+ import { mutateData } from '../base/support/config.mjs';
26
25
  const { LOADING, PREPARING, POST_PREPARING, CONFIGURING_EACH_ENTITY, LOADING_ENTITIES, PREPARING_EACH_ENTITY, PREPARING_EACH_ENTITY_FIELD, PREPARING_EACH_ENTITY_RELATIONSHIP, POST_PREPARING_EACH_ENTITY, DEFAULT, WRITING, POST_WRITING, WRITING_ENTITIES, POST_WRITING_ENTITIES, PRE_CONFLICTS, INSTALL, END, } = PRIORITY_NAMES;
27
26
  const { CONFIGURING_EACH_ENTITY_QUEUE, LOADING_ENTITIES_QUEUE, PREPARING_EACH_ENTITY_QUEUE, PREPARING_EACH_ENTITY_FIELD_QUEUE, PREPARING_EACH_ENTITY_RELATIONSHIP_QUEUE, POST_PREPARING_EACH_ENTITY_QUEUE, WRITING_ENTITIES_QUEUE, POST_WRITING_ENTITIES_QUEUE, } = QUEUES;
28
27
  const asPriority = BaseGenerator.asPriority;
@@ -43,7 +42,6 @@ export default class BaseApplicationGenerator extends BaseGenerator {
43
42
  if (this.options.help) {
44
43
  return;
45
44
  }
46
- this.parseJHipsterOptions(command.options);
47
45
  this.registerPriorities(CUSTOM_PRIORITIES);
48
46
  /* Add tasks allowing entities priorities to match normal priorities pattern */
49
47
  this.on('queueOwnTasks', () => {
@@ -51,6 +49,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
51
49
  this.queueEntityTasks();
52
50
  });
53
51
  if (this.options.applicationWithEntities) {
52
+ this.log.warn('applicationWithEntities option is deprecated');
54
53
  // Write new definitions to memfs
55
54
  this.config.set({
56
55
  ...this.config.getAll(),
@@ -95,7 +94,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
95
94
  return this.createStorage(entityPath);
96
95
  }
97
96
  /**
98
- * get sorted list of entitiy names according to changelog date (i.e. the order in which they were added)
97
+ * get sorted list of entity names according to changelog date (i.e. the order in which they were added)
99
98
  */
100
99
  getExistingEntityNames() {
101
100
  return this.getExistingEntities().map(entity => entity.name);
@@ -105,7 +104,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
105
104
  */
106
105
  getExistingEntities() {
107
106
  function isBefore(e1, e2) {
108
- return e1.definition.changelogDate - e2.definition.changelogDate;
107
+ return (e1.definition.annotations?.changelogDate ?? 0) - (e2.definition.annotations?.changelogDate ?? 0);
109
108
  }
110
109
  const configDir = this.getEntitiesConfigPath();
111
110
  const entities = [];
@@ -214,7 +213,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
214
213
  */
215
214
  resetEntitiesFakeData(seed) {
216
215
  seed = `${this.sharedData.getApplication().baseName}-${seed}`;
217
- this.log.debug(`Reseting entities seed with '${seed}'`);
216
+ this.log.debug(`Resetting entities seed with '${seed}'`);
218
217
  this.sharedData.getEntities().forEach(({ entity }) => {
219
218
  entity.resetFakerSeed(seed);
220
219
  });
@@ -259,7 +258,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
259
258
  if ([PREPARING, LOADING].includes(priorityName)) {
260
259
  return {
261
260
  application,
262
- applicationDefaults: data => mutateApplication(application, data),
261
+ applicationDefaults: data => mutateData(application, data),
263
262
  };
264
263
  }
265
264
  if (LOADING_ENTITIES === priorityName) {
@@ -304,7 +303,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
304
303
  /**
305
304
  * @private
306
305
  * Get entities to load.
307
- * This method doesn't filter entities. An filtered config can be changed at thie priority.
306
+ * This method doesn't filter entities. An filtered config can be changed at this priority.
308
307
  * @returns {string[]}
309
308
  */
310
309
  getEntitiesDataToLoad() {
@@ -16,12 +16,12 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import { existsSync, mkdirSync, opendirSync } from 'fs';
19
+ import { existsSync, opendirSync } from 'fs';
20
20
  import { extname, basename } from 'path';
21
21
  // eslint-disable-next-line import/prefer-default-export
22
22
  export function getEntitiesFromDir(configDir) {
23
23
  if (!existsSync(configDir)) {
24
- mkdirSync(configDir);
24
+ return [];
25
25
  }
26
26
  const dir = opendirSync(configDir);
27
27
  const entityNames = [];
@@ -85,7 +85,7 @@ export const getEnumInfo = (field, clientRootFolder) => {
85
85
  const customValuesState = getCustomValuesState(enums);
86
86
  return {
87
87
  enumName: field.fieldType,
88
- javadoc: field.fieldTypeDocumentation && formatDocAsJavaDoc(field.fieldTypeDocumentation),
88
+ enumJavadoc: field.fieldTypeDocumentation && formatDocAsJavaDoc(field.fieldTypeDocumentation),
89
89
  enumInstance: field.enumInstance,
90
90
  enums,
91
91
  ...customValuesState,
@@ -28,3 +28,4 @@ export { default as prepareField } from './prepare-field.mjs';
28
28
  export * from './prepare-field.mjs';
29
29
  export { default as prepareRelationship } from './prepare-relationship.mjs';
30
30
  export * from './relationship.mjs';
31
+ export * from './update-application-entities-transform.mjs';
@@ -19,7 +19,7 @@
19
19
  import * as _ from 'lodash-es';
20
20
  import pluralize from 'pluralize';
21
21
  import { getDatabaseTypeData, hibernateSnakeCase } from '../../server/support/index.mjs';
22
- import { createFaker, parseChangelog, stringHashCode, upperFirstCamelCase, getMicroserviceAppName } from '../../base/support/index.mjs';
22
+ import { createFaker, parseChangelog, stringHashCode, upperFirstCamelCase, getMicroserviceAppName, mutateData, } from '../../base/support/index.mjs';
23
23
  import { fieldToReference } from './prepare-field.mjs';
24
24
  import { getTypescriptKeyType, getEntityParentPathAddition } from '../../client/support/index.mjs';
25
25
  import { applicationTypes, authenticationTypes, binaryOptions, databaseTypes, entityOptions, fieldTypes, searchEngineTypes, } from '../../../jdl/jhipster/index.mjs';
@@ -113,7 +113,7 @@ export default function prepareEntity(entityWithConfig, generator, application)
113
113
  const entityName = _.upperFirst(entityWithConfig.name);
114
114
  _.defaults(entityWithConfig, entityDefaultConfig, BASE_TEMPLATE_DATA);
115
115
  if (entityWithConfig.changelogDate) {
116
- entityWithConfig.changelogDateForRecent = parseChangelog(entityWithConfig.changelogDate);
116
+ entityWithConfig.changelogDateForRecent = parseChangelog(String(entityWithConfig.changelogDate));
117
117
  }
118
118
  entityWithConfig.entityAngularJSSuffix = entityWithConfig.angularJSSuffix;
119
119
  if (entityWithConfig.entityAngularJSSuffix && !entityWithConfig.entityAngularJSSuffix.startsWith('-')) {
@@ -228,7 +228,7 @@ export function derivedPrimaryKeyProperties(primaryKey) {
228
228
  typeNumeric: !primaryKey.composite && primaryKey.fields[0].fieldTypeNumeric,
229
229
  });
230
230
  }
231
- export function prepareEntityPrimaryKeyForTemplates(entityWithConfig, generator, enableCompositeId = true) {
231
+ export function prepareEntityPrimaryKeyForTemplates({ entity: entityWithConfig, enableCompositeId = true, application }) {
232
232
  const idFields = entityWithConfig.fields.filter(field => field.id);
233
233
  const idRelationships = entityWithConfig.relationships.filter(relationship => relationship.id);
234
234
  let idCount = idFields.length + idRelationships.length;
@@ -236,8 +236,12 @@ export function prepareEntityPrimaryKeyForTemplates(entityWithConfig, generator,
236
236
  let idField = entityWithConfig.fields.find(field => field.fieldName === 'id');
237
237
  if (idField) {
238
238
  idField.id = true;
239
+ idField.autoGenerate = idField.autoGenerate ?? true;
239
240
  }
240
241
  else {
242
+ if (entityWithConfig.microserviceName && !application?.microfrontend) {
243
+ this?.log.warn("Microservice entities should have the id field type specified (e.g., id String) to make sure gateway and microservice types don't conflict");
244
+ }
241
245
  idField = {
242
246
  fieldName: 'id',
243
247
  id: true,
@@ -355,7 +359,7 @@ export function prepareEntityPrimaryKeyForTemplates(entityWithConfig, generator,
355
359
  idField.dynamic = false;
356
360
  // Allow ids type to be empty and fallback to default type for the database.
357
361
  if (!idField.fieldType) {
358
- idField.fieldType = generator.jhipsterConfig.pkType ?? getDatabaseTypeData(entityWithConfig.databaseType).defaultPrimaryKeyType;
362
+ idField.fieldType = application?.pkType ?? getDatabaseTypeData(entityWithConfig.databaseType).defaultPrimaryKeyType;
359
363
  }
360
364
  primaryKeyName = idField.fieldName;
361
365
  primaryKeyType = idField.fieldType;
@@ -495,7 +499,6 @@ function preparePostEntityCommonDerivedPropertiesNotTyped(entity) {
495
499
  entity.anyPropertyHasValidation =
496
500
  entity.anyPropertyHasValidation || relationships.some(({ relationshipValidate }) => relationshipValidate);
497
501
  const relationshipsByOtherEntity = relationships
498
- .filter(rel => !rel.otherEntity.embedded)
499
502
  .map(relationship => [relationship.otherEntity.entityNameCapitalized, relationship])
500
503
  .reduce((relationshipsByOtherEntity, [type, relationship]) => {
501
504
  if (!relationshipsByOtherEntity[type]) {
@@ -546,14 +549,14 @@ function preparePostEntityCommonDerivedPropertiesNotTyped(entity) {
546
549
  relationship.relationshipEagerLoad = false;
547
550
  return;
548
551
  }
549
- relationship.bagRelationship = relationship.ownerSide && relationship.collection;
550
- if (relationship.relationshipEagerLoad === undefined) {
551
- relationship.relationshipEagerLoad =
552
- relationship.bagRelationship ||
552
+ mutateData(relationship, {
553
+ bagRelationship: relationship.ownerSide && relationship.collection,
554
+ relationshipEagerLoad: ({ relationshipEagerLoad, bagRelationship, ownerSide, otherEntity, otherEntityField }) => relationshipEagerLoad ??
555
+ (bagRelationship ||
553
556
  entity.eagerLoad ||
554
557
  // Fetch relationships if otherEntityField differs otherwise the id is enough
555
- (relationship.ownerSide && relationship.otherEntity.primaryKey.name !== relationship.otherEntityField);
556
- }
558
+ (ownerSide && otherEntity.primaryKey.name !== otherEntityField)),
559
+ });
557
560
  });
558
561
  entity.relationshipsContainEagerLoad = entity.relationships.some(relationship => relationship.relationshipEagerLoad);
559
562
  entity.containsBagRelationships = entity.relationships.some(relationship => relationship.bagRelationship);