@softheon/armature 15.23.0 → 17.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/README.md +142 -18
  2. package/assets/styles/_utility.scss +35 -0
  3. package/assets/styles/material-overrides.scss +0 -1
  4. package/assets/styles/sof-styles.scss +8 -7
  5. package/{esm2020 → esm2022}/lib/alert-banner/alert-banner-api.mjs +9 -9
  6. package/{esm2020 → esm2022}/lib/alert-banner/alert-banner.module.mjs +41 -41
  7. package/{esm2020 → esm2022}/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +83 -83
  8. package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-config.mjs +1 -1
  9. package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-context.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/alert-banner/models/constants.mjs +15 -15
  11. package/{esm2020 → esm2022}/lib/alert-banner/services/alert-banner.service.mjs +44 -44
  12. package/esm2022/lib/armature.module.mjs +176 -0
  13. package/{esm2020 → esm2022}/lib/base-components/base-component-api.mjs +14 -14
  14. package/esm2022/lib/base-components/base-component.module.mjs +123 -0
  15. package/{esm2020 → esm2022}/lib/base-components/sof-alert/sof-alert.component.mjs +79 -79
  16. package/esm2022/lib/base-components/sof-badge/sof-badge.component.mjs +49 -0
  17. package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +49 -0
  18. package/{esm2020 → esm2022}/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +188 -188
  19. package/{esm2020 → esm2022}/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +59 -59
  20. package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +58 -0
  21. package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +57 -0
  22. package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +79 -0
  23. package/{esm2020 → esm2022}/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +35 -35
  24. package/{esm2020 → esm2022}/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +49 -49
  25. package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +40 -0
  26. package/{esm2020 → esm2022}/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +91 -91
  27. package/{esm2020 → esm2022}/lib/component-save-print/services/component-save-print.service.mjs +30 -30
  28. package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +29 -0
  29. package/{esm2020 → esm2022}/lib/core/client-generated/api/session.service.mjs +242 -242
  30. package/{esm2020 → esm2022}/lib/core/client-generated/configuration.mjs +58 -58
  31. package/{esm2020 → esm2022}/lib/core/client-generated/encoder.mjs +16 -16
  32. package/{esm2020 → esm2022}/lib/core/client-generated/model/applicationUserModel.mjs +19 -19
  33. package/{esm2020 → esm2022}/lib/core/client-generated/model/assertedUserModel.mjs +1 -1
  34. package/{esm2020 → esm2022}/lib/core/client-generated/model/brandingModel.mjs +1 -1
  35. package/{esm2020 → esm2022}/lib/core/client-generated/model/errorModel.mjs +12 -12
  36. package/{esm2020 → esm2022}/lib/core/client-generated/model/folderLink.mjs +12 -12
  37. package/{esm2020 → esm2022}/lib/core/client-generated/model/identityProfile.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/core/client-generated/model/models.mjs +19 -19
  39. package/{esm2020 → esm2022}/lib/core/client-generated/model/oAuthModel.mjs +12 -12
  40. package/{esm2020 → esm2022}/lib/core/client-generated/model/preferencesRow.mjs +12 -12
  41. package/{esm2020 → esm2022}/lib/core/client-generated/model/rolesRow.mjs +12 -12
  42. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionGetResponseModel.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostRequestModel.mjs +1 -1
  44. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostResponseModel.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutRequestModel.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutResponseModel.mjs +1 -1
  47. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionResponseModel.mjs +1 -1
  48. package/{esm2020 → esm2022}/lib/core/client-generated/model/settingsProfile.mjs +1 -1
  49. package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteColorsModel.mjs +12 -12
  50. package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteModel.mjs +1 -1
  51. package/{esm2020 → esm2022}/lib/core/client-generated/model/trackingModel.mjs +12 -12
  52. package/{esm2020 → esm2022}/lib/core/client-generated/model/validationRecordsRow.mjs +12 -12
  53. package/{esm2020 → esm2022}/lib/core/client-generated/variables.mjs +8 -8
  54. package/esm2022/lib/core/components/app-template/app-template.component.mjs +250 -0
  55. package/{esm2020 → esm2022}/lib/core/functions/guid.mjs +10 -10
  56. package/{esm2020 → esm2022}/lib/core/functions/naming-convention.mjs +32 -32
  57. package/{esm2020 → esm2022}/lib/core/functions/route-to-pre-login-route.mjs +12 -12
  58. package/{esm2020 → esm2022}/lib/core/initializer/abstract-startup-service.mjs +3 -3
  59. package/esm2022/lib/core/initializer/initializer.service.mjs +286 -0
  60. package/{esm2020 → esm2022}/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +73 -73
  61. package/esm2022/lib/core/models/base-config.mjs +2 -0
  62. package/esm2022/lib/core/models/constants.mjs +13 -0
  63. package/{esm2020 → esm2022}/lib/core/models/data-store-config.mjs +3 -3
  64. package/{esm2020 → esm2022}/lib/core/models/header-config.mjs +1 -1
  65. package/{esm2020 → esm2022}/lib/core/models/http-verbs.mjs +8 -8
  66. package/{esm2020 → esm2022}/lib/core/models/navigation-config.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/core/models/oidc-auth-settings.mjs +1 -1
  68. package/{esm2020 → esm2022}/lib/core/models/route-path.mjs +6 -6
  69. package/{esm2020 → esm2022}/lib/core/models/session-config.mjs +3 -3
  70. package/{esm2020 → esm2022}/lib/core/models/styles.mjs +1 -1
  71. package/{esm2020 → esm2022}/lib/core/models/subdomain-config.mjs +1 -1
  72. package/{esm2020 → esm2022}/lib/core/models/typed-session.mjs +3 -3
  73. package/{esm2020 → esm2022}/lib/core/models/user-entity-service-config.mjs +11 -11
  74. package/{esm2020 → esm2022}/lib/core/services/authorization.service.mjs +175 -175
  75. package/{esm2020 → esm2022}/lib/core/services/banner.service.mjs +43 -43
  76. package/{esm2020 → esm2022}/lib/core/services/base-config.service.mjs +32 -32
  77. package/{esm2020 → esm2022}/lib/core/services/custom-auth-config.service.mjs +3 -3
  78. package/{esm2020 → esm2022}/lib/core/services/default-config.service.mjs +19 -19
  79. package/{esm2020 → esm2022}/lib/core/services/session.service.mjs +385 -385
  80. package/{esm2020 → esm2022}/lib/core/services/user-entity.service.mjs +140 -140
  81. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/api.mjs +3 -3
  82. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/cache.service.mjs +213 -213
  83. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/configuration.mjs +58 -58
  84. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/encoder.mjs +16 -16
  85. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +15 -15
  86. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +1 -1
  87. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/models.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +12 -12
  89. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +12 -12
  90. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/variables.mjs +8 -8
  91. package/{esm2020 → esm2022}/lib/distributed-cache/distributed-cache-api.mjs +7 -7
  92. package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +38 -0
  93. package/{esm2020 → esm2022}/lib/distributed-cache/models/constants.mjs +2 -2
  94. package/{esm2020 → esm2022}/lib/distributed-cache/models/policy-person.mjs +8 -8
  95. package/{esm2020 → esm2022}/lib/distributed-cache/services/server-cache.service.mjs +48 -48
  96. package/{esm2020 → esm2022}/lib/error/components/error-common/error-common.component.mjs +25 -25
  97. package/{esm2020 → esm2022}/lib/error/error-api.mjs +6 -6
  98. package/{esm2020 → esm2022}/lib/error/error.module.mjs +31 -31
  99. package/{esm2020 → esm2022}/lib/error/models/error-common-config.mjs +7 -7
  100. package/esm2022/lib/faq/components/faq/faq.component.mjs +40 -0
  101. package/{esm2020 → esm2022}/lib/faq/faq-api.mjs +7 -7
  102. package/{esm2020 → esm2022}/lib/faq/faq.module.mjs +41 -41
  103. package/{esm2020 → esm2022}/lib/faq/models/faq-config.mjs +3 -3
  104. package/{esm2020 → esm2022}/lib/faq/models/faq.mjs +7 -7
  105. package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +81 -0
  106. package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +5 -0
  107. package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +44 -0
  108. package/esm2022/lib/footer/components/footer/footer.component.mjs +25 -0
  109. package/{esm2020 → esm2022}/lib/footer/components/site-map/site-map.component.mjs +25 -25
  110. package/{esm2020 → esm2022}/lib/footer/footer-api.mjs +9 -9
  111. package/esm2022/lib/footer/footer.module.mjs +45 -0
  112. package/{esm2020 → esm2022}/lib/footer/models/enum/site-map-direction.mjs +14 -14
  113. package/{esm2020 → esm2022}/lib/footer/models/footer-config.mjs +3 -3
  114. package/{esm2020 → esm2022}/lib/footer/models/site-map-models.mjs +1 -1
  115. package/{esm2020 → esm2022}/lib/forms/components/sof-address/sof-address.component.mjs +110 -110
  116. package/{esm2020 → esm2022}/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +78 -78
  117. package/{esm2020 → esm2022}/lib/forms/directives/input-trim/input-trim.directive.mjs +110 -110
  118. package/{esm2020 → esm2022}/lib/forms/directives/letters-characters/letters-characters.directive.mjs +87 -87
  119. package/{esm2020 → esm2022}/lib/forms/directives/letters-only/letters-only.directive.mjs +85 -85
  120. package/{esm2020 → esm2022}/lib/forms/directives/numbers-only/numbers-only.directive.mjs +55 -55
  121. package/{esm2020 → esm2022}/lib/forms/forms-api.mjs +19 -19
  122. package/esm2022/lib/forms/forms.module.mjs +87 -0
  123. package/{esm2020 → esm2022}/lib/forms/models/address.mjs +1 -1
  124. package/esm2022/lib/forms/models/constants.mjs +10 -0
  125. package/{esm2020 → esm2022}/lib/forms/models/county.mjs +1 -1
  126. package/{esm2020 → esm2022}/lib/forms/models/enums/states.mjs +65 -65
  127. package/{esm2020 → esm2022}/lib/forms/pipes/phone-format.pipe.mjs +33 -33
  128. package/{esm2020 → esm2022}/lib/forms/services/alert.service.mjs +167 -167
  129. package/esm2022/lib/header/components/header/header.component.mjs +161 -0
  130. package/{esm2020 → esm2022}/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +39 -39
  131. package/{esm2020 → esm2022}/lib/header/header-api.mjs +11 -11
  132. package/esm2022/lib/header/header.module.mjs +85 -0
  133. package/{esm2020 → esm2022}/lib/header/models/header-auth.settings.mjs +31 -31
  134. package/{esm2020 → esm2022}/lib/header/models/header-language.settings.mjs +1 -1
  135. package/{esm2020 → esm2022}/lib/header/models/header-theme.settings.mjs +1 -1
  136. package/{esm2020 → esm2022}/lib/header/models/header.settings.mjs +1 -1
  137. package/{esm2020 → esm2022}/lib/header/models/mobile-header-nav.settings.mjs +1 -1
  138. package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +556 -0
  139. package/{esm2020 → esm2022}/lib/navigation/models/nav-theme.settings.mjs +1 -1
  140. package/{esm2020 → esm2022}/lib/navigation/models/nav.settings.mjs +1 -1
  141. package/{esm2020 → esm2022}/lib/navigation/models/navigation.mjs +1 -1
  142. package/{esm2020 → esm2022}/lib/navigation/navigation-api.mjs +8 -8
  143. package/esm2022/lib/navigation/navigation.module.mjs +126 -0
  144. package/{esm2020 → esm2022}/lib/oauth/models/constants.mjs +5 -5
  145. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementAssertionModel.mjs +1 -1
  146. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +1 -1
  147. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementResponseModel.mjs +1 -1
  148. package/{esm2020 → esm2022}/lib/oauth/models/generated/coverageDetail.mjs +18 -18
  149. package/{esm2020 → esm2022}/lib/oauth/models/generated/finance.mjs +12 -12
  150. package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModel.mjs +12 -12
  151. package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +1 -1
  152. package/{esm2020 → esm2022}/lib/oauth/models/generated/person.mjs +12 -12
  153. package/{esm2020 → esm2022}/lib/oauth/models/generated/policy.mjs +1 -1
  154. package/{esm2020 → esm2022}/lib/oauth/models/generated/refreshResponseModel.mjs +12 -12
  155. package/{esm2020 → esm2022}/lib/oauth/models/hybrid-saml-oauth-config.mjs +3 -3
  156. package/{esm2020 → esm2022}/lib/oauth/oauth-api.mjs +14 -14
  157. package/{esm2020 → esm2022}/lib/oauth/oauth.module.mjs +29 -29
  158. package/{esm2020 → esm2022}/lib/oauth/services/hybrid-saml-oauth.service.mjs +201 -201
  159. package/{esm2020 → esm2022}/lib/rbac/directives/rbac-action.directive.mjs +50 -50
  160. package/{esm2020 → esm2022}/lib/rbac/models/access-token-claims.mjs +22 -22
  161. package/{esm2020 → esm2022}/lib/rbac/models/constants.mjs +3 -3
  162. package/{esm2020 → esm2022}/lib/rbac/models/decoded-access-token.mjs +68 -68
  163. package/{esm2020 → esm2022}/lib/rbac/models/rbac-config.mjs +3 -3
  164. package/{esm2020 → esm2022}/lib/rbac/models/role-access.mjs +9 -9
  165. package/{esm2020 → esm2022}/lib/rbac/rbac-api.mjs +14 -14
  166. package/{esm2020 → esm2022}/lib/rbac/rbac.module.mjs +51 -51
  167. package/{esm2020 → esm2022}/lib/rbac/services/ar-role-nav.service.mjs +104 -104
  168. package/{esm2020 → esm2022}/lib/rbac/services/oauth2-role.service.mjs +114 -114
  169. package/{esm2020 → esm2022}/lib/rbac/services/role-nav.service.mjs +3 -3
  170. package/{esm2020 → esm2022}/lib/rbac/services/tokens.mjs +3 -3
  171. package/{esm2020 → esm2022}/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +156 -156
  172. package/{esm2020 → esm2022}/lib/resize-panels/models/resize-event.mjs +1 -1
  173. package/{esm2020 → esm2022}/lib/resize-panels/resize-panels-api.mjs +4 -4
  174. package/{esm2020 → esm2022}/lib/resize-panels/resize-panels.module.mjs +23 -23
  175. package/{esm2020 → esm2022}/lib/rum/models/arm-error.mjs +28 -28
  176. package/{esm2020 → esm2022}/lib/rum/models/rum-config.mjs +3 -3
  177. package/{esm2020 → esm2022}/lib/rum/rum-api.mjs +9 -9
  178. package/{esm2020 → esm2022}/lib/rum/rum.module.mjs +48 -48
  179. package/{esm2020 → esm2022}/lib/rum/services/rum.service.mjs +115 -115
  180. package/{esm2020 → esm2022}/lib/rum/services/shared-error.service.mjs +45 -45
  181. package/{esm2020 → esm2022}/lib/rum/services/softheon-error-handler.service.mjs +76 -76
  182. package/{esm2020 → esm2022}/lib/saml/components/redirect-saml/redirect-saml.component.mjs +79 -79
  183. package/{esm2020 → esm2022}/lib/saml/models/i-saml-request.mjs +1 -1
  184. package/{esm2020 → esm2022}/lib/saml/models/i-saml-response.mjs +1 -1
  185. package/{esm2020 → esm2022}/lib/saml/models/redirect-saml-request.mjs +3 -3
  186. package/{esm2020 → esm2022}/lib/saml/models/sso-gateway-model.mjs +3 -3
  187. package/{esm2020 → esm2022}/lib/saml/saml-api.mjs +14 -14
  188. package/{esm2020 → esm2022}/lib/saml/saml.module.mjs +43 -43
  189. package/{esm2020 → esm2022}/lib/saml/services/entry/abstract-saml-entry.service.mjs +3 -3
  190. package/{esm2020 → esm2022}/lib/saml/services/entry/sso-gateway-entry.service.mjs +36 -36
  191. package/{esm2020 → esm2022}/lib/saml/services/send-off/abstract-saml.service.mjs +3 -3
  192. package/{esm2020 → esm2022}/lib/saml/services/send-off/saml.service.mjs +39 -39
  193. package/{esm2020 → esm2022}/lib/sof-pipe/constants/constants.mjs +16 -16
  194. package/{esm2020 → esm2022}/lib/sof-pipe/models/sof-date-pipe-format.mjs +1 -1
  195. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +39 -39
  196. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +59 -59
  197. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +28 -28
  198. package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.api.mjs +8 -8
  199. package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.module.mjs +39 -39
  200. package/{esm2020 → esm2022}/lib/theming/directives/css-override.directive.mjs +69 -69
  201. package/{esm2020 → esm2022}/lib/theming/models/css-override.mjs +10 -10
  202. package/{esm2020 → esm2022}/lib/theming/services/theme.service.mjs +169 -169
  203. package/{esm2020 → esm2022}/lib/theming/theme-api.mjs +5 -5
  204. package/{esm2020 → esm2022}/lib/theming/theme.module.mjs +31 -31
  205. package/esm2022/public-api.mjs +52 -0
  206. package/{esm2020 → esm2022}/softheon-armature.mjs +4 -4
  207. package/fesm2022/softheon-armature.mjs +7439 -0
  208. package/fesm2022/softheon-armature.mjs.map +1 -0
  209. package/index.d.ts +5 -5
  210. package/lib/alert-banner/alert-banner-api.d.ts +7 -7
  211. package/lib/alert-banner/alert-banner.module.d.ts +11 -11
  212. package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +40 -40
  213. package/lib/alert-banner/models/alert-banner-config.d.ts +20 -20
  214. package/lib/alert-banner/models/alert-banner-context.d.ts +18 -18
  215. package/lib/alert-banner/models/constants.d.ts +15 -15
  216. package/lib/alert-banner/services/alert-banner.service.d.ts +28 -28
  217. package/lib/armature.module.d.ts +46 -46
  218. package/lib/base-components/base-component-api.d.ts +13 -13
  219. package/lib/base-components/base-component.module.d.ts +35 -35
  220. package/lib/base-components/sof-alert/sof-alert.component.d.ts +40 -40
  221. package/lib/base-components/sof-badge/sof-badge.component.d.ts +26 -30
  222. package/lib/base-components/sof-banner/sof-banner.component.d.ts +34 -34
  223. package/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.d.ts +100 -100
  224. package/lib/base-components/sof-confirm-address/sof-confirm-address.component.d.ts +61 -61
  225. package/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.d.ts +28 -28
  226. package/lib/base-components/sof-modal/sof-modal.component.d.ts +51 -51
  227. package/lib/base-components/sof-progress-bar/sof-progress-bar.component.d.ts +40 -40
  228. package/lib/base-components/sof-radio-card/sof-radio-card.component.d.ts +20 -20
  229. package/lib/base-components/sof-simple-alert/sof-simple-alert.component.d.ts +29 -29
  230. package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +25 -25
  231. package/lib/component-save-print/components/component-save-print/component-save-print.component.d.ts +46 -46
  232. package/lib/component-save-print/services/component-save-print.service.d.ts +18 -18
  233. package/lib/component-save-print/sof-ar-component-save-print.module.d.ts +9 -9
  234. package/lib/core/client-generated/api/session.service.d.ts +94 -94
  235. package/lib/core/client-generated/configuration.d.ts +48 -48
  236. package/lib/core/client-generated/encoder.d.ts +10 -10
  237. package/lib/core/client-generated/model/applicationUserModel.d.ts +54 -54
  238. package/lib/core/client-generated/model/assertedUserModel.d.ts +25 -25
  239. package/lib/core/client-generated/model/brandingModel.d.ts +33 -33
  240. package/lib/core/client-generated/model/errorModel.d.ts +24 -24
  241. package/lib/core/client-generated/model/folderLink.d.ts +34 -34
  242. package/lib/core/client-generated/model/identityProfile.d.ts +82 -82
  243. package/lib/core/client-generated/model/models.d.ts +19 -19
  244. package/lib/core/client-generated/model/oAuthModel.d.ts +28 -28
  245. package/lib/core/client-generated/model/preferencesRow.d.ts +15 -15
  246. package/lib/core/client-generated/model/rolesRow.d.ts +17 -17
  247. package/lib/core/client-generated/model/sessionGetResponseModel.d.ts +23 -23
  248. package/lib/core/client-generated/model/sessionPostRequestModel.d.ts +39 -39
  249. package/lib/core/client-generated/model/sessionPostResponseModel.d.ts +23 -23
  250. package/lib/core/client-generated/model/sessionPutRequestModel.d.ts +39 -39
  251. package/lib/core/client-generated/model/sessionPutResponseModel.d.ts +23 -23
  252. package/lib/core/client-generated/model/sessionResponseModel.d.ts +43 -43
  253. package/lib/core/client-generated/model/settingsProfile.d.ts +21 -21
  254. package/lib/core/client-generated/model/themePaletteColorsModel.d.ts +72 -72
  255. package/lib/core/client-generated/model/themePaletteModel.d.ts +65 -65
  256. package/lib/core/client-generated/model/trackingModel.d.ts +24 -24
  257. package/lib/core/client-generated/model/validationRecordsRow.d.ts +17 -17
  258. package/lib/core/client-generated/variables.d.ts +8 -8
  259. package/lib/core/components/app-template/app-template.component.d.ts +61 -67
  260. package/lib/core/functions/guid.d.ts +4 -4
  261. package/lib/core/functions/naming-convention.d.ts +6 -6
  262. package/lib/core/functions/route-to-pre-login-route.d.ts +6 -6
  263. package/lib/core/initializer/abstract-startup-service.d.ts +5 -5
  264. package/lib/core/initializer/initializer.service.d.ts +79 -87
  265. package/lib/core/interceptors/armature-auth-token-append.interceptor.d.ts +31 -31
  266. package/lib/core/models/base-config.d.ts +18 -23
  267. package/lib/core/models/constants.d.ts +13 -17
  268. package/lib/core/models/data-store-config.d.ts +27 -27
  269. package/lib/core/models/header-config.d.ts +9 -9
  270. package/lib/core/models/http-verbs.d.ts +10 -10
  271. package/lib/core/models/navigation-config.d.ts +14 -14
  272. package/lib/core/models/oidc-auth-settings.d.ts +11 -11
  273. package/lib/core/models/route-path.d.ts +5 -5
  274. package/lib/core/models/session-config.d.ts +18 -18
  275. package/lib/core/models/styles.d.ts +11 -11
  276. package/lib/core/models/subdomain-config.d.ts +7 -7
  277. package/lib/core/models/typed-session.d.ts +17 -17
  278. package/lib/core/models/user-entity-service-config.d.ts +14 -14
  279. package/lib/core/services/authorization.service.d.ts +54 -54
  280. package/lib/core/services/banner.service.d.ts +31 -31
  281. package/lib/core/services/base-config.service.d.ts +21 -21
  282. package/lib/core/services/custom-auth-config.service.d.ts +6 -6
  283. package/lib/core/services/default-config.service.d.ts +8 -8
  284. package/lib/core/services/session.service.d.ts +127 -127
  285. package/lib/core/services/user-entity.service.d.ts +47 -47
  286. package/lib/distributed-cache/client-generated/api/api.d.ts +3 -3
  287. package/lib/distributed-cache/client-generated/api/cache.service.d.ts +72 -72
  288. package/lib/distributed-cache/client-generated/configuration.d.ts +48 -48
  289. package/lib/distributed-cache/client-generated/encoder.d.ts +10 -10
  290. package/lib/distributed-cache/client-generated/model/cacheExpirationType.d.ts +19 -19
  291. package/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.d.ts +33 -33
  292. package/lib/distributed-cache/client-generated/model/models.d.ts +4 -4
  293. package/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.d.ts +20 -20
  294. package/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.d.ts +20 -20
  295. package/lib/distributed-cache/client-generated/variables.d.ts +8 -8
  296. package/lib/distributed-cache/distributed-cache-api.d.ts +7 -7
  297. package/lib/distributed-cache/distributed-cache.module.d.ts +8 -8
  298. package/lib/distributed-cache/models/constants.d.ts +2 -2
  299. package/lib/distributed-cache/models/policy-person.d.ts +19 -19
  300. package/lib/distributed-cache/services/server-cache.service.d.ts +72 -72
  301. package/lib/error/components/error-common/error-common.component.d.ts +14 -14
  302. package/lib/error/error-api.d.ts +4 -4
  303. package/lib/error/error.module.d.ts +11 -11
  304. package/lib/error/models/error-common-config.d.ts +21 -21
  305. package/lib/faq/components/faq/faq.component.d.ts +19 -19
  306. package/lib/faq/faq-api.d.ts +5 -5
  307. package/lib/faq/faq.module.d.ts +15 -15
  308. package/lib/faq/models/faq-config.d.ts +13 -13
  309. package/lib/faq/models/faq.d.ts +9 -9
  310. package/lib/feedback-tool/components/feedback-tool/feedback-tool.component.d.ts +62 -0
  311. package/lib/feedback-tool/feedback-tool-api.d.ts +3 -0
  312. package/lib/feedback-tool/feedback-tool.module.d.ts +14 -0
  313. package/lib/footer/components/footer/footer.component.d.ts +14 -14
  314. package/lib/footer/components/site-map/site-map.component.d.ts +13 -13
  315. package/lib/footer/footer-api.d.ts +7 -7
  316. package/lib/footer/footer.module.d.ts +14 -14
  317. package/lib/footer/models/enum/site-map-direction.d.ts +13 -13
  318. package/lib/footer/models/footer-config.d.ts +7 -7
  319. package/lib/footer/models/site-map-models.d.ts +41 -41
  320. package/lib/forms/components/sof-address/sof-address.component.d.ts +53 -53
  321. package/lib/forms/directives/alphanumeric/alphanumeric.directive.d.ts +31 -31
  322. package/lib/forms/directives/input-trim/input-trim.directive.d.ts +58 -58
  323. package/lib/forms/directives/letters-characters/letters-characters.directive.d.ts +27 -27
  324. package/lib/forms/directives/letters-only/letters-only.directive.d.ts +27 -27
  325. package/lib/forms/directives/numbers-only/numbers-only.directive.d.ts +22 -22
  326. package/lib/forms/forms-api.d.ts +14 -14
  327. package/lib/forms/forms.module.d.ts +21 -21
  328. package/lib/forms/models/address.d.ts +14 -14
  329. package/lib/forms/models/constants.d.ts +9 -9
  330. package/lib/forms/models/county.d.ts +13 -13
  331. package/lib/forms/models/enums/states.d.ts +64 -64
  332. package/lib/forms/pipes/phone-format.pipe.d.ts +10 -10
  333. package/lib/forms/services/alert.service.d.ts +60 -60
  334. package/lib/header/components/header/header.component.d.ts +120 -120
  335. package/lib/header/components/mobile-header-menu/mobile-header-menu.component.d.ts +26 -26
  336. package/lib/header/header-api.d.ts +9 -9
  337. package/lib/header/header.module.d.ts +20 -20
  338. package/lib/header/models/header-auth.settings.d.ts +30 -30
  339. package/lib/header/models/header-language.settings.d.ts +10 -10
  340. package/lib/header/models/header-theme.settings.d.ts +19 -19
  341. package/lib/header/models/header.settings.d.ts +53 -53
  342. package/lib/header/models/mobile-header-nav.settings.d.ts +11 -11
  343. package/lib/navigation/components/navigation/navigation.component.d.ts +200 -200
  344. package/lib/navigation/models/nav-theme.settings.d.ts +25 -25
  345. package/lib/navigation/models/nav.settings.d.ts +64 -64
  346. package/lib/navigation/models/navigation.d.ts +40 -40
  347. package/lib/navigation/navigation-api.d.ts +6 -6
  348. package/lib/navigation/navigation.module.d.ts +25 -25
  349. package/lib/oauth/models/constants.d.ts +6 -6
  350. package/lib/oauth/models/generated/accountManagementAssertionModel.d.ts +49 -49
  351. package/lib/oauth/models/generated/accountManagementRefreshRequestModel.d.ts +21 -21
  352. package/lib/oauth/models/generated/accountManagementResponseModel.d.ts +45 -45
  353. package/lib/oauth/models/generated/coverageDetail.d.ts +67 -67
  354. package/lib/oauth/models/generated/finance.d.ts +36 -36
  355. package/lib/oauth/models/generated/iSsoResponseModel.d.ts +44 -44
  356. package/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.d.ts +45 -45
  357. package/lib/oauth/models/generated/person.d.ts +53 -53
  358. package/lib/oauth/models/generated/policy.d.ts +51 -51
  359. package/lib/oauth/models/generated/refreshResponseModel.d.ts +20 -20
  360. package/lib/oauth/models/hybrid-saml-oauth-config.d.ts +14 -14
  361. package/lib/oauth/oauth-api.d.ts +12 -12
  362. package/lib/oauth/oauth.module.d.ts +9 -9
  363. package/lib/oauth/services/hybrid-saml-oauth.service.d.ts +59 -59
  364. package/lib/rbac/directives/rbac-action.directive.d.ts +27 -27
  365. package/lib/rbac/models/access-token-claims.d.ts +18 -18
  366. package/lib/rbac/models/constants.d.ts +4 -4
  367. package/lib/rbac/models/decoded-access-token.d.ts +43 -43
  368. package/lib/rbac/models/rbac-config.d.ts +15 -15
  369. package/lib/rbac/models/role-access.d.ts +7 -7
  370. package/lib/rbac/rbac-api.d.ts +11 -11
  371. package/lib/rbac/rbac.module.d.ts +19 -19
  372. package/lib/rbac/services/ar-role-nav.service.d.ts +25 -25
  373. package/lib/rbac/services/oauth2-role.service.d.ts +51 -51
  374. package/lib/rbac/services/role-nav.service.d.ts +12 -12
  375. package/lib/rbac/services/tokens.d.ts +3 -3
  376. package/lib/resize-panels/components/resize-panels/resize-panels.component.d.ts +64 -64
  377. package/lib/resize-panels/models/resize-event.d.ts +6 -6
  378. package/lib/resize-panels/resize-panels-api.d.ts +4 -4
  379. package/lib/resize-panels/resize-panels.module.d.ts +9 -9
  380. package/lib/rum/models/arm-error.d.ts +27 -27
  381. package/lib/rum/models/rum-config.d.ts +9 -9
  382. package/lib/rum/rum-api.d.ts +7 -7
  383. package/lib/rum/rum.module.d.ts +14 -14
  384. package/lib/rum/services/rum.service.d.ts +47 -47
  385. package/lib/rum/services/shared-error.service.d.ts +27 -27
  386. package/lib/rum/services/softheon-error-handler.service.d.ts +32 -32
  387. package/lib/saml/components/redirect-saml/redirect-saml.component.d.ts +41 -41
  388. package/lib/saml/models/i-saml-request.d.ts +4 -4
  389. package/lib/saml/models/i-saml-response.d.ts +4 -4
  390. package/lib/saml/models/redirect-saml-request.d.ts +24 -24
  391. package/lib/saml/models/sso-gateway-model.d.ts +17 -17
  392. package/lib/saml/saml-api.d.ts +11 -11
  393. package/lib/saml/saml.module.d.ts +9 -9
  394. package/lib/saml/services/entry/abstract-saml-entry.service.d.ts +16 -16
  395. package/lib/saml/services/entry/sso-gateway-entry.service.d.ts +22 -22
  396. package/lib/saml/services/send-off/abstract-saml.service.d.ts +20 -20
  397. package/lib/saml/services/send-off/saml.service.d.ts +32 -32
  398. package/lib/sof-pipe/constants/constants.d.ts +8 -8
  399. package/lib/sof-pipe/models/sof-date-pipe-format.d.ts +7 -7
  400. package/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.d.ts +19 -19
  401. package/lib/sof-pipe/pipes/sof-date/sof-date.pipe.d.ts +21 -21
  402. package/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.d.ts +12 -12
  403. package/lib/sof-pipe/sof-pipe.api.d.ts +7 -7
  404. package/lib/sof-pipe/sof-pipe.module.d.ts +10 -10
  405. package/lib/theming/directives/css-override.directive.d.ts +20 -20
  406. package/lib/theming/models/css-override.d.ts +15 -15
  407. package/lib/theming/services/theme.service.d.ts +48 -48
  408. package/lib/theming/theme-api.d.ts +5 -5
  409. package/lib/theming/theme.module.d.ts +9 -9
  410. package/package.json +18 -24
  411. package/public-api.d.ts +49 -48
  412. package/esm2020/lib/armature.module.mjs +0 -179
  413. package/esm2020/lib/base-components/base-component.module.mjs +0 -123
  414. package/esm2020/lib/base-components/sof-badge/sof-badge.component.mjs +0 -60
  415. package/esm2020/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
  416. package/esm2020/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
  417. package/esm2020/lib/base-components/sof-modal/sof-modal.component.mjs +0 -58
  418. package/esm2020/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
  419. package/esm2020/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -40
  420. package/esm2020/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -32
  421. package/esm2020/lib/core/components/app-template/app-template.component.mjs +0 -258
  422. package/esm2020/lib/core/initializer/initializer.service.mjs +0 -302
  423. package/esm2020/lib/core/models/base-config.mjs +0 -2
  424. package/esm2020/lib/core/models/constants.mjs +0 -17
  425. package/esm2020/lib/core/models/federated-module-config.mjs +0 -2
  426. package/esm2020/lib/core/services/federated-module.service.mjs +0 -60
  427. package/esm2020/lib/distributed-cache/distributed-cache.module.mjs +0 -38
  428. package/esm2020/lib/faq/components/faq/faq.component.mjs +0 -40
  429. package/esm2020/lib/footer/components/footer/footer.component.mjs +0 -25
  430. package/esm2020/lib/footer/footer.module.mjs +0 -45
  431. package/esm2020/lib/forms/forms.module.mjs +0 -87
  432. package/esm2020/lib/forms/models/constants.mjs +0 -10
  433. package/esm2020/lib/header/components/header/header.component.mjs +0 -161
  434. package/esm2020/lib/header/header.module.mjs +0 -85
  435. package/esm2020/lib/navigation/components/navigation/navigation.component.mjs +0 -556
  436. package/esm2020/lib/navigation/navigation.module.mjs +0 -126
  437. package/esm2020/public-api.mjs +0 -51
  438. package/fesm2015/softheon-armature.mjs +0 -7372
  439. package/fesm2015/softheon-armature.mjs.map +0 -1
  440. package/fesm2020/softheon-armature.mjs +0 -7427
  441. package/fesm2020/softheon-armature.mjs.map +0 -1
  442. package/lib/core/models/federated-module-config.d.ts +0 -3
  443. package/lib/core/services/federated-module.service.d.ts +0 -23
@@ -1,201 +1,201 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import { BehaviorSubject, of } from 'rxjs';
3
- import { catchError, map } from 'rxjs/operators';
4
- import { WINDOW } from '../../core/models/constants';
5
- import { DecodedAccessToken } from '../../rbac/models/decoded-access-token';
6
- import { HYBRID_SAML_OAUTH_CONFIG, keyPathPrefix } from '../models/constants';
7
- import { pascalToCamel } from '../../core/functions/naming-convention';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common/http";
10
- import * as i2 from "../models/hybrid-saml-oauth-config";
11
- /** The hybrid SAML Oauth Service */
12
- export class HybridSamlOauthService {
13
- /** The oauth access token */
14
- get accessToken() {
15
- return this._accessToken;
16
- }
17
- /** Gets the hash */
18
- get hash() {
19
- if (this.config?.dataFormat === 'PascalCase') {
20
- return this.rawData.Hash;
21
- }
22
- return this.rawData.hash;
23
- }
24
- /**
25
- * constructs the service
26
- * @param windowGeneric The window interface
27
- * @param config The service configurations
28
- * @param httpClient The http client
29
- */
30
- constructor(windowGeneric, config, httpClient) {
31
- this.windowGeneric = windowGeneric;
32
- this.config = config;
33
- this.httpClient = httpClient;
34
- /** The armature access token key */
35
- this.accessTokenSessionStorageKey = 'Sof-Arm-Access-Token';
36
- // set the window to be strongly typed, compile error makes it so it can't be done in the constructor
37
- this.window = this.windowGeneric || window;
38
- if (!this.config) {
39
- console.warn('HybridSamlOauthService skipping initialization, please add HYBRID_SAML_OAUTH_CONFIG to your providers to use the service');
40
- return;
41
- }
42
- const refreshTimeMinutes = this.config?.tokenRefreshTimeMinutes || 20; // use 20 min token refresh time if non provided
43
- // set the token endpoint
44
- if (this.config?.tokenEndpoint$) {
45
- this.config.tokenEndpoint$.subscribe(endpoint => this.tokenEndpoint = endpoint);
46
- }
47
- else {
48
- console.warn('HYBRID_SAML_OAUTH_CONFIG.tokenEndpoint$ is not provided');
49
- }
50
- // set the key path from the key path prefix and suffix
51
- this.keyPath = `${keyPathPrefix}${this.config?.keyPathSuffix}`;
52
- // read values from local storage based on the key path
53
- const rawData = this.getRawData();
54
- if (!rawData) {
55
- const token = this.window.sessionStorage.getItem(this.accessTokenSessionStorageKey);
56
- this._accessToken = token;
57
- }
58
- else {
59
- if (this.config?.dataFormat === 'PascalCase') {
60
- this.rawData = JSON.parse(rawData);
61
- this._accessToken = this.rawData.AccessToken;
62
- }
63
- else {
64
- this.rawData = this.toCamel(JSON.parse(rawData));
65
- this._accessToken = this.rawData.accessToken;
66
- }
67
- // populate the access token
68
- this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, this._accessToken);
69
- }
70
- // set up the observable and behavior subject
71
- this.accessTokenBs = new BehaviorSubject(this._accessToken);
72
- this.accessToken$ = this.accessTokenBs.asObservable();
73
- try {
74
- if (this.accessToken) {
75
- const decoded = new DecodedAccessToken(this.accessToken);
76
- const currentDateMiliS = new Date().getTime();
77
- if ((decoded.exp * 1000) <= currentDateMiliS + (refreshTimeMinutes * 60000)) {
78
- this.refreshToken(this.tokenEndpoint);
79
- }
80
- }
81
- else {
82
- console.warn('Starting HybridSamlOAuthService without token');
83
- }
84
- }
85
- catch (e) {
86
- console.warn('starting HybridSamlOAuthService without token or malformed token', this.accessToken, e);
87
- }
88
- setInterval(() => {
89
- this.refreshToken(this.tokenEndpoint);
90
- }, refreshTimeMinutes * 60000); // x minutes times number of milliseconds in a minute
91
- }
92
- /** Returns the raw data casted to the provided type */
93
- getAssertionData() {
94
- if (this.config.dataFormat === 'PascalCase') {
95
- if (!this.rawData || !(this.rawData.Assertions)) {
96
- return undefined;
97
- }
98
- return this.rawData.Assertions;
99
- }
100
- else {
101
- if (!this.rawData || !this.rawData.assertions) {
102
- return undefined;
103
- }
104
- return this.rawData.assertions;
105
- }
106
- }
107
- /**
108
- * Expires the session by clearing the service and local storage
109
- * @param shouldExpireBoth True if the both session and local storage should be expired
110
- */
111
- expireSession(shouldExpireBoth = false) {
112
- if (shouldExpireBoth) {
113
- this.window.localStorage.removeItem(this.keyPath);
114
- this.window.sessionStorage.removeItem(this.keyPath);
115
- this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);
116
- this.rawData = undefined;
117
- return;
118
- }
119
- if (this.config?.browserStorageImplementation === 'session') {
120
- this.window.sessionStorage.removeItem(this.keyPath);
121
- }
122
- else {
123
- this.window.localStorage.removeItem(this.keyPath);
124
- }
125
- this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);
126
- this.rawData = undefined;
127
- }
128
- /**
129
- * Refreshes the access token using the provided endpoint
130
- * @param tokenEndpoint The full token endpoint
131
- */
132
- refreshToken(tokenEndpoint) {
133
- if (!this.rawData) {
134
- console.warn('No sso response model');
135
- return;
136
- }
137
- // make api call to get a token, uses assertions, hash, and assertion provider implementation string
138
- const req = {
139
- ssoResponseModel: this.rawData
140
- };
141
- this.httpClient.post(tokenEndpoint, req)
142
- .pipe(map(res => {
143
- if (this.config?.dataFormat === 'PascalCase') {
144
- this.rawData.AccessToken = res.accessToken;
145
- }
146
- else {
147
- this.rawData.accessToken = res.accessToken;
148
- }
149
- this._accessToken = res.accessToken;
150
- this.window.localStorage.setItem(this.keyPath, JSON.stringify(this.rawData));
151
- this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, res.accessToken);
152
- this.accessTokenBs.next(this._accessToken);
153
- }), catchError(error => {
154
- console.error(error);
155
- return of(error);
156
- }))
157
- .subscribe(() => { });
158
- }
159
- /** gets the raw data */
160
- getRawData() {
161
- const lsData = this.window.localStorage.getItem(this.keyPath);
162
- if (this.config?.browserStorageImplementation === 'session') {
163
- // first move local storage data if there is any
164
- if (lsData) {
165
- this.window.sessionStorage.setItem(this.keyPath, lsData);
166
- this.window.localStorage.removeItem(this.keyPath);
167
- }
168
- // return the session storage data
169
- return this.window.sessionStorage.getItem(this.keyPath);
170
- }
171
- // otherwise return local storage data
172
- return lsData;
173
- }
174
- /**
175
- * converts object keys to camel case
176
- * https://stackoverflow.com/questions/12931828/convert-returned-json-object-properties-to-lower-first-camelcase
177
- * @param o The object
178
- */
179
- toCamel(o) {
180
- return pascalToCamel(o);
181
- }
182
- }
183
- HybridSamlOauthServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HybridSamlOauthService, deps: [{ token: WINDOW, optional: true }, { token: HYBRID_SAML_OAUTH_CONFIG, optional: true }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
184
- HybridSamlOauthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HybridSamlOauthService, providedIn: 'root' });
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HybridSamlOauthService, decorators: [{
186
- type: Injectable,
187
- args: [{
188
- providedIn: 'root'
189
- }]
190
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
191
- type: Optional
192
- }, {
193
- type: Inject,
194
- args: [WINDOW]
195
- }] }, { type: i2.HybridSamlOAuthConfig, decorators: [{
196
- type: Optional
197
- }, {
198
- type: Inject,
199
- args: [HYBRID_SAML_OAUTH_CONFIG]
200
- }] }, { type: i1.HttpClient }]; } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlicmlkLXNhbWwtb2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvb2F1dGgvc2VydmljZXMvaHlicmlkLXNhbWwtb2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUl2RSxvQ0FBb0M7QUFJcEMsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyw2QkFBNkI7SUFDN0IsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS0Qsb0JBQW9CO0lBQ3BCLElBQVcsSUFBSTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUssWUFBWSxFQUFFO1lBQzVDLE9BQVEsSUFBSSxDQUFDLE9BQWUsQ0FBQyxJQUFJLENBQUE7U0FDbEM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFvQkQ7Ozs7O09BS0c7SUFDSCxZQUMrQyxhQUFrQixFQUNBLE1BQTZCLEVBQzNFLFVBQXNCO1FBRk0sa0JBQWEsR0FB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SSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6RDtRQUVELHNDQUFzQztRQUN0QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE9BQU8sQ0FBQyxDQUFNO1FBQ3BCLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7O21IQXpOVSxzQkFBc0Isa0JBK0NYLE1BQU0sNkJBQ04sd0JBQXdCO3VIQWhEbkMsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0RJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTTs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRGVjb2RlZEFjY2Vzc1Rva2VuIH0gZnJvbSAnLi4vLi4vcmJhYy9tb2RlbHMvZGVjb2RlZC1hY2Nlc3MtdG9rZW4nO1xyXG5pbXBvcnQgeyBIWUJSSURfU0FNTF9PQVVUSF9DT05GSUcsIGtleVBhdGhQcmVmaXggfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSVNzb1Jlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL2lTc29SZXNwb25zZU1vZGVsJztcclxuaW1wb3J0IHsgSHlicmlkU2FtbE9BdXRoQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2h5YnJpZC1zYW1sLW9hdXRoLWNvbmZpZyc7XHJcbmltcG9ydCB7IHBhc2NhbFRvQ2FtZWwgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucy9uYW1pbmctY29udmVudGlvbic7XHJcbmltcG9ydCB7IEFjY291bnRNYW5hZ2VtZW50UmVmcmVzaFJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvYWNjb3VudE1hbmFnZW1lbnRSZWZyZXNoUmVxdWVzdE1vZGVsJztcclxuaW1wb3J0IHsgUmVmcmVzaFJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3JlZnJlc2hSZXNwb25zZU1vZGVsJztcclxuXHJcbi8qKiBUaGUgaHlicmlkIFNBTUwgT2F1dGggU2VydmljZSAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIeWJyaWRTYW1sT2F1dGhTZXJ2aWNlIHtcclxuXHJcbiAgLyoqIFRoZSBrZXkgcGF0aCB1c2VkIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkga2V5UGF0aDogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIG9hdXRoIGFjY2VzcyB0b2tlbiAqL1xyXG4gIHB1YmxpYyBnZXQgYWNjZXNzVG9rZW4oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hY2Nlc3NUb2tlbjtcclxuICB9XHJcblxyXG4gIC8qKiBUaGUgYWNjZXNzIHRva2VuIG9ic2VydmFibGUgKi9cclxuICBwdWJsaWMgYWNjZXNzVG9rZW4kOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcblxyXG4gIC8qKiBHZXRzIHRoZSBoYXNoICovXHJcbiAgcHVibGljIGdldCBoYXNoKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmRhdGFGb3JtYXQgPT09ICdQYXNjYWxDYXNlJykge1xyXG4gICAgICByZXR1cm4gKHRoaXMucmF3RGF0YSBhcyBhbnkpLkhhc2hcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5yYXdEYXRhLmhhc2g7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHJhdyBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZSAqL1xyXG4gIHByaXZhdGUgcmF3RGF0YTogSVNzb1Jlc3BvbnNlTW9kZWw7XHJcblxyXG4gIC8qKiBUaGUgYWNjZXNzIHRva2VuICovXHJcbiAgcHJpdmF0ZSBfYWNjZXNzVG9rZW46IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSB3aW5kb3cgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93O1xyXG5cclxuICAvKiogVGhlIGJlaGF2aW9yIHN1YmplY3QgZm9yIHRoZSBhY2Nlc3MgdG9rZW4gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuQnM6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xyXG5cclxuICAvKiogVGhlIGFybWF0dXJlIGFjY2VzcyB0b2tlbiBrZXkgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuU2Vzc2lvblN0b3JhZ2VLZXk6IHN0cmluZyA9ICdTb2YtQXJtLUFjY2Vzcy1Ub2tlbic7XHJcblxyXG4gIC8qKiBUaGUgdG9rZW4gZW5kcG9pbnQgKi9cclxuICBwcml2YXRlIHRva2VuRW5kcG9pbnQ6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogY29uc3RydWN0cyB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSB3aW5kb3dHZW5lcmljIFRoZSB3aW5kb3cgaW50ZXJmYWNlXHJcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgc2VydmljZSBjb25maWd1cmF0aW9uc1xyXG4gICAqIEBwYXJhbSBodHRwQ2xpZW50IFRoZSBodHRwIGNsaWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHByaXZhdGUgcmVhZG9ubHkgd2luZG93R2VuZXJpYzogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChIWUJSSURfU0FNTF9PQVVUSF9DT05GSUcpIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBIeWJyaWRTYW1sT0F1dGhDb25maWcsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcclxuICApIHtcclxuICAgIC8vIHNldCB0aGUgd2luZG93IHRvIGJlIHN0cm9uZ2x5IHR5cGVkLCBjb21waWxlIGVycm9yIG1ha2VzIGl0IHNvIGl0IGNhbid0IGJlIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yXHJcbiAgICB0aGlzLndpbmRvdyA9IHRoaXMud2luZG93R2VuZXJpYyB8fCB3aW5kb3c7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0h5YnJpZFNhbWxPYXV0aFNlcnZpY2Ugc2tpcHBpbmcgaW5pdGlhbGl6YXRpb24sIHBsZWFzZSBhZGQgSFlCUklEX1NBTUxfT0FVVEhfQ09ORklHIHRvIHlvdXIgcHJvdmlkZXJzIHRvIHVzZSB0aGUgc2VydmljZScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWZyZXNoVGltZU1pbnV0ZXMgPSB0aGlzLmNvbmZpZz8udG9rZW5SZWZyZXNoVGltZU1pbnV0ZXMgfHwgMjA7IC8vIHVzZSAyMCBtaW4gdG9rZW4gcmVmcmVzaCB0aW1lIGlmIG5vbiBwcm92aWRlZFxyXG5cclxuICAgIC8vIHNldCB0aGUgdG9rZW4gZW5kcG9pbnRcclxuICAgIGlmICh0aGlzLmNvbmZpZz8udG9rZW5FbmRwb2ludCQpIHtcclxuICAgICAgdGhpcy5jb25maWcudG9rZW5FbmRwb2ludCQuc3Vic2NyaWJlKGVuZHBvaW50ID0+IHRoaXMudG9rZW5FbmRwb2ludCA9IGVuZHBvaW50KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0hZQlJJRF9TQU1MX09BVVRIX0NPTkZJRy50b2tlbkVuZHBvaW50JCBpcyBub3QgcHJvdmlkZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgdGhlIGtleSBwYXRoIGZyb20gdGhlIGtleSBwYXRoIHByZWZpeCBhbmQgc3VmZml4XHJcbiAgICB0aGlzLmtleVBhdGggPSBgJHtrZXlQYXRoUHJlZml4fSR7dGhpcy5jb25maWc/LmtleVBhdGhTdWZmaXh9YDtcclxuXHJcbiAgICAvLyByZWFkIHZhbHVlcyBmcm9tIGxvY2FsIHN0b3JhZ2UgYmFzZWQgb24gdGhlIGtleSBwYXRoXHJcbiAgICBjb25zdCByYXdEYXRhID0gdGhpcy5nZXRSYXdEYXRhKCk7XHJcbiAgICBpZiAoIXJhd0RhdGEpIHtcclxuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuYWNjZXNzVG9rZW5TZXNzaW9uU3RvcmFnZUtleSk7XHJcbiAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gdG9rZW47XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnPy5kYXRhRm9ybWF0ID09PSAnUGFzY2FsQ2FzZScpIHtcclxuICAgICAgICB0aGlzLnJhd0RhdGEgPSBKU09OLnBhcnNlKHJhd0RhdGEpO1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gKHRoaXMucmF3RGF0YSBhcyBhbnkpLkFjY2Vzc1Rva2VuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmF3RGF0YSA9IHRoaXMudG9DYW1lbChKU09OLnBhcnNlKHJhd0RhdGEpKTtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbiA9IHRoaXMucmF3RGF0YS5hY2Nlc3NUb2tlbjtcclxuICAgICAgfVxyXG4gICAgICAvLyBwb3B1bGF0ZSB0aGUgYWNjZXNzIHRva2VuXHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5hY2Nlc3NUb2tlblNlc3Npb25TdG9yYWdlS2V5LCB0aGlzLl9hY2Nlc3NUb2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHVwIHRoZSBvYnNlcnZhYmxlIGFuZCBiZWhhdmlvciBzdWJqZWN0XHJcbiAgICB0aGlzLmFjY2Vzc1Rva2VuQnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuX2FjY2Vzc1Rva2VuKTtcclxuICAgIHRoaXMuYWNjZXNzVG9rZW4kID0gdGhpcy5hY2Nlc3NUb2tlbkJzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IG5ldyBEZWNvZGVkQWNjZXNzVG9rZW4odGhpcy5hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGVNaWxpUyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGlmICgoZGVjb2RlZC5leHAgKiAxMDAwKSA8PSBjdXJyZW50RGF0ZU1pbGlTICsgKHJlZnJlc2hUaW1lTWludXRlcyAqIDYwMDAwKSkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4odGhpcy50b2tlbkVuZHBvaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdTdGFydGluZyBIeWJyaWRTYW1sT0F1dGhTZXJ2aWNlIHdpdGhvdXQgdG9rZW4nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdzdGFydGluZyBIeWJyaWRTYW1sT0F1dGhTZXJ2aWNlIHdpdGhvdXQgdG9rZW4gb3IgbWFsZm9ybWVkIHRva2VuJywgdGhpcy5hY2Nlc3NUb2tlbiwgZSk7XHJcbiAgICB9XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRva2VuKHRoaXMudG9rZW5FbmRwb2ludCk7XHJcbiAgICB9LCByZWZyZXNoVGltZU1pbnV0ZXMgKiA2MDAwMCk7IC8vIHggbWludXRlcyB0aW1lcyBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgbWludXRlXHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJucyB0aGUgcmF3IGRhdGEgY2FzdGVkIHRvIHRoZSBwcm92aWRlZCB0eXBlICovXHJcbiAgcHVibGljIGdldEFzc2VydGlvbkRhdGE8VD4oKTogVCB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YUZvcm1hdCA9PT0gJ1Bhc2NhbENhc2UnKSB7XHJcbiAgICAgIGlmICghdGhpcy5yYXdEYXRhIHx8ICEoKHRoaXMucmF3RGF0YSBhcyBhbnkpLkFzc2VydGlvbnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuICh0aGlzLnJhd0RhdGEgYXMgYW55KS5Bc3NlcnRpb25zIGFzIFQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLnJhd0RhdGEgfHwgIXRoaXMucmF3RGF0YS5hc3NlcnRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMucmF3RGF0YS5hc3NlcnRpb25zIGFzIFQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBpcmVzIHRoZSBzZXNzaW9uIGJ5IGNsZWFyaW5nIHRoZSBzZXJ2aWNlIGFuZCBsb2NhbCBzdG9yYWdlXHJcbiAgICogQHBhcmFtIHNob3VsZEV4cGlyZUJvdGggVHJ1ZSBpZiB0aGUgYm90aCBzZXNzaW9uIGFuZCBsb2NhbCBzdG9yYWdlIHNob3VsZCBiZSBleHBpcmVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4cGlyZVNlc3Npb24oc2hvdWxkRXhwaXJlQm90aDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBpZiAoc2hvdWxkRXhwaXJlQm90aCkge1xyXG4gICAgICB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleVBhdGgpO1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5UGF0aCk7XHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5hY2Nlc3NUb2tlblNlc3Npb25TdG9yYWdlS2V5KTtcclxuICAgICAgdGhpcy5yYXdEYXRhID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZz8uYnJvd3NlclN0b3JhZ2VJbXBsZW1lbnRhdGlvbiA9PT0gJ3Nlc3Npb24nKSB7XHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5rZXlQYXRoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleVBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmFjY2Vzc1Rva2VuU2Vzc2lvblN0b3JhZ2VLZXkpO1xyXG5cclxuICAgIHRoaXMucmF3RGF0YSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZnJlc2hlcyB0aGUgYWNjZXNzIHRva2VuIHVzaW5nIHRoZSBwcm92aWRlZCBlbmRwb2ludFxyXG4gICAqIEBwYXJhbSB0b2tlbkVuZHBvaW50IFRoZSBmdWxsIHRva2VuIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW4odG9rZW5FbmRwb2ludDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucmF3RGF0YSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ05vIHNzbyByZXNwb25zZSBtb2RlbCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBtYWtlIGFwaSBjYWxsIHRvIGdldCBhIHRva2VuLCB1c2VzIGFzc2VydGlvbnMsIGhhc2gsIGFuZCBhc3NlcnRpb24gcHJvdmlkZXIgaW1wbGVtZW50YXRpb24gc3RyaW5nXHJcbiAgICBjb25zdCByZXE6IEFjY291bnRNYW5hZ2VtZW50UmVmcmVzaFJlcXVlc3RNb2RlbCA9IHtcclxuICAgICAgc3NvUmVzcG9uc2VNb2RlbDogdGhpcy5yYXdEYXRhXHJcbiAgICB9O1xyXG4gICAgdGhpcy5odHRwQ2xpZW50LnBvc3Q8UmVmcmVzaFJlc3BvbnNlTW9kZWw+KHRva2VuRW5kcG9pbnQsIHJlcSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWc/LmRhdGFGb3JtYXQgPT09ICdQYXNjYWxDYXNlJykge1xyXG4gICAgICAgICAgICAodGhpcy5yYXdEYXRhIGFzIGFueSkuQWNjZXNzVG9rZW4gPSByZXMuYWNjZXNzVG9rZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yYXdEYXRhLmFjY2Vzc1Rva2VuID0gcmVzLmFjY2Vzc1Rva2VuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW4gPSByZXMuYWNjZXNzVG9rZW47XHJcbiAgICAgICAgICB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleVBhdGgsIEpTT04uc3RyaW5naWZ5KHRoaXMucmF3RGF0YSkpO1xyXG4gICAgICAgICAgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmFjY2Vzc1Rva2VuU2Vzc2lvblN0b3JhZ2VLZXksIHJlcy5hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuQnMubmV4dCh0aGlzLl9hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogZ2V0cyB0aGUgcmF3IGRhdGEgKi9cclxuICBwcml2YXRlIGdldFJhd0RhdGEoKTogYW55IHtcclxuICAgIGNvbnN0IGxzRGF0YSA9IHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5UGF0aCk7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmJyb3dzZXJTdG9yYWdlSW1wbGVtZW50YXRpb24gPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAvLyBmaXJzdCBtb3ZlIGxvY2FsIHN0b3JhZ2UgZGF0YSBpZiB0aGVyZSBpcyBhbnlcclxuICAgICAgaWYgKGxzRGF0YSkge1xyXG4gICAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlQYXRoLCBsc0RhdGEpO1xyXG4gICAgICAgIHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5UGF0aCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHJldHVybiB0aGUgc2Vzc2lvbiBzdG9yYWdlIGRhdGFcclxuICAgICAgcmV0dXJuIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlQYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBvdGhlcndpc2UgcmV0dXJuIGxvY2FsIHN0b3JhZ2UgZGF0YVxyXG4gICAgcmV0dXJuIGxzRGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNvbnZlcnRzIG9iamVjdCBrZXlzIHRvIGNhbWVsIGNhc2VcclxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMjkzMTgyOC9jb252ZXJ0LXJldHVybmVkLWpzb24tb2JqZWN0LXByb3BlcnRpZXMtdG8tbG93ZXItZmlyc3QtY2FtZWxjYXNlXHJcbiAgICogQHBhcmFtIG8gVGhlIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9DYW1lbChvOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHBhc2NhbFRvQ2FtZWwobyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { BehaviorSubject, of } from 'rxjs';
3
+ import { catchError, map } from 'rxjs/operators';
4
+ import { WINDOW } from '../../core/models/constants';
5
+ import { DecodedAccessToken } from '../../rbac/models/decoded-access-token';
6
+ import { HYBRID_SAML_OAUTH_CONFIG, keyPathPrefix } from '../models/constants';
7
+ import { pascalToCamel } from '../../core/functions/naming-convention';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common/http";
10
+ import * as i2 from "../models/hybrid-saml-oauth-config";
11
+ /** The hybrid SAML Oauth Service */
12
+ export class HybridSamlOauthService {
13
+ /** The oauth access token */
14
+ get accessToken() {
15
+ return this._accessToken;
16
+ }
17
+ /** Gets the hash */
18
+ get hash() {
19
+ if (this.config?.dataFormat === 'PascalCase') {
20
+ return this.rawData.Hash;
21
+ }
22
+ return this.rawData.hash;
23
+ }
24
+ /**
25
+ * constructs the service
26
+ * @param windowGeneric The window interface
27
+ * @param config The service configurations
28
+ * @param httpClient The http client
29
+ */
30
+ constructor(windowGeneric, config, httpClient) {
31
+ this.windowGeneric = windowGeneric;
32
+ this.config = config;
33
+ this.httpClient = httpClient;
34
+ /** The armature access token key */
35
+ this.accessTokenSessionStorageKey = 'Sof-Arm-Access-Token';
36
+ // set the window to be strongly typed, compile error makes it so it can't be done in the constructor
37
+ this.window = this.windowGeneric || window;
38
+ if (!this.config) {
39
+ console.warn('HybridSamlOauthService skipping initialization, please add HYBRID_SAML_OAUTH_CONFIG to your providers to use the service');
40
+ return;
41
+ }
42
+ const refreshTimeMinutes = this.config?.tokenRefreshTimeMinutes || 20; // use 20 min token refresh time if non provided
43
+ // set the token endpoint
44
+ if (this.config?.tokenEndpoint$) {
45
+ this.config.tokenEndpoint$.subscribe(endpoint => this.tokenEndpoint = endpoint);
46
+ }
47
+ else {
48
+ console.warn('HYBRID_SAML_OAUTH_CONFIG.tokenEndpoint$ is not provided');
49
+ }
50
+ // set the key path from the key path prefix and suffix
51
+ this.keyPath = `${keyPathPrefix}${this.config?.keyPathSuffix}`;
52
+ // read values from local storage based on the key path
53
+ const rawData = this.getRawData();
54
+ if (!rawData) {
55
+ const token = this.window.sessionStorage.getItem(this.accessTokenSessionStorageKey);
56
+ this._accessToken = token;
57
+ }
58
+ else {
59
+ if (this.config?.dataFormat === 'PascalCase') {
60
+ this.rawData = JSON.parse(rawData);
61
+ this._accessToken = this.rawData.AccessToken;
62
+ }
63
+ else {
64
+ this.rawData = this.toCamel(JSON.parse(rawData));
65
+ this._accessToken = this.rawData.accessToken;
66
+ }
67
+ // populate the access token
68
+ this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, this._accessToken);
69
+ }
70
+ // set up the observable and behavior subject
71
+ this.accessTokenBs = new BehaviorSubject(this._accessToken);
72
+ this.accessToken$ = this.accessTokenBs.asObservable();
73
+ try {
74
+ if (this.accessToken) {
75
+ const decoded = new DecodedAccessToken(this.accessToken);
76
+ const currentDateMiliS = new Date().getTime();
77
+ if ((decoded.exp * 1000) <= currentDateMiliS + (refreshTimeMinutes * 60000)) {
78
+ this.refreshToken(this.tokenEndpoint);
79
+ }
80
+ }
81
+ else {
82
+ console.warn('Starting HybridSamlOAuthService without token');
83
+ }
84
+ }
85
+ catch (e) {
86
+ console.warn('starting HybridSamlOAuthService without token or malformed token', this.accessToken, e);
87
+ }
88
+ setInterval(() => {
89
+ this.refreshToken(this.tokenEndpoint);
90
+ }, refreshTimeMinutes * 60000); // x minutes times number of milliseconds in a minute
91
+ }
92
+ /** Returns the raw data casted to the provided type */
93
+ getAssertionData() {
94
+ if (this.config.dataFormat === 'PascalCase') {
95
+ if (!this.rawData || !(this.rawData.Assertions)) {
96
+ return undefined;
97
+ }
98
+ return this.rawData.Assertions;
99
+ }
100
+ else {
101
+ if (!this.rawData || !this.rawData.assertions) {
102
+ return undefined;
103
+ }
104
+ return this.rawData.assertions;
105
+ }
106
+ }
107
+ /**
108
+ * Expires the session by clearing the service and local storage
109
+ * @param shouldExpireBoth True if the both session and local storage should be expired
110
+ */
111
+ expireSession(shouldExpireBoth = false) {
112
+ if (shouldExpireBoth) {
113
+ this.window.localStorage.removeItem(this.keyPath);
114
+ this.window.sessionStorage.removeItem(this.keyPath);
115
+ this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);
116
+ this.rawData = undefined;
117
+ return;
118
+ }
119
+ if (this.config?.browserStorageImplementation === 'session') {
120
+ this.window.sessionStorage.removeItem(this.keyPath);
121
+ }
122
+ else {
123
+ this.window.localStorage.removeItem(this.keyPath);
124
+ }
125
+ this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);
126
+ this.rawData = undefined;
127
+ }
128
+ /**
129
+ * Refreshes the access token using the provided endpoint
130
+ * @param tokenEndpoint The full token endpoint
131
+ */
132
+ refreshToken(tokenEndpoint) {
133
+ if (!this.rawData) {
134
+ console.warn('No sso response model');
135
+ return;
136
+ }
137
+ // make api call to get a token, uses assertions, hash, and assertion provider implementation string
138
+ const req = {
139
+ ssoResponseModel: this.rawData
140
+ };
141
+ this.httpClient.post(tokenEndpoint, req)
142
+ .pipe(map(res => {
143
+ if (this.config?.dataFormat === 'PascalCase') {
144
+ this.rawData.AccessToken = res.accessToken;
145
+ }
146
+ else {
147
+ this.rawData.accessToken = res.accessToken;
148
+ }
149
+ this._accessToken = res.accessToken;
150
+ this.window.localStorage.setItem(this.keyPath, JSON.stringify(this.rawData));
151
+ this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, res.accessToken);
152
+ this.accessTokenBs.next(this._accessToken);
153
+ }), catchError(error => {
154
+ console.error(error);
155
+ return of(error);
156
+ }))
157
+ .subscribe(() => { });
158
+ }
159
+ /** gets the raw data */
160
+ getRawData() {
161
+ const lsData = this.window.localStorage.getItem(this.keyPath);
162
+ if (this.config?.browserStorageImplementation === 'session') {
163
+ // first move local storage data if there is any
164
+ if (lsData) {
165
+ this.window.sessionStorage.setItem(this.keyPath, lsData);
166
+ this.window.localStorage.removeItem(this.keyPath);
167
+ }
168
+ // return the session storage data
169
+ return this.window.sessionStorage.getItem(this.keyPath);
170
+ }
171
+ // otherwise return local storage data
172
+ return lsData;
173
+ }
174
+ /**
175
+ * converts object keys to camel case
176
+ * https://stackoverflow.com/questions/12931828/convert-returned-json-object-properties-to-lower-first-camelcase
177
+ * @param o The object
178
+ */
179
+ toCamel(o) {
180
+ return pascalToCamel(o);
181
+ }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HybridSamlOauthService, deps: [{ token: WINDOW, optional: true }, { token: HYBRID_SAML_OAUTH_CONFIG, optional: true }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
183
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HybridSamlOauthService, providedIn: 'root' }); }
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HybridSamlOauthService, decorators: [{
186
+ type: Injectable,
187
+ args: [{
188
+ providedIn: 'root'
189
+ }]
190
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
191
+ type: Optional
192
+ }, {
193
+ type: Inject,
194
+ args: [WINDOW]
195
+ }] }, { type: i2.HybridSamlOAuthConfig, decorators: [{
196
+ type: Optional
197
+ }, {
198
+ type: Inject,
199
+ args: [HYBRID_SAML_OAUTH_CONFIG]
200
+ }] }, { type: i1.HttpClient }] });
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlicmlkLXNhbWwtb2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvb2F1dGgvc2VydmljZXMvaHlicmlkLXNhbWwtb2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUl2RSxvQ0FBb0M7QUFJcEMsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyw2QkFBNkI7SUFDN0IsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS0Qsb0JBQW9CO0lBQ3BCLElBQVcsSUFBSTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUssWUFBWSxFQUFFO1lBQzVDLE9BQVEsSUFBSSxDQUFDLE9BQWUsQ0FBQyxJQUFJLENBQUE7U0FDbEM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFvQkQ7Ozs7O09BS0c7SUFDSCxZQUMrQyxhQUFrQixFQUNBLE1BQTZCLEVBQzNFLFVBQXNCO1FBRk0sa0JBQWEsR0FB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SSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6RDtRQUVELHNDQUFzQztRQUN0QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE9BQU8sQ0FBQyxDQUFNO1FBQ3BCLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBek5VLHNCQUFzQixrQkErQ1gsTUFBTSw2QkFDTix3QkFBd0I7a0hBaERuQyxzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0RJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTTs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRGVjb2RlZEFjY2Vzc1Rva2VuIH0gZnJvbSAnLi4vLi4vcmJhYy9tb2RlbHMvZGVjb2RlZC1hY2Nlc3MtdG9rZW4nO1xyXG5pbXBvcnQgeyBIWUJSSURfU0FNTF9PQVVUSF9DT05GSUcsIGtleVBhdGhQcmVmaXggfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSVNzb1Jlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL2lTc29SZXNwb25zZU1vZGVsJztcclxuaW1wb3J0IHsgSHlicmlkU2FtbE9BdXRoQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2h5YnJpZC1zYW1sLW9hdXRoLWNvbmZpZyc7XHJcbmltcG9ydCB7IHBhc2NhbFRvQ2FtZWwgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucy9uYW1pbmctY29udmVudGlvbic7XHJcbmltcG9ydCB7IEFjY291bnRNYW5hZ2VtZW50UmVmcmVzaFJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvYWNjb3VudE1hbmFnZW1lbnRSZWZyZXNoUmVxdWVzdE1vZGVsJztcclxuaW1wb3J0IHsgUmVmcmVzaFJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3JlZnJlc2hSZXNwb25zZU1vZGVsJztcclxuXHJcbi8qKiBUaGUgaHlicmlkIFNBTUwgT2F1dGggU2VydmljZSAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIeWJyaWRTYW1sT2F1dGhTZXJ2aWNlIHtcclxuXHJcbiAgLyoqIFRoZSBrZXkgcGF0aCB1c2VkIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkga2V5UGF0aDogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIG9hdXRoIGFjY2VzcyB0b2tlbiAqL1xyXG4gIHB1YmxpYyBnZXQgYWNjZXNzVG9rZW4oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hY2Nlc3NUb2tlbjtcclxuICB9XHJcblxyXG4gIC8qKiBUaGUgYWNjZXNzIHRva2VuIG9ic2VydmFibGUgKi9cclxuICBwdWJsaWMgYWNjZXNzVG9rZW4kOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcblxyXG4gIC8qKiBHZXRzIHRoZSBoYXNoICovXHJcbiAgcHVibGljIGdldCBoYXNoKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmRhdGFGb3JtYXQgPT09ICdQYXNjYWxDYXNlJykge1xyXG4gICAgICByZXR1cm4gKHRoaXMucmF3RGF0YSBhcyBhbnkpLkhhc2hcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5yYXdEYXRhLmhhc2g7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHJhdyBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZSAqL1xyXG4gIHByaXZhdGUgcmF3RGF0YTogSVNzb1Jlc3BvbnNlTW9kZWw7XHJcblxyXG4gIC8qKiBUaGUgYWNjZXNzIHRva2VuICovXHJcbiAgcHJpdmF0ZSBfYWNjZXNzVG9rZW46IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSB3aW5kb3cgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93O1xyXG5cclxuICAvKiogVGhlIGJlaGF2aW9yIHN1YmplY3QgZm9yIHRoZSBhY2Nlc3MgdG9rZW4gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuQnM6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xyXG5cclxuICAvKiogVGhlIGFybWF0dXJlIGFjY2VzcyB0b2tlbiBrZXkgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuU2Vzc2lvblN0b3JhZ2VLZXk6IHN0cmluZyA9ICdTb2YtQXJtLUFjY2Vzcy1Ub2tlbic7XHJcblxyXG4gIC8qKiBUaGUgdG9rZW4gZW5kcG9pbnQgKi9cclxuICBwcml2YXRlIHRva2VuRW5kcG9pbnQ6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogY29uc3RydWN0cyB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSB3aW5kb3dHZW5lcmljIFRoZSB3aW5kb3cgaW50ZXJmYWNlXHJcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgc2VydmljZSBjb25maWd1cmF0aW9uc1xyXG4gICAqIEBwYXJhbSBodHRwQ2xpZW50IFRoZSBodHRwIGNsaWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHByaXZhdGUgcmVhZG9ubHkgd2luZG93R2VuZXJpYzogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChIWUJSSURfU0FNTF9PQVVUSF9DT05GSUcpIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBIeWJyaWRTYW1sT0F1dGhDb25maWcsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcclxuICApIHtcclxuICAgIC8vIHNldCB0aGUgd2luZG93IHRvIGJlIHN0cm9uZ2x5IHR5cGVkLCBjb21waWxlIGVycm9yIG1ha2VzIGl0IHNvIGl0IGNhbid0IGJlIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yXHJcbiAgICB0aGlzLndpbmRvdyA9IHRoaXMud2luZG93R2VuZXJpYyB8fCB3aW5kb3c7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0h5YnJpZFNhbWxPYXV0aFNlcnZpY2Ugc2tpcHBpbmcgaW5pdGlhbGl6YXRpb24sIHBsZWFzZSBhZGQgSFlCUklEX1NBTUxfT0FVVEhfQ09ORklHIHRvIHlvdXIgcHJvdmlkZXJzIHRvIHVzZSB0aGUgc2VydmljZScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWZyZXNoVGltZU1pbnV0ZXMgPSB0aGlzLmNvbmZpZz8udG9rZW5SZWZyZXNoVGltZU1pbnV0ZXMgfHwgMjA7IC8vIHVzZSAyMCBtaW4gdG9rZW4gcmVmcmVzaCB0aW1lIGlmIG5vbiBwcm92aWRlZFxyXG5cclxuICAgIC8vIHNldCB0aGUgdG9rZW4gZW5kcG9pbnRcclxuICAgIGlmICh0aGlzLmNvbmZpZz8udG9rZW5FbmRwb2ludCQpIHtcclxuICAgICAgdGhpcy5jb25maWcudG9rZW5FbmRwb2ludCQuc3Vic2NyaWJlKGVuZHBvaW50ID0+IHRoaXMudG9rZW5FbmRwb2ludCA9IGVuZHBvaW50KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0hZQlJJRF9TQU1MX09BVVRIX0NPTkZJRy50b2tlbkVuZHBvaW50JCBpcyBub3QgcHJvdmlkZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgdGhlIGtleSBwYXRoIGZyb20gdGhlIGtleSBwYXRoIHByZWZpeCBhbmQgc3VmZml4XHJcbiAgICB0aGlzLmtleVBhdGggPSBgJHtrZXlQYXRoUHJlZml4fSR7dGhpcy5jb25maWc/LmtleVBhdGhTdWZmaXh9YDtcclxuXHJcbiAgICAvLyByZWFkIHZhbHVlcyBmcm9tIGxvY2FsIHN0b3JhZ2UgYmFzZWQgb24gdGhlIGtleSBwYXRoXHJcbiAgICBjb25zdCByYXdEYXRhID0gdGhpcy5nZXRSYXdEYXRhKCk7XHJcbiAgICBpZiAoIXJhd0RhdGEpIHtcclxuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuYWNjZXNzVG9rZW5TZXNzaW9uU3RvcmFnZUtleSk7XHJcbiAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gdG9rZW47XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnPy5kYXRhRm9ybWF0ID09PSAnUGFzY2FsQ2FzZScpIHtcclxuICAgICAgICB0aGlzLnJhd0RhdGEgPSBKU09OLnBhcnNlKHJhd0RhdGEpO1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gKHRoaXMucmF3RGF0YSBhcyBhbnkpLkFjY2Vzc1Rva2VuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmF3RGF0YSA9IHRoaXMudG9DYW1lbChKU09OLnBhcnNlKHJhd0RhdGEpKTtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbiA9IHRoaXMucmF3RGF0YS5hY2Nlc3NUb2tlbjtcclxuICAgICAgfVxyXG4gICAgICAvLyBwb3B1bGF0ZSB0aGUgYWNjZXNzIHRva2VuXHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5hY2Nlc3NUb2tlblNlc3Npb25TdG9yYWdlS2V5LCB0aGlzLl9hY2Nlc3NUb2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHVwIHRoZSBvYnNlcnZhYmxlIGFuZCBiZWhhdmlvciBzdWJqZWN0XHJcbiAgICB0aGlzLmFjY2Vzc1Rva2VuQnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuX2FjY2Vzc1Rva2VuKTtcclxuICAgIHRoaXMuYWNjZXNzVG9rZW4kID0gdGhpcy5hY2Nlc3NUb2tlbkJzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IG5ldyBEZWNvZGVkQWNjZXNzVG9rZW4odGhpcy5hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGVNaWxpUyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGlmICgoZGVjb2RlZC5leHAgKiAxMDAwKSA8PSBjdXJyZW50RGF0ZU1pbGlTICsgKHJlZnJlc2hUaW1lTWludXRlcyAqIDYwMDAwKSkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4odGhpcy50b2tlbkVuZHBvaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdTdGFydGluZyBIeWJyaWRTYW1sT0F1dGhTZXJ2aWNlIHdpdGhvdXQgdG9rZW4nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdzdGFydGluZyBIeWJyaWRTYW1sT0F1dGhTZXJ2aWNlIHdpdGhvdXQgdG9rZW4gb3IgbWFsZm9ybWVkIHRva2VuJywgdGhpcy5hY2Nlc3NUb2tlbiwgZSk7XHJcbiAgICB9XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRva2VuKHRoaXMudG9rZW5FbmRwb2ludCk7XHJcbiAgICB9LCByZWZyZXNoVGltZU1pbnV0ZXMgKiA2MDAwMCk7IC8vIHggbWludXRlcyB0aW1lcyBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgbWludXRlXHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJucyB0aGUgcmF3IGRhdGEgY2FzdGVkIHRvIHRoZSBwcm92aWRlZCB0eXBlICovXHJcbiAgcHVibGljIGdldEFzc2VydGlvbkRhdGE8VD4oKTogVCB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YUZvcm1hdCA9PT0gJ1Bhc2NhbENhc2UnKSB7XHJcbiAgICAgIGlmICghdGhpcy5yYXdEYXRhIHx8ICEoKHRoaXMucmF3RGF0YSBhcyBhbnkpLkFzc2VydGlvbnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuICh0aGlzLnJhd0RhdGEgYXMgYW55KS5Bc3NlcnRpb25zIGFzIFQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLnJhd0RhdGEgfHwgIXRoaXMucmF3RGF0YS5hc3NlcnRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMucmF3RGF0YS5hc3NlcnRpb25zIGFzIFQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBpcmVzIHRoZSBzZXNzaW9uIGJ5IGNsZWFyaW5nIHRoZSBzZXJ2aWNlIGFuZCBsb2NhbCBzdG9yYWdlXHJcbiAgICogQHBhcmFtIHNob3VsZEV4cGlyZUJvdGggVHJ1ZSBpZiB0aGUgYm90aCBzZXNzaW9uIGFuZCBsb2NhbCBzdG9yYWdlIHNob3VsZCBiZSBleHBpcmVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4cGlyZVNlc3Npb24oc2hvdWxkRXhwaXJlQm90aDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBpZiAoc2hvdWxkRXhwaXJlQm90aCkge1xyXG4gICAgICB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleVBhdGgpO1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5UGF0aCk7XHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5hY2Nlc3NUb2tlblNlc3Npb25TdG9yYWdlS2V5KTtcclxuICAgICAgdGhpcy5yYXdEYXRhID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZz8uYnJvd3NlclN0b3JhZ2VJbXBsZW1lbnRhdGlvbiA9PT0gJ3Nlc3Npb24nKSB7XHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5rZXlQYXRoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleVBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmFjY2Vzc1Rva2VuU2Vzc2lvblN0b3JhZ2VLZXkpO1xyXG5cclxuICAgIHRoaXMucmF3RGF0YSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZnJlc2hlcyB0aGUgYWNjZXNzIHRva2VuIHVzaW5nIHRoZSBwcm92aWRlZCBlbmRwb2ludFxyXG4gICAqIEBwYXJhbSB0b2tlbkVuZHBvaW50IFRoZSBmdWxsIHRva2VuIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW4odG9rZW5FbmRwb2ludDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucmF3RGF0YSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ05vIHNzbyByZXNwb25zZSBtb2RlbCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBtYWtlIGFwaSBjYWxsIHRvIGdldCBhIHRva2VuLCB1c2VzIGFzc2VydGlvbnMsIGhhc2gsIGFuZCBhc3NlcnRpb24gcHJvdmlkZXIgaW1wbGVtZW50YXRpb24gc3RyaW5nXHJcbiAgICBjb25zdCByZXE6IEFjY291bnRNYW5hZ2VtZW50UmVmcmVzaFJlcXVlc3RNb2RlbCA9IHtcclxuICAgICAgc3NvUmVzcG9uc2VNb2RlbDogdGhpcy5yYXdEYXRhXHJcbiAgICB9O1xyXG4gICAgdGhpcy5odHRwQ2xpZW50LnBvc3Q8UmVmcmVzaFJlc3BvbnNlTW9kZWw+KHRva2VuRW5kcG9pbnQsIHJlcSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWc/LmRhdGFGb3JtYXQgPT09ICdQYXNjYWxDYXNlJykge1xyXG4gICAgICAgICAgICAodGhpcy5yYXdEYXRhIGFzIGFueSkuQWNjZXNzVG9rZW4gPSByZXMuYWNjZXNzVG9rZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yYXdEYXRhLmFjY2Vzc1Rva2VuID0gcmVzLmFjY2Vzc1Rva2VuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW4gPSByZXMuYWNjZXNzVG9rZW47XHJcbiAgICAgICAgICB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleVBhdGgsIEpTT04uc3RyaW5naWZ5KHRoaXMucmF3RGF0YSkpO1xyXG4gICAgICAgICAgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmFjY2Vzc1Rva2VuU2Vzc2lvblN0b3JhZ2VLZXksIHJlcy5hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuQnMubmV4dCh0aGlzLl9hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogZ2V0cyB0aGUgcmF3IGRhdGEgKi9cclxuICBwcml2YXRlIGdldFJhd0RhdGEoKTogYW55IHtcclxuICAgIGNvbnN0IGxzRGF0YSA9IHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5UGF0aCk7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmJyb3dzZXJTdG9yYWdlSW1wbGVtZW50YXRpb24gPT09ICdzZXNzaW9uJykge1xyXG4gICAgICAvLyBmaXJzdCBtb3ZlIGxvY2FsIHN0b3JhZ2UgZGF0YSBpZiB0aGVyZSBpcyBhbnlcclxuICAgICAgaWYgKGxzRGF0YSkge1xyXG4gICAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlQYXRoLCBsc0RhdGEpO1xyXG4gICAgICAgIHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMua2V5UGF0aCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHJldHVybiB0aGUgc2Vzc2lvbiBzdG9yYWdlIGRhdGFcclxuICAgICAgcmV0dXJuIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlQYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBvdGhlcndpc2UgcmV0dXJuIGxvY2FsIHN0b3JhZ2UgZGF0YVxyXG4gICAgcmV0dXJuIGxzRGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNvbnZlcnRzIG9iamVjdCBrZXlzIHRvIGNhbWVsIGNhc2VcclxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMjkzMTgyOC9jb252ZXJ0LXJldHVybmVkLWpzb24tb2JqZWN0LXByb3BlcnRpZXMtdG8tbG93ZXItZmlyc3QtY2FtZWxjYXNlXHJcbiAgICogQHBhcmFtIG8gVGhlIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9DYW1lbChvOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHBhc2NhbFRvQ2FtZWwobyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,50 +1,50 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../services/oauth2-role.service";
5
- export class RbacActionDirective {
6
- /**
7
- * Constructs the component
8
- * @param templateRef The template reference
9
- * @param viewContainer The view container reference
10
- * @param oAuth2RoleService The oauth 2 role service
11
- */
12
- constructor(templateRef, viewContainer, oAuth2RoleService) {
13
- this.templateRef = templateRef;
14
- this.viewContainer = viewContainer;
15
- this.oAuth2RoleService = oAuth2RoleService;
16
- /** The directive subscription */
17
- this.directiveSub = new Subscription();
18
- }
19
- /** Life cycle hook for directive initialization */
20
- ngOnInit() {
21
- this.directiveSub.add(this.oAuth2RoleService.hasActionAccess(this.sofArRbacAction)
22
- .subscribe(hasAccess => {
23
- if (hasAccess) {
24
- if (!this.isContentRendered) {
25
- this.viewContainer.createEmbeddedView(this.templateRef);
26
- }
27
- this.isContentRendered = true;
28
- }
29
- else {
30
- this.viewContainer.clear();
31
- this.isContentRendered = false;
32
- }
33
- }));
34
- }
35
- /** Life cycle hook for directive destruction */
36
- ngOnDestroy() {
37
- this.directiveSub.unsubscribe();
38
- }
39
- }
40
- RbacActionDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: RbacActionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.Oauth2RoleService }], target: i0.ɵɵFactoryTarget.Directive });
41
- RbacActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: RbacActionDirective, selector: "[sofArRbacAction]", inputs: { sofArRbacAction: "sofArRbacAction" }, ngImport: i0 });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: RbacActionDirective, decorators: [{
43
- type: Directive,
44
- args: [{
45
- selector: '[sofArRbacAction]'
46
- }]
47
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.Oauth2RoleService }]; }, propDecorators: { sofArRbacAction: [{
48
- type: Input
49
- }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmJhYy1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9yYmFjL2RpcmVjdGl2ZXMvcmJhYy1hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS3BDLE1BQU0sT0FBTyxtQkFBbUI7SUFXOUI7Ozs7O09BS0c7SUFDSCxZQUNtQixXQUE2QixFQUM3QixhQUErQixFQUMvQixpQkFBb0M7UUFGcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZnZELGlDQUFpQztRQUNoQixpQkFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBZTdELENBQUM7SUFFTCxtREFBbUQ7SUFDNUMsUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUMvRSxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3pEO2dCQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDL0I7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsZ0RBQWdEO0lBQ3pDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOztnSEEzQ1UsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5QjtpS0FJaUIsZUFBZTtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYXV0aDJSb2xlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29hdXRoMi1yb2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NvZkFyUmJhY0FjdGlvbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYmFjQWN0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogVGhlIGFjdGlvbiBvZiB0aGUgZGlyZWN0aXZlICovXHJcbiAgQElucHV0KCkgcHVibGljIHNvZkFyUmJhY0FjdGlvbjogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIGRpcmVjdGl2ZSBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdGl2ZVN1YjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVHJ1ZSBpZiBjb250ZW50IGlzIHJlbmRlcmVkICovXHJcbiAgcHJpdmF0ZSBpc0NvbnRlbnRSZW5kZXJlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIHRlbXBsYXRlUmVmIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2VcclxuICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lciBUaGUgdmlldyBjb250YWluZXIgcmVmZXJlbmNlXHJcbiAgICogQHBhcmFtIG9BdXRoMlJvbGVTZXJ2aWNlIFRoZSBvYXV0aCAyIHJvbGUgc2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb0F1dGgyUm9sZVNlcnZpY2U6IE9hdXRoMlJvbGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgZGlyZWN0aXZlIGluaXRpYWxpemF0aW9uICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXJlY3RpdmVTdWIuYWRkKHRoaXMub0F1dGgyUm9sZVNlcnZpY2UuaGFzQWN0aW9uQWNjZXNzKHRoaXMuc29mQXJSYmFjQWN0aW9uKVxyXG4gICAgICAuc3Vic2NyaWJlKGhhc0FjY2VzcyA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0FjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzQ29udGVudFJlbmRlcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmlzQ29udGVudFJlbmRlcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICAgIHRoaXMuaXNDb250ZW50UmVuZGVyZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKiBMaWZlIGN5Y2xlIGhvb2sgZm9yIGRpcmVjdGl2ZSBkZXN0cnVjdGlvbiAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlyZWN0aXZlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
1
+ import { Directive, Input } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/oauth2-role.service";
5
+ export class RbacActionDirective {
6
+ /**
7
+ * Constructs the component
8
+ * @param templateRef The template reference
9
+ * @param viewContainer The view container reference
10
+ * @param oAuth2RoleService The oauth 2 role service
11
+ */
12
+ constructor(templateRef, viewContainer, oAuth2RoleService) {
13
+ this.templateRef = templateRef;
14
+ this.viewContainer = viewContainer;
15
+ this.oAuth2RoleService = oAuth2RoleService;
16
+ /** The directive subscription */
17
+ this.directiveSub = new Subscription();
18
+ }
19
+ /** Life cycle hook for directive initialization */
20
+ ngOnInit() {
21
+ this.directiveSub.add(this.oAuth2RoleService.hasActionAccess(this.sofArRbacAction)
22
+ .subscribe(hasAccess => {
23
+ if (hasAccess) {
24
+ if (!this.isContentRendered) {
25
+ this.viewContainer.createEmbeddedView(this.templateRef);
26
+ }
27
+ this.isContentRendered = true;
28
+ }
29
+ else {
30
+ this.viewContainer.clear();
31
+ this.isContentRendered = false;
32
+ }
33
+ }));
34
+ }
35
+ /** Life cycle hook for directive destruction */
36
+ ngOnDestroy() {
37
+ this.directiveSub.unsubscribe();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RbacActionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.Oauth2RoleService }], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: RbacActionDirective, selector: "[sofArRbacAction]", inputs: { sofArRbacAction: "sofArRbacAction" }, ngImport: i0 }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RbacActionDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: '[sofArRbacAction]'
46
+ }]
47
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.Oauth2RoleService }], propDecorators: { sofArRbacAction: [{
48
+ type: Input
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmJhYy1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9yYmFjL2RpcmVjdGl2ZXMvcmJhYy1hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS3BDLE1BQU0sT0FBTyxtQkFBbUI7SUFXOUI7Ozs7O09BS0c7SUFDSCxZQUNtQixXQUE2QixFQUM3QixhQUErQixFQUMvQixpQkFBb0M7UUFGcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZnZELGlDQUFpQztRQUNoQixpQkFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBZTdELENBQUM7SUFFTCxtREFBbUQ7SUFDNUMsUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUMvRSxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3pEO2dCQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDL0I7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsZ0RBQWdEO0lBQ3pDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzhHQTNDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5QjsrSUFJaUIsZUFBZTtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYXV0aDJSb2xlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29hdXRoMi1yb2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NvZkFyUmJhY0FjdGlvbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYmFjQWN0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogVGhlIGFjdGlvbiBvZiB0aGUgZGlyZWN0aXZlICovXHJcbiAgQElucHV0KCkgcHVibGljIHNvZkFyUmJhY0FjdGlvbjogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIGRpcmVjdGl2ZSBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdGl2ZVN1YjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVHJ1ZSBpZiBjb250ZW50IGlzIHJlbmRlcmVkICovXHJcbiAgcHJpdmF0ZSBpc0NvbnRlbnRSZW5kZXJlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIHRlbXBsYXRlUmVmIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2VcclxuICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lciBUaGUgdmlldyBjb250YWluZXIgcmVmZXJlbmNlXHJcbiAgICogQHBhcmFtIG9BdXRoMlJvbGVTZXJ2aWNlIFRoZSBvYXV0aCAyIHJvbGUgc2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb0F1dGgyUm9sZVNlcnZpY2U6IE9hdXRoMlJvbGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgZGlyZWN0aXZlIGluaXRpYWxpemF0aW9uICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXJlY3RpdmVTdWIuYWRkKHRoaXMub0F1dGgyUm9sZVNlcnZpY2UuaGFzQWN0aW9uQWNjZXNzKHRoaXMuc29mQXJSYmFjQWN0aW9uKVxyXG4gICAgICAuc3Vic2NyaWJlKGhhc0FjY2VzcyA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0FjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzQ29udGVudFJlbmRlcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmlzQ29udGVudFJlbmRlcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICAgIHRoaXMuaXNDb250ZW50UmVuZGVyZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKiBMaWZlIGN5Y2xlIGhvb2sgZm9yIGRpcmVjdGl2ZSBkZXN0cnVjdGlvbiAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlyZWN0aXZlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=