@sunbird-cb/utils 1.0.16 → 1.0.18-ang-9-12

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 (235) hide show
  1. package/bundles/sunbird-cb-utils.umd.js +2196 -2928
  2. package/bundles/sunbird-cb-utils.umd.js.map +1 -1
  3. package/esm2015/lib/components/image-crop/image-crop.component.js +38 -67
  4. package/esm2015/lib/components/image-crop/image-crop.module.js +52 -21
  5. package/esm2015/lib/constants/features.enum.js +555 -555
  6. package/esm2015/lib/constants/instances.enum.js +5 -5
  7. package/esm2015/lib/constants/misc.constants.js +2 -1
  8. package/esm2015/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.js +34 -34
  9. package/esm2015/lib/directives/class-change-on-scroll/class-change-on-scroll.module.js +17 -10
  10. package/esm2015/lib/directives/default-thumbnail/default-thumbnail.directive.js +20 -18
  11. package/esm2015/lib/directives/default-thumbnail/default-thumbnail.module.js +17 -10
  12. package/esm2015/lib/directives/image-responsive/image-responsive.directive.js +18 -24
  13. package/esm2015/lib/directives/image-responsive/image-responsive.module.js +17 -10
  14. package/esm2015/lib/directives/in-view-port/in-view-port.directive.js +17 -23
  15. package/esm2015/lib/directives/in-view-port/in-view-port.module.js +17 -10
  16. package/esm2015/lib/directives/navigation/navigation.directive.js +22 -18
  17. package/esm2015/lib/directives/navigation/navigation.module.js +17 -10
  18. package/esm2015/lib/directives/permission/permission.directive.js +10 -7
  19. package/esm2015/lib/directives/permission/permission.module.js +17 -10
  20. package/esm2015/lib/helpers/functions/getStringifiedQueryParams.js +4 -4
  21. package/esm2015/lib/helpers/horizontal-scroller/horizontal-scroller.component.js +33 -32
  22. package/esm2015/lib/helpers/horizontal-scroller/horizontal-scroller.module.js +29 -14
  23. package/esm2015/lib/helpers/logout/logout.component.js +18 -27
  24. package/esm2015/lib/helpers/logout/logout.module.js +25 -13
  25. package/esm2015/lib/models/contentRating.model.js +2 -12
  26. package/esm2015/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.js +13 -8
  27. package/esm2015/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.js +10 -12
  28. package/esm2015/lib/pipes/pipe-count-transform/pipe-count-transform.module.js +17 -10
  29. package/esm2015/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.js +10 -6
  30. package/esm2015/lib/pipes/pipe-date-concat/pipe-date-concat.module.js +17 -10
  31. package/esm2015/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.js +10 -17
  32. package/esm2015/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.js +17 -10
  33. package/esm2015/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +10 -6
  34. package/esm2015/lib/pipes/pipe-filter/pipe-filter.module.js +17 -10
  35. package/esm2015/lib/pipes/pipe-filter/pipe-filter.pipe.js +12 -8
  36. package/esm2015/lib/pipes/pipe-filter-search/pipe-filter-search.module.js +17 -10
  37. package/esm2015/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.js +14 -10
  38. package/esm2015/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.js +17 -10
  39. package/esm2015/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.js +10 -6
  40. package/esm2015/lib/pipes/pipe-limit-to/pipe-limit-to.module.js +17 -10
  41. package/esm2015/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.js +10 -6
  42. package/esm2015/lib/pipes/pipe-list-filter/pipe-list-filter.module.js +17 -10
  43. package/esm2015/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.js +13 -9
  44. package/esm2015/lib/pipes/pipe-name-transform/pipe-name-transform.module.js +17 -10
  45. package/esm2015/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.js +10 -12
  46. package/esm2015/lib/pipes/pipe-order-by/pipe-order-by.module.js +17 -10
  47. package/esm2015/lib/pipes/pipe-order-by/pipe-order-by.pipe.js +10 -9
  48. package/esm2015/lib/pipes/pipe-partial-content/pipe-partial-content.module.js +17 -10
  49. package/esm2015/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.js +10 -6
  50. package/esm2015/lib/pipes/pipe-relative-time/pipe-relative-time.module.js +17 -10
  51. package/esm2015/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.js +10 -6
  52. package/esm2015/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.js +17 -10
  53. package/esm2015/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.js +11 -13
  54. package/esm2015/lib/resolvers/explore-detail.resolver.js +19 -32
  55. package/esm2015/lib/resolvers/marketing-offering.resolve.js +14 -19
  56. package/esm2015/lib/resolvers/page.constant.js +1 -1
  57. package/esm2015/lib/resolvers/page.model.js +2 -47
  58. package/esm2015/lib/resolvers/page.resolver.js +22 -30
  59. package/esm2015/lib/resolvers/resolver.model.js +2 -6
  60. package/esm2015/lib/services/auth-keycloak.service.js +44 -63
  61. package/esm2015/lib/services/auth-microsoft.service.js +16 -28
  62. package/esm2015/lib/services/card-content.model.js +1 -22
  63. package/esm2015/lib/services/configurations.model.js +2 -498
  64. package/esm2015/lib/services/configurations.service.js +14 -52
  65. package/esm2015/lib/services/content-strip-multiple.model.js +2 -75
  66. package/esm2015/lib/services/event.model.js +1 -109
  67. package/esm2015/lib/services/event.service.js +14 -27
  68. package/esm2015/lib/services/logger.service.js +12 -22
  69. package/esm2015/lib/services/ms-office.model.js +2 -8
  70. package/esm2015/lib/services/subapplication-respond.service.js +15 -41
  71. package/esm2015/lib/services/telemetry.service.js +58 -73
  72. package/esm2015/lib/services/user-preference.model.js +2 -38
  73. package/esm2015/lib/services/user-preference.service.js +18 -26
  74. package/esm2015/lib/services/utility.service.js +17 -40
  75. package/esm2015/lib/services/value.service.js +12 -18
  76. package/esm2015/lib/services/widget-content.model.js +1 -236
  77. package/esm2015/lib/services/widget-content.service.js +22 -32
  78. package/esm2015/lib/services/widget-resolver.model.js +2 -57
  79. package/esm2015/lib/services/widget-search.model.js +2 -126
  80. package/esm2015/public-api.js +74 -68
  81. package/esm2015/sunbird-cb-utils.js +2 -8
  82. package/fesm2015/sunbird-cb-utils.js +1548 -2543
  83. package/fesm2015/sunbird-cb-utils.js.map +1 -1
  84. package/lib/components/image-crop/image-crop.component.d.ts +3 -0
  85. package/lib/components/image-crop/image-crop.module.d.ts +14 -0
  86. package/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.d.ts +6 -3
  87. package/lib/directives/class-change-on-scroll/class-change-on-scroll.module.d.ts +6 -0
  88. package/lib/directives/default-thumbnail/default-thumbnail.directive.d.ts +3 -0
  89. package/lib/directives/default-thumbnail/default-thumbnail.module.d.ts +6 -0
  90. package/lib/directives/image-responsive/image-responsive.directive.d.ts +3 -0
  91. package/lib/directives/image-responsive/image-responsive.module.d.ts +6 -0
  92. package/lib/directives/in-view-port/in-view-port.directive.d.ts +3 -0
  93. package/lib/directives/in-view-port/in-view-port.module.d.ts +6 -0
  94. package/lib/directives/navigation/navigation.directive.d.ts +3 -0
  95. package/lib/directives/navigation/navigation.module.d.ts +6 -0
  96. package/lib/directives/permission/permission.directive.d.ts +3 -0
  97. package/lib/directives/permission/permission.module.d.ts +6 -0
  98. package/lib/helpers/horizontal-scroller/horizontal-scroller.component.d.ts +3 -0
  99. package/lib/helpers/horizontal-scroller/horizontal-scroller.module.d.ts +9 -0
  100. package/lib/helpers/logout/logout.component.d.ts +5 -2
  101. package/lib/helpers/logout/logout.module.d.ts +8 -0
  102. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.d.ts +6 -0
  103. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.d.ts +3 -0
  104. package/lib/pipes/pipe-count-transform/pipe-count-transform.module.d.ts +6 -0
  105. package/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.d.ts +3 -0
  106. package/lib/pipes/pipe-date-concat/pipe-date-concat.module.d.ts +6 -0
  107. package/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.d.ts +3 -0
  108. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.d.ts +6 -0
  109. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.d.ts +3 -0
  110. package/lib/pipes/pipe-filter/pipe-filter.module.d.ts +6 -0
  111. package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts +3 -0
  112. package/lib/pipes/pipe-filter-search/pipe-filter-search.module.d.ts +6 -0
  113. package/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.d.ts +3 -0
  114. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.d.ts +6 -0
  115. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.d.ts +3 -0
  116. package/lib/pipes/pipe-limit-to/pipe-limit-to.module.d.ts +6 -0
  117. package/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.d.ts +3 -0
  118. package/lib/pipes/pipe-list-filter/pipe-list-filter.module.d.ts +6 -0
  119. package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts +3 -0
  120. package/lib/pipes/pipe-name-transform/pipe-name-transform.module.d.ts +6 -0
  121. package/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.d.ts +3 -0
  122. package/lib/pipes/pipe-order-by/pipe-order-by.module.d.ts +6 -0
  123. package/lib/pipes/pipe-order-by/pipe-order-by.pipe.d.ts +7 -4
  124. package/lib/pipes/pipe-partial-content/pipe-partial-content.module.d.ts +6 -0
  125. package/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.d.ts +3 -0
  126. package/lib/pipes/pipe-relative-time/pipe-relative-time.module.d.ts +6 -0
  127. package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts +3 -0
  128. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.d.ts +6 -0
  129. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.d.ts +3 -0
  130. package/lib/resolvers/explore-detail.resolver.d.ts +3 -0
  131. package/lib/resolvers/marketing-offering.resolve.d.ts +3 -0
  132. package/lib/resolvers/page.model.d.ts +1 -1
  133. package/lib/resolvers/page.resolver.d.ts +3 -0
  134. package/lib/services/auth-keycloak.service.d.ts +13 -12
  135. package/lib/services/auth-microsoft.service.d.ts +5 -2
  136. package/lib/services/configurations.model.d.ts +25 -23
  137. package/lib/services/configurations.service.d.ts +7 -0
  138. package/lib/services/content-strip-multiple.model.d.ts +7 -6
  139. package/lib/services/event.model.d.ts +1 -1
  140. package/lib/services/event.service.d.ts +3 -0
  141. package/lib/services/logger.service.d.ts +7 -4
  142. package/lib/services/subapplication-respond.service.d.ts +3 -0
  143. package/lib/services/telemetry.service.d.ts +5 -2
  144. package/lib/services/user-preference.service.d.ts +3 -0
  145. package/lib/services/utility.service.d.ts +10 -7
  146. package/lib/services/value.service.d.ts +3 -0
  147. package/lib/services/widget-content.model.d.ts +20 -19
  148. package/lib/services/widget-content.service.d.ts +3 -0
  149. package/package.json +14 -18
  150. package/public-api.d.ts +6 -0
  151. package/sunbird-cb-utils.d.ts +1 -6
  152. package/bundles/sunbird-cb-utils.umd.min.js +0 -16
  153. package/bundles/sunbird-cb-utils.umd.min.js.map +0 -1
  154. package/esm5/lib/components/image-crop/image-crop.component.js +0 -200
  155. package/esm5/lib/components/image-crop/image-crop.module.js +0 -31
  156. package/esm5/lib/constants/features.enum.js +0 -555
  157. package/esm5/lib/constants/instances.enum.js +0 -5
  158. package/esm5/lib/constants/misc.constants.js +0 -1
  159. package/esm5/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.js +0 -105
  160. package/esm5/lib/directives/class-change-on-scroll/class-change-on-scroll.module.js +0 -19
  161. package/esm5/lib/directives/default-thumbnail/default-thumbnail.directive.js +0 -40
  162. package/esm5/lib/directives/default-thumbnail/default-thumbnail.module.js +0 -19
  163. package/esm5/lib/directives/image-responsive/image-responsive.directive.js +0 -95
  164. package/esm5/lib/directives/image-responsive/image-responsive.module.js +0 -19
  165. package/esm5/lib/directives/in-view-port/in-view-port.directive.js +0 -73
  166. package/esm5/lib/directives/in-view-port/in-view-port.module.js +0 -19
  167. package/esm5/lib/directives/navigation/navigation.directive.js +0 -41
  168. package/esm5/lib/directives/navigation/navigation.module.js +0 -19
  169. package/esm5/lib/directives/permission/permission.directive.js +0 -14
  170. package/esm5/lib/directives/permission/permission.module.js +0 -19
  171. package/esm5/lib/helpers/functions/getStringifiedQueryParams.js +0 -9
  172. package/esm5/lib/helpers/horizontal-scroller/horizontal-scroller.component.js +0 -103
  173. package/esm5/lib/helpers/horizontal-scroller/horizontal-scroller.module.js +0 -23
  174. package/esm5/lib/helpers/logout/logout.component.js +0 -63
  175. package/esm5/lib/helpers/logout/logout.module.js +0 -22
  176. package/esm5/lib/models/contentRating.model.js +0 -12
  177. package/esm5/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.js +0 -17
  178. package/esm5/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.js +0 -63
  179. package/esm5/lib/pipes/pipe-count-transform/pipe-count-transform.module.js +0 -19
  180. package/esm5/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.js +0 -37
  181. package/esm5/lib/pipes/pipe-date-concat/pipe-date-concat.module.js +0 -19
  182. package/esm5/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.js +0 -45
  183. package/esm5/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.js +0 -19
  184. package/esm5/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +0 -64
  185. package/esm5/lib/pipes/pipe-filter/pipe-filter.module.js +0 -19
  186. package/esm5/lib/pipes/pipe-filter/pipe-filter.pipe.js +0 -20
  187. package/esm5/lib/pipes/pipe-filter-search/pipe-filter-search.module.js +0 -19
  188. package/esm5/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.js +0 -38
  189. package/esm5/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.js +0 -19
  190. package/esm5/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.js +0 -16
  191. package/esm5/lib/pipes/pipe-limit-to/pipe-limit-to.module.js +0 -19
  192. package/esm5/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.js +0 -30
  193. package/esm5/lib/pipes/pipe-list-filter/pipe-list-filter.module.js +0 -19
  194. package/esm5/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.js +0 -21
  195. package/esm5/lib/pipes/pipe-name-transform/pipe-name-transform.module.js +0 -19
  196. package/esm5/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.js +0 -35
  197. package/esm5/lib/pipes/pipe-order-by/pipe-order-by.module.js +0 -19
  198. package/esm5/lib/pipes/pipe-order-by/pipe-order-by.pipe.js +0 -18
  199. package/esm5/lib/pipes/pipe-partial-content/pipe-partial-content.module.js +0 -19
  200. package/esm5/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.js +0 -34
  201. package/esm5/lib/pipes/pipe-relative-time/pipe-relative-time.module.js +0 -19
  202. package/esm5/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.js +0 -21
  203. package/esm5/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.js +0 -19
  204. package/esm5/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.js +0 -38
  205. package/esm5/lib/resolvers/explore-detail.resolver.js +0 -93
  206. package/esm5/lib/resolvers/marketing-offering.resolve.js +0 -43
  207. package/esm5/lib/resolvers/page.constant.js +0 -4
  208. package/esm5/lib/resolvers/page.model.js +0 -47
  209. package/esm5/lib/resolvers/page.resolver.js +0 -98
  210. package/esm5/lib/resolvers/resolver.model.js +0 -6
  211. package/esm5/lib/services/auth-keycloak.service.js +0 -322
  212. package/esm5/lib/services/auth-microsoft.service.js +0 -251
  213. package/esm5/lib/services/card-content.model.js +0 -32
  214. package/esm5/lib/services/configurations.model.js +0 -498
  215. package/esm5/lib/services/configurations.service.js +0 -105
  216. package/esm5/lib/services/content-strip-multiple.model.js +0 -75
  217. package/esm5/lib/services/event.model.js +0 -229
  218. package/esm5/lib/services/event.service.js +0 -216
  219. package/esm5/lib/services/logger.service.js +0 -73
  220. package/esm5/lib/services/ms-office.model.js +0 -8
  221. package/esm5/lib/services/subapplication-respond.service.js +0 -230
  222. package/esm5/lib/services/telemetry.service.js +0 -484
  223. package/esm5/lib/services/user-preference.model.js +0 -38
  224. package/esm5/lib/services/user-preference.service.js +0 -109
  225. package/esm5/lib/services/utility.service.js +0 -178
  226. package/esm5/lib/services/value.service.js +0 -33
  227. package/esm5/lib/services/widget-content.model.js +0 -342
  228. package/esm5/lib/services/widget-content.service.js +0 -214
  229. package/esm5/lib/services/widget-resolver.model.js +0 -57
  230. package/esm5/lib/services/widget-search.model.js +0 -126
  231. package/esm5/public-api.js +0 -68
  232. package/esm5/sunbird-cb-utils.js +0 -8
  233. package/fesm5/sunbird-cb-utils.js +0 -5590
  234. package/fesm5/sunbird-cb-utils.js.map +0 -1
  235. package/sunbird-cb-utils.metadata.json +0 -1
@@ -1,43 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { HttpClient } from '@angular/common/http';
4
- import { map, catchError } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- var MarketingOfferingResolve = (function () {
8
- function MarketingOfferingResolve(http) {
9
- this.http = http;
10
- }
11
- MarketingOfferingResolve.prototype.resolve = function (route, _state) {
12
- var _this = this;
13
- var tag = route.params.tag;
14
- return this.http.get(route.data.pageUrl).pipe(map((function (pageData) { return ({ data: _this.transformPageData(pageData, tag), error: null }); })), catchError((function (err) { return of({ data: null, error: err }); })));
15
- };
16
- MarketingOfferingResolve.prototype.transformPageData = function (pageData, tag) {
17
- pageData.pageLayout.widgetData.widgets = pageData.pageLayout.widgetData.widgets.map((function (widget) {
18
- if (widget.widgetSubType === 'contentStripMultiple') {
19
- widget.widgetData.strips = widget.widgetData.strips.map((function (strip) {
20
- strip.request.search.filters.catalogPaths = [decodeURIComponent(tag)];
21
- return strip;
22
- }));
23
- }
24
- return widget;
25
- }));
26
- return pageData;
27
- };
28
- MarketingOfferingResolve.decorators = [
29
- { type: Injectable, args: [{
30
- providedIn: 'root',
31
- },] }
32
- ];
33
- MarketingOfferingResolve.ctorParameters = function () { return [
34
- { type: HttpClient }
35
- ]; };
36
- /** @nocollapse */ MarketingOfferingResolve.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function MarketingOfferingResolve_Factory() { return new MarketingOfferingResolve(i0.ɵɵinject(i1.HttpClient)); }, token: MarketingOfferingResolve, providedIn: "root" });
37
- return MarketingOfferingResolve;
38
- }());
39
- export { MarketingOfferingResolve };
40
- if (false) {
41
- MarketingOfferingResolve.prototype.http;
42
- }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2V0aW5nLW9mZmVyaW5nLnJlc29sdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9yZXNvbHZlcnMvbWFya2V0aW5nLW9mZmVyaW5nLnJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7QUFHaEQ7SUFTRSxrQ0FDVSxJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTCwwQ0FBTyxHQUFQLFVBQ0UsS0FBNkIsRUFDN0IsTUFBMkI7UUFGN0IsaUJBU0M7WUFMTyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzNDLEdBQUcsRUFBQyxVQUFBLFFBQVEsSUFBSSxPQUFBLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBOUQsQ0FBOEQsRUFBQyxFQUMvRSxVQUFVLEVBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUE5QixDQUE4QixFQUFDLENBQ2xELENBQUE7SUFDSCxDQUFDO0lBRU8sb0RBQWlCLEdBQXpCLFVBQTBCLFFBQWEsRUFBRSxHQUFXO1FBQ2xELFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLFVBQUMsTUFBVztZQUM5RixJQUFJLE1BQU0sQ0FBQyxhQUFhLEtBQUssc0JBQXNCLEVBQUU7Z0JBQ25ELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxVQUFDLEtBQVU7b0JBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO29CQUNyRSxPQUFPLEtBQUssQ0FBQTtnQkFDZCxDQUFDLEVBQUMsQ0FBQTthQUNIO1lBRUQsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDLEVBQUMsQ0FBQTtRQUVGLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7O2dCQXJDRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7Z0JBTlEsVUFBVTs7O21DQUhuQjtDQTZDQyxBQXRDRCxJQXNDQztTQW5DWSx3QkFBd0I7O0lBT2pDLHdDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBSZXNvbHZlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IElSZXNvbHZlUmVzcG9uc2UgfSBmcm9tICcuL3Jlc29sdmVyLm1vZGVsJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtldGluZ09mZmVyaW5nUmVzb2x2ZVxyXG4gIGltcGxlbWVudHNcclxuICBSZXNvbHZlPFxyXG4gIHwgT2JzZXJ2YWJsZTxJUmVzb2x2ZVJlc3BvbnNlPGFueT4+XHJcbiAgfCBJUmVzb2x2ZVJlc3BvbnNlPGFueT5cclxuICA+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICApIHsgfVxyXG5cclxuICByZXNvbHZlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBfc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgKTogT2JzZXJ2YWJsZTxJUmVzb2x2ZVJlc3BvbnNlPGFueT4+IHtcclxuICAgIGNvbnN0IHRhZyA9IHJvdXRlLnBhcmFtcy50YWdcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHJvdXRlLmRhdGEucGFnZVVybCkucGlwZShcclxuICAgICAgbWFwKHBhZ2VEYXRhID0+ICh7IGRhdGE6IHRoaXMudHJhbnNmb3JtUGFnZURhdGEocGFnZURhdGEsIHRhZyksIGVycm9yOiBudWxsIH0pKSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gb2YoeyBkYXRhOiBudWxsLCBlcnJvcjogZXJyIH0pKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtUGFnZURhdGEocGFnZURhdGE6IGFueSwgdGFnOiBzdHJpbmcpIHtcclxuICAgIHBhZ2VEYXRhLnBhZ2VMYXlvdXQud2lkZ2V0RGF0YS53aWRnZXRzID0gcGFnZURhdGEucGFnZUxheW91dC53aWRnZXREYXRhLndpZGdldHMubWFwKCh3aWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAod2lkZ2V0LndpZGdldFN1YlR5cGUgPT09ICdjb250ZW50U3RyaXBNdWx0aXBsZScpIHtcclxuICAgICAgICB3aWRnZXQud2lkZ2V0RGF0YS5zdHJpcHMgPSB3aWRnZXQud2lkZ2V0RGF0YS5zdHJpcHMubWFwKChzdHJpcDogYW55KSA9PiB7XHJcbiAgICAgICAgICBzdHJpcC5yZXF1ZXN0LnNlYXJjaC5maWx0ZXJzLmNhdGFsb2dQYXRocyA9IFtkZWNvZGVVUklDb21wb25lbnQodGFnKV1cclxuICAgICAgICAgIHJldHVybiBzdHJpcFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB3aWRnZXRcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHBhZ2VEYXRhXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,4 +0,0 @@
1
- export var JSON_MAP = {
2
- pagename: 'lexid',
3
- };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9wYWdlLmNvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sS0FBTyxRQUFRLEdBQVE7SUFDM0IsUUFBUSxFQUFFLE9BQU87Q0FDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSlNPTl9NQVA6IGFueSA9IHtcclxuICBwYWdlbmFtZTogJ2xleGlkJyxcclxufVxyXG4iXX0=
@@ -1,47 +0,0 @@
1
- export var NsPage;
2
- (function (NsPage) {
3
- function IPage() { }
4
- NsPage.IPage = IPage;
5
- if (false) {
6
- IPage.prototype.contentType;
7
- IPage.prototype.navigationBar;
8
- IPage.prototype.pageLayout;
9
- IPage.prototype.tourGuide;
10
- }
11
- function INavBar() { }
12
- NsPage.INavBar = INavBar;
13
- if (false) {
14
- INavBar.prototype.links;
15
- INavBar.prototype.xsmallNonMenuLinks;
16
- INavBar.prototype.pageBackLink;
17
- INavBar.prototype.pageTitle;
18
- INavBar.prototype.background;
19
- }
20
- function INavBackground() { }
21
- NsPage.INavBackground = INavBackground;
22
- if (false) {
23
- INavBackground.prototype.color;
24
- INavBackground.prototype.styles;
25
- }
26
- function INavLink() { }
27
- NsPage.INavLink = INavLink;
28
- if (false) {
29
- INavLink.prototype.config;
30
- INavLink.prototype.actionBtnId;
31
- INavLink.prototype.actionBtn;
32
- INavLink.prototype.actionBtnName;
33
- }
34
- function INavLinkConfig() { }
35
- NsPage.INavLinkConfig = INavLinkConfig;
36
- if (false) {
37
- INavLinkConfig.prototype.type;
38
- INavLinkConfig.prototype.hideIcon;
39
- INavLinkConfig.prototype.hideTitle;
40
- INavLinkConfig.prototype.hideStatus;
41
- INavLinkConfig.prototype.hidePin;
42
- INavLinkConfig.prototype.iconColor;
43
- INavLinkConfig.prototype.treatAsCard;
44
- INavLinkConfig.prototype.useShortName;
45
- }
46
- })(NsPage || (NsPage = {}));
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9wYWdlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sS0FBVyxNQUFNLENBMEN0QjtBQTFDRCxXQUFpQixNQUFNO0lBQ3JCLG9CQUtDOzs7UUFKQyw0QkFBbUI7UUFDbkIsOEJBQXNCO1FBQ3RCLDJCQUFxRDtRQUNyRCwwQkFBc0I7O0lBR3hCLHNCQU1DOzs7UUFMQyx3QkFBOEQ7UUFDOUQscUNBQTJFO1FBQzNFLCtCQUFvQjtRQUNwQiw0QkFBaUI7UUFDakIsNkJBQTBCOztJQUU1Qiw2QkFHQzs7O1FBRkMsK0JBQWdEO1FBQ2hELGdDQUFnQzs7SUFHbEMsdUJBU0M7OztRQVJDLDBCQUl1RztRQUN2RywrQkFBb0I7UUFDcEIsNkJBQWlDO1FBQ2pDLGlDQUFzQjs7SUFHeEIsNkJBU0M7OztRQVJDLDhCQUFPO1FBQ1Asa0NBQWtCO1FBQ2xCLG1DQUFtQjtRQUNuQixvQ0FBb0I7UUFDcEIsaUNBQWlCO1FBQ2pCLG1DQUF3QjtRQUN4QixxQ0FBcUI7UUFDckIsc0NBQXNCOztBQUcxQixDQUFDLEVBMUNnQixNQUFNLEtBQU4sTUFBTSxRQTBDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCdcclxuaW1wb3J0IHsgTnNBcHBzQ29uZmlnIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlndXJhdGlvbnMubW9kZWwnXHJcbmltcG9ydCB7IE5zV2lkZ2V0UmVzb2x2ZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy93aWRnZXQtcmVzb2x2ZXIubW9kZWwnXHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIE5zUGFnZSB7XHJcbiAgZXhwb3J0IGludGVyZmFjZSBJUGFnZSB7XHJcbiAgICBjb250ZW50VHlwZTogc3RyaW5nXHJcbiAgICBuYXZpZ2F0aW9uQmFyOiBJTmF2QmFyXHJcbiAgICBwYWdlTGF5b3V0OiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoQW55RGF0YVxyXG4gICAgdG91ckd1aWRlPzogc3RyaW5nW11bXVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGludGVyZmFjZSBJTmF2QmFyIHtcclxuICAgIGxpbmtzOiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoVHlwZWREYXRhPElOYXZMaW5rPltdXHJcbiAgICB4c21hbGxOb25NZW51TGlua3M6IE5zV2lkZ2V0UmVzb2x2ZXIuSVJlbmRlckNvbmZpZ1dpdGhUeXBlZERhdGE8SU5hdkxpbms+W11cclxuICAgIHBhZ2VCYWNrTGluazogc3RyaW5nXHJcbiAgICBwYWdlVGl0bGU6IHN0cmluZ1xyXG4gICAgYmFja2dyb3VuZDogSU5hdkJhY2tncm91bmRcclxuICB9XHJcbiAgZXhwb3J0IGludGVyZmFjZSBJTmF2QmFja2dyb3VuZCB7XHJcbiAgICBjb2xvcjogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2FybicgfCAnZGVmYXVsdCdcclxuICAgIHN0eWxlczogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElOYXZMaW5rIHtcclxuICAgIGNvbmZpZzogUGljazxJTmF2TGlua0NvbmZpZzwnY2FyZC1mdWxsJyB8ICdjYXJkLXNtYWxsJz4sICd0eXBlJyB8ICdoaWRlU3RhdHVzJz4gfFxyXG4gICAgUGljazxJTmF2TGlua0NvbmZpZzwnbWF0LWljb24tYnV0dG9uJyB8ICdtYXQtZmFiJyB8ICdtYXQtbWluaS1mYWInIHwgJ2NhcmQtbWluaSc+LCAndHlwZSc+IHxcclxuICAgIFBpY2s8SU5hdkxpbmtDb25maWc8J21hdC1idXR0b24nIHwgJ21hdC1yYWlzZWQtYnV0dG9uJyB8ICdtYXQtZmxhdC1idXR0b24nIHwgJ21hdC1zdHJva2VkLWJ1dHRvbic+LCAndHlwZScgfCAnaGlkZUljb24nIHwgJ2hpZGVUaXRsZSc+IHxcclxuICAgIFBpY2s8SU5hdkxpbmtDb25maWc8J21hdC1tZW51LWl0ZW0nPiwgJ3R5cGUnPiB8XHJcbiAgICBQaWNrPElOYXZMaW5rQ29uZmlnPCdmZWF0dXJlLWl0ZW0nPiwgJ3R5cGUnIHwgJ3VzZVNob3J0TmFtZScgfCAnaWNvbkNvbG9yJyB8ICd0cmVhdEFzQ2FyZCcgfCAnaGlkZVBpbic+XHJcbiAgICBhY3Rpb25CdG5JZD86IHN0cmluZ1xyXG4gICAgYWN0aW9uQnRuPzogTnNBcHBzQ29uZmlnLklGZWF0dXJlXHJcbiAgICBhY3Rpb25CdG5OYW1lPzogc3RyaW5nXHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElOYXZMaW5rQ29uZmlnPFQ+IHtcclxuICAgIHR5cGU6IFRcclxuICAgIGhpZGVJY29uPzogYm9vbGVhblxyXG4gICAgaGlkZVRpdGxlPzogYm9vbGVhblxyXG4gICAgaGlkZVN0YXR1cz86IGJvb2xlYW5cclxuICAgIGhpZGVQaW4/OiBib29sZWFuXHJcbiAgICBpY29uQ29sb3I/OiBUaGVtZVBhbGV0dGVcclxuICAgIHRyZWF0QXNDYXJkPzogYm9vbGVhblxyXG4gICAgdXNlU2hvcnROYW1lPzogYm9vbGVhblxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1,98 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { HttpClient } from '@angular/common/http';
3
- import { Inject, Injectable, LOCALE_ID } from '@angular/core';
4
- import { forkJoin, of } from 'rxjs';
5
- import { catchError, map, mergeMap } from 'rxjs/operators';
6
- import { ConfigurationsService } from '../services/configurations.service';
7
- import { JSON_MAP } from './page.constant';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../services/configurations.service";
10
- import * as i2 from "@angular/common/http";
11
- var PageResolve = (function () {
12
- function PageResolve(configSvc, http, locale) {
13
- this.configSvc = configSvc;
14
- this.http = http;
15
- this.locale = locale;
16
- this.baseUrl = this.configSvc.sitePath;
17
- }
18
- PageResolve.prototype.resolve = function (route) {
19
- if (route.data.pageUrl) {
20
- return this.getData(route.data.pageUrl);
21
- }
22
- if (route.data.pageType === 'feature' && route.data.pageKey) {
23
- return this.getData(this.baseUrl + "/feature/" + route.data.pageKey);
24
- }
25
- if (route.data.pageType === 'page' &&
26
- route.data.pageKey &&
27
- route.paramMap.has(route.data.pageKey)) {
28
- return this.getData(this.baseUrl + "/page/" + route.paramMap.get(route.data.pageKey));
29
- }
30
- if (route.data.pageType === 'page' &&
31
- route.data.pageKey &&
32
- route.data.pageKey === 'toc') {
33
- return this.getData(this.baseUrl + "/page/" + route.data.pageKey);
34
- }
35
- return {
36
- data: null,
37
- error: 'CONFIGURATION_ERROR_PAGE_URL_NOT_FORMED',
38
- };
39
- };
40
- PageResolve.prototype.setS3Cookie = function (contentId) {
41
- return this.http.post("/apis/protected/v8/content/setCookie", { contentId: contentId }).pipe(catchError((function (_err) { return of(true); })));
42
- };
43
- PageResolve.prototype.getContent = function (id) {
44
- return this.http
45
- .post("/apis/protected/v8/content/" + id + "?hierarchyType=minimal", ['status', 'artifactUrl']);
46
- };
47
- PageResolve.prototype.getData = function (url) {
48
- var _this = this;
49
- var id = (((url.split('/').pop()))).split('.')[0] || '';
50
- var equivalentId = id.startsWith('lex_auth_') ? id : JSON_MAP[id];
51
- if (equivalentId) {
52
- return forkJoin([this.setS3Cookie(equivalentId), this.getContent(equivalentId)]).pipe(mergeMap((function (_a) {
53
- var _b = tslib_1.__read(_a, 2), _ = _b[0], v = _b[1];
54
- if (v.status === 'Expired' || v.status === 'Deleted' || !v.artifactUrl) {
55
- return of({ data: null, error: 'NoContent' });
56
- }
57
- return _this.http
58
- .get(v.artifactUrl + "?ts=" + new Date().getTime())
59
- .pipe(map((function (data) { return ({ data: data, error: null }); })), catchError((function (err) { return of({ data: null, error: err }); })));
60
- })), catchError((function (err) { return of({ data: null, error: err }); })));
61
- }
62
- var pageRequest = [
63
- (equivalentId ? this.setS3Cookie(equivalentId) : of(true)).pipe(mergeMap((function () {
64
- return _this.http.get(url + ".json").pipe(map((function (data) { return ({ data: data, error: null }); })), catchError((function (err) { return of({ data: null, error: err }); })));
65
- }))),
66
- this.locale === 'en' || this.locale === 'en-US' ?
67
- of({ data: ((undefined)), error: null }) :
68
- this.http.get(url + "." + this.locale + ".json").pipe(map((function (data) { return ({ data: data, error: null }); })), catchError((function (err) { return of({ data: null, error: err }); }))),
69
- ];
70
- return forkJoin(pageRequest).pipe(map((function (_a) {
71
- var _b = tslib_1.__read(_a, 2), general = _b[0], withLocale = _b[1];
72
- if (withLocale.data) {
73
- return withLocale;
74
- }
75
- return general;
76
- })));
77
- };
78
- PageResolve.decorators = [
79
- { type: Injectable, args: [{
80
- providedIn: 'root',
81
- },] }
82
- ];
83
- PageResolve.ctorParameters = function () { return [
84
- { type: ConfigurationsService },
85
- { type: HttpClient },
86
- { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
87
- ]; };
88
- /** @nocollapse */ PageResolve.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PageResolve_Factory() { return new PageResolve(i0.ɵɵinject(i1.ConfigurationsService), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i0.LOCALE_ID)); }, token: PageResolve, providedIn: "root" });
89
- return PageResolve;
90
- }());
91
- export { PageResolve };
92
- if (false) {
93
- PageResolve.prototype.baseUrl;
94
- PageResolve.prototype.configSvc;
95
- PageResolve.prototype.http;
96
- PageResolve.prototype.locale;
97
- }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9wYWdlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTdELE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7OztBQUsxQztJQUtFLHFCQUNVLFNBQWdDLEVBQ2hDLElBQWdCLEVBQ0csTUFBYztRQUZqQyxjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUNoQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0csV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUpuQyxZQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUE7SUFLckMsQ0FBQztJQUNMLDZCQUFPLEdBQVAsVUFDRSxLQUE2QjtRQUU3QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ3hDO1FBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLElBQUksQ0FBQyxPQUFP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QUFDLElBQUksQ0FBQyxHQUFHLENBQWtCLEdBQUcsU0FBSSxJQUFJLENBQUMsTUFBTSxVQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVELEdBQUcsRUFBQyxVQUFBLElBQUksSUFBSSxPQUFBLENBQUMsRUFBRSxJQUFJLE1BQUEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBdkIsQ0FBdUIsRUFBQyxFQUNwQyxVQUFVLEVBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUE5QixDQUE4QixFQUFDLENBQ2xEO1NBQ0o7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQy9CLEdBQUcsRUFDRCxVQUFDLEVBQXFCO2dCQUFyQiwwQkFBcUIsRUFBcEIsZUFBTyxFQUFFLGtCQUFVO1lBQ25CLElBQUksVUFBVSxDQUFDLElBQUksRUFBRTtnQkFDbkIsT0FBTyxVQUFVLENBQUE7YUFDbEI7WUFDRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLEVBQ0YsQ0FDRixDQUFBO0lBQ0gsQ0FBQzs7Z0JBbEdGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztnQkFSUSxxQkFBcUI7Z0JBTHJCLFVBQVU7NkNBbUJkLE1BQU0sU0FBQyxTQUFTOzs7c0JBbkJyQjtDQStHQyxBQXBHRCxJQW9HQztTQWpHWSxXQUFXOztJQUN0Qiw4QkFBeUM7SUFFdkMsZ0NBQXdDO0lBQ3hDLDJCQUF3QjtJQUN4Qiw2QkFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9ucy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBKU09OX01BUCB9IGZyb20gJy4vcGFnZS5jb25zdGFudCdcclxuaW1wb3J0IHsgTnNQYWdlIH0gZnJvbSAnLi9wYWdlLm1vZGVsJ1xyXG5pbXBvcnQgeyBJUmVzb2x2ZVJlc3BvbnNlIH0gZnJvbSAnLi9yZXNvbHZlci5tb2RlbCdcclxuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZVJlc29sdmUgaW1wbGVtZW50cyBSZXNvbHZlPElSZXNvbHZlUmVzcG9uc2U8TnNQYWdlLklQYWdlPj4ge1xyXG4gIHByaXZhdGUgYmFzZVVybCA9IHRoaXMuY29uZmlnU3ZjLnNpdGVQYXRoXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXHJcbiAgKSB7IH1cclxuICByZXNvbHZlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgKTogT2JzZXJ2YWJsZTxJUmVzb2x2ZVJlc3BvbnNlPE5zUGFnZS5JUGFnZT4+IHwgSVJlc29sdmVSZXNwb25zZTxOc1BhZ2UuSVBhZ2U+IHtcclxuICAgIGlmIChyb3V0ZS5kYXRhLnBhZ2VVcmwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YShyb3V0ZS5kYXRhLnBhZ2VVcmwpXHJcbiAgICB9XHJcbiAgICBpZiAocm91dGUuZGF0YS5wYWdlVHlwZSA9PT0gJ2ZlYXR1cmUnICYmIHJvdXRlLmRhdGEucGFnZUtleSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXREYXRhKGAke3RoaXMuYmFzZVVybH0vZmVhdHVyZS8ke3JvdXRlLmRhdGEucGFnZUtleX1gKVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICByb3V0ZS5kYXRhLnBhZ2VUeXBlID09PSAncGFnZScgJiZcclxuICAgICAgcm91dGUuZGF0YS5wYWdlS2V5ICYmXHJcbiAgICAgIHJvdXRlLnBhcmFtTWFwLmhhcyhyb3V0ZS5kYXRhLnBhZ2VLZXkpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YShgJHt0aGlzLmJhc2VVcmx9L3BhZ2UvJHtyb3V0ZS5wYXJhbU1hcC5nZXQocm91dGUuZGF0YS5wYWdlS2V5KX1gKVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICByb3V0ZS5kYXRhLnBhZ2VUeXBlID09PSAncGFnZScgJiZcclxuICAgICAgcm91dGUuZGF0YS5wYWdlS2V5ICYmXHJcbiAgICAgIHJvdXRlLmRhdGEucGFnZUtleSA9PT0gJ3RvYydcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXREYXRhKGAke3RoaXMuYmFzZVVybH0vcGFnZS8ke3JvdXRlLmRhdGEucGFnZUtleX1gKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgZXJyb3I6ICdDT05GSUdVUkFUSU9OX0VSUk9SX1BBR0VfVVJMX05PVF9GT1JNRUQnLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTM0Nvb2tpZShjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC9hcGlzL3Byb3RlY3RlZC92OC9jb250ZW50L3NldENvb2tpZWAsIHsgY29udGVudElkIH0pLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRlbnQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxOc0NvbnRlbnQuSUNvbnRlbnQ+KFxyXG4gICAgICAgIGAvYXBpcy9wcm90ZWN0ZWQvdjgvY29udGVudC8ke2lkfT9oaWVyYXJjaHlUeXBlPW1pbmltYWxgLFxyXG4gICAgICAgIFsnc3RhdHVzJywgJ2FydGlmYWN0VXJsJ10sXHJcbiAgICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YSh1cmw6IHN0cmluZykge1xyXG4gICAgY29uc3QgaWQgPSAodXJsLnNwbGl0KCcvJykucG9wKCkgYXMgc3RyaW5nKS5zcGxpdCgnLicpWzBdIHx8ICcnXHJcbiAgICBjb25zdCBlcXVpdmFsZW50SWQgPSBpZC5zdGFydHNXaXRoKCdsZXhfYXV0aF8nKSA/IGlkIDogSlNPTl9NQVBbaWRdXHJcbiAgICBpZiAoZXF1aXZhbGVudElkKSB7XHJcbiAgICAgIHJldHVybiBmb3JrSm9pbihbdGhpcy5zZXRTM0Nvb2tpZShlcXVpdmFsZW50SWQpLCB0aGlzLmdldENvbnRlbnQoZXF1aXZhbGVudElkKV0pLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKFtfLCB2XSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHYuc3RhdHVzID09PSAnRXhwaXJlZCcgfHwgdi5zdGF0dXMgPT09ICdEZWxldGVkJyB8fCAhdi5hcnRpZmFjdFVybCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoeyBkYXRhOiBudWxsLCBlcnJvcjogJ05vQ29udGVudCcgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxOc1BhZ2UuSVBhZ2U+KGAke3YuYXJ0aWZhY3RVcmx9P3RzPSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWFwKGRhdGEgPT4gKHsgZGF0YSwgZXJyb3I6IG51bGwgfSkpLFxyXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IG9mKHsgZGF0YTogbnVsbCwgZXJyb3I6IGVyciB9KSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiBvZih7IGRhdGE6IG51bGwsIGVycm9yOiBlcnIgfSkpLFxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICBjb25zdCBwYWdlUmVxdWVzdCA9IFtcclxuICAgICAgKGVxdWl2YWxlbnRJZCA/IHRoaXMuc2V0UzNDb29raWUoZXF1aXZhbGVudElkKSA6IG9mKHRydWUpKS5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+XHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PE5zUGFnZS5JUGFnZT4oYCR7dXJsfS5qc29uYCkucGlwZShcclxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gKHsgZGF0YSwgZXJyb3I6IG51bGwgfSkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiBvZih7IGRhdGE6IG51bGwsIGVycm9yOiBlcnIgfSkpLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLmxvY2FsZSA9PT0gJ2VuJyB8fCB0aGlzLmxvY2FsZSA9PT0gJ2VuLVVTJyA/XHJcbiAgICAgICAgb2YoeyBkYXRhOiB1bmRlZmluZWQgYXMgYW55LCBlcnJvcjogbnVsbCB9KSA6XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxOc1BhZ2UuSVBhZ2U+KGAke3VybH0uJHt0aGlzLmxvY2FsZX0uanNvbmApLnBpcGUoXHJcbiAgICAgICAgICBtYXAoZGF0YSA9PiAoeyBkYXRhLCBlcnJvcjogbnVsbCB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiBvZih7IGRhdGE6IG51bGwsIGVycm9yOiBlcnIgfSkpLFxyXG4gICAgICAgICksXHJcbiAgICBdXHJcbiAgICByZXR1cm4gZm9ya0pvaW4ocGFnZVJlcXVlc3QpLnBpcGUoXHJcbiAgICAgIG1hcChcclxuICAgICAgICAoW2dlbmVyYWwsIHdpdGhMb2NhbGVdKTogSVJlc29sdmVSZXNwb25zZTxOc1BhZ2UuSVBhZ2U+ID0+IHtcclxuICAgICAgICAgIGlmICh3aXRoTG9jYWxlLmRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHdpdGhMb2NhbGVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBnZW5lcmFsXHJcbiAgICAgICAgfSxcclxuICAgICAgKSxcclxuICAgIClcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,6 +0,0 @@
1
- export function IResolveResponse() { }
2
- if (false) {
3
- IResolveResponse.prototype.data;
4
- IResolveResponse.prototype.error;
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9yZXNvbHZlcnMvcmVzb2x2ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBR0M7O0lBRkMsZ0NBQWM7SUFDZCxpQ0FBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlUmVzcG9uc2U8VD4ge1xyXG4gIGRhdGE6IFQgfCBudWxsXHJcbiAgZXJyb3I6IGFueSB8IG51bGxcclxufVxyXG4iXX0=
@@ -1,322 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { HttpClient } from '@angular/common/http';
3
- import { Injectable } from '@angular/core';
4
- import { KeycloakEventType, KeycloakService } from 'keycloak-angular';
5
- import { fromEvent, ReplaySubject } from 'rxjs';
6
- import { filter } from 'rxjs/operators';
7
- import { AuthMicrosoftService } from './auth-microsoft.service';
8
- import { ConfigurationsService } from './configurations.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common/http";
11
- import * as i2 from "./configurations.service";
12
- import * as i3 from "keycloak-angular";
13
- import * as i4 from "./auth-microsoft.service";
14
- function IParsedToken() { }
15
- if (false) {
16
- IParsedToken.prototype.email;
17
- IParsedToken.prototype.encEmail;
18
- IParsedToken.prototype.name;
19
- IParsedToken.prototype.preferred_username;
20
- }
21
- var storage = localStorage;
22
- var storageKey = 'kc';
23
- var AuthKeycloakService = (function () {
24
- function AuthKeycloakService(http, configSvc, keycloakSvc, msAuthSvc) {
25
- var _this = this;
26
- this.http = http;
27
- this.configSvc = configSvc;
28
- this.keycloakSvc = keycloakSvc;
29
- this.msAuthSvc = msAuthSvc;
30
- this.loginChangeSubject = new ReplaySubject(1);
31
- this.loginChangeSubject.subscribe((function (isLoggedIn) {
32
- _this.configSvc.isAuthenticated = isLoggedIn;
33
- if (isLoggedIn &&
34
- _this.configSvc.instanceConfig &&
35
- Boolean(_this.configSvc.instanceConfig.disablePidCheck)) {
36
- _this.configSvc.userProfile = {
37
- email: _this.userEmail,
38
- userName: _this.userName,
39
- userId: _this.userId || '',
40
- };
41
- }
42
- }));
43
- }
44
- Object.defineProperty(AuthKeycloakService.prototype, "isLoggedIn$", {
45
- get: function () {
46
- return this.loginChangeSubject.asObservable();
47
- },
48
- enumerable: true,
49
- configurable: true
50
- });
51
- Object.defineProperty(AuthKeycloakService.prototype, "isLoggedIn", {
52
- get: function () {
53
- return this.keycloakSvc.isLoggedIn();
54
- },
55
- enumerable: true,
56
- configurable: true
57
- });
58
- Object.defineProperty(AuthKeycloakService.prototype, "isAuthenticated", {
59
- get: function () {
60
- return this.keycloakSvc.getKeycloakInstance().authenticated;
61
- },
62
- enumerable: true,
63
- configurable: true
64
- });
65
- Object.defineProperty(AuthKeycloakService.prototype, "token", {
66
- get: function () {
67
- return this.keycloakSvc.getKeycloakInstance().token;
68
- },
69
- enumerable: true,
70
- configurable: true
71
- });
72
- Object.defineProperty(AuthKeycloakService.prototype, "sessionId", {
73
- get: function () {
74
- return this.keycloakSvc.getKeycloakInstance().sessionId;
75
- },
76
- enumerable: true,
77
- configurable: true
78
- });
79
- Object.defineProperty(AuthKeycloakService.prototype, "userId", {
80
- get: function () {
81
- var kc = this.keycloakSvc.getKeycloakInstance();
82
- if (!kc) {
83
- return;
84
- }
85
- return (kc.tokenParsed && kc.tokenParsed.sub) || (kc.idTokenParsed && kc.idTokenParsed.sub);
86
- },
87
- enumerable: true,
88
- configurable: true
89
- });
90
- Object.defineProperty(AuthKeycloakService.prototype, "userEmail", {
91
- get: function () {
92
- var kc = this.keycloakSvc.getKeycloakInstance();
93
- var tokenParsed = ((kc.tokenParsed));
94
- var idTokenParsed = ((kc.idTokenParsed));
95
- return ((tokenParsed && tokenParsed.email) ||
96
- (idTokenParsed && idTokenParsed.email) ||
97
- (idTokenParsed && idTokenParsed.encEmail) ||
98
- (tokenParsed && tokenParsed.preferred_username) ||
99
- (idTokenParsed && idTokenParsed.preferred_username));
100
- },
101
- enumerable: true,
102
- configurable: true
103
- });
104
- Object.defineProperty(AuthKeycloakService.prototype, "userName", {
105
- get: function () {
106
- var kc = this.keycloakSvc.getKeycloakInstance();
107
- return ((kc.tokenParsed && (((kc.tokenParsed))).name) ||
108
- (kc.idTokenParsed && (((kc.idTokenParsed))).name));
109
- },
110
- enumerable: true,
111
- configurable: true
112
- });
113
- AuthKeycloakService.prototype.initAuth = function () {
114
- return tslib_1.__awaiter(this, void 0, void 0, function () {
115
- var instanceConfig, err_1;
116
- return tslib_1.__generator(this, function (_a) {
117
- switch (_a.label) {
118
- case 0:
119
- if (!this.configSvc.instanceConfig) {
120
- return [2, false];
121
- }
122
- instanceConfig = this.configSvc.instanceConfig;
123
- if (instanceConfig.microsoft.isConfigured) {
124
- this.msAuthSvc.init({ microsoft: instanceConfig.microsoft });
125
- }
126
- _a.label = 1;
127
- case 1:
128
- _a.trys.push([1, 3, , 4]);
129
- this.setupGlobalAuthResponder();
130
- this.addKeycloakEventListener();
131
- return [4, this.keycloakSvc.init({
132
- config: {
133
- url: instanceConfig.keycloak.url,
134
- realm: instanceConfig.keycloak.realm,
135
- clientId: instanceConfig.keycloak.clientId,
136
- },
137
- initOptions: tslib_1.__assign({}, this.getSavedKcConfig(), { onLoad: instanceConfig.keycloak.onLoad || 'check-sso', checkLoginIframe: false }),
138
- enableBearerInterceptor: true,
139
- loadUserProfileAtStartUp: false,
140
- bearerExcludedUrls: instanceConfig.keycloak.bearerExcludedUrls,
141
- })];
142
- case 2: return [2, _a.sent()];
143
- case 3:
144
- err_1 = _a.sent();
145
- return [2, false];
146
- case 4: return [2];
147
- }
148
- });
149
- });
150
- };
151
- AuthKeycloakService.prototype.login = function (idpHint, redirectUrl) {
152
- if (idpHint === void 0) { idpHint = 'E'; }
153
- if (redirectUrl === void 0) { redirectUrl = this.defaultRedirectUrl; }
154
- return this.keycloakSvc.login({
155
- idpHint: idpHint,
156
- redirectUri: redirectUrl,
157
- });
158
- };
159
- AuthKeycloakService.prototype.register = function (redirectUrl) {
160
- if (redirectUrl === void 0) { redirectUrl = this.defaultRedirectUrl; }
161
- return this.keycloakSvc.register({
162
- redirectUri: redirectUrl,
163
- });
164
- };
165
- AuthKeycloakService.prototype.logout = function (_redirectUrl) {
166
- if (_redirectUrl === void 0) { _redirectUrl = this.defaultRedirectUrl; }
167
- return tslib_1.__awaiter(this, void 0, void 0, function () {
168
- return tslib_1.__generator(this, function (_a) {
169
- window.location.href = _redirectUrl + "apis/reset";
170
- return [2];
171
- });
172
- });
173
- };
174
- AuthKeycloakService.prototype.force_logout = function () {
175
- return tslib_1.__awaiter(this, void 0, void 0, function () {
176
- return tslib_1.__generator(this, function (_a) {
177
- switch (_a.label) {
178
- case 0:
179
- if (storage.getItem('telemetrySessionId')) {
180
- storage.removeItem('telemetrySessionId');
181
- }
182
- try {
183
- sessionStorage.clear();
184
- localStorage.clear();
185
- }
186
- catch (_b) {
187
- }
188
- storage.removeItem(storageKey);
189
- window.location.href = '/public/logout';
190
- return [4, this.http.get('/apis/reset').toPromise()];
191
- case 1:
192
- _a.sent();
193
- return [2];
194
- }
195
- });
196
- });
197
- };
198
- AuthKeycloakService.prototype.addKeycloakEventListener = function () {
199
- var _this = this;
200
- this.keycloakSvc.keycloakEvents$.subscribe((function (event) {
201
- switch (event.type) {
202
- case KeycloakEventType.OnAuthError:
203
- _this.loginChangeSubject.next(false);
204
- break;
205
- case KeycloakEventType.OnAuthLogout:
206
- _this.loginChangeSubject.next(false);
207
- storage.removeItem(storageKey);
208
- break;
209
- case KeycloakEventType.OnAuthRefreshError:
210
- break;
211
- case KeycloakEventType.OnAuthRefreshSuccess:
212
- break;
213
- case KeycloakEventType.OnAuthSuccess:
214
- break;
215
- case KeycloakEventType.OnReady:
216
- _this.loginChangeSubject.next(event.args);
217
- if (event.args) {
218
- _this.saveKeycloakConfig();
219
- }
220
- break;
221
- case KeycloakEventType.OnTokenExpired:
222
- _this.keycloakSvc.updateToken(60);
223
- break;
224
- }
225
- }));
226
- };
227
- AuthKeycloakService.prototype.setupGlobalAuthResponder = function () {
228
- var _this = this;
229
- fromEvent(window, 'message')
230
- .pipe(filter((function (event) {
231
- return Boolean(event) &&
232
- Boolean(event.data) &&
233
- event.data.type === 'AUTH_REQUEST' &&
234
- Boolean(event.source && typeof event.source.postMessage === 'function');
235
- })))
236
- .subscribe((function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
237
- var contentWindow, token, response;
238
- return tslib_1.__generator(this, function (_a) {
239
- switch (_a.label) {
240
- case 0:
241
- contentWindow = ((event.source));
242
- return [4, this.keycloakSvc.getToken()];
243
- case 1:
244
- token = _a.sent();
245
- response = {
246
- app: 'WEB_PORTAL',
247
- type: 'AUTH_RESPONSE',
248
- state: 'NONE',
249
- plugin: 'NONE',
250
- data: {
251
- token: token,
252
- id: event.data && event.data.data && event.data.data.id,
253
- },
254
- };
255
- contentWindow.postMessage(response, '*');
256
- return [2];
257
- }
258
- });
259
- }); }));
260
- };
261
- AuthKeycloakService.prototype.saveKeycloakConfig = function () {
262
- var kc = this.keycloakSvc.getKeycloakInstance();
263
- var kcInitOptions = {
264
- idToken: kc.idToken,
265
- refreshToken: kc.refreshToken,
266
- timeSkew: kc.timeSkew,
267
- token: kc.token,
268
- };
269
- storage.setItem(storageKey, JSON.stringify(kcInitOptions));
270
- };
271
- AuthKeycloakService.prototype.getSavedKcConfig = function () {
272
- try {
273
- var lastSaved = storage.getItem(storageKey);
274
- if (lastSaved) {
275
- var processed = JSON.parse(lastSaved);
276
- if ('idToken' in processed &&
277
- 'refreshToken' in processed &&
278
- 'timeSkew' in processed &&
279
- 'token' in processed) {
280
- return processed;
281
- }
282
- }
283
- }
284
- catch (e) { }
285
- return {};
286
- };
287
- Object.defineProperty(AuthKeycloakService.prototype, "defaultRedirectUrl", {
288
- get: function () {
289
- try {
290
- var baseUrl = document.baseURI;
291
- return baseUrl || location.origin;
292
- }
293
- catch (error) {
294
- return location.origin;
295
- }
296
- },
297
- enumerable: true,
298
- configurable: true
299
- });
300
- AuthKeycloakService.decorators = [
301
- { type: Injectable, args: [{
302
- providedIn: 'root',
303
- },] }
304
- ];
305
- AuthKeycloakService.ctorParameters = function () { return [
306
- { type: HttpClient },
307
- { type: ConfigurationsService },
308
- { type: KeycloakService },
309
- { type: AuthMicrosoftService }
310
- ]; };
311
- /** @nocollapse */ AuthKeycloakService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AuthKeycloakService_Factory() { return new AuthKeycloakService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.ConfigurationsService), i0.ɵɵinject(i3.KeycloakService), i0.ɵɵinject(i4.AuthMicrosoftService)); }, token: AuthKeycloakService, providedIn: "root" });
312
- return AuthKeycloakService;
313
- }());
314
- export { AuthKeycloakService };
315
- if (false) {
316
- AuthKeycloakService.prototype.loginChangeSubject;
317
- AuthKeycloakService.prototype.http;
318
- AuthKeycloakService.prototype.configSvc;
319
- AuthKeycloakService.prototype.keycloakSvc;
320
- AuthKeycloakService.prototype.msAuthSvc;
321
- }
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1rZXljbG9hay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvYXV0aC1rZXljbG9hay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQWlCLGlCQUFpQixFQUF1QixlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7Ozs7OztBQUVoRSwyQkFLQzs7SUFKQyw2QkFBYztJQUNkLGdDQUFpQjtJQUNqQiw0QkFBYTtJQUNiLDBDQUEyQjs7SUFHdkIsT0FBTyxHQUFHLFlBQVk7SUFDdEIsVUFBVSxHQUFHLElBQUk7QUFFdkI7SUFLRSw2QkFDVSxJQUFnQixFQUNoQixTQUFnQyxFQUNoQyxXQUE0QixFQUM1QixTQUErQjtRQUp6QyxpQkFvQkM7UUFuQlMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFMakMsdUJBQWtCLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUE7UUFPeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBQyxVQUFDLFVBQW1CO1lBQ3BELEtBQUksQ0FBQyxTQUFTLENBQUMsZUFB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LElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUN2QyxJQUNFLFNBQVMsSUFBSSxTQUFTO29CQUN0QixjQUFjLElBQUksU0FBUztvQkFDM0IsVUFBVSxJQUFJLFNBQVM7b0JBQ3ZCLE9BQU8sSUFBSSxTQUFTLEVBQ3BCO29CQUNBLE9BQU8sU0FBUyxDQUFBO2lCQUNqQjthQUNGO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2YsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsc0JBQVksbURBQWtCO2FBQTlCO1lBQ0UsSUFBSTtvQkFDSSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU87Z0JBQ2hDLE9BQU8sT0FBTyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUE7YUFDbEM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUE7YUFDdkI7UUFDSCxDQUFDOzs7T0FBQTs7Z0JBblBGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztnQkFwQlEsVUFBVTtnQkFNVixxQkFBcUI7Z0JBSmtDLGVBQWU7Z0JBR3RFLG9CQUFvQjs7OzhCQUw3QjtDQXNRQyxBQXBQRCxJQW9QQztTQWpQWSxtQkFBbUI7O0lBQzlCLGlEQUEwRDtJQUV4RCxtQ0FBd0I7SUFDeEIsd0NBQXdDO0lBQ3hDLDBDQUFvQztJQUNwQyx3Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEtleWNsb2FrRXZlbnQsIEtleWNsb2FrRXZlbnRUeXBlLCBLZXljbG9ha0luaXRPcHRpb25zLCBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgQXV0aE1pY3Jvc29mdFNlcnZpY2UgfSBmcm9tICcuL2F1dGgtbWljcm9zb2Z0LnNlcnZpY2UnXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb25zLnNlcnZpY2UnXG5cbmludGVyZmFjZSBJUGFyc2VkVG9rZW4ge1xuICBlbWFpbD86IHN0cmluZ1xuICBlbmNFbWFpbD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHByZWZlcnJlZF91c2VybmFtZT86IHN0cmluZ1xufVxuXG5jb25zdCBzdG9yYWdlID0gbG9jYWxTdG9yYWdlXG5jb25zdCBzdG9yYWdlS2V5ID0gJ2tjJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aEtleWNsb2FrU2VydmljZSB7XG4gIHByaXZhdGUgbG9naW5DaGFuZ2VTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSlcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU3ZjOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXljbG9ha1N2YzogS2V5Y2xvYWtTZXJ2aWNlLFxuICAgIHByaXZhdGUgbXNBdXRoU3ZjOiBBdXRoTWljcm9zb2Z0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5sb2dpbkNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKChpc0xvZ2dlZEluOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ1N2Yy5pc0F1dGhlbnRpY2F0ZWQgPSBpc0xvZ2dlZEluXG4gICAgICBpZiAoXG4gICAgICAgIGlzTG9nZ2VkSW4gJiZcbiAgICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcgJiZcbiAgICAgICAgQm9vbGVhbih0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5kaXNhYmxlUGlkQ2hlY2spXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgPSB7XG4gICAgICAgICAgZW1haWw6IHRoaXMudXNlckVtYWlsLFxuICAgICAgICAgIHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxuICAgICAgICAgIHVzZXJJZDogdGhpcy51c2VySWQgfHwgJycsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBnZXQgaXNMb2dnZWRJbiQoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9naW5DaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gIH1cbiAgZ2V0IGlzTG9nZ2VkSW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMua2V5Y2xvYWtTdmMuaXNMb2dnZWRJbigpXG4gIH1cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5rZXljbG9ha1N2Yy5nZXRLZXljbG9ha0luc3RhbmNlKCkuYXV0aGVudGljYXRlZFxuICB9XG4gIGdldCB0b2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmtleWNsb2FrU3ZjLmdldEtleWNsb2FrSW5zdGFuY2UoKS50b2tlblxuICB9XG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5rZXljbG9ha1N2Yy5nZXRLZXljbG9ha0luc3RhbmNlKCkuc2Vzc2lvbklkXG4gIH1cbiAgZ2V0IHVzZXJJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGtjID0gdGhpcy5rZXljbG9ha1N2Yy5nZXRLZXljbG9ha0luc3RhbmNlKClcbiAgICBpZiAoIWtjKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgcmV0dXJuIChrYy50b2tlblBhcnNlZCAmJiBrYy50b2tlblBhcnNlZC5zdWIpIHx8IChrYy5pZFRva2VuUGFyc2VkICYmIGtjLmlkVG9rZW5QYXJzZWQuc3ViKVxuICB9XG5cbiAgZ2V0IHVzZXJFbWFpbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGtjID0gdGhpcy5rZXljbG9ha1N2Yy5nZXRLZXljbG9ha0luc3RhbmNlKClcblxuICAgIGNvbnN0IHRva2VuUGFyc2VkID0ga2MudG9rZW5QYXJzZWQgYXMgSVBhcnNlZFRva2VuXG4gICAgY29uc3QgaWRUb2tlblBhcnNlZCA9IGtjLmlkVG9rZW5QYXJzZWQgYXMgSVBhcnNlZFRva2VuXG4gICAgcmV0dXJuIChcbiAgICAgICh0b2tlblBhcnNlZCAmJiB0b2tlblBhcnNlZC5lbWFpbCkgfHxcbiAgICAgIChpZFRva2VuUGFyc2VkICYmIGlkVG9rZW5QYXJzZWQuZW1haWwpIHx8XG4gICAgICAoaWRUb2tlblBhcnNlZCAmJiBpZFRva2VuUGFyc2VkLmVuY0VtYWlsKSB8fFxuICAgICAgKHRva2VuUGFyc2VkICYmIHRva2VuUGFyc2VkLnByZWZlcnJlZF91c2VybmFtZSkgfHxcbiAgICAgIChpZFRva2VuUGFyc2VkICYmIGlkVG9rZW5QYXJzZWQucHJlZmVycmVkX3VzZXJuYW1lKVxuICAgIClcbiAgfVxuXG4gIGdldCB1c2VyTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGtjID0gdGhpcy5rZXljbG9ha1N2Yy5nZXRLZXljbG9ha0luc3RhbmNlKClcbiAgICByZXR1cm4gKFxuICAgICAgKGtjLnRva2VuUGFyc2VkICYmIChrYy50b2tlblBhcnNlZCBhcyBJUGFyc2VkVG9rZW4pLm5hbWUpIHx8XG4gICAgICAoa2MuaWRUb2tlblBhcnNlZCAmJiAoa2MuaWRUb2tlblBhcnNlZCBhcyBJUGFyc2VkVG9rZW4pLm5hbWUpXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgaW5pdEF1dGgoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlQ29uZmlnID0gdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWdcbiAgICBpZiAoaW5zdGFuY2VDb25maWcubWljcm9zb2Z0LmlzQ29uZmlndXJlZCkge1xuICAgICAgdGhpcy5tc0F1dGhTdmMuaW5pdCh7IG1pY3Jvc29mdDogaW5zdGFuY2VDb25maWcubWljcm9zb2Z0IH0pXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnNldHVwR2xvYmFsQXV0aFJlc3BvbmRlcigpXG4gICAgICB0aGlzLmFkZEtleWNsb2FrRXZlbnRMaXN0ZW5lcigpXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5rZXljbG9ha1N2Yy5pbml0KHtcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgdXJsOiBpbnN0YW5jZUNvbmZpZy5rZXljbG9hay51cmwsXG4gICAgICAgICAgcmVhbG06IGluc3RhbmNlQ29uZmlnLmtleWNsb2FrLnJlYWxtLFxuICAgICAgICAgIGNsaWVudElkOiBpbnN0YW5jZUNvbmZpZy5rZXljbG9hay5jbGllbnRJZCxcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdE9wdGlvbnM6IHtcbiAgICAgICAgICAuLi50aGlzLmdldFNhdmVkS2NDb25maWcoKSxcbiAgICAgICAgICBvbkxvYWQ6IGluc3RhbmNlQ29uZmlnLmtleWNsb2FrLm9uTG9hZCB8fCAnY2hlY2stc3NvJyxcbiAgICAgICAgICBjaGVja0xvZ2luSWZyYW1lOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlQmVhcmVySW50ZXJjZXB0b3I6IHRydWUsXG4gICAgICAgIGxvYWRVc2VyUHJvZmlsZUF0U3RhcnRVcDogZmFsc2UsXG4gICAgICAgIGJlYXJlckV4Y2x1ZGVkVXJsczogaW5zdGFuY2VDb25maWcua2V5Y2xvYWsuYmVhcmVyRXhjbHVkZWRVcmxzLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGxvZ2luKFxuICAgIGlkcEhpbnQ6ICdFJyB8ICdOJyB8ICdTJyA9ICdFJyxcbiAgICByZWRpcmVjdFVybDogc3RyaW5nID0gdGhpcy5kZWZhdWx0UmVkaXJlY3RVcmwsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmtleWNsb2FrU3ZjLmxvZ2luKHtcbiAgICAgIGlkcEhpbnQsXG4gICAgICByZWRpcmVjdFVyaTogcmVkaXJlY3RVcmwsXG4gICAgfSlcbiAgfVxuXG4gIHJlZ2lzdGVyKFxuICAgIHJlZGlyZWN0VXJsOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRSZWRpcmVjdFVybCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMua2V5Y2xvYWtTdmMucmVnaXN0ZXIoe1xuICAgICAgcmVkaXJlY3RVcmk6IHJlZGlyZWN0VXJsLFxuICAgIH0pXG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHRoaXMgd2lsbCBiZSBkZXByaWNhdGVkXG4gICAqL1xuICBhc3luYyBsb2dvdXQoX3JlZGlyZWN0VXJsID0gdGhpcy5kZWZhdWx0UmVkaXJlY3RVcmwpIHtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke19yZWRpcmVjdFVybH1hcGlzL3Jlc2V0YFxuXG4gICAgLy8gc3RvcmFnZS5yZW1vdmVJdGVtKHN0b3JhZ2VLZXkpXG4gICAgLy8gYXdhaXQgdGhpcy5odHRwLmdldCgnL2FwaXMvcmVzZXQnKS50b1Byb21pc2UoKVxuICAgIC8vIGlmICh0aGlzLm1zQXV0aFN2Yy5pc0xvZ291dFJlcXVpcmVkKSB7XG4gICAgLy8gICB0aGlzLmtleWNsb2FrU3ZjLmxvZ291dCh0aGlzLm1zQXV0aFN2Yy5sb2dvdXRVcmwocmVkaXJlY3RVcmwpKVxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICB0aGlzLmtleWNsb2FrU3ZjLmxvZ291dChyZWRpcmVjdFVybClcbiAgICAvLyB9XG4gIH1cbiAgYXN5bmMgZm9yY2VfbG9nb3V0KCkge1xuICAgIGlmIChzdG9yYWdlLmdldEl0ZW0oJ3RlbGVtZXRyeVNlc3Npb25JZCcpKSB7XG4gICAgICBzdG9yYWdlLnJlbW92ZUl0ZW0oJ3RlbGVtZXRyeVNlc3Npb25JZCcpXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpXG4gICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKVxuICAgIH0gY2F0Y2gge1xuXG4gICAgfVxuICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yYWdlS2V5KVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9wdWJsaWMvbG9nb3V0J1xuICAgIGF3YWl0IHRoaXMuaHR0cC5nZXQoJy9hcGlzL3Jlc2V0JykudG9Qcm9taXNlKClcbiAgfVxuICBwcml2YXRlIGFkZEtleWNsb2FrRXZlbnRMaXN0ZW5lcigpIHtcbiAgICB0aGlzLmtleWNsb2FrU3ZjLmtleWNsb2FrRXZlbnRzJC5zdWJzY3JpYmUoKGV2ZW50OiBLZXljbG9ha0V2ZW50KSA9PiB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhFcnJvcjpcbiAgICAgICAgICB0aGlzLmxvZ2luQ2hhbmdlU3ViamVjdC5uZXh0KGZhbHNlKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoTG9nb3V0OlxuICAgICAgICAgIHRoaXMubG9naW5DaGFuZ2VTdWJqZWN0Lm5leHQoZmFsc2UpXG4gICAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKHN0b3JhZ2VLZXkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhSZWZyZXNoRXJyb3I6XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhSZWZyZXNoU3VjY2VzczpcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFN1Y2Nlc3M6XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBLZXljbG9ha0V2ZW50VHlwZS5PblJlYWR5OlxuICAgICAgICAgIHRoaXMubG9naW5DaGFuZ2VTdWJqZWN0Lm5leHQoZXZlbnQuYXJncylcbiAgICAgICAgICBpZiAoZXZlbnQuYXJncykge1xuICAgICAgICAgICAgdGhpcy5zYXZlS2V5Y2xvYWtDb25maWcoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIEtleWNsb2FrRXZlbnRUeXBlLk9uVG9rZW5FeHBpcmVkOlxuICAgICAgICAgIHRoaXMua2V5Y2xvYWtTdmMudXBkYXRlVG9rZW4oNjApXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEdsb2JhbEF1dGhSZXNwb25kZXIoKSB7XG4gICAgZnJvbUV2ZW50PE1lc3NhZ2VFdmVudD4od2luZG93LCAnbWVzc2FnZScpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogTWVzc2FnZUV2ZW50KSA9PlxuICAgICAgICAgICAgQm9vbGVhbihldmVudCkgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZXZlbnQuZGF0YSkgJiZcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSA9PT0gJ0FVVEhfUkVRVUVTVCcgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZXZlbnQuc291cmNlICYmIHR5cGVvZiBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UgPT09ICdmdW5jdGlvbicpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50V2luZG93ID0gZXZlbnQuc291cmNlIGFzIFdpbmRvd1xuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMua2V5Y2xvYWtTdmMuZ2V0VG9rZW4oKVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICBhcHA6ICdXRUJfUE9SVEFMJyxcbiAgICAgICAgICB0eXBlOiAnQVVUSF9SRVNQT05TRScsXG4gICAgICAgICAgc3RhdGU6ICdOT05FJyxcbiAgICAgICAgICBwbHVnaW46ICdOT05FJyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIGlkOiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuZGF0YSAmJiBldmVudC5kYXRhLmRhdGEuaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgICBjb250ZW50V2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpXG4gICAgICB9KVxuICB9XG5cbiAgLy8gVXRpbGl0eSBNZXRob2RzXG4gIHByaXZhdGUgc2F2ZUtleWNsb2FrQ29uZmlnKCkge1xuICAgIGNvbnN0IGtjID0gdGhpcy5rZXljbG9ha1N2Yy5nZXRLZXljbG9ha0luc3RhbmNlKClcbiAgICBjb25zdCBrY0luaXRPcHRpb25zOiBLZXljbG9ha0luaXRPcHRpb25zID0ge1xuICAgICAgaWRUb2tlbjoga2MuaWRUb2tlbixcbiAgICAgIHJlZnJlc2hUb2tlbjoga2MucmVmcmVzaFRva2VuLFxuICAgICAgdGltZVNrZXc6IGtjLnRpbWVTa2V3LFxuICAgICAgdG9rZW46IGtjLnRva2VuLFxuICAgIH1cbiAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoa2NJbml0T3B0aW9ucykpXG4gIH1cbiAgcHJpdmF0ZSBnZXRTYXZlZEtjQ29uZmlnKCk6IEtleWNsb2FrSW5pdE9wdGlvbnMge1xuICAgIHRyeSB7XG4gICAgICAvLyBjb25zdCBsYXN0U2F2ZWQgPSBLRVlDTE9BS19TVE9SQUdFLmdldEl0ZW0oa2V5KTtcbiAgICAgIGNvbnN0IGxhc3RTYXZlZCA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KVxuICAgICAgaWYgKGxhc3RTYXZlZCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSBKU09OLnBhcnNlKGxhc3RTYXZlZClcbiAgICAgICAgaWYgKFxuICAgICAgICAgICdpZFRva2VuJyBpbiBwcm9jZXNzZWQgJiZcbiAgICAgICAgICAncmVmcmVzaFRva2VuJyBpbiBwcm9jZXNzZWQgJiZcbiAgICAgICAgICAndGltZVNrZXcnIGluIHByb2Nlc3NlZCAmJlxuICAgICAgICAgICd0b2tlbicgaW4gcHJvY2Vzc2VkXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwcm9jZXNzZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgIHJldHVybiB7fVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVmYXVsdFJlZGlyZWN0VXJsKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVcmwgPSBkb2N1bWVudC5iYXNlVVJJXG4gICAgICByZXR1cm4gYmFzZVVybCB8fCBsb2NhdGlvbi5vcmlnaW5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGxvY2F0aW9uLm9yaWdpblxuICAgIH1cbiAgfVxufVxuIl19