generator-jhipster 7.6.0 → 7.7.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 (310) hide show
  1. package/README.md +1 -3
  2. package/cli/commands.js +3 -0
  3. package/cli/environment-builder.js +53 -18
  4. package/cli/import-jdl.js +3 -0
  5. package/cli/index.mjs +20 -0
  6. package/cli/jhipster.js +19 -11
  7. package/cli/program.js +94 -38
  8. package/generators/app/esm.mjs +1 -3
  9. package/generators/app/index.js +1 -16
  10. package/generators/aws/esm.mjs +1 -3
  11. package/generators/azure-app-service/esm.mjs +1 -3
  12. package/generators/azure-spring-cloud/esm.mjs +1 -3
  13. package/generators/base/esm.mjs +1 -3
  14. package/generators/bootstrap/esm.mjs +1 -3
  15. package/generators/bootstrap/index.js +36 -86
  16. package/generators/bootstrap-application/esm.mjs +19 -0
  17. package/generators/bootstrap-application/generator.mjs +353 -0
  18. package/generators/bootstrap-application/index.mjs +19 -0
  19. package/generators/ci-cd/esm.mjs +1 -3
  20. package/generators/ci-cd/prompts.js +1 -1
  21. package/generators/ci-cd/templates/github-actions.yml.ejs +2 -2
  22. package/generators/client/esm.mjs +5 -3
  23. package/generators/client/files-angular.js +9 -0
  24. package/generators/client/files-common.js +8 -7
  25. package/generators/client/files-vue.js +7 -6
  26. package/generators/client/index.js +2 -1
  27. package/generators/client/templates/angular/angular.json.ejs +1 -1
  28. package/generators/client/templates/angular/package.json +25 -22
  29. package/generators/client/templates/angular/package.json.ejs +5 -1
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +1 -1
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +7 -7
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +5 -5
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +3 -3
  34. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +10 -10
  35. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +8 -8
  36. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +2 -2
  37. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +5 -5
  38. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +1 -1
  39. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +2 -2
  40. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +2 -2
  41. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +6 -6
  42. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +51 -49
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +16 -16
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +32 -32
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +4 -4
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +18 -18
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +12 -12
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +4 -4
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +4 -4
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +8 -8
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +1 -1
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +4 -4
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +5 -5
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +11 -11
  56. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +4 -2
  57. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +0 -6
  58. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +0 -6
  59. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +3 -3
  60. package/generators/client/templates/angular/src/main/webapp/content/scss/_bootstrap-variables.scss.ejs +5 -5
  61. package/generators/client/templates/angular/src/main/webapp/content/scss/global.scss.ejs +29 -0
  62. package/generators/client/templates/angular/src/main/webapp/content/scss/vendor.scss.ejs +0 -4
  63. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +19 -0
  64. package/generators/client/templates/common/package.json +2 -2
  65. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +1 -7
  66. package/generators/client/templates/react/package.json +33 -33
  67. package/generators/client/templates/vue/package.json +23 -23
  68. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +3 -3
  69. package/generators/client/templates/vue/src/main/webapp/app/entities/user/user.service.ts.ejs +0 -0
  70. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +29 -1
  71. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +2 -2
  72. package/generators/client/templates/vue/src/main/webapp/app/shared/config/config.ts.ejs +0 -4
  73. package/generators/cloudfoundry/esm.mjs +1 -3
  74. package/generators/common/esm.mjs +2 -3
  75. package/generators/common/files.js +1 -2
  76. package/generators/common/index.js +6 -0
  77. package/generators/common/templates/.husky/{pre-commit → pre-commit.ejs} +4 -0
  78. package/generators/common/templates/README.md.jhi.ejs +3 -1
  79. package/generators/common/templates/package.json +3 -3
  80. package/generators/common/templates/sonar-project.properties.ejs +1 -1
  81. package/generators/cypress/esm.mjs +2 -3
  82. package/generators/cypress/files.js +2 -1
  83. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +18 -14
  84. package/generators/database-changelog/esm.mjs +1 -3
  85. package/generators/database-changelog/index.js +1 -1
  86. package/generators/database-changelog-liquibase/esm.mjs +2 -3
  87. package/generators/docker-compose/esm.mjs +1 -3
  88. package/generators/entities/esm.mjs +1 -3
  89. package/generators/entities/index.js +2 -2
  90. package/generators/entities-client/esm.mjs +1 -3
  91. package/generators/entity/esm.mjs +1 -3
  92. package/generators/entity/index.js +11 -15
  93. package/generators/entity/prompts.js +4 -1
  94. package/generators/entity-client/esm.mjs +2 -3
  95. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +1 -1
  96. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +2 -2
  97. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +20 -21
  98. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +14 -16
  99. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +2 -2
  100. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +1 -1
  101. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-reducer.spec.ts.ejs +1 -1
  102. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +1 -1
  103. package/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  104. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  105. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  106. package/generators/entity-i18n/esm.mjs +2 -3
  107. package/generators/entity-server/esm.mjs +2 -3
  108. package/generators/entity-server/files-couchbase.js +23 -2
  109. package/generators/entity-server/files.js +16 -2
  110. package/generators/entity-server/index.js +8 -1
  111. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +11 -13
  112. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +23 -59
  113. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +5 -6
  114. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.n1ql.ejs +5 -0
  115. package/generators/entity-server/templates/partials/it_patch_update.partial.java.ejs +2 -2
  116. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  117. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +1 -1
  118. package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +4 -4
  119. package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +3 -3
  120. package/generators/entity-server/templates/src/main/java/package/common/search_stream_template.ejs +1 -1
  121. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  122. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -2
  123. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +31 -18
  124. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +3 -3
  125. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +37 -0
  126. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +90 -0
  127. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +2 -2
  128. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +1 -1
  129. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +3 -5
  130. package/generators/entity-server/templates/src/main/java/package/repository/search/{SortToFieldSortBuilderConverter.java.ejs → SortToSortBuilderListConverter.java.ejs} +4 -3
  131. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +8 -6
  132. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +1 -1
  133. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +6 -6
  134. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +1 -1
  135. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +5 -5
  136. package/generators/export-jdl/esm.mjs +1 -3
  137. package/generators/gae/esm.mjs +1 -3
  138. package/generators/generate-blueprint/constants.mjs +146 -0
  139. package/generators/generate-blueprint/esm.mjs +19 -0
  140. package/generators/generate-blueprint/files.mjs +81 -0
  141. package/generators/generate-blueprint/generator.mjs +363 -0
  142. package/generators/generate-blueprint/index.mjs +20 -0
  143. package/generators/generate-blueprint/templates/.eslintrc.json.ejs +41 -0
  144. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +32 -0
  145. package/generators/generate-blueprint/templates/.mocharc.cjs.ejs +29 -0
  146. package/generators/{server/templates/couchbase/src/main/java/package/config/couchbase/package-info.java.ejs → generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs} +4 -7
  147. package/generators/generate-blueprint/templates/README.md.ejs +75 -0
  148. package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +35 -0
  149. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +25 -0
  150. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +98 -0
  151. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +42 -0
  152. package/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +19 -0
  153. package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
  154. package/generators/generate-blueprint/templates/test/utils.mjs.ejs +17 -0
  155. package/generators/generator-base-blueprint.js +29 -0
  156. package/generators/generator-base-docker.js +1 -0
  157. package/generators/generator-base-entities.cjs +368 -0
  158. package/generators/generator-base.js +128 -23
  159. package/generators/generator-constants.js +18 -16
  160. package/generators/generator-list.js +2 -0
  161. package/generators/gradle/esm.mjs +19 -0
  162. package/generators/heroku/esm.mjs +1 -3
  163. package/generators/info/esm.mjs +1 -3
  164. package/generators/init/esm.mjs +19 -0
  165. package/generators/init/files.cjs +9 -3
  166. package/generators/init/index.cjs +5 -0
  167. package/generators/init/templates/.gitignore.jhi.ejs +5 -0
  168. package/generators/init/templates/{.lintstagedrc.js.ejs → .lintstagedrc.cjs.ejs} +0 -0
  169. package/generators/java/esm.mjs +19 -0
  170. package/generators/java/index.cjs +58 -2
  171. package/generators/kubernetes/esm.mjs +1 -3
  172. package/generators/kubernetes-helm/esm.mjs +1 -3
  173. package/generators/kubernetes-knative/esm.mjs +1 -3
  174. package/generators/languages/esm.mjs +2 -3
  175. package/generators/languages/templates/src/test/resources/i18n/messages_fr.properties.ejs +4 -1
  176. package/generators/maven/esm.mjs +19 -0
  177. package/generators/openapi-client/esm.mjs +1 -3
  178. package/generators/openapi-client/index.js +11 -4
  179. package/generators/openshift/esm.mjs +1 -3
  180. package/generators/page/esm.mjs +1 -3
  181. package/generators/project-name/esm.mjs +19 -0
  182. package/generators/server/esm.mjs +2 -2
  183. package/generators/server/files-couchbase.js +28 -31
  184. package/generators/server/files.js +14 -1
  185. package/generators/server/index.js +13 -13
  186. package/generators/server/needle-api/needle-server-maven.js +1 -1
  187. package/generators/server/templates/couchbase/src/main/java/package/repository/CouchbaseSearchRepository.java.ejs +91 -0
  188. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +43 -64
  189. package/generators/server/templates/couchbase/src/main/java/package/repository/PersistentTokenRepository_couchbase.java.ejs +2 -2
  190. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_ADMIN.json.ejs +3 -0
  191. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_USER.json.ejs +3 -0
  192. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__admin.json.ejs → user/admin.json.ejs} +2 -2
  193. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__user.json.ejs → user/user.json.ejs} +2 -2
  194. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.2__create_indexes.n1ql.ejs +34 -0
  195. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_collections.n1ql.ejs +8 -0
  196. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +4 -3
  197. package/generators/server/templates/couchbase/src/test/java/package/repository/{JHipsterCouchbaseRepositoryTest.java.ejs → CouchbaseSearchRepositoryTest.java.ejs} +2 -2
  198. package/generators/server/templates/gradle/profile_prod.gradle.ejs +4 -0
  199. package/generators/server/templates/gradle.properties.ejs +6 -6
  200. package/generators/server/templates/npmw +14 -5
  201. package/generators/server/templates/pom.xml.ejs +47 -42
  202. package/generators/server/templates/src/main/docker/app.yml.ejs +4 -2
  203. package/generators/server/templates/src/main/docker/zipkin.yml.ejs +25 -0
  204. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +26 -16
  205. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration_reactive.java.ejs +1 -1
  206. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +2 -1
  207. package/generators/server/templates/src/main/java/package/domain/Authority.java.ejs +11 -0
  208. package/generators/server/templates/src/main/java/package/domain/PersistentToken.java.ejs +6 -6
  209. package/generators/server/templates/src/main/java/package/domain/User.java.ejs +9 -7
  210. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +1 -11
  211. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +48 -72
  212. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +1 -1
  213. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +8 -6
  214. package/generators/server/templates/src/main/java/package/web/filter/OAuth2ReactiveRefreshTokensWebFilter.java.ejs +0 -1
  215. package/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +1 -1
  216. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -1
  217. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  218. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +8 -0
  219. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +6 -0
  220. package/generators/server/templates/src/main/resources/config/application.yml.ejs +2 -0
  221. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +3 -1
  222. package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +21 -15
  223. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +2 -0
  224. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/StepDefs.java.ejs +8 -0
  225. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +17 -3
  226. package/generators/server/templates/src/test/java/package/security/SecurityUtilsUnitTest_reactive.java.ejs +1 -1
  227. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  228. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  229. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +13 -6
  230. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +1 -6
  231. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +40 -42
  232. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
  233. package/generators/spring-boot/esm.mjs +19 -0
  234. package/generators/spring-controller/esm.mjs +1 -3
  235. package/generators/spring-service/esm.mjs +1 -3
  236. package/generators/upgrade/esm.mjs +1 -3
  237. package/generators/upgrade-config/esm.mjs +1 -3
  238. package/generators/workspaces/esm.mjs +1 -3
  239. package/lib/constants/logo.cjs +30 -0
  240. package/lib/constants/priorities.cjs +216 -2
  241. package/lib/constants/priorities.mjs +29 -1
  242. package/lib/index.mjs +6 -0
  243. package/lib/support/mixin.cjs +5 -1
  244. package/lib/support/shared-data.cjs +34 -1
  245. package/package.json +27 -23
  246. package/utils/entity.js +19 -2
  247. package/utils/faker.js +3 -3
  248. package/utils/field.js +61 -49
  249. package/utils/relationship.js +5 -3
  250. package/utils/user.js +109 -0
  251. package/generators/app/generator.spec.mjs +0 -47
  252. package/generators/aws/generator.spec.mjs +0 -47
  253. package/generators/azure-app-service/generator.spec.mjs +0 -47
  254. package/generators/azure-spring-cloud/generator.spec.mjs +0 -47
  255. package/generators/base/generator.spec.mjs +0 -44
  256. package/generators/bootstrap/generator.spec.mjs +0 -44
  257. package/generators/ci-cd/generator.spec.mjs +0 -47
  258. package/generators/client/__workflow/devserver-angular.json +0 -13
  259. package/generators/client/__workflow/devserver-react.json +0 -13
  260. package/generators/client/__workflow/devserver-vue.json +0 -13
  261. package/generators/client/generator.spec.mjs +0 -47
  262. package/generators/cloudfoundry/generator.spec.mjs +0 -47
  263. package/generators/common/generator.spec.mjs +0 -47
  264. package/generators/cypress/generator.spec.mjs +0 -47
  265. package/generators/database-changelog/generator.spec.mjs +0 -47
  266. package/generators/database-changelog-liquibase/generator.spec.mjs +0 -47
  267. package/generators/docker-compose/generator.spec.mjs +0 -44
  268. package/generators/entities/generator.spec.mjs +0 -47
  269. package/generators/entities-client/generator.spec.mjs +0 -47
  270. package/generators/entity/generator.spec.mjs +0 -47
  271. package/generators/entity-client/generator.spec.mjs +0 -47
  272. package/generators/entity-i18n/generator.spec.mjs +0 -47
  273. package/generators/entity-server/generator.spec.mjs +0 -47
  274. package/generators/export-jdl/generator.spec.mjs +0 -44
  275. package/generators/gae/generator.spec.mjs +0 -47
  276. package/generators/gradle/__snapshots__/generator.spec.cjs.snap +0 -59
  277. package/generators/gradle/generator.spec.cjs +0 -71
  278. package/generators/heroku/generator.spec.mjs +0 -47
  279. package/generators/info/generator.spec.mjs +0 -44
  280. package/generators/init/__snapshots__/generator.spec.cjs.snap +0 -65
  281. package/generators/init/generator.spec.cjs +0 -112
  282. package/generators/java/__snapshots__/generator.spec.cjs.snap +0 -118
  283. package/generators/java/generator.spec.cjs +0 -87
  284. package/generators/kubernetes/generator.spec.mjs +0 -44
  285. package/generators/kubernetes-helm/generator.spec.mjs +0 -44
  286. package/generators/kubernetes-knative/generator.spec.mjs +0 -44
  287. package/generators/languages/generator.spec.mjs +0 -47
  288. package/generators/maven/__snapshots__/generator.spec.cjs.snap +0 -53
  289. package/generators/maven/generator.spec.cjs +0 -78
  290. package/generators/openapi-client/generator.spec.mjs +0 -47
  291. package/generators/openshift/generator.spec.mjs +0 -44
  292. package/generators/page/generator.spec.mjs +0 -47
  293. package/generators/project-name/generator.spec.cjs +0 -43
  294. package/generators/server/__snapshots__/generator.spec.mjs.snap +0 -1931
  295. package/generators/server/generator.spec.mjs +0 -52
  296. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactory.java.ejs +0 -83
  297. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java.ejs +0 -40
  298. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryQuery.java.ejs +0 -44
  299. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlQueryCreator.java.ejs +0 -162
  300. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java.ejs +0 -104
  301. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json.ejs +0 -3
  302. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json.ejs +0 -3
  303. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_indexes.n1ql.ejs +0 -19
  304. package/generators/spring-boot/__snapshots__/generator.spec.cjs.snap +0 -80
  305. package/generators/spring-boot/generator.spec.cjs +0 -64
  306. package/generators/spring-controller/generator.spec.mjs +0 -47
  307. package/generators/spring-service/generator.spec.mjs +0 -47
  308. package/generators/upgrade/generator.spec.mjs +0 -44
  309. package/generators/upgrade-config/generator.spec.mjs +0 -44
  310. package/generators/workspaces/generator.spec.mjs +0 -47
package/lib/index.mjs ADDED
@@ -0,0 +1,6 @@
1
+ export { default as constants } from '../generators/generator-constants.js';
2
+ export { default as utils } from '../generators/utils.js';
3
+
4
+ export { default as GeneratorBase } from '../generators/generator-base.js';
5
+ export { default as GeneratorBaseBlueprint } from '../generators/generator-base-blueprint.js';
6
+ export { default as GeneratorBaseEntities } from '../generators/generator-base-entities.cjs';
@@ -55,9 +55,13 @@ function getChain(...generators) {
55
55
  * @returns Class
56
56
  */
57
57
  module.exports.generateMixedChain = (...generators) => {
58
+ let baseGenerator = GeneratorBaseBlueprint;
59
+ if (typeof generators[0] !== 'string') {
60
+ baseGenerator = generators.shift();
61
+ }
58
62
  const mixedChain = getChain(...generators);
59
63
 
60
- let MixedClass = class extends GeneratorBaseBlueprint {
64
+ let MixedClass = class extends baseGenerator {
61
65
  constructor(args, options, features) {
62
66
  super(args, options, features);
63
67
  if (!this.fromBlueprint && this.features.taskPrefix === undefined) {
@@ -19,9 +19,17 @@
19
19
  const assert = require('assert');
20
20
 
21
21
  module.exports = class SharedData {
22
- constructor() {
22
+ constructor(storage) {
23
+ if (!storage) {
24
+ throw new Error('Storage is required for SharedData');
25
+ }
23
26
  this._configDefaultValues = {};
24
27
  this._configChoices = {};
28
+
29
+ // Backward compatibility sharedData
30
+ this._storage = storage;
31
+ this._storage.sharedEntities = this._storage.sharedEntities || {};
32
+ this._storage.sharedApplication = this._storage.sharedApplication || {};
25
33
  }
26
34
 
27
35
  /**
@@ -71,4 +79,29 @@ module.exports = class SharedData {
71
79
  assert(Array.isArray(choices), `Choices must be an array for ${configName}`);
72
80
  this._configChoices[configName] = choices;
73
81
  }
82
+
83
+ getApplication() {
84
+ if (!this._storage.sharedApplication) throw new Error('Shared application not loaded');
85
+ return this._storage.sharedApplication;
86
+ }
87
+
88
+ setEntity(entityName, entity) {
89
+ this._storage.sharedEntities[entityName] = entity;
90
+ }
91
+
92
+ hasEntity(entityName) {
93
+ return Boolean(this._storage.sharedEntities[entityName]);
94
+ }
95
+
96
+ getEntity(entityName) {
97
+ const entity = this._storage.sharedEntities[entityName];
98
+ if (!entity) {
99
+ throw new Error(`Entity definition not loaded for ${entityName}`);
100
+ }
101
+ return entity;
102
+ }
103
+
104
+ getEntities(entityNames = Object.keys(this._storage.sharedEntities)) {
105
+ return entityNames.map(entityName => ({ entityName, entity: this.getEntity(entityName) }));
106
+ }
74
107
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generator-jhipster",
3
- "version": "7.6.0",
3
+ "version": "7.7.0",
4
4
  "description": "Spring Boot + Angular/React/Vue in one handy generator",
5
5
  "keywords": [
6
6
  "yeoman-generator",
@@ -35,14 +35,17 @@
35
35
  "url": "https://github.com/jdubois"
36
36
  },
37
37
  "exports": {
38
- ".": "./lib/index.js",
38
+ ".": {
39
+ "import": "./lib/index.mjs",
40
+ "default": "./lib/index.js"
41
+ },
39
42
  "./cli/": "./cli/",
40
43
  "./generators/": "./generators/",
41
44
  "./jdl/": "./jdl/",
42
45
  "./lib/": "./lib/",
43
46
  "./utils/": "./utils/",
44
47
  "./package.json": "./package.json",
45
- "./esm/cli": "./cli/program.js",
48
+ "./esm/cli": "./cli/index.mjs",
46
49
  "./esm/generators/*": "./generators/*/esm.mjs",
47
50
  "./esm/generators": "./lib/constants/generators.mjs",
48
51
  "./esm/priorities": "./lib/constants/priorities.mjs",
@@ -58,9 +61,9 @@
58
61
  "jdl",
59
62
  "lib",
60
63
  "utils",
61
- "!__*",
62
- "!*.snap",
63
- "!*.spec.?(c|m)js"
64
+ "!**/__*",
65
+ "!**/*.snap",
66
+ "!**/*.spec.?(c|m)js"
64
67
  ],
65
68
  "scripts": {
66
69
  "completion": "tabtab install --name jhipster --auto",
@@ -80,22 +83,22 @@
80
83
  "update-snapshots": "npm run update-snapshot -- test generators"
81
84
  },
82
85
  "dependencies": {
83
- "aws-sdk": "2.1062.0",
84
- "axios": "0.25.0",
86
+ "@faker-js/faker": "5.5.3",
87
+ "aws-sdk": "2.1077.0",
88
+ "axios": "0.26.0",
85
89
  "chalk": "4.1.2",
86
- "chevrotain": "10.0.0",
87
- "commander": "8.3.0",
90
+ "chevrotain": "10.1.1",
91
+ "commander": "9.0.0",
88
92
  "conf": "10.1.1",
89
93
  "debug": "4.3.3",
90
94
  "didyoumean": "1.2.2",
91
95
  "ejs": "3.1.6",
92
- "faker": "5.5.3",
93
96
  "glob": "7.2.0",
94
97
  "insight": "0.11.1",
95
98
  "js-yaml": "4.1.0",
96
99
  "lodash": "4.17.21",
97
100
  "mem-fs-editor": "9.4.0",
98
- "minimatch": "3.0.4",
101
+ "minimatch": "5.0.0",
99
102
  "normalize-path": "3.0.0",
100
103
  "os-locale": "5.0.0",
101
104
  "p-queue": "6.6.2",
@@ -109,33 +112,34 @@
109
112
  "randexp": "0.5.3",
110
113
  "semver": "7.3.5",
111
114
  "shelljs": "0.8.5",
112
- "simple-git": "3.0.3",
115
+ "simple-git": "3.2.6",
113
116
  "then-request": "6.0.2",
114
117
  "uuid": "8.3.2",
115
- "winston": "3.4.0",
118
+ "winston": "3.6.0",
116
119
  "yeoman-environment": "3.9.1",
117
120
  "yeoman-generator": "5.6.1"
118
121
  },
119
122
  "devDependencies": {
120
- "chai": "4.3.4",
123
+ "chai": "4.3.6",
121
124
  "ejs-lint": "1.2.1",
122
- "eslint": "8.7.0",
125
+ "eslint": "8.9.0",
123
126
  "eslint-config-airbnb-base": "15.0.0",
124
- "eslint-config-prettier": "8.3.0",
127
+ "eslint-config-prettier": "8.4.0",
125
128
  "eslint-plugin-chai-friendly": "^0.7.1",
126
129
  "eslint-plugin-import": "2.25.4",
127
130
  "eslint-plugin-mocha": "10.0.3",
128
131
  "eslint-plugin-prettier": "4.0.0",
129
- "expect": "27.4.6",
132
+ "expect": "27.5.1",
130
133
  "fs-extra": "10.0.0",
131
- "jsdoc": "3.6.7",
132
- "mocha": "9.1.4",
133
- "mocha-expect-snapshot": "2.1.0",
134
+ "jsdoc": "3.6.10",
135
+ "mocha": "9.2.1",
136
+ "mocha-expect-snapshot": "3.1.0",
134
137
  "proxyquire": "2.1.3",
135
- "sinon": "12.0.1",
138
+ "sinon": "13.0.1",
136
139
  "sinon-chai": "3.7.0",
140
+ "sort-keys": "4.2.0",
137
141
  "yeoman-assert": "3.1.1",
138
- "yeoman-test": "6.2.0"
142
+ "yeoman-test": "6.3.0"
139
143
  },
140
144
  "engines": {
141
145
  "node": "^12.20.0 || ^14.13.1 || >=16.0.0",
package/utils/entity.js CHANGED
@@ -19,6 +19,8 @@
19
19
 
20
20
  const _ = require('lodash');
21
21
  const pluralize = require('pluralize');
22
+ const path = require('path');
23
+
22
24
  const { createFaker } = require('./faker');
23
25
  const { parseLiquibaseChangelogDate } = require('./liquibase');
24
26
  const { entityDefaultConfig } = require('../generators/generator-defaults');
@@ -84,7 +86,7 @@ const BASE_TEMPLATE_DATA = {
84
86
  return [];
85
87
  },
86
88
  get differentRelationships() {
87
- return [];
89
+ return {};
88
90
  },
89
91
  get i18nToLoad() {
90
92
  return [];
@@ -109,7 +111,9 @@ function prepareEntityForTemplates(entityWithConfig, generator) {
109
111
  const entityName = _.upperFirst(entityWithConfig.name);
110
112
  _.defaults(entityWithConfig, entityDefaultConfig, BASE_TEMPLATE_DATA);
111
113
 
112
- entityWithConfig.changelogDateForRecent = parseLiquibaseChangelogDate(entityWithConfig.changelogDate);
114
+ if (entityWithConfig.changelogDate) {
115
+ entityWithConfig.changelogDateForRecent = parseLiquibaseChangelogDate(entityWithConfig.changelogDate);
116
+ }
113
117
  entityWithConfig.faker = entityWithConfig.faker || createFaker(generator.jhipsterConfig.nativeLanguage);
114
118
  entityWithConfig.resetFakerSeed = (suffix = '') =>
115
119
  entityWithConfig.faker.seed(stringHashCode(entityWithConfig.name.toLowerCase() + suffix));
@@ -238,6 +242,18 @@ function prepareEntityForTemplates(entityWithConfig, generator) {
238
242
  return entityWithConfig;
239
243
  }
240
244
 
245
+ function prepareEntityServerDomainForTemplates(entity) {
246
+ const { entityPackage, packageName, packageFolder, persistClass } = entity;
247
+ let { entityAbsolutePackage = packageName, entityAbsoluteFolder = packageFolder } = entity;
248
+ if (entityPackage) {
249
+ entityAbsolutePackage = [packageName, entityPackage].join('.');
250
+ entityAbsoluteFolder = path.join(packageFolder, entityPackage.replace(/\./g, '/'));
251
+ }
252
+ entity.entityAbsolutePackage = entityAbsolutePackage;
253
+ entity.entityAbsoluteFolder = entityAbsoluteFolder;
254
+ entity.entityAbsoluteClass = `${entityAbsolutePackage}.domain.${persistClass}`;
255
+ }
256
+
241
257
  function derivedPrimaryKeyProperties(primaryKey) {
242
258
  _.defaults(primaryKey, {
243
259
  hasUUID: primaryKey.fields && primaryKey.fields.some(field => field.fieldType === UUID),
@@ -465,6 +481,7 @@ function loadRequiredConfigIntoEntity(entity, config) {
465
481
 
466
482
  module.exports = {
467
483
  prepareEntityForTemplates,
484
+ prepareEntityServerDomainForTemplates,
468
485
  prepareEntityPrimaryKeyForTemplates,
469
486
  loadRequiredConfigIntoEntity,
470
487
  derivedPrimaryKeyProperties,
package/utils/faker.js CHANGED
@@ -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
- const Faker = require('faker/lib');
19
+ const Faker = require('@faker-js/faker/lib');
20
20
  const Randexp = require('randexp');
21
21
 
22
22
  const { languageToJavaLanguage } = require('../generators/utils');
@@ -46,11 +46,11 @@ function createFaker(nativeLanguage = 'en') {
46
46
  nativeLanguage = languageToJavaLanguage(nativeLanguage);
47
47
  // Fallback language
48
48
  // eslint-disable-next-line global-require
49
- const locales = { en: require('faker/lib/locales/en') };
49
+ const locales = { en: require('@faker-js/faker/lib/locales/en') };
50
50
  if (nativeLanguage !== 'en') {
51
51
  try {
52
52
  // eslint-disable-next-line global-require, import/no-dynamic-require
53
- const nativeLanguageLocale = require(`faker/lib/locales/${nativeLanguage}`);
53
+ const nativeLanguageLocale = require(`@faker-js/faker/lib/locales/${nativeLanguage}`);
54
54
  locales[nativeLanguage] = nativeLanguageLocale;
55
55
  } catch (error) {
56
56
  // Faker not implemented for the native language, fallback to en.
package/utils/field.js CHANGED
@@ -300,62 +300,17 @@ function prepareFieldForTemplates(entityWithConfig, field, generator) {
300
300
  field.contentTypeFieldName = `${field.fieldName}ContentType`;
301
301
  }
302
302
 
303
- if (field.fieldNameAsDatabaseColumn === undefined) {
304
- const fieldNameUnderscored = _.snakeCase(field.fieldName);
305
- const jhiFieldNamePrefix = generator.getColumnName(entityWithConfig.jhiPrefix);
306
- if (isReservedTableName(fieldNameUnderscored, entityWithConfig.prodDatabaseType)) {
307
- if (!jhiFieldNamePrefix) {
308
- generator.warning(
309
- `The field name '${fieldNameUnderscored}' is regarded as a reserved keyword, but you have defined an empty jhiPrefix. This might lead to a non-working application.`
310
- );
311
- field.fieldNameAsDatabaseColumn = fieldNameUnderscored;
312
- } else {
313
- field.fieldNameAsDatabaseColumn = `${jhiFieldNamePrefix}_${fieldNameUnderscored}`;
314
- }
315
- } else {
316
- field.fieldNameAsDatabaseColumn = fieldNameUnderscored;
317
- }
303
+ if (entityWithConfig.prodDatabaseType) {
304
+ // TODO move to server generator.
305
+ prepareServerFieldForTemplates(entityWithConfig, field, generator);
318
306
  }
319
- field.columnName = field.fieldNameAsDatabaseColumn;
320
307
 
321
- if (field.fieldInJavaBeanMethod === undefined) {
322
- // Handle the specific case when the second letter is capitalized
323
- // See http://stackoverflow.com/questions/2948083/naming-convention-for-getters-setters-in-java
324
- if (field.fieldName.length > 1) {
325
- const firstLetter = field.fieldName.charAt(0);
326
- const secondLetter = field.fieldName.charAt(1);
327
- if (firstLetter === firstLetter.toLowerCase() && secondLetter === secondLetter.toUpperCase()) {
328
- field.fieldInJavaBeanMethod = firstLetter.toLowerCase() + field.fieldName.slice(1);
329
- } else {
330
- field.fieldInJavaBeanMethod = _.upperFirst(field.fieldName);
331
- }
332
- } else {
333
- field.fieldInJavaBeanMethod = _.upperFirst(field.fieldName);
334
- }
335
- }
308
+ prepareClientFieldForTemplates(entityWithConfig, field, generator);
336
309
 
337
310
  if (field.fieldIsEnum) {
338
311
  field.enumValues = getEnumValuesWithCustomValues(field.fieldValues);
339
312
  }
340
313
 
341
- if (field.fieldValidateRulesPatternJava === undefined) {
342
- field.fieldValidateRulesPatternJava = field.fieldValidateRulesPattern
343
- ? field.fieldValidateRulesPattern.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
344
- : field.fieldValidateRulesPattern;
345
- }
346
-
347
- if (field.fieldValidateRulesPatternAngular === undefined) {
348
- field.fieldValidateRulesPatternAngular = field.fieldValidateRulesPattern
349
- ? field.fieldValidateRulesPattern.replace(/"/g, '"')
350
- : field.fieldValidateRulesPattern;
351
- }
352
-
353
- if (field.fieldValidateRulesPatternReact === undefined) {
354
- field.fieldValidateRulesPatternReact = field.fieldValidateRulesPattern
355
- ? field.fieldValidateRulesPattern.replace(/'/g, "\\'")
356
- : field.fieldValidateRulesPattern;
357
- }
358
-
359
314
  field.fieldValidate = Array.isArray(field.fieldValidateRules) && field.fieldValidateRules.length >= 1;
360
315
  field.nullable = !(field.fieldValidate === true && field.fieldValidateRules.includes(REQUIRED));
361
316
  field.unique = field.fieldValidate === true && field.fieldValidateRules.includes(UNIQUE);
@@ -453,6 +408,63 @@ function getEnumValuesWithCustomValues(enumValues) {
453
408
  });
454
409
  }
455
410
 
411
+ function prepareClientFieldForTemplates(entityWithConfig, field, generator) {
412
+ if (field.fieldValidateRulesPatternAngular === undefined) {
413
+ field.fieldValidateRulesPatternAngular = field.fieldValidateRulesPattern
414
+ ? field.fieldValidateRulesPattern.replace(/"/g, '"')
415
+ : field.fieldValidateRulesPattern;
416
+ }
417
+
418
+ if (field.fieldValidateRulesPatternReact === undefined) {
419
+ field.fieldValidateRulesPatternReact = field.fieldValidateRulesPattern
420
+ ? field.fieldValidateRulesPattern.replace(/'/g, "\\'")
421
+ : field.fieldValidateRulesPattern;
422
+ }
423
+ }
424
+
425
+ function prepareServerFieldForTemplates(entityWithConfig, field, generator) {
426
+ if (field.fieldNameAsDatabaseColumn === undefined) {
427
+ const fieldNameUnderscored = _.snakeCase(field.fieldName);
428
+ const jhiFieldNamePrefix = generator.getColumnName(entityWithConfig.jhiPrefix);
429
+
430
+ if (isReservedTableName(fieldNameUnderscored, entityWithConfig.prodDatabaseType)) {
431
+ if (!jhiFieldNamePrefix) {
432
+ generator.warning(
433
+ `The field name '${fieldNameUnderscored}' is regarded as a reserved keyword, but you have defined an empty jhiPrefix. This might lead to a non-working application.`
434
+ );
435
+ field.fieldNameAsDatabaseColumn = fieldNameUnderscored;
436
+ } else {
437
+ field.fieldNameAsDatabaseColumn = `${jhiFieldNamePrefix}_${fieldNameUnderscored}`;
438
+ }
439
+ } else {
440
+ field.fieldNameAsDatabaseColumn = fieldNameUnderscored;
441
+ }
442
+ }
443
+ field.columnName = field.fieldNameAsDatabaseColumn;
444
+
445
+ if (field.fieldInJavaBeanMethod === undefined) {
446
+ // Handle the specific case when the second letter is capitalized
447
+ // See http://stackoverflow.com/questions/2948083/naming-convention-for-getters-setters-in-java
448
+ if (field.fieldName.length > 1) {
449
+ const firstLetter = field.fieldName.charAt(0);
450
+ const secondLetter = field.fieldName.charAt(1);
451
+ if (firstLetter === firstLetter.toLowerCase() && secondLetter === secondLetter.toUpperCase()) {
452
+ field.fieldInJavaBeanMethod = firstLetter.toLowerCase() + field.fieldName.slice(1);
453
+ } else {
454
+ field.fieldInJavaBeanMethod = _.upperFirst(field.fieldName);
455
+ }
456
+ } else {
457
+ field.fieldInJavaBeanMethod = _.upperFirst(field.fieldName);
458
+ }
459
+ }
460
+
461
+ if (field.fieldValidateRulesPatternJava === undefined) {
462
+ field.fieldValidateRulesPatternJava = field.fieldValidateRulesPattern
463
+ ? field.fieldValidateRulesPattern.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
464
+ : field.fieldValidateRulesPattern;
465
+ }
466
+ }
467
+
456
468
  function fieldToReference(entity, field, pathPrefix = []) {
457
469
  return {
458
470
  id: field.id,
@@ -184,9 +184,11 @@ function prepareRelationshipForTemplates(entityWithConfig, relationship, generat
184
184
  }
185
185
  }
186
186
 
187
- if (isReservedTableName(relationship.otherEntityTableName, entityWithConfig.prodDatabaseType) && jhiTablePrefix) {
188
- const otherEntityTableName = relationship.otherEntityTableName;
189
- relationship.otherEntityTableName = `${jhiTablePrefix}_${otherEntityTableName}`;
187
+ if (entityWithConfig.prodDatabaseType) {
188
+ if (isReservedTableName(relationship.otherEntityTableName, entityWithConfig.prodDatabaseType) && jhiTablePrefix) {
189
+ const otherEntityTableName = relationship.otherEntityTableName;
190
+ relationship.otherEntityTableName = `${jhiTablePrefix}_${otherEntityTableName}`;
191
+ }
190
192
  }
191
193
 
192
194
  if (relationship.otherEntityAngularName === undefined) {
package/utils/user.js ADDED
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Copyright 2013-2022 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
+ const _ = require('lodash');
20
+
21
+ const { loadRequiredConfigIntoEntity } = require('./entity');
22
+
23
+ const { SQL } = require('../jdl/jhipster/database-types');
24
+ const { OAUTH2 } = require('../jdl/jhipster/authentication-types');
25
+ const { CommonDBTypes } = require('../jdl/jhipster/field-types');
26
+
27
+ const { STRING: TYPE_STRING } = CommonDBTypes;
28
+
29
+ module.exports = {
30
+ createUserEntity,
31
+ };
32
+
33
+ function createUserEntity(customUserData = {}) {
34
+ const userEntityDefinition = this.readEntityJson('User');
35
+ if (userEntityDefinition) {
36
+ if (userEntityDefinition.relationships && userEntityDefinition.relationships.length > 0) {
37
+ this.warning('Relationships on the User entity side will be disregarded');
38
+ }
39
+ if (userEntityDefinition.fields && userEntityDefinition.fields.some(field => field.fieldName !== 'id')) {
40
+ this.warning('Fields on the User entity side (other than id) will be disregarded');
41
+ }
42
+ }
43
+
44
+ // Create entity definition for built-in entity to make easier to deal with relationships.
45
+ const user = {
46
+ name: 'User',
47
+ builtIn: true,
48
+ entityTableName: `${this.getTableName(this.jhipsterConfig.jhiPrefix)}_user`,
49
+ relationships: [],
50
+ fields: userEntityDefinition ? userEntityDefinition.fields || [] : [],
51
+ dto: true,
52
+ ...customUserData,
53
+ };
54
+
55
+ loadRequiredConfigIntoEntity(user, this.jhipsterConfig);
56
+ // Fallback to defaults for test cases.
57
+ loadRequiredConfigIntoEntity(user, this.jhipsterDefaults);
58
+
59
+ const oauth2 = user.authenticationType === OAUTH2;
60
+ const userIdType = oauth2 || user.databaseType !== SQL ? TYPE_STRING : this.getPkType(user.databaseType);
61
+ const fieldValidateRulesMaxlength = userIdType === TYPE_STRING ? 100 : undefined;
62
+
63
+ addOrExtendFields(user.fields, [
64
+ {
65
+ fieldName: 'id',
66
+ fieldType: userIdType,
67
+ fieldValidateRulesMaxlength,
68
+ fieldTranslationKey: 'global.field.id',
69
+ fieldNameHumanized: 'ID',
70
+ id: true,
71
+ builtIn: true,
72
+ },
73
+ {
74
+ fieldName: 'login',
75
+ fieldType: TYPE_STRING,
76
+ builtIn: true,
77
+ },
78
+ {
79
+ fieldName: 'firstName',
80
+ fieldType: TYPE_STRING,
81
+ builtIn: true,
82
+ },
83
+ {
84
+ fieldName: 'lastName',
85
+ fieldType: TYPE_STRING,
86
+ builtIn: true,
87
+ },
88
+ ]);
89
+
90
+ return user;
91
+ }
92
+
93
+ function addOrExtendFields(fields, fieldsToAdd) {
94
+ fieldsToAdd = [].concat(fieldsToAdd);
95
+ for (const fieldToAdd of fieldsToAdd) {
96
+ const { fieldName: newFieldName, id } = fieldToAdd;
97
+ let field = fields.find(field => field.fieldName === newFieldName);
98
+ if (!field) {
99
+ field = { ...fieldToAdd };
100
+ if (id) {
101
+ fields.unshift(field);
102
+ } else {
103
+ fields.push(field);
104
+ }
105
+ } else {
106
+ _.defaults(field, fieldToAdd);
107
+ }
108
+ }
109
+ }
@@ -1,47 +0,0 @@
1
- /**
2
- * Copyright 2013-2022 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 expect from 'expect';
20
- import lodash from 'lodash';
21
- import { basename, dirname } from 'path';
22
- import { fileURLToPath } from 'url';
23
-
24
- import testSupport from '../../test/support/index.cjs';
25
- import Generator from './index.js';
26
-
27
- const { snakeCase } = lodash;
28
- const { testBlueprintSupport } = testSupport;
29
-
30
- const __filename = fileURLToPath(import.meta.url);
31
- const __dirname = dirname(__filename);
32
-
33
- const generator = basename(__dirname);
34
-
35
- describe(`JHipster ${generator} generator`, () => {
36
- it('generator-list constant matches folder name', async () => {
37
- await expect((await import('../generator-list.js')).default[`GENERATOR_${snakeCase(generator).toUpperCase()}`]).toBe(generator);
38
- });
39
- it('should be exported at package.json', async () => {
40
- await expect((await import(`generator-jhipster/esm/generators/${generator}`)).default).toBe(Generator);
41
- });
42
- it('should support features parameter', () => {
43
- const instance = new Generator([], { help: true }, { bar: true });
44
- expect(instance.features.bar).toBe(true);
45
- });
46
- describe('blueprint support', () => testBlueprintSupport(generator));
47
- });
@@ -1,47 +0,0 @@
1
- /**
2
- * Copyright 2013-2022 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 expect from 'expect';
20
- import lodash from 'lodash';
21
- import { basename, dirname } from 'path';
22
- import { fileURLToPath } from 'url';
23
-
24
- import testSupport from '../../test/support/index.cjs';
25
- import Generator from './index.js';
26
-
27
- const { snakeCase } = lodash;
28
- const { testBlueprintSupport } = testSupport;
29
-
30
- const __filename = fileURLToPath(import.meta.url);
31
- const __dirname = dirname(__filename);
32
-
33
- const generator = basename(__dirname);
34
-
35
- describe(`JHipster ${generator} generator`, () => {
36
- it('generator-list constant matches folder name', async () => {
37
- await expect((await import('../generator-list.js')).default[`GENERATOR_${snakeCase(generator).toUpperCase()}`]).toBe(generator);
38
- });
39
- it('should be exported at package.json', async () => {
40
- await expect((await import(`generator-jhipster/esm/generators/${generator}`)).default).toBe(Generator);
41
- });
42
- it('should support features parameter', () => {
43
- const instance = new Generator([], { help: true }, { bar: true });
44
- expect(instance.features.bar).toBe(true);
45
- });
46
- describe('blueprint support', () => testBlueprintSupport(generator));
47
- });
@@ -1,47 +0,0 @@
1
- /**
2
- * Copyright 2013-2022 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 expect from 'expect';
20
- import lodash from 'lodash';
21
- import { basename, dirname } from 'path';
22
- import { fileURLToPath } from 'url';
23
-
24
- import testSupport from '../../test/support/index.cjs';
25
- import Generator from './index.js';
26
-
27
- const { snakeCase } = lodash;
28
- const { testBlueprintSupport } = testSupport;
29
-
30
- const __filename = fileURLToPath(import.meta.url);
31
- const __dirname = dirname(__filename);
32
-
33
- const generator = basename(__dirname);
34
-
35
- describe(`JHipster ${generator} generator`, () => {
36
- it('generator-list constant matches folder name', async () => {
37
- await expect((await import('../generator-list.js')).default[`GENERATOR_${snakeCase(generator).toUpperCase()}`]).toBe(generator);
38
- });
39
- it('should be exported at package.json', async () => {
40
- await expect((await import(`generator-jhipster/esm/generators/${generator}`)).default).toBe(Generator);
41
- });
42
- it('should support features parameter', () => {
43
- const instance = new Generator([], { help: true }, { bar: true });
44
- expect(instance.features.bar).toBe(true);
45
- });
46
- describe('blueprint support', () => testBlueprintSupport(generator));
47
- });