generator-jhipster 8.0.0 → 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 (258) hide show
  1. package/README.md +61 -57
  2. package/dist/cli/environment-builder.mjs +11 -4
  3. package/dist/cli/program.mjs +1 -1
  4. package/dist/generators/angular/cleanup.mjs +7 -0
  5. package/dist/generators/angular/files-angular.mjs +3 -4
  6. package/dist/generators/angular/generator.mjs +2 -15
  7. package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
  8. package/dist/generators/angular/resources/package.json +23 -23
  9. package/dist/generators/angular/support/translate-angular.mjs +2 -2
  10. package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
  11. package/dist/generators/angular/templates/angular.json.ejs +3 -7
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
  20. package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
  21. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
  41. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
  42. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
  43. package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
  44. package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
  45. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
  46. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
  48. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
  49. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
  50. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
  51. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +38 -25
  52. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
  53. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
  54. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
  58. package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
  59. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
  60. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
  61. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
  62. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
  63. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
  64. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
  65. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  66. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
  67. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
  68. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
  69. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
  70. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
  71. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
  72. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
  73. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
  74. package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
  75. package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
  76. package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +2 -2
  77. package/dist/generators/app/README.md +108 -0
  78. package/dist/generators/app/USAGE +3 -0
  79. package/dist/generators/app/command.mjs +3 -3
  80. package/dist/generators/app/generator.mjs +11 -0
  81. package/dist/generators/base/command.mjs +0 -11
  82. package/dist/generators/base-application/generator.mjs +5 -6
  83. package/dist/generators/base-application/support/entities.mjs +2 -2
  84. package/dist/generators/base-application/support/index.mjs +1 -0
  85. package/dist/generators/base-application/support/prepare-entity.mjs +0 -1
  86. package/dist/generators/base-application/support/prepare-relationship.mjs +4 -0
  87. package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
  88. package/dist/generators/base-core/generator.mjs +17 -4
  89. package/dist/generators/base-entity-changes/generator.mjs +1 -1
  90. package/dist/generators/bootstrap/command.mjs +6 -0
  91. package/dist/generators/bootstrap/generator.mjs +27 -9
  92. package/dist/generators/bootstrap-application/generator.mjs +1 -19
  93. package/dist/generators/bootstrap-application-base/command.mjs +30 -0
  94. package/dist/generators/bootstrap-application-base/generator.mjs +27 -5
  95. package/dist/generators/bootstrap-application-base/index.mjs +1 -0
  96. package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
  97. package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
  98. package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
  99. package/dist/generators/client/command.mjs +2 -0
  100. package/dist/generators/client/resources/package.json +4 -4
  101. package/dist/generators/client/support/entity-definition.mjs +3 -3
  102. package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
  103. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
  104. package/dist/generators/common/command.mjs +2 -0
  105. package/dist/generators/common/resources/package.json +3 -3
  106. package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
  107. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
  108. package/dist/generators/docker/generator.mjs +1 -1
  109. package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
  110. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
  111. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
  112. package/dist/generators/docker-compose/generator.mjs +4 -11
  113. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
  114. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
  115. package/dist/generators/export-jdl/generator.mjs +1 -1
  116. package/dist/generators/feign-client/cleanup.mjs +12 -0
  117. package/dist/generators/feign-client/files.mjs +35 -0
  118. package/dist/generators/feign-client/generator.mjs +65 -0
  119. package/dist/generators/feign-client/index.mjs +19 -0
  120. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
  121. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
  122. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
  123. package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
  124. package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
  125. package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
  126. package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
  127. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
  128. package/dist/generators/generate-blueprint/command.mjs +1 -1
  129. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  130. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
  131. package/dist/generators/generator-constants.mjs +9 -5
  132. package/dist/generators/generator-list.mjs +1 -0
  133. package/dist/generators/git/generator.mjs +3 -5
  134. package/dist/generators/gradle/constants.mjs +1 -1
  135. package/dist/generators/java/command.mjs +6 -0
  136. package/dist/generators/java/entity-files.mjs +4 -0
  137. package/dist/generators/java/generator.mjs +3 -2
  138. package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
  139. package/dist/generators/jdl/generator.mjs +18 -23
  140. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
  141. package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
  142. package/dist/generators/languages/generator.mjs +24 -15
  143. package/dist/generators/languages/prompts.mjs +3 -1
  144. package/dist/generators/languages/support/translate.mjs +1 -1
  145. package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
  146. package/dist/generators/liquibase/README.md +19 -0
  147. package/dist/generators/project-name/generator.mjs +14 -19
  148. package/dist/generators/project-name/support/name-resolver.mjs +35 -6
  149. package/dist/generators/react/resources/package.json +24 -24
  150. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
  151. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
  152. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +12 -13
  153. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
  154. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
  155. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +1 -1
  156. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
  157. package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
  158. package/dist/generators/server/cleanup.mjs +5 -0
  159. package/dist/generators/server/command.mjs +13 -2
  160. package/dist/generators/server/entity-files.mjs +3 -3
  161. package/dist/generators/server/files.mjs +2 -38
  162. package/dist/generators/server/generator.mjs +35 -19
  163. package/dist/generators/server/jdl/application-definition.mjs +5 -2
  164. package/dist/generators/server/options/feign-client.mjs +24 -0
  165. package/dist/generators/server/options/index.mjs +1 -0
  166. package/dist/generators/server/resources/Dockerfile +16 -16
  167. package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
  168. package/dist/generators/server/resources/pom.xml +11 -11
  169. package/dist/generators/server/support/config.mjs +1 -0
  170. package/dist/generators/server/support/prepare-entity.mjs +4 -1
  171. package/dist/generators/server/templates/build.gradle.ejs +1 -2
  172. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
  173. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
  174. package/dist/generators/server/templates/pom.xml.ejs +1 -4
  175. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +7 -7
  176. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
  177. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
  178. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
  179. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +3 -3
  180. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +20 -2
  181. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +4 -1
  182. package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
  183. package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -12
  184. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
  185. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
  186. package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
  187. package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +3 -3
  188. package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -6
  189. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
  190. package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
  191. package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +8 -8
  192. package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
  193. package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
  194. package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
  195. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
  196. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
  197. package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
  198. package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
  199. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
  200. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -1
  201. package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
  202. package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
  203. package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +1 -1
  204. package/dist/generators/spring-data-relational/README.md +7 -0
  205. package/dist/generators/spring-data-relational/generator.mjs +2 -1
  206. package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
  207. package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
  208. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
  209. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
  210. package/dist/generators/upgrade/generator.mjs +3 -3
  211. package/dist/generators/vue/resources/package.json +21 -21
  212. package/dist/generators/vue/templates/package.json.ejs +1 -0
  213. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
  214. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
  215. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
  216. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
  217. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +2 -7
  218. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
  219. package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
  220. package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
  221. package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
  222. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
  223. package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
  224. package/dist/jdl/jhipster/default-application-options.js +1 -1
  225. package/dist/jdl/jhipster/field-types.js +1 -1
  226. package/dist/jdl/jhipster/json-entity.js +6 -0
  227. package/dist/jdl/models/jdl-entity.js +16 -1
  228. package/dist/jdl/models/jdl-field.js +13 -0
  229. package/dist/jdl/models/jdl-object.js +3 -3
  230. package/dist/jdl/models/jdl-relationship.js +23 -5
  231. package/dist/jdl/parsing/lexer/application-tokens.js +1 -1
  232. package/dist/testing/helpers.mjs +10 -3
  233. package/dist/types/cli/environment-builder.d.mts +2 -0
  234. package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
  235. package/dist/types/generators/base/api.d.mts +12 -0
  236. package/dist/types/generators/base/support/needles.d.mts +1 -1
  237. package/dist/types/generators/base-application/generator.d.mts +2 -2
  238. package/dist/types/generators/base-application/support/index.d.mts +1 -0
  239. package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
  240. package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
  241. package/dist/types/generators/base-core/generator.d.mts +7 -1
  242. package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
  243. package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
  244. package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
  245. package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
  246. package/dist/types/generators/feign-client/types-export.d.ts +1 -0
  247. package/dist/types/generators/generator-constants.d.mts +52 -48
  248. package/dist/types/generators/generator-list.d.mts +1 -0
  249. package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
  250. package/dist/types/generators/server/options/feign-client.d.mts +21 -0
  251. package/dist/types/generators/server/options/index.d.mts +1 -0
  252. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
  253. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
  254. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
  255. package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
  256. package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
  257. package/dist/types/jdl/types/types.d.mts +2 -2
  258. package/package.json +27 -27
@@ -69,7 +69,7 @@ public class SqlTestContainersSpringContextCustomizerFactory implements ContextC
69
69
  }
70
70
  }
71
71
  <%_ if (reactive) { _%>
72
- testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
72
+ testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMariadb) { %>.replace("mariadb", "mysql")<% } else if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
73
73
  testValues = testValues.and("spring.r2dbc.username=" + prodTestContainer.getTestContainer().getUsername());
74
74
  testValues = testValues.and("spring.r2dbc.password=" + prodTestContainer.getTestContainer().getPassword());
75
75
  testValues = testValues.and("spring.liquibase.url=" + prodTestContainer.getTestContainer().getJdbcUrl() + "<%- prodDatabaseExtraOptions %>");
@@ -152,11 +152,11 @@ export default class UpgradeGenerator extends BaseGenerator {
152
152
  const noPackageLockParam = '--no-package-lock';
153
153
  const generatorCommand = `${commandPrefix} ${npmPackage}@${version} ${devDependencyParam} ${noPackageLockParam} --ignore-scripts --force`;
154
154
  this.log.verboseInfo(generatorCommand);
155
- const npmIntall = this.spawnCommandSync(generatorCommand, { stdio: 'pipe', reject: false });
156
- if (npmIntall.exitCode === 0)
155
+ const npmInstall = this.spawnCommandSync(generatorCommand, { stdio: 'pipe', reject: false });
156
+ if (npmInstall.exitCode === 0)
157
157
  this.log.ok(`Installed ${npmPackage}@${version}`);
158
158
  else
159
- throw new Error(`Something went wrong while installing ${npmPackage}! ${npmIntall.stdout} ${npmIntall.stderr}`);
159
+ throw new Error(`Something went wrong while installing ${npmPackage}! ${npmInstall.stdout} ${npmInstall.stderr}`);
160
160
  }
161
161
  get [BaseGenerator.CONFIGURING]() {
162
162
  return this.asConfiguringTaskGroup({
@@ -1,33 +1,33 @@
1
1
  {
2
2
  "dependencies": {
3
- "@fortawesome/fontawesome-svg-core": "6.4.2",
4
- "@fortawesome/free-solid-svg-icons": "6.4.2",
5
- "@fortawesome/vue-fontawesome": "3.0.3",
3
+ "@fortawesome/fontawesome-svg-core": "6.5.1",
4
+ "@fortawesome/free-solid-svg-icons": "6.5.1",
5
+ "@fortawesome/vue-fontawesome": "3.0.5",
6
6
  "@vuelidate/core": "2.0.3",
7
7
  "@vuelidate/validators": "2.0.4",
8
- "@vueuse/core": "10.5.0",
9
- "axios": "1.6.0",
8
+ "@vueuse/core": "10.7.0",
9
+ "axios": "1.6.2",
10
10
  "bootstrap": "4.6.2",
11
11
  "bootstrap-vue": "2.23.1",
12
12
  "bootswatch": "5.3.2",
13
13
  "deepmerge": "4.3.1",
14
14
  "js-cookie": "3.0.5",
15
15
  "pinia": "2.1.7",
16
- "vue": "3.3.7",
17
- "vue-i18n": "9.6.2",
16
+ "vue": "3.3.11",
17
+ "vue-i18n": "9.8.0",
18
18
  "vue-router": "4.2.5"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@module-federation/utilities": "3.0.3-0",
22
22
  "@pinia/testing": "0.1.3",
23
- "@rushstack/eslint-patch": "1.5.1",
23
+ "@rushstack/eslint-patch": "1.6.0",
24
24
  "@tsconfig/node18": "18.2.2",
25
- "@types/node": "18.18.8",
26
- "@types/sinon": "10.0.20",
27
- "@vitejs/plugin-vue": "4.4.0",
25
+ "@types/node": "18.19.3",
26
+ "@types/sinon": "17.0.2",
27
+ "@vitejs/plugin-vue": "4.5.2",
28
28
  "@vue/eslint-config-prettier": "8.0.0",
29
29
  "@vue/eslint-config-typescript": "10.0.0",
30
- "@vue/test-utils": "2.4.1",
30
+ "@vue/test-utils": "2.4.3",
31
31
  "@vue/tsconfig": "0.4.0",
32
32
  "autoprefixer": "10.4.16",
33
33
  "axios-mock-adapter": "1.22.0",
@@ -35,13 +35,13 @@
35
35
  "copy-webpack-plugin": "11.0.0",
36
36
  "css-loader": "6.8.1",
37
37
  "css-minimizer-webpack-plugin": "5.0.1",
38
- "eslint": "8.52.0",
38
+ "eslint": "8.55.0",
39
39
  "eslint-plugin-prettier": "5.0.1",
40
40
  "eslint-plugin-vue": "8.7.1",
41
41
  "flush-promises": "1.0.2",
42
42
  "folder-hash": "4.0.4",
43
43
  "happy-dom": "12.10.3",
44
- "html-webpack-plugin": "5.5.3",
44
+ "html-webpack-plugin": "5.5.4",
45
45
  "merge-jsons-webpack-plugin": "2.0.1",
46
46
  "mini-css-extract-plugin": "2.7.6",
47
47
  "numeral": "2.0.6",
@@ -54,16 +54,16 @@
54
54
  "sass-loader": "13.3.2",
55
55
  "sinon": "17.0.1",
56
56
  "terser-webpack-plugin": "5.3.9",
57
- "ts-loader": "9.5.0",
58
- "typescript": "5.2.2",
59
- "vite": "4.5.0",
60
- "vitest": "0.34.6",
61
- "vitest-sonar-reporter": "0.5.0",
57
+ "ts-loader": "9.5.1",
58
+ "typescript": "5.3.3",
59
+ "vite": "5.0.7",
60
+ "vitest": "1.0.4",
61
+ "vitest-sonar-reporter": "1.0.0",
62
62
  "vue-loader": "17.3.1",
63
63
  "vue-style-loader": "4.1.3",
64
- "vue-tsc": "1.8.22",
64
+ "vue-tsc": "1.8.25",
65
65
  "webpack": "5.89.0",
66
- "webpack-bundle-analyzer": "4.9.1",
66
+ "webpack-bundle-analyzer": "4.10.1",
67
67
  "webpack-cli": "5.1.4",
68
68
  "webpack-dev-server": "4.15.1",
69
69
  "webpack-merge": "5.10.0",
@@ -156,6 +156,7 @@
156
156
  <%_ } else { %>
157
157
  "webapp:build:dev": "<%= clientPackageManager %> run vite-build",
158
158
  "webapp:build:prod": "<%= clientPackageManager %> run vite-build",
159
+ "webapp:dev": "<%= clientPackageManager %> run vite-serve",
159
160
  "webapp:serve": "<%= clientPackageManager %> run vite-serve",
160
161
  <%_ } %>
161
162
  "webapp:prod": "<%= clientPackageManager %> run clean-www && <%= clientPackageManager %> run webapp:build:prod --",
@@ -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<% } %>>
@@ -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) { _%>
@@ -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;
@@ -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;
@@ -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;
@@ -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
  }
@@ -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 = {
@@ -22,6 +22,7 @@ import { upperFirst } from '../utils/string-utils.js';
22
22
  * The JSONEntity class represents a read-to-be exported to JSON entity.
23
23
  */
24
24
  class JSONEntity {
25
+ annotations;
25
26
  /**
26
27
  * Creates a new JSONEntity instance.
27
28
  * @param args the entity configuration, keys:
@@ -46,6 +47,7 @@ class JSONEntity {
46
47
  const merged = merge(getDefaults(args.entityName), args);
47
48
  this.name = merged.name;
48
49
  this.fields = merged.fields;
50
+ this.annotations = merged.annotations;
49
51
  this.relationships = merged.relationships;
50
52
  this.documentation = merged.documentation;
51
53
  this.entityTableName = merged.entityTableName;
@@ -100,6 +102,9 @@ class JSONEntity {
100
102
  this[optionName] = options[optionName];
101
103
  });
102
104
  }
105
+ setAnnotations(annotations = {}) {
106
+ Object.assign(this.annotations, annotations);
107
+ }
103
108
  }
104
109
  export default JSONEntity;
105
110
  function getDefaults(entityName) {
@@ -108,5 +113,6 @@ function getDefaults(entityName) {
108
113
  fields: [],
109
114
  relationships: [],
110
115
  applications: [],
116
+ annotations: {},
111
117
  };
112
118
  }
@@ -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 { upperFirst } from 'lodash-es';
19
20
  import { merge } from '../utils/object-utils.js';
20
21
  import getTableNameFromEntityName from '../jhipster/entity-table-name-creator.js';
21
22
  export default class JDLEntity {
@@ -23,6 +24,7 @@ export default class JDLEntity {
23
24
  tableName;
24
25
  fields;
25
26
  comment;
27
+ annotations;
26
28
  constructor(args) {
27
29
  const merged = merge(defaults(), args);
28
30
  if (!merged.name) {
@@ -32,6 +34,7 @@ export default class JDLEntity {
32
34
  this.tableName = merged.tableName || merged.name;
33
35
  this.fields = merged.fields;
34
36
  this.comment = merged.comment;
37
+ this.annotations = merged.annotations ?? {};
35
38
  }
36
39
  /**
37
40
  * Adds the fields to the entity.
@@ -60,6 +63,18 @@ export default class JDLEntity {
60
63
  .map(line => ` * ${line}\n`)
61
64
  .join('')} */\n`;
62
65
  }
66
+ Object.entries(this.annotations).forEach(([key, value]) => {
67
+ key = upperFirst(key);
68
+ if (value === true) {
69
+ stringifiedEntity += `@${key}\n`;
70
+ }
71
+ else if (typeof value === 'string') {
72
+ stringifiedEntity += `@${key}("${value}")\n`;
73
+ }
74
+ else {
75
+ stringifiedEntity += `@${key}(${value})\n`;
76
+ }
77
+ });
63
78
  stringifiedEntity += `entity ${this.name}`;
64
79
  if (this.tableName && getTableNameFromEntityName(this.name) !== getTableNameFromEntityName(this.tableName)) {
65
80
  stringifiedEntity += ` (${this.tableName})`;
@@ -73,7 +88,7 @@ export default class JDLEntity {
73
88
  function defaults() {
74
89
  return {
75
90
  fields: {},
76
- options: [],
91
+ annotations: {},
77
92
  };
78
93
  }
79
94
  function formatFieldObjects(jdlFieldObjects) {
@@ -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 { upperFirst } from 'lodash-es';
19
20
  import { merge } from '../utils/object-utils.js';
20
21
  export default class JDLField {
21
22
  name;
@@ -66,6 +67,18 @@ export default class JDLField {
66
67
  .map(line => ` * ${line}\n`)
67
68
  .join('')} */\n`;
68
69
  }
70
+ Object.entries(this.options ?? {}).forEach(([key, value]) => {
71
+ key = upperFirst(key);
72
+ if (value === true) {
73
+ string += `@${key}\n`;
74
+ }
75
+ else if (typeof value === 'string') {
76
+ string += `@${key}("${value}")\n`;
77
+ }
78
+ else {
79
+ string += `@${key}(${value})\n`;
80
+ }
81
+ });
69
82
  string += `${this.name} ${this.type}`;
70
83
  Object.keys(this.validations).forEach(validationName => {
71
84
  string += ` ${this.validations[validationName].toString()}`;
@@ -229,10 +229,10 @@ export default class JDLObject {
229
229
  string += `${this.enums.toString()}\n`;
230
230
  }
231
231
  if (this.getRelationshipQuantity() !== 0) {
232
- string += `${relationshipsToString(this.relationships)}\n`;
232
+ string += `${relationshipsToString(this.relationships)}`;
233
233
  }
234
234
  if (this.getOptionQuantity() !== 0) {
235
- string += `${optionsToString(this.options)}`;
235
+ string += `\n${optionsToString(this.options)}`;
236
236
  }
237
237
  return string;
238
238
  }
@@ -263,7 +263,7 @@ function relationshipsToString(relationships) {
263
263
  if (string === '') {
264
264
  return '';
265
265
  }
266
- return `${relationships.toString()}\n`;
266
+ return `${string}\n`;
267
267
  }
268
268
  function optionsToString(options) {
269
269
  const string = options.toString();
@@ -1,3 +1,22 @@
1
+ /**
2
+ * Copyright 2013-2023 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import { upperFirst } from 'lodash-es';
1
20
  import { Validations } from '../jhipster/index.mjs';
2
21
  import { relationshipTypeExists } from '../jhipster/relationship-types.js';
3
22
  const { REQUIRED } = Validations;
@@ -72,9 +91,9 @@ export default class JDLRelationship {
72
91
  if (Object.keys(sourceOptions).length !== 0) {
73
92
  Object.keys(sourceOptions).forEach(name => {
74
93
  const value = sourceOptions[name];
75
- string += ` @${name}${value != null && sourceOptions[name] !== true ? `(${value})` : ''}\n`;
94
+ name = upperFirst(name);
95
+ string += `@${name}${value != null && value !== true ? `(${value}) ` : ' '}`;
76
96
  });
77
- string += ' ';
78
97
  }
79
98
  string += `${this.from}`;
80
99
  if (this.injectedFieldInFrom) {
@@ -92,12 +111,11 @@ export default class JDLRelationship {
92
111
  }
93
112
  const destinationOptions = this.options.destination;
94
113
  if (Object.keys(destinationOptions).length !== 0) {
95
- string += '\n';
96
114
  Object.keys(destinationOptions).forEach(name => {
97
115
  const value = destinationOptions[name];
98
- string += ` @${name}${value != null && destinationOptions[name] !== true ? `(${value})` : ''}\n`;
116
+ name = upperFirst(name);
117
+ string += `@${name}${value != null && value !== true ? `(${value}) ` : ' '}`;
99
118
  });
100
- string += ' ';
101
119
  }
102
120
  string += `${this.to}`;
103
121
  if (this.injectedFieldInTo) {
@@ -55,7 +55,7 @@ const applicationConfigTokens = [
55
55
  { name: 'CLIENT_THEME', pattern: CLIENT_THEME },
56
56
  { name: 'WITH_ADMIN_UI', pattern: WITH_ADMIN_UI },
57
57
  { name: 'NATIVE_LANGUAGE', pattern: NATIVE_LANGUAGE },
58
- { name: 'FRONT_END_BUILDER', pattern: 'frontendBuilder' },
58
+ { name: 'FRONT_END_BUILDER', pattern: 'frontendBuilder' }, // TODO always valid?
59
59
  { name: 'SKIP_USER_MANAGEMENT', pattern: SKIP_USER_MANAGEMENT },
60
60
  { name: 'ENABLE_SWAGGER_CODEGEN', pattern: ENABLE_SWAGGER_CODEGEN },
61
61
  { name: 'REACTIVE', pattern: REACTIVE },
@@ -5,7 +5,7 @@ import EnvironmentBuilder from '../cli/environment-builder.mjs';
5
5
  import { JHIPSTER_CONFIG_DIR } from '../generators/generator-constants.mjs';
6
6
  import { GENERATOR_WORKSPACES } from '../generators/generator-list.mjs';
7
7
  import getGenerator from './get-generator.mjs';
8
- import { createJHipsterLogger, normalizePathEnd } from '../generators/base/support/index.mjs';
8
+ import { createJHipsterLogger, normalizePathEnd, parseCreationTimestamp } from '../generators/base/support/index.mjs';
9
9
  import BaseGenerator from '../generators/base/index.mjs';
10
10
  import { getPackageRoot, isDistFolder } from '../lib/index.mjs';
11
11
  const { set } = _;
@@ -76,7 +76,7 @@ class JHipsterRunContext extends RunContext {
76
76
  commonWorkspacesConfig;
77
77
  generateApplicationsSet = false;
78
78
  withJHipsterConfig(configuration, entities) {
79
- return this.withFiles(createFiles('', { baseName: 'jhipster', ...configuration }, entities));
79
+ return this.withFiles(createFiles('', { baseName: 'jhipster', creationTimestamp: parseCreationTimestamp('2020-01-01'), ...configuration }, entities));
80
80
  }
81
81
  withSkipWritingPriorities() {
82
82
  return this.withOptions({ skipPriorities: ['writing', 'postWriting', 'writingEntities', 'postWritingEntities'] });
@@ -261,7 +261,14 @@ export function createTestHelpers(options = {}) {
261
261
  helper.getRunContextType = () => JHipsterRunContext;
262
262
  return helper;
263
263
  }
264
- const commonTestOptions = { reproducible: true, skipChecks: true, reproducibleTests: true, noInsight: true };
264
+ const commonTestOptions = {
265
+ reproducible: true,
266
+ skipChecks: true,
267
+ reproducibleTests: true,
268
+ noInsight: true,
269
+ useVersionPlaceholders: true,
270
+ fakeKeytool: true,
271
+ };
265
272
  export const basicHelpers = createTestHelpers({ generatorOptions: { ...commonTestOptions } });
266
273
  export const defaultHelpers = createTestHelpers({
267
274
  generatorOptions: { skipPrettier: true, ...commonTestOptions },
@@ -35,6 +35,8 @@ export default class EnvironmentBuilder {
35
35
  */
36
36
  constructor(env: any);
37
37
  devBlueprintPath: any;
38
+ localBlueprintPath: any;
39
+ localBlueprintExists: any;
38
40
  env: any;
39
41
  prepare({ blueprints, lookups, devBlueprintPath }?: {
40
42
  blueprints: any;
@@ -3,7 +3,6 @@ export default class extends needleClientBase {
3
3
  addGlobalSCSSStyle(style: any, comment: any): void;
4
4
  addVendorSCSSStyle(style: any, comment: any): void;
5
5
  addModule(appName: any, angularName: any, folderName: any, fileName: any, enableTranslation: any): void;
6
- addToAdminModule(appName: any, adminAngularName: any, adminFolderName: any, adminFileName: any, enableTranslation: any): void;
7
6
  _genericAddModule(appName: any, angularName: any, folderName: any, fileName: any, enableTranslation: any, clientFramework: any, modulePath: any, importNeedle: any, moduleNeedle: any): void;
8
7
  _generateRewriteFileModelWithImportStatement(appName: any, angularName: any, folderName: any, fileName: any, modulePath: any, needle: any): import("../../needle-base.mjs").NeedleFileModel;
9
8
  _generateImportStatement(appName: any, angularName: any, folderName: any, fileName: any): string;