generator-jhipster 7.9.2 → 7.9.3

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 (214) hide show
  1. package/cli/environment-builder.js +15 -1
  2. package/generators/app/index.js +12 -1
  3. package/generators/bootstrap/index.js +33 -1
  4. package/generators/ci-cd/templates/circle.yml.ejs +3 -13
  5. package/generators/client/files-angular.js +1 -1
  6. package/generators/client/files-react.js +5 -2
  7. package/generators/client/files-vue.js +3 -2
  8. package/generators/client/templates/angular/jest.conf.js.ejs +6 -3
  9. package/generators/client/templates/angular/package.json +18 -18
  10. package/generators/client/templates/angular/package.json.ejs +3 -7
  11. package/generators/client/templates/angular/src/main/webapp/app/admin/admin-routing.module.ts.ejs +1 -1
  12. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.model.ts.ejs +1 -1
  13. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +17 -15
  14. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +2 -2
  15. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.route.ts.ejs +4 -4
  16. package/generators/client/templates/angular/src/main/webapp/app/core/request/request-util.ts.ejs +4 -2
  17. package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +1 -1
  18. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  19. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +1 -1
  20. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.html.ejs +8 -6
  21. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.ts.ejs +6 -11
  22. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +227 -25
  23. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.ts.ejs +104 -43
  24. package/generators/client/templates/angular/src/main/webapp/content/scss/global.scss.ejs +8 -0
  25. package/generators/client/templates/angular/tsconfig.json.ejs +0 -1
  26. package/generators/client/templates/angular/tsconfig.spec.json.ejs +2 -3
  27. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +0 -3
  28. package/generators/client/templates/common/package.json +4 -4
  29. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +1 -1
  30. package/generators/client/templates/react/jest.conf.js.ejs +2 -2
  31. package/generators/client/templates/react/package.json +23 -23
  32. package/generators/client/templates/react/package.json.ejs +3 -7
  33. package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +0 -6
  34. package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +7 -7
  35. package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.ts.ejs +6 -6
  36. package/generators/client/templates/react/src/main/webapp/app/modules/administration/index.tsx.ejs +2 -2
  37. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +1 -1
  38. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +17 -8
  39. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs +1 -1
  40. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +176 -19
  41. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +46 -13
  42. package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +1 -1
  43. package/generators/client/templates/vue/package.json +17 -17
  44. package/generators/client/templates/vue/package.json.ejs +3 -7
  45. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +2 -1
  46. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +1 -1
  47. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +2 -2
  48. package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +2 -2
  49. package/generators/client/templates/vue/src/test/javascript/e2e/modules/administration/administration.spec.ts.ejs +1 -1
  50. package/generators/client/templates/vue/src/test/javascript/e2e/page-objects/administration-page.ts.ejs +1 -1
  51. package/generators/client/templates/vue/src/test/javascript/e2e/page-objects/navbar-page.ts.ejs +2 -2
  52. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +5 -6
  53. package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +4 -0
  54. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +106 -3
  55. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +12 -0
  56. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/formatter.spec.ts.ejs +6 -0
  57. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/sort/sorts.spec.ts.ejs +10 -0
  58. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +1 -1
  59. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +2 -2
  60. package/generators/common/files.js +5 -4
  61. package/generators/common/templates/package.json +1 -1
  62. package/generators/common/templates/sonar-project.properties.ejs +19 -11
  63. package/generators/cypress/index.js +1 -1
  64. package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +3 -3
  65. package/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
  66. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +32 -14
  67. package/generators/entity/index.js +4 -3
  68. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +1 -1
  69. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +18 -6
  70. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +1 -1
  71. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +23 -19
  72. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +3 -1
  73. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +1 -1
  74. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.ts.ejs +1 -1
  75. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +2 -2
  76. package/generators/entity-server/templates/src/main/java/package/common/delete_template.ejs +7 -3
  77. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +2 -2
  78. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +15 -5
  79. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_persistable.ejs +8 -1
  80. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +5 -0
  81. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +4 -4
  82. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +6 -4
  83. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +3 -26
  84. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +1 -0
  85. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +1 -1
  86. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +33 -28
  87. package/generators/generate-blueprint/constants.mjs +46 -6
  88. package/generators/generate-blueprint/files.mjs +7 -5
  89. package/generators/generate-blueprint/generator.mjs +73 -19
  90. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +1 -1
  91. package/generators/generator-base-blueprint.js +23 -1
  92. package/generators/generator-base-entities.cjs +5 -1
  93. package/generators/generator-base.js +82 -15
  94. package/generators/generator-constants.js +17 -23
  95. package/generators/kubernetes/templates/deployment.yml.ejs +1 -1
  96. package/generators/kubernetes/templates/ingress.yml.ejs +1 -1
  97. package/generators/kubernetes/templates/istio/gateway.yml.ejs +1 -1
  98. package/generators/kubernetes/templates/kustomize/kustomization.yml.ejs +1 -1
  99. package/generators/kubernetes/templates/service.yml.ejs +1 -1
  100. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +1 -1
  101. package/generators/kubernetes-knative/templates/service.yml.ejs +3 -3
  102. package/generators/languages/templates/src/main/webapp/i18n/al/health.json.ejs +1 -1
  103. package/generators/languages/templates/src/main/webapp/i18n/ar-ly/health.json.ejs +1 -1
  104. package/generators/languages/templates/src/main/webapp/i18n/bg/health.json.ejs +1 -1
  105. package/generators/languages/templates/src/main/webapp/i18n/bn/health.json.ejs +1 -1
  106. package/generators/languages/templates/src/main/webapp/i18n/by/health.json.ejs +1 -1
  107. package/generators/languages/templates/src/main/webapp/i18n/ca/health.json.ejs +1 -1
  108. package/generators/languages/templates/src/main/webapp/i18n/cs/health.json.ejs +1 -1
  109. package/generators/languages/templates/src/main/webapp/i18n/da/health.json.ejs +1 -1
  110. package/generators/languages/templates/src/main/webapp/i18n/de/health.json.ejs +1 -1
  111. package/generators/languages/templates/src/main/webapp/i18n/el/activate.json.ejs +1 -1
  112. package/generators/languages/templates/src/main/webapp/i18n/el/health.json.ejs +1 -1
  113. package/generators/languages/templates/src/main/webapp/i18n/el/password.json +1 -1
  114. package/generators/languages/templates/src/main/webapp/i18n/el/register.json +3 -3
  115. package/generators/languages/templates/src/main/webapp/i18n/el/tracker.json +1 -1
  116. package/generators/languages/templates/src/main/webapp/i18n/el/user-management.json +9 -9
  117. package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +1 -1
  118. package/generators/languages/templates/src/main/webapp/i18n/es/health.json.ejs +1 -1
  119. package/generators/languages/templates/src/main/webapp/i18n/et/health.json.ejs +1 -1
  120. package/generators/languages/templates/src/main/webapp/i18n/fa/health.json.ejs +1 -1
  121. package/generators/languages/templates/src/main/webapp/i18n/fi/health.json.ejs +1 -1
  122. package/generators/languages/templates/src/main/webapp/i18n/fr/health.json.ejs +1 -1
  123. package/generators/languages/templates/src/main/webapp/i18n/gl/health.json.ejs +1 -1
  124. package/generators/languages/templates/src/main/webapp/i18n/hi/health.json.ejs +1 -1
  125. package/generators/languages/templates/src/main/webapp/i18n/hr/health.json.ejs +1 -1
  126. package/generators/languages/templates/src/main/webapp/i18n/hu/health.json.ejs +1 -1
  127. package/generators/languages/templates/src/main/webapp/i18n/hy/health.json.ejs +1 -1
  128. package/generators/languages/templates/src/main/webapp/i18n/in/health.json.ejs +1 -1
  129. package/generators/languages/templates/src/main/webapp/i18n/it/health.json.ejs +1 -1
  130. package/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +1 -1
  131. package/generators/languages/templates/src/main/webapp/i18n/ko/health.json.ejs +1 -1
  132. package/generators/languages/templates/src/main/webapp/i18n/mr/health.json.ejs +1 -1
  133. package/generators/languages/templates/src/main/webapp/i18n/my/health.json.ejs +1 -1
  134. package/generators/languages/templates/src/main/webapp/i18n/nl/health.json.ejs +1 -1
  135. package/generators/languages/templates/src/main/webapp/i18n/pa/health.json.ejs +1 -1
  136. package/generators/languages/templates/src/main/webapp/i18n/pl/health.json.ejs +1 -1
  137. package/generators/languages/templates/src/main/webapp/i18n/pt-br/health.json.ejs +1 -1
  138. package/generators/languages/templates/src/main/webapp/i18n/pt-pt/health.json.ejs +1 -1
  139. package/generators/languages/templates/src/main/webapp/i18n/ro/health.json.ejs +1 -1
  140. package/generators/languages/templates/src/main/webapp/i18n/ru/health.json.ejs +1 -1
  141. package/generators/languages/templates/src/main/webapp/i18n/si/health.json.ejs +1 -1
  142. package/generators/languages/templates/src/main/webapp/i18n/sk/health.json.ejs +1 -1
  143. package/generators/languages/templates/src/main/webapp/i18n/sr/health.json.ejs +1 -1
  144. package/generators/languages/templates/src/main/webapp/i18n/sv/health.json.ejs +1 -1
  145. package/generators/languages/templates/src/main/webapp/i18n/ta/health.json.ejs +1 -1
  146. package/generators/languages/templates/src/main/webapp/i18n/te/health.json.ejs +1 -1
  147. package/generators/languages/templates/src/main/webapp/i18n/th/health.json.ejs +1 -1
  148. package/generators/languages/templates/src/main/webapp/i18n/tr/health.json.ejs +1 -1
  149. package/generators/languages/templates/src/main/webapp/i18n/ua/health.json.ejs +1 -1
  150. package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/health.json.ejs +1 -1
  151. package/generators/languages/templates/src/main/webapp/i18n/vi/health.json.ejs +1 -1
  152. package/generators/languages/templates/src/main/webapp/i18n/zh-cn/health.json.ejs +1 -1
  153. package/generators/languages/templates/src/main/webapp/i18n/zh-tw/health.json.ejs +1 -1
  154. package/generators/openshift/templates/deployment.yml.ejs +2 -2
  155. package/generators/server/cleanup-elasticsearch.js +5 -0
  156. package/generators/server/files.js +17 -8
  157. package/generators/server/index.js +0 -2
  158. package/generators/server/templates/build.gradle.ejs +6 -14
  159. package/generators/server/templates/gradle/profile_dev.gradle.ejs +1 -1
  160. package/generators/server/templates/gradle/profile_prod.gradle.ejs +1 -1
  161. package/generators/server/templates/gradle.properties.ejs +6 -4
  162. package/generators/server/templates/npmw.cmd +31 -29
  163. package/generators/server/templates/package.json.ejs +2 -2
  164. package/generators/server/templates/pom.xml.ejs +12 -23
  165. package/generators/server/templates/sql/common/src/test/java/package/config/MsSqlTestContainer.java.ejs +2 -3
  166. package/generators/server/templates/src/main/docker/app.yml.ejs +7 -1
  167. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +32 -14
  168. package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +1 -1
  169. package/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs +1 -1
  170. package/generators/server/templates/src/main/java/package/Application.java.ejs +11 -4
  171. package/generators/server/templates/src/main/java/package/config/CRLFLogConverter.java.ejs +57 -0
  172. package/generators/server/templates/src/main/java/package/config/EurekaWorkaroundConfiguration.java.ejs +49 -0
  173. package/generators/server/templates/src/main/java/package/config/LoggingConfiguration.java.ejs +4 -4
  174. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +17 -18
  175. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +13 -5
  176. package/generators/server/templates/src/main/java/package/domain/AbstractAuditingEntity.java.ejs +5 -6
  177. package/generators/server/templates/src/main/java/package/domain/User.java.ejs +1 -1
  178. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +1 -1
  179. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +13 -6
  180. package/generators/server/templates/src/main/java/package/service/dto/AdminUserDTO.java.ejs +3 -1
  181. package/generators/server/templates/src/main/java/package/service/dto/PasswordChangeDTO.java.ejs +5 -1
  182. package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +3 -1
  183. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +15 -42
  184. package/generators/server/templates/src/main/java/package/web/rest/errors/BadRequestAlertException.java.ejs +1 -0
  185. package/generators/server/templates/src/main/java/package/web/rest/errors/EmailAlreadyUsedException.java.ejs +1 -0
  186. package/generators/server/templates/src/main/java/package/web/rest/errors/InvalidPasswordException.java.ejs +1 -0
  187. package/generators/server/templates/src/main/java/package/web/rest/errors/LoginAlreadyUsedException.java.ejs +1 -0
  188. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
  189. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +2 -2
  190. package/generators/server/templates/src/main/resources/config/application.yml.ejs +4 -2
  191. package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +3 -8
  192. package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +5 -0
  193. package/generators/server/templates/src/test/java/package/config/{ElasticsearchReactiveTestConfiguration.java.ejs → ElasticsearchTestConfiguration.java.ejs} +3 -3
  194. package/generators/server/templates/src/test/java/package/config/ElasticsearchTestContainer.java.ejs +1 -0
  195. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +3 -0
  196. package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +2 -2
  197. package/generators/sql-constants.js +5 -2
  198. package/generators/utils.js +43 -3
  199. package/generators/workspaces/index.js +2 -1
  200. package/jdl/exporters/jdl-exporter.js +6 -1
  201. package/jdl/jhipster/application-options.js +2 -1
  202. package/jdl/jhipster/binary-options.js +2 -2
  203. package/jdl/jhipster/default-application-options.js +11 -8
  204. package/jdl/jhipster/entity-options.js +1 -0
  205. package/jdl/jhipster/search-engine-types.js +1 -0
  206. package/lib/constants/priorities.cjs +16 -0
  207. package/lib/constants/priorities.mjs +1 -0
  208. package/lib/index.js +2 -0
  209. package/lib/support/base.cjs +2 -1
  210. package/package.json +7 -6
  211. package/utils/blueprint.js +10 -0
  212. package/utils/field.js +3 -1
  213. package/generators/client/templates/react/src/main/webapp/app/config/translation-middleware.ts.ejs +0 -58
  214. package/generators/server/templates/.npmrc.ejs +0 -1
@@ -112,7 +112,7 @@
112
112
  "jest": "<%= dependabotPackageJson.devDependencies['jest'] %>",
113
113
  "jest-environment-jsdom": "<%= dependabotPackageJson.devDependencies['jest-environment-jsdom'] %>",
114
114
  "jest-junit": "<%= dependabotPackageJson.devDependencies['jest-junit'] %>",
115
- "jest-sonar-reporter": "<%= dependabotPackageJson.devDependencies['jest-sonar-reporter'] %>",
115
+ "jest-sonar": "<%= dependabotPackageJson.devDependencies['jest-sonar'] %>",
116
116
  "json-loader": "<%= dependabotPackageJson.devDependencies['json-loader'] %>",
117
117
  <%_ if (enableTranslation) { _%>
118
118
  "folder-hash": "<%= dependabotPackageJson.devDependencies['folder-hash'] %>",
@@ -173,8 +173,8 @@
173
173
  "default_environment": "prod"
174
174
  },
175
175
  "scripts": {
176
- "prettier:check": "prettier --check \"{,src/**/,webpack/}*.{<%= getPrettierExtensions() %>}\"",
177
- "prettier:format": "prettier --write \"{,src/**/,webpack/}*.{<%= getPrettierExtensions() %>}\"",
176
+ "prettier:check": "prettier --check \"{,src/**/,webpack/,.blueprint/**/}*.{<%= getPrettierExtensions() %>}\"",
177
+ "prettier:format": "prettier --write \"{,src/**/,webpack/,.blueprint/**/}*.{<%= getPrettierExtensions() %>}\"",
178
178
  "lint": "eslint . --ext .js,.ts,.jsx,.tsx",
179
179
  "lint:fix": "<%= clientPackageManager %> run lint -- --fix",
180
180
  "cleanup": "rimraf <%= DIST_DIR %>",
@@ -221,9 +221,5 @@
221
221
  "webapp:prod": "<%= clientPackageManager %> run clean-www && <%= clientPackageManager %> run webapp:build:prod --",
222
222
  "webapp:test": "<%= clientPackageManager %> run test --",
223
223
  "webpack-dev-server": "webpack serve"
224
- },
225
- "jestSonar": {
226
- "reportPath": "<%= BUILD_DIR %>test-results/jest",
227
- "reportFile": "TESTS-results-sonar.xml"
228
224
  }
229
225
  }
@@ -38,9 +38,6 @@ import loggerMiddleware from './logger-middleware';
38
38
  <%_ if (communicationSpringWebsocket) { _%>
39
39
  import websocketMiddleware from './websocket-middleware';
40
40
  <%_ } _%>
41
- <%_ if (enableTranslation) { _%>
42
- import translationMiddleware from './translation-middleware';
43
- <%_ } _%>
44
41
 
45
42
  const store = configureStore({
46
43
  reducer: sharedReducers,
@@ -56,9 +53,6 @@ const store = configureStore({
56
53
  loadingBarMiddleware(),
57
54
  <%_ if (communicationSpringWebsocket) { _%>
58
55
  websocketMiddleware,
59
- <%_ } _%>
60
- <%_ if (enableTranslation) { _%>
61
- translationMiddleware,
62
56
  <%_ } _%>
63
57
  loggerMiddleware
64
58
  ),
@@ -23,7 +23,7 @@ import thunk from 'redux-thunk';
23
23
  import sinon from 'sinon';
24
24
 
25
25
  import administration, {
26
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
26
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
27
27
  getGatewayRoutes,
28
28
  <%_ } _%>
29
29
  <%_ if (withAdminUi) { _%>
@@ -56,7 +56,7 @@ describe('Administration reducer tests', () => {
56
56
  errorMessage: null,
57
57
  totalItems: 0
58
58
  });
59
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
59
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
60
60
  expect(isEmpty(state.gateway.routes));
61
61
  <%_ } _%>
62
62
  <%_ if (withAdminUi) { _%>
@@ -84,7 +84,7 @@ describe('Administration reducer tests', () => {
84
84
  it('should set state to loading', () => {
85
85
  testMultipleTypes(
86
86
  [
87
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
87
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
88
88
  getGatewayRoutes.pending.type,
89
89
  <%_ } _%>
90
90
  <%_ if (withAdminUi) { _%>
@@ -111,7 +111,7 @@ describe('Administration reducer tests', () => {
111
111
  it('should set state to failed and put an error message in errorMessage', () => {
112
112
  testMultipleTypes(
113
113
  [
114
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
114
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
115
115
  getGatewayRoutes.rejected.type,
116
116
  <%_ } _%>
117
117
  <%_ if (withAdminUi) { _%>
@@ -138,7 +138,7 @@ describe('Administration reducer tests', () => {
138
138
  });
139
139
 
140
140
  describe('Success', () => {
141
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
141
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
142
142
  it('should update state according to a successful fetch gateway routes request', () => {
143
143
  const payload = { data: [] };
144
144
  const toTest = administration(undefined, { type: getGatewayRoutes.fulfilled.type, payload });
@@ -264,7 +264,7 @@ describe('Administration reducer tests', () => {
264
264
  let store;
265
265
 
266
266
  const resolvedObject = { value: 'whatever' };
267
- <%_ if (applicationTypeGateway && serviceDiscoveryType || withAdminUi) { _%>
267
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny || withAdminUi) { _%>
268
268
  beforeEach(() => {
269
269
  const mockStore = configureStore([thunk]);
270
270
  store = mockStore({});
@@ -272,7 +272,7 @@ describe('Administration reducer tests', () => {
272
272
  axios.post = sinon.stub().returns(Promise.resolve(resolvedObject));
273
273
  });
274
274
  <%_ } _%>
275
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
275
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
276
276
  it('dispatches FETCH_GATEWAY_ROUTE_PENDING and FETCH_GATEWAY_ROUTE_FULFILLED actions', async () => {
277
277
  const expectedActions = [
278
278
  {
@@ -25,7 +25,7 @@ import { AppThunk } from 'app/config/store';
25
25
  const initialState = {
26
26
  loading: false,
27
27
  errorMessage: null,
28
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
28
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
29
29
  gateway: {
30
30
  routes: []
31
31
  },
@@ -53,7 +53,7 @@ const initialState = {
53
53
  export type AdministrationState = Readonly<typeof initialState>;
54
54
 
55
55
  // Actions
56
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
56
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
57
57
  export const getGatewayRoutes = createAsyncThunk('administration/fetch_gateway_route', async () => axios.get<any>('api/gateway/routes'), {
58
58
  serializeError: serializeAxiosError,
59
59
  });
@@ -113,9 +113,9 @@ export const AdministrationSlice = createSlice({
113
113
  <%_ } _%>
114
114
  },
115
115
  extraReducers(builder) {
116
- <%_ if (withAdminUi || (applicationTypeGateway && serviceDiscoveryType)) { _%>
116
+ <%_ if (withAdminUi || (applicationTypeGateway && serviceDiscoveryAny)) { _%>
117
117
  builder
118
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
118
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
119
119
  .addCase(getGatewayRoutes.fulfilled, (state, action) => {
120
120
  state.loading = false;
121
121
  state.gateway = {
@@ -159,7 +159,7 @@ export const AdministrationSlice = createSlice({
159
159
  <%_ } _%>
160
160
  .addMatcher(
161
161
  isPending(
162
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
162
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
163
163
  getGatewayRoutes,
164
164
  <%_ } _%>
165
165
  <%_ if (withAdminUi) { _%>
@@ -178,7 +178,7 @@ export const AdministrationSlice = createSlice({
178
178
  )
179
179
  .addMatcher(
180
180
  isRejected(
181
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
181
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
182
182
  getGatewayRoutes,
183
183
  <%_ } _%>
184
184
  <%_ if (withAdminUi) { _%>
@@ -30,7 +30,7 @@ import Metrics from './metrics/metrics';
30
30
  import Configuration from './configuration/configuration';
31
31
  <%_ } _%>
32
32
  import Docs from './docs/docs';
33
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
33
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
34
34
  import Gateway from './gateway/gateway';
35
35
  <%_ } _%>
36
36
  <%_ if (communicationSpringWebsocket) { _%>
@@ -46,7 +46,7 @@ const AdministrationRoutes = () => (
46
46
  <%_ if (communicationSpringWebsocket) { _%>
47
47
  <Route path="tracker" element={<Tracker />} />
48
48
  <%_ } _%>
49
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
49
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
50
50
  <Route path="gateway" element={<Gateway />} />
51
51
  <%_ } _%>
52
52
  <%_ if (withAdminUi) { _%>
@@ -27,7 +27,7 @@ import { Translate, translate } from 'react-jhipster';
27
27
 
28
28
  const adminMenuItems = () => (
29
29
  <>
30
- <%_ if (applicationTypeGateway && serviceDiscoveryType) { _%>
30
+ <%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
31
31
  <MenuItem icon="road" to="/admin/gateway"><Translate contentKey="global.menu.admin.gateway">Gateway</Translate></MenuItem>
32
32
  <%_ } _%>
33
33
  <%_ if (!skipUserManagement) { _%>
@@ -40,7 +40,9 @@ import authentication, {
40
40
  clearAuth,
41
41
  initialState,
42
42
  } from 'app/shared/reducers/authentication';
43
- <% if (enableTranslation) { %>import { updateLocale } from 'app/shared/reducers/locale';<% } %>
43
+ <%_ if (enableTranslation) { _%>
44
+ import { updateLocale, setLocale } from 'app/shared/reducers/locale';
45
+ <%_ } _%>
44
46
 
45
47
  describe('Authentication reducer tests', () => {
46
48
  function isAccountEmpty(state): boolean {
@@ -204,7 +206,11 @@ describe('Authentication reducer tests', () => {
204
206
  const resolvedObject = { value: 'whatever' };
205
207
  beforeEach(() => {
206
208
  const mockStore = configureStore([thunk]);
207
- store = mockStore({ authentication: { account: { <%_ if (enableTranslation) { _%> langKey: '<%= nativeLanguage %>' <% } %> } } });
209
+ <%_ if (enableTranslation) { _%>
210
+ store = mockStore({ authentication: { account: { langKey: '<%= nativeLanguage %>' } }, locale: { loadedLocales: ['<%= nativeLanguage %>'] } });
211
+ <%_ } else { _%>
212
+ store = mockStore({ authentication: { account: { } } });
213
+ <%_ } _%>
208
214
  axios.get = sinon.stub().returns(Promise.resolve(resolvedObject));
209
215
  });
210
216
 
@@ -218,15 +224,18 @@ describe('Authentication reducer tests', () => {
218
224
  type: getAccount.fulfilled.type,
219
225
  payload: resolvedObject
220
226
  },
221
- updateLocale('<%= nativeLanguage %>'),
227
+ {
228
+ type: setLocale.pending.type,
229
+ },
230
+ updateLocale('en'),
231
+ {
232
+ type: setLocale.fulfilled.type,
233
+ payload: 'en',
234
+ },
222
235
  <%_ } _%>
223
236
  ];
224
237
  await store.dispatch(getSession());
225
- expect(store.getActions()[0]).toMatchObject(expectedActions[0]);
226
- <%_ if (enableTranslation) { _%>
227
- expect(store.getActions()[1]).toMatchObject(expectedActions[1]);
228
- expect(store.getActions()[2]).toMatchObject(expectedActions[2]);
229
- <%_ } _%>
238
+ expect(store.getActions()).toMatchObject(expectedActions);
230
239
  });
231
240
 
232
241
  it('dispatches LOGOUT actions', async () => {
@@ -56,7 +56,7 @@ export const getSession = (): AppThunk => <% if (enableTranslation) { %>async<%
56
56
  const { account } = getState().authentication;
57
57
  if (account && account.langKey) {
58
58
  const langKey = Storage.session.get('locale', account.langKey);
59
- dispatch(setLocale(langKey));
59
+ await dispatch(setLocale(langKey));
60
60
  }
61
61
  <%_ } else { _%>
62
62
  dispatch(getAccount());
@@ -4,7 +4,9 @@ import configureStore from 'redux-mock-store';
4
4
  import thunk from 'redux-thunk';
5
5
  import { TranslatorContext } from 'react-jhipster';
6
6
 
7
- import locale, { setLocale, updateLocale } from 'app/shared/reducers/locale';
7
+ import locale, { setLocale, updateLocale, loaded, addTranslationSourcePrefix } from 'app/shared/reducers/locale';
8
+
9
+ const defaultLocale = '<%= nativeLanguage %>';
8
10
 
9
11
  describe('Locale reducer tests', () => {
10
12
  it('should return the initial state', () => {
@@ -15,19 +17,19 @@ describe('Locale reducer tests', () => {
15
17
  });
16
18
 
17
19
  it('should correctly set the first time locale', () => {
18
- const localeState = locale(undefined, updateLocale('en'));
20
+ const localeState = locale(undefined, updateLocale(defaultLocale));
19
21
  expect(localeState).toMatchObject({
20
- currentLocale: 'en'
22
+ currentLocale: defaultLocale
21
23
  });
22
- expect(TranslatorContext.context.locale).toEqual('en');
24
+ expect(TranslatorContext.context.locale).toEqual(defaultLocale);
23
25
  });
24
26
 
25
27
  it('should correctly detect update in current locale state', () => {
26
- TranslatorContext.setLocale('en');
27
- expect(TranslatorContext.context.locale).toEqual('en');
28
+ TranslatorContext.setLocale(defaultLocale);
29
+ expect(TranslatorContext.context.locale).toEqual(defaultLocale);
28
30
  const localeState = locale(
29
31
  {
30
- currentLocale: 'en',
32
+ currentLocale: defaultLocale,
31
33
  sourcePrefixes: [],
32
34
  lastChange: new Date().getTime(),
33
35
  loadedKeys: [],
@@ -40,22 +42,177 @@ describe('Locale reducer tests', () => {
40
42
  expect(TranslatorContext.context.locale).toEqual('es');
41
43
  });
42
44
 
43
- describe('Locale actions', () => {
44
- let store;
45
- beforeEach(() => {
46
- store = configureStore([thunk])({});
47
- axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
45
+ describe('setLocale reducer', () => {
46
+ describe('with default language loaded', () => {
47
+ let store;
48
+ beforeEach(() => {
49
+ store = configureStore([thunk])({ locale: { loadedLocales: [defaultLocale], loadedKeys: [] } });
50
+ axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
51
+ });
52
+
53
+ it('dispatches updateLocale action for default locale', async () => {
54
+ TranslatorContext.setDefaultLocale(defaultLocale);
55
+ expect(Object.keys(TranslatorContext.context.translations)).not.toContainEqual(defaultLocale);
56
+
57
+ const expectedActions = [
58
+ {
59
+ type: setLocale.pending.type,
60
+ },
61
+ updateLocale(defaultLocale),
62
+ {
63
+ type: setLocale.fulfilled.type,
64
+ payload: defaultLocale,
65
+ },
66
+ ];
67
+
68
+ await store.dispatch(setLocale(defaultLocale));
69
+ expect(store.getActions()).toMatchObject(expectedActions);
70
+ });
71
+ });
72
+
73
+ describe('with no language loaded', () => {
74
+ let store;
75
+ beforeEach(() => {
76
+ store = configureStore([thunk])({ locale: { sourcePrefixes: [], loadedLocales: [], loadedKeys: [] } });
77
+ axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
78
+ });
79
+
80
+ it('dispatches loaded and updateLocale action for default locale', async () => {
81
+ TranslatorContext.setDefaultLocale(defaultLocale);
82
+ expect(Object.keys(TranslatorContext.context.translations)).not.toContainEqual(defaultLocale);
83
+
84
+ const expectedActions = [
85
+ {
86
+ type: setLocale.pending.type,
87
+ },
88
+ loaded({ keys: [defaultLocale], locale: defaultLocale }),
89
+ updateLocale(defaultLocale),
90
+ {
91
+ type: setLocale.fulfilled.type,
92
+ payload: defaultLocale,
93
+ },
94
+ ];
95
+
96
+ await store.dispatch(setLocale(defaultLocale));
97
+ expect(store.getActions()).toMatchObject(expectedActions);
98
+ });
99
+ });
100
+ });
101
+
102
+ describe('addTranslationSourcePrefix reducer', () => {
103
+ const sourcePrefix = 'foo/';
104
+
105
+ describe('with no prefixes and keys loaded', () => {
106
+ let store;
107
+ beforeEach(() => {
108
+ store = configureStore([thunk])({
109
+ locale: { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [] },
110
+ });
111
+ axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
112
+ });
113
+
114
+ it('dispatches loaded action with keys and sourcePrefix', async () => {
115
+ const expectedActions = [
116
+ {
117
+ type: addTranslationSourcePrefix.pending.type,
118
+ },
119
+ loaded({ keys: [`${sourcePrefix}${defaultLocale}`], sourcePrefix }),
120
+ {
121
+ type: addTranslationSourcePrefix.fulfilled.type,
122
+ payload: `${sourcePrefix}${defaultLocale}`,
123
+ },
124
+ ];
125
+
126
+ await store.dispatch(addTranslationSourcePrefix(sourcePrefix));
127
+ expect(store.getActions()).toMatchObject(expectedActions);
128
+ });
48
129
  });
49
130
 
50
- it('dispatches SET_LOCALE action for default locale', async () => {
51
- TranslatorContext.setDefaultLocale('en');
52
- const defaultLocale = TranslatorContext.context.defaultLocale;
53
- expect(Object.keys(TranslatorContext.context.translations)).not.toContainEqual(defaultLocale);
131
+ describe('with prefix already added', () => {
132
+ let store;
133
+ beforeEach(() => {
134
+ store = configureStore([thunk])({
135
+ locale: { currentLocale: defaultLocale, sourcePrefixes: [sourcePrefix], loadedLocales: [], loadedKeys: [] },
136
+ });
137
+ axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
138
+ });
139
+
140
+ it("doesn't dispatches loaded action", async () => {
141
+ const expectedActions = [
142
+ {
143
+ type: addTranslationSourcePrefix.pending.type,
144
+ },
145
+ {
146
+ type: addTranslationSourcePrefix.fulfilled.type,
147
+ payload: `${sourcePrefix}${defaultLocale}`,
148
+ },
149
+ ];
150
+
151
+ await store.dispatch(addTranslationSourcePrefix(sourcePrefix));
152
+ expect(store.getActions()).toMatchObject(expectedActions);
153
+ });
154
+ });
155
+
156
+ describe('with key already loaded', () => {
157
+ let store;
158
+ beforeEach(() => {
159
+ store = configureStore([thunk])({
160
+ locale: { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [`${sourcePrefix}${defaultLocale}`] },
161
+ });
162
+ axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
163
+ });
164
+
165
+ it("doesn't dispatches loaded action", async () => {
166
+ const expectedActions = [
167
+ {
168
+ type: addTranslationSourcePrefix.pending.type,
169
+ },
170
+ {
171
+ type: addTranslationSourcePrefix.fulfilled.type,
172
+ payload: `${sourcePrefix}${defaultLocale}`,
173
+ },
174
+ ];
175
+
176
+ await store.dispatch(addTranslationSourcePrefix(sourcePrefix));
177
+ expect(store.getActions()).toMatchObject(expectedActions);
178
+ });
179
+ });
180
+ });
181
+
182
+ describe('loaded reducer', () => {
183
+ describe('with empty state', () => {
184
+ let initialState;
185
+ beforeEach(() => {
186
+ initialState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [] };
187
+ });
188
+
189
+ it("and empty parameter, don't adds anything", () => {
190
+ const expectedState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [] };
191
+
192
+ const localeState = locale(initialState, loaded({}));
193
+ expect(localeState).toMatchObject(expectedState);
194
+ });
195
+
196
+ it('and keys parameter, adds to loadedKeys', () => {
197
+ const expectedState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: ['foo'] };
198
+
199
+ const localeState = locale(initialState, loaded({ keys: ['foo'] }));
200
+ expect(localeState).toMatchObject(expectedState);
201
+ });
202
+
203
+ it('and sourcePrefix parameter, adds to sourcePrefixes', () => {
204
+ const expectedState = { currentLocale: defaultLocale, sourcePrefixes: ['foo'], loadedLocales: [], loadedKeys: [] };
205
+
206
+ const localeState = locale(initialState, loaded({ sourcePrefix: 'foo' }));
207
+ expect(localeState).toMatchObject(expectedState);
208
+ });
54
209
 
55
- const expectedActions = [updateLocale(defaultLocale)];
210
+ it('and locale parameter, adds to loadedLocales', () => {
211
+ const expectedState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: ['foo'], loadedKeys: [] };
56
212
 
57
- await store.dispatch(setLocale(defaultLocale));
58
- expect(store.getActions()).toEqual(expectedActions);
213
+ const localeState = locale(initialState, loaded({ locale: 'foo' }));
214
+ expect(localeState).toMatchObject(expectedState);
215
+ });
59
216
  });
60
217
  });
61
218
  });
@@ -18,9 +18,8 @@
18
18
  -%>
19
19
  import axios from 'axios';
20
20
  import dayjs from 'dayjs';
21
- import { createSlice } from '@reduxjs/toolkit';
21
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
22
22
 
23
- import { AppThunk } from 'app/config/store';
24
23
  import { TranslatorContext } from 'react-jhipster';
25
24
 
26
25
  const initialState = {
@@ -28,20 +27,51 @@ const initialState = {
28
27
  sourcePrefixes: [],
29
28
  lastChange: TranslatorContext.context.lastChange,
30
29
  loadedKeys: [],
30
+ loadedLocales: [],
31
31
  };
32
32
 
33
33
  export type LocaleState = Readonly<typeof initialState>;
34
34
 
35
- export const loadLocale = async (locale: string, prefix: string) => {
35
+ const loadLocaleAndRegisterLocaleFile = async (locale: string, prefix: string) => {
36
36
  if (prefix || !Object.keys(TranslatorContext.context.translations).includes(locale)) {
37
37
  const response = await axios.get(`${prefix}i18n/${locale}.json?_=${I18N_HASH}`, { baseURL: '' });
38
38
  TranslatorContext.registerTranslations(locale, response.data);
39
39
  }
40
40
  };
41
41
 
42
- export const setLocale: (locale: string) => AppThunk = locale => dispatch => {
43
- dispatch(updateLocale(locale));
44
- };
42
+ export const setLocale = createAsyncThunk('locale/setLocale', async (locale: string, thunkAPI: any) => {
43
+ const { sourcePrefixes, loadedKeys, loadedLocales } = thunkAPI.getState().locale;
44
+ if (!loadedLocales.includes(locale)) {
45
+ const keys = (
46
+ await Promise.all(
47
+ [''].concat(sourcePrefixes).map(async sourcePrefix => {
48
+ const key = `${sourcePrefix}${locale}`;
49
+ if (loadedKeys.includes(key)) return undefined;
50
+ await loadLocaleAndRegisterLocaleFile(locale, sourcePrefix);
51
+ return key;
52
+ })
53
+ )
54
+ ).filter(Boolean);
55
+ thunkAPI.dispatch(loaded({ keys, locale }));
56
+ }
57
+ thunkAPI.dispatch(updateLocale(locale));
58
+ return locale;
59
+ });
60
+
61
+ export const addTranslationSourcePrefix = createAsyncThunk(
62
+ 'locale/addTranslationSourcePrefix',
63
+ async (sourcePrefix: string, thunkAPI: any) => {
64
+ const { currentLocale, loadedKeys, sourcePrefixes } = thunkAPI.getState().locale;
65
+ const key = `${sourcePrefix}${currentLocale}`;
66
+ if (!sourcePrefixes.includes(sourcePrefix)) {
67
+ if (!loadedKeys.includes(key)) {
68
+ await loadLocaleAndRegisterLocaleFile(currentLocale, sourcePrefix);
69
+ thunkAPI.dispatch(loaded({ sourcePrefix, keys: [key] }));
70
+ }
71
+ }
72
+ return key;
73
+ }
74
+ );
45
75
 
46
76
  export const LocaleSlice = createSlice({
47
77
  name: 'locale',
@@ -56,19 +86,22 @@ export const LocaleSlice = createSlice({
56
86
  state.currentLocale = currentLocale;
57
87
  },
58
88
  loaded(state, action) {
59
- state.lastChange = TranslatorContext.context.lastChange;
60
- state.loadedKeys = state.loadedKeys.concat(action.payload);
61
- },
62
- addTranslationSourcePrefix(state, action) {
63
- const sourcePrefix = action.payload;
64
- if (!state.sourcePrefixes.includes(sourcePrefix)) {
89
+ const { keys, locale, sourcePrefix } = action.payload;
90
+ if (sourcePrefix && !state.sourcePrefixes.includes(sourcePrefix)) {
65
91
  state.sourcePrefixes = state.sourcePrefixes.concat(sourcePrefix);
66
92
  }
93
+ if (locale && !state.loadedLocales.includes(locale)) {
94
+ state.loadedLocales = state.loadedLocales.concat(locale);
95
+ }
96
+ if (keys) {
97
+ state.loadedKeys = state.loadedKeys.concat(keys);
98
+ }
99
+ state.lastChange = TranslatorContext.context.lastChange;
67
100
  },
68
101
  },
69
102
  });
70
103
 
71
- export const { updateLocale, addTranslationSourcePrefix, loaded } = LocaleSlice.actions;
104
+ export const { updateLocale, loaded } = LocaleSlice.actions;
72
105
 
73
106
  // Reducer
74
107
  export default LocaleSlice.reducer;
@@ -36,7 +36,7 @@ const { DefinePlugin } = require('webpack');
36
36
  },
37
37
  <%_ } _%>
38
38
  shared: {
39
- ...Object.fromEntries(Object.entries(packageJson.dependencies).map(([module]) => ([module, { singleton: true, shareScope: 'default' }]))),
39
+ ...Object.fromEntries(Object.entries(packageJson.dependencies).map(([module, version]) => ([module, { requiredVersion: version, singleton: true, shareScope: 'default' }]))),
40
40
  'app/config/constants': {
41
41
  singleton: true,
42
42
  import: 'app/config/constants',
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "dependencies": {
3
- "@fortawesome/fontawesome-svg-core": "6.1.2",
4
- "@fortawesome/free-solid-svg-icons": "6.1.2",
3
+ "@fortawesome/fontawesome-svg-core": "6.2.0",
4
+ "@fortawesome/free-solid-svg-icons": "6.2.0",
5
5
  "@fortawesome/vue-fontawesome": "2.0.8",
6
6
  "axios": "0.27.2",
7
7
  "bootstrap": "4.6.2",
@@ -11,7 +11,7 @@
11
11
  "vue-class-component": "7.2.6",
12
12
  "vue-cookie": "1.1.4",
13
13
  "vue-infinite-loading": "2.4.5",
14
- "vue-router": "3.5.4",
14
+ "vue-router": "3.6.4",
15
15
  "vue-i18n": "8.27.2",
16
16
  "vue-property-decorator": "9.1.2",
17
17
  "vuelidate": "0.7.7",
@@ -20,15 +20,15 @@
20
20
  },
21
21
  "devDependencies": {
22
22
  "@rushstack/eslint-patch": "1.1.4",
23
- "@types/jest": "28.1.6",
24
- "@types/node": "16.11.47",
23
+ "@types/jest": "28.1.8",
24
+ "@types/node": "16.11.56",
25
25
  "@types/sinon": "10.0.13",
26
26
  "@types/vuelidate": "0.7.15",
27
27
  "@vue/eslint-config-prettier": "7.0.0",
28
28
  "@vue/eslint-config-typescript": "10.0.0",
29
- "@vue/vue2-jest": "28.0.1",
29
+ "@vue/vue2-jest": "28.1.0",
30
30
  "@vue/test-utils": "1.3.0",
31
- "axios-mock-adapter": "1.21.1",
31
+ "axios-mock-adapter": "1.21.2",
32
32
  "autoprefixer": "10.4.8",
33
33
  "browser-sync-webpack-plugin": "2.3.0",
34
34
  "copy-webpack-plugin": "11.0.0",
@@ -39,31 +39,31 @@
39
39
  "html-webpack-plugin": "5.5.0",
40
40
  "jest": "28.1.3",
41
41
  "jest-environment-jsdom": "28.1.3",
42
- "jest-junit": "14.0.0",
42
+ "jest-junit": "14.0.1",
43
43
  "jest-serializer-vue": "2.0.2",
44
- "jest-sonar-reporter": "2.0.0",
44
+ "jest-sonar": "0.2.12",
45
45
  "jest-vue-preprocessor": "1.7.1",
46
46
  "merge-jsons-webpack-plugin": "2.0.1",
47
47
  "mini-css-extract-plugin": "2.6.1",
48
48
  "numeral": "2.0.6",
49
- "postcss-import": "14.1.0",
49
+ "postcss-import": "15.0.0",
50
50
  "postcss-loader": "7.0.1",
51
51
  "postcss-url": "10.1.3",
52
52
  "rimraf": "3.0.2",
53
- "sass": "1.54.1",
53
+ "sass": "1.54.8",
54
54
  "sass-loader": "13.0.2",
55
55
  "sinon": "14.0.0",
56
- "terser-webpack-plugin": "5.3.3",
57
- "ts-jest": "28.0.7",
56
+ "terser-webpack-plugin": "5.3.6",
57
+ "ts-jest": "28.0.8",
58
58
  "ts-loader": "9.3.1",
59
- "eslint": "8.21.0",
59
+ "eslint": "8.23.0",
60
60
  "eslint-plugin-prettier": "4.2.1",
61
61
  "eslint-plugin-vue": "8.7.1",
62
- "typescript": "4.7.4",
62
+ "typescript": "4.8.2",
63
63
  "webpack": "5.74.0",
64
- "webpack-bundle-analyzer": "4.5.0",
64
+ "webpack-bundle-analyzer": "4.6.1",
65
65
  "webpack-cli": "4.10.0",
66
- "webpack-dev-server": "4.9.3",
66
+ "webpack-dev-server": "4.10.1",
67
67
  "webpack-merge": "5.8.0",
68
68
  "workbox-webpack-plugin": "6.5.4",
69
69
  "vue-jest": "3.0.7",