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
@@ -11,6 +11,9 @@ import EntitiesMenu from '@/entities/entities-menu.vue';
11
11
 
12
12
  import { useStore } from '@/store';
13
13
  import { useRouter } from 'vue-router';
14
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
15
+ import { importRemote } from '@module-federation/utilities';
16
+ <%_ } _%>
14
17
 
15
18
  export default defineComponent({
16
19
  compatConfig: { MODE: 3 },
@@ -18,9 +21,13 @@ export default defineComponent({
18
21
  components: {
19
22
  'entities-menu': EntitiesMenu,
20
23
  <%_ if (applicationTypeGateway && microfrontend) { _%>
21
- <%_ for (const microfrontend of microfrontends) { _%>
22
- '<%= microfrontend.lowercaseBaseName %>-menu': defineAsyncComponent(() => {
23
- return import('@<%= microfrontend.lowercaseBaseName %>/entities-menu').catch(() => import('@/core/error/error-loading.vue'));
24
+ <%_ for (const remote of microfrontends) { _%>
25
+ '<%= remote.lowercaseBaseName %>-menu': defineAsyncComponent(() => {
26
+ return importRemote<any>({
27
+ url: `./<%= remote.endpointPrefix %>`,
28
+ scope: '<%= remote.lowercaseBaseName %>',
29
+ module: './entities-menu',
30
+ }).catch(() => import('@/core/error/error-loading.vue'));
24
31
  }),
25
32
  <%_ } _%>
26
33
  <%_ } _%>
@@ -177,7 +177,7 @@
177
177
  Navbar
178
178
  ========================================================================== */
179
179
  .navbar-version {
180
- font-size: 10px;
180
+ font-size: 0.65em;
181
181
  <%_ if (clientThemeNone) { _%>
182
182
  color: #ccc;
183
183
  <%_ } _%>
@@ -243,7 +243,6 @@
243
243
 
244
244
  .navbar-title {
245
245
  display: inline-block;
246
- vertical-align: middle;
247
246
  <%_ if (clientThemeNone && !clientThemeDark) { _%>
248
247
  color: white;
249
248
  <%_ } _%>
@@ -253,14 +252,14 @@
253
252
  Logo styles
254
253
  ========================================================================== */
255
254
  .navbar-brand.logo {
256
- padding: 5px 15px;
255
+ padding: 0 7px;
257
256
  }
258
257
 
259
258
  .logo .logo-img {
260
259
  height: 45px;
261
260
  display: inline-block;
262
261
  vertical-align: middle;
263
- width: 70px;
262
+ width: 45px;
264
263
  }
265
264
 
266
265
  .logo-img {
@@ -35,7 +35,6 @@
35
35
  </dd>
36
36
  <%_ } _%>
37
37
  <%_ for (relationship of relationships) {
38
- const ownerSide = relationship.ownerSide;
39
38
  const relationshipName = relationship.relationshipName;
40
39
  const relationshipFieldName = relationship.relationshipFieldName;
41
40
  const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
@@ -43,7 +42,7 @@
43
42
  const otherEntityName = relationship.otherEntityName;
44
43
  const otherEntityField = relationship.otherEntityField;
45
44
  const otherEntityAngularName = relationship.otherEntityAngularName; _%>
46
- <%_ if (ownerSide) { _%>
45
+ <%_ if (relationship.persistableRelationship) { _%>
47
46
  <dt>
48
47
  <span v-text="t$('<%= i18nKeyPrefix %>.<%= relationshipName %>')"><%= relationshipNameHumanized %></span>
49
48
  </dt>
@@ -34,7 +34,7 @@ import AlertService from '@/shared/alert/alert.service';
34
34
  <%_
35
35
  const allRelationshipsThatNeedSelectOptions = Object
36
36
  .values(relationshipsByOtherEntity)
37
- .map(relationships => relationships.filter(rel => rel.ownerSide))
37
+ .map(relationships => relationships.filter(rel => rel.persistableRelationship))
38
38
  .filter(relationships => relationships.length > 0);
39
39
  _%>
40
40
  <%_ for (const [relationship] of Object.values(allRelationshipsThatNeedSelectOptions)) { _%>
@@ -14,9 +14,9 @@ import { useAlertService } from '@/shared/alert/alert.service';
14
14
  <%_
15
15
  const allRelationshipsThatNeedSelectOptions = Object
16
16
  .values(relationshipsByOtherEntity)
17
- .map(relationships => relationships.filter(rel => rel.ownerSide))
17
+ .map(relationships => relationships.filter(rel => rel.persistableRelationship))
18
18
  .filter(relationships => relationships.length > 0);
19
- const relationshipsContainManyToOne = relationships.some(rel => !rel.otherEntityIsEmbedded && rel.collection && rel.ownerSide);
19
+ const relationshipsContainManyToOne = relationships.some(rel => !rel.otherEntityIsEmbedded && rel.collection && rel.persistableRelationship);
20
20
  _%>
21
21
 
22
22
  <%_ for (const [relationship] of Object.values(allRelationshipsThatNeedSelectOptions)) { _%>
@@ -176,7 +176,7 @@ _%>
176
176
  <%_ if (relationshipsContainManyToOne) { _%>
177
177
  <%_
178
178
  for (relationship of relationships) {
179
- if (relationship.relationshipType === 'many-to-many' && relationship.ownerSide === true) {
179
+ if (relationship.collection && relationship.persistableRelationship) {
180
180
  const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
181
181
  _%>
182
182
  this.<%= entityInstance %>.<%= relationshipFieldNamePlural %> = [];
@@ -121,7 +121,6 @@ _%>
121
121
  </div>
122
122
  <%_ } _%>
123
123
  <%_ for (relationship of relationships) {
124
- const ownerSide = relationship.ownerSide;
125
124
  const otherEntityName = relationship.otherEntityName;
126
125
  const otherEntityNamePlural = relationship.otherEntityNamePlural;
127
126
  const relationshipName = relationship.relationshipName;
@@ -131,7 +130,7 @@ _%>
131
130
  const otherEntityField = relationship.otherEntityField;
132
131
  const relationshipRequired = relationship.relationshipRequired;
133
132
  const translationKey = `${i18nKeyPrefix}.${relationshipName}`; _%>
134
- <%_ if (relationship.relationshipManyToOne || (relationship.relationshipOneToOne && ownerSide && relationship.otherEntityUser)) { _%>
133
+ <%_ if (!relationship.collection && relationship.persistableRelationship) { _%>
135
134
  <div class="form-group">
136
135
  <label class="form-control-label" v-text="t$('<%= translationKey %>')" for="<%= entityFileName %>-<%= relationshipName %>"><%= relationshipNameHumanized %></label>
137
136
  <select class="form-control" id="<%= entityFileName %>-<%= relationshipName %>" data-cy="<%= relationshipFieldName %>" name="<%= relationshipName %>" v-model="<%= entityInstance %>.<%=relationshipFieldName %>"<% if (relationshipRequired) { %> required<% } %>>
@@ -143,19 +142,7 @@ _%>
143
142
  <option v-bind:value="<%= entityInstance %>.<%=relationshipFieldName %> && <%=otherEntityName %>Option.id === <%= entityInstance %>.<%=relationshipFieldName %>.id ? <%= entityInstance %>.<%=relationshipFieldName %> : <%=otherEntityName %>Option" v-for="<%=otherEntityName %>Option in <%=otherEntityNamePlural %>" :key="<%=otherEntityName %>Option.id">{{<%=otherEntityName %>Option.<%=otherEntityField %>}}</option>
144
143
  </select>
145
144
  </div>
146
- <%_ } else if (relationship.relationshipOneToOne && ownerSide) { _%>
147
- <div class="form-group">
148
- <label class="form-control-label" v-text="t$('<%= translationKey %>')" for="<%= entityFileName %>-<%= relationshipName %>"><%= relationshipNameHumanized %></label>
149
- <select class="form-control" id="<%= entityFileName %>-<%= relationshipName %>" data-cy="<%= relationshipFieldName %>" name="<%= relationshipName %>" v-model="<%= entityInstance %>.<%=relationshipFieldName %>"<% if (relationshipRequired) { %> required<% } %>>
150
- <%_ if (!relationshipRequired) { _%>
151
- <option v-bind:value="null"></option>
152
- <%_ } else { _%>
153
- <option v-if="!<%= entityInstance %>.<%= relationshipName %>" v-bind:value="null" selected></option>
154
- <%_ } _%>
155
- <option v-bind:value="<%= entityInstance %>.<%=relationshipFieldName %> && <%=otherEntityName %>Option.id === <%= entityInstance %>.<%=relationshipFieldName %>.id ? <%= entityInstance %>.<%=relationshipFieldName %> : <%=otherEntityName %>Option" v-for="<%=otherEntityName %>Option in <%=otherEntityNamePlural %>" :key="<%=otherEntityName %>Option.id">{{<%=otherEntityName %>Option.<%=otherEntityField %>}}</option>
156
- </select>
157
- </div>
158
- <%_ } else if (relationship.relationshipManyToMany && ownerSide) { _%>
145
+ <%_ } else if (relationship.persistableRelationship) { _%>
159
146
  <div class="form-group">
160
147
  <label v-text="t$('<%= translationKey %>')" for="<%= entityFileName %>-<%= relationshipName %>"><%= relationshipNameHumanized %></label>
161
148
  <select class="form-control" id="<%= entityFileName %>-<%= relationshipFieldNamePlural %>" data-cy="<%= relationshipFieldName %>" multiple name="<%= relationshipName %>" v-if="<%=entityInstance %>.<%=relationshipFieldNamePlural %> !== undefined" v-model="<%=entityInstance %>.<%=relationshipFieldNamePlural %>"<% if (relationshipRequired) { %> required<% } %>>
@@ -6,7 +6,7 @@ import { type I<%= entityAngularName %> } from '@/shared/model/<%= entityModelFi
6
6
 
7
7
  const baseApiUrl = '<%= entityApi %>api/<%= entityApiUrl %>';
8
8
  <%_ if (searchEngineAny) { _%>
9
- const baseSearchApiUrl = '<%= entityApi %>api/_search/<%= entityApiUrl %>?query=';
9
+ const baseSearchApiUrl = '<%= entityApi %>api/<%= entityApiUrl %>/_search?query=';
10
10
  <%_ } _%>
11
11
 
12
12
  export default class <%= entityAngularName %>Service {
@@ -51,9 +51,7 @@
51
51
  <th scope="row"<% if (!paginationNo) { %> v-on:click="changeOrder('<%= field.fieldName%>')"<% } %>><span v-text="t$('<%=`${i18nKeyPrefix}.${field.fieldName}` %>')"><%= field.fieldNameHumanized %></span><% if (!paginationNo) { %> <jhi-sort-indicator :current-order="propOrder" :reverse="reverse" :field-name="'<%= field.fieldName%>'"></jhi-sort-indicator><% } %></th>
52
52
  <%_ } _%>
53
53
  <%_ for (relationship of relationships) { _%>
54
- <%_ if (relationship.relationshipManyToOne
55
- || (relationship.relationshipOneToOne && relationship.ownerSide)
56
- || (relationship.relationshipManyToMany && relationship.ownerSide && paginationNo)) {
54
+ <%_ if (relationship.persistableRelationship && (paginationNo || !relationship.collection)) {
57
55
  const fieldName = "." + relationship.otherEntityField; _%>
58
56
  <th scope="row"<% if (!paginationNo) { %> v-on:click="changeOrder('<%=relationship.relationshipName + (fieldName)%>')"<% } %>><span v-text="t$('<%= `${i18nKeyPrefix}.${relationship.relationshipName}` %>')"><%= relationship.relationshipNameHumanized %></span><% if (!paginationNo) { %> <jhi-sort-indicator :current-order="propOrder" :reverse="reverse" :field-name="'<%=relationship.relationshipName + (fieldName)%>'"></jhi-sort-indicator><% } %></th>
59
57
  <%_ } _%>
@@ -93,15 +91,12 @@
93
91
  <%_ } _%>
94
92
  <%_ } _%>
95
93
  <%_ for (relationship of relationships) {
96
- const ownerSide = relationship.ownerSide;
97
94
  const relationshipFieldName = relationship.relationshipFieldName;
98
95
  const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
99
96
  const otherEntityName = relationship.otherEntityName;
100
97
  const otherEntityField = relationship.otherEntityField;
101
98
  const otherEntityAngularName = relationship.otherEntityAngularName; _%>
102
- <%_ if (relationship.relationshipManyToOne
103
- || (relationship.relationshipOneToOne && ownerSide)
104
- || (relationship.relationshipManyToMany && ownerSide && paginationNo)) { _%>
99
+ <%_ if (relationship.persistableRelationship && (paginationNo || !relationship.collection)) { _%>
105
100
  <td>
106
101
  <%_ if (relationship.otherEntityUser) { _%>
107
102
  <%_ if (relationship.relationshipManyToMany) { _%>
@@ -127,18 +122,30 @@
127
122
  <%_ } _%>
128
123
  <td class="text-right">
129
124
  <div class="btn-group">
125
+ <%_ if (authenticationTypeSession) { _%>
126
+ <router-link :to="{name: '<%= entityAngularName %>View', params: {<%= entityInstance %>Id: <%= entityInstance %>.id}}" class="btn btn-info btn-sm details" data-cy="entityDetailsButton">
127
+ <%_ } else { _%>
130
128
  <router-link :to="{name: '<%= entityAngularName %>View', params: {<%= entityInstance %>Id: <%= entityInstance %>.id}}" custom v-slot="{ navigate }">
131
129
  <button @click="navigate" class="btn btn-info btn-sm details" data-cy="entityDetailsButton">
130
+ <%_ } _%>
132
131
  <font-awesome-icon icon="eye"></font-awesome-icon>
133
132
  <span class="d-none d-md-inline" v-text="t$('entity.action.view')">View</span>
133
+ <%_ if (!authenticationTypeSession) { _%>
134
134
  </button>
135
+ <%_ } _%>
135
136
  </router-link>
136
137
  <%_ if (!readOnly) { _%>
138
+ <%_ if (authenticationTypeSession) { _%>
139
+ <router-link :to="{name: '<%= entityAngularName %>Edit', params: {<%= entityInstance %>Id: <%= entityInstance %>.id}}" class="btn btn-primary btn-sm edit" data-cy="entityEditButton">
140
+ <%_ } else { _%>
137
141
  <router-link :to="{name: '<%= entityAngularName %>Edit', params: {<%= entityInstance %>Id: <%= entityInstance %>.id}}" custom v-slot="{ navigate }">
138
142
  <button @click="navigate" class="btn btn-primary btn-sm edit" data-cy="entityEditButton">
143
+ <%_ } _%>
139
144
  <font-awesome-icon icon="pencil-alt"></font-awesome-icon>
140
145
  <span class="d-none d-md-inline" v-text="t$('entity.action.edit')">Edit</span>
146
+ <%_ if (!authenticationTypeSession) { _%>
141
147
  </button>
148
+ <%_ } _%>
142
149
  </router-link>
143
150
  <b-button v-on:click="prepareRemove(<%= entityInstance %>)"
144
151
  variant="danger"
@@ -1,4 +1,7 @@
1
1
  import { createRouter as createVueRouter, createWebHistory<% if (applicationTypeGateway && microfrontend) { %>, type RouteRecordRaw<% } %> } from 'vue-router';
2
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
3
+ import { importRemote } from '@module-federation/utilities';
4
+ <%_ } _%>
2
5
 
3
6
  const Home = () => import('@/core/home/home.vue');
4
7
  const Error = () => import('@/core/error/error.vue');
@@ -43,7 +46,11 @@ const router = createRouter();
43
46
  <%_ if (applicationTypeGateway && microfrontend) { _%>
44
47
  export const lazyRoutes = Promise.all([
45
48
  <%_ for (const remote of microfrontends) { _%>
46
- import('@<%= remote.lowercaseBaseName %>/entities-router')
49
+ importRemote<any>({
50
+ url: `./<%= remote.endpointPrefix %>`,
51
+ scope: '<%= remote.lowercaseBaseName %>',
52
+ module: './entities-router',
53
+ })
47
54
  .then(<%= remote.lowercaseBaseName %>Router => {
48
55
  router.addRoute(<%= remote.lowercaseBaseName %>Router.default as RouteRecordRaw);
49
56
  return <%= remote.lowercaseBaseName %>Router.default;
@@ -21,14 +21,19 @@
21
21
  const { DefinePlugin } = require('webpack');
22
22
  <%_ } _%>
23
23
  <&_ } -&>
24
- <&_ if (fragment.moduleFederationSection) { -&>
25
- <%_ if (applicationTypeGateway) { _%>
26
- remotes: {
27
- <%_ for (const remote of microfrontends) { _%>
28
- '@<%= remote.lowercaseBaseName %>': `<%= remote.lowercaseBaseName %>@/<%= remote.endpointPrefix %>/remoteEntry.js`,
29
- <%_ } _%>
30
- },
24
+
25
+ <&_ if (fragment.configSection) { -&>
26
+ <%_ if (applicationTypeGateway && clientFrameworkVue) { _%>
27
+ resolve: {
28
+ fallback: {
29
+ // Workaround https://github.com/module-federation/universe/issues/1575
30
+ path: false,
31
+ },
32
+ },
31
33
  <%_ } _%>
34
+ <&_ } -&>
35
+
36
+ <&_ if (fragment.moduleFederationSection) { -&>
32
37
  <%_ if (applicationTypeMicroservice) { _%>
33
38
  exposes: {
34
39
  './entities-router': './<%= this.relativeDir(clientRootDir, clientSrcDir) %>app/router/entities',
@@ -36,35 +41,15 @@ const { DefinePlugin } = require('webpack');
36
41
  },
37
42
  <%_ } _%>
38
43
  shared: {
39
- '@vuelidate/core': { singleton: true, shareScope: 'default' },
40
- '@vuelidate/validators': { singleton: true, shareScope: 'default' },
41
- axios: { singleton: true, shareScope: 'default' },
42
- 'vue-loader': { eager: true, singleton: false, shareScope: 'default' },
43
- 'bootstrap-vue': { singleton: true, shareScope: 'default' },
44
- vue: { singleton: true, shareScope: 'default' },
45
- 'vue-i18n': { singleton: true, shareScope: 'default' },
46
- 'vue-router': { singleton: true, shareScope: 'default' },
47
- pinia: { singleton: true, shareScope: 'default' },
48
- '@/shared/security/authority': {
49
- singleton: true,
50
- shareScope: 'default',
51
- import: '@/shared/security/authority',
52
- requiredVersion: appVersion,
53
- },
54
- '@/shared/alert/alert.service': {
55
- singleton: true,
56
- shareScope: 'default',
57
- import: '@/shared/alert/alert.service',
58
- requiredVersion: appVersion,
59
- },
60
- '@/locale/translation.service': {
61
- singleton: true,
62
- shareScope: 'default',
63
- import: '@/locale/translation.service',
64
- requiredVersion: appVersion,
65
- },
44
+ ...shareDependencies(),
45
+ ...shareMappings(
46
+ '@/shared/security/authority',
47
+ '@/shared/alert/alert.service',
48
+ '@/locale/translation.service',
49
+ ),
66
50
  },
67
51
  <&_ } -&>
52
+
68
53
  <&_ if (fragment.pluginsSection) { -&>
69
54
  <%_ if (applicationTypeMicroservice) { _%>
70
55
  new DefinePlugin({
@@ -41,6 +41,7 @@ function createJSONEntities(jdlEntities) {
41
41
  entityName,
42
42
  entityTableName: getTableNameFromEntityName(jdlEntity.tableName),
43
43
  documentation: formatComment(jdlEntity.comment),
44
+ annotations: jdlEntity.annotations,
44
45
  }));
45
46
  });
46
47
  return convertedEntities;
@@ -91,7 +91,7 @@ function getJSONOptionKeyAndValue(jdlOption) {
91
91
  case FILTER:
92
92
  return { key: 'jpaMetamodelFiltering', value: true };
93
93
  default:
94
- return { key: jdlOption.name, value: jdlOption.value || true };
94
+ return { key: jdlOption.name, value: jdlOption.getType() === 'UNARY' ? true : jdlOption.value };
95
95
  }
96
96
  }
97
97
  function preventEntitiesFromBeingSearched(entityNames) {
@@ -101,7 +101,7 @@ function preventEntitiesFromBeingSearched(entityNames) {
101
101
  }
102
102
  function setOptionToEntityName(option, entityName) {
103
103
  const { optionName, optionValue } = option;
104
- const optionContentForEntity = convertedOptionContent.get(entityName) || {};
104
+ const optionContentForEntity = convertedOptionContent.get(entityName) ?? {};
105
105
  optionContentForEntity[optionName] = optionValue;
106
106
  convertedOptionContent.set(entityName, optionContentForEntity);
107
107
  }
@@ -53,7 +53,7 @@ function getRelatedRelationships(relationships, entityNames) {
53
53
  relationshipsRelatedToEntity.from.push(jdlRelationship);
54
54
  }
55
55
  if (jdlRelationship.to === entityName &&
56
- (jdlRelationship.injectedFieldInTo || Object.keys(jdlRelationship.options.destination).length !== 0)) {
56
+ (jdlRelationship.injectedFieldInTo || Object.keys(jdlRelationship.options.source).length !== 0)) {
57
57
  relationshipsRelatedToEntity.to.push(jdlRelationship);
58
58
  }
59
59
  });
@@ -36,7 +36,7 @@ export default {
36
36
  */
37
37
  export function convert(args = {}) {
38
38
  if (!args.jdlObject || !args.applicationName || !args.databaseType) {
39
- throw new Error("The JDL object, the application's name and its the database type are mandatory.");
39
+ throw new Error("The JDL object, the application's name, and its the database type are mandatory.");
40
40
  }
41
41
  init(args);
42
42
  setBasicEntityInformation();
@@ -80,7 +80,7 @@ function getJDLObjectFromMultipleApplications(directory) {
80
80
  });
81
81
  return jdlObject;
82
82
  }
83
- function getJDLObjectFromSingleApplication(yoRcFileContent, entities, existingJDLObject = new JDLObject()) {
83
+ export function getJDLObjectFromSingleApplication(yoRcFileContent, entities, existingJDLObject = new JDLObject()) {
84
84
  const cleanedYoRcFileContent = cleanYoRcFileContent(yoRcFileContent);
85
85
  const jdlApplication = convertApplicationToJDL({ application: cleanedYoRcFileContent });
86
86
  if (!entities) {
@@ -71,6 +71,7 @@ function convertJSONToJDLEntity(entity, entityName) {
71
71
  name: entityName,
72
72
  tableName: entity.entityTableName,
73
73
  comment: entity.documentation,
74
+ annotations: entity.annotations,
74
75
  });
75
76
  addFields(jdlEntity, entity);
76
77
  return jdlEntity;
@@ -31,8 +31,7 @@ export function convertApplications(parsedApplications) {
31
31
  throw new Error('Applications have to be passed so as to be converted.');
32
32
  }
33
33
  return parsedApplications.map(parsedApplication => {
34
- const formattedApplicationConfiguration = formatApplicationConfigurationOptions(parsedApplication.config);
35
- const jdlApplication = createJDLApplication(formattedApplicationConfiguration);
34
+ const jdlApplication = createJDLApplication(parsedApplication.config, parsedApplication.namespaceConfigs);
36
35
  jdlApplication.addEntityNames(parsedApplication.entities);
37
36
  const entityOptions = getEntityOptionsInApplication(parsedApplication);
38
37
  checkEntityNamesInOptions(jdlApplication.getConfigurationOptionValue(BASE_NAME), entityOptions, parsedApplication.entities);
@@ -40,21 +39,6 @@ export function convertApplications(parsedApplications) {
40
39
  return jdlApplication;
41
40
  });
42
41
  }
43
- function formatApplicationConfigurationOptions(applicationConfiguration) {
44
- const formattedOptions = {};
45
- if (Array.isArray(applicationConfiguration.blueprints)) {
46
- formattedOptions.blueprints = applicationConfiguration.blueprints.map(blueprintName => {
47
- if (!/^generator-jhipster-/.test(blueprintName)) {
48
- return `generator-jhipster-${blueprintName}`;
49
- }
50
- return blueprintName;
51
- });
52
- }
53
- return {
54
- ...applicationConfiguration,
55
- ...formattedOptions,
56
- };
57
- }
58
42
  function getEntityOptionsInApplication(parsedApplication) {
59
43
  return convertOptions(parsedApplication.options, parsedApplication.useOptions);
60
44
  }
@@ -16,6 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import { lowerFirst } from 'lodash-es';
19
20
  import { JDLEntity } from '../../models/index.mjs';
20
21
  import { formatComment } from '../../utils/format-utils.js';
21
22
  export default { convertEntities };
@@ -34,6 +35,10 @@ export function convertEntities(parsedEntities, jdlFieldGetterFunction) {
34
35
  name: parsedEntity.name,
35
36
  tableName: parsedEntity.tableName || parsedEntity.name,
36
37
  comment: formatComment(parsedEntity.documentation),
38
+ annotations: Object.fromEntries(parsedEntity.annotations?.map(annotation => [
39
+ lowerFirst(annotation.optionName),
40
+ annotation.type === 'UNARY' ? true : annotation.optionValue,
41
+ ]) ?? []),
37
42
  });
38
43
  const jdlFields = jdlFieldGetterFunction.call(undefined, parsedEntity);
39
44
  jdlEntity.addFields(jdlFields);
@@ -18,7 +18,6 @@
18
18
  */
19
19
  import * as _ from 'lodash-es';
20
20
  import JDLObject from '../../models/jdl-object.js';
21
- import JDLUnaryOption from '../../models/jdl-unary-option.js';
22
21
  import JDLBinaryOption from '../../models/jdl-binary-option.js';
23
22
  import { applicationTypes, binaryOptions } from '../../jhipster/index.mjs';
24
23
  import { convertApplications } from './application-converter.js';
@@ -97,7 +96,6 @@ function fillClassesAndFields() {
97
96
  jdlEntities.forEach(jdlEntity => {
98
97
  jdlObject.addEntity(jdlEntity);
99
98
  });
100
- addOptionsFromEntityAnnotations();
101
99
  }
102
100
  function getJDLFieldsFromParsedEntity(entity) {
103
101
  const fields = [];
@@ -110,31 +108,6 @@ function getJDLFieldsFromParsedEntity(entity) {
110
108
  }
111
109
  return fields;
112
110
  }
113
- function addOptionsFromEntityAnnotations() {
114
- parsedContent.entities.forEach(entity => {
115
- const entityName = entity.name;
116
- const annotations = entity.annotations;
117
- annotations.forEach(annotation => {
118
- let annotationName = _.lowerFirst(annotation.optionName);
119
- if (annotation.type === 'UNARY') {
120
- jdlObject.addOption(new JDLUnaryOption({
121
- name: annotationName,
122
- entityNames: [entityName],
123
- }));
124
- }
125
- else if (annotation.type === 'BINARY') {
126
- if (annotationName === 'paginate') {
127
- annotationName = binaryOptions.Options.PAGINATION;
128
- }
129
- jdlObject.addOption(new JDLBinaryOption({
130
- name: annotationName,
131
- value: annotation.optionValue,
132
- entityNames: [entityName],
133
- }));
134
- }
135
- });
136
- });
137
- }
138
111
  function getValidations(field) {
139
112
  return convertValidations(field.validations, getConstantValueFromConstantName).reduce((jdlValidations, jdlValidation) => {
140
113
  jdlValidations[jdlValidation.name] = jdlValidation;
@@ -51,7 +51,10 @@ function setUpApplicationStructure(application) {
51
51
  [GENERATOR_NAME]: {},
52
52
  };
53
53
  applicationToExport[GENERATOR_NAME] = getApplicationConfig(application);
54
- applicationToExport.entities = application.getEntityNames();
54
+ if (application.namespaceConfigs.length > 0) {
55
+ applicationToExport.namespaceConfigs = getApplicationNamespaceConfig(application);
56
+ }
57
+ applicationToExport[GENERATOR_NAME].entities = application.getEntityNames();
55
58
  if (application.hasConfigurationOption('creationTimestamp')) {
56
59
  applicationToExport[GENERATOR_NAME].creationTimestamp = parseInt(application.getConfigurationOptionValue('creationTimestamp'), 10);
57
60
  }
@@ -65,6 +68,19 @@ function getApplicationConfig(application) {
65
68
  });
66
69
  return result;
67
70
  }
71
+ function getApplicationNamespaceConfig(application) {
72
+ if (application.namespaceConfigs.length === 0) {
73
+ return undefined;
74
+ }
75
+ const result = {};
76
+ application.forEachNamespaceConfiguration(configurationOption => {
77
+ result[configurationOption.namespace] = result[configurationOption.namespace] ?? {};
78
+ configurationOption.forEachOption(option => {
79
+ result[configurationOption.namespace][option.name] = option.getValue();
80
+ });
81
+ });
82
+ return result;
83
+ }
68
84
  function cleanUpOptions(application) {
69
85
  if (!application[GENERATOR_NAME].frontEndBuilder) {
70
86
  delete application[GENERATOR_NAME].frontEndBuilder;
@@ -0,0 +1,11 @@
1
+ import { GENERATOR_NAME } from './export-utils.js';
2
+ export const mergeYoRcContent = (oldConfig, newConfig) => {
3
+ const merged = { [GENERATOR_NAME]: {} };
4
+ for (const ns of new Set([...Object.keys(oldConfig), ...Object.keys(newConfig)])) {
5
+ merged[ns] = { ...oldConfig[ns], ...newConfig[ns] };
6
+ }
7
+ if (oldConfig[GENERATOR_NAME]?.creationTimestamp) {
8
+ merged[GENERATOR_NAME].creationTimestamp = oldConfig[GENERATOR_NAME].creationTimestamp;
9
+ }
10
+ return merged;
11
+ };
@@ -18,6 +18,7 @@
18
18
  */
19
19
  import fs from 'fs';
20
20
  import { doesFileExist } from '../utils/file-utils.js';
21
+ import { mergeYoRcContent } from './config.js';
21
22
  export const GENERATOR_NAME = 'generator-jhipster';
22
23
  /**
23
24
  * This function writes a Yeoman config file in the current folder.
@@ -28,19 +29,7 @@ export function writeConfigFile(config, yoRcPath = '.yo-rc.json') {
28
29
  let newYoRc = { ...config };
29
30
  if (doesFileExist(yoRcPath)) {
30
31
  const yoRc = JSON.parse(fs.readFileSync(yoRcPath, { encoding: 'utf-8' }));
31
- let creationTimestamp = config[GENERATOR_NAME].creationTimestamp;
32
- if (yoRc[GENERATOR_NAME] && yoRc[GENERATOR_NAME].creationTimestamp) {
33
- creationTimestamp = yoRc[GENERATOR_NAME].creationTimestamp;
34
- }
35
- newYoRc = {
36
- ...yoRc,
37
- ...config,
38
- [GENERATOR_NAME]: {
39
- ...yoRc[GENERATOR_NAME],
40
- ...config[GENERATOR_NAME],
41
- creationTimestamp,
42
- },
43
- };
32
+ newYoRc = mergeYoRcContent(yoRc, config);
44
33
  }
45
34
  fs.writeFileSync(yoRcPath, JSON.stringify(newYoRc, null, 2).concat('\n'));
46
35
  }
@@ -63,8 +63,9 @@ function updateEntities(subFolder) {
63
63
  function updateEntityToGenerateWithExistingOne(filePath, entity) {
64
64
  if (doesFileExist(filePath)) {
65
65
  const fileOnDisk = readJSONFile(filePath);
66
- if (fileOnDisk && fileOnDisk.changelogDate) {
67
- entity.changelogDate = fileOnDisk.changelogDate;
66
+ if (!entity.annotations?.changelogDate && fileOnDisk?.annotations?.changelogDate) {
67
+ entity.annotations = entity.annotations || {};
68
+ entity.annotations.changelogDate = fileOnDisk.annotations.changelogDate;
68
69
  return { ...fileOnDisk, ...entity };
69
70
  }
70
71
  }
package/dist/jdl/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './jdl-importer.js';
2
2
  export * from './parsing/api.js';
3
3
  export * from './jhipster/index.mjs';
4
+ export * from './exporters/config.js';
@@ -204,8 +204,10 @@ function importOneApplicationAndEntities(jdlObject, configuration) {
204
204
  jdlObject,
205
205
  });
206
206
  const jsonEntities = entitiesPerApplicationMap.get(applicationName);
207
+ const { 'generator-jhipster': config, ...remaining } = formattedApplication;
207
208
  importState.exportedApplicationsWithEntities[applicationName] = {
208
- config: formattedApplication['generator-jhipster'],
209
+ config,
210
+ ...remaining,
209
211
  entities: [],
210
212
  };
211
213
  if (jsonEntities.length !== 0) {
@@ -239,8 +241,10 @@ function importApplicationsAndEntities(jdlObject, configuration) {
239
241
  forSeveralApplications: true,
240
242
  });
241
243
  const exportedConfig = importState.exportedApplications.find(config => applicationName === config['generator-jhipster'].baseName);
244
+ const { 'generator-jhipster': config, ...remaining } = exportedConfig;
242
245
  importState.exportedApplicationsWithEntities[applicationName] = {
243
- config: exportedConfig['generator-jhipster'],
246
+ config,
247
+ ...remaining,
244
248
  entities: exportedJSONEntities,
245
249
  };
246
250
  importState.exportedEntities = uniqBy([...importState.exportedEntities, ...exportedJSONEntities], 'name');
@@ -121,7 +121,7 @@ export function getConfigForTranslation(options = {}) {
121
121
  options[NATIVE_LANGUAGE] = 'en';
122
122
  }
123
123
  if (options[ENABLE_TRANSLATION] && options[LANGUAGES] === undefined) {
124
- options[LANGUAGES] = ['en', 'fr'];
124
+ options[LANGUAGES] = [];
125
125
  }
126
126
  return options;
127
127
  }
@@ -40,7 +40,7 @@ export const CommonDBTypes = {
40
40
  TEXT_BLOB: 'TextBlob',
41
41
  INSTANT: 'Instant',
42
42
  DURATION: 'Duration',
43
- BYTES: 'byte[]',
43
+ BYTES: 'byte[]', // Supported by mongodb at CI samples
44
44
  BYTE_BUFFER: 'ByteBuffer', // Supported by cassandra at CI samples
45
45
  };
46
46
  export const RelationalOnlyDBTypes = {