@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
@@ -1,49 +1,49 @@
1
- // This will not be necessary when only Angukar 9.1+ is supported
2
- export function getLocaleDirection(locale) {
3
- return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(locale)
4
- ? 'rtl'
5
- : 'ltr';
6
- }
7
- export function createLocalizer(localization) {
8
- return (resourceName, key, defaultValue) => {
9
- if (resourceName === '_')
10
- return key;
11
- const resource = localization?.values?.[resourceName];
12
- if (!resource)
13
- return defaultValue;
14
- return resource[key] || defaultValue;
15
- };
16
- }
17
- export function createLocalizerWithFallback(localization) {
18
- const findLocalization = createLocalizationFinder(localization);
19
- return (resourceNames, keys, defaultValue) => {
20
- const { localized } = findLocalization(resourceNames, keys);
21
- return localized || defaultValue;
22
- };
23
- }
24
- export function createLocalizationPipeKeyGenerator(localization) {
25
- const findLocalization = createLocalizationFinder(localization);
26
- return (resourceNames, keys, defaultKey) => {
27
- const { resourceName, key } = findLocalization(resourceNames, keys);
28
- return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;
29
- };
30
- }
31
- function createLocalizationFinder(localization) {
32
- const localize = createLocalizer(localization);
33
- return (resourceNames, keys) => {
34
- resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);
35
- const resourceCount = resourceNames.length;
36
- const keyCount = keys.length;
37
- for (let i = 0; i < resourceCount; i++) {
38
- const resourceName = resourceNames[i];
39
- for (let j = 0; j < keyCount; j++) {
40
- const key = keys[j];
41
- const localized = localize(resourceName, key, null);
42
- if (localized)
43
- return { resourceName, key, localized };
44
- }
45
- }
46
- return { resourceName: undefined, key: undefined, localized: undefined };
47
- };
48
- }
1
+ // This will not be necessary when only Angukar 9.1+ is supported
2
+ export function getLocaleDirection(locale) {
3
+ return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(locale)
4
+ ? 'rtl'
5
+ : 'ltr';
6
+ }
7
+ export function createLocalizer(localization) {
8
+ return (resourceName, key, defaultValue) => {
9
+ if (resourceName === '_')
10
+ return key;
11
+ const resource = localization?.values?.[resourceName];
12
+ if (!resource)
13
+ return defaultValue;
14
+ return resource[key] || defaultValue;
15
+ };
16
+ }
17
+ export function createLocalizerWithFallback(localization) {
18
+ const findLocalization = createLocalizationFinder(localization);
19
+ return (resourceNames, keys, defaultValue) => {
20
+ const { localized } = findLocalization(resourceNames, keys);
21
+ return localized || defaultValue;
22
+ };
23
+ }
24
+ export function createLocalizationPipeKeyGenerator(localization) {
25
+ const findLocalization = createLocalizationFinder(localization);
26
+ return (resourceNames, keys, defaultKey) => {
27
+ const { resourceName, key } = findLocalization(resourceNames, keys);
28
+ return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;
29
+ };
30
+ }
31
+ function createLocalizationFinder(localization) {
32
+ const localize = createLocalizer(localization);
33
+ return (resourceNames, keys) => {
34
+ resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);
35
+ const resourceCount = resourceNames.length;
36
+ const keyCount = keys.length;
37
+ for (let i = 0; i < resourceCount; i++) {
38
+ const resourceName = resourceNames[i];
39
+ for (let j = 0; j < keyCount; j++) {
40
+ const key = keys[j];
41
+ const localized = localize(resourceName, key, null);
42
+ if (localized)
43
+ return { resourceName, key, localized };
44
+ }
45
+ }
46
+ return { resourceName: undefined, key: undefined, localized: undefined };
47
+ };
48
+ }
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2xvY2FsaXphdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpRUFBaUU7QUFDakUsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxzR0FBc0csQ0FBQyxJQUFJLENBQ2hILE1BQU0sQ0FDUDtRQUNDLENBQUMsQ0FBQyxLQUFLO1FBQ1AsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFlBQXFEO0lBQ25GLE9BQU8sQ0FBQyxZQUFvQixFQUFFLEdBQVcsRUFBRSxZQUEyQixFQUFFLEVBQUU7UUFDeEUsSUFBSSxZQUFZLEtBQUssR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRXJDLE1BQU0sUUFBUSxHQUFHLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sWUFBWSxDQUFDO1FBRW5DLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUN2QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFlBQXFEO0lBQy9GLE1BQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFaEUsT0FBTyxDQUFDLGFBQXVCLEVBQUUsSUFBYyxFQUFFLFlBQW9CLEVBQUUsRUFBRTtRQUN2RSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sU0FBUyxJQUFJLFlBQVksQ0FBQztJQUNuQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxZQUFxRDtJQUVyRCxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRWhFLE9BQU8sQ0FBQyxhQUF1QixFQUFFLElBQWMsRUFBRSxVQUE4QixFQUFFLEVBQUU7UUFDakYsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzdGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLFlBQXFEO0lBQ3JGLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUvQyxPQUFPLENBQUMsYUFBdUIsRUFBRSxJQUFjLEVBQUUsRUFBRTtRQUNqRCxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdGLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFNBQVM7b0JBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDeEQ7U0FDRjtRQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzNFLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkxvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb25EdG8gfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25zL21vZGVscyc7XHJcblxyXG4vLyBUaGlzIHdpbGwgbm90IGJlIG5lY2Vzc2FyeSB3aGVuIG9ubHkgQW5ndWthciA5LjErIGlzIHN1cHBvcnRlZFxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxlRGlyZWN0aW9uKGxvY2FsZTogc3RyaW5nKTogJ2x0cicgfCAncnRsJyB7XHJcbiAgcmV0dXJuIC9eKGFyKC1bQS1aXXsyfSk/fGNrYigtSVIpP3xmYSgtQUYpP3xoZXxrc3xscmMoLUlRKT98bXpufHBhLUFyYWJ8cHMoLVBLKT98c2R8dWd8dXIoLUlOKT98dXotQXJhYnx5aSkkLy50ZXN0KFxyXG4gICAgbG9jYWxlLFxyXG4gIClcclxuICAgID8gJ3J0bCdcclxuICAgIDogJ2x0cic7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2NhbGl6ZXIobG9jYWxpemF0aW9uOiBBcHBsaWNhdGlvbkxvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb25EdG8pIHtcclxuICByZXR1cm4gKHJlc291cmNlTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB7XHJcbiAgICBpZiAocmVzb3VyY2VOYW1lID09PSAnXycpIHJldHVybiBrZXk7XHJcblxyXG4gICAgY29uc3QgcmVzb3VyY2UgPSBsb2NhbGl6YXRpb24/LnZhbHVlcz8uW3Jlc291cmNlTmFtZV07XHJcblxyXG4gICAgaWYgKCFyZXNvdXJjZSkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuXHJcbiAgICByZXR1cm4gcmVzb3VyY2Vba2V5XSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvY2FsaXplcldpdGhGYWxsYmFjayhsb2NhbGl6YXRpb246IEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbkR0bykge1xyXG4gIGNvbnN0IGZpbmRMb2NhbGl6YXRpb24gPSBjcmVhdGVMb2NhbGl6YXRpb25GaW5kZXIobG9jYWxpemF0aW9uKTtcclxuXHJcbiAgcmV0dXJuIChyZXNvdXJjZU5hbWVzOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10sIGRlZmF1bHRWYWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB7IGxvY2FsaXplZCB9ID0gZmluZExvY2FsaXphdGlvbihyZXNvdXJjZU5hbWVzLCBrZXlzKTtcclxuICAgIHJldHVybiBsb2NhbGl6ZWQgfHwgZGVmYXVsdFZhbHVlO1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2NhbGl6YXRpb25QaXBlS2V5R2VuZXJhdG9yKFxyXG4gIGxvY2FsaXphdGlvbjogQXBwbGljYXRpb25Mb2NhbGl6YXRpb25Db25maWd1cmF0aW9uRHRvLFxyXG4pIHtcclxuICBjb25zdCBmaW5kTG9jYWxpemF0aW9uID0gY3JlYXRlTG9jYWxpemF0aW9uRmluZGVyKGxvY2FsaXphdGlvbik7XHJcblxyXG4gIHJldHVybiAocmVzb3VyY2VOYW1lczogc3RyaW5nW10sIGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0S2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIGNvbnN0IHsgcmVzb3VyY2VOYW1lLCBrZXkgfSA9IGZpbmRMb2NhbGl6YXRpb24ocmVzb3VyY2VOYW1lcywga2V5cyk7XHJcbiAgICByZXR1cm4gIXJlc291cmNlTmFtZSA/IGRlZmF1bHRLZXkgOiByZXNvdXJjZU5hbWUgPT09ICdfJyA/IGtleSA6IGAke3Jlc291cmNlTmFtZX06OiR7a2V5fWA7XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlTG9jYWxpemF0aW9uRmluZGVyKGxvY2FsaXphdGlvbjogQXBwbGljYXRpb25Mb2NhbGl6YXRpb25Db25maWd1cmF0aW9uRHRvKSB7XHJcbiAgY29uc3QgbG9jYWxpemUgPSBjcmVhdGVMb2NhbGl6ZXIobG9jYWxpemF0aW9uKTtcclxuXHJcbiAgcmV0dXJuIChyZXNvdXJjZU5hbWVzOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10pID0+IHtcclxuICAgIHJlc291cmNlTmFtZXMgPSByZXNvdXJjZU5hbWVzLmNvbmNhdChsb2NhbGl6YXRpb24uZGVmYXVsdFJlc291cmNlTmFtZSB8fCAnJykuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgIGNvbnN0IHJlc291cmNlQ291bnQgPSByZXNvdXJjZU5hbWVzLmxlbmd0aDtcclxuICAgIGNvbnN0IGtleUNvdW50ID0ga2V5cy5sZW5ndGg7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZUNvdW50OyBpKyspIHtcclxuICAgICAgY29uc3QgcmVzb3VyY2VOYW1lID0gcmVzb3VyY2VOYW1lc1tpXTtcclxuXHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwga2V5Q291bnQ7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbal07XHJcbiAgICAgICAgY29uc3QgbG9jYWxpemVkID0gbG9jYWxpemUocmVzb3VyY2VOYW1lLCBrZXksIG51bGwpO1xyXG4gICAgICAgIGlmIChsb2NhbGl6ZWQpIHJldHVybiB7IHJlc291cmNlTmFtZSwga2V5LCBsb2NhbGl6ZWQgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IHJlc291cmNlTmFtZTogdW5kZWZpbmVkLCBrZXk6IHVuZGVmaW5lZCwgbG9jYWxpemVkOiB1bmRlZmluZWQgfTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,81 +1,81 @@
1
- import clone from 'just-clone';
2
- import { tap } from 'rxjs/operators';
3
- import { EnvironmentService } from '../services/environment.service';
4
- import { MultiTenancyService } from '../services/multi-tenancy.service';
5
- import { createTokenParser } from './string-utils';
6
- const tenancyPlaceholder = '{0}';
7
- function getCurrentTenancyName(appBaseUrl) {
8
- if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/')
9
- appBaseUrl += '/';
10
- const parseTokens = createTokenParser(appBaseUrl);
11
- const token = tenancyPlaceholder.replace(/[}{]/g, '');
12
- return parseTokens(window.location.href)[token]?.[0];
13
- }
14
- function getCurrentTenancyNameFromUrl(tenantKey) {
15
- const urlParams = new URLSearchParams(window.location.search);
16
- return urlParams.get(tenantKey);
17
- }
18
- export async function parseTenantFromUrl(injector) {
19
- const environmentService = injector.get(EnvironmentService);
20
- const multiTenancyService = injector.get(MultiTenancyService);
21
- const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';
22
- const tenancyName = getCurrentTenancyName(baseUrl);
23
- const hideTenantBox = () => {
24
- multiTenancyService.isTenantBoxVisible = false;
25
- };
26
- const setDomainTenant = (tenant) => {
27
- multiTenancyService.domainTenant = {
28
- id: tenant.tenantId,
29
- name: tenant.name,
30
- isAvailable: true,
31
- };
32
- };
33
- const setEnvironmentWithDomainTenant = (tenant) => {
34
- hideTenantBox();
35
- setDomainTenant(tenant);
36
- };
37
- if (tenancyName) {
38
- /**
39
- * We have to replace tenant name within the urls from environment,
40
- * because the code below will make a http request to find information about the domain tenant.
41
- * Before this request takes place, we need to replace placeholders aka "{0}".
42
- */
43
- replaceTenantNameWithinEnvironment(injector, tenancyName);
44
- return multiTenancyService
45
- .setTenantByName(tenancyName)
46
- .pipe(tap(setEnvironmentWithDomainTenant))
47
- .toPromise();
48
- }
49
- else {
50
- /**
51
- * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.
52
- */
53
- replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');
54
- const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey);
55
- if (tenantIdFromQueryParams) {
56
- return multiTenancyService.setTenantById(tenantIdFromQueryParams).toPromise();
57
- }
58
- }
59
- return Promise.resolve();
60
- }
61
- function replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder = tenancyPlaceholder) {
62
- const environmentService = injector.get(EnvironmentService);
63
- const environment = clone(environmentService.getEnvironment());
64
- if (environment.application.baseUrl) {
65
- environment.application.baseUrl = environment.application.baseUrl.replace(placeholder, tenancyName);
66
- }
67
- if (environment.oAuthConfig?.redirectUri) {
68
- environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(placeholder, tenancyName);
69
- }
70
- if (!environment.oAuthConfig) {
71
- environment.oAuthConfig = {};
72
- }
73
- environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(placeholder, tenancyName);
74
- Object.keys(environment.apis).forEach(api => {
75
- Object.keys(environment.apis[api]).forEach(key => {
76
- environment.apis[api][key] = (environment.apis[api][key] || '').replace(placeholder, tenancyName);
77
- });
78
- });
79
- return environmentService.setState(environment);
80
- }
1
+ import clone from 'just-clone';
2
+ import { tap } from 'rxjs/operators';
3
+ import { EnvironmentService } from '../services/environment.service';
4
+ import { MultiTenancyService } from '../services/multi-tenancy.service';
5
+ import { createTokenParser } from './string-utils';
6
+ const tenancyPlaceholder = '{0}';
7
+ function getCurrentTenancyName(appBaseUrl) {
8
+ if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/')
9
+ appBaseUrl += '/';
10
+ const parseTokens = createTokenParser(appBaseUrl);
11
+ const token = tenancyPlaceholder.replace(/[}{]/g, '');
12
+ return parseTokens(window.location.href)[token]?.[0];
13
+ }
14
+ function getCurrentTenancyNameFromUrl(tenantKey) {
15
+ const urlParams = new URLSearchParams(window.location.search);
16
+ return urlParams.get(tenantKey);
17
+ }
18
+ export async function parseTenantFromUrl(injector) {
19
+ const environmentService = injector.get(EnvironmentService);
20
+ const multiTenancyService = injector.get(MultiTenancyService);
21
+ const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';
22
+ const tenancyName = getCurrentTenancyName(baseUrl);
23
+ const hideTenantBox = () => {
24
+ multiTenancyService.isTenantBoxVisible = false;
25
+ };
26
+ const setDomainTenant = (tenant) => {
27
+ multiTenancyService.domainTenant = {
28
+ id: tenant.tenantId,
29
+ name: tenant.name,
30
+ isAvailable: true,
31
+ };
32
+ };
33
+ const setEnvironmentWithDomainTenant = (tenant) => {
34
+ hideTenantBox();
35
+ setDomainTenant(tenant);
36
+ };
37
+ if (tenancyName) {
38
+ /**
39
+ * We have to replace tenant name within the urls from environment,
40
+ * because the code below will make a http request to find information about the domain tenant.
41
+ * Before this request takes place, we need to replace placeholders aka "{0}".
42
+ */
43
+ replaceTenantNameWithinEnvironment(injector, tenancyName);
44
+ return multiTenancyService
45
+ .setTenantByName(tenancyName)
46
+ .pipe(tap(setEnvironmentWithDomainTenant))
47
+ .toPromise();
48
+ }
49
+ else {
50
+ /**
51
+ * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.
52
+ */
53
+ replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');
54
+ const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey);
55
+ if (tenantIdFromQueryParams) {
56
+ return multiTenancyService.setTenantById(tenantIdFromQueryParams).toPromise();
57
+ }
58
+ }
59
+ return Promise.resolve();
60
+ }
61
+ function replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder = tenancyPlaceholder) {
62
+ const environmentService = injector.get(EnvironmentService);
63
+ const environment = clone(environmentService.getEnvironment());
64
+ if (environment.application.baseUrl) {
65
+ environment.application.baseUrl = environment.application.baseUrl.replace(placeholder, tenancyName);
66
+ }
67
+ if (environment.oAuthConfig?.redirectUri) {
68
+ environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(placeholder, tenancyName);
69
+ }
70
+ if (!environment.oAuthConfig) {
71
+ environment.oAuthConfig = {};
72
+ }
73
+ environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(placeholder, tenancyName);
74
+ Object.keys(environment.apis).forEach(api => {
75
+ Object.keys(environment.apis[api]).forEach(key => {
76
+ environment.apis[api][key] = (environment.apis[api][key] || '').replace(placeholder, tenancyName);
77
+ });
78
+ });
79
+ return environmentService.setState(environment);
80
+ }
81
81
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGVuYW5jeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9tdWx0aS10ZW5hbmN5LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUUvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7QUFFakMsU0FBUyxxQkFBcUIsQ0FBQyxVQUFrQjtJQUMvQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHO1FBQUUsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUV4RSxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBUyw0QkFBNEIsQ0FBQyxTQUFpQjtJQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxRQUFrQjtJQUN6RCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1RCxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUU5RCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoRixNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVuRCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDekIsbUJBQW1CLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ2pELENBQUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBMkIsRUFBRSxFQUFFO1FBQ3RELG1CQUFtQixDQUFDLFlBQVksR0FBRztZQUNqQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDbkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixNQUFNLDhCQUE4QixHQUFHLENBQUMsTUFBMkIsRUFBRSxFQUFFO1FBQ3JFLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUM7SUFFRixJQUFJLFdBQVcsRUFBRTtRQUNmOzs7O1dBSUc7UUFDSCxrQ0FBa0MsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUQsT0FBTyxtQkFBbUI7YUFDdkIsZUFBZSxDQUFDLFdBQVcsQ0FBQzthQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7YUFDekMsU0FBUyxFQUFFLENBQUM7S0FDaEI7U0FBTTtRQUNMOztXQUVHO1FBQ0gsa0NBQWtDLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUUzRSxNQUFNLHVCQUF1QixHQUFHLDRCQUE0QixDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVGLElBQUksdUJBQXVCLEVBQUU7WUFDM0IsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUMvRTtLQUNGO0lBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQVMsa0NBQWtDLENBQ3pDLFFBQWtCLEVBQ2xCLFdBQW1CLEVBQ25CLFdBQVcsR0FBRyxrQkFBa0I7SUFFaEMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFNUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxDQUFnQixDQUFDO0lBRTlFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7UUFDbkMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUN2RSxXQUFXLEVBQ1gsV0FBVyxDQUNaLENBQUM7S0FDSDtJQUVELElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUU7UUFDeEMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUMvRSxXQUFXLEVBQ1gsV0FBVyxDQUNaLENBQUM7S0FDSDtJQUVELElBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO1FBQzNCLFdBQVcsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0tBQzlCO0lBQ0QsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRTFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0MsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJztcclxuXHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9tb2RlbHMvZW52aXJvbm1lbnQnO1xyXG5cclxuaW1wb3J0IHsgRmluZFRlbmFudFJlc3VsdER0byB9IGZyb20gJy4uL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvbXVsdGktdGVuYW5jeS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlUZW5hbmN5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL211bHRpLXRlbmFuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IGNyZWF0ZVRva2VuUGFyc2VyIH0gZnJvbSAnLi9zdHJpbmctdXRpbHMnO1xyXG5cclxuY29uc3QgdGVuYW5jeVBsYWNlaG9sZGVyID0gJ3swfSc7XHJcblxyXG5mdW5jdGlvbiBnZXRDdXJyZW50VGVuYW5jeU5hbWUoYXBwQmFzZVVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICBpZiAoYXBwQmFzZVVybC5jaGFyQXQoYXBwQmFzZVVybC5sZW5ndGggLSAxKSAhPT0gJy8nKSBhcHBCYXNlVXJsICs9ICcvJztcclxuXHJcbiAgY29uc3QgcGFyc2VUb2tlbnMgPSBjcmVhdGVUb2tlblBhcnNlcihhcHBCYXNlVXJsKTtcclxuICBjb25zdCB0b2tlbiA9IHRlbmFuY3lQbGFjZWhvbGRlci5yZXBsYWNlKC9bfXtdL2csICcnKTtcclxuICByZXR1cm4gcGFyc2VUb2tlbnMod2luZG93LmxvY2F0aW9uLmhyZWYpW3Rva2VuXT8uWzBdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDdXJyZW50VGVuYW5jeU5hbWVGcm9tVXJsKHRlbmFudEtleTogc3RyaW5nKSB7XHJcbiAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcclxuICByZXR1cm4gdXJsUGFyYW1zLmdldCh0ZW5hbnRLZXkpO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUZW5hbnRGcm9tVXJsKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IGluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG4gIGNvbnN0IG11bHRpVGVuYW5jeVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTXVsdGlUZW5hbmN5U2VydmljZSk7XHJcblxyXG4gIGNvbnN0IGJhc2VVcmwgPSBlbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKT8uYXBwbGljYXRpb24/LmJhc2VVcmwgfHwgJyc7XHJcbiAgY29uc3QgdGVuYW5jeU5hbWUgPSBnZXRDdXJyZW50VGVuYW5jeU5hbWUoYmFzZVVybCk7XHJcblxyXG4gIGNvbnN0IGhpZGVUZW5hbnRCb3ggPSAoKSA9PiB7XHJcbiAgICBtdWx0aVRlbmFuY3lTZXJ2aWNlLmlzVGVuYW50Qm94VmlzaWJsZSA9IGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHNldERvbWFpblRlbmFudCA9ICh0ZW5hbnQ6IEZpbmRUZW5hbnRSZXN1bHREdG8pID0+IHtcclxuICAgIG11bHRpVGVuYW5jeVNlcnZpY2UuZG9tYWluVGVuYW50ID0ge1xyXG4gICAgICBpZDogdGVuYW50LnRlbmFudElkLFxyXG4gICAgICBuYW1lOiB0ZW5hbnQubmFtZSxcclxuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHNldEVudmlyb25tZW50V2l0aERvbWFpblRlbmFudCA9ICh0ZW5hbnQ6IEZpbmRUZW5hbnRSZXN1bHREdG8pID0+IHtcclxuICAgIGhpZGVUZW5hbnRCb3goKTtcclxuICAgIHNldERvbWFpblRlbmFudCh0ZW5hbnQpO1xyXG4gIH07XHJcblxyXG4gIGlmICh0ZW5hbmN5TmFtZSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBXZSBoYXZlIHRvIHJlcGxhY2UgdGVuYW50IG5hbWUgd2l0aGluIHRoZSB1cmxzIGZyb20gZW52aXJvbm1lbnQsXHJcbiAgICAgKiBiZWNhdXNlIHRoZSBjb2RlIGJlbG93IHdpbGwgbWFrZSBhIGh0dHAgcmVxdWVzdCB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkb21haW4gdGVuYW50LlxyXG4gICAgICogQmVmb3JlIHRoaXMgcmVxdWVzdCB0YWtlcyBwbGFjZSwgd2UgbmVlZCB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBha2EgXCJ7MH1cIi5cclxuICAgICAqL1xyXG4gICAgcmVwbGFjZVRlbmFudE5hbWVXaXRoaW5FbnZpcm9ubWVudChpbmplY3RvciwgdGVuYW5jeU5hbWUpO1xyXG4gICAgcmV0dXJuIG11bHRpVGVuYW5jeVNlcnZpY2VcclxuICAgICAgLnNldFRlbmFudEJ5TmFtZSh0ZW5hbmN5TmFtZSlcclxuICAgICAgLnBpcGUodGFwKHNldEVudmlyb25tZW50V2l0aERvbWFpblRlbmFudCkpXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0aGVyZSBpcyBubyB0ZW5hbnQsIHdlIHN0aWxsIGhhdmUgdG8gY2xlYW4gdXAgezB9LiBmcm9tIGJhc2VVcmwgdG8gYXZvaWQgaW5jb3JyZWN0IGh0dHAgcmVxdWVzdHMuXHJcbiAgICAgKi9cclxuICAgIHJlcGxhY2VUZW5hbnROYW1lV2l0aGluRW52aXJvbm1lbnQoaW5qZWN0b3IsICcnLCB0ZW5hbmN5UGxhY2Vob2xkZXIgKyAnLicpO1xyXG5cclxuICAgIGNvbnN0IHRlbmFudElkRnJvbVF1ZXJ5UGFyYW1zID0gZ2V0Q3VycmVudFRlbmFuY3lOYW1lRnJvbVVybChtdWx0aVRlbmFuY3lTZXJ2aWNlLnRlbmFudEtleSk7XHJcbiAgICBpZiAodGVuYW50SWRGcm9tUXVlcnlQYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIG11bHRpVGVuYW5jeVNlcnZpY2Uuc2V0VGVuYW50QnlJZCh0ZW5hbnRJZEZyb21RdWVyeVBhcmFtcykudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcGxhY2VUZW5hbnROYW1lV2l0aGluRW52aXJvbm1lbnQoXHJcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gIHRlbmFuY3lOYW1lOiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXIgPSB0ZW5hbmN5UGxhY2Vob2xkZXIsXHJcbikge1xyXG4gIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IGluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICBjb25zdCBlbnZpcm9ubWVudCA9IGNsb25lKGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpKSBhcyBFbnZpcm9ubWVudDtcclxuXHJcbiAgaWYgKGVudmlyb25tZW50LmFwcGxpY2F0aW9uLmJhc2VVcmwpIHtcclxuICAgIGVudmlyb25tZW50LmFwcGxpY2F0aW9uLmJhc2VVcmwgPSBlbnZpcm9ubWVudC5hcHBsaWNhdGlvbi5iYXNlVXJsLnJlcGxhY2UoXHJcbiAgICAgIHBsYWNlaG9sZGVyLFxyXG4gICAgICB0ZW5hbmN5TmFtZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoZW52aXJvbm1lbnQub0F1dGhDb25maWc/LnJlZGlyZWN0VXJpKSB7XHJcbiAgICBlbnZpcm9ubWVudC5vQXV0aENvbmZpZy5yZWRpcmVjdFVyaSA9IGVudmlyb25tZW50Lm9BdXRoQ29uZmlnLnJlZGlyZWN0VXJpLnJlcGxhY2UoXHJcbiAgICAgIHBsYWNlaG9sZGVyLFxyXG4gICAgICB0ZW5hbmN5TmFtZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZighZW52aXJvbm1lbnQub0F1dGhDb25maWcpIHtcclxuICAgIGVudmlyb25tZW50Lm9BdXRoQ29uZmlnID0ge307XHJcbiAgfVxyXG4gIGVudmlyb25tZW50Lm9BdXRoQ29uZmlnLmlzc3VlciA9IChlbnZpcm9ubWVudC5vQXV0aENvbmZpZy5pc3N1ZXIgfHwgJycpLnJlcGxhY2UocGxhY2Vob2xkZXIsIHRlbmFuY3lOYW1lKTtcclxuXHJcbiAgT2JqZWN0LmtleXMoZW52aXJvbm1lbnQuYXBpcykuZm9yRWFjaChhcGkgPT4ge1xyXG4gICAgT2JqZWN0LmtleXMoZW52aXJvbm1lbnQuYXBpc1thcGldKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGVudmlyb25tZW50LmFwaXNbYXBpXVtrZXldID0gKGVudmlyb25tZW50LmFwaXNbYXBpXVtrZXldIHx8ICcnKS5yZXBsYWNlKHBsYWNlaG9sZGVyLCB0ZW5hbmN5TmFtZSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGVudmlyb25tZW50U2VydmljZS5zZXRTdGF0ZShlbnZpcm9ubWVudCk7XHJcbn1cclxuIl19
@@ -1,4 +1,4 @@
1
- export function isNumber(value) {
2
- return value == Number(value);
3
- }
1
+ export function isNumber(value) {
2
+ return value == Number(value);
3
+ }
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL251bWJlci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXNCO0lBQzdDLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBib29sZWFuIHtcclxuICByZXR1cm4gdmFsdWUgPT0gTnVtYmVyKHZhbHVlKTtcclxufVxyXG4iXX0=
@@ -1,37 +1,37 @@
1
- import { exists, isArray, isNode, isNullOrUndefined, isObject, isObjectAndNotArrayNotNode, } from './common-utils';
2
- export function deepMerge(target, source) {
3
- if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {
4
- return deepMergeRecursively(target, source);
5
- }
6
- else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {
7
- return {};
8
- }
9
- else {
10
- return exists(source) ? source : target;
11
- }
12
- }
13
- function deepMergeRecursively(target, source) {
14
- const shouldNotRecurse = isNullOrUndefined(target) ||
15
- isNullOrUndefined(source) || // at least one not defined
16
- isArray(target) ||
17
- isArray(source) || // at least one array
18
- !isObject(target) ||
19
- !isObject(source) || // at least one not an object
20
- isNode(target) ||
21
- isNode(source); // at least one node
22
- /**
23
- * if we will not recurse any further,
24
- * we will prioritize source if it is a defined value.
25
- */
26
- if (shouldNotRecurse) {
27
- return exists(source) ? source : target;
28
- }
29
- const keysOfTarget = Object.keys(target);
30
- const keysOfSource = Object.keys(source);
31
- const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));
32
- return [...uniqueKeys].reduce((retVal, key) => {
33
- retVal[key] = deepMergeRecursively(target[key], source[key]);
34
- return retVal;
35
- }, {});
36
- }
1
+ import { exists, isArray, isNode, isNullOrUndefined, isObject, isObjectAndNotArrayNotNode, } from './common-utils';
2
+ export function deepMerge(target, source) {
3
+ if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {
4
+ return deepMergeRecursively(target, source);
5
+ }
6
+ else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {
7
+ return {};
8
+ }
9
+ else {
10
+ return exists(source) ? source : target;
11
+ }
12
+ }
13
+ function deepMergeRecursively(target, source) {
14
+ const shouldNotRecurse = isNullOrUndefined(target) ||
15
+ isNullOrUndefined(source) || // at least one not defined
16
+ isArray(target) ||
17
+ isArray(source) || // at least one array
18
+ !isObject(target) ||
19
+ !isObject(source) || // at least one not an object
20
+ isNode(target) ||
21
+ isNode(source); // at least one node
22
+ /**
23
+ * if we will not recurse any further,
24
+ * we will prioritize source if it is a defined value.
25
+ */
26
+ if (shouldNotRecurse) {
27
+ return exists(source) ? source : target;
28
+ }
29
+ const keysOfTarget = Object.keys(target);
30
+ const keysOfSource = Object.keys(source);
31
+ const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));
32
+ return [...uniqueKeys].reduce((retVal, key) => {
33
+ retVal[key] = deepMergeRecursively(target[key], source[key]);
34
+ return retVal;
35
+ }, {});
36
+ }
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL29iamVjdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE9BQU8sRUFDUCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFFBQVEsRUFDUiwwQkFBMEIsR0FDM0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixNQUFNLFVBQVUsU0FBUyxDQUN2QixNQUEwQixFQUMxQixNQUEwQjtJQUUxQixJQUFJLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzVFLE9BQU8sb0JBQW9CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzdDO1NBQU0sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNqRSxPQUFPLEVBQU8sQ0FBQztLQUNoQjtTQUFNO1FBQ0wsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLE1BQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQ2hEO0FBQ0gsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLE1BQTBCLEVBQzFCLE1BQTBCO0lBRTFCLE1BQU0sZ0JBQWdCLEdBQ3BCLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUN6QixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSwyQkFBMkI7UUFDeEQsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxxQkFBcUI7UUFDeEMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2pCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLDZCQUE2QjtRQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0lBRXRDOzs7T0FHRztJQUNILElBQUksZ0JBQWdCLEVBQUU7UUFDcEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLE1BQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQ2hEO0lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFnQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFnQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzlELE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUMzQyxNQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsb0JBQW9CLENBQ3hDLE1BQWlDLENBQUMsR0FBRyxDQUFDLEVBQ3RDLE1BQWlDLENBQUMsR0FBRyxDQUFDLENBQ3hDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLEVBQUUsRUFBTyxDQUFDLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBleGlzdHMsXHJcbiAgaXNBcnJheSxcclxuICBpc05vZGUsXHJcbiAgaXNOdWxsT3JVbmRlZmluZWQsXHJcbiAgaXNPYmplY3QsXHJcbiAgaXNPYmplY3RBbmROb3RBcnJheU5vdE5vZGUsXHJcbn0gZnJvbSAnLi9jb21tb24tdXRpbHMnO1xyXG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlPFQ+KFxyXG4gIHRhcmdldDogRGVlcFBhcnRpYWw8VD4gfCBULFxyXG4gIHNvdXJjZTogRGVlcFBhcnRpYWw8VD4gfCBULFxyXG4pOiBEZWVwUGFydGlhbDxUPiB8IFQge1xyXG4gIGlmIChpc09iamVjdEFuZE5vdEFycmF5Tm90Tm9kZSh0YXJnZXQpICYmIGlzT2JqZWN0QW5kTm90QXJyYXlOb3ROb2RlKHNvdXJjZSkpIHtcclxuICAgIHJldHVybiBkZWVwTWVyZ2VSZWN1cnNpdmVseSh0YXJnZXQsIHNvdXJjZSk7XHJcbiAgfSBlbHNlIGlmIChpc051bGxPclVuZGVmaW5lZCh0YXJnZXQpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHNvdXJjZSkpIHtcclxuICAgIHJldHVybiB7fSBhcyBUO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZXhpc3RzKHNvdXJjZSkgPyAoc291cmNlIGFzIFQpIDogdGFyZ2V0O1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVlcE1lcmdlUmVjdXJzaXZlbHk8VD4oXHJcbiAgdGFyZ2V0OiBEZWVwUGFydGlhbDxUPiB8IFQsXHJcbiAgc291cmNlOiBEZWVwUGFydGlhbDxUPiB8IFQsXHJcbik6IERlZXBQYXJ0aWFsPFQ+IHwgVCB7XHJcbiAgY29uc3Qgc2hvdWxkTm90UmVjdXJzZSA9XHJcbiAgICBpc051bGxPclVuZGVmaW5lZCh0YXJnZXQpIHx8XHJcbiAgICBpc051bGxPclVuZGVmaW5lZChzb3VyY2UpIHx8IC8vIGF0IGxlYXN0IG9uZSBub3QgZGVmaW5lZFxyXG4gICAgaXNBcnJheSh0YXJnZXQpIHx8XHJcbiAgICBpc0FycmF5KHNvdXJjZSkgfHwgLy8gYXQgbGVhc3Qgb25lIGFycmF5XHJcbiAgICAhaXNPYmplY3QodGFyZ2V0KSB8fFxyXG4gICAgIWlzT2JqZWN0KHNvdXJjZSkgfHwgLy8gYXQgbGVhc3Qgb25lIG5vdCBhbiBvYmplY3RcclxuICAgIGlzTm9kZSh0YXJnZXQpIHx8XHJcbiAgICBpc05vZGUoc291cmNlKTsgLy8gYXQgbGVhc3Qgb25lIG5vZGVcclxuXHJcbiAgLyoqXHJcbiAgICogaWYgd2Ugd2lsbCBub3QgcmVjdXJzZSBhbnkgZnVydGhlcixcclxuICAgKiB3ZSB3aWxsIHByaW9yaXRpemUgc291cmNlIGlmIGl0IGlzIGEgZGVmaW5lZCB2YWx1ZS5cclxuICAgKi9cclxuICBpZiAoc2hvdWxkTm90UmVjdXJzZSkge1xyXG4gICAgcmV0dXJuIGV4aXN0cyhzb3VyY2UpID8gKHNvdXJjZSBhcyBUKSA6IHRhcmdldDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGtleXNPZlRhcmdldCA9IE9iamVjdC5rZXlzKHRhcmdldCBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KTtcclxuICBjb25zdCBrZXlzT2ZTb3VyY2UgPSBPYmplY3Qua2V5cyhzb3VyY2UgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSk7XHJcbiAgY29uc3QgdW5pcXVlS2V5cyA9IG5ldyBTZXQoa2V5c09mVGFyZ2V0LmNvbmNhdChrZXlzT2ZTb3VyY2UpKTtcclxuICByZXR1cm4gWy4uLnVuaXF1ZUtleXNdLnJlZHVjZSgocmV0VmFsLCBrZXkpID0+IHtcclxuICAgIChyZXRWYWwgYXMgYW55KVtrZXldID0gZGVlcE1lcmdlUmVjdXJzaXZlbHkoXHJcbiAgICAgICh0YXJnZXQgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSlba2V5XSxcclxuICAgICAgKHNvdXJjZSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KVtrZXldLFxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXRWYWw7XHJcbiAgfSwge30gYXMgVCk7XHJcbn1cclxuIl19
@@ -1,41 +1,41 @@
1
- export class DefaultQueueManager {
2
- constructor() {
3
- this.queue = [];
4
- this.isRunning = false;
5
- this.stack = 0;
6
- this.interval = 0;
7
- this.stackSize = 100;
8
- }
9
- init(interval, stackSize) {
10
- this.interval = interval;
11
- this.stackSize = stackSize;
12
- }
13
- add(fn) {
14
- this.queue.push(fn);
15
- this.run();
16
- }
17
- run() {
18
- if (this.isRunning)
19
- return;
20
- this.stack++;
21
- this.isRunning = true;
22
- const fn = this.queue.shift();
23
- if (!fn) {
24
- this.isRunning = false;
25
- return;
26
- }
27
- fn();
28
- if (this.stack > this.stackSize) {
29
- setTimeout(() => {
30
- this.isRunning = false;
31
- this.run();
32
- this.stack = 0;
33
- }, this.interval);
34
- }
35
- else {
36
- this.isRunning = false;
37
- this.run();
38
- }
39
- }
40
- }
1
+ export class DefaultQueueManager {
2
+ constructor() {
3
+ this.queue = [];
4
+ this.isRunning = false;
5
+ this.stack = 0;
6
+ this.interval = 0;
7
+ this.stackSize = 100;
8
+ }
9
+ init(interval, stackSize) {
10
+ this.interval = interval;
11
+ this.stackSize = stackSize;
12
+ }
13
+ add(fn) {
14
+ this.queue.push(fn);
15
+ this.run();
16
+ }
17
+ run() {
18
+ if (this.isRunning)
19
+ return;
20
+ this.stack++;
21
+ this.isRunning = true;
22
+ const fn = this.queue.shift();
23
+ if (!fn) {
24
+ this.isRunning = false;
25
+ return;
26
+ }
27
+ fn();
28
+ if (this.stack > this.stackSize) {
29
+ setTimeout(() => {
30
+ this.isRunning = false;
31
+ this.run();
32
+ this.stack = 0;
33
+ }, this.interval);
34
+ }
35
+ else {
36
+ this.isRunning = false;
37
+ this.run();
38
+ }
39
+ }
40
+ }
41
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUNVLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBQzlCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixjQUFTLEdBQUcsR0FBRyxDQUFDO0lBcUMxQixDQUFDO0lBbkNRLElBQUksQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBYztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRU8sR0FBRztRQUNULElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUVELEVBQUUsRUFBRSxDQUFDO1FBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkI7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNaO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBRdWV1ZU1hbmFnZXIge1xyXG4gIGFkZChmbjogKCkgPT4gdm9pZCk6IHZvaWQ7XHJcbiAgaW5pdChpbnRlcnZhbDogbnVtYmVyLCBzdGFja1NpemU6IG51bWJlcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UXVldWVNYW5hZ2VyIGltcGxlbWVudHMgUXVldWVNYW5hZ2VyIHtcclxuICBwcml2YXRlIHF1ZXVlOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xyXG4gIHByaXZhdGUgaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdGFjayA9IDA7XHJcbiAgcHJpdmF0ZSBpbnRlcnZhbCA9IDA7XHJcbiAgcHJpdmF0ZSBzdGFja1NpemUgPSAxMDA7XHJcblxyXG4gIHB1YmxpYyBpbml0KGludGVydmFsOiBudW1iZXIsIHN0YWNrU2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmludGVydmFsID0gaW50ZXJ2YWw7XHJcbiAgICB0aGlzLnN0YWNrU2l6ZSA9IHN0YWNrU2l6ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGQoZm46ICgpID0+IHZvaWQpIHtcclxuICAgIHRoaXMucXVldWUucHVzaChmbik7XHJcbiAgICB0aGlzLnJ1bigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBydW4oKSB7XHJcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHJldHVybjtcclxuICAgIHRoaXMuc3RhY2srKztcclxuXHJcbiAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZm4gPSB0aGlzLnF1ZXVlLnNoaWZ0KCk7XHJcblxyXG4gICAgaWYgKCFmbikge1xyXG4gICAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZm4oKTtcclxuICAgIGlmICh0aGlzLnN0YWNrID4gdGhpcy5zdGFja1NpemUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJ1bigpO1xyXG4gICAgICAgIHRoaXMuc3RhY2sgPSAwO1xyXG4gICAgICB9LCB0aGlzLmludGVydmFsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucnVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,26 +1,26 @@
1
- import { PRIMARY_OUTLET } from "@angular/router";
2
- import { noop } from './common-utils';
3
- export function findRoute(routesService, path) {
4
- const node = routesService.find(route => route.path === path);
5
- return node || path === '/'
6
- ? node
7
- : findRoute(routesService, path.split('/').slice(0, -1).join('/') || '/');
8
- }
9
- export function getRoutePath(router, url = router.url) {
10
- const emptyGroup = { segments: [] };
11
- const primaryGroup = router.parseUrl(url).root.children[PRIMARY_OUTLET];
12
- return '/' + (primaryGroup || emptyGroup).segments.map(({ path }) => path).join('/');
13
- }
14
- export function reloadRoute(router, ngZone) {
15
- const { shouldReuseRoute } = router.routeReuseStrategy;
16
- const setRouteReuse = (reuse) => {
17
- router.routeReuseStrategy.shouldReuseRoute = reuse;
18
- };
19
- setRouteReuse(() => false);
20
- router.navigated = false;
21
- ngZone.run(async () => {
22
- await router.navigateByUrl(router.url).catch(noop);
23
- setRouteReuse(shouldReuseRoute);
24
- });
25
- }
1
+ import { PRIMARY_OUTLET } from "@angular/router";
2
+ import { noop } from './common-utils';
3
+ export function findRoute(routesService, path) {
4
+ const node = routesService.find(route => route.path === path);
5
+ return node || path === '/'
6
+ ? node
7
+ : findRoute(routesService, path.split('/').slice(0, -1).join('/') || '/');
8
+ }
9
+ export function getRoutePath(router, url = router.url) {
10
+ const emptyGroup = { segments: [] };
11
+ const primaryGroup = router.parseUrl(url).root.children[PRIMARY_OUTLET];
12
+ return '/' + (primaryGroup || emptyGroup).segments.map(({ path }) => path).join('/');
13
+ }
14
+ export function reloadRoute(router, ngZone) {
15
+ const { shouldReuseRoute } = router.routeReuseStrategy;
16
+ const setRouteReuse = (reuse) => {
17
+ router.routeReuseStrategy.shouldReuseRoute = reuse;
18
+ };
19
+ setRouteReuse(() => false);
20
+ router.navigated = false;
21
+ ngZone.run(async () => {
22
+ await router.navigateByUrl(router.url).catch(noop);
23
+ setRouteReuse(shouldReuseRoute);
24
+ });
25
+ }
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvcm91dGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBdUMsTUFBTSxpQkFBaUIsQ0FBQztBQUd0RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxhQUE0QixFQUFFLElBQVk7SUFDbEUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFFOUQsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLEdBQUc7UUFDekIsQ0FBQyxDQUFDLElBQUk7UUFDTixDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBYyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRztJQUMzRCxNQUFNLFVBQVUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFrQixFQUFxQixDQUFDO0lBQ3ZFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV4RSxPQUFPLEdBQUcsR0FBRyxDQUFDLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFjO0lBQ3hELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQThCLEVBQUUsRUFBRTtRQUN2RCxNQUFNLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUV6QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3BCLE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQUklNQVJZX09VVExFVCwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxTZWdtZW50R3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9jb21tb24tdXRpbHMnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vdHJlZS11dGlscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvdXRlKHJvdXRlc1NlcnZpY2U6IFJvdXRlc1NlcnZpY2UsIHBhdGg6IHN0cmluZyk6IFRyZWVOb2RlPEFCUC5Sb3V0ZT4gfCBudWxsIHtcclxuICBjb25zdCBub2RlID0gcm91dGVzU2VydmljZS5maW5kKHJvdXRlID0+IHJvdXRlLnBhdGggPT09IHBhdGgpO1xyXG5cclxuICByZXR1cm4gbm9kZSB8fCBwYXRoID09PSAnLydcclxuICAgID8gbm9kZVxyXG4gICAgOiBmaW5kUm91dGUocm91dGVzU2VydmljZSwgcGF0aC5zcGxpdCgnLycpLnNsaWNlKDAsIC0xKS5qb2luKCcvJykgfHwgJy8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlUGF0aChyb3V0ZXI6IFJvdXRlciwgdXJsID0gcm91dGVyLnVybCkge1xyXG4gIGNvbnN0IGVtcHR5R3JvdXAgPSB7IHNlZ21lbnRzOiBbXSBhcyBVcmxTZWdtZW50W10gfSBhcyBVcmxTZWdtZW50R3JvdXA7XHJcbiAgY29uc3QgcHJpbWFyeUdyb3VwID0gcm91dGVyLnBhcnNlVXJsKHVybCkucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XHJcblxyXG4gIHJldHVybiAnLycgKyAocHJpbWFyeUdyb3VwIHx8IGVtcHR5R3JvdXApLnNlZ21lbnRzLm1hcCgoeyBwYXRoIH0pID0+IHBhdGgpLmpvaW4oJy8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbG9hZFJvdXRlKHJvdXRlcjogUm91dGVyLCBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gIGNvbnN0IHsgc2hvdWxkUmV1c2VSb3V0ZSB9ID0gcm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneTtcclxuICBjb25zdCBzZXRSb3V0ZVJldXNlID0gKHJldXNlOiB0eXBlb2Ygc2hvdWxkUmV1c2VSb3V0ZSkgPT4ge1xyXG4gICAgcm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gcmV1c2U7XHJcbiAgfTtcclxuXHJcbiAgc2V0Um91dGVSZXVzZSgoKSA9PiBmYWxzZSk7XHJcbiAgcm91dGVyLm5hdmlnYXRlZCA9IGZhbHNlO1xyXG5cclxuICBuZ1pvbmUucnVuKGFzeW5jICgpID0+IHtcclxuICAgIGF3YWl0IHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlci51cmwpLmNhdGNoKG5vb3ApO1xyXG4gICAgc2V0Um91dGVSZXVzZShzaG91bGRSZXVzZVJvdXRlKTtcclxuICB9KTtcclxufVxyXG4iXX0=
@@ -1,30 +1,30 @@
1
- export function createTokenParser(format) {
2
- return (str) => {
3
- const tokens = [];
4
- const regex = format.replace(/\./g, '\\.').replace(/\{\s?([0-9a-zA-Z]+)\s?\}/g, (_, token) => {
5
- tokens.push(token);
6
- return '(.+)';
7
- });
8
- const matches = (str.match(regex) || []).slice(1);
9
- return matches.reduce((acc, v, i) => {
10
- const key = tokens[i];
11
- acc[key] = [...(acc[key] || []), v].filter(Boolean);
12
- return acc;
13
- }, {});
14
- };
15
- }
16
- export function interpolate(text, params) {
17
- return text
18
- .replace(/(['"]?\{\s*(\d+)\s*\}['"]?)/g, (_, match, digit) => params[digit] ?? match)
19
- .replace(/\s+/g, ' ');
20
- }
21
- export function escapeHtmlChars(value) {
22
- return value && typeof value === 'string'
23
- ? value
24
- .replace(/&/g, '&amp;')
25
- .replace(/</g, '&lt;')
26
- .replace(/>/g, '&gt;')
27
- .replace(/"/g, '&quot;')
28
- : value;
29
- }
1
+ export function createTokenParser(format) {
2
+ return (str) => {
3
+ const tokens = [];
4
+ const regex = format.replace(/\./g, '\\.').replace(/\{\s?([0-9a-zA-Z]+)\s?\}/g, (_, token) => {
5
+ tokens.push(token);
6
+ return '(.+)';
7
+ });
8
+ const matches = (str.match(regex) || []).slice(1);
9
+ return matches.reduce((acc, v, i) => {
10
+ const key = tokens[i];
11
+ acc[key] = [...(acc[key] || []), v].filter(Boolean);
12
+ return acc;
13
+ }, {});
14
+ };
15
+ }
16
+ export function interpolate(text, params) {
17
+ return text
18
+ .replace(/(['"]?\{\s*(\d+)\s*\}['"]?)/g, (_, match, digit) => params[digit] ?? match)
19
+ .replace(/\s+/g, ' ');
20
+ }
21
+ export function escapeHtmlChars(value) {
22
+ return value && typeof value === 'string'
23
+ ? value
24
+ .replace(/&/g, '&amp;')
25
+ .replace(/</g, '&lt;')
26
+ .replace(/>/g, '&gt;')
27
+ .replace(/"/g, '&quot;')
28
+ : value;
29
+ }
30
30
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL3N0cmluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYztJQUM5QyxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDckIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzRixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUE4QixDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQWdCO0lBQ3hELE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO1NBQ3BGLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBVTtJQUN4QyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3ZDLENBQUMsQ0FBQyxLQUFLO2FBQ0YsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7YUFDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7UUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5QYXJzZXIoZm9ybWF0OiBzdHJpbmcpIHtcclxuICByZXR1cm4gKHN0cjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB0b2tlbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb25zdCByZWdleCA9IGZvcm1hdC5yZXBsYWNlKC9cXC4vZywgJ1xcXFwuJykucmVwbGFjZSgvXFx7XFxzPyhbMC05YS16QS1aXSspXFxzP1xcfS9nLCAoXywgdG9rZW4pID0+IHtcclxuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xyXG4gICAgICByZXR1cm4gJyguKyknO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgbWF0Y2hlcyA9IChzdHIubWF0Y2gocmVnZXgpIHx8IFtdKS5zbGljZSgxKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKGFjYywgdiwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBrZXkgPSB0b2tlbnNbaV07XHJcbiAgICAgIGFjY1trZXldID0gWy4uLihhY2Nba2V5XSB8fCBbXSksIHZdLmZpbHRlcihCb29sZWFuKTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPik7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGludGVycG9sYXRlKHRleHQ6IHN0cmluZywgcGFyYW1zOiBzdHJpbmdbXSkge1xyXG4gIHJldHVybiB0ZXh0XHJcbiAgICAucmVwbGFjZSgvKFsnXCJdP1xce1xccyooXFxkKylcXHMqXFx9WydcIl0/KS9nLCAoXywgbWF0Y2gsIGRpZ2l0KSA9PiBwYXJhbXNbZGlnaXRdID8/IG1hdGNoKVxyXG4gICAgLnJlcGxhY2UoL1xccysvZywgJyAnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUh0bWxDaGFycyh2YWx1ZTogYW55KSB7XHJcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcclxuICAgID8gdmFsdWVcclxuICAgICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxyXG4gICAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcclxuICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXHJcbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxyXG4gICAgOiB2YWx1ZTtcclxufVxyXG4iXX0=