generator-jhipster 7.3.0 → 7.5.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 (340) hide show
  1. package/cli/import-jdl.js +3 -2
  2. package/cli/jhipster-command.js +2 -2
  3. package/cli/program.js +32 -29
  4. package/generators/app/index.js +46 -27
  5. package/generators/aws/index.js +8 -8
  6. package/generators/aws/lib/eb.js +1 -1
  7. package/generators/azure-app-service/index.js +16 -9
  8. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +2 -2
  9. package/generators/azure-spring-cloud/index.js +16 -9
  10. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +2 -2
  11. package/generators/bootstrap/index.js +57 -62
  12. package/generators/ci-cd/index.js +11 -8
  13. package/generators/ci-cd/templates/github-actions.yml.ejs +1 -1
  14. package/generators/ci-cd/templates/travis.yml.ejs +9 -4
  15. package/generators/cleanup.js +27 -171
  16. package/generators/client/files-angular.js +12 -1
  17. package/generators/client/files-common.js +6 -2
  18. package/generators/client/files-react.js +13 -2
  19. package/generators/client/files-vue.js +59 -7
  20. package/generators/client/index.js +46 -32
  21. package/generators/client/needle-api/needle-client-angular.js +1 -1
  22. package/generators/client/needle-api/needle-client-vue.js +57 -7
  23. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  24. package/generators/client/templates/angular/angular.json.ejs +5 -0
  25. package/generators/client/templates/angular/jest.conf.js.ejs +2 -0
  26. package/generators/client/templates/angular/package.json +29 -29
  27. package/generators/client/templates/angular/package.json.ejs +3 -1
  28. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
  29. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.ts.ejs +4 -4
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.spec.ts.ejs +78 -80
  34. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.ts.ejs +4 -4
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
  37. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +4 -4
  38. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
  39. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
  40. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
  41. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +122 -123
  42. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.ts.ejs +1 -1
  43. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
  44. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
  45. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +80 -80
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +4 -4
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +89 -91
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +4 -4
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +8 -8
  60. package/generators/client/templates/angular/src/main/webapp/app/app-routing.module.ts.ejs +14 -3
  61. package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +8 -29
  62. package/generators/client/templates/angular/src/main/webapp/app/config/datepicker-adapter.ts.ejs +1 -1
  63. package/generators/client/templates/angular/src/main/webapp/app/config/dayjs.ts.ejs +4 -4
  64. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +14 -9
  65. package/generators/client/templates/angular/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +6 -6
  66. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/entities/entity-navbar-items.ts.ejs +29 -0
  68. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +106 -98
  69. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
  70. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.ts.ejs +1 -1
  71. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +20 -0
  72. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +74 -70
  73. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +41 -2
  74. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
  75. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +114 -115
  76. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.ts.ejs +4 -4
  77. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
  78. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
  79. package/generators/client/templates/angular/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +4 -4
  80. package/generators/client/templates/angular/src/main/webapp/app/shared/date/duration.pipe.ts.ejs +1 -1
  81. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-date.pipe.spec.ts.ejs +1 -1
  82. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-date.pipe.ts.ejs +1 -1
  83. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-datetime.pipe.spec.ts.ejs +1 -1
  84. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts.ejs +1 -1
  85. package/generators/client/templates/angular/src/main/webapp/app/shared/language/translate.directive.ts.ejs +6 -6
  86. package/generators/client/templates/angular/src/main/webapp/app/shared/language/translation.module.ts.ejs +83 -0
  87. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +16 -2
  88. package/generators/client/templates/angular/tsconfig.json.ejs +2 -0
  89. package/generators/client/templates/angular/tsconfig.spec.json.ejs +0 -1
  90. package/generators/client/templates/angular/webpack/proxy.conf.js.ejs +0 -2
  91. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +0 -16
  92. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +12 -5
  93. package/generators/client/templates/common/package.json +6 -6
  94. package/generators/client/templates/common/src/main/webapp/robots.txt.ejs +0 -1
  95. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +86 -56
  96. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  97. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  98. package/generators/client/templates/react/package.json +54 -53
  99. package/generators/client/templates/react/package.json.ejs +6 -1
  100. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  101. package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +3 -2
  102. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
  103. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
  104. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  105. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  106. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  107. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  108. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.scss.ejs +9 -0
  109. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +2 -2
  110. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  111. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  112. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  113. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +1 -1
  114. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -3
  115. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
  116. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  117. package/generators/client/templates/vue/package.json +40 -49
  118. package/generators/client/templates/vue/package.json.ejs +13 -17
  119. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +23 -12
  120. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  121. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  122. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  123. package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +16 -6
  124. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +27 -8
  125. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  126. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  127. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  128. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  129. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +20 -0
  130. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  131. package/generators/client/templates/vue/src/main/webapp/app/entities/user/{user.oauth2.service.ts.ejs → user.service.ts.ejs} +1 -1
  132. package/generators/client/templates/vue/{webpack/utils.js.ejs → src/main/webapp/app/index.ts.ejs} +1 -12
  133. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -9
  134. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +20 -18
  135. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +45 -3
  136. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +19 -3
  137. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +0 -2
  138. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +3 -1
  139. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +17 -3
  140. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +25 -10
  141. package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +2 -2
  142. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +6 -4
  143. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +4 -2
  144. package/generators/client/templates/vue/src/test/javascript/spec/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +10 -4
  145. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  146. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  147. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  148. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  149. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +0 -1
  150. package/generators/client/templates/vue/tsconfig.json.ejs +6 -10
  151. package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
  152. package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
  153. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
  154. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +150 -126
  155. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -76
  156. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  157. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -41
  158. package/generators/cloudfoundry/index.js +9 -9
  159. package/generators/common/index.js +12 -10
  160. package/generators/common/templates/.prettierrc.ejs +1 -1
  161. package/generators/common/templates/README.md.jhi.ejs +19 -0
  162. package/generators/common/templates/package.json +4 -4
  163. package/generators/cypress/index.js +12 -9
  164. package/generators/cypress/templates/cypress.json.ejs +16 -2
  165. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/login-page.spec.ts.ejs +3 -14
  166. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/password-page.spec.ts.ejs +33 -39
  167. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/register-page.spec.ts.ejs +52 -62
  168. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs +2 -10
  169. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +25 -34
  170. package/generators/cypress/templates/src/test/javascript/cypress/integration/administration/administration.spec.ts.ejs +1 -22
  171. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +4 -4
  172. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +67 -7
  173. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
  174. package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -6
  175. package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
  176. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +8 -8
  177. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +0 -9
  178. package/generators/database-changelog/index.js +33 -22
  179. package/generators/database-changelog-liquibase/index.js +12 -8
  180. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +1 -1
  181. package/generators/docker-compose/index.js +11 -12
  182. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +1 -1
  183. package/generators/entities/index.js +35 -26
  184. package/generators/entities-client/index.js +10 -7
  185. package/generators/entity/index.js +81 -32
  186. package/generators/entity-client/files.js +7 -16
  187. package/generators/entity-client/index.js +22 -12
  188. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
  189. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +1 -1
  190. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +58 -60
  191. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -35
  192. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  193. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +4 -4
  194. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +110 -112
  195. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +9 -2
  196. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +8 -8
  197. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/no-pagination-template.ejs +8 -8
  198. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +8 -8
  199. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +15 -6
  200. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
  201. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +1 -1
  202. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +1 -1
  203. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +203 -198
  204. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +5 -5
  205. package/generators/entity-client/templates/angular/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  206. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +264 -127
  207. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +17 -14
  208. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +5 -4
  209. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -13
  210. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +32 -25
  211. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
  212. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +2 -1
  213. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  214. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  215. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +10 -7
  216. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +5 -1
  217. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
  218. package/generators/entity-i18n/index.js +7 -4
  219. package/generators/entity-server/files.js +14 -0
  220. package/generators/entity-server/index.js +12 -8
  221. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +2 -2
  222. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  223. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +9 -8
  224. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +16 -29
  225. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +3 -3
  226. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
  227. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +1 -1
  228. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +18 -2
  229. package/generators/entity-server/templates/src/main/java/package/repository/search/SortToFieldSortBuilderConverter.java.ejs +24 -0
  230. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +8 -6
  231. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +5 -1
  232. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +41 -43
  233. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +3 -3
  234. package/generators/gae/index.js +10 -10
  235. package/generators/generator-base-blueprint.js +14 -46
  236. package/generators/generator-base-private.js +44 -23
  237. package/generators/generator-base.js +58 -18
  238. package/generators/generator-constants.js +30 -23
  239. package/generators/generator-transforms.js +39 -27
  240. package/generators/heroku/index.js +14 -33
  241. package/generators/init/constants.cjs +1 -1
  242. package/generators/java/constants.cjs +1 -1
  243. package/generators/kubernetes/files.js +3 -0
  244. package/generators/kubernetes/index.js +10 -10
  245. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
  246. package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
  247. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  248. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  249. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  250. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  251. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  252. package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
  253. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  254. package/generators/kubernetes-base.js +1 -0
  255. package/generators/kubernetes-helm/files.js +3 -8
  256. package/generators/kubernetes-helm/index.js +10 -10
  257. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
  258. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +5 -0
  259. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
  260. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +5 -0
  261. package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
  262. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +1 -1
  263. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +1 -1
  264. package/generators/kubernetes-knative/index.js +10 -10
  265. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
  266. package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
  267. package/generators/languages/index.js +13 -13
  268. package/generators/languages/templates/src/main/webapp/i18n/vi/login.json +1 -1
  269. package/generators/openapi-client/index.js +13 -10
  270. package/generators/openshift/index.js +10 -11
  271. package/generators/openshift/templates/deployment.yml.ejs +1 -1
  272. package/generators/page/index.js +12 -10
  273. package/generators/server/__snapshots__/generator.spec.mjs.snap +28 -15
  274. package/generators/server/cleanup.js +151 -0
  275. package/generators/server/files-sql.js +52 -0
  276. package/generators/server/files.js +31 -14
  277. package/generators/server/index.js +86 -33
  278. package/generators/server/templates/build.gradle.ejs +231 -189
  279. package/generators/server/templates/gradle.properties.ejs +12 -12
  280. package/generators/server/templates/npmw +8 -6
  281. package/generators/server/templates/npmw.cmd +13 -8
  282. package/generators/server/templates/pom.xml.ejs +425 -217
  283. package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
  284. package/generators/server/templates/src/main/docker/app.yml.ejs +1 -1
  285. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +2 -2
  286. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +3 -2
  287. package/generators/server/templates/src/main/java/package/config/OpenApiConfiguration.java.ejs +17 -54
  288. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +5 -5
  289. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +4 -6
  290. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -3
  291. package/generators/server/templates/src/main/java/package/config/neo4j/Neo4jMigrations.java.ejs +19 -9
  292. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  293. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +2 -2
  294. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +0 -25
  295. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +31 -4
  296. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +23 -11
  297. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +16 -8
  298. package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +6 -6
  299. package/generators/server/templates/src/main/java/package/web/filter/ModifyServersOpenApiFilter.java.ejs +3 -2
  300. package/generators/server/templates/src/main/java/package/web/filter/SpaWebFilter.java.ejs +1 -1
  301. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  302. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +2 -2
  303. package/generators/server/templates/src/main/resources/config/application.yml.ejs +22 -8
  304. package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +1 -2
  305. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  306. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +2 -6
  307. package/generators/server/templates/src/test/java/package/cucumber/CucumberTestContextConfiguration.java.ejs +2 -3
  308. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +41 -6
  309. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  310. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
  311. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  312. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  313. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +17 -3
  314. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
  315. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +1 -1
  316. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +2 -3
  317. package/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerTest.java.ejs +9 -0
  318. package/generators/server/templates/src/test/resources/junit-platform.properties.ejs +2 -0
  319. package/generators/server/templates/src/test/resources/logback.xml.ejs +1 -1
  320. package/generators/server/templates/src/test/{features → resources/package/features}/gitkeep +0 -0
  321. package/generators/server/templates/src/test/{features → resources/package/features}/user/user.feature.ejs +0 -0
  322. package/generators/spring-controller/index.js +9 -7
  323. package/generators/spring-controller/templates/src/test/java/package/web/rest/ResourceIT.java.ejs +1 -1
  324. package/generators/spring-service/index.js +10 -7
  325. package/generators/upgrade/index.js +4 -5
  326. package/generators/utils.js +2 -2
  327. package/generators/workspaces/index.js +16 -7
  328. package/jdl/jhipster/default-application-options.js +9 -7
  329. package/package.json +22 -22
  330. package/utils/entity.js +17 -4
  331. package/utils/field.js +11 -1
  332. package/utils/multi-step-transform/index.js +8 -8
  333. package/generators/client/templates/react/.npmrc.ejs +0 -1
  334. package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -17
  335. package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
  336. package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
  337. package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -15
  338. package/generators/server/templates/src/main/java/package/config/apidocs/GatewaySwaggerResourcesProvider.java.ejs +0 -91
  339. package/generators/server/templates/src/test/java/package/config/apidocs/GatewaySwaggerResourcesProviderTest.java.ejs +0 -79
  340. package/generators/server/templates/src/test/resources/cucumber.properties.ejs +0 -1
@@ -41,15 +41,13 @@ const { formatDateForChangelog } = require('../utils/liquibase');
41
41
  const { calculateDbNameWithLimit, hibernateSnakeCase } = require('../utils/db');
42
42
  const defaultApplicationOptions = require('../jdl/jhipster/default-application-options');
43
43
  const databaseTypes = require('../jdl/jhipster/database-types');
44
+ const { ANGULAR_X: ANGULAR, REACT, VUE, NO: CLIENT_FRAMEWORK_NO } = require('../jdl/jhipster/client-framework-types');
44
45
 
45
46
  const JHIPSTER_CONFIG_DIR = constants.JHIPSTER_CONFIG_DIR;
46
47
  const MODULES_HOOK_FILE = `${JHIPSTER_CONFIG_DIR}/modules/jhi-hooks.json`;
47
48
  const GENERATOR_JHIPSTER = 'generator-jhipster';
48
49
 
49
50
  const SERVER_MAIN_RES_DIR = constants.SERVER_MAIN_RES_DIR;
50
- const ANGULAR = constants.SUPPORTED_CLIENT_FRAMEWORKS.ANGULAR;
51
- const REACT = constants.SUPPORTED_CLIENT_FRAMEWORKS.REACT;
52
- const VUE = constants.SUPPORTED_CLIENT_FRAMEWORKS.VUE;
53
51
 
54
52
  const { ORACLE, MYSQL, POSTGRESQL, MARIADB, MSSQL, SQL, MONGODB, COUCHBASE, NEO4J, CASSANDRA, H2_MEMORY, H2_DISK } = databaseTypes;
55
53
  const NO_DATABASE = databaseTypes.NO;
@@ -159,7 +157,13 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
159
157
  * Alternative templatePath that fetches from the blueprinted generator, instead of the blueprint.
160
158
  */
161
159
  jhipsterTemplatePath(...args) {
162
- this._jhipsterGenerator = this._jhipsterGenerator || this.env.requireNamespace(this.options.namespace).generator;
160
+ try {
161
+ this._jhipsterGenerator = this._jhipsterGenerator || this.env.requireNamespace(this.options.namespace).generator;
162
+ } catch (error) {
163
+ throw new Error(
164
+ `The Namespace ${this.options.namespace} may not be correct. Please check your configuration and ensure your blueprint folder start with "generator-". Detail: ${error}`
165
+ );
166
+ }
163
167
  return this.fetchFromInstalledJHipster(this._jhipsterGenerator, 'templates', ...args);
164
168
  }
165
169
 
@@ -450,8 +454,8 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
450
454
  } else if (clientFramework === VUE) {
451
455
  this.needleApi.clientVue.addEntityToRouterImport(entityName, entityFileName, entityFolderName, readOnly);
452
456
  this.needleApi.clientVue.addEntityToRouter(entityInstance, entityName, entityFileName, readOnly);
453
- this.needleApi.clientVue.addEntityServiceToMainImport(entityName, entityClass, entityFileName, entityFolderName);
454
- this.needleApi.clientVue.addEntityServiceToMain(entityInstance, entityName);
457
+ this.needleApi.clientVue.addEntityServiceToEntitiesComponentImport(entityName, entityClass, entityFileName, entityFolderName);
458
+ this.needleApi.clientVue.addEntityServiceToEntitiesComponent(entityInstance, entityName);
455
459
  }
456
460
  }
457
461
 
@@ -1862,16 +1866,22 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
1862
1866
  */
1863
1867
  generateKeyStore() {
1864
1868
  const done = this.async();
1865
- const keyStoreFile = `${SERVER_MAIN_RES_DIR}config/tls/keystore.p12`;
1869
+
1870
+ let keystoreFolder = `${SERVER_MAIN_RES_DIR}config/tls/`;
1871
+ if (this.destinationPath) {
1872
+ keystoreFolder = this.destinationPath(keystoreFolder);
1873
+ }
1874
+ const keyStoreFile = `${keystoreFolder}/keystore.p12`;
1875
+
1866
1876
  if (this.fs.exists(keyStoreFile)) {
1867
1877
  this.log(chalk.cyan(`\nKeyStore '${keyStoreFile}' already exists. Leaving unchanged.\n`));
1868
1878
  done();
1869
1879
  } else {
1870
1880
  try {
1871
- shelljs.mkdir('-p', `${SERVER_MAIN_RES_DIR}config/tls`);
1881
+ shelljs.mkdir('-p', keystoreFolder);
1872
1882
  } catch (error) {
1873
1883
  // noticed that on windows the shelljs.mkdir tends to sometimes fail
1874
- fs.mkdir(`${SERVER_MAIN_RES_DIR}config/tls`, { recursive: true }, err => {
1884
+ fs.mkdir(keystoreFolder, { recursive: true }, err => {
1875
1885
  if (err) throw err;
1876
1886
  });
1877
1887
  }
@@ -2615,7 +2625,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2615
2625
  this.jhipsterConfig.clientFramework = options.clientFramework;
2616
2626
  }
2617
2627
  if (options.testFrameworks) {
2618
- this.jhipsterConfig.testFrameworks = options.testFrameworks;
2628
+ this.jhipsterConfig.testFrameworks = [...new Set([...(this.jhipsterConfig.testFrameworks || []), ...options.testFrameworks])];
2619
2629
  }
2620
2630
  if (options.cypressCoverage !== undefined) {
2621
2631
  this.jhipsterConfig.cypressCoverage = options.cypressCoverage;
@@ -2626,7 +2636,11 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2626
2636
  if (options.language) {
2627
2637
  // workaround double options parsing, remove once generator supports skipping parse options
2628
2638
  const languages = options.language.flat();
2629
- this.jhipsterConfig.languages = [...this.jhipsterConfig.languages, ...languages];
2639
+ if (languages.length === 1 && languages[0] === 'false') {
2640
+ this.jhipsterConfig.enableTranslation = false;
2641
+ } else {
2642
+ this.jhipsterConfig.languages = [...this.jhipsterConfig.languages, ...languages];
2643
+ }
2630
2644
  }
2631
2645
  if (options.nativeLanguage) {
2632
2646
  if (typeof options.nativeLanguage === 'string') {
@@ -2661,6 +2675,10 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2661
2675
  this.jhipsterConfig.reactive = options.reactive;
2662
2676
  }
2663
2677
 
2678
+ if (options.enableSwaggerCodegen !== undefined) {
2679
+ this.jhipsterConfig.enableSwaggerCodegen = options.enableSwaggerCodegen;
2680
+ }
2681
+
2664
2682
  if (options.clientPackageManager) {
2665
2683
  this.jhipsterConfig.clientPackageManager = options.clientPackageManager;
2666
2684
  }
@@ -2715,7 +2733,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2715
2733
  * @param {any} config - config to load config from
2716
2734
  * @param {any} dest - destination context to use default is context
2717
2735
  */
2718
- loadAppConfig(config = _.defaults({}, this.jhipsterConfig, defaultConfig), dest = this) {
2736
+ loadAppConfig(config = _.defaults({}, this.jhipsterConfig, this.jhipsterDefaults), dest = this) {
2719
2737
  dest.jhipsterVersion = config.jhipsterVersion;
2720
2738
  dest.baseName = config.baseName;
2721
2739
  dest.applicationType = config.applicationType;
@@ -2726,6 +2744,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2726
2744
  dest.dtoSuffix = config.dtoSuffix;
2727
2745
  dest.skipUserManagement = config.skipUserManagement;
2728
2746
  dest.skipCheckLengthOfIdentifier = config.skipCheckLengthOfIdentifier;
2747
+ dest.microfrontend = config.microfrontend;
2729
2748
 
2730
2749
  dest.skipServer = config.skipServer;
2731
2750
  dest.skipCommitHook = config.skipCommitHook;
@@ -2735,7 +2754,6 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2735
2754
  dest.pages = config.pages;
2736
2755
  dest.skipJhipsterDependencies = !!config.skipJhipsterDependencies;
2737
2756
  dest.withAdminUi = config.withAdminUi;
2738
- dest.microfrontend = config.microfrontend;
2739
2757
  dest.gatewayServerPort = config.gatewayServerPort;
2740
2758
 
2741
2759
  dest.capitalizedBaseName = config.capitalizedBaseName;
@@ -2746,6 +2764,8 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2746
2764
  dest.testFrameworks = config.testFrameworks || [];
2747
2765
  dest.cypressCoverage = config.cypressCoverage;
2748
2766
 
2767
+ dest.remotes = Object.entries(config.applications || {}).map(([baseName, config]) => ({ baseName, ...config })) || [];
2768
+
2749
2769
  dest.gatlingTests = dest.testFrameworks.includes(GATLING);
2750
2770
  dest.cucumberTests = dest.testFrameworks.includes(CUCUMBER);
2751
2771
  dest.protractorTests = dest.testFrameworks.includes(PROTRACTOR);
@@ -2773,7 +2793,17 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2773
2793
  dest.humanizedBaseName =
2774
2794
  dest.humanizedBaseName || (dest.baseName.toLowerCase() === 'jhipster' ? 'JHipster' : _.startCase(dest.baseName));
2775
2795
  dest.projectDescription = dest.projectDescription || `Description for ${this.baseName}`;
2796
+ dest.endpointPrefix = !dest.applicationType || dest.applicationTypeMicroservice ? `services/${dest.lowercaseBaseName}` : '';
2776
2797
  }
2798
+
2799
+ if (dest.remotes) {
2800
+ dest.remotes.forEach(app => this.loadDerivedAppConfig(app));
2801
+ dest.microfrontends = dest.remotes.filter(r => r.clientFramework && r.clientFramework !== CLIENT_FRAMEWORK_NO);
2802
+ }
2803
+ dest.microfrontend =
2804
+ dest.microfrontend ||
2805
+ (dest.applicationTypeMicroservice && !dest.skipClient) ||
2806
+ (dest.applicationTypeGateway && dest.microfrontends && dest.microfrontends.length > 0);
2777
2807
  }
2778
2808
 
2779
2809
  /**
@@ -2783,7 +2813,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2783
2813
  * @param {any} config - config to load config from
2784
2814
  * @param {any} dest - destination context to use default is context
2785
2815
  */
2786
- loadClientConfig(config = _.defaults({}, this.jhipsterConfig, defaultConfig), dest = this) {
2816
+ loadClientConfig(config = _.defaults({}, this.jhipsterConfig, this.jhipsterDefaults), dest = this) {
2787
2817
  dest.clientPackageManager = config.clientPackageManager;
2788
2818
  dest.clientFramework = config.clientFramework;
2789
2819
  dest.clientTheme = config.clientTheme;
@@ -2814,7 +2844,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2814
2844
  * @param {any} config - config to load config from
2815
2845
  * @param {any} dest - destination context to use default is context
2816
2846
  */
2817
- loadTranslationConfig(config = _.defaults({}, this.jhipsterConfig, defaultConfig), dest = this) {
2847
+ loadTranslationConfig(config = _.defaults({}, this.jhipsterConfig, this.jhipsterDefaults), dest = this) {
2818
2848
  dest.enableTranslation = config.enableTranslation;
2819
2849
  dest.nativeLanguage = config.nativeLanguage;
2820
2850
  dest.languages = config.languages;
@@ -2827,7 +2857,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2827
2857
  * @param {any} config - config to load config from
2828
2858
  * @param {any} dest - destination context to use default is context
2829
2859
  */
2830
- loadServerConfig(config = _.defaults({}, this.jhipsterConfig, defaultConfig), dest = this) {
2860
+ loadServerConfig(config = _.defaults({}, this.jhipsterConfig, this.jhipsterDefaults), dest = this) {
2831
2861
  dest.packageName = config.packageName;
2832
2862
  dest.packageFolder = config.packageFolder;
2833
2863
  dest.serverPort = config.serverPort;
@@ -2941,7 +2971,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2941
2971
  [MYSQL, POSTGRESQL, MSSQL, MARIADB].includes(dest.devDatabaseType));
2942
2972
  }
2943
2973
 
2944
- loadPlatformConfig(config = _.defaults({}, this.jhipsterConfig, defaultConfig), dest = this) {
2974
+ loadPlatformConfig(config = _.defaults({}, this.jhipsterConfig, this.jhipsterDefaults), dest = this) {
2945
2975
  dest.serviceDiscoveryType = config.serviceDiscoveryType;
2946
2976
  dest.monitoring = config.monitoring;
2947
2977
  this.loadDerivedPlatformConfig(dest);
@@ -3011,11 +3041,21 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
3011
3041
  return this._needleApi;
3012
3042
  }
3013
3043
 
3044
+ /**
3045
+ * Default config based on current applicationType
3046
+ */
3047
+ get jhipsterDefaults() {
3048
+ return this.getDefaultConfigForApplicationType();
3049
+ }
3050
+
3014
3051
  /**
3015
3052
  * Get default config based on applicationType
3016
3053
  */
3017
3054
  getDefaultConfigForApplicationType(applicationType = this.jhipsterConfig.applicationType) {
3018
- return { ...defaultApplicationOptions.getConfigForApplicationType(applicationType), ...defaultConfig };
3055
+ return {
3056
+ ...defaultApplicationOptions.getConfigForApplicationType(applicationType),
3057
+ ...(applicationType === MICROSERVICE ? defaultConfigMicroservice : defaultConfig),
3058
+ };
3019
3059
  }
3020
3060
 
3021
3061
  setConfigDefaults(defaults = this.jhipsterConfig.applicationType === MICROSERVICE ? defaultConfigMicroservice : defaultConfig) {
@@ -22,27 +22,28 @@ const { ANGULAR_X, REACT, VUE } = require('../jdl/jhipster/client-framework-type
22
22
  const commonPackageJson = require('./common/templates/package.json');
23
23
 
24
24
  // Version of Java
25
- const JAVA_VERSION = '11'; // Java version is forced to be 11. We keep the variable as it might be useful in the future.
25
+ const JAVA_VERSION = '11';
26
+ const JAVA_COMPATIBLE_VERSIONS = ['11', '12', '13', '14', '15', '16', '17'];
26
27
 
27
28
  // Version of Node, NPM
28
- const NODE_VERSION = '14.17.6';
29
+ const NODE_VERSION = '16.13.1';
29
30
  const NPM_VERSION = commonPackageJson.devDependencies.npm;
30
31
  const OPENAPI_GENERATOR_CLI_VERSION = '1.0.13-4.3.1';
31
32
 
32
- const GRADLE_VERSION = '7.0.2';
33
+ const GRADLE_VERSION = '7.3.1';
33
34
  const JIB_VERSION = '3.1.4';
34
35
 
35
36
  // Libraries version
36
- const JHIPSTER_DEPENDENCIES_VERSION = '7.3.0';
37
+ const JHIPSTER_DEPENDENCIES_VERSION = '7.5.0';
37
38
  // The spring-boot version should match the one managed by https://mvnrepository.com/artifact/tech.jhipster/jhipster-dependencies/JHIPSTER_DEPENDENCIES_VERSION
38
- const SPRING_BOOT_VERSION = '2.5.5';
39
- const LIQUIBASE_VERSION = '4.5.0';
39
+ const SPRING_BOOT_VERSION = '2.5.8';
40
+ const LIQUIBASE_VERSION = '4.6.1';
40
41
  const LIQUIBASE_DTD_VERSION = LIQUIBASE_VERSION.split('.', 3).slice(0, 2).join('.');
41
- const HIBERNATE_VERSION = '5.4.32.Final';
42
+ const HIBERNATE_VERSION = '5.4.33';
42
43
 
43
44
  const JACOCO_VERSION = '0.8.7';
44
45
  const KAFKA_VERSION = '5.5.5';
45
- const JACKSON_DATABIND_NULLABLE_VERSION = '0.2.1';
46
+ const JACKSON_DATABIND_NULLABLE_VERSION = '0.2.2';
46
47
 
47
48
  // Version of docker images
48
49
  const DOCKER_COMPOSE_FORMAT_VERSION = '3.8';
@@ -50,27 +51,27 @@ const DOCKER_COMPOSE_FORMAT_VERSION = '3.8';
50
51
  const DOCKER_JHIPSTER_REGISTRY = 'jhipster/jhipster-registry:v7.1.0';
51
52
  const DOCKER_JHIPSTER_CONTROL_CENTER = 'jhipster/jhipster-control-center:v0.5.0';
52
53
  const DOCKER_JAVA_JRE = 'eclipse-temurin:11-jre-focal';
53
- const DOCKER_MYSQL = 'mysql:8.0.26';
54
- const DOCKER_MARIADB = 'mariadb:10.6.4';
55
- const DOCKER_POSTGRESQL = 'postgres:13.4';
56
- const DOCKER_MONGODB = 'mongo:4.4.8';
54
+ const DOCKER_MYSQL = 'mysql:8.0.27';
55
+ const DOCKER_MARIADB = 'mariadb:10.7.1';
56
+ const DOCKER_POSTGRESQL = 'postgres:13.5';
57
+ const DOCKER_MONGODB = 'mongo:4.4.10';
57
58
  const DOCKER_COUCHBASE = 'couchbase/server:7.0.0';
58
59
  const DOCKER_CASSANDRA = 'cassandra:3.11.11';
59
- const DOCKER_MSSQL = 'mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-20.04';
60
- const DOCKER_NEO4J = 'neo4j:4.2.11';
60
+ const DOCKER_MSSQL = 'mcr.microsoft.com/mssql/server:2019-CU13-ubuntu-20.04';
61
+ const DOCKER_NEO4J = 'neo4j:4.3.7';
61
62
  const DOCKER_HAZELCAST_MANAGEMENT_CENTER = 'hazelcast/management-center:4.2021.06';
62
- const DOCKER_MEMCACHED = 'memcached:1.6.10-alpine';
63
- const DOCKER_REDIS = 'redis:6.2.5';
64
- const DOCKER_KEYCLOAK = 'jboss/keycloak:15.0.2'; // The version should match the attribute 'keycloakVersion' from /docker-compose/templates/realm-config/jhipster-realm.json.ejs and /server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs
63
+ const DOCKER_MEMCACHED = 'memcached:1.6.12-alpine';
64
+ const DOCKER_REDIS = 'redis:6.2.6';
65
+ const DOCKER_KEYCLOAK = 'jboss/keycloak:16.1.0'; // The version should match the attribute 'keycloakVersion' from /docker-compose/templates/realm-config/jhipster-realm.json.ejs and /server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs
65
66
  const DOCKER_ELASTICSEARCH = 'docker.elastic.co/elasticsearch/elasticsearch:7.13.3'; // The version should be coherent with the one from spring-data-elasticsearch project
66
67
  const DOCKER_KAFKA = `confluentinc/cp-kafka:${KAFKA_VERSION}`;
67
68
  const DOCKER_ZOOKEEPER = `confluentinc/cp-zookeeper:${KAFKA_VERSION}`;
68
- const DOCKER_SONAR = 'sonarqube:8.9.2-community';
69
- const DOCKER_CONSUL = 'consul:1.9.9';
69
+ const DOCKER_SONAR = 'sonarqube:9.1.0-community';
70
+ const DOCKER_CONSUL = 'consul:1.10.4';
70
71
  const DOCKER_CONSUL_CONFIG_LOADER = 'jhipster/consul-config-loader:v0.4.1';
71
- const DOCKER_PROMETHEUS = 'prom/prometheus:v2.29.2';
72
+ const DOCKER_PROMETHEUS = 'prom/prometheus:v2.31.1';
72
73
  const DOCKER_PROMETHEUS_ALERTMANAGER = 'prom/alertmanager:v0.23.0';
73
- const DOCKER_GRAFANA = 'grafana/grafana:8.1.3';
74
+ const DOCKER_GRAFANA = 'grafana/grafana:8.2.4';
74
75
  const DOCKER_JENKINS = 'jenkins/jenkins:lts-jdk11';
75
76
  const DOCKER_SWAGGER_EDITOR = 'swaggerapi/swagger-editor:latest';
76
77
  const DOCKER_PROMETHEUS_OPERATOR = 'quay.io/coreos/prometheus-operator:v0.42.1';
@@ -82,7 +83,7 @@ const KUBERNETES_BATCH_API_VERSION = 'batch/v1';
82
83
  const KUBERNETES_DEPLOYMENT_API_VERSION = 'apps/v1';
83
84
  const KUBERNETES_STATEFULSET_API_VERSION = 'apps/v1';
84
85
  const KUBERNETES_INGRESS_API_VERSION = 'networking.k8s.io/v1beta1';
85
- const KUBERNETES_ISTIO_NETWORKING_API_VERSION = 'networking.istio.io/v1alpha3';
86
+ const KUBERNETES_ISTIO_NETWORKING_API_VERSION = 'networking.istio.io/v1beta1';
86
87
  const KUBERNETES_RBAC_API_VERSION = 'rbac.authorization.k8s.io/v1';
87
88
 
88
89
  // Helm versions
@@ -94,6 +95,7 @@ const HELM_MYSQL = '^1.4.0';
94
95
  const HELM_MARIADB = '^6.12.2';
95
96
  const HELM_POSTGRESQL = '^6.5.3';
96
97
  const HELM_MOGODB_REPLICASET = '^3.10.1';
98
+ const HELM_COUCHBASE_OPERATOR = '^2.2.1';
97
99
 
98
100
  // all constants used throughout all generators
99
101
 
@@ -247,10 +249,13 @@ const LANGUAGES = [
247
249
  name: 'Indonesian',
248
250
  dispName: 'Bahasa Indonesia',
249
251
  /*
250
- To fix a nasty bug in the JDK ("Indonesian Locale does not comply with ISO 639")
252
+ JDK <17 ("Indonesian Locale does not comply with ISO 639")
251
253
  The locale is set to "in" for Indonesia
252
254
  See https://bugs.openjdk.java.net/browse/JDK-6457127
253
255
  And https://github.com/jhipster/generator-jhipster/issues/9494
256
+ Java 17 supports 'id' locale, for compatibility with java 11, we will keep legacy 'in' value while we support java 11.
257
+ When running with java 17 users must set 'java.locale.useOldISOCodes=true' environment variable.
258
+ See https://bugs.openjdk.java.net/browse/JDK-8267069.
254
259
  */
255
260
  value: 'in',
256
261
  localeId: 'id',
@@ -379,6 +384,7 @@ const constants = {
379
384
  DOCKER_PROMETHEUS_ALERTMANAGER,
380
385
  DOCKER_GRAFANA,
381
386
  JAVA_VERSION,
387
+ JAVA_COMPATIBLE_VERSIONS,
382
388
  KAFKA_VERSION,
383
389
  GRADLE_VERSION,
384
390
 
@@ -420,6 +426,7 @@ const constants = {
420
426
  HELM_MARIADB,
421
427
  HELM_POSTGRESQL,
422
428
  HELM_MOGODB_REPLICASET,
429
+ HELM_COUCHBASE_OPERATOR,
423
430
  };
424
431
 
425
432
  module.exports = constants;
@@ -18,24 +18,31 @@
18
18
  */
19
19
  const { State } = require('mem-fs-editor');
20
20
  const path = require('path');
21
- const { createFileTransform } = require('yeoman-environment/lib/util/transform');
21
+ const { passthrough } = require('p-transform');
22
22
  const prettier = require('prettier');
23
23
  const prettierPluginJava = require('prettier-plugin-java');
24
24
  const prettierPluginPackagejson = require('prettier-plugin-packagejson');
25
+ const { patternSpy } = require('yeoman-environment/transform');
25
26
 
26
27
  const { isFileStateDeleted } = State;
27
28
 
28
- const prettierTransform = function (options, generator, ignoreErrors = false) {
29
- return createFileTransform((file, encoding, callback) => {
30
- if (isFileStateDeleted(file)) {
31
- callback(null, file);
32
- return Promise.resolve();
33
- }
34
- /* resolve from the projects config */
35
- let fileContent;
36
- return prettier
37
- .resolveConfig(file.relative)
38
- .then(function (resolvedDestinationFileOptions) {
29
+ const prettierTransform = function (options, generator, transformOptions = {}) {
30
+ if (typeof transformOptions === 'boolean') {
31
+ transformOptions = { ignoreErrors: transformOptions };
32
+ }
33
+ const { ignoreErrors = false, extensions = generator.getPrettierExtensions() } = transformOptions;
34
+ return patternSpy(
35
+ async file => {
36
+ if (isFileStateDeleted(file)) {
37
+ return file;
38
+ }
39
+ if (!file.contents) {
40
+ throw new Error(`File content doesn't exist for ${file.relative}`);
41
+ }
42
+ /* resolve from the projects config */
43
+ let fileContent;
44
+ try {
45
+ const resolvedDestinationFileOptions = await prettier.resolveConfig(file.relative);
39
46
  const prettierOptions = {
40
47
  plugins: [],
41
48
  // Config from disk
@@ -52,27 +59,33 @@ const prettierTransform = function (options, generator, ignoreErrors = false) {
52
59
  fileContent = file.contents.toString('utf8');
53
60
  const data = prettier.format(fileContent, prettierOptions);
54
61
  file.contents = Buffer.from(data);
55
- callback(null, file);
56
- })
57
- .catch(error => {
58
- const errorMessage = `Error parsing file ${file.relative}: ${error}
62
+ return file;
63
+ } catch (error) {
64
+ let errorMessage;
65
+ if (fileContent) {
66
+ errorMessage = `Error parsing file ${file.relative}: ${error}
59
67
 
60
68
  At: ${fileContent
61
- .split('\n')
62
- .map((value, idx) => `${idx + 1}: ${value}`)
63
- .join('\n')}`;
69
+ .split('\n')
70
+ .map((value, idx) => `${idx + 1}: ${value}`)
71
+ .join('\n')}`;
72
+ } else {
73
+ errorMessage = `Unknown prettier error: ${error}`;
74
+ }
64
75
  if (ignoreErrors) {
65
76
  generator.warning(errorMessage);
66
- callback(null, file);
67
- } else {
68
- callback(new Error(errorMessage));
77
+ return file;
69
78
  }
70
- });
71
- });
79
+ throw new Error(errorMessage);
80
+ }
81
+ },
82
+ `**/*.{${extensions}}`,
83
+ { dot: true }
84
+ ).name('jhipster:prettier');
72
85
  };
73
86
 
74
87
  const generatedAnnotationTransform = generator => {
75
- return createFileTransform(function (file, encoding, callback) {
88
+ return passthrough(file => {
76
89
  if (
77
90
  !file.path.endsWith('package-info.java') &&
78
91
  !file.path.endsWith('MavenWrapperDownloader.java') &&
@@ -92,8 +105,7 @@ const generatedAnnotationTransform = generator => {
92
105
  file.contents = Buffer.from(newContent);
93
106
  }
94
107
  }
95
- callback(null, file);
96
- });
108
+ }, 'jhipster:generated-by-annotation');
97
109
  };
98
110
 
99
111
  module.exports = {
@@ -39,8 +39,6 @@ const { EUREKA } = require('../../jdl/jhipster/service-discovery-types');
39
39
  const NO_CACHE_PROVIDER = cacheProviderOptions.NO;
40
40
  const execCmd = util.promisify(ChildProcess.exec);
41
41
 
42
- let useBlueprints;
43
-
44
42
  module.exports = class extends BaseBlueprintGenerator {
45
43
  constructor(args, options, features) {
46
44
  super(args, options, features);
@@ -64,8 +62,12 @@ module.exports = class extends BaseBlueprintGenerator {
64
62
  this.randomPassword = crypto.randomBytes(20).toString('hex');
65
63
  this.herokuSkipBuild = this.options.skipBuild;
66
64
  this.herokuSkipDeploy = this.options.skipDeploy || this.options.skipBuild;
65
+ }
67
66
 
68
- useBlueprints = !this.fromBlueprint && this.instantiateBlueprints(GENERATOR_HEROKU);
67
+ async _postConstruct() {
68
+ if (!this.fromBlueprint) {
69
+ await this.composeWithBlueprints(GENERATOR_HEROKU);
70
+ }
69
71
  }
70
72
 
71
73
  _initializing() {
@@ -99,7 +101,7 @@ module.exports = class extends BaseBlueprintGenerator {
99
101
  }
100
102
 
101
103
  get initializing() {
102
- if (useBlueprints) return;
104
+ if (this.delegateToBlueprint) return {};
103
105
  return this._initializing();
104
106
  }
105
107
 
@@ -191,29 +193,8 @@ module.exports = class extends BaseBlueprintGenerator {
191
193
  type: 'list',
192
194
  name: 'herokuJavaVersion',
193
195
  message: 'Which Java version would you like to use to build and run your app ?',
194
- choices: [
195
- {
196
- value: '1.8',
197
- name: '1.8',
198
- },
199
- {
200
- value: '11',
201
- name: '11',
202
- },
203
- {
204
- value: '12',
205
- name: '12',
206
- },
207
- {
208
- value: '13',
209
- name: '13',
210
- },
211
- {
212
- value: '14',
213
- name: '14',
214
- },
215
- ],
216
- default: 1,
196
+ choices: constants.JAVA_COMPATIBLE_VERSIONS.map(version => ({ value: version })),
197
+ default: constants.JAVA_VERSION,
217
198
  },
218
199
  ];
219
200
 
@@ -269,7 +250,7 @@ module.exports = class extends BaseBlueprintGenerator {
269
250
  }
270
251
 
271
252
  get prompting() {
272
- if (useBlueprints) return;
253
+ if (this.delegateToBlueprint) return {};
273
254
  return this._prompting();
274
255
  }
275
256
 
@@ -301,7 +282,7 @@ module.exports = class extends BaseBlueprintGenerator {
301
282
  }
302
283
 
303
284
  get configuring() {
304
- if (useBlueprints) return;
285
+ if (this.delegateToBlueprint) return {};
305
286
  return this._configuring();
306
287
  }
307
288
 
@@ -321,7 +302,7 @@ module.exports = class extends BaseBlueprintGenerator {
321
302
  }
322
303
 
323
304
  get loading() {
324
- if (useBlueprints) return;
305
+ if (this.delegateToBlueprint) return {};
325
306
  return this._loading();
326
307
  }
327
308
 
@@ -596,7 +577,7 @@ module.exports = class extends BaseBlueprintGenerator {
596
577
  }
597
578
 
598
579
  get default() {
599
- if (useBlueprints) return;
580
+ if (this.delegateToBlueprint) return {};
600
581
  return this._default();
601
582
  }
602
583
 
@@ -643,7 +624,7 @@ module.exports = class extends BaseBlueprintGenerator {
643
624
  }
644
625
 
645
626
  get writing() {
646
- if (useBlueprints) return;
627
+ if (this.delegateToBlueprint) return {};
647
628
  return this._writing();
648
629
  }
649
630
 
@@ -871,7 +852,7 @@ module.exports = class extends BaseBlueprintGenerator {
871
852
  }
872
853
 
873
854
  get end() {
874
- if (useBlueprints) return;
855
+ if (this.delegateToBlueprint) return {};
875
856
  return this._end();
876
857
  }
877
858
  };
@@ -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 NODE_VERSION = '14.17.1';
19
+ const NODE_VERSION = '14.18.1';
20
20
 
21
21
  const PRETTIER_DEFAULT_INDENT = 'prettierDefaultIndent';
22
22
  const PRETTIER_DEFAULT_INDENT_DEFAULT_VALUE = 2;
@@ -20,7 +20,7 @@ const { MAVEN: BUILD_TOOL_MAVEN, MAVEN_DESCRIPTION, BUILD_DESTINATION_VALUE } =
20
20
  const { GRADLE: BUILD_TOOL_GRADLE, GRADLE_DESCRIPTION } = require('../gradle/constants.cjs');
21
21
 
22
22
  const JAVA_VERSION = '11';
23
- const JAVA_COMPATIBLE_VERSIONS = ['1.8', '1.9', '10', '11', '12', '13', '14', '15', '16'];
23
+ const JAVA_COMPATIBLE_VERSIONS = ['11', '12', '13', '14', '15', '16', '17'];
24
24
  const JAVA_APP_VERSION = '0.0.1-SNAPSHOT';
25
25
  const JAVA_SOURCE_DIR = 'src/main/java/';
26
26
  const JAVA_RESOURCE_DIR = 'src/main/resources/';
@@ -57,6 +57,9 @@ function writeFiles() {
57
57
  if (!this.app.serviceDiscoveryType && this.app.authenticationType === JWT) {
58
58
  this.template('secret/jwt-secret.yml.ejs', `${appOut}/jwt-secret.yml`);
59
59
  }
60
+ if (this.app.prodDatabaseTypeCouchbase) {
61
+ this.template('secret/couchbase-secret.yml.ejs', `${appOut}/templates/couchbase-secret.yml`);
62
+ }
60
63
  if (this.monitoring === PROMETHEUS) {
61
64
  this.template('monitoring/jhipster-prometheus-sm.yml.ejs', `${appOut}/${appName}-prometheus-sm.yml`);
62
65
  }
@@ -35,11 +35,11 @@ const {
35
35
  } = require('../kubernetes-base');
36
36
  const statistics = require('../statistics');
37
37
 
38
- let useBlueprints;
39
38
  module.exports = class extends BaseDockerGenerator {
40
- constructor(args, options, features) {
41
- super(args, options, features);
42
- useBlueprints = !this.fromBlueprint && this.instantiateBlueprints(GENERATOR_KUBERNETES);
39
+ async _postConstruct() {
40
+ if (!this.fromBlueprint) {
41
+ await this.composeWithBlueprints(GENERATOR_KUBERNETES);
42
+ }
43
43
  }
44
44
 
45
45
  _initializing() {
@@ -56,7 +56,7 @@ module.exports = class extends BaseDockerGenerator {
56
56
  }
57
57
 
58
58
  get initializing() {
59
- if (useBlueprints) return;
59
+ if (this.delegateToBlueprint) return {};
60
60
  return this._initializing();
61
61
  }
62
62
 
@@ -82,7 +82,7 @@ module.exports = class extends BaseDockerGenerator {
82
82
  }
83
83
 
84
84
  get prompting() {
85
- if (useBlueprints) return;
85
+ if (this.delegateToBlueprint) return {};
86
86
  return this._prompting();
87
87
  }
88
88
 
@@ -110,7 +110,7 @@ module.exports = class extends BaseDockerGenerator {
110
110
  }
111
111
 
112
112
  get configuring() {
113
- if (useBlueprints) return;
113
+ if (this.delegateToBlueprint) return {};
114
114
  return this._configuring();
115
115
  }
116
116
 
@@ -128,7 +128,7 @@ module.exports = class extends BaseDockerGenerator {
128
128
  }
129
129
 
130
130
  get loading() {
131
- if (useBlueprints) return;
131
+ if (this.delegateToBlueprint) return {};
132
132
  return this._loading();
133
133
  }
134
134
 
@@ -137,7 +137,7 @@ module.exports = class extends BaseDockerGenerator {
137
137
  }
138
138
 
139
139
  get writing() {
140
- if (useBlueprints) return;
140
+ if (this.delegateToBlueprint) return {};
141
141
  return this._writing();
142
142
  }
143
143
 
@@ -207,7 +207,7 @@ module.exports = class extends BaseDockerGenerator {
207
207
  }
208
208
 
209
209
  get end() {
210
- if (useBlueprints) return;
210
+ if (this.delegateToBlueprint) return {};
211
211
  return this._end();
212
212
  }
213
213
  };
@@ -204,7 +204,7 @@ spec:
204
204
  apiVersion: <%= KUBERNETES_CORE_API_VERSION %>
205
205
  kind: Service
206
206
  metadata:
207
- name: <%= app.baseName.toLowerCase() %>-couchbase
207
+ name: <%= app.baseName.toLowerCase() %>-couchbase-cluster-srv
208
208
  namespace: <%= kubernetesNamespace %>
209
209
  labels:
210
210
  app: <%= app.baseName.toLowerCase() %>-couchbase