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
@@ -1,12 +1,22 @@
1
1
  import { Component, Inject, Vue } from 'vue-property-decorator';
2
- import { VERSION } from '@/constants';
3
2
  import LoginService from '@/account/login.service';
4
3
  import AccountService from '@/account/account.service';
5
4
  <%_ if (enableTranslation) { _%>
6
5
  import TranslationService from '@/locale/translation.service';
7
6
  <%_ } %>
8
7
 
9
- @Component
8
+ import EntitiesMenu from '@/entities/entities-menu.vue';
9
+
10
+ @Component({
11
+ components: {
12
+ 'entities-menu': EntitiesMenu,
13
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
14
+ <%_ for (const remote of remotes) { _%>
15
+ '<%= remote.lowercaseBaseName %>-menu': () => import('@<%= remote.lowercaseBaseName %>/entities-menu'),
16
+ <%_ } _%>
17
+ <%_ } _%>
18
+ },
19
+ })
10
20
  export default class JhiNavbar extends Vue {
11
21
  @Inject('loginService')
12
22
  private loginService: () => LoginService;
@@ -14,7 +24,7 @@ export default class JhiNavbar extends Vue {
14
24
  @Inject('translationService') private translationService: () => TranslationService;
15
25
  <%_ } %>
16
26
  @Inject('accountService') private accountService: () => AccountService;
17
- public version = VERSION ? 'v' + VERSION : '';
27
+ public version = 'v' + VERSION;
18
28
  private currentLanguage = this.$store.getters.currentLanguage;
19
29
  private languages: any = this.$store.getters.languages;
20
30
  private hasAnyAuthorityValue = false;
@@ -43,21 +53,30 @@ export default class JhiNavbar extends Vue {
43
53
  }
44
54
  <%_ } _%>
45
55
 
46
- public logout() : void {
56
+ public logout() : Promise<any> {
47
57
  <%_ if (!authenticationTypeJwt) { _%>
48
- this.loginService().logout().then(response => {
58
+ return this.loginService().logout().then(response => {
49
59
  this.$store.commit('logout');
50
- this.$router.push('/');
51
60
  <%_ if (authenticationTypeOauth2) { _%>
52
- window.location.href = response.data.logoutUrl;
61
+ const next = response.data?.logoutUrl ?? '/';
62
+ if (this.$route.path !== next) {
63
+ return this.$router.push(next);
64
+ }
65
+ <%_ } else { _%>
66
+ if (this.$route.path !== '/') {
67
+ return this.$router.push('/');
68
+ }
53
69
  <%_ } _%>
54
70
  });
55
71
  <%_ } else { _%>
56
72
  localStorage.removeItem('<%=jhiPrefixDashed %>-authenticationToken');
57
73
  sessionStorage.removeItem('<%=jhiPrefixDashed %>-authenticationToken');
58
74
  this.$store.commit('logout');
59
- this.$router.push('/');
75
+ if (this.$route.path !== '/') {
76
+ return this.$router.push('/');
77
+ }
60
78
  <%_ } _%>
79
+ return Promise.resolve(this.$router.currentRoute);
61
80
  }
62
81
 
63
82
  public openLogin() : void {
@@ -33,6 +33,12 @@
33
33
  <font-awesome-icon icon="th-list" />
34
34
  <span class="no-bold" v-text="$t('global.menu.entities.main')">Entities</span>
35
35
  </span>
36
+ <entities-menu></entities-menu>
37
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
38
+ <%_ for (const remote of remotes) { _%>
39
+ <<%= remote.lowercaseBaseName %>-menu></<%= remote.lowercaseBaseName %>-menu>
40
+ <%_ } _%>
41
+ <%_ } _%>
36
42
  <!-- jhipster-needle-add-entity-to-menu - JHipster will add entities to the menu here -->
37
43
  </b-nav-item-dropdown>
38
44
  <b-nav-item-dropdown
@@ -0,0 +1,41 @@
1
+ <%#
2
+ Copyright 2013-2021 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
+ // These constants are injected via webpack environment variables.
20
+ // You can add more variables in webpack.common.js or in profile specific webpack.<dev|prod>.js files.
21
+ // If you change the values in the webpack config files, you need to re run webpack to update the application
22
+
23
+ declare const SERVER_API_URL: string;
24
+ declare const VERSION: string;
25
+ <%_ if (enableTranslation) { _%>
26
+ declare const I18N_HASH: string;
27
+ <%_ } _%>
28
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
29
+ <%_ for (const remote of microfrontends) { _%>
30
+
31
+ declare module '@<%= remote.lowercaseBaseName %>/entities-router' {
32
+ const _default: unknown;
33
+ export default _default;
34
+ }
35
+
36
+ declare module '@<%= remote.lowercaseBaseName %>/entities-menu' {
37
+ const _default: unknown;
38
+ export default _default;
39
+ }
40
+ <%_ } _%>
41
+ <%_ } _%>
@@ -0,0 +1,34 @@
1
+ import {
2
+ Component,
3
+ Inject,
4
+ Vue,
5
+ <%_ if (enableTranslation && applicationTypeMicroservice) { _%>
6
+ Watch,
7
+ <%_ } _%>
8
+ } from 'vue-property-decorator';
9
+ <%_ if (enableTranslation && applicationTypeMicroservice) { _%>
10
+ import TranslationService from '@/locale/translation.service';
11
+ <%_ } _%>
12
+
13
+ @Component
14
+ export default class EntitiesMenu extends Vue {
15
+ <%_ if (enableTranslation && applicationTypeMicroservice) { _%>
16
+ @Inject({ default: true }) private readonly microfrontendI18n!: boolean;
17
+ @Inject('translationService') private translationService: () => TranslationService;
18
+
19
+ @Watch('$i18n.locale')
20
+ onLocaleChanged() {
21
+ this.loadLanguage();
22
+ }
23
+
24
+ created(): void {
25
+ this.loadLanguage();
26
+ }
27
+
28
+ private loadLanguage() {
29
+ if (this.microfrontendI18n) {
30
+ this.translationService().loadTranslations('<%= frontendAppName %>', '<%= endpointPrefix %>/', I18N_HASH);
31
+ }
32
+ }
33
+ <%_ } _%>
34
+ }
@@ -0,0 +1,13 @@
1
+ <template>
2
+ <div>
3
+ <%_ for (entity of this.localEntities.filter(entity => !entity.embedded)) { _%>
4
+ <b-dropdown-item to="/<%= entity.entityPage %>">
5
+ <font-awesome-icon icon="asterisk" />
6
+ <span v-text="$t('global.menu.entities.<%= entity.entityTranslationKeyMenu %>')"><%= entity.entityClassHumanized %></span>
7
+ </b-dropdown-item>
8
+ <%_ } _%>
9
+ <!-- jhipster-needle-add-entity-to-menu - JHipster will add entities to the menu here -->
10
+ </div>
11
+ </template>
12
+
13
+ <script lang="ts" src="./entities-menu.component.ts"></script>
@@ -0,0 +1,20 @@
1
+ import { Component, Provide, Vue } from 'vue-property-decorator';
2
+
3
+ <%_ if (!skipUserManagement || authenticationTypeOauth2) { %>
4
+ import UserService from '@/entities/user/user.service';
5
+ <%_ } _%>
6
+ <%_ for (entity of this.localEntities.filter(entity => !entity.embedded)) { _%>
7
+ import <%= entity.entityAngularName %>Service from './<%= entity.entityFolderName %>/<%= entity.entityFileName %>.service';
8
+ <%_ } _%>
9
+ // jhipster-needle-add-entity-service-to-entities-component-import - JHipster will import entities services here
10
+
11
+ @Component
12
+ export default class Entities extends Vue {
13
+ <%_ if (!skipUserManagement || authenticationTypeOauth2) { %>
14
+ @Provide('userService') private userService = () => new UserService();
15
+ <%_ } _%>
16
+ <%_ for (entity of this.localEntities.filter(entity => !entity.embedded)) { _%>
17
+ @Provide('<%= entity.entityInstance %>Service') private <%= entity.entityInstance %>Service = () => new <%= entity.entityAngularName %>Service();
18
+ <%_ } _%>
19
+ // jhipster-needle-add-entity-service-to-entities-component - JHipster will import entities services here
20
+ }
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <router-view></router-view>
3
+ </template>
4
+
5
+ <script lang="ts" src="./entities.component.ts"></script>
@@ -2,7 +2,7 @@ import axios from 'axios';
2
2
 
3
3
  const baseApiUrl = 'api/users';
4
4
 
5
- export default class UserOAuth2Service {
5
+ export default class UserService {
6
6
  public retrieve(): Promise<any> {
7
7
  return new Promise<any>((resolve, reject) => {
8
8
  axios
@@ -16,15 +16,4 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- const path = require('path');
20
-
21
- module.exports = {
22
- root
23
- };
24
-
25
- const _root = path.resolve(__dirname, '..');
26
-
27
- function root(args) {
28
- args = Array.prototype.slice.call(arguments, 0);
29
- return path.join.apply(path, [_root].concat(args));
30
- }
19
+ import('./main');
@@ -11,31 +11,48 @@ export default class TranslationService {
11
11
  this.store = store;
12
12
  this.i18n = i18n;
13
13
  }
14
+ <%_ if (microfrontend) { _%>
15
+
16
+ public loadTranslations(appKey: string, urlPrefix: string, hash: string) {
17
+ const currentLanguage = this.store.getters.currentLanguage;
18
+ if (!this.i18n) return;
19
+
20
+ axios.get(`${urlPrefix}i18n/${currentLanguage}.json?_=${hash}`).then((res: any) => {
21
+ if (res.data) {
22
+ this.i18n.mergeLocaleMessage(currentLanguage, res.data);
23
+ }
24
+ });
25
+ }
26
+ <%_ } _%>
14
27
 
15
28
  public refreshTranslation(newLanguage: string) {
16
29
  let currentLanguage = this.store.getters.currentLanguage;
17
30
  currentLanguage = newLanguage ? newLanguage : '<%= nativeLanguage %>';
18
31
  if (this.i18n && !this.i18n.messages[currentLanguage]) {
19
32
  this.i18n.setLocaleMessage(currentLanguage, {});
20
- axios.get(`i18n/${currentLanguage}.json?_=${I18N_HASH}`).then((res) => {
33
+ axios.get(`i18n/${currentLanguage}.json?_=${I18N_HASH}`).then((res: any) => {
21
34
  if (res.data) {
22
- dayjs.locale(currentLanguage);
23
35
  this.i18n.setLocaleMessage(currentLanguage, res.data);
24
- this.i18n.locale = currentLanguage;
25
- this.store.commit('currentLanguage', currentLanguage);
36
+ this.setLocale(currentLanguage);
26
37
  }
27
38
  });
28
39
  } else if (this.i18n) {
29
- dayjs.locale(currentLanguage);
30
- this.i18n.locale = currentLanguage;
31
- this.store.commit('currentLanguage', currentLanguage);
40
+ this.setLocale(currentLanguage);
32
41
  }
42
+ }
43
+
44
+ private setLocale(lang: string) {
45
+ dayjs.locale(lang);
46
+ this.i18n.locale = lang;
47
+ this.store.commit('currentLanguage', lang);
48
+ axios.defaults.headers.common['Accept-Language'] = lang;
49
+ document.querySelector('html').setAttribute('lang', lang);
33
50
  <%_ if (enableI18nRTL) { _%>
34
- this.updatePageDirection(currentLanguage);
51
+ this.updatePageDirection(lang);
35
52
  <%_ } _%>
36
53
  }
37
-
38
54
  <%_ if (enableI18nRTL) { _%>
55
+
39
56
  private isRTL(lang: string): boolean {
40
57
  const languages = this.store.getters.languages;
41
58
  return languages[lang] && languages[lang].rtl;
@@ -5,7 +5,7 @@ import {FontAwesomeIcon} from '@fortawesome/vue-fontawesome';
5
5
  import App from './app.vue';
6
6
  import Vue2Filters from 'vue2-filters';
7
7
  import { ToastPlugin } from 'bootstrap-vue';
8
- import router from './router';
8
+ import router<% if (applicationTypeGateway && microfrontend) { %>, { lazyRoutes }<% } %> from './router';
9
9
  import * as config from './shared/config/config';
10
10
  import * as bootstrapVueConfig from './shared/config/config-bootstrap-vue';
11
11
  import JhiItemCountComponent from './shared/jhi-item-count.vue';
@@ -20,12 +20,12 @@ import ConfigurationService from '@/admin/configuration/configuration.service';
20
20
  <%_ if (!skipUserManagement) { _%>
21
21
  import ActivateService from './account/activate/activate.service';
22
22
  import RegisterService from './account/register/register.service';
23
- import UserManagementService from '@/admin/user-management/user-management.service';
24
23
  <%_ } _%>
25
24
  import LoginService from './account/login.service';
26
25
  import AccountService from './account/account.service';
27
26
  import AlertService from './shared/alert/alert.service';
28
27
 
28
+ import '../content/scss/global.scss';
29
29
  import '../content/scss/vendor.scss';
30
30
  <%_ if (enableTranslation) { _%>
31
31
  import TranslationService from '@/locale/translation.service';
@@ -36,9 +36,6 @@ import GatewayService from '@/admin/gateway/gateway.service';
36
36
  <%_ if (communicationSpringWebsocket) { _%>
37
37
  import TrackerService from './admin/tracker/tracker.service';
38
38
  <%_ } _%>
39
- <%_ if (!skipUserManagement || authenticationTypeOauth2) { %>
40
- import UserOAuth2Service from '@/entities/user/user.oauth2.service';
41
- <%_ } _%>
42
39
  /* tslint:disable */
43
40
 
44
41
  // jhipster-needle-add-entity-service-to-main-import - JHipster will import entities services here
@@ -68,13 +65,18 @@ const translationService = new TranslationService(store, i18n);
68
65
  const loginService = new LoginService();
69
66
  const accountService = new AccountService(store, <%_ if (enableTranslation) { _%>translationService, <%_ } _%><%_ if (authenticationTypeSession || authenticationTypeOauth2) { _%>(<any>Vue).cookie, <%_ } _%><%_ if (communicationSpringWebsocket) { _%>trackerService, <%_ } _%>router);
70
67
 
71
- router.beforeEach((to, from, next) => {
72
-
68
+ router.beforeEach(async (to, from, next) => {
73
69
  if (!to.matched.length) {
74
- next('/not-found');
75
- }
70
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
71
+ await lazyRoutes;
72
+ if (router.match(to.fullPath).matched.length > 0) {
73
+ next(to.fullPath);
74
+ return;
75
+ }
76
76
 
77
- if (to.meta && to.meta.authorities && to.meta.authorities.length > 0) {
77
+ <%_ } _%>
78
+ next('/not-found');
79
+ } else if (to.meta && to.meta.authorities && to.meta.authorities.length > 0) {
78
80
  accountService.hasAnyAuthorityAndCheckAuth(to.meta.authorities).then(value => {
79
81
  if (!value) {
80
82
  sessionStorage.setItem('requested-url', to.fullPath);
@@ -100,7 +102,6 @@ new Vue({
100
102
  <%_ if (!skipUserManagement) { _%>
101
103
  activateService: () => new ActivateService(),
102
104
  registerService: () => new RegisterService(),
103
- userService: () => new UserManagementService(),
104
105
  <%_ } _%>
105
106
  <%_ if (applicationTypeGateway && serviceDiscoveryType) { %>
106
107
  gatewayService: () => new GatewayService(),
@@ -114,17 +115,18 @@ new Vue({
114
115
  <%_ if (communicationSpringWebsocket) { _%>
115
116
  trackerService: () => trackerService,
116
117
  <%_ } %>
117
- <%_ if (!skipUserManagement || authenticationTypeOauth2) { %>
118
- userOAuth2Service: () => new UserOAuth2Service(),
119
- <%_ } _%>
120
118
  <%_ if (enableTranslation) { _%>
121
119
  translationService: () => translationService,
122
120
  <%_ } _%>
123
121
  // jhipster-needle-add-entity-service-to-main - JHipster will import entities services here
124
122
  accountService: () => accountService,
125
- alertService: () => new AlertService()
126
-
123
+ alertService: () => new AlertService(),
124
+ <%_ if (applicationTypeMicroservice && microfrontend) { _%>
125
+ microfrontendI18n: false,
126
+ <%_ } _%>
127
127
  },
128
- <%_ if (enableTranslation) { _%> i18n,<%_ } _%>
129
- store
128
+ <%_ if (enableTranslation) { _%>
129
+ i18n,
130
+ <%_ } _%>
131
+ store,
130
132
  });
@@ -1,9 +1,51 @@
1
1
  import {Authority} from "@/shared/security/authority";
2
2
  /* tslint:disable */
3
3
  // prettier-ignore
4
+ const Entities = () => import('@/entities/entities.vue');
4
5
 
6
+ <%_ for (entity of this.localEntities.filter(entity => !entity.embedded)) { _%>
7
+ const <%= entity.entityAngularName %> = () => import('@/entities/<%= entity.entityFolderName %>/<%= entity.entityFileName %>.vue');
8
+ <%_ if (!entity.readOnly) { _%>
9
+ const <%= entity.entityAngularName %>Update = () => import('@/entities/<%= entity.entityFolderName %>/<%= entity.entityFileName %>-update.vue');
10
+ <%_ } _%>
11
+ const <%= entity.entityAngularName %>Details = () => import('@/entities/<%= entity.entityFolderName %>/<%= entity.entityFileName %>-details.vue');
12
+
13
+ <%_ } _%>
5
14
  // jhipster-needle-add-entity-to-router-import - JHipster will import entities to the router here
6
15
 
7
- export default [
8
- // jhipster-needle-add-entity-to-router - JHipster will add entities to the router here
9
- ];
16
+ export default
17
+ {
18
+ path: '/<%= applicationTypeMicroservice ? baseName.toLowerCase() : '' %>',
19
+ component: Entities,
20
+ children: [
21
+ <%_ for (entity of this.localEntities.filter(entity => !entity.embedded)) { _%>
22
+ {
23
+ path: '<%= entity.entityFileName %>',
24
+ name: '<%= entity.entityAngularName %>',
25
+ component: <%= entity.entityAngularName %>,
26
+ meta: { authorities: [Authority.USER] },
27
+ },
28
+ <%_ if (!entity.readOnly) { _%>
29
+ {
30
+ path: '<%= entity.entityFileName %>/new',
31
+ name: '<%= entity.entityAngularName %>Create',
32
+ component: <%= entity.entityAngularName %>Update,
33
+ meta: { authorities: [Authority.USER] },
34
+ },
35
+ {
36
+ path: '<%= entity.entityFileName %>/:<%= entity.entityInstance %>Id/edit',
37
+ name: '<%= entity.entityAngularName %>Edit',
38
+ component: <%= entity.entityAngularName %>Update,
39
+ meta: { authorities: [Authority.USER] },
40
+ },
41
+ <%_ } _%>
42
+ {
43
+ path: '<%= entity.entityFileName %>/:<%= entity.entityInstance %>Id/view',
44
+ name: '<%= entity.entityAngularName %>View',
45
+ component: <%= entity.entityAngularName %>Details,
46
+ meta: { authorities: [Authority.USER] },
47
+ },
48
+ <%_ } _%>
49
+ // jhipster-needle-add-entity-to-router - JHipster will add entities to the router here
50
+ ],
51
+ };
@@ -5,7 +5,7 @@ Component.registerHooks([
5
5
  'beforeRouteLeave',
6
6
  'beforeRouteUpdate' // for vue-router 2.2+
7
7
  ])
8
- import Router from 'vue-router';
8
+ import Router, { RouteConfig } from 'vue-router';
9
9
 
10
10
  const Home = () => import('@/core/home/home.vue');
11
11
  const Error = () => import('@/core/error/error.vue');
@@ -19,7 +19,7 @@ import pages from "@/router/pages";
19
19
  Vue.use(Router);
20
20
 
21
21
  // prettier-ignore
22
- export default new Router({
22
+ const router = new Router({
23
23
  mode: 'history',
24
24
  routes: [
25
25
  {
@@ -43,7 +43,23 @@ export default new Router({
43
43
  ...account,
44
44
  <%_ } _%>
45
45
  ...admin,
46
- ...entities,
46
+ entities,
47
47
  ...pages
48
48
  ]
49
49
  });
50
+
51
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
52
+ export const lazyRoutes = Promise.all([
53
+ <%_ for (const remote of microfrontends) { _%>
54
+ import('@<%= remote.lowercaseBaseName %>/entities-router')
55
+ .then(<%= remote.lowercaseBaseName %>Router => {
56
+ router.addRoute(<%= remote.lowercaseBaseName %>Router.default as RouteConfig);
57
+ return <%= remote.lowercaseBaseName %>Router.default;
58
+ }).catch(() => {
59
+ console.log("Error loading <%= remote.lowercaseBaseName %> menus. Make sure it's up.");
60
+ }),
61
+ <%_ } _%>
62
+ ]);
63
+
64
+ <%_ } _%>
65
+ export default router;
@@ -18,8 +18,6 @@
18
18
  -%>
19
19
  import axios from 'axios';
20
20
 
21
- import {SERVER_API_URL} from "@/constants";
22
-
23
21
  const TIMEOUT = 1000000;
24
22
  const onRequestSuccess = config => {
25
23
  <%_ if (authenticationTypeJwt) { _%>
@@ -55,7 +55,9 @@ export default class JhiDataUtils extends Vue {
55
55
  });
56
56
  const objectURL = URL.createObjectURL(blob);
57
57
  const win = window.open(objectURL);
58
- win!.onload = () => URL.revokeObjectURL(objectURL);
58
+ if (win) {
59
+ win.onload = () => URL.revokeObjectURL(objectURL);
60
+ }
59
61
  }
60
62
 
61
63
  /**
@@ -1,7 +1,21 @@
1
- <%_ if (enableTranslation) { _%>
2
- declare const I18N_HASH: string;
1
+ <%#
2
+ Copyright 2013-2021 the original author or authors from the JHipster project.
3
3
 
4
- <%_ } _%>
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
+ -%>
5
19
  declare module '*.vue' {
6
20
  import Vue from 'vue';
7
21
  export default Vue;
@@ -1,34 +1,49 @@
1
+ const { pathsToModuleNameMapper } = require('ts-jest/utils');
2
+ const config = require('../../../webpack/config');
3
+ const { compilerOptions: { paths = {}, baseUrl = './' } } = require('../../../tsconfig.json');
4
+
1
5
  module.exports = {
6
+ rootDir: '../../../',
7
+ roots: ['<rootDir>', `<rootDir>/${baseUrl}`, `<rootDir>/<%= CLIENT_TEST_SRC_DIR %>spec/app/`],
8
+ preset: 'ts-jest',
2
9
  testEnvironment: 'jsdom',
3
10
  coverageDirectory: '<rootDir>/<%= BUILD_DIR %>test-results/',
4
11
  coveragePathIgnorePatterns: ['<rootDir>/node_modules/', '<rootDir>/<%= CLIENT_TEST_SRC_DIR %>', '<rootDir>/<%= CLIENT_MAIN_SRC_DIR %>app/router', '.*.json'],
5
12
  moduleFileExtensions: ['js', 'json', 'ts', 'vue'],
6
13
  transform: {
7
- '.*\\.(vue)$': 'vue-jest',
8
- '^.+\\.tsx?$': 'ts-jest'
14
+ '.*\\.(vue)$': '<%= microfrontend ? '@vue/vue2-jest' : 'vue-jest' %>',
15
+ '^.+\\.tsx?$': 'ts-jest',
9
16
  },
10
17
  moduleNameMapper: {
11
- '^@/(.*)$': '<rootDir>/<%= CLIENT_MAIN_SRC_DIR %>app/$1'
18
+ '^@/(.*)$': '<rootDir>/<%= CLIENT_MAIN_SRC_DIR %>app/$1',
19
+ ...pathsToModuleNameMapper(paths, { prefix: `<rootDir>/${baseUrl}/` }),
20
+ <%_ if (applicationTypeGateway && microfrontend) { _%>
21
+ '^@(<%= microfrontends.map(remote => remote.lowercaseBaseName).join('|') %>)/(.*)$': '<rootDir>/<%= CLIENT_TEST_SRC_DIR %>spec/app/microfrontends/$2',
22
+ <%_ } _%>
12
23
  },
13
24
  reporters: [
14
25
  'default',
15
- [ 'jest-junit', { outputDirectory: './<%= BUILD_DIR %>test-results/', outputName: 'TESTS-results-jest.xml' } ]
26
+ [ 'jest-junit', { outputDirectory: './<%= BUILD_DIR %>test-results/', outputName: 'TESTS-results-jest.xml' } ],
16
27
  ],
17
28
  testResultsProcessor: 'jest-sonar-reporter',
18
29
  testMatch: ['<rootDir>/<%= CLIENT_TEST_SRC_DIR %>spec/**/@(*.)@(spec.ts)'],
19
30
  snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
20
- rootDir: '../../../',
21
- <%_ if (enableTranslation) { _%>
22
31
  globals: {
32
+ <%_ if (enableTranslation) { _%>
23
33
  I18N_HASH: 'generated_hash',
24
- },
25
34
  <%_ } _%>
35
+ SERVER_API_URL: config.serverApiUrl,
36
+ VERSION: config.version,
37
+ 'ts-jest': {
38
+ tsconfig: '<rootDir>/tsconfig.spec.json',
39
+ },
40
+ },
26
41
  coverageThreshold: {
27
42
  global: {
28
43
  statements: 80,
29
44
  branches: 60,
30
45
  functions: 70,
31
- lines: 80
32
- }
33
- }
46
+ lines: 80,
47
+ },
48
+ },
34
49
  };
@@ -2,7 +2,7 @@ import { shallowMount, createLocalVue, Wrapper } from '@vue/test-utils';
2
2
  import axios from 'axios';
3
3
  import sinon from 'sinon';
4
4
  import AccountService from '@/account/account.service';
5
- import router from '@/router';
5
+ import VueRouter from 'vue-router';
6
6
  <%_ if (enableTranslation) { _%>
7
7
  import TranslationService from '@/locale/translation.service';
8
8
  <%_ } _%>
@@ -50,7 +50,7 @@ describe('LoginForm Component', () => {
50
50
  <%_ } _%>
51
51
  localVue,
52
52
  provide: {
53
- accountService: () => new AccountService(store, <% if (enableTranslation) { %>new TranslationService(store, i18n), <% } %><% if (authenticationTypeSession) { %> { get: () => {} }, <% } %><% if (communicationSpringWebsocket) { %>new TrackerService(router<%_ if (authenticationTypeSession) { _%>,{ get: jest.fn()}<%_ } %>), <% } %>router)
53
+ accountService: () => new AccountService(store, <% if (enableTranslation) { %>new TranslationService(store, i18n), <% } %><% if (authenticationTypeSession) { %> { get: () => {} }, <% } %><% if (communicationSpringWebsocket) { %>new TrackerService(new VueRouter()<%_ if (authenticationTypeSession) { _%>,{ get: jest.fn()}<%_ } %>), <% } %>new VueRouter())
54
54
  }
55
55
  });
56
56
  loginForm = wrapper.vm;
@@ -11,10 +11,12 @@ import UserManagementEdit from '@/admin/user-management/user-management-edit.vue
11
11
  import UserManagementEditClass from '@/admin/user-management/user-management-edit.component';
12
12
  import UserManagementService from '@/admin/user-management/user-management.service';
13
13
  import VueRouter from 'vue-router';
14
+ import { ToastPlugin } from 'bootstrap-vue';
14
15
  import AlertService from '@/shared/alert/alert.service';
15
16
 
16
17
  const localVue = createLocalVue();
17
18
  localVue.use(VueRouter);
19
+ localVue.use(ToastPlugin);
18
20
 
19
21
  config.initVueApp(localVue);
20
22
  <%_ if (enableTranslation) { _%>
@@ -85,8 +87,8 @@ describe('UserManagementEdit Component', () => {
85
87
  // GIVEN
86
88
  axiosStub.put.resolves({
87
89
  headers: {
88
- 'x-jhipsterapp-alert': '',
89
- 'x-jhipsterapp-params': '',
90
+ 'x-<%= frontendAppName.toLowerCase() %>-alert': '',
91
+ 'x-<%= frontendAppName.toLowerCase() %>-params': '',
90
92
  },
91
93
  });
92
94
  userManagementEdit.userAccount = { id: <%- tsKeyId %>, authorities: [] };
@@ -104,8 +106,8 @@ describe('UserManagementEdit Component', () => {
104
106
  // GIVEN
105
107
  axiosStub.post.resolves({
106
108
  headers: {
107
- 'x-jhipsterapp-alert': '',
108
- 'x-jhipsterapp-params': '',
109
+ 'x-<%= frontendAppName.toLowerCase() %>-alert': '',
110
+ 'x-<%= frontendAppName.toLowerCase() %>-params': '',
109
111
  },
110
112
  });
111
113
  userManagementEdit.userAccount = { authorities: [] };