@abp/ng.core 9.0.4 → 9.1.0-rc.2

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 (189) hide show
  1. package/fesm2022/abp-ng.core-locale.mjs +2 -1
  2. package/fesm2022/abp-ng.core-locale.mjs.map +1 -1
  3. package/fesm2022/abp-ng.core-testing.mjs +15 -15
  4. package/fesm2022/abp-ng.core.mjs +276 -288
  5. package/fesm2022/abp-ng.core.mjs.map +1 -1
  6. package/lib/providers/cookie-language.provider.d.ts +2 -3
  7. package/lib/utils/initial-utils.d.ts +2 -3
  8. package/package.json +2 -8
  9. package/esm2022/abp-ng.core.mjs +0 -5
  10. package/esm2022/lib/abstracts/abstract-guard.mjs +0 -2
  11. package/esm2022/lib/abstracts/auth-error-filter.mjs +0 -25
  12. package/esm2022/lib/abstracts/auth-response.model.mjs +0 -2
  13. package/esm2022/lib/abstracts/auth.guard.mjs +0 -24
  14. package/esm2022/lib/abstracts/auth.service.mjs +0 -67
  15. package/esm2022/lib/abstracts/index.mjs +0 -7
  16. package/esm2022/lib/abstracts/ng-model.component.mjs +0 -58
  17. package/esm2022/lib/clients/http.client.mjs +0 -28
  18. package/esm2022/lib/clients/index.mjs +0 -2
  19. package/esm2022/lib/components/dynamic-layout.component.mjs +0 -115
  20. package/esm2022/lib/components/index.mjs +0 -4
  21. package/esm2022/lib/components/replaceable-route-container.component.mjs +0 -42
  22. package/esm2022/lib/components/router-outlet.component.mjs +0 -15
  23. package/esm2022/lib/constants/default-layouts.mjs +0 -6
  24. package/esm2022/lib/constants/different-locales.mjs +0 -337
  25. package/esm2022/lib/constants/index.mjs +0 -3
  26. package/esm2022/lib/core.module.mjs +0 -203
  27. package/esm2022/lib/directives/autofocus.directive.mjs +0 -30
  28. package/esm2022/lib/directives/caps-lock.directive.mjs +0 -41
  29. package/esm2022/lib/directives/debounce.directive.mjs +0 -36
  30. package/esm2022/lib/directives/for.directive.mjs +0 -160
  31. package/esm2022/lib/directives/form-submit.directive.mjs +0 -77
  32. package/esm2022/lib/directives/index.mjs +0 -11
  33. package/esm2022/lib/directives/init.directive.mjs +0 -24
  34. package/esm2022/lib/directives/permission.directive.mjs +0 -75
  35. package/esm2022/lib/directives/replaceable-template.directive.mjs +0 -133
  36. package/esm2022/lib/directives/show-password.directive.mjs +0 -25
  37. package/esm2022/lib/directives/stop-propagation.directive.mjs +0 -32
  38. package/esm2022/lib/enums/common.mjs +0 -2
  39. package/esm2022/lib/enums/index.mjs +0 -2
  40. package/esm2022/lib/guards/index.mjs +0 -2
  41. package/esm2022/lib/guards/permission.guard.mjs +0 -62
  42. package/esm2022/lib/handlers/index.mjs +0 -2
  43. package/esm2022/lib/handlers/routes.handler.mjs +0 -51
  44. package/esm2022/lib/interceptors/api.interceptor.mjs +0 -27
  45. package/esm2022/lib/interceptors/index.mjs +0 -2
  46. package/esm2022/lib/localization.module.mjs +0 -16
  47. package/esm2022/lib/models/auth-events.mjs +0 -29
  48. package/esm2022/lib/models/auth.mjs +0 -2
  49. package/esm2022/lib/models/common.mjs +0 -2
  50. package/esm2022/lib/models/dtos.mjs +0 -137
  51. package/esm2022/lib/models/environment.mjs +0 -2
  52. package/esm2022/lib/models/index.mjs +0 -12
  53. package/esm2022/lib/models/localization.mjs +0 -2
  54. package/esm2022/lib/models/replaceable-components.mjs +0 -2
  55. package/esm2022/lib/models/rest.mjs +0 -2
  56. package/esm2022/lib/models/session.mjs +0 -2
  57. package/esm2022/lib/models/sort.mjs +0 -2
  58. package/esm2022/lib/models/utility.mjs +0 -2
  59. package/esm2022/lib/pipes/index.mjs +0 -8
  60. package/esm2022/lib/pipes/localization.pipe.mjs +0 -33
  61. package/esm2022/lib/pipes/safe-html.pipe.mjs +0 -23
  62. package/esm2022/lib/pipes/short-date-time.pipe.mjs +0 -34
  63. package/esm2022/lib/pipes/short-date.pipe.mjs +0 -34
  64. package/esm2022/lib/pipes/short-time.pipe.mjs +0 -34
  65. package/esm2022/lib/pipes/sort.pipe.mjs +0 -49
  66. package/esm2022/lib/pipes/to-injector.pipe.mjs +0 -29
  67. package/esm2022/lib/providers/cookie-language.provider.mjs +0 -22
  68. package/esm2022/lib/providers/core-module-config.provider.mjs +0 -135
  69. package/esm2022/lib/providers/include-localization-resources.provider.mjs +0 -6
  70. package/esm2022/lib/providers/index.mjs +0 -5
  71. package/esm2022/lib/providers/locale.provider.mjs +0 -26
  72. package/esm2022/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +0 -27
  73. package/esm2022/lib/proxy/pages/abp/multi-tenancy/index.mjs +0 -2
  74. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +0 -24
  75. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.mjs +0 -2
  76. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +0 -24
  77. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +0 -24
  78. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.mjs +0 -6
  79. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.mjs +0 -2
  80. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.mjs +0 -2
  81. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.mjs +0 -2
  82. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.mjs +0 -2
  83. package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.mjs +0 -2
  84. package/esm2022/lib/proxy/volo/abp/http/modeling/index.mjs +0 -2
  85. package/esm2022/lib/proxy/volo/abp/http/modeling/models.mjs +0 -2
  86. package/esm2022/lib/proxy/volo/abp/localization/index.mjs +0 -2
  87. package/esm2022/lib/proxy/volo/abp/localization/models.mjs +0 -2
  88. package/esm2022/lib/proxy/volo/abp/models.mjs +0 -2
  89. package/esm2022/lib/services/config-state.service.mjs +0 -189
  90. package/esm2022/lib/services/content-projection.service.mjs +0 -17
  91. package/esm2022/lib/services/dom-insertion.service.mjs +0 -34
  92. package/esm2022/lib/services/environment.service.mjs +0 -54
  93. package/esm2022/lib/services/http-error-reporter.service.mjs +0 -29
  94. package/esm2022/lib/services/http-wait.service.mjs +0 -75
  95. package/esm2022/lib/services/index.mjs +0 -26
  96. package/esm2022/lib/services/internet-connection-service.mjs +0 -32
  97. package/esm2022/lib/services/lazy-load.service.mjs +0 -40
  98. package/esm2022/lib/services/list.service.mjs +0 -125
  99. package/esm2022/lib/services/local-storage-listener.service.mjs +0 -22
  100. package/esm2022/lib/services/local-storage.service.mjs +0 -32
  101. package/esm2022/lib/services/localization.service.mjs +0 -218
  102. package/esm2022/lib/services/multi-tenancy.service.mjs +0 -48
  103. package/esm2022/lib/services/permission.service.mjs +0 -63
  104. package/esm2022/lib/services/replaceable-components.service.mjs +0 -49
  105. package/esm2022/lib/services/resource-wait.service.mjs +0 -39
  106. package/esm2022/lib/services/rest.service.mjs +0 -78
  107. package/esm2022/lib/services/router-events.service.mjs +0 -51
  108. package/esm2022/lib/services/router-wait.service.mjs +0 -51
  109. package/esm2022/lib/services/routes.service.mjs +0 -200
  110. package/esm2022/lib/services/session-state.service.mjs +0 -84
  111. package/esm2022/lib/services/subscription.service.mjs +0 -43
  112. package/esm2022/lib/services/title-strategy.service.mjs +0 -46
  113. package/esm2022/lib/services/track-by.service.mjs +0 -21
  114. package/esm2022/lib/services/window.service.mjs +0 -41
  115. package/esm2022/lib/strategies/container.strategy.mjs +0 -38
  116. package/esm2022/lib/strategies/content-security.strategy.mjs +0 -30
  117. package/esm2022/lib/strategies/content.strategy.mjs +0 -52
  118. package/esm2022/lib/strategies/context.strategy.mjs +0 -37
  119. package/esm2022/lib/strategies/cross-origin.strategy.mjs +0 -28
  120. package/esm2022/lib/strategies/dom.strategy.mjs +0 -27
  121. package/esm2022/lib/strategies/index.mjs +0 -9
  122. package/esm2022/lib/strategies/loading.strategy.mjs +0 -58
  123. package/esm2022/lib/strategies/projection.strategy.mjs +0 -80
  124. package/esm2022/lib/tokens/app-config.token.mjs +0 -3
  125. package/esm2022/lib/tokens/check-authentication-state.mjs +0 -3
  126. package/esm2022/lib/tokens/compare-func.token.mjs +0 -31
  127. package/esm2022/lib/tokens/cookie-language-key.token.mjs +0 -5
  128. package/esm2022/lib/tokens/dynamic-layout.token.mjs +0 -3
  129. package/esm2022/lib/tokens/http-context.token.mjs +0 -3
  130. package/esm2022/lib/tokens/include-localization-resources.token.mjs +0 -3
  131. package/esm2022/lib/tokens/index.mjs +0 -20
  132. package/esm2022/lib/tokens/list.token.mjs +0 -3
  133. package/esm2022/lib/tokens/localization.token.mjs +0 -10
  134. package/esm2022/lib/tokens/lodaer-delay.token.mjs +0 -3
  135. package/esm2022/lib/tokens/manage-profile.token.mjs +0 -3
  136. package/esm2022/lib/tokens/options.token.mjs +0 -8
  137. package/esm2022/lib/tokens/others-group.token.mjs +0 -3
  138. package/esm2022/lib/tokens/pipe-to-login.token.mjs +0 -3
  139. package/esm2022/lib/tokens/queue.token.mjs +0 -3
  140. package/esm2022/lib/tokens/set-token-response-to-storage.token.mjs +0 -6
  141. package/esm2022/lib/tokens/tenant-key.token.mjs +0 -3
  142. package/esm2022/lib/tokens/tenant-not-found-by-name.mjs +0 -3
  143. package/esm2022/lib/tokens/title-strategy-disable-project-name.token.mjs +0 -3
  144. package/esm2022/lib/utils/array-utils.mjs +0 -7
  145. package/esm2022/lib/utils/common-utils.mjs +0 -35
  146. package/esm2022/lib/utils/date-extensions.mjs +0 -6
  147. package/esm2022/lib/utils/date-utils.mjs +0 -13
  148. package/esm2022/lib/utils/environment-utils.mjs +0 -36
  149. package/esm2022/lib/utils/factory-utils.mjs +0 -24
  150. package/esm2022/lib/utils/file-utils.mjs +0 -15
  151. package/esm2022/lib/utils/form-utils.mjs +0 -12
  152. package/esm2022/lib/utils/generator-utils.mjs +0 -43
  153. package/esm2022/lib/utils/http-utils.mjs +0 -19
  154. package/esm2022/lib/utils/index.mjs +0 -21
  155. package/esm2022/lib/utils/initial-utils.mjs +0 -60
  156. package/esm2022/lib/utils/internal-store-utils.mjs +0 -37
  157. package/esm2022/lib/utils/lazy-load-utils.mjs +0 -40
  158. package/esm2022/lib/utils/localization-utils.mjs +0 -49
  159. package/esm2022/lib/utils/multi-tenancy-utils.mjs +0 -93
  160. package/esm2022/lib/utils/number-utils.mjs +0 -4
  161. package/esm2022/lib/utils/object-utils.mjs +0 -37
  162. package/esm2022/lib/utils/queue.mjs +0 -41
  163. package/esm2022/lib/utils/route-utils.mjs +0 -26
  164. package/esm2022/lib/utils/string-utils.mjs +0 -30
  165. package/esm2022/lib/utils/tree-utils.mjs +0 -70
  166. package/esm2022/lib/validators/age.validator.mjs +0 -14
  167. package/esm2022/lib/validators/credit-card.validator.mjs +0 -21
  168. package/esm2022/lib/validators/index.mjs +0 -29
  169. package/esm2022/lib/validators/range.validator.mjs +0 -15
  170. package/esm2022/lib/validators/required.validator.mjs +0 -15
  171. package/esm2022/lib/validators/string-length.validator.mjs +0 -15
  172. package/esm2022/lib/validators/unique-character.validator.mjs +0 -13
  173. package/esm2022/lib/validators/url.validator.mjs +0 -17
  174. package/esm2022/lib/validators/username.validator.mjs +0 -14
  175. package/esm2022/locale/abp-ng.core-locale.mjs +0 -5
  176. package/esm2022/locale/public-api.mjs +0 -2
  177. package/esm2022/locale/utils/register-locale.mjs +0 -101
  178. package/esm2022/public-api.mjs +0 -28
  179. package/esm2022/testing/abp-ng.core-testing.mjs +0 -5
  180. package/esm2022/testing/lib/core-testing.module.mjs +0 -76
  181. package/esm2022/testing/lib/pipes/index.mjs +0 -2
  182. package/esm2022/testing/lib/pipes/localization.pipe.mjs +0 -20
  183. package/esm2022/testing/lib/services/index.mjs +0 -3
  184. package/esm2022/testing/lib/services/mock-permission.service.mjs +0 -35
  185. package/esm2022/testing/lib/services/mock-rest.service.mjs +0 -31
  186. package/esm2022/testing/lib/utils/clear-page.util.mjs +0 -10
  187. package/esm2022/testing/lib/utils/index.mjs +0 -3
  188. package/esm2022/testing/lib/utils/wait.util.mjs +0 -5
  189. package/esm2022/testing/public-api.mjs +0 -5
@@ -1,49 +0,0 @@
1
- import { Injectable, NgZone } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { map } from 'rxjs/operators';
4
- import { InternalStore } from '../utils/internal-store-utils';
5
- import { reloadRoute } from '../utils/route-utils';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- export class ReplaceableComponentsService {
9
- get replaceableComponents$() {
10
- return this.store.sliceState(state => state);
11
- }
12
- get replaceableComponents() {
13
- return this.store.state;
14
- }
15
- get onUpdate$() {
16
- return this.store.sliceUpdate(state => state);
17
- }
18
- constructor(ngZone, router) {
19
- this.ngZone = ngZone;
20
- this.router = router;
21
- this.store = new InternalStore([]);
22
- }
23
- add(replaceableComponent, reload) {
24
- const replaceableComponents = [...this.store.state];
25
- const index = replaceableComponents.findIndex(component => component.key === replaceableComponent.key);
26
- if (index > -1) {
27
- replaceableComponents[index] = replaceableComponent;
28
- }
29
- else {
30
- replaceableComponents.push(replaceableComponent);
31
- }
32
- this.store.set(replaceableComponents);
33
- if (reload)
34
- reloadRoute(this.router, this.ngZone);
35
- }
36
- get(replaceableComponentKey) {
37
- return this.replaceableComponents.find(component => component.key === replaceableComponentKey);
38
- }
39
- get$(replaceableComponentKey) {
40
- return this.replaceableComponents$.pipe(map(components => components.find(component => component.key === replaceableComponentKey)));
41
- }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ReplaceableComponentsService, deps: [{ token: i0.NgZone }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ReplaceableComponentsService, providedIn: 'root' }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ReplaceableComponentsService, decorators: [{
46
- type: Injectable,
47
- args: [{ providedIn: 'root' }]
48
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.Router }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZWFibGUtY29tcG9uZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3JlcGxhY2VhYmxlLWNvbXBvbmVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUduRCxNQUFNLE9BQU8sNEJBQTRCO0lBR3ZDLElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxZQUFvQixNQUFjLEVBQVUsTUFBYztRQUF0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQWtELENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsR0FBRyxDQUFDLG9CQUFnRSxFQUFFLE1BQWdCO1FBQ3BGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEQsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUMzQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssb0JBQW9CLENBQUMsR0FBRyxDQUN4RCxDQUFDO1FBRUYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNmLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLG9CQUFvQixDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04scUJBQXFCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdEMsSUFBSSxNQUFNO1lBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxHQUFHLENBQUMsdUJBQStCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssdUJBQXVCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsSUFBSSxDQUFDLHVCQUErQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQ3JDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLHVCQUF1QixDQUFDLENBQUMsQ0FDM0YsQ0FBQztJQUNKLENBQUM7OEdBN0NVLDRCQUE0QjtrSEFBNUIsNEJBQTRCLGNBRGYsTUFBTTs7MkZBQ25CLDRCQUE0QjtrQkFEeEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlcGxhY2VhYmxlQ29tcG9uZW50cyB9IGZyb20gJy4uL21vZGVscy9yZXBsYWNlYWJsZS1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcclxuaW1wb3J0IHsgcmVsb2FkUm91dGUgfSBmcm9tICcuLi91dGlscy9yb3V0ZS11dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUmVwbGFjZWFibGVDb21wb25lbnRzU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogSW50ZXJuYWxTdG9yZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXT47XHJcblxyXG4gIGdldCByZXBsYWNlYWJsZUNvbXBvbmVudHMkKCk6IE9ic2VydmFibGU8UmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlcGxhY2VhYmxlQ29tcG9uZW50cygpOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBvblVwZGF0ZSQoKTogT2JzZXJ2YWJsZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgdGhpcy5zdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlKFtdIGFzIFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZUNvbXBvbmVudFtdKTtcclxuICB9XHJcblxyXG4gIGFkZChyZXBsYWNlYWJsZUNvbXBvbmVudDogUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50LCByZWxvYWQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXBsYWNlYWJsZUNvbXBvbmVudHMgPSBbLi4udGhpcy5zdG9yZS5zdGF0ZV07XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSByZXBsYWNlYWJsZUNvbXBvbmVudHMuZmluZEluZGV4KFxyXG4gICAgICBjb21wb25lbnQgPT4gY29tcG9uZW50LmtleSA9PT0gcmVwbGFjZWFibGVDb21wb25lbnQua2V5LFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICByZXBsYWNlYWJsZUNvbXBvbmVudHNbaW5kZXhdID0gcmVwbGFjZWFibGVDb21wb25lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXBsYWNlYWJsZUNvbXBvbmVudHMucHVzaChyZXBsYWNlYWJsZUNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdG9yZS5zZXQocmVwbGFjZWFibGVDb21wb25lbnRzKTtcclxuXHJcbiAgICBpZiAocmVsb2FkKSByZWxvYWRSb3V0ZSh0aGlzLnJvdXRlciwgdGhpcy5uZ1pvbmUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0KHJlcGxhY2VhYmxlQ29tcG9uZW50S2V5OiBzdHJpbmcpOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZWFibGVDb21wb25lbnRzLmZpbmQoY29tcG9uZW50ID0+IGNvbXBvbmVudC5rZXkgPT09IHJlcGxhY2VhYmxlQ29tcG9uZW50S2V5KTtcclxuICB9XHJcblxyXG4gIGdldCQocmVwbGFjZWFibGVDb21wb25lbnRLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlYWJsZUNvbXBvbmVudHMkLnBpcGUoXHJcbiAgICAgIG1hcChjb21wb25lbnRzID0+IGNvbXBvbmVudHMuZmluZChjb21wb25lbnQgPT4gY29tcG9uZW50LmtleSA9PT0gcmVwbGFjZWFibGVDb21wb25lbnRLZXkpKSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,39 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { InternalStore } from '../utils/internal-store-utils';
3
- import * as i0 from "@angular/core";
4
- export 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: "18.1.5", ngImport: i0, type: ResourceWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
31
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ResourceWaitService, providedIn: 'root' }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ResourceWaitService, decorators: [{
34
- type: Injectable,
35
- args: [{
36
- providedIn: 'root',
37
- }]
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utd2FpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Jlc291cmNlLXdhaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFTOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlVLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBb0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7S0E2QmhGO0lBM0JDLFVBQVU7UUFDUixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzdDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBZ0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzdDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBN0JVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlV2FpdFN0YXRlIHtcclxuICByZXNvdXJjZXM6IFNldDxzdHJpbmc+O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VXYWl0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlPFJlc291cmNlV2FpdFN0YXRlPih7IHJlc291cmNlczogbmV3IFNldCgpIH0pO1xyXG5cclxuICBnZXRMb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5zdG9yZS5zdGF0ZS5yZXNvdXJjZXMuc2l6ZTtcclxuICB9XHJcblxyXG4gIGdldExvYWRpbmckKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZSgoeyByZXNvdXJjZXMgfSkgPT4gISFyZXNvdXJjZXMuc2l6ZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2FkaW5nJCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlKCh7IHJlc291cmNlcyB9KSA9PiAhIXJlc291cmNlcz8uc2l6ZSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLnN0b3JlLnBhdGNoKHsgcmVzb3VyY2VzOiBuZXcgU2V0KCkgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLnN0b3JlLnN0YXRlLnJlc291cmNlcztcclxuICAgIHJlc291cmNlcy5hZGQocmVzb3VyY2UpO1xyXG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IHJlc291cmNlcyB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVJlc291cmNlKHJlc291cmNlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuc3RvcmUuc3RhdGUucmVzb3VyY2VzO1xyXG4gICAgcmVzb3VyY2VzLmRlbGV0ZShyZXNvdXJjZSk7XHJcbiAgICB0aGlzLnN0b3JlLnBhdGNoKHsgcmVzb3VyY2VzIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,78 +0,0 @@
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
- export 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: "18.1.5", 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: "18.1.5", ngImport: i0, type: RestService, providedIn: 'root' }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RestService, decorators: [{
70
- type: Injectable,
71
- args: [{
72
- providedIn: 'root',
73
- }]
74
- }], ctorParameters: () => [{ type: undefined, decorators: [{
75
- type: Inject,
76
- args: [CORE_OPTIONS]
77
- }] }, { type: i1.HttpClient }, { type: i2.ExternalHttpClient }, { type: i3.EnvironmentService }, { type: i4.HttpErrorReporterService }] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFzQixVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUt6RSxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNrQyxPQUFpQixFQUN2QyxJQUFnQixFQUNoQixZQUFnQyxFQUNoQyxXQUErQixFQUMvQixpQkFBMkM7UUFKckIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUN2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtJQUNuRCxDQUFDO0lBRUssZUFBZSxDQUFDLE9BQTJCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1ldGVyQ29kZWMsIEh0dHBQYXJhbXMsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFeHRlcm5hbEh0dHBDbGllbnQgfSBmcm9tICcuLi9jbGllbnRzL2h0dHAuY2xpZW50JztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuLi9tb2RlbHMvcmVzdCc7XHJcbmltcG9ydCB7IENPUkVfT1BUSU9OUyB9IGZyb20gJy4uL3Rva2Vucy9vcHRpb25zLnRva2VuJztcclxuaW1wb3J0IHsgaXNVbmRlZmluZWRPckVtcHR5U3RyaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uLXV0aWxzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLWVycm9yLXJlcG9ydGVyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoQ09SRV9PUFRJT05TKSBwcm90ZWN0ZWQgb3B0aW9uczogQUJQLlJvb3QsXHJcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByb3RlY3RlZCBleHRlcm5hbEh0dHA6IEV4dGVybmFsSHR0cENsaWVudCxcclxuICAgIHByb3RlY3RlZCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEFwaUZyb21TdG9yZShhcGlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnQuZ2V0QXBpVXJsKGFwaU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJyOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5odHRwRXJyb3JSZXBvcnRlci5yZXBvcnRFcnJvcihlcnIpO1xyXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICB9XHJcblxyXG4gIHJlcXVlc3Q8VCwgUj4oXHJcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxUPiB8IFJlc3QuUmVxdWVzdDxUPixcclxuICAgIGNvbmZpZz86IFJlc3QuQ29uZmlnLFxyXG4gICAgYXBpPzogc3RyaW5nLFxyXG4gICk6IE9ic2VydmFibGU8Uj4ge1xyXG4gICAgY29uZmlnID0gY29uZmlnIHx8ICh7fSBhcyBSZXN0LkNvbmZpZyk7XHJcbiAgICBhcGkgPSBhcGkgfHwgdGhpcy5nZXRBcGlGcm9tU3RvcmUoY29uZmlnLmFwaU5hbWUpO1xyXG4gICAgY29uc3QgeyBtZXRob2QsIHBhcmFtcywgLi4ub3B0aW9ucyB9ID0gcmVxdWVzdDtcclxuICAgIGNvbnN0IHsgb2JzZXJ2ZSA9IFJlc3QuT2JzZXJ2ZS5Cb2R5LCBza2lwSGFuZGxlRXJyb3IgfSA9IGNvbmZpZztcclxuICAgIGNvbnN0IHVybCA9IHRoaXMucmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhhcGkgKyByZXF1ZXN0LnVybCk7XHJcblxyXG4gICAgY29uc3QgaHR0cENsaWVudDogSHR0cENsaWVudCA9IHRoaXMuZ2V0SHR0cENsaWVudChjb25maWcuc2tpcEFkZGluZ0hlYWRlcik7XHJcbiAgICByZXR1cm4gaHR0cENsaWVudFxyXG4gICAgICAucmVxdWVzdDxSPihtZXRob2QsIHVybCwge1xyXG4gICAgICAgIG9ic2VydmUsXHJcbiAgICAgICAgLi4uKHBhcmFtcyAmJiB7XHJcbiAgICAgICAgICBwYXJhbXM6IHRoaXMuZ2V0UGFyYW1zKHBhcmFtcywgY29uZmlnLmh0dHBQYXJhbUVuY29kZXIpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIH0gYXMgYW55KVxyXG4gICAgICAucGlwZShjYXRjaEVycm9yKGVyciA9PiAoc2tpcEhhbmRsZUVycm9yID8gdGhyb3dFcnJvcigoKSA9PiBlcnIpIDogdGhpcy5oYW5kbGVFcnJvcihlcnIpKSkpO1xyXG4gIH1cclxuICBwcml2YXRlIGdldEh0dHBDbGllbnQoaXNFeHRlcm5hbDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGlzRXh0ZXJuYWwgPyB0aGlzLmV4dGVybmFsSHR0cCA6IHRoaXMuaHR0cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyYW1zKHBhcmFtczogUmVzdC5QYXJhbXMsIGVuY29kZXI/OiBIdHRwUGFyYW1ldGVyQ29kZWMpOiBIdHRwUGFyYW1zIHtcclxuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmIChpc1VuZGVmaW5lZE9yRW1wdHlTdHJpbmcodmFsdWUpKSByZXR1cm4gYWNjO1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgIXRoaXMub3B0aW9ucy5zZW5kTnVsbHNBc1F1ZXJ5UGFyYW0pIHJldHVybiBhY2M7XHJcbiAgICAgIGFjY1trZXldID0gdmFsdWU7XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCB7fSBhcyBhbnkpO1xyXG4gICAgcmV0dXJuIGVuY29kZXJcclxuICAgICAgPyBuZXcgSHR0cFBhcmFtcyh7IGVuY29kZXIsIGZyb21PYmplY3Q6IGZpbHRlcmVkUGFyYW1zIH0pXHJcbiAgICAgIDogbmV3IEh0dHBQYXJhbXMoeyBmcm9tT2JqZWN0OiBmaWx0ZXJlZFBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoLyhbXjpdXFwvKVxcLysvZywgJyQxJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { Injectable, inject, signal } 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
- export const NavigationEvent = {
6
- Cancel: NavigationCancel,
7
- End: NavigationEnd,
8
- Error: NavigationError,
9
- Start: NavigationStart,
10
- };
11
- export class RouterEvents {
12
- #previousNavigation;
13
- #currentNavigation;
14
- constructor() {
15
- this.router = inject(Router);
16
- this.#previousNavigation = signal(undefined);
17
- this.previousNavigation = this.#previousNavigation.asReadonly();
18
- this.#currentNavigation = signal(undefined);
19
- this.currentNavigation = this.#currentNavigation.asReadonly();
20
- this.listenToNavigation();
21
- }
22
- listenToNavigation() {
23
- const routerEvent$ = this.router.events.pipe(filter(e => e instanceof NavigationEvent.End && !e.url.includes('error')));
24
- routerEvent$.subscribe(event => {
25
- this.#previousNavigation.set(this.currentNavigation());
26
- this.#currentNavigation.set(event.url);
27
- });
28
- }
29
- getEvents(...eventTypes) {
30
- const filterRouterEvents = (event) => eventTypes.some(type => event instanceof type);
31
- return this.router.events.pipe(filter(filterRouterEvents));
32
- }
33
- getNavigationEvents(...navigationEventKeys) {
34
- const filterNavigationEvents = (event) => navigationEventKeys.some(key => event instanceof NavigationEvent[key]);
35
- return this.router.events.pipe(filter(filterNavigationEvents));
36
- }
37
- getAllEvents() {
38
- return this.router.events;
39
- }
40
- getAllNavigationEvents() {
41
- const keys = Object.keys(NavigationEvent);
42
- return this.getNavigationEvents(...keys);
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RouterEvents, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
45
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RouterEvents, providedIn: 'root' }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RouterEvents, decorators: [{
48
- type: Injectable,
49
- args: [{ providedIn: 'root' }]
50
- }], ctorParameters: () => [] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWV2ZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci1ldmVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEdBSVAsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hCLEdBQUcsRUFBRSxhQUFhO0lBQ2xCLEtBQUssRUFBRSxlQUFlO0lBQ3RCLEtBQUssRUFBRSxlQUFlO0NBQ3ZCLENBQUM7QUFHRixNQUFNLE9BQU8sWUFBWTtJQUdkLG1CQUFtQixDQUF5QztJQUc1RCxrQkFBa0IsQ0FBeUM7SUFHcEU7UUFSbUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyx3QkFBbUIsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLHVCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsRCx1QkFBa0IsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLHNCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUd2RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUM3QyxDQUFDO1FBRS9CLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBb0MsR0FBRyxVQUFhO1FBQzNELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUM7UUFFNUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsbUJBQW1CLENBQWdDLEdBQUcsbUJBQXNCO1FBTzFFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQW9DLEVBQUUsQ0FDaEYsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQXdCLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQWxEVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5hdmlnYXRpb25DYW5jZWwsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBOYXZpZ2F0aW9uRXJyb3IsXHJcbiAgTmF2aWdhdGlvblN0YXJ0LFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJFdmVudCxcclxuICBFdmVudCxcclxuICBSb3V0ZXJTdGF0ZSxcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBjb25zdCBOYXZpZ2F0aW9uRXZlbnQgPSB7XHJcbiAgQ2FuY2VsOiBOYXZpZ2F0aW9uQ2FuY2VsLFxyXG4gIEVuZDogTmF2aWdhdGlvbkVuZCxcclxuICBFcnJvcjogTmF2aWdhdGlvbkVycm9yLFxyXG4gIFN0YXJ0OiBOYXZpZ2F0aW9uU3RhcnQsXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUm91dGVyRXZlbnRzIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gIHJlYWRvbmx5ICNwcmV2aW91c05hdmlnYXRpb24gPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByZXZpb3VzTmF2aWdhdGlvbiA9IHRoaXMuI3ByZXZpb3VzTmF2aWdhdGlvbi5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIHJlYWRvbmx5ICNjdXJyZW50TmF2aWdhdGlvbiA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgY3VycmVudE5hdmlnYXRpb24gPSB0aGlzLiNjdXJyZW50TmF2aWdhdGlvbi5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5saXN0ZW5Ub05hdmlnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub05hdmlnYXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCByb3V0ZXJFdmVudCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FdmVudC5FbmQgJiYgIWUudXJsLmluY2x1ZGVzKCdlcnJvcicpKVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+O1xyXG4gICAgXHJcbiAgICByb3V0ZXJFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgdGhpcy4jcHJldmlvdXNOYXZpZ2F0aW9uLnNldCh0aGlzLmN1cnJlbnROYXZpZ2F0aW9uKCkpO1xyXG4gICAgICB0aGlzLiNjdXJyZW50TmF2aWdhdGlvbi5zZXQoZXZlbnQudXJsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRzPFQgZXh0ZW5kcyBSb3V0ZXJFdmVudENvbnN0cnVjdG9ycz4oLi4uZXZlbnRUeXBlczogVCkge1xyXG4gICAgY29uc3QgZmlsdGVyUm91dGVyRXZlbnRzID0gKGV2ZW50OiBFdmVudCkgPT4gZXZlbnRUeXBlcy5zb21lKHR5cGUgPT4gZXZlbnQgaW5zdGFuY2VvZiB0eXBlKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGZpbHRlclJvdXRlckV2ZW50cykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmF2aWdhdGlvbkV2ZW50czxUIGV4dGVuZHMgTmF2aWdhdGlvbkV2ZW50S2V5cz4oLi4ubmF2aWdhdGlvbkV2ZW50S2V5czogVCkge1xyXG4gICAgdHlwZSBGaWx0ZXJlZE5hdmlnYXRpb25FdmVudCA9IFQgZXh0ZW5kcyAoaW5mZXIgS2V5KVtdXHJcbiAgICAgID8gS2V5IGV4dGVuZHMgTmF2aWdhdGlvbkV2ZW50S2V5XHJcbiAgICAgICAgPyBJbnN0YW5jZVR5cGU8TmF2aWdhdGlvbkV2ZW50VHlwZVtLZXldPlxyXG4gICAgICAgIDogbmV2ZXJcclxuICAgICAgOiBuZXZlcjtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJOYXZpZ2F0aW9uRXZlbnRzID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIEZpbHRlcmVkTmF2aWdhdGlvbkV2ZW50ID0+XHJcbiAgICAgIG5hdmlnYXRpb25FdmVudEtleXMuc29tZShrZXkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXZlbnRba2V5XSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihmaWx0ZXJOYXZpZ2F0aW9uRXZlbnRzKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxFdmVudHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTmF2aWdhdGlvbkV2ZW50cygpIHtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhOYXZpZ2F0aW9uRXZlbnQpIGFzIE5hdmlnYXRpb25FdmVudEtleXM7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROYXZpZ2F0aW9uRXZlbnRzKC4uLmtleXMpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBSb3V0ZXJFdmVudENvbnN0cnVjdG9ycyA9IFtUeXBlPFJvdXRlckV2ZW50PiwgLi4uVHlwZTxSb3V0ZXJFdmVudD5bXV07XHJcblxyXG50eXBlIE5hdmlnYXRpb25FdmVudEtleXMgPSBbTmF2aWdhdGlvbkV2ZW50S2V5LCAuLi5OYXZpZ2F0aW9uRXZlbnRLZXlbXV07XHJcblxyXG50eXBlIE5hdmlnYXRpb25FdmVudFR5cGUgPSB0eXBlb2YgTmF2aWdhdGlvbkV2ZW50O1xyXG5cclxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkV2ZW50S2V5ID0ga2V5b2YgTmF2aWdhdGlvbkV2ZW50VHlwZTtcclxuIl19
@@ -1,51 +0,0 @@
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
- export 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: "18.1.5", 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: "18.1.5", ngImport: i0, type: RouterWaitService, providedIn: 'root' }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RouterWaitService, decorators: [{
46
- type: Injectable,
47
- args: [{
48
- providedIn: 'root',
49
- }]
50
- }], ctorParameters: () => [{ type: i1.RouterEvents }, { type: i0.Injector }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXdhaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItd2FpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBU3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBb0IsWUFBMEIsRUFBRSxRQUFrQjtRQUE5QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUh0QyxVQUFLLEdBQUcsSUFBSSxhQUFhLENBQWtCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHckMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8scUNBQXFDO1FBQzNDLElBQUksQ0FBQyxZQUFZO2FBQ2Qsc0JBQXNCLEVBQUU7YUFDeEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsRUFDOUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3BCLFNBQVM7WUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO2dCQUNoQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDVixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ2QsRUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUNoQzthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQTFDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgb2YsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgbWFwVG8sIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IExPQURFUl9ERUxBWSB9IGZyb20gJy4uL3Rva2Vucy9sb2RhZXItZGVsYXkudG9rZW4nO1xyXG5pbXBvcnQgeyBJbnRlcm5hbFN0b3JlIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJuYWwtc3RvcmUtdXRpbHMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJFdmVudHMgfSBmcm9tICcuL3JvdXRlci1ldmVudHMuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlcldhaXRTdGF0ZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlcldhaXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0b3JlID0gbmV3IEludGVybmFsU3RvcmU8Um91dGVyV2FpdFN0YXRlPih7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZGVsYXk6IG51bWJlcjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlckV2ZW50czogUm91dGVyRXZlbnRzLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMuZGVsYXkgPSBpbmplY3Rvci5nZXQoTE9BREVSX0RFTEFZLCA1MDApO1xyXG4gICAgdGhpcy51cGRhdGVMb2FkaW5nU3RhdHVzT25OYXZpZ2F0aW9uRXZlbnRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUxvYWRpbmdTdGF0dXNPbk5hdmlnYXRpb25FdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlckV2ZW50c1xyXG4gICAgICAuZ2V0QWxsTmF2aWdhdGlvbkV2ZW50cygpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCksXHJcbiAgICAgICAgc3dpdGNoTWFwKGNvbmRpdGlvbiA9PlxyXG4gICAgICAgICAgY29uZGl0aW9uXHJcbiAgICAgICAgICAgID8gdGhpcy5kZWxheSA9PT0gMFxyXG4gICAgICAgICAgICAgID8gb2YodHJ1ZSlcclxuICAgICAgICAgICAgICA6IHRpbWVyKHRoaXMuZGVsYXkgfHwgMCkucGlwZShtYXBUbyh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICA6IG9mKGZhbHNlKSxcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmRlc3Ryb3kkLm5leHQoKSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyhzdGF0dXMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExvYWRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZS5sb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9hZGluZyQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKCh7IGxvYWRpbmcgfSkgPT4gbG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2FkaW5nJCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlKCh7IGxvYWRpbmcgfSkgPT4gbG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyBsb2FkaW5nIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,200 +0,0 @@
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 { SORT_COMPARE_FUNC } from '../tokens/compare-func.token';
9
- import * as i0 from "@angular/core";
10
- // eslint-disable-next-line @typescript-eslint/ban-types
11
- export class AbstractTreeService {
12
- constructor() {
13
- this._flat$ = new BehaviorSubject([]);
14
- this._tree$ = new BehaviorSubject([]);
15
- this._visible$ = new BehaviorSubject([]);
16
- this.shouldSingularizeRoutes = true;
17
- }
18
- get flat() {
19
- return this._flat$.value;
20
- }
21
- get flat$() {
22
- return this._flat$.asObservable();
23
- }
24
- get tree() {
25
- return this._tree$.value;
26
- }
27
- get tree$() {
28
- return this._tree$.asObservable();
29
- }
30
- get visible() {
31
- return this._visible$.value;
32
- }
33
- get visible$() {
34
- return this._visible$.asObservable();
35
- }
36
- filterWith(setOrMap) {
37
- return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));
38
- }
39
- findItemsToRemove(set) {
40
- return this._flat$.value.reduce((acc, item) => {
41
- if (!acc.has(item[this.parentId])) {
42
- return acc;
43
- }
44
- const childSet = new Set([item[this.id]]);
45
- const children = this.findItemsToRemove(childSet);
46
- return new Set([...acc, ...children]);
47
- }, set);
48
- }
49
- publish(flatItems) {
50
- this._flat$.next(flatItems);
51
- this._tree$.next(this.createTree(flatItems));
52
- this._visible$.next(this.createTree(flatItems.filter(item => !this.hide(item))));
53
- return flatItems;
54
- }
55
- createTree(items) {
56
- return createTreeFromList(items, item => item[this.id], item => item[this.parentId], item => BaseTreeNode.create(item));
57
- }
58
- createGroupedTree(list) {
59
- const map = createGroupMap(list, this.othersGroup);
60
- if (!map) {
61
- return undefined;
62
- }
63
- return Array.from(map, ([key, items]) => ({ group: key, items }));
64
- }
65
- add(items) {
66
- let flatItems = [];
67
- if (!this.shouldSingularizeRoutes) {
68
- flatItems = [...this.flat, ...items];
69
- }
70
- if (this.shouldSingularizeRoutes) {
71
- const map = new Map();
72
- items.forEach(item => map.set(item[this.id], item));
73
- flatItems = this.filterWith(map);
74
- map.forEach(pushValueTo(flatItems));
75
- }
76
- flatItems.sort(this.sort);
77
- return this.publish(flatItems);
78
- }
79
- find(predicate, tree = this.tree) {
80
- return tree.reduce((acc, node) => {
81
- if (acc) {
82
- return acc;
83
- }
84
- if (predicate(node)) {
85
- return node;
86
- }
87
- return this.find(predicate, node.children);
88
- }, null);
89
- }
90
- patch(identifier, props) {
91
- const flatItems = this._flat$.value;
92
- const index = flatItems.findIndex(item => item[this.id] === identifier);
93
- if (index < 0) {
94
- return false;
95
- }
96
- flatItems[index] = { ...flatItems[index], ...props };
97
- flatItems.sort(this.sort);
98
- return this.publish(flatItems);
99
- }
100
- refresh() {
101
- return this.add([]);
102
- }
103
- remove(identifiers) {
104
- const set = new Set();
105
- identifiers.forEach(id => set.add(id));
106
- const setToRemove = this.findItemsToRemove(set);
107
- const flatItems = this.filterWith(setToRemove);
108
- return this.publish(flatItems);
109
- }
110
- removeByParam(params) {
111
- if (!params) {
112
- return null;
113
- }
114
- const keys = Object.keys(params);
115
- if (keys.length === 0) {
116
- return null;
117
- }
118
- const excludedList = this.flat.filter(item => keys.every(key => item[key] === params[key]));
119
- if (!excludedList?.length) {
120
- return null;
121
- }
122
- for (const item of excludedList) {
123
- this.removeByParam({ [this.parentId]: item[this.id] });
124
- }
125
- const flatItems = this.flat.filter(item => !excludedList.includes(item));
126
- return this.publish(flatItems);
127
- }
128
- search(params, tree = this.tree) {
129
- const searchKeys = Object.keys(params);
130
- return tree.reduce((acc, node) => {
131
- if (acc) {
132
- return acc;
133
- }
134
- if (searchKeys.every(key => node[key] === params[key])) {
135
- return node;
136
- }
137
- return this.search(params, node.children);
138
- }, null);
139
- }
140
- setSingularizeStatus(singularize = true) {
141
- this.shouldSingularizeRoutes = singularize;
142
- }
143
- }
144
- export class AbstractNavTreeService extends AbstractTreeService {
145
- constructor(injector) {
146
- super();
147
- this.injector = injector;
148
- this.id = 'name';
149
- this.parentId = 'parentName';
150
- this.hide = (item) => item.invisible || !this.isGranted(item);
151
- this.sort = (a, b) => {
152
- return this.compareFunc(a, b);
153
- };
154
- const configState = this.injector.get(ConfigStateService);
155
- this.subscription = configState
156
- .createOnUpdateStream(state => state)
157
- .subscribe(() => this.refresh());
158
- this.permissionService = injector.get(PermissionService);
159
- this.othersGroup = injector.get(OTHERS_GROUP);
160
- this.compareFunc = injector.get(SORT_COMPARE_FUNC);
161
- }
162
- isGranted({ requiredPolicy }) {
163
- return this.permissionService.getGrantedPolicy(requiredPolicy);
164
- }
165
- hasChildren(identifier) {
166
- const node = this.find(item => item[this.id] === identifier);
167
- return Boolean(node?.children?.length);
168
- }
169
- hasInvisibleChild(identifier) {
170
- const node = this.find(item => item[this.id] === identifier);
171
- return node?.children?.some(child => child.invisible) || false;
172
- }
173
- /* istanbul ignore next */
174
- ngOnDestroy() {
175
- this.subscription.unsubscribe();
176
- }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AbstractNavTreeService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
178
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AbstractNavTreeService }); }
179
- }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AbstractNavTreeService, decorators: [{
181
- type: Injectable
182
- }], ctorParameters: () => [{ type: i0.Injector }] });
183
- export class RoutesService extends AbstractNavTreeService {
184
- hasPathOrChild(item) {
185
- return Boolean(item.path) || this.hasChildren(item.name);
186
- }
187
- get groupedVisible() {
188
- return this.createGroupedTree(this.visible.filter(item => this.hasPathOrChild(item)));
189
- }
190
- get groupedVisible$() {
191
- return this.visible$.pipe(map(items => items.filter(item => this.hasPathOrChild(item))), map(visible => this.createGroupedTree(visible)));
192
- }
193
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RoutesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
194
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RoutesService, providedIn: 'root' }); }
195
- }
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: RoutesService, decorators: [{
197
- type: Injectable,
198
- args: [{ providedIn: 'root' }]
199
- }] });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvcm91dGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBNEIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEVBR2xCLGNBQWMsR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVqRSx3REFBd0Q7QUFDeEQsTUFBTSxPQUFnQixtQkFBbUI7SUFBekM7UUFNVSxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDdEMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUNoRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBR2pELDRCQUF1QixHQUFHLElBQUksQ0FBQztJQXdLM0MsQ0FBQztJQXRLQyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFD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QUFDO0lBQ2xDLENBQUM7OEdBMUNtQixzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEM0MsVUFBVTs7QUErQ1gsTUFBTSxPQUFPLGFBQWMsU0FBUSxzQkFBaUM7SUFDMUQsY0FBYyxDQUFDLElBQXlCO1FBQzlDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQzdELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNoRCxDQUFDO0lBQ0osQ0FBQzs4R0FkVSxhQUFhO2tIQUFiLGFBQWEsY0FEQSxNQUFNOzsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IE9USEVSU19HUk9VUCB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IHB1c2hWYWx1ZVRvIH0gZnJvbSAnLi4vdXRpbHMvYXJyYXktdXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VUcmVlTm9kZSxcclxuICBjcmVhdGVUcmVlRnJvbUxpc3QsXHJcbiAgVHJlZU5vZGUsXHJcbiAgUm91dGVHcm91cCxcclxuICBjcmVhdGVHcm91cE1hcCxcclxufSBmcm9tICcuLi91dGlscy90cmVlLXV0aWxzJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTT1JUX0NPTVBBUkVfRlVOQyB9IGZyb20gJy4uL3Rva2Vucy9jb21wYXJlLWZ1bmMudG9rZW4nO1xyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VHJlZVNlcnZpY2U8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sXTogYW55IH0+IHtcclxuICBhYnN0cmFjdCBpZDogc3RyaW5nO1xyXG4gIGFic3RyYWN0IHBhcmVudElkOiBzdHJpbmc7XHJcbiAgYWJzdHJhY3QgaGlkZTogKGl0ZW06IFQpID0+IGJvb2xlYW47XHJcbiAgYWJzdHJhY3Qgc29ydDogKGE6IFQsIGI6IFQpID0+IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBfZmxhdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xyXG4gIHByaXZhdGUgX3RyZWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmVlTm9kZTxUPltdPihbXSk7XHJcbiAgcHJpdmF0ZSBfdmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyZWVOb2RlPFQ+W10+KFtdKTtcclxuXHJcbiAgcHJvdGVjdGVkIG90aGVyc0dyb3VwOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIHNob3VsZFNpbmd1bGFyaXplUm91dGVzID0gdHJ1ZTtcclxuXHJcbiAgZ2V0IGZsYXQoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9mbGF0JC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBmbGF0JCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZsYXQkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyZWUoKTogVHJlZU5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJlZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdHJlZSQoKTogT2JzZXJ2YWJsZTxUcmVlTm9kZTxUPltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJlZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZSgpOiBUcmVlTm9kZTxUPltdIHtcclxuICAgIHJldHVybiB0aGlzLl92aXNpYmxlJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlJCgpOiBPYnNlcnZhYmxlPFRyZWVOb2RlPFQ+W10+IHtcclxuICAgIHJldHVybiB0aGlzLl92aXNpYmxlJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyV2l0aChzZXRPck1hcDogU2V0PHN0cmluZz4gfCBNYXA8c3RyaW5nLCBUPik6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQudmFsdWUuZmlsdGVyKGl0ZW0gPT4gIXNldE9yTWFwLmhhcyhpdGVtW3RoaXMuaWRdKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRJdGVtc1RvUmVtb3ZlKHNldDogU2V0PHN0cmluZz4pOiBTZXQ8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQudmFsdWUucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcclxuICAgICAgaWYgKCFhY2MuaGFzKGl0ZW1bdGhpcy5wYXJlbnRJZF0pKSB7XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgY2hpbGRTZXQgPSBuZXcgU2V0KFtpdGVtW3RoaXMuaWRdXSk7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5maW5kSXRlbXNUb1JlbW92ZShjaGlsZFNldCk7XHJcbiAgICAgIHJldHVybiBuZXcgU2V0KFsuLi5hY2MsIC4uLmNoaWxkcmVuXSk7XHJcbiAgICB9LCBzZXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwdWJsaXNoKGZsYXRJdGVtczogVFtdKTogVFtdIHtcclxuICAgIHRoaXMuX2ZsYXQkLm5leHQoZmxhdEl0ZW1zKTtcclxuICAgIHRoaXMuX3RyZWUkLm5leHQodGhpcy5jcmVhdGVUcmVlKGZsYXRJdGVtcykpO1xyXG4gICAgdGhpcy5fdmlzaWJsZSQubmV4dCh0aGlzLmNyZWF0ZVRyZWUoZmxhdEl0ZW1zLmZpbHRlcihpdGVtID0+ICF0aGlzLmhpZGUoaXRlbSkpKSk7XHJcbiAgICByZXR1cm4gZmxhdEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNyZWF0ZVRyZWUoaXRlbXM6IFRbXSk6IFRyZWVOb2RlPFQ+W10ge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVRyZWVGcm9tTGlzdDxULCBUcmVlTm9kZTxUPj4oXHJcbiAgICAgIGl0ZW1zLFxyXG4gICAgICBpdGVtID0+IGl0ZW1bdGhpcy5pZF0sXHJcbiAgICAgIGl0ZW0gPT4gaXRlbVt0aGlzLnBhcmVudElkXSxcclxuICAgICAgaXRlbSA9PiBCYXNlVHJlZU5vZGUuY3JlYXRlKGl0ZW0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjcmVhdGVHcm91cGVkVHJlZShsaXN0OiBUcmVlTm9kZTxUPltdKTogUm91dGVHcm91cDxUPltdIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IG1hcCA9IGNyZWF0ZUdyb3VwTWFwPFQ+KGxpc3QsIHRoaXMub3RoZXJzR3JvdXApO1xyXG4gICAgaWYgKCFtYXApIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShtYXAsIChba2V5LCBpdGVtc10pID0+ICh7IGdyb3VwOiBrZXksIGl0ZW1zIH0pKTtcclxuICB9XHJcblxyXG4gIGFkZChpdGVtczogVFtdKTogVFtdIHtcclxuICAgIGxldCBmbGF0SXRlbXM6IFRbXSA9IFtdO1xyXG5cclxuICAgIGlmICghdGhpcy5zaG91bGRTaW5ndWxhcml6ZVJvdXRlcykge1xyXG4gICAgICBmbGF0SXRlbXMgPSBbLi4udGhpcy5mbGF0LCAuLi5pdGVtc107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvdWxkU2luZ3VsYXJpemVSb3V0ZXMpIHtcclxuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFQ+KCk7XHJcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiBtYXAuc2V0KGl0ZW1bdGhpcy5pZF0sIGl0ZW0pKTtcclxuICAgICAgZmxhdEl0ZW1zID0gdGhpcy5maWx0ZXJXaXRoKG1hcCk7XHJcbiAgICAgIG1hcC5mb3JFYWNoKHB1c2hWYWx1ZVRvKGZsYXRJdGVtcykpO1xyXG4gICAgfVxyXG5cclxuICAgIGZsYXRJdGVtcy5zb3J0KHRoaXMuc29ydCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHVibGlzaChmbGF0SXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgZmluZChwcmVkaWNhdGU6IChpdGVtOiBUcmVlTm9kZTxUPikgPT4gYm9vbGVhbiwgdHJlZSA9IHRoaXMudHJlZSk6IFRyZWVOb2RlPFQ+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdHJlZS5yZWR1Y2U8VHJlZU5vZGU8VD4gfCBudWxsPigoYWNjLCBub2RlKSA9PiB7XHJcbiAgICAgIGlmIChhY2MpIHtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmZpbmQocHJlZGljYXRlLCBub2RlLmNoaWxkcmVuKTtcclxuICAgIH0sIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2goaWRlbnRpZmllcjogc3RyaW5nLCBwcm9wczogUGFydGlhbDxUPik6IFRbXSB8IGZhbHNlIHtcclxuICAgIGNvbnN0IGZsYXRJdGVtcyA9IHRoaXMuX2ZsYXQkLnZhbHVlO1xyXG4gICAgY29uc3QgaW5kZXggPSBmbGF0SXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbVt0aGlzLmlkXSA9PT0gaWRlbnRpZmllcik7XHJcbiAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBmbGF0SXRlbXNbaW5kZXhdID0geyAuLi5mbGF0SXRlbXNbaW5kZXhdLCAuLi5wcm9wcyB9O1xyXG5cclxuICAgIGZsYXRJdGVtcy5zb3J0KHRoaXMuc29ydCk7XHJcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoKGZsYXRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGQoW10pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGlkZW50aWZpZXJzOiBzdHJpbmdbXSk6IFRbXSB7XHJcbiAgICBjb25zdCBzZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGlkZW50aWZpZXJzLmZvckVhY2goaWQgPT4gc2V0LmFkZChpZCkpO1xyXG5cclxuICAgIGNvbnN0IHNldFRvUmVtb3ZlID0gdGhpcy5maW5kSXRlbXNUb1JlbW92ZShzZXQpO1xyXG4gICAgY29uc3QgZmxhdEl0ZW1zID0gdGhpcy5maWx0ZXJXaXRoKHNldFRvUmVtb3ZlKTtcclxuICAgIHJldHVybiB0aGlzLnB1Ymxpc2goZmxhdEl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUJ5UGFyYW0ocGFyYW1zOiBQYXJ0aWFsPFQ+KTogVFtdIHwgbnVsbCB7XHJcbiAgICBpZiAoIXBhcmFtcykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFyYW1zKSBhcyBBcnJheTxrZXlvZiBQYXJ0aWFsPFQ+PjtcclxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBleGNsdWRlZExpc3QgPSB0aGlzLmZsYXQuZmlsdGVyKGl0ZW0gPT4ga2V5cy5ldmVyeShrZXkgPT4gaXRlbVtrZXldID09PSBwYXJhbXNba2V5XSkpO1xyXG4gICAgaWYgKCFleGNsdWRlZExpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXhjbHVkZWRMaXN0KSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQnlQYXJhbSh7IFt0aGlzLnBhcmVudElkXTogaXRlbVt0aGlzLmlkXSB9IGFzIFBhcnRpYWw8VD4pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZsYXRJdGVtcyA9IHRoaXMuZmxhdC5maWx0ZXIoaXRlbSA9PiAhZXhjbHVkZWRMaXN0LmluY2x1ZGVzKGl0ZW0pKTtcclxuICAgIHJldHVybiB0aGlzLnB1Ymxpc2goZmxhdEl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChwYXJhbXM6IFBhcnRpYWw8VD4sIHRyZWUgPSB0aGlzLnRyZWUpOiBUcmVlTm9kZTxUPiB8IG51bGwge1xyXG4gICAgY29uc3Qgc2VhcmNoS2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcykgYXMgQXJyYXk8a2V5b2YgUGFydGlhbDxUPj47XHJcblxyXG4gICAgcmV0dXJuIHRyZWUucmVkdWNlPFRyZWVOb2RlPFQ+IHwgbnVsbD4oKGFjYywgbm9kZSkgPT4ge1xyXG4gICAgICBpZiAoYWNjKSB7XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNlYXJjaEtleXMuZXZlcnkoa2V5ID0+IG5vZGVba2V5XSA9PT0gcGFyYW1zW2tleV0pKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaChwYXJhbXMsIG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgfSwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBzZXRTaW5ndWxhcml6ZVN0YXR1cyhzaW5ndWxhcml6ZSA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvdWxkU2luZ3VsYXJpemVSb3V0ZXMgPSBzaW5ndWxhcml6ZTtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmF2VHJlZVNlcnZpY2U8VCBleHRlbmRzIEFCUC5OYXY+XHJcbiAgZXh0ZW5kcyBBYnN0cmFjdFRyZWVTZXJ2aWNlPFQ+XHJcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcclxue1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBjb21wYXJlRnVuYztcclxuICByZWFkb25seSBpZCA9ICduYW1lJztcclxuICByZWFkb25seSBwYXJlbnRJZCA9ICdwYXJlbnROYW1lJztcclxuICByZWFkb25seSBoaWRlID0gKGl0ZW06IFQpID0+IGl0ZW0uaW52aXNpYmxlIHx8ICF0aGlzLmlzR3JhbnRlZChpdGVtKTtcclxuICByZWFkb25seSBzb3J0ID0gKGE6IFQsIGI6IFQpID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBhcmVGdW5jKGEsIGIpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBjb25zdCBjb25maWdTdGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGNvbmZpZ1N0YXRlXHJcbiAgICAgIC5jcmVhdGVPblVwZGF0ZVN0cmVhbShzdGF0ZSA9PiBzdGF0ZSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2goKSk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFBlcm1pc3Npb25TZXJ2aWNlKTtcclxuICAgIHRoaXMub3RoZXJzR3JvdXAgPSBpbmplY3Rvci5nZXQoT1RIRVJTX0dST1VQKTtcclxuICAgIHRoaXMuY29tcGFyZUZ1bmMgPSBpbmplY3Rvci5nZXQoU09SVF9DT01QQVJFX0ZVTkMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzR3JhbnRlZCh7IHJlcXVpcmVkUG9saWN5IH06IFQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmdldEdyYW50ZWRQb2xpY3kocmVxdWlyZWRQb2xpY3kpO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGRyZW4oaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLmlkXSA9PT0gaWRlbnRpZmllcik7XHJcbiAgICByZXR1cm4gQm9vbGVhbihub2RlPy5jaGlsZHJlbj8ubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIGhhc0ludmlzaWJsZUNoaWxkKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZChpdGVtID0+IGl0ZW1bdGhpcy5pZF0gPT09IGlkZW50aWZpZXIpO1xyXG4gICAgcmV0dXJuIG5vZGU/LmNoaWxkcmVuPy5zb21lKGNoaWxkID0+IGNoaWxkLmludmlzaWJsZSkgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXNTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3ROYXZUcmVlU2VydmljZTxBQlAuUm91dGU+IHtcclxuICBwcml2YXRlIGhhc1BhdGhPckNoaWxkKGl0ZW06IFRyZWVOb2RlPEFCUC5Sb3V0ZT4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBCb29sZWFuKGl0ZW0ucGF0aCkgfHwgdGhpcy5oYXNDaGlsZHJlbihpdGVtLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyb3VwZWRWaXNpYmxlKCk6IFJvdXRlR3JvdXA8QUJQLlJvdXRlPltdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUdyb3VwZWRUcmVlKHRoaXMudmlzaWJsZS5maWx0ZXIoaXRlbSA9PiB0aGlzLmhhc1BhdGhPckNoaWxkKGl0ZW0pKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JvdXBlZFZpc2libGUkKCk6IE9ic2VydmFibGU8Um91dGVHcm91cDxBQlAuUm91dGU+W10gfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnZpc2libGUkLnBpcGUoXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiB0aGlzLmhhc1BhdGhPckNoaWxkKGl0ZW0pKSksXHJcbiAgICAgIG1hcCh2aXNpYmxlID0+IHRoaXMuY3JlYXRlR3JvdXBlZFRyZWUodmlzaWJsZSkpLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19