@abp/ng.core 7.2.1 → 7.3.0-rc.1

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 (397) hide show
  1. package/{esm2020 → esm2022}/abp-ng.core.mjs +4 -4
  2. package/esm2022/lib/abstracts/abstract-guard.mjs +2 -0
  3. package/{esm2020 → esm2022}/lib/abstracts/auth-response.model.mjs +1 -1
  4. package/esm2022/lib/abstracts/auth.guard.mjs +18 -0
  5. package/esm2022/lib/abstracts/auth.service.mjs +46 -0
  6. package/esm2022/lib/abstracts/index.mjs +6 -0
  7. package/esm2022/lib/abstracts/ng-model.component.mjs +60 -0
  8. package/esm2022/lib/clients/http.client.mjs +29 -0
  9. package/{esm2020 → esm2022}/lib/clients/index.mjs +1 -1
  10. package/esm2022/lib/components/dynamic-layout.component.mjs +101 -0
  11. package/{esm2020 → esm2022}/lib/components/index.mjs +3 -3
  12. package/esm2022/lib/components/replaceable-route-container.component.mjs +43 -0
  13. package/esm2022/lib/components/router-outlet.component.mjs +16 -0
  14. package/{esm2020 → esm2022}/lib/constants/different-locales.mjs +336 -336
  15. package/{esm2020 → esm2022}/lib/constants/index.mjs +1 -1
  16. package/esm2022/lib/core.module.mjs +285 -0
  17. package/esm2022/lib/directives/autofocus.directive.mjs +31 -0
  18. package/esm2022/lib/directives/debounce.directive.mjs +37 -0
  19. package/esm2022/lib/directives/for.directive.mjs +160 -0
  20. package/esm2022/lib/directives/form-submit.directive.mjs +78 -0
  21. package/{esm2020 → esm2022}/lib/directives/index.mjs +8 -8
  22. package/esm2022/lib/directives/init.directive.mjs +22 -0
  23. package/esm2022/lib/directives/permission.directive.mjs +75 -0
  24. package/esm2022/lib/directives/replaceable-template.directive.mjs +133 -0
  25. package/esm2022/lib/directives/stop-propagation.directive.mjs +33 -0
  26. package/{esm2020 → esm2022}/lib/enums/common.mjs +1 -1
  27. package/{esm2020 → esm2022}/lib/enums/index.mjs +1 -1
  28. package/{esm2020 → esm2022}/lib/guards/index.mjs +1 -1
  29. package/esm2022/lib/guards/permission.guard.mjs +41 -0
  30. package/esm2022/lib/handlers/routes.handler.mjs +52 -0
  31. package/esm2022/lib/interceptors/api.interceptor.mjs +28 -0
  32. package/{esm2020 → esm2022}/lib/interceptors/index.mjs +1 -1
  33. package/esm2022/lib/localization.module.mjs +17 -0
  34. package/{esm2020 → esm2022}/lib/models/auth.mjs +1 -1
  35. package/{esm2020 → esm2022}/lib/models/common.mjs +1 -1
  36. package/{esm2020 → esm2022}/lib/models/dtos.mjs +134 -134
  37. package/{esm2020 → esm2022}/lib/models/environment.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/models/index.mjs +9 -9
  39. package/{esm2020 → esm2022}/lib/models/localization.mjs +1 -1
  40. package/{esm2020 → esm2022}/lib/models/replaceable-components.mjs +1 -1
  41. package/{esm2020 → esm2022}/lib/models/rest.mjs +1 -1
  42. package/{esm2020 → esm2022}/lib/models/session.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/models/utility.mjs +1 -1
  44. package/{esm2020 → esm2022}/lib/pipes/index.mjs +7 -7
  45. package/esm2022/lib/pipes/localization.pipe.mjs +34 -0
  46. package/esm2022/lib/pipes/safe-html.pipe.mjs +24 -0
  47. package/esm2022/lib/pipes/short-date-time.pipe.mjs +35 -0
  48. package/esm2022/lib/pipes/short-date.pipe.mjs +35 -0
  49. package/esm2022/lib/pipes/short-time.pipe.mjs +35 -0
  50. package/esm2022/lib/pipes/sort.pipe.mjs +50 -0
  51. package/esm2022/lib/pipes/to-injector.pipe.mjs +30 -0
  52. package/{esm2020 → esm2022}/lib/providers/cookie-language.provider.mjs +21 -21
  53. package/{esm2020 → esm2022}/lib/providers/include-localization-resources.provider.mjs +5 -5
  54. package/{esm2020 → esm2022}/lib/providers/locale.provider.mjs +25 -25
  55. package/esm2022/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +28 -0
  56. package/{esm2020 → esm2022}/lib/proxy/pages/abp/multi-tenancy/index.mjs +1 -1
  57. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +25 -0
  58. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.mjs +1 -1
  59. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +25 -0
  60. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +25 -0
  61. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.mjs +5 -5
  62. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.mjs +1 -1
  63. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.mjs +1 -1
  64. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.mjs +1 -1
  65. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.mjs +1 -1
  66. package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/proxy/volo/abp/http/modeling/index.mjs +1 -1
  68. package/{esm2020 → esm2022}/lib/proxy/volo/abp/http/modeling/models.mjs +1 -1
  69. package/{esm2020 → esm2022}/lib/proxy/volo/abp/localization/index.mjs +1 -1
  70. package/{esm2020 → esm2022}/lib/proxy/volo/abp/localization/models.mjs +1 -1
  71. package/{esm2020 → esm2022}/lib/proxy/volo/abp/models.mjs +1 -1
  72. package/esm2022/lib/services/config-state.service.mjs +182 -0
  73. package/esm2022/lib/services/content-projection.service.mjs +18 -0
  74. package/esm2022/lib/services/dom-insertion.service.mjs +35 -0
  75. package/esm2022/lib/services/environment.service.mjs +49 -0
  76. package/esm2022/lib/services/http-error-reporter.service.mjs +30 -0
  77. package/esm2022/lib/services/http-wait.service.mjs +76 -0
  78. package/{esm2020 → esm2022}/lib/services/index.mjs +21 -21
  79. package/esm2022/lib/services/lazy-load.service.mjs +41 -0
  80. package/esm2022/lib/services/list.service.mjs +103 -0
  81. package/esm2022/lib/services/local-storage.service.mjs +33 -0
  82. package/esm2022/lib/services/localization.service.mjs +218 -0
  83. package/esm2022/lib/services/multi-tenancy.service.mjs +49 -0
  84. package/esm2022/lib/services/permission.service.mjs +64 -0
  85. package/esm2022/lib/services/replaceable-components.service.mjs +50 -0
  86. package/esm2022/lib/services/resource-wait.service.mjs +40 -0
  87. package/esm2022/lib/services/rest.service.mjs +79 -0
  88. package/esm2022/lib/services/router-events.service.mjs +39 -0
  89. package/esm2022/lib/services/router-wait.service.mjs +52 -0
  90. package/esm2022/lib/services/routes.service.mjs +165 -0
  91. package/esm2022/lib/services/session-state.service.mjs +81 -0
  92. package/esm2022/lib/services/subscription.service.mjs +44 -0
  93. package/esm2022/lib/services/track-by.service.mjs +22 -0
  94. package/{esm2020 → esm2022}/lib/strategies/container.strategy.mjs +37 -37
  95. package/{esm2020 → esm2022}/lib/strategies/content-security.strategy.mjs +29 -29
  96. package/{esm2020 → esm2022}/lib/strategies/content.strategy.mjs +51 -51
  97. package/{esm2020 → esm2022}/lib/strategies/context.strategy.mjs +36 -36
  98. package/{esm2020 → esm2022}/lib/strategies/cross-origin.strategy.mjs +27 -27
  99. package/{esm2020 → esm2022}/lib/strategies/dom.strategy.mjs +26 -26
  100. package/{esm2020 → esm2022}/lib/strategies/index.mjs +8 -8
  101. package/{esm2020 → esm2022}/lib/strategies/loading.strategy.mjs +57 -57
  102. package/{esm2020 → esm2022}/lib/strategies/projection.strategy.mjs +79 -79
  103. package/{esm2020 → esm2022}/lib/tokens/app-config.token.mjs +2 -2
  104. package/{esm2020 → esm2022}/lib/tokens/check-authentication-state.mjs +2 -2
  105. package/{esm2020 → esm2022}/lib/tokens/cookie-language-key.token.mjs +4 -4
  106. package/{esm2020 → esm2022}/lib/tokens/http-context.token.mjs +2 -2
  107. package/{esm2020 → esm2022}/lib/tokens/include-localization-resources.token.mjs +2 -2
  108. package/{esm2020 → esm2022}/lib/tokens/index.mjs +15 -15
  109. package/{esm2020 → esm2022}/lib/tokens/list.token.mjs +2 -2
  110. package/{esm2020 → esm2022}/lib/tokens/localization.token.mjs +9 -9
  111. package/{esm2020 → esm2022}/lib/tokens/lodaer-delay.token.mjs +2 -2
  112. package/{esm2020 → esm2022}/lib/tokens/manage-profile.token.mjs +2 -2
  113. package/{esm2020 → esm2022}/lib/tokens/options.token.mjs +7 -7
  114. package/{esm2020 → esm2022}/lib/tokens/others-group.token.mjs +2 -2
  115. package/{esm2020 → esm2022}/lib/tokens/pipe-to-login.token.mjs +2 -2
  116. package/{esm2020 → esm2022}/lib/tokens/queue.token.mjs +2 -2
  117. package/{esm2020 → esm2022}/lib/tokens/set-token-response-to-storage.token.mjs +5 -5
  118. package/{esm2020 → esm2022}/lib/tokens/tenant-key.token.mjs +2 -2
  119. package/{esm2020 → esm2022}/lib/utils/array-utils.mjs +6 -6
  120. package/{esm2020 → esm2022}/lib/utils/common-utils.mjs +34 -34
  121. package/{esm2020 → esm2022}/lib/utils/date-extensions.mjs +5 -5
  122. package/{esm2020 → esm2022}/lib/utils/date-utils.mjs +12 -12
  123. package/{esm2020 → esm2022}/lib/utils/environment-utils.mjs +35 -35
  124. package/{esm2020 → esm2022}/lib/utils/factory-utils.mjs +24 -24
  125. package/{esm2020 → esm2022}/lib/utils/file-utils.mjs +13 -13
  126. package/{esm2020 → esm2022}/lib/utils/form-utils.mjs +11 -11
  127. package/{esm2020 → esm2022}/lib/utils/generator-utils.mjs +33 -33
  128. package/{esm2020 → esm2022}/lib/utils/http-utils.mjs +18 -18
  129. package/{esm2020 → esm2022}/lib/utils/index.mjs +20 -20
  130. package/{esm2020 → esm2022}/lib/utils/initial-utils.mjs +59 -59
  131. package/esm2022/lib/utils/internal-store-utils.mjs +37 -0
  132. package/{esm2020 → esm2022}/lib/utils/lazy-load-utils.mjs +39 -39
  133. package/{esm2020 → esm2022}/lib/utils/localization-utils.mjs +48 -48
  134. package/{esm2020 → esm2022}/lib/utils/multi-tenancy-utils.mjs +80 -80
  135. package/{esm2020 → esm2022}/lib/utils/number-utils.mjs +3 -3
  136. package/{esm2020 → esm2022}/lib/utils/object-utils.mjs +36 -36
  137. package/{esm2020 → esm2022}/lib/utils/queue.mjs +40 -40
  138. package/{esm2020 → esm2022}/lib/utils/route-utils.mjs +25 -25
  139. package/{esm2020 → esm2022}/lib/utils/string-utils.mjs +29 -29
  140. package/{esm2020 → esm2022}/lib/utils/tree-utils.mjs +69 -69
  141. package/{esm2020 → esm2022}/lib/validators/age.validator.mjs +13 -13
  142. package/{esm2020 → esm2022}/lib/validators/credit-card.validator.mjs +20 -20
  143. package/esm2022/lib/validators/index.mjs +29 -0
  144. package/{esm2020 → esm2022}/lib/validators/range.validator.mjs +14 -14
  145. package/{esm2020 → esm2022}/lib/validators/required.validator.mjs +14 -14
  146. package/{esm2020 → esm2022}/lib/validators/string-length.validator.mjs +14 -14
  147. package/esm2022/lib/validators/unique-character.validator.mjs +13 -0
  148. package/{esm2020 → esm2022}/lib/validators/url.validator.mjs +16 -16
  149. package/{esm2020 → esm2022}/lib/validators/username.validator.mjs +13 -13
  150. package/{esm2020 → esm2022}/locale/abp-ng.core-locale.mjs +4 -4
  151. package/{esm2020 → esm2022}/locale/public-api.mjs +1 -1
  152. package/{esm2020 → esm2022}/locale/utils/register-locale.mjs +46 -46
  153. package/{esm2020 → esm2022}/public-api.mjs +26 -26
  154. package/{esm2020 → esm2022}/testing/abp-ng.core-testing.mjs +4 -4
  155. package/esm2022/testing/lib/core-testing.module.mjs +68 -0
  156. package/{esm2020 → esm2022}/testing/lib/services/index.mjs +2 -2
  157. package/esm2022/testing/lib/services/mock-permission.service.mjs +36 -0
  158. package/esm2022/testing/lib/services/mock-rest.service.mjs +32 -0
  159. package/{esm2020 → esm2022}/testing/lib/utils/clear-page.util.mjs +9 -9
  160. package/{esm2020 → esm2022}/testing/lib/utils/index.mjs +2 -2
  161. package/{esm2020 → esm2022}/testing/lib/utils/wait.util.mjs +4 -4
  162. package/{esm2020 → esm2022}/testing/public-api.mjs +3 -3
  163. package/{fesm2020 → fesm2022}/abp-ng.core-locale.mjs +45 -45
  164. package/{fesm2020 → fesm2022}/abp-ng.core-testing.mjs +120 -120
  165. package/{fesm2020 → fesm2022}/abp-ng.core-testing.mjs.map +1 -1
  166. package/{fesm2020 → fesm2022}/abp-ng.core.mjs +4199 -4187
  167. package/fesm2022/abp-ng.core.mjs.map +1 -0
  168. package/index.d.ts +5 -5
  169. package/lib/abstracts/abstract-guard.d.ts +5 -0
  170. package/lib/abstracts/auth-response.model.d.ts +10 -10
  171. package/lib/abstracts/auth.guard.d.ts +9 -10
  172. package/lib/abstracts/auth.service.d.ts +30 -30
  173. package/lib/abstracts/index.d.ts +5 -4
  174. package/lib/abstracts/ng-model.component.d.ts +25 -25
  175. package/lib/clients/http.client.d.ts +11 -11
  176. package/lib/clients/index.d.ts +1 -1
  177. package/lib/components/dynamic-layout.component.d.ts +28 -28
  178. package/lib/components/index.d.ts +3 -3
  179. package/lib/components/replaceable-route-container.component.d.ts +17 -17
  180. package/lib/components/router-outlet.component.d.ts +5 -5
  181. package/lib/constants/different-locales.d.ts +334 -334
  182. package/lib/constants/index.d.ts +1 -1
  183. package/lib/core.module.d.ts +57 -57
  184. package/lib/directives/autofocus.directive.d.ts +12 -12
  185. package/lib/directives/debounce.directive.d.ts +13 -13
  186. package/lib/directives/for.directive.d.ts +36 -36
  187. package/lib/directives/form-submit.directive.d.ts +23 -23
  188. package/lib/directives/index.d.ts +8 -8
  189. package/lib/directives/init.directive.d.ts +10 -10
  190. package/lib/directives/permission.directive.d.ts +24 -24
  191. package/lib/directives/replaceable-template.directive.d.ts +29 -29
  192. package/lib/directives/stop-propagation.directive.d.ts +12 -12
  193. package/lib/enums/common.d.ts +5 -5
  194. package/lib/enums/index.d.ts +1 -1
  195. package/lib/guards/index.d.ts +1 -1
  196. package/lib/guards/permission.guard.d.ts +16 -16
  197. package/lib/handlers/routes.handler.d.ts +11 -11
  198. package/lib/interceptors/api.interceptor.d.ts +14 -14
  199. package/lib/interceptors/index.d.ts +1 -1
  200. package/lib/localization.module.d.ts +7 -7
  201. package/lib/models/auth.d.ts +14 -14
  202. package/lib/models/common.d.ts +79 -79
  203. package/lib/models/dtos.d.ts +107 -107
  204. package/lib/models/environment.d.ts +38 -38
  205. package/lib/models/index.d.ts +9 -9
  206. package/lib/models/localization.d.ts +5 -5
  207. package/lib/models/replaceable-components.d.ts +45 -45
  208. package/lib/models/rest.d.ts +36 -36
  209. package/lib/models/session.d.ts +7 -7
  210. package/lib/models/utility.d.ts +14 -14
  211. package/lib/pipes/index.d.ts +7 -7
  212. package/lib/pipes/localization.pipe.d.ts +12 -12
  213. package/lib/pipes/safe-html.pipe.d.ts +9 -9
  214. package/lib/pipes/short-date-time.pipe.d.ts +12 -12
  215. package/lib/pipes/short-date.pipe.d.ts +12 -12
  216. package/lib/pipes/short-time.pipe.d.ts +12 -12
  217. package/lib/pipes/sort.pipe.d.ts +9 -9
  218. package/lib/pipes/to-injector.pipe.d.ts +10 -10
  219. package/lib/providers/cookie-language.provider.d.ts +3 -3
  220. package/lib/providers/include-localization-resources.provider.d.ts +2 -2
  221. package/lib/providers/locale.provider.d.ts +9 -9
  222. package/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.d.ts +12 -12
  223. package/lib/proxy/pages/abp/multi-tenancy/index.d.ts +1 -1
  224. package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.d.ts +11 -11
  225. package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.d.ts +1 -1
  226. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.d.ts +11 -11
  227. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.d.ts +11 -11
  228. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.d.ts +5 -5
  229. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.d.ts +106 -106
  230. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.d.ts +1 -1
  231. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.d.ts +71 -71
  232. package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.d.ts +1 -1
  233. package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.d.ts +14 -14
  234. package/lib/proxy/volo/abp/http/modeling/index.d.ts +1 -1
  235. package/lib/proxy/volo/abp/http/modeling/models.d.ts +88 -88
  236. package/lib/proxy/volo/abp/localization/index.d.ts +1 -1
  237. package/lib/proxy/volo/abp/localization/models.d.ts +7 -7
  238. package/lib/proxy/volo/abp/models.d.ts +4 -4
  239. package/lib/services/config-state.service.d.ts +379 -378
  240. package/lib/services/content-projection.service.d.ts +10 -10
  241. package/lib/services/dom-insertion.service.d.ts +10 -10
  242. package/lib/services/environment.service.d.ts +103 -103
  243. package/lib/services/http-error-reporter.service.d.ts +12 -12
  244. package/lib/services/http-wait.service.d.ts +30 -30
  245. package/lib/services/index.d.ts +21 -21
  246. package/lib/services/lazy-load.service.d.ts +13 -13
  247. package/lib/services/list.service.d.ts +39 -39
  248. package/lib/services/local-storage.service.d.ts +13 -13
  249. package/lib/services/localization.service.d.ts +54 -54
  250. package/lib/services/multi-tenancy.service.d.ts +22 -22
  251. package/lib/services/permission.service.d.ts +19 -19
  252. package/lib/services/replaceable-components.service.d.ts +19 -19
  253. package/lib/services/resource-wait.service.d.ts +15 -15
  254. package/lib/services/rest.service.d.ts +24 -24
  255. package/lib/services/router-events.service.d.ts +29 -29
  256. package/lib/services/router-wait.service.d.ts +20 -20
  257. package/lib/services/routes.service.d.ts +57 -57
  258. package/lib/services/session-state.service.d.ts +27 -27
  259. package/lib/services/subscription.service.d.ts +17 -17
  260. package/lib/services/track-by.service.d.ts +11 -11
  261. package/lib/strategies/container.strategy.d.ts +22 -22
  262. package/lib/strategies/content-security.strategy.d.ts +17 -17
  263. package/lib/strategies/content.strategy.d.ts +26 -26
  264. package/lib/strategies/context.strategy.d.ts +23 -23
  265. package/lib/strategies/cross-origin.strategy.d.ts +14 -14
  266. package/lib/strategies/dom.strategy.d.ts +13 -13
  267. package/lib/strategies/index.d.ts +8 -8
  268. package/lib/strategies/loading.strategy.d.ts +28 -28
  269. package/lib/strategies/projection.strategy.d.ts +39 -39
  270. package/lib/tokens/app-config.token.d.ts +3 -3
  271. package/lib/tokens/check-authentication-state.d.ts +3 -3
  272. package/lib/tokens/cookie-language-key.token.d.ts +2 -2
  273. package/lib/tokens/http-context.token.d.ts +2 -2
  274. package/lib/tokens/include-localization-resources.token.d.ts +2 -2
  275. package/lib/tokens/index.d.ts +15 -15
  276. package/lib/tokens/list.token.d.ts +2 -2
  277. package/lib/tokens/localization.token.d.ts +6 -6
  278. package/lib/tokens/lodaer-delay.token.d.ts +2 -2
  279. package/lib/tokens/manage-profile.token.d.ts +2 -2
  280. package/lib/tokens/options.token.d.ts +4 -4
  281. package/lib/tokens/others-group.token.d.ts +2 -2
  282. package/lib/tokens/pipe-to-login.token.d.ts +3 -3
  283. package/lib/tokens/queue.token.d.ts +3 -3
  284. package/lib/tokens/set-token-response-to-storage.token.d.ts +6 -6
  285. package/lib/tokens/tenant-key.token.d.ts +2 -2
  286. package/lib/utils/array-utils.d.ts +1 -1
  287. package/lib/utils/common-utils.d.ts +11 -11
  288. package/lib/utils/date-extensions.d.ts +6 -6
  289. package/lib/utils/date-utils.d.ts +4 -4
  290. package/lib/utils/environment-utils.d.ts +3 -3
  291. package/lib/utils/factory-utils.d.ts +11 -11
  292. package/lib/utils/file-utils.d.ts +1 -1
  293. package/lib/utils/form-utils.d.ts +2 -2
  294. package/lib/utils/generator-utils.d.ts +3 -3
  295. package/lib/utils/http-utils.d.ts +8 -8
  296. package/lib/utils/index.d.ts +20 -20
  297. package/lib/utils/initial-utils.d.ts +3 -3
  298. package/lib/utils/internal-store-utils.d.ts +14 -14
  299. package/lib/utils/lazy-load-utils.d.ts +4 -4
  300. package/lib/utils/localization-utils.d.ts +5 -5
  301. package/lib/utils/multi-tenancy-utils.d.ts +3 -3
  302. package/lib/utils/number-utils.d.ts +1 -1
  303. package/lib/utils/object-utils.d.ts +2 -2
  304. package/lib/utils/queue.d.ts +14 -14
  305. package/lib/utils/route-utils.d.ts +8 -8
  306. package/lib/utils/string-utils.d.ts +3 -3
  307. package/lib/utils/tree-utils.d.ts +26 -26
  308. package/lib/validators/age.validator.d.ts +10 -10
  309. package/lib/validators/credit-card.validator.d.ts +5 -5
  310. package/lib/validators/index.d.ts +28 -24
  311. package/lib/validators/range.validator.d.ts +12 -12
  312. package/lib/validators/required.validator.d.ts +8 -8
  313. package/lib/validators/string-length.validator.d.ts +14 -14
  314. package/lib/validators/unique-character.validator.d.ts +5 -0
  315. package/lib/validators/url.validator.d.ts +5 -5
  316. package/lib/validators/username.validator.d.ts +10 -10
  317. package/locale/index.d.ts +5 -5
  318. package/locale/public-api.d.ts +1 -1
  319. package/locale/utils/register-locale.d.ts +13 -13
  320. package/package.json +12 -22
  321. package/public-api.d.ts +25 -25
  322. package/testing/index.d.ts +5 -5
  323. package/testing/lib/core-testing.module.d.ts +16 -16
  324. package/testing/lib/services/index.d.ts +2 -2
  325. package/testing/lib/services/mock-permission.service.d.ts +10 -10
  326. package/testing/lib/services/mock-rest.service.d.ts +14 -14
  327. package/testing/lib/utils/clear-page.util.d.ts +2 -2
  328. package/testing/lib/utils/index.d.ts +2 -2
  329. package/testing/lib/utils/wait.util.d.ts +2 -2
  330. package/testing/public-api.d.ts +3 -3
  331. package/esm2020/lib/abstracts/auth.guard.mjs +0 -17
  332. package/esm2020/lib/abstracts/auth.service.mjs +0 -45
  333. package/esm2020/lib/abstracts/index.mjs +0 -5
  334. package/esm2020/lib/abstracts/ng-model.component.mjs +0 -59
  335. package/esm2020/lib/clients/http.client.mjs +0 -34
  336. package/esm2020/lib/components/dynamic-layout.component.mjs +0 -100
  337. package/esm2020/lib/components/replaceable-route-container.component.mjs +0 -42
  338. package/esm2020/lib/components/router-outlet.component.mjs +0 -15
  339. package/esm2020/lib/core.module.mjs +0 -282
  340. package/esm2020/lib/directives/autofocus.directive.mjs +0 -30
  341. package/esm2020/lib/directives/debounce.directive.mjs +0 -36
  342. package/esm2020/lib/directives/for.directive.mjs +0 -159
  343. package/esm2020/lib/directives/form-submit.directive.mjs +0 -77
  344. package/esm2020/lib/directives/init.directive.mjs +0 -21
  345. package/esm2020/lib/directives/permission.directive.mjs +0 -74
  346. package/esm2020/lib/directives/replaceable-template.directive.mjs +0 -132
  347. package/esm2020/lib/directives/stop-propagation.directive.mjs +0 -32
  348. package/esm2020/lib/guards/permission.guard.mjs +0 -44
  349. package/esm2020/lib/handlers/routes.handler.mjs +0 -51
  350. package/esm2020/lib/interceptors/api.interceptor.mjs +0 -27
  351. package/esm2020/lib/localization.module.mjs +0 -16
  352. package/esm2020/lib/pipes/localization.pipe.mjs +0 -33
  353. package/esm2020/lib/pipes/safe-html.pipe.mjs +0 -23
  354. package/esm2020/lib/pipes/short-date-time.pipe.mjs +0 -34
  355. package/esm2020/lib/pipes/short-date.pipe.mjs +0 -34
  356. package/esm2020/lib/pipes/short-time.pipe.mjs +0 -34
  357. package/esm2020/lib/pipes/sort.pipe.mjs +0 -49
  358. package/esm2020/lib/pipes/to-injector.pipe.mjs +0 -29
  359. package/esm2020/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +0 -27
  360. package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +0 -24
  361. package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +0 -24
  362. package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +0 -24
  363. package/esm2020/lib/services/config-state.service.mjs +0 -178
  364. package/esm2020/lib/services/content-projection.service.mjs +0 -17
  365. package/esm2020/lib/services/dom-insertion.service.mjs +0 -34
  366. package/esm2020/lib/services/environment.service.mjs +0 -48
  367. package/esm2020/lib/services/http-error-reporter.service.mjs +0 -29
  368. package/esm2020/lib/services/http-wait.service.mjs +0 -75
  369. package/esm2020/lib/services/lazy-load.service.mjs +0 -40
  370. package/esm2020/lib/services/list.service.mjs +0 -102
  371. package/esm2020/lib/services/local-storage.service.mjs +0 -32
  372. package/esm2020/lib/services/localization.service.mjs +0 -217
  373. package/esm2020/lib/services/multi-tenancy.service.mjs +0 -48
  374. package/esm2020/lib/services/permission.service.mjs +0 -63
  375. package/esm2020/lib/services/replaceable-components.service.mjs +0 -49
  376. package/esm2020/lib/services/resource-wait.service.mjs +0 -39
  377. package/esm2020/lib/services/rest.service.mjs +0 -78
  378. package/esm2020/lib/services/router-events.service.mjs +0 -38
  379. package/esm2020/lib/services/router-wait.service.mjs +0 -51
  380. package/esm2020/lib/services/routes.service.mjs +0 -163
  381. package/esm2020/lib/services/session-state.service.mjs +0 -80
  382. package/esm2020/lib/services/subscription.service.mjs +0 -43
  383. package/esm2020/lib/services/track-by.service.mjs +0 -21
  384. package/esm2020/lib/utils/internal-store-utils.mjs +0 -37
  385. package/esm2020/lib/validators/index.mjs +0 -25
  386. package/esm2020/testing/lib/core-testing.module.mjs +0 -67
  387. package/esm2020/testing/lib/services/mock-permission.service.mjs +0 -35
  388. package/esm2020/testing/lib/services/mock-rest.service.mjs +0 -31
  389. package/fesm2015/abp-ng.core-locale.mjs +0 -57
  390. package/fesm2015/abp-ng.core-locale.mjs.map +0 -1
  391. package/fesm2015/abp-ng.core-testing.mjs +0 -146
  392. package/fesm2015/abp-ng.core-testing.mjs.map +0 -1
  393. package/fesm2015/abp-ng.core.mjs +0 -4460
  394. package/fesm2015/abp-ng.core.mjs.map +0 -1
  395. package/fesm2020/abp-ng.core.mjs.map +0 -1
  396. package/src/lib/proxy/README.md +0 -17
  397. /package/{fesm2020 → fesm2022}/abp-ng.core-locale.mjs.map +0 -0
@@ -0,0 +1,40 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { InternalStore } from '../utils/internal-store-utils';
3
+ import * as i0 from "@angular/core";
4
+ class ResourceWaitService {
5
+ constructor() {
6
+ this.store = new InternalStore({ resources: new Set() });
7
+ }
8
+ getLoading() {
9
+ return !!this.store.state.resources.size;
10
+ }
11
+ getLoading$() {
12
+ return this.store.sliceState(({ resources }) => !!resources.size);
13
+ }
14
+ updateLoading$() {
15
+ return this.store.sliceUpdate(({ resources }) => !!resources?.size);
16
+ }
17
+ clearLoading() {
18
+ this.store.patch({ resources: new Set() });
19
+ }
20
+ addResource(resource) {
21
+ const resources = this.store.state.resources;
22
+ resources.add(resource);
23
+ this.store.patch({ resources });
24
+ }
25
+ deleteResource(resource) {
26
+ const resources = this.store.state.resources;
27
+ resources.delete(resource);
28
+ this.store.patch({ resources });
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ResourceWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ResourceWaitService, providedIn: 'root' }); }
32
+ }
33
+ export { ResourceWaitService };
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ResourceWaitService, decorators: [{
35
+ type: Injectable,
36
+ args: [{
37
+ providedIn: 'root',
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utd2FpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Jlc291cmNlLXdhaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFNOUQsTUFHYSxtQkFBbUI7SUFIaEM7UUFJVSxVQUFLLEdBQUcsSUFBSSxhQUFhLENBQW9CLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBNkJoRjtJQTNCQyxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUM3QyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUM3QyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQTdCVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOztTQUVQLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VXYWl0U3RhdGUge1xyXG4gIHJlc291cmNlczogU2V0PHN0cmluZz47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVdhaXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0b3JlID0gbmV3IEludGVybmFsU3RvcmU8UmVzb3VyY2VXYWl0U3RhdGU+KHsgcmVzb3VyY2VzOiBuZXcgU2V0KCkgfSk7XHJcblxyXG4gIGdldExvYWRpbmcoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLnN0b3JlLnN0YXRlLnJlc291cmNlcy5zaXplO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9hZGluZyQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKCh7IHJlc291cmNlcyB9KSA9PiAhIXJlc291cmNlcy5zaXplKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxvYWRpbmckKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoKHsgcmVzb3VyY2VzIH0pID0+ICEhcmVzb3VyY2VzPy5zaXplKTtcclxuICB9XHJcblxyXG4gIGNsZWFyTG9hZGluZygpIHtcclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyByZXNvdXJjZXM6IG5ldyBTZXQoKSB9KTtcclxuICB9XHJcblxyXG4gIGFkZFJlc291cmNlKHJlc291cmNlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuc3RvcmUuc3RhdGUucmVzb3VyY2VzO1xyXG4gICAgcmVzb3VyY2VzLmFkZChyZXNvdXJjZSk7XHJcbiAgICB0aGlzLnN0b3JlLnBhdGNoKHsgcmVzb3VyY2VzIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUmVzb3VyY2UocmVzb3VyY2U6IHN0cmluZykge1xyXG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5zdG9yZS5zdGF0ZS5yZXNvdXJjZXM7XHJcbiAgICByZXNvdXJjZXMuZGVsZXRlKHJlc291cmNlKTtcclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyByZXNvdXJjZXMgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import { HttpClient, HttpParams } from '@angular/common/http';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { throwError } from 'rxjs';
4
+ import { catchError } from 'rxjs/operators';
5
+ import { ExternalHttpClient } from '../clients/http.client';
6
+ import { CORE_OPTIONS } from '../tokens/options.token';
7
+ import { isUndefinedOrEmptyString } from '../utils/common-utils';
8
+ import { EnvironmentService } from './environment.service';
9
+ import { HttpErrorReporterService } from './http-error-reporter.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common/http";
12
+ import * as i2 from "../clients/http.client";
13
+ import * as i3 from "./environment.service";
14
+ import * as i4 from "./http-error-reporter.service";
15
+ class RestService {
16
+ constructor(options, http, externalHttp, environment, httpErrorReporter) {
17
+ this.options = options;
18
+ this.http = http;
19
+ this.externalHttp = externalHttp;
20
+ this.environment = environment;
21
+ this.httpErrorReporter = httpErrorReporter;
22
+ }
23
+ getApiFromStore(apiName) {
24
+ return this.environment.getApiUrl(apiName);
25
+ }
26
+ handleError(err) {
27
+ this.httpErrorReporter.reportError(err);
28
+ return throwError(err);
29
+ }
30
+ request(request, config, api) {
31
+ config = config || {};
32
+ api = api || this.getApiFromStore(config.apiName);
33
+ const { method, params, ...options } = request;
34
+ const { observe = "body" /* Rest.Observe.Body */, skipHandleError } = config;
35
+ const url = this.removeDuplicateSlashes(api + request.url);
36
+ const httpClient = this.getHttpClient(config.skipAddingHeader);
37
+ return httpClient
38
+ .request(method, url, {
39
+ observe,
40
+ ...(params && {
41
+ params: this.getParams(params, config.httpParamEncoder),
42
+ }),
43
+ ...options,
44
+ })
45
+ .pipe(catchError(err => (skipHandleError ? throwError(err) : this.handleError(err))));
46
+ }
47
+ getHttpClient(isExternal) {
48
+ return isExternal ? this.externalHttp : this.http;
49
+ }
50
+ getParams(params, encoder) {
51
+ const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
52
+ if (isUndefinedOrEmptyString(value))
53
+ return acc;
54
+ if (value === null && !this.options.sendNullsAsQueryParam)
55
+ return acc;
56
+ acc[key] = value;
57
+ return acc;
58
+ }, {});
59
+ return encoder
60
+ ? new HttpParams({ encoder, fromObject: filteredParams })
61
+ : new HttpParams({ fromObject: filteredParams });
62
+ }
63
+ removeDuplicateSlashes(url) {
64
+ return url.replace(/([^:]\/)\/+/g, '$1');
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RestService, deps: [{ token: CORE_OPTIONS }, { token: i1.HttpClient }, { token: i2.ExternalHttpClient }, { token: i3.EnvironmentService }, { token: i4.HttpErrorReporterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RestService, providedIn: 'root' }); }
68
+ }
69
+ export { RestService };
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RestService, decorators: [{
71
+ type: Injectable,
72
+ args: [{
73
+ providedIn: 'root',
74
+ }]
75
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
76
+ type: Inject,
77
+ args: [CORE_OPTIONS]
78
+ }] }, { type: i1.HttpClient }, { type: i2.ExternalHttpClient }, { type: i3.EnvironmentService }, { type: i4.HttpErrorReporterService }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFzQixVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUV6RSxNQUdhLFdBQVc7SUFDdEIsWUFDa0MsT0FBaUIsRUFDdkMsSUFBZ0IsRUFDaEIsWUFBZ0MsRUFDaEMsV0FBK0IsRUFDL0IsaUJBQTJDO1FBSnJCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7SUFDcEQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxPQUEyQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxX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dHBDbGllbnQsIEh0dHBQYXJhbWV0ZXJDb2RlYywgSHR0cFBhcmFtcywgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEV4dGVybmFsSHR0cENsaWVudCB9IGZyb20gJy4uL2NsaWVudHMvaHR0cC5jbGllbnQnO1xyXG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4uL21vZGVscy9yZXN0JztcclxuaW1wb3J0IHsgQ09SRV9PUFRJT05TIH0gZnJvbSAnLi4vdG9rZW5zL29wdGlvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBpc1VuZGVmaW5lZE9yRW1wdHlTdHJpbmcgfSBmcm9tICcuLi91dGlscy9jb21tb24tdXRpbHMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UgfSBmcm9tICcuL2h0dHAtZXJyb3ItcmVwb3J0ZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChDT1JFX09QVElPTlMpIHByb3RlY3RlZCBvcHRpb25zOiBBQlAuUm9vdCxcclxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJvdGVjdGVkIGV4dGVybmFsSHR0cDogRXh0ZXJuYWxIdHRwQ2xpZW50LFxyXG4gICAgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgaHR0cEVycm9yUmVwb3J0ZXI6IEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBcGlGcm9tU3RvcmUoYXBpTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50LmdldEFwaVVybChhcGlOYW1lKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0RXJyb3IoZXJyKTtcclxuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XHJcbiAgfVxyXG5cclxuICByZXF1ZXN0PFQsIFI+KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8VD4gfCBSZXN0LlJlcXVlc3Q8VD4sXHJcbiAgICBjb25maWc/OiBSZXN0LkNvbmZpZyxcclxuICAgIGFwaT86IHN0cmluZyxcclxuICApOiBPYnNlcnZhYmxlPFI+IHtcclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCAoe30gYXMgUmVzdC5Db25maWcpO1xyXG4gICAgYXBpID0gYXBpIHx8IHRoaXMuZ2V0QXBpRnJvbVN0b3JlKGNvbmZpZy5hcGlOYW1lKTtcclxuICAgIGNvbnN0IHsgbWV0aG9kLCBwYXJhbXMsIC4uLm9wdGlvbnMgfSA9IHJlcXVlc3Q7XHJcbiAgICBjb25zdCB7IG9ic2VydmUgPSBSZXN0Lk9ic2VydmUuQm9keSwgc2tpcEhhbmRsZUVycm9yIH0gPSBjb25maWc7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMoYXBpICsgcmVxdWVzdC51cmwpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQgPSB0aGlzLmdldEh0dHBDbGllbnQoY29uZmlnLnNraXBBZGRpbmdIZWFkZXIpO1xyXG4gICAgcmV0dXJuIGh0dHBDbGllbnRcclxuICAgICAgLnJlcXVlc3Q8Uj4obWV0aG9kLCB1cmwsIHtcclxuICAgICAgICBvYnNlcnZlLFxyXG4gICAgICAgIC4uLihwYXJhbXMgJiYge1xyXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLmdldFBhcmFtcyhwYXJhbXMsIGNvbmZpZy5odHRwUGFyYW1FbmNvZGVyKSxcclxuICAgICAgICB9KSxcclxuICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB9IGFzIGFueSlcclxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4gKHNraXBIYW5kbGVFcnJvciA/IHRocm93RXJyb3IoZXJyKSA6IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRIdHRwQ2xpZW50KGlzRXh0ZXJuYWw6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBpc0V4dGVybmFsID8gdGhpcy5leHRlcm5hbEh0dHAgOiB0aGlzLmh0dHA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmFtcyhwYXJhbXM6IFJlc3QuUGFyYW1zLCBlbmNvZGVyPzogSHR0cFBhcmFtZXRlckNvZGVjKTogSHR0cFBhcmFtcyB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IE9iamVjdC5lbnRyaWVzKHBhcmFtcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICBpZiAoaXNVbmRlZmluZWRPckVtcHR5U3RyaW5nKHZhbHVlKSkgcmV0dXJuIGFjYztcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsICYmICF0aGlzLm9wdGlvbnMuc2VuZE51bGxzQXNRdWVyeVBhcmFtKSByZXR1cm4gYWNjO1xyXG4gICAgICBhY2Nba2V5XSA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30gYXMgYW55KTtcclxuICAgIHJldHVybiBlbmNvZGVyXHJcbiAgICAgID8gbmV3IEh0dHBQYXJhbXMoeyBlbmNvZGVyLCBmcm9tT2JqZWN0OiBmaWx0ZXJlZFBhcmFtcyB9KVxyXG4gICAgICA6IG5ldyBIdHRwUGFyYW1zKHsgZnJvbU9iamVjdDogZmlsdGVyZWRQYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUR1cGxpY2F0ZVNsYXNoZXModXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKC8oW146XVxcLylcXC8rL2csICckMScpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
3
+ import { filter } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ export const NavigationEvent = {
7
+ Cancel: NavigationCancel,
8
+ End: NavigationEnd,
9
+ Error: NavigationError,
10
+ Start: NavigationStart,
11
+ };
12
+ class RouterEvents {
13
+ constructor(router) {
14
+ this.router = router;
15
+ }
16
+ getEvents(...eventTypes) {
17
+ const filterRouterEvents = (event) => eventTypes.some(type => event instanceof type);
18
+ return this.router.events.pipe(filter(filterRouterEvents));
19
+ }
20
+ getNavigationEvents(...navigationEventKeys) {
21
+ const filterNavigationEvents = (event) => navigationEventKeys.some(key => event instanceof NavigationEvent[key]);
22
+ return this.router.events.pipe(filter(filterNavigationEvents));
23
+ }
24
+ getAllEvents() {
25
+ return this.router.events;
26
+ }
27
+ getAllNavigationEvents() {
28
+ const keys = Object.keys(NavigationEvent);
29
+ return this.getNavigationEvents(...keys);
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RouterEvents, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RouterEvents, providedIn: 'root' }); }
33
+ }
34
+ export { RouterEvents };
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RouterEvents, decorators: [{
36
+ type: Injectable,
37
+ args: [{ providedIn: 'root' }]
38
+ }], ctorParameters: function () { return [{ type: i1.Router }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWV2ZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci1ldmVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixlQUFlLEVBQ2YsTUFBTSxFQUdQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFeEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEIsR0FBRyxFQUFFLGFBQWE7SUFDbEIsS0FBSyxFQUFFLGVBQWU7SUFDdEIsS0FBSyxFQUFFLGVBQWU7Q0FDdkIsQ0FBQztBQUVGLE1BQ2EsWUFBWTtJQUN2QixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFdEMsU0FBUyxDQUFvQyxHQUFHLFVBQWE7UUFFM0QsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQzFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUM7UUFFakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsbUJBQW1CLENBQWdDLEdBQUcsbUJBQXNCO1FBTzFFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQW9DLEVBQUUsQ0FDaEYsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQXdCLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQS9CVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOztTQUNuQixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5hdmlnYXRpb25DYW5jZWwsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBOYXZpZ2F0aW9uRXJyb3IsXHJcbiAgTmF2aWdhdGlvblN0YXJ0LFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJFdmVudCxcclxuICBFdmVudFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBjb25zdCBOYXZpZ2F0aW9uRXZlbnQgPSB7XHJcbiAgQ2FuY2VsOiBOYXZpZ2F0aW9uQ2FuY2VsLFxyXG4gIEVuZDogTmF2aWdhdGlvbkVuZCxcclxuICBFcnJvcjogTmF2aWdhdGlvbkVycm9yLFxyXG4gIFN0YXJ0OiBOYXZpZ2F0aW9uU3RhcnQsXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUm91dGVyRXZlbnRzIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxyXG5cclxuICBnZXRFdmVudHM8VCBleHRlbmRzIFJvdXRlckV2ZW50Q29uc3RydWN0b3JzPiguLi5ldmVudFR5cGVzOiBUKSB7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUm91dGVyRXZlbnRzID0gKGV2ZW50OiBFdmVudCkgPT5cclxuICAgICAgZXZlbnRUeXBlcy5zb21lKHR5cGUgPT4gZXZlbnQgaW5zdGFuY2VvZiB0eXBlKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGZpbHRlclJvdXRlckV2ZW50cykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmF2aWdhdGlvbkV2ZW50czxUIGV4dGVuZHMgTmF2aWdhdGlvbkV2ZW50S2V5cz4oLi4ubmF2aWdhdGlvbkV2ZW50S2V5czogVCkge1xyXG4gICAgdHlwZSBGaWx0ZXJlZE5hdmlnYXRpb25FdmVudCA9IFQgZXh0ZW5kcyAoaW5mZXIgS2V5KVtdXHJcbiAgICAgID8gS2V5IGV4dGVuZHMgTmF2aWdhdGlvbkV2ZW50S2V5XHJcbiAgICAgICAgPyBJbnN0YW5jZVR5cGU8TmF2aWdhdGlvbkV2ZW50VHlwZVtLZXldPlxyXG4gICAgICAgIDogbmV2ZXJcclxuICAgICAgOiBuZXZlcjtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJOYXZpZ2F0aW9uRXZlbnRzID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIEZpbHRlcmVkTmF2aWdhdGlvbkV2ZW50ID0+XHJcbiAgICAgIG5hdmlnYXRpb25FdmVudEtleXMuc29tZShrZXkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXZlbnRba2V5XSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihmaWx0ZXJOYXZpZ2F0aW9uRXZlbnRzKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxFdmVudHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTmF2aWdhdGlvbkV2ZW50cygpIHtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhOYXZpZ2F0aW9uRXZlbnQpIGFzIE5hdmlnYXRpb25FdmVudEtleXM7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROYXZpZ2F0aW9uRXZlbnRzKC4uLmtleXMpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBSb3V0ZXJFdmVudENvbnN0cnVjdG9ycyA9IFtUeXBlPFJvdXRlckV2ZW50PiwgLi4uVHlwZTxSb3V0ZXJFdmVudD5bXV07XHJcblxyXG50eXBlIE5hdmlnYXRpb25FdmVudEtleXMgPSBbTmF2aWdhdGlvbkV2ZW50S2V5LCAuLi5OYXZpZ2F0aW9uRXZlbnRLZXlbXV07XHJcblxyXG50eXBlIE5hdmlnYXRpb25FdmVudFR5cGUgPSB0eXBlb2YgTmF2aWdhdGlvbkV2ZW50O1xyXG5cclxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkV2ZW50S2V5ID0ga2V5b2YgTmF2aWdhdGlvbkV2ZW50VHlwZTtcclxuIl19
@@ -0,0 +1,52 @@
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { NavigationStart } from '@angular/router';
3
+ import { of, Subject, timer } from 'rxjs';
4
+ import { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';
5
+ import { LOADER_DELAY } from '../tokens/lodaer-delay.token';
6
+ import { InternalStore } from '../utils/internal-store-utils';
7
+ import { RouterEvents } from './router-events.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./router-events.service";
10
+ class RouterWaitService {
11
+ constructor(routerEvents, injector) {
12
+ this.routerEvents = routerEvents;
13
+ this.store = new InternalStore({ loading: false });
14
+ this.destroy$ = new Subject();
15
+ this.delay = injector.get(LOADER_DELAY, 500);
16
+ this.updateLoadingStatusOnNavigationEvents();
17
+ }
18
+ updateLoadingStatusOnNavigationEvents() {
19
+ this.routerEvents
20
+ .getAllNavigationEvents()
21
+ .pipe(map(event => event instanceof NavigationStart), switchMap(condition => condition
22
+ ? this.delay === 0
23
+ ? of(true)
24
+ : timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))
25
+ : of(false)), tap(() => this.destroy$.next()))
26
+ .subscribe(status => {
27
+ this.setLoading(status);
28
+ });
29
+ }
30
+ getLoading() {
31
+ return this.store.state.loading;
32
+ }
33
+ getLoading$() {
34
+ return this.store.sliceState(({ loading }) => loading);
35
+ }
36
+ updateLoading$() {
37
+ return this.store.sliceUpdate(({ loading }) => loading);
38
+ }
39
+ setLoading(loading) {
40
+ this.store.patch({ loading });
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RouterWaitService, deps: [{ token: i1.RouterEvents }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RouterWaitService, providedIn: 'root' }); }
44
+ }
45
+ export { RouterWaitService };
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RouterWaitService, decorators: [{
47
+ type: Injectable,
48
+ args: [{
49
+ providedIn: 'root',
50
+ }]
51
+ }], ctorParameters: function () { return [{ type: i1.RouterEvents }, { type: i0.Injector }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXdhaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItd2FpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBTXZELE1BR2EsaUJBQWlCO0lBSTVCLFlBQW9CLFlBQTBCLEVBQUUsUUFBa0I7UUFBOUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFIdEMsVUFBSyxHQUFHLElBQUksYUFBYSxDQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLHFDQUFxQztRQUMzQyxJQUFJLENBQUMsWUFBWTthQUNkLHNCQUFzQixFQUFFO2FBQ3hCLElBQUksQ0FDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLEVBQzlDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUNwQixTQUFTO1lBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNkLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDaEM7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0ExQ1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7U0FFUCxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBvZiwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBtYXBUbywgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTE9BREVSX0RFTEFZIH0gZnJvbSAnLi4vdG9rZW5zL2xvZGFlci1kZWxheS50b2tlbic7XHJcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XHJcbmltcG9ydCB7IFJvdXRlckV2ZW50cyB9IGZyb20gJy4vcm91dGVyLWV2ZW50cy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyV2FpdFN0YXRlIHtcclxuICBsb2FkaW5nOiBib29sZWFuO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUm91dGVyV2FpdFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3RvcmUgPSBuZXcgSW50ZXJuYWxTdG9yZTxSb3V0ZXJXYWl0U3RhdGU+KHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBkZWxheTogbnVtYmVyO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyRXZlbnRzOiBSb3V0ZXJFdmVudHMsIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5kZWxheSA9IGluamVjdG9yLmdldChMT0FERVJfREVMQVksIDUwMCk7XHJcbiAgICB0aGlzLnVwZGF0ZUxvYWRpbmdTdGF0dXNPbk5hdmlnYXRpb25FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTG9hZGluZ1N0YXR1c09uTmF2aWdhdGlvbkV2ZW50cygpIHtcclxuICAgIHRoaXMucm91dGVyRXZlbnRzXHJcbiAgICAgIC5nZXRBbGxOYXZpZ2F0aW9uRXZlbnRzKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcclxuICAgICAgICBzd2l0Y2hNYXAoY29uZGl0aW9uID0+XHJcbiAgICAgICAgICBjb25kaXRpb25cclxuICAgICAgICAgICAgPyB0aGlzLmRlbGF5ID09PSAwXHJcbiAgICAgICAgICAgICAgPyBvZih0cnVlKVxyXG4gICAgICAgICAgICAgIDogdGltZXIodGhpcy5kZWxheSB8fCAwKS5waXBlKG1hcFRvKHRydWUpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgIDogb2YoZmFsc2UpLFxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZGVzdHJveSQubmV4dCgpKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKHN0YXR1cyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9hZGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLmxvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBnZXRMb2FkaW5nJCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoKHsgbG9hZGluZyB9KSA9PiBsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxvYWRpbmckKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoKHsgbG9hZGluZyB9KSA9PiBsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,165 @@
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { BehaviorSubject, map } from 'rxjs';
3
+ import { OTHERS_GROUP } from '../tokens';
4
+ import { pushValueTo } from '../utils/array-utils';
5
+ import { BaseTreeNode, createTreeFromList, createGroupMap, } from '../utils/tree-utils';
6
+ import { ConfigStateService } from './config-state.service';
7
+ import { PermissionService } from './permission.service';
8
+ import * as i0 from "@angular/core";
9
+ // eslint-disable-next-line @typescript-eslint/ban-types
10
+ export class AbstractTreeService {
11
+ constructor() {
12
+ this._flat$ = new BehaviorSubject([]);
13
+ this._tree$ = new BehaviorSubject([]);
14
+ this._visible$ = new BehaviorSubject([]);
15
+ }
16
+ get flat() {
17
+ return this._flat$.value;
18
+ }
19
+ get flat$() {
20
+ return this._flat$.asObservable();
21
+ }
22
+ get tree() {
23
+ return this._tree$.value;
24
+ }
25
+ get tree$() {
26
+ return this._tree$.asObservable();
27
+ }
28
+ get visible() {
29
+ return this._visible$.value;
30
+ }
31
+ get visible$() {
32
+ return this._visible$.asObservable();
33
+ }
34
+ createTree(items) {
35
+ return createTreeFromList(items, item => item[this.id], item => item[this.parentId], item => BaseTreeNode.create(item));
36
+ }
37
+ createGroupedTree(list) {
38
+ const map = createGroupMap(list, this.othersGroup);
39
+ if (!map) {
40
+ return undefined;
41
+ }
42
+ return Array.from(map, ([key, items]) => ({ group: key, items }));
43
+ }
44
+ filterWith(setOrMap) {
45
+ return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));
46
+ }
47
+ findItemsToRemove(set) {
48
+ return this._flat$.value.reduce((acc, item) => {
49
+ if (!acc.has(item[this.parentId]))
50
+ return acc;
51
+ const childSet = new Set([item[this.id]]);
52
+ const children = this.findItemsToRemove(childSet);
53
+ return new Set([...acc, ...children]);
54
+ }, set);
55
+ }
56
+ publish(flatItems, visibleItems) {
57
+ this._flat$.next(flatItems);
58
+ this._tree$.next(this.createTree(flatItems));
59
+ this._visible$.next(this.createTree(visibleItems));
60
+ return flatItems;
61
+ }
62
+ add(items) {
63
+ const map = new Map();
64
+ items.forEach(item => map.set(item[this.id], item));
65
+ const flatItems = this.filterWith(map);
66
+ map.forEach(pushValueTo(flatItems));
67
+ flatItems.sort(this.sort);
68
+ const visibleItems = flatItems.filter(item => !this.hide(item));
69
+ return this.publish(flatItems, visibleItems);
70
+ }
71
+ find(predicate, tree = this.tree) {
72
+ return tree.reduce((acc, node) => (acc ? acc : predicate(node) ? node : this.find(predicate, node.children)), null);
73
+ }
74
+ patch(identifier, props) {
75
+ const flatItems = this._flat$.value;
76
+ const index = flatItems.findIndex(item => item[this.id] === identifier);
77
+ if (index < 0)
78
+ return false;
79
+ flatItems[index] = { ...flatItems[index], ...props };
80
+ flatItems.sort(this.sort);
81
+ const visibleItems = flatItems.filter(item => !this.hide(item));
82
+ return this.publish(flatItems, visibleItems);
83
+ }
84
+ refresh() {
85
+ return this.add([]);
86
+ }
87
+ remove(identifiers) {
88
+ const set = new Set();
89
+ identifiers.forEach(id => set.add(id));
90
+ const setToRemove = this.findItemsToRemove(set);
91
+ const flatItems = this.filterWith(setToRemove);
92
+ const visibleItems = flatItems.filter(item => !this.hide(item));
93
+ return this.publish(flatItems, visibleItems);
94
+ }
95
+ search(params, tree = this.tree) {
96
+ const searchKeys = Object.keys(params);
97
+ return tree.reduce((acc, node) => acc
98
+ ? acc
99
+ : searchKeys.every(key => node[key] === params[key])
100
+ ? node
101
+ : this.search(params, node.children), null);
102
+ }
103
+ }
104
+ class AbstractNavTreeService extends AbstractTreeService {
105
+ constructor(injector) {
106
+ super();
107
+ this.injector = injector;
108
+ this.id = 'name';
109
+ this.parentId = 'parentName';
110
+ this.hide = (item) => item.invisible || !this.isGranted(item);
111
+ this.sort = (a, b) => {
112
+ if (!Number.isInteger(a.order))
113
+ return 1;
114
+ if (!Number.isInteger(b.order))
115
+ return -1;
116
+ return a.order - b.order;
117
+ };
118
+ const configState = this.injector.get(ConfigStateService);
119
+ this.subscription = configState
120
+ .createOnUpdateStream(state => state)
121
+ .subscribe(() => this.refresh());
122
+ this.permissionService = injector.get(PermissionService);
123
+ this.othersGroup = injector.get(OTHERS_GROUP);
124
+ }
125
+ isGranted({ requiredPolicy }) {
126
+ return this.permissionService.getGrantedPolicy(requiredPolicy);
127
+ }
128
+ hasChildren(identifier) {
129
+ const node = this.find(item => item[this.id] === identifier);
130
+ return Boolean(node?.children?.length);
131
+ }
132
+ hasInvisibleChild(identifier) {
133
+ const node = this.find(item => item[this.id] === identifier);
134
+ return node?.children?.some(child => child.invisible) || false;
135
+ }
136
+ /* istanbul ignore next */
137
+ ngOnDestroy() {
138
+ this.subscription.unsubscribe();
139
+ }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbstractNavTreeService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
141
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbstractNavTreeService }); }
142
+ }
143
+ export { AbstractNavTreeService };
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbstractNavTreeService, decorators: [{
145
+ type: Injectable
146
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
147
+ class RoutesService extends AbstractNavTreeService {
148
+ hasPathOrChild(item) {
149
+ return Boolean(item.path) || this.hasChildren(item.name);
150
+ }
151
+ get groupedVisible() {
152
+ return this.createGroupedTree(this.visible.filter(item => this.hasPathOrChild(item)));
153
+ }
154
+ get groupedVisible$() {
155
+ return this.visible$.pipe(map(items => items.filter(item => this.hasPathOrChild(item))), map(visible => this.createGroupedTree(visible)));
156
+ }
157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RoutesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
158
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RoutesService, providedIn: 'root' }); }
159
+ }
160
+ export { RoutesService };
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RoutesService, decorators: [{
162
+ type: Injectable,
163
+ args: [{ providedIn: 'root' }]
164
+ }] });
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvcm91dGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBNEIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEVBR2xCLGNBQWMsR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUV6RCx3REFBd0Q7QUFDeEQsTUFBTSxPQUFnQixtQkFBbUI7SUFBekM7UUFNVSxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDdEMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUNoRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBK0g3RCxDQUFDO0lBM0hDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFD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Q2xDLENBQUM7OEdBM0NtQixzQkFBc0I7a0hBQXRCLHNCQUFzQjs7U0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRDNDLFVBQVU7O0FBK0NYLE1BQ2EsYUFBYyxTQUFRLHNCQUFpQztJQUMxRCxjQUFjLENBQUMsSUFBeUI7UUFDOUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2hELENBQUM7SUFDSixDQUFDOzhHQWRVLGFBQWE7a0hBQWIsYUFBYSxjQURBLE1BQU07O1NBQ25CLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IE9USEVSU19HUk9VUCB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IHB1c2hWYWx1ZVRvIH0gZnJvbSAnLi4vdXRpbHMvYXJyYXktdXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VUcmVlTm9kZSxcclxuICBjcmVhdGVUcmVlRnJvbUxpc3QsXHJcbiAgVHJlZU5vZGUsXHJcbiAgUm91dGVHcm91cCxcclxuICBjcmVhdGVHcm91cE1hcCxcclxufSBmcm9tICcuLi91dGlscy90cmVlLXV0aWxzJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VHJlZVNlcnZpY2U8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sXTogYW55IH0+IHtcclxuICBhYnN0cmFjdCBpZDogc3RyaW5nO1xyXG4gIGFic3RyYWN0IHBhcmVudElkOiBzdHJpbmc7XHJcbiAgYWJzdHJhY3QgaGlkZTogKGl0ZW06IFQpID0+IGJvb2xlYW47XHJcbiAgYWJzdHJhY3Qgc29ydDogKGE6IFQsIGI6IFQpID0+IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBfZmxhdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xyXG4gIHByaXZhdGUgX3RyZWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmVlTm9kZTxUPltdPihbXSk7XHJcbiAgcHJpdmF0ZSBfdmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyZWVOb2RlPFQ+W10+KFtdKTtcclxuXHJcbiAgcHJvdGVjdGVkIG90aGVyc0dyb3VwOiBzdHJpbmc7XHJcblxyXG4gIGdldCBmbGF0KCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZmxhdCQoKTogT2JzZXJ2YWJsZTxUW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9mbGF0JC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldCB0cmVlKCk6IFRyZWVOb2RlPFQ+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyZWUkLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyZWUkKCk6IE9ic2VydmFibGU8VHJlZU5vZGU8VD5bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyZWUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZpc2libGUoKTogVHJlZU5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZSQoKTogT2JzZXJ2YWJsZTxUcmVlTm9kZTxUPltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY3JlYXRlVHJlZShpdGVtczogVFtdKTogVHJlZU5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gY3JlYXRlVHJlZUZyb21MaXN0PFQsIFRyZWVOb2RlPFQ+PihcclxuICAgICAgaXRlbXMsXHJcbiAgICAgIGl0ZW0gPT4gaXRlbVt0aGlzLmlkXSxcclxuICAgICAgaXRlbSA9PiBpdGVtW3RoaXMucGFyZW50SWRdLFxyXG4gICAgICBpdGVtID0+IEJhc2VUcmVlTm9kZS5jcmVhdGUoaXRlbSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNyZWF0ZUdyb3VwZWRUcmVlKGxpc3Q6IFRyZWVOb2RlPFQ+W10pOiBSb3V0ZUdyb3VwPFQ+W10gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgbWFwID0gY3JlYXRlR3JvdXBNYXA8VD4obGlzdCwgdGhpcy5vdGhlcnNHcm91cCk7XHJcbiAgICBpZiAoIW1hcCkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBBcnJheS5mcm9tKG1hcCwgKFtrZXksIGl0ZW1zXSkgPT4gKHsgZ3JvdXA6IGtleSwgaXRlbXMgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJXaXRoKHNldE9yTWFwOiBTZXQ8c3RyaW5nPiB8IE1hcDxzdHJpbmcsIFQ+KTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9mbGF0JC52YWx1ZS5maWx0ZXIoaXRlbSA9PiAhc2V0T3JNYXAuaGFzKGl0ZW1bdGhpcy5pZF0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEl0ZW1zVG9SZW1vdmUoc2V0OiBTZXQ8c3RyaW5nPik6IFNldDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9mbGF0JC52YWx1ZS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoIWFjYy5oYXMoaXRlbVt0aGlzLnBhcmVudElkXSkpIHJldHVybiBhY2M7XHJcbiAgICAgIGNvbnN0IGNoaWxkU2V0ID0gbmV3IFNldChbaXRlbVt0aGlzLmlkXV0pO1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZmluZEl0ZW1zVG9SZW1vdmUoY2hpbGRTZXQpO1xyXG4gICAgICByZXR1cm4gbmV3IFNldChbLi4uYWNjLCAuLi5jaGlsZHJlbl0pO1xyXG4gICAgfSwgc2V0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHVibGlzaChmbGF0SXRlbXM6IFRbXSwgdmlzaWJsZUl0ZW1zOiBUW10pOiBUW10ge1xyXG4gICAgdGhpcy5fZmxhdCQubmV4dChmbGF0SXRlbXMpO1xyXG4gICAgdGhpcy5fdHJlZSQubmV4dCh0aGlzLmNyZWF0ZVRyZWUoZmxhdEl0ZW1zKSk7XHJcbiAgICB0aGlzLl92aXNpYmxlJC5uZXh0KHRoaXMuY3JlYXRlVHJlZSh2aXNpYmxlSXRlbXMpKTtcclxuICAgIHJldHVybiBmbGF0SXRlbXM7XHJcbiAgfVxyXG5cclxuICBhZGQoaXRlbXM6IFRbXSk6IFRbXSB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgVD4oKTtcclxuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiBtYXAuc2V0KGl0ZW1bdGhpcy5pZF0sIGl0ZW0pKTtcclxuXHJcbiAgICBjb25zdCBmbGF0SXRlbXMgPSB0aGlzLmZpbHRlcldpdGgobWFwKTtcclxuICAgIG1hcC5mb3JFYWNoKHB1c2hWYWx1ZVRvKGZsYXRJdGVtcykpO1xyXG5cclxuICAgIGZsYXRJdGVtcy5zb3J0KHRoaXMuc29ydCk7XHJcbiAgICBjb25zdCB2aXNpYmxlSXRlbXMgPSBmbGF0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaGlkZShpdGVtKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHVibGlzaChmbGF0SXRlbXMsIHZpc2libGVJdGVtcyk7XHJcbiAgfVxyXG5cclxuICBmaW5kKHByZWRpY2F0ZTogKGl0ZW06IFRyZWVOb2RlPFQ+KSA9PiBib29sZWFuLCB0cmVlID0gdGhpcy50cmVlKTogVHJlZU5vZGU8VD4gfCBudWxsIHtcclxuICAgIHJldHVybiB0cmVlLnJlZHVjZTxUcmVlTm9kZTxUPiB8IG51bGw+KFxyXG4gICAgICAoYWNjLCBub2RlKSA9PiAoYWNjID8gYWNjIDogcHJlZGljYXRlKG5vZGUpID8gbm9kZSA6IHRoaXMuZmluZChwcmVkaWNhdGUsIG5vZGUuY2hpbGRyZW4pKSxcclxuICAgICAgbnVsbCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwYXRjaChpZGVudGlmaWVyOiBzdHJpbmcsIHByb3BzOiBQYXJ0aWFsPFQ+KTogVFtdIHwgZmFsc2Uge1xyXG4gICAgY29uc3QgZmxhdEl0ZW1zID0gdGhpcy5fZmxhdCQudmFsdWU7XHJcbiAgICBjb25zdCBpbmRleCA9IGZsYXRJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtW3RoaXMuaWRdID09PSBpZGVudGlmaWVyKTtcclxuICAgIGlmIChpbmRleCA8IDApIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBmbGF0SXRlbXNbaW5kZXhdID0geyAuLi5mbGF0SXRlbXNbaW5kZXhdLCAuLi5wcm9wcyB9O1xyXG5cclxuICAgIGZsYXRJdGVtcy5zb3J0KHRoaXMuc29ydCk7XHJcbiAgICBjb25zdCB2aXNpYmxlSXRlbXMgPSBmbGF0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaGlkZShpdGVtKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHVibGlzaChmbGF0SXRlbXMsIHZpc2libGVJdGVtcyk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGQoW10pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGlkZW50aWZpZXJzOiBzdHJpbmdbXSk6IFRbXSB7XHJcbiAgICBjb25zdCBzZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGlkZW50aWZpZXJzLmZvckVhY2goaWQgPT4gc2V0LmFkZChpZCkpO1xyXG5cclxuICAgIGNvbnN0IHNldFRvUmVtb3ZlID0gdGhpcy5maW5kSXRlbXNUb1JlbW92ZShzZXQpO1xyXG4gICAgY29uc3QgZmxhdEl0ZW1zID0gdGhpcy5maWx0ZXJXaXRoKHNldFRvUmVtb3ZlKTtcclxuICAgIGNvbnN0IHZpc2libGVJdGVtcyA9IGZsYXRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhdGhpcy5oaWRlKGl0ZW0pKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoKGZsYXRJdGVtcywgdmlzaWJsZUl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChwYXJhbXM6IFBhcnRpYWw8VD4sIHRyZWUgPSB0aGlzLnRyZWUpOiBUcmVlTm9kZTxUPiB8IG51bGwge1xyXG4gICAgY29uc3Qgc2VhcmNoS2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcykgYXMgQXJyYXk8a2V5b2YgUGFydGlhbDxUPj47XHJcblxyXG4gICAgcmV0dXJuIHRyZWUucmVkdWNlPFRyZWVOb2RlPFQ+IHwgbnVsbD4oXHJcbiAgICAgIChhY2MsIG5vZGUpID0+XHJcbiAgICAgICAgYWNjXHJcbiAgICAgICAgICA/IGFjY1xyXG4gICAgICAgICAgOiBzZWFyY2hLZXlzLmV2ZXJ5KGtleSA9PiBub2RlW2tleV0gPT09IHBhcmFtc1trZXldKVxyXG4gICAgICAgICAgPyBub2RlXHJcbiAgICAgICAgICA6IHRoaXMuc2VhcmNoKHBhcmFtcywgbm9kZS5jaGlsZHJlbiksXHJcbiAgICAgIG51bGwsXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3ROYXZUcmVlU2VydmljZTxUIGV4dGVuZHMgQUJQLk5hdj5cclxuICBleHRlbmRzIEFic3RyYWN0VHJlZVNlcnZpY2U8VD5cclxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxyXG57XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZTtcclxuICByZWFkb25seSBpZCA9ICduYW1lJztcclxuICByZWFkb25seSBwYXJlbnRJZCA9ICdwYXJlbnROYW1lJztcclxuICByZWFkb25seSBoaWRlID0gKGl0ZW06IFQpID0+IGl0ZW0uaW52aXNpYmxlIHx8ICF0aGlzLmlzR3JhbnRlZChpdGVtKTtcclxuICByZWFkb25seSBzb3J0ID0gKGE6IFQsIGI6IFQpID0+IHtcclxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihhLm9yZGVyKSkgcmV0dXJuIDE7XHJcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoYi5vcmRlcikpIHJldHVybiAtMTtcclxuXHJcbiAgICByZXR1cm4gKGEub3JkZXIgYXMgbnVtYmVyKSAtIChiLm9yZGVyIGFzIG51bWJlcik7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGNvbnN0IGNvbmZpZ1N0YXRlID0gdGhpcy5pbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gY29uZmlnU3RhdGVcclxuICAgICAgLmNyZWF0ZU9uVXBkYXRlU3RyZWFtKHN0YXRlID0+IHN0YXRlKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVmcmVzaCgpKTtcclxuICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoUGVybWlzc2lvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5vdGhlcnNHcm91cCA9IGluamVjdG9yLmdldChPVEhFUlNfR1JPVVApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzR3JhbnRlZCh7IHJlcXVpcmVkUG9saWN5IH06IFQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmdldEdyYW50ZWRQb2xpY3kocmVxdWlyZWRQb2xpY3kpO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGRyZW4oaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLmlkXSA9PT0gaWRlbnRpZmllcik7XHJcbiAgICByZXR1cm4gQm9vbGVhbihub2RlPy5jaGlsZHJlbj8ubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIGhhc0ludmlzaWJsZUNoaWxkKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZChpdGVtID0+IGl0ZW1bdGhpcy5pZF0gPT09IGlkZW50aWZpZXIpO1xyXG4gICAgcmV0dXJuIG5vZGU/LmNoaWxkcmVuPy5zb21lKGNoaWxkID0+IGNoaWxkLmludmlzaWJsZSkgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXNTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3ROYXZUcmVlU2VydmljZTxBQlAuUm91dGU+IHtcclxuICBwcml2YXRlIGhhc1BhdGhPckNoaWxkKGl0ZW06IFRyZWVOb2RlPEFCUC5Sb3V0ZT4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBCb29sZWFuKGl0ZW0ucGF0aCkgfHwgdGhpcy5oYXNDaGlsZHJlbihpdGVtLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyb3VwZWRWaXNpYmxlKCk6IFJvdXRlR3JvdXA8QUJQLlJvdXRlPltdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUdyb3VwZWRUcmVlKHRoaXMudmlzaWJsZS5maWx0ZXIoaXRlbSA9PiB0aGlzLmhhc1BhdGhPckNoaWxkKGl0ZW0pKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JvdXBlZFZpc2libGUkKCk6IE9ic2VydmFibGU8Um91dGVHcm91cDxBQlAuUm91dGU+W10gfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnZpc2libGUkLnBpcGUoXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiB0aGlzLmhhc1BhdGhPckNoaWxkKGl0ZW0pKSksXHJcbiAgICAgIG1hcCh2aXNpYmxlID0+IHRoaXMuY3JlYXRlR3JvdXBlZFRyZWUodmlzaWJsZSkpLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,81 @@
1
+ import { Injectable } from '@angular/core';
2
+ import compare from 'just-compare';
3
+ import { filter, take } from 'rxjs/operators';
4
+ import { InternalStore } from '../utils/internal-store-utils';
5
+ import { ConfigStateService } from './config-state.service';
6
+ import { AbpLocalStorageService } from './local-storage.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./config-state.service";
9
+ import * as i2 from "./local-storage.service";
10
+ class SessionStateService {
11
+ constructor(configState, localStorageService) {
12
+ this.configState = configState;
13
+ this.localStorageService = localStorageService;
14
+ this.store = new InternalStore({});
15
+ this.updateLocalStorage = () => {
16
+ this.localStorageService.setItem('abpSession', JSON.stringify(this.store.state));
17
+ };
18
+ this.init();
19
+ this.setInitialLanguage();
20
+ }
21
+ init() {
22
+ const session = this.localStorageService.getItem('abpSession');
23
+ if (session) {
24
+ this.store.set(JSON.parse(session));
25
+ }
26
+ this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);
27
+ }
28
+ setInitialLanguage() {
29
+ const appLanguage = this.getLanguage();
30
+ this.configState
31
+ .getDeep$('localization.currentCulture.cultureName')
32
+ .pipe(filter(cultureName => !!cultureName), take(1))
33
+ .subscribe(lang => {
34
+ if (lang.includes(';')) {
35
+ lang = lang.split(';')[0];
36
+ }
37
+ if (appLanguage !== lang) {
38
+ this.setLanguage(lang);
39
+ }
40
+ });
41
+ }
42
+ onLanguageChange$() {
43
+ return this.store.sliceUpdate(state => state.language);
44
+ }
45
+ onTenantChange$() {
46
+ return this.store.sliceUpdate(state => state.tenant);
47
+ }
48
+ getLanguage() {
49
+ return this.store.state.language;
50
+ }
51
+ getLanguage$() {
52
+ return this.store.sliceState(state => state.language);
53
+ }
54
+ getTenant() {
55
+ return this.store.state.tenant;
56
+ }
57
+ getTenant$() {
58
+ return this.store.sliceState(state => state.tenant);
59
+ }
60
+ setTenant(tenant) {
61
+ if (compare(tenant, this.store.state.tenant))
62
+ return;
63
+ this.store.set({ ...this.store.state, tenant });
64
+ }
65
+ setLanguage(language) {
66
+ if (language === this.store.state.language)
67
+ return;
68
+ this.store.patch({ language });
69
+ document.documentElement.setAttribute('lang', language);
70
+ }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SessionStateService, deps: [{ token: i1.ConfigStateService }, { token: i2.AbpLocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
72
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SessionStateService, providedIn: 'root' }); }
73
+ }
74
+ export { SessionStateService };
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SessionStateService, decorators: [{
76
+ type: Injectable,
77
+ args: [{
78
+ providedIn: 'root',
79
+ }]
80
+ }], ctorParameters: function () { return [{ type: i1.ConfigStateService }, { type: i2.AbpLocalStorageService }]; } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Nlc3Npb24tc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUVqRSxNQUdhLG1CQUFtQjtJQU85QixZQUNVLFdBQStCLEVBQy9CLG1CQUEyQztRQUQzQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQVJwQyxVQUFLLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBbUIsQ0FBQyxDQUFDO1FBRXhELHVCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUM7UUFNQSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sSUFBSTtRQUNWLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFB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aW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvc2Vzc2lvbic7XHJcbmltcG9ydCB7IEN1cnJlbnRUZW5hbnREdG8gfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL211bHRpLXRlbmFuY3kvbW9kZWxzJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFicExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2Vzc2lvblN0YXRlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlKHt9IGFzIFNlc3Npb24uU3RhdGUpO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZUxvY2FsU3RvcmFnZSA9ICgpID0+IHtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRJdGVtKCdhYnBTZXNzaW9uJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZS5zdGF0ZSkpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKCdhYnBTZXNzaW9uJyk7XHJcbiAgICBpZiAoc2Vzc2lvbikge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldChKU09OLnBhcnNlKHNlc3Npb24pKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlKHN0YXRlID0+IHN0YXRlKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbFN0b3JhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbml0aWFsTGFuZ3VhZ2UoKSB7XHJcbiAgICBjb25zdCBhcHBMYW5ndWFnZSA9IHRoaXMuZ2V0TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ1N0YXRlXHJcbiAgICAgIC5nZXREZWVwJCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmN1bHR1cmVOYW1lJylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKGN1bHR1cmVOYW1lID0+ICEhY3VsdHVyZU5hbWUpLFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShsYW5nID0+IHtcclxuICAgICAgICBpZiAobGFuZy5pbmNsdWRlcygnOycpKSB7XHJcbiAgICAgICAgICBsYW5nID0gbGFuZy5zcGxpdCgnOycpWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXBwTGFuZ3VhZ2UgIT09IGxhbmcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UobGFuZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUubGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgb25UZW5hbnRDaGFuZ2UkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUudGVuYW50KTtcclxuICB9XHJcblxyXG4gIGdldExhbmd1YWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUubGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBnZXRMYW5ndWFnZSQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLmxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIGdldFRlbmFudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLnRlbmFudDtcclxuICB9XHJcblxyXG4gIGdldFRlbmFudCQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLnRlbmFudCk7XHJcbiAgfVxyXG5cclxuICBzZXRUZW5hbnQodGVuYW50OiBDdXJyZW50VGVuYW50RHRvIHwgbnVsbCkge1xyXG4gICAgaWYgKGNvbXBhcmUodGVuYW50LCB0aGlzLnN0b3JlLnN0YXRlLnRlbmFudCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnN0b3JlLnNldCh7IC4uLnRoaXMuc3RvcmUuc3RhdGUsIHRlbmFudCB9KTtcclxuICB9XHJcblxyXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIGlmIChsYW5ndWFnZSA9PT0gdGhpcy5zdG9yZS5zdGF0ZS5sYW5ndWFnZSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyBsYW5ndWFnZSB9KTtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2xhbmcnLCBsYW5ndWFnZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ class SubscriptionService {
5
+ constructor() {
6
+ this.subscription = new Subscription();
7
+ }
8
+ get isClosed() {
9
+ return this.subscription.closed;
10
+ }
11
+ addOne(source$, nextOrObserver, error) {
12
+ const subscription = source$.subscribe(nextOrObserver, error);
13
+ this.subscription.add(subscription);
14
+ return subscription;
15
+ }
16
+ closeAll() {
17
+ this.subscription.unsubscribe();
18
+ }
19
+ closeOne(subscription) {
20
+ this.removeOne(subscription);
21
+ if (subscription) {
22
+ subscription.unsubscribe();
23
+ }
24
+ }
25
+ ngOnDestroy() {
26
+ this.subscription.unsubscribe();
27
+ }
28
+ removeOne(subscription) {
29
+ if (!subscription)
30
+ return;
31
+ this.subscription.remove(subscription);
32
+ }
33
+ reset() {
34
+ this.subscription.unsubscribe();
35
+ this.subscription = new Subscription();
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SubscriptionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SubscriptionService }); }
39
+ }
40
+ export { SubscriptionService };
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SubscriptionService, decorators: [{
42
+ type: Injectable
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVwQyxNQUNhLG1CQUFtQjtJQURoQztRQUVVLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQThDM0M7SUE1Q0MsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBUUQsTUFBTSxDQUNKLE9BQXNCLEVBQ3RCLGNBQTZDLEVBQzdDLEtBQTRCO1FBRTVCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxZQUE2QztRQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLElBQUksWUFBWSxFQUFFO1lBQ2hCLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFlBQTZDO1FBQ3JELElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7OEdBOUNVLG1CQUFtQjtrSEFBbkIsbUJBQW1COztTQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlLCBQYXJ0aWFsT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgZ2V0IGlzQ2xvc2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9uLmNsb3NlZDtcclxuICB9XHJcblxyXG4gIGFkZE9uZTxUPihcclxuICAgIHNvdXJjZSQ6IE9ic2VydmFibGU8VD4sXHJcbiAgICBuZXh0PzogKHZhbHVlOiBUKSA9PiB2b2lkLFxyXG4gICAgZXJyb3I/OiAoZXJyb3I6IGFueSkgPT4gdm9pZCxcclxuICApOiBTdWJzY3JpcHRpb247XHJcbiAgYWRkT25lPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4sIG9ic2VydmVyPzogUGFydGlhbE9ic2VydmVyPFQ+KTogU3Vic2NyaXB0aW9uO1xyXG4gIGFkZE9uZTxUPihcclxuICAgIHNvdXJjZSQ6IE9ic2VydmFibGU8VD4sXHJcbiAgICBuZXh0T3JPYnNlcnZlcj86IFBhcnRpYWxPYnNlcnZlcjxUPiB8IE5leHQ8VD4sXHJcbiAgICBlcnJvcj86IChlcnJvcjogYW55KSA9PiB2b2lkLFxyXG4gICk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBzb3VyY2UkLnN1YnNjcmliZShuZXh0T3JPYnNlcnZlciBhcyBOZXh0PFQ+LCBlcnJvcik7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoc3Vic2NyaXB0aW9uKTtcclxuICAgIHJldHVybiBzdWJzY3JpcHRpb247XHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU9uZShzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIHRoaXMucmVtb3ZlT25lKHN1YnNjcmlwdGlvbik7XHJcbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlT25lKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgaWYgKCFzdWJzY3JpcHRpb24pIHJldHVybjtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnJlbW92ZShzdWJzY3JpcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG59XHJcblxyXG50eXBlIE5leHQ8VD4gPSAodmFsdWU6IFQpID0+IHZvaWQ7XHJcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const trackBy = (key) => (_, item) => item[key];
4
+ export const trackByDeep = (
5
+ // eslint-disable-next-line @typescript-eslint/ban-types
6
+ ...keys) => (_, item) => keys.reduce((acc, key) => acc[key], item);
7
+ class TrackByService {
8
+ constructor() {
9
+ this.by = trackBy;
10
+ this.byDeep = trackByDeep;
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: TrackByService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: TrackByService, providedIn: 'root' }); }
14
+ }
15
+ export { TrackByService };
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: TrackByService, decorators: [{
17
+ type: Injectable,
18
+ args: [{
19
+ providedIn: 'root',
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2stYnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy90cmFjay1ieS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW1CLE1BQU0sZUFBZSxDQUFDOztBQUc1RCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQ2xCLENBQVUsR0FBWSxFQUFzQixFQUFFLENBQzlDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRWQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUN0QjtBQUNFLHdEQUF3RDtBQUN4RCxHQUFHLElBQTJDLEVBQzFCLEVBQUUsQ0FDeEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDVixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTlDLE1BR2EsY0FBYztJQUgzQjtRQUlFLE9BQUUsR0FBRyxPQUFPLENBQUM7UUFFYixXQUFNLEdBQUcsV0FBVyxDQUFDO0tBQ3RCOzhHQUpZLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07O1NBRVAsY0FBYzsyRkFBZCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFRyYWNrQnlGdW5jdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPIH0gZnJvbSAndHMtdG9vbGJlbHQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyYWNrQnkgPVxyXG4gIDxUID0gYW55PihrZXk6IGtleW9mIFQpOiBUcmFja0J5RnVuY3Rpb248VD4gPT5cclxuICAoXywgaXRlbSkgPT5cclxuICAgIGl0ZW1ba2V5XTtcclxuXHJcbmV4cG9ydCBjb25zdCB0cmFja0J5RGVlcCA9XHJcbiAgPFQgPSBhbnk+KFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcclxuICAgIC4uLmtleXM6IFQgZXh0ZW5kcyBvYmplY3QgPyBPLlBhdGhzPFQ+IDogbmV2ZXJcclxuICApOiBUcmFja0J5RnVuY3Rpb248VD4gPT5cclxuICAoXywgaXRlbSkgPT5cclxuICAgIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4gYWNjW2tleV0sIGl0ZW0pO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWNrQnlTZXJ2aWNlPEl0ZW1UeXBlID0gYW55PiB7XHJcbiAgYnkgPSB0cmFja0J5O1xyXG5cclxuICBieURlZXAgPSB0cmFja0J5RGVlcDtcclxufVxyXG4iXX0=