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
@@ -19,7 +19,7 @@
19
19
  /* eslint-disable consistent-return */
20
20
  import chalk from 'chalk';
21
21
  import BaseGenerator from '../base/index.mjs';
22
- import { GENERATOR_GIT, GENERATOR_PROJECT_NAME } from '../generator-list.mjs';
22
+ import { GENERATOR_GIT } from '../generator-list.mjs';
23
23
  import { files } from './files.mjs';
24
24
  import command from './command.mjs';
25
25
  /**
@@ -34,9 +34,6 @@ export default class InitGenerator extends BaseGenerator {
34
34
  if (!this.fromBlueprint) {
35
35
  await this.composeWithBlueprints(GENERATOR_GIT);
36
36
  }
37
- if (!this.delegateToBlueprint) {
38
- await this.dependsOnJHipster(GENERATOR_PROJECT_NAME);
39
- }
40
37
  }
41
38
  get initializing() {
42
39
  return this.asInitializingTaskGroup({
@@ -74,7 +71,7 @@ export default class InitGenerator extends BaseGenerator {
74
71
  }
75
72
  get postWriting() {
76
73
  return this.asPostWritingTaskGroup({
77
- /** Husky commit hook install at install priority requires git to be initilized */
74
+ /** Husky commit hook install at install priority requires git to be initialized */
78
75
  async initGitRepo() {
79
76
  if (!this.skipGit && !this.jhipsterConfig.monorepository) {
80
77
  await this.initializeGitRepository();
@@ -122,6 +119,7 @@ export default class InitGenerator extends BaseGenerator {
122
119
  this.log.warn(chalk.red.bold(`Application commit to Git failed from ${repositoryRoot}. Try to commit manually. (${e.message})`));
123
120
  }
124
121
  };
122
+ // @ts-expect-error keep compatibility with other adapters
125
123
  if (this.env.adapter.queue) {
126
124
  await this.env.adapter.queue(commitFiles);
127
125
  }
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- export const GRADLE_VERSION = '8.4';
19
+ export const GRADLE_VERSION = '8.5';
20
20
  export const GRADLE = 'gradle';
21
21
  export const GRADLE_DESCRIPTION = 'Gradle';
22
22
  export const BUILD_DESTINATION_VALUE = 'build';
@@ -24,6 +24,12 @@ const command = {
24
24
  scope: 'generator',
25
25
  hide: true,
26
26
  },
27
+ useJacksonIdentityInfo: {
28
+ type: Boolean,
29
+ default: false,
30
+ scope: 'generator',
31
+ hide: true,
32
+ },
27
33
  generateEnums: {
28
34
  type: Boolean,
29
35
  default: true,
@@ -15,6 +15,10 @@ export const entityServerFiles = {
15
15
  condition: ctx => ctx.useJakartaValidation,
16
16
  templates: ['_entityPackage_/domain/_persistClass_.java.jhi.jakarta_validation'],
17
17
  }),
18
+ javaMainPackageTemplatesBlock({
19
+ condition: ctx => ctx.useJacksonIdentityInfo,
20
+ templates: ['_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info'],
21
+ }),
18
22
  ],
19
23
  };
20
24
  export const enumFiles = {
@@ -31,6 +31,7 @@ export default class JavaGenerator extends BaseApplicationGenerator {
31
31
  packageInfoFile;
32
32
  generateEntities;
33
33
  useJakartaValidation;
34
+ useJacksonIdentityInfo;
34
35
  generateEnums;
35
36
  async beforeQueue() {
36
37
  if (!this.fromBlueprint) {
@@ -106,11 +107,11 @@ export default class JavaGenerator extends BaseApplicationGenerator {
106
107
  async writeServerFiles({ application, entities }) {
107
108
  if (!this.generateEntities)
108
109
  return;
109
- const { useJakartaValidation } = this;
110
+ const { useJakartaValidation, useJacksonIdentityInfo } = this;
110
111
  for (const entity of entities.filter(entity => !entity.skipServer && !entity.builtIn)) {
111
112
  await this.writeFiles({
112
113
  sections: entityServerFiles,
113
- context: { ...application, ...entity, useJakartaValidation },
114
+ context: { ...application, ...entity, useJakartaValidation, useJacksonIdentityInfo },
114
115
  });
115
116
  }
116
117
  },
@@ -0,0 +1,30 @@
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
+ <%#
20
+ This is a fragment file, it will be merged into to root template if available.
21
+ EJS fragments will process % delimiter tags in template and & delimiter tags in the merge process.
22
+ -%>
23
+ <&_ if (fragment.importSection) { -&>
24
+ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
25
+ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
26
+ <&_ } -&>
27
+
28
+ <&_ if (fragment.annotationSection) { -&>
29
+ @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "<%- primaryKey.name %>", scope = <%- persistClass %>.class)
30
+ <&_ } -&>
@@ -33,6 +33,7 @@ import statistics from '../statistics.mjs';
33
33
  import { addApplicationIndex, allNewApplications, customizeForMicroservices } from './internal/index.mjs';
34
34
  import { mergeYoRcContent } from '../../jdl/index.js';
35
35
  import { normalizeBlueprintName } from '../base/internal/blueprint.mjs';
36
+ import { updateApplicationEntitiesTransform } from '../base-application/support/update-application-entities-transform.mjs';
36
37
  const { upperFirst } = _;
37
38
  /**
38
39
  * Add jdl extension to the file
@@ -89,8 +90,11 @@ export default class JdlGenerator extends BaseGenerator {
89
90
  get [BaseGenerator.INITIALIZING]() {
90
91
  return this.delegateTasksToBlueprint(() => this.initializing);
91
92
  }
92
- get loading() {
93
- return this.asLoadingTaskGroup({
93
+ get configuring() {
94
+ return this.asConfiguringTaskGroup({
95
+ insight() {
96
+ statistics.sendSubGenEvent('generator', 'import-jdl');
97
+ },
94
98
  async downloadJdlFiles() {
95
99
  if (this.jdlFiles) {
96
100
  this.jdlFiles = await Promise.all(this.jdlFiles.map(toJdlFile).map(async (filename) => {
@@ -116,16 +120,6 @@ export default class JdlGenerator extends BaseGenerator {
116
120
  this.jdlContents.push(this.readDestination(jdlFile)?.toString() ?? '');
117
121
  }
118
122
  },
119
- });
120
- }
121
- get [BaseGenerator.LOADING]() {
122
- return this.delegateTasksToBlueprint(() => this.loading);
123
- }
124
- get default() {
125
- return this.asDefaultTaskGroup({
126
- insight() {
127
- statistics.sendSubGenEvent('generator', 'import-jdl');
128
- },
129
123
  async parseJDL() {
130
124
  const configuration = {
131
125
  applicationName: this.options.baseName ?? (this.existingProject ? this.jhipsterConfig.baseName : undefined),
@@ -147,6 +141,14 @@ export default class JdlGenerator extends BaseGenerator {
147
141
  ...applicationsWithEntities.filter((app) => app.config.applicationType !== 'gateway'),
148
142
  ];
149
143
  },
144
+ configure() {
145
+ const nrApplications = this.applications.length;
146
+ const allNew = allNewApplications(this.applications);
147
+ const interactiveFallback = !allNew;
148
+ this.interactive = this.interactive ?? interactiveFallback;
149
+ this.force = this.options.force ?? (nrApplications > 0 && allNew) ? true : undefined;
150
+ this.reproducible = allNew;
151
+ },
150
152
  customizeApplication() {
151
153
  for (const app of this.applications) {
152
154
  app.config.entities = app.entities.map(entity => entity.name);
@@ -162,17 +164,10 @@ export default class JdlGenerator extends BaseGenerator {
162
164
  addApplicationIndex(this.applications);
163
165
  customizeForMicroservices(this.exportedApplicationsWithEntities);
164
166
  },
165
- configure() {
166
- const nrApplications = this.applications.length;
167
- const allNew = allNewApplications(this.applications);
168
- const interactiveFallback = !allNew;
169
- this.interactive = this.interactive ?? interactiveFallback;
170
- this.force = this.options.force ?? (nrApplications > 0 && allNew) ? true : undefined;
171
- this.reproducible = allNew;
172
- },
173
- generateJson() {
167
+ async generateJson() {
174
168
  if (this.applications.length === 0) {
175
169
  this.writeConfig({ entities: this.exportedEntities });
170
+ await this.env.sharedFs.pipeline({ refresh: true }, updateApplicationEntitiesTransform({ destinationPath: this.destinationPath(), throwOnMissingConfig: false }));
176
171
  }
177
172
  else {
178
173
  this.writeConfig(...this.applications.map(app => (this.ignoreApplication ? { ...app, config: undefined } : app)));
@@ -219,8 +214,8 @@ export default class JdlGenerator extends BaseGenerator {
219
214
  },
220
215
  });
221
216
  }
222
- get [BaseGenerator.DEFAULT]() {
223
- return this.delegateTasksToBlueprint(() => this.default);
217
+ get [BaseGenerator.CONFIGURING]() {
218
+ return this.delegateTasksToBlueprint(() => this.configuring);
224
219
  }
225
220
  get end() {
226
221
  return this.asEndTaskGroup({
@@ -469,6 +469,7 @@ data:
469
469
  "FreeOTP",
470
470
  "Google Authenticator"
471
471
  ],
472
+ "localizationTexts": {},
472
473
  "webAuthnPolicyRpEntityName": "keycloak",
473
474
  "webAuthnPolicySignatureAlgorithms": [
474
475
  "ES256"
@@ -481,6 +482,7 @@ data:
481
482
  "webAuthnPolicyCreateTimeout": 0,
482
483
  "webAuthnPolicyAvoidSameAuthenticatorRegister": false,
483
484
  "webAuthnPolicyAcceptableAaguids": [],
485
+ "webAuthnPolicyExtraOrigins": [],
484
486
  "webAuthnPolicyPasswordlessRpEntityName": "keycloak",
485
487
  "webAuthnPolicyPasswordlessSignatureAlgorithms": [
486
488
  "ES256"
@@ -493,6 +495,7 @@ data:
493
495
  "webAuthnPolicyPasswordlessCreateTimeout": 0,
494
496
  "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false,
495
497
  "webAuthnPolicyPasswordlessAcceptableAaguids": [],
498
+ "webAuthnPolicyPasswordlessExtraOrigins": [],
496
499
  "scopeMappings": [
497
500
  {
498
501
  "clientScope": "offline_access",
@@ -2499,7 +2502,7 @@ data:
2499
2502
  "cibaInterval": "5",
2500
2503
  "frontendUrl": ""
2501
2504
  },
2502
- "keycloakVersion": "22.0.1",
2505
+ "keycloakVersion": "23.0.1",
2503
2506
  "userManagedAccessAllowed": false,
2504
2507
  "clientProfiles": {
2505
2508
  "profiles": []
@@ -38,7 +38,7 @@ spec:
38
38
  containers:
39
39
  - name: keycloak
40
40
  image: <%- dockerContainers.keycloak %>
41
- args: ["start --import-realm"]
41
+ args: "start --import-realm"
42
42
  env:
43
43
  - name: KEYCLOAK_ADMIN
44
44
  value: "admin"
@@ -34,6 +34,7 @@ import { updateLanguagesTask as updateLanguagesInJava } from '../server/support/
34
34
  import { SERVER_MAIN_RES_DIR, SERVER_TEST_RES_DIR } from '../generator-constants.mjs';
35
35
  import command from './command.mjs';
36
36
  import { QUEUES } from '../base-application/priorities.mjs';
37
+ import { PRIORITY_NAMES } from '../base/priorities.mjs';
37
38
  const { startCase } = _;
38
39
  /**
39
40
  * This is the base class for a generator that generates entities.
@@ -68,6 +69,14 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
68
69
  if (!this.delegateToBlueprint) {
69
70
  await this.dependsOnJHipster(GENERATOR_BOOTSTRAP_APPLICATION);
70
71
  }
72
+ if (!this.jhipsterConfigWithDefaults.skipClient &&
73
+ this.jhipsterConfigWithDefaults.clientFramework !== 'no' &&
74
+ (!this.jhipsterConfig.enableTranslation || this.jhipsterConfigWithDefaults.clientFramework === 'angular')) {
75
+ // We must write languages files for translation process for entities only generation.
76
+ // Angular frontend uses translation files even if enableTranslation is enabled.
77
+ // As side effect, with angular frontends, translation files will be written for nativeLanguage for entity only generation.
78
+ this.setFeatures({ disableSkipPriorities: true });
79
+ }
71
80
  }
72
81
  // Public API method used by the getter and also by Blueprints
73
82
  get initializing() {
@@ -144,27 +153,24 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
144
153
  }
145
154
  },
146
155
  defaults() {
147
- const { nativeLanguage, languages, enableTranslation } = this.jhipsterConfigWithDefaults;
156
+ const { nativeLanguage, enableTranslation } = this.jhipsterConfigWithDefaults;
157
+ const isLanguageConfigured = Boolean(this.jhipsterConfig.nativeLanguage);
158
+ // Prompts detects current language. Save default native language for next execution.
159
+ this.config.defaults({ nativeLanguage });
148
160
  if (!enableTranslation) {
149
- if (!this.jhipsterConfig.nativeLanguage) {
150
- this.jhipsterConfig.nativeLanguage = nativeLanguage;
151
- }
152
161
  return;
153
162
  }
154
- if (!this.jhipsterConfig.nativeLanguage) {
155
- if (this.languagesToApply.length === 0) {
156
- this.languagesToApply = languages;
157
- }
158
- this.jhipsterConfig.nativeLanguage = nativeLanguage;
159
- }
160
- if (!this.jhipsterConfig.languages) {
161
- this.jhipsterConfig.languages = [];
163
+ this.config.defaults({ languages: [] });
164
+ if (!isLanguageConfigured && this.languagesToApply.length === 0) {
165
+ // If languages is not configured, apply defaults.
166
+ this.languagesToApply = this.jhipsterConfigWithDefaults.languages;
162
167
  }
163
168
  if (this.jhipsterConfig.languages.length === 0 || this.jhipsterConfig.languages[0] !== this.jhipsterConfig.nativeLanguage) {
164
- this.jhipsterConfig.languages = [...new Set([nativeLanguage, ...languages])];
169
+ // Set native language as first language.
170
+ this.jhipsterConfig.languages = [...new Set([nativeLanguage, ...this.jhipsterConfig.languages])];
165
171
  }
166
172
  if (this.languagesToApply && this.languagesToApply.length > 0) {
167
- // Save new languages;
173
+ // Save new languages.
168
174
  this.jhipsterConfig.languages = [...new Set([...this.jhipsterConfig.languages, ...this.languagesToApply])];
169
175
  }
170
176
  },
@@ -248,7 +254,8 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
248
254
  async translateFile({ application }) {
249
255
  if (!application.enableTranslation ||
250
256
  application.skipServer ||
251
- (!application.backendTypeSpringBoot && !this.writeJavaLanguageFiles))
257
+ (!application.backendTypeSpringBoot && !this.writeJavaLanguageFiles) ||
258
+ this.options.skipPriorities?.includes?.(PRIORITY_NAMES.POST_WRITING))
252
259
  return;
253
260
  await Promise.all(this.languagesToApply.map(async (lang) => {
254
261
  const language = findLanguageForTag(lang);
@@ -296,6 +303,8 @@ export default class LanguagesGenerator extends BaseApplicationGenerator {
296
303
  get postWriting() {
297
304
  return this.asPostWritingTaskGroup({
298
305
  write({ application, control }) {
306
+ if (this.options.skipPriorities?.includes?.(PRIORITY_NAMES.POST_WRITING))
307
+ return;
299
308
  if (application.enableTranslation && !application.skipClient) {
300
309
  if (application.clientFrameworkAngular) {
301
310
  updateLanguagesInAngularTask.call(this, { application, control });
@@ -55,7 +55,9 @@ export async function askForLanguages({ control }) {
55
55
  choices: () => {
56
56
  const languageOptions = this.supportedLanguages;
57
57
  const nativeLanguage = this.jhipsterConfigWithDefaults.nativeLanguage;
58
- return languagesAsChoices(languageOptions.filter(l => l.languageTag !== nativeLanguage));
58
+ const choices = languagesAsChoices(languageOptions.filter(l => l.languageTag !== nativeLanguage));
59
+ const defaults = this.jhipsterConfigWithDefaults.languages ?? [];
60
+ return [...choices.filter(({ value }) => defaults.includes(value)), ...choices.filter(({ value }) => !defaults.includes(value))];
59
61
  },
60
62
  default: () => this.jhipsterConfigWithDefaults.languages,
61
63
  },
@@ -63,7 +63,7 @@ export const replaceTranslationKeysWithText = (getWebappTranslation, body, regex
63
63
  }
64
64
  else if (escapeHtml) {
65
65
  // Escape specific chars
66
- replacement = replacement.replace(/'/g, '&apos;').replace(/"/g, '&quot;');
66
+ replacement = replacement.replace(/'/g, '&apos;').replace(/"/g, '&quot;').replace(/@/g, '&#64;');
67
67
  }
68
68
  else if (stringify) {
69
69
  replacement = JSON.stringify(replacement);
@@ -18,7 +18,7 @@
18
18
  -%><%
19
19
  let helpBlocks = 0; %>
20
20
  {
21
- <%_ // Male (default) variant
21
+ <%_ /* Male (default) variant */
22
22
  let Um = 'Um';
23
23
  let novo = 'novo';
24
24
  let criado = 'criado';
@@ -0,0 +1,19 @@
1
+ # SQL/spring-data-relational sub-generador
2
+
3
+ Adds support to liquibase to SQL databases and Neo4j.
4
+
5
+ ## Customizing
6
+
7
+ Customizing basics can be found at [Customizing](../app/README.md#customizing)
8
+
9
+ ### Notable relationships customizations
10
+
11
+ #### OnUpdate/OnDelete
12
+
13
+ ```jdl
14
+ relationship ManyToOne {
15
+ A to @OnDelete("SET NULL") @OnUpdate("CASCADE") B
16
+ }
17
+ ```
18
+
19
+ Allowed values: `NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT`
@@ -24,31 +24,35 @@ import { GENERATOR_PROJECT_NAME } from '../generator-list.mjs';
24
24
  import { BASE_NAME } from './constants.mjs';
25
25
  import { getHipster } from '../base/support/index.mjs';
26
26
  import command from './command.mjs';
27
+ import { validateProjectName } from './support/name-resolver.mjs';
27
28
  /**
28
29
  * @class
29
30
  * @extends {BaseApplicationGenerator<import('../base-application/types.mjs').BaseApplication>}
30
31
  */
31
32
  export default class ProjectNameGenerator extends BaseApplicationGenerator {
33
+ javaApplication;
32
34
  async beforeQueue() {
33
- if (this.options.defaults) {
34
- if (!this.jhipsterConfig.baseName) {
35
- this.jhipsterConfig.baseName = getDefaultAppName(this);
36
- }
37
- }
38
35
  this.sharedData.getControl().existingProject =
39
36
  this.options.defaults || this.options.applicationWithConfig || (this.jhipsterConfig.baseName !== undefined && this.config.existed);
40
37
  if (!this.fromBlueprint) {
41
38
  await this.composeWithBlueprints(GENERATOR_PROJECT_NAME);
42
39
  }
43
- if (this.sharedData.getControl().existingProject && !this.jhipsterConfig.baseName) {
44
- this.jhipsterConfig.baseName = getDefaultAppName(this);
45
- }
46
40
  }
47
41
  get initializing() {
48
42
  return this.asInitializingTaskGroup({
49
43
  loadOptions() {
50
44
  this.parseJHipsterOptions(command.options);
51
45
  },
46
+ parseOptions() {
47
+ if (this.options.defaults) {
48
+ if (!this.jhipsterConfig.baseName) {
49
+ this.jhipsterConfig.baseName = getDefaultAppName({
50
+ reproducible: this.options.reproducible,
51
+ javaApplication: this.javaApplication,
52
+ });
53
+ }
54
+ }
55
+ },
52
56
  });
53
57
  }
54
58
  get [BaseApplicationGenerator.INITIALIZING]() {
@@ -63,7 +67,7 @@ export default class ProjectNameGenerator extends BaseApplicationGenerator {
63
67
  type: 'input',
64
68
  validate: input => this.validateBaseName(input),
65
69
  message: 'What is the base name of your application?',
66
- default: () => getDefaultAppName(this),
70
+ default: () => getDefaultAppName({ reproducible: this.options.reproducible, javaApplication: this.javaApplication }),
67
71
  },
68
72
  ], this.config);
69
73
  },
@@ -114,15 +118,6 @@ export default class ProjectNameGenerator extends BaseApplicationGenerator {
114
118
  * @returns Boolean
115
119
  */
116
120
  validateBaseName(input) {
117
- if (!/^([\w]*)$/.test(input)) {
118
- return 'Your base name cannot contain special characters or a blank space';
119
- }
120
- if (/_/.test(input)) {
121
- return 'Your base name cannot contain underscores as this does not meet the URI spec';
122
- }
123
- if (input?.toLowerCase() === 'application') {
124
- return "Your base name cannot be named 'application' as this is a reserved name for Spring Boot";
125
- }
126
- return true;
121
+ return validateProjectName(input, { javaApplication: this.javaApplication });
127
122
  }
128
123
  }
@@ -17,14 +17,43 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import path from 'path';
20
+ import { camelCase } from 'lodash-es';
20
21
  import { isReproducible } from '../../base/support/index.mjs';
21
- const getDefaultName = generator => {
22
- const defaultName = 'jhipster';
23
- if (generator && isReproducible(generator)) {
22
+ const defaultName = 'jhipster';
23
+ export const validateJavaApplicationName = (name) => {
24
+ if (!/^([\w]*)$/.test(name)) {
25
+ return 'Your base name cannot contain special characters or a blank space';
26
+ }
27
+ if (/_/.test(name)) {
28
+ return 'Your base name cannot contain underscores as this does not meet the URI spec';
29
+ }
30
+ if (name.toLowerCase() === 'application') {
31
+ return "Your base name cannot be named 'application' as this is a reserved name for Spring Boot";
32
+ }
33
+ return true;
34
+ };
35
+ export const validateNpmProjectName = (name) => {
36
+ if (!/^([\w-.]*)$/.test(name)) {
37
+ return 'Your base name cannot contain special characters or a blank space';
38
+ }
39
+ return true;
40
+ };
41
+ export const validateProjectName = (name, { javaApplication } = {}) => javaApplication ? validateJavaApplicationName(name) : validateNpmProjectName(name);
42
+ const getDefaultName = (generator) => {
43
+ if (generator?.options && isReproducible(generator)) {
44
+ return defaultName;
45
+ }
46
+ let projectName = path.basename(process.cwd());
47
+ const { reproducible = false, javaApplication = false } = generator && !generator.options ? generator : {};
48
+ if (reproducible) {
24
49
  return defaultName;
25
50
  }
26
- return /^[a-zA-Z0-9_-]+$/.test(path.basename(process.cwd()))
27
- ? path.basename(process.cwd()).replace('generator-jhipster-', '')
28
- : defaultName;
51
+ if (javaApplication) {
52
+ projectName = camelCase(projectName);
53
+ }
54
+ else {
55
+ projectName = projectName.replace('generator-jhipster-', '');
56
+ }
57
+ return validateProjectName(projectName, { javaApplication }) === true ? projectName : defaultName;
29
58
  };
30
59
  export default getDefaultName;
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "dependencies": {
3
- "@fortawesome/fontawesome-svg-core": "6.4.2",
4
- "@fortawesome/free-solid-svg-icons": "6.4.2",
3
+ "@fortawesome/fontawesome-svg-core": "6.5.1",
4
+ "@fortawesome/free-solid-svg-icons": "6.5.1",
5
5
  "@fortawesome/react-fontawesome": "0.2.0",
6
6
  "@reduxjs/toolkit": "1.9.7",
7
- "axios": "1.6.0",
7
+ "axios": "1.6.2",
8
8
  "bootstrap": "5.3.2",
9
9
  "bootswatch": "5.3.2",
10
10
  "lodash": "4.17.21",
11
11
  "path-browserify": "1.0.1",
12
12
  "react": "18.2.0",
13
13
  "react-dom": "18.2.0",
14
- "react-hook-form": "7.47.0",
14
+ "react-hook-form": "7.49.0",
15
15
  "react-jhipster": "0.25.3",
16
16
  "react-loadable": "5.5.0",
17
17
  "react-redux": "8.1.3",
18
- "react-redux-loading-bar": "5.0.4",
19
- "react-router-dom": "6.18.0",
18
+ "react-redux-loading-bar": "5.0.5",
19
+ "react-router-dom": "6.20.1",
20
20
  "react-toastify": "9.1.3",
21
21
  "react-transition-group": "4.4.5",
22
- "reactstrap": "9.2.0",
22
+ "reactstrap": "9.2.1",
23
23
  "redux": "4.2.1",
24
24
  "redux-thunk": "2.4.2",
25
25
  "sonar-scanner": "3.1.0",
@@ -28,32 +28,32 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@module-federation/utilities": "3.0.3-0",
31
- "@testing-library/react": "14.0.0",
32
- "@types/jest": "29.5.7",
33
- "@types/lodash": "4.14.200",
34
- "@types/node": "18.18.8",
35
- "@types/react": "18.2.34",
36
- "@types/react-dom": "18.2.14",
37
- "@types/react-redux": "7.1.28",
31
+ "@testing-library/react": "14.1.2",
32
+ "@types/jest": "29.5.11",
33
+ "@types/lodash": "4.14.202",
34
+ "@types/node": "18.19.3",
35
+ "@types/react": "18.2.43",
36
+ "@types/react-dom": "18.2.17",
37
+ "@types/react-redux": "7.1.31",
38
38
  "@types/redux": "3.6.31",
39
- "@types/webpack-env": "1.18.3",
40
- "@typescript-eslint/eslint-plugin": "6.9.1",
41
- "@typescript-eslint/parser": "6.9.1",
39
+ "@types/webpack-env": "1.18.4",
40
+ "@typescript-eslint/eslint-plugin": "6.13.2",
41
+ "@typescript-eslint/parser": "6.13.2",
42
42
  "autoprefixer": "10.4.16",
43
43
  "browser-sync": "2.29.3",
44
44
  "browser-sync-webpack-plugin": "2.3.0",
45
45
  "copy-webpack-plugin": "11.0.0",
46
- "core-js": "3.33.2",
46
+ "core-js": "3.34.0",
47
47
  "cross-env": "7.0.3",
48
48
  "css-loader": "6.8.1",
49
49
  "css-minimizer-webpack-plugin": "5.0.1",
50
- "eslint": "8.52.0",
51
- "eslint-config-prettier": "9.0.0",
50
+ "eslint": "8.55.0",
51
+ "eslint-config-prettier": "9.1.0",
52
52
  "eslint-plugin-react": "7.33.2",
53
53
  "eslint-webpack-plugin": "4.0.1",
54
54
  "folder-hash": "4.0.4",
55
55
  "fork-ts-checker-webpack-plugin": "9.0.2",
56
- "html-webpack-plugin": "5.5.3",
56
+ "html-webpack-plugin": "5.5.4",
57
57
  "identity-obj-proxy": "3.0.0",
58
58
  "jest": "29.7.0",
59
59
  "jest-environment-jsdom": "29.7.0",
@@ -63,7 +63,7 @@
63
63
  "merge-jsons-webpack-plugin": "2.0.1",
64
64
  "mini-css-extract-plugin": "2.7.6",
65
65
  "postcss-loader": "7.3.3",
66
- "postcss-rtlcss": "4.0.8",
66
+ "postcss-rtlcss": "4.0.9",
67
67
  "react-infinite-scroll-component": "6.1.0",
68
68
  "redux-mock-store": "1.5.4",
69
69
  "rimraf": "5.0.5",
@@ -77,8 +77,8 @@
77
77
  "terser-webpack-plugin": "5.3.9",
78
78
  "thread-loader": "4.0.2",
79
79
  "ts-jest": "29.1.1",
80
- "ts-loader": "9.5.0",
81
- "typescript": "5.2.2",
80
+ "ts-loader": "9.5.1",
81
+ "typescript": "5.3.3",
82
82
  "webpack": "5.89.0",
83
83
  "webpack-cli": "5.1.4",
84
84
  "webpack-dev-server": "4.15.1",
@@ -153,7 +153,7 @@ describe('Notification Middleware', () => {
153
153
  },
154
154
  };
155
155
 
156
- const UNKNON_400_ERROR = {
156
+ const UNKNOWN_400_ERROR = {
157
157
  type: ERROR_TYPE,
158
158
  error: {
159
159
  isAxiosError: true,
@@ -163,7 +163,7 @@ describe('Notification Middleware', () => {
163
163
  },
164
164
  };
165
165
 
166
- const UNKNON_ERROR = {
166
+ const UNKNOWN_ERROR = {
167
167
  type: ERROR_TYPE,
168
168
  error: {
169
169
  isAxiosError: true,
@@ -256,13 +256,13 @@ describe('Notification Middleware', () => {
256
256
  });
257
257
 
258
258
  it('should trigger an error toast message and return error for unknown 400 error', () => {
259
- expect(store.dispatch(UNKNON_400_ERROR).error.response.status).toEqual(400);
259
+ expect(store.dispatch(UNKNOWN_400_ERROR).error.response.status).toEqual(400);
260
260
  const toastMsg = (toastify.toast as any).error.getCall(0).args[0];
261
261
  expect(toastMsg).toContain('Unknown error!');
262
262
  });
263
263
 
264
264
  it('should trigger an error toast message and return error for unknown error', () => {
265
- expect(store.dispatch(UNKNON_ERROR).error.isAxiosError).toEqual(true);
265
+ expect(store.dispatch(UNKNOWN_ERROR).error.isAxiosError).toEqual(true);
266
266
  const toastMsg = (toastify.toast as any).error.getCall(0).args[0];
267
267
  expect(toastMsg).toContain('Unknown error!');
268
268
  });