@softheon/armature 15.21.2 → 17.1.0
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.
- package/README.md +142 -18
- package/assets/styles/_utility.scss +35 -0
- package/assets/styles/material-overrides.scss +0 -1
- package/assets/styles/sof-styles.scss +8 -7
- package/{esm2020 → esm2022}/lib/alert-banner/alert-banner-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/alert-banner/alert-banner.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +83 -83
- package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-context.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert-banner/models/constants.mjs +15 -15
- package/{esm2020 → esm2022}/lib/alert-banner/services/alert-banner.service.mjs +44 -44
- package/esm2022/lib/armature.module.mjs +176 -0
- package/{esm2020 → esm2022}/lib/base-components/base-component-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/base-components/base-component.module.mjs +123 -123
- package/{esm2020 → esm2022}/lib/base-components/sof-alert/sof-alert.component.mjs +79 -79
- package/{esm2020 → esm2022}/lib/base-components/sof-badge/sof-badge.component.mjs +49 -49
- package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +49 -0
- package/{esm2020 → esm2022}/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +188 -188
- package/{esm2020 → esm2022}/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +59 -59
- package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +58 -0
- package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +57 -0
- package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +79 -0
- package/{esm2020 → esm2022}/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +35 -35
- package/{esm2020 → esm2022}/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +49 -49
- package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +91 -91
- package/{esm2020 → esm2022}/lib/component-save-print/services/component-save-print.service.mjs +30 -30
- package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +29 -0
- package/{esm2020 → esm2022}/lib/core/client-generated/api/session.service.mjs +242 -242
- package/{esm2020 → esm2022}/lib/core/client-generated/configuration.mjs +58 -58
- package/{esm2020 → esm2022}/lib/core/client-generated/encoder.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/client-generated/model/applicationUserModel.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/client-generated/model/assertedUserModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/brandingModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/errorModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/folderLink.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/identityProfile.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/models.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/client-generated/model/oAuthModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/preferencesRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/rolesRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionGetResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/settingsProfile.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteColorsModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/trackingModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/validationRecordsRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/variables.mjs +8 -8
- package/{esm2020 → esm2022}/lib/core/components/app-template/app-template.component.mjs +250 -250
- package/{esm2020 → esm2022}/lib/core/functions/guid.mjs +10 -10
- package/{esm2020 → esm2022}/lib/core/functions/naming-convention.mjs +32 -32
- package/{esm2020 → esm2022}/lib/core/functions/route-to-pre-login-route.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/initializer/abstract-startup-service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/initializer/initializer.service.mjs +286 -286
- package/{esm2020 → esm2022}/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +73 -73
- package/{esm2020 → esm2022}/lib/core/models/base-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/constants.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/models/data-store-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/header-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/http-verbs.mjs +8 -8
- package/{esm2020 → esm2022}/lib/core/models/navigation-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/oidc-auth-settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/route-path.mjs +6 -6
- package/{esm2020 → esm2022}/lib/core/models/session-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/styles.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/subdomain-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/typed-session.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/user-entity-service-config.mjs +11 -11
- package/{esm2020 → esm2022}/lib/core/services/authorization.service.mjs +175 -175
- package/{esm2020 → esm2022}/lib/core/services/banner.service.mjs +43 -43
- package/{esm2020 → esm2022}/lib/core/services/base-config.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/core/services/custom-auth-config.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/services/default-config.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/services/session.service.mjs +385 -385
- package/{esm2020 → esm2022}/lib/core/services/user-entity.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/api.mjs +3 -3
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/cache.service.mjs +213 -213
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/configuration.mjs +58 -58
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/encoder.mjs +16 -16
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +15 -15
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/models.mjs +4 -4
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/variables.mjs +8 -8
- package/{esm2020 → esm2022}/lib/distributed-cache/distributed-cache-api.mjs +7 -7
- package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +38 -0
- package/{esm2020 → esm2022}/lib/distributed-cache/models/constants.mjs +2 -2
- package/{esm2020 → esm2022}/lib/distributed-cache/models/policy-person.mjs +8 -8
- package/{esm2020 → esm2022}/lib/distributed-cache/services/server-cache.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/error/components/error-common/error-common.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/error/error-api.mjs +6 -6
- package/{esm2020 → esm2022}/lib/error/error.module.mjs +31 -31
- package/{esm2020 → esm2022}/lib/error/models/error-common-config.mjs +7 -7
- package/esm2022/lib/faq/components/faq/faq.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/faq/faq-api.mjs +7 -7
- package/{esm2020 → esm2022}/lib/faq/faq.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/faq/models/faq-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/faq/models/faq.mjs +7 -7
- package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +81 -0
- package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +5 -0
- package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +44 -0
- package/esm2022/lib/footer/components/footer/footer.component.mjs +25 -0
- package/{esm2020 → esm2022}/lib/footer/components/site-map/site-map.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/footer/footer-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/footer/footer.module.mjs +45 -45
- package/{esm2020 → esm2022}/lib/footer/models/enum/site-map-direction.mjs +14 -14
- package/{esm2020 → esm2022}/lib/footer/models/footer-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/footer/models/site-map-models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/forms/components/sof-address/sof-address.component.mjs +110 -110
- package/{esm2020 → esm2022}/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +78 -78
- package/{esm2020 → esm2022}/lib/forms/directives/input-trim/input-trim.directive.mjs +110 -110
- package/{esm2020 → esm2022}/lib/forms/directives/letters-characters/letters-characters.directive.mjs +87 -87
- package/{esm2020 → esm2022}/lib/forms/directives/letters-only/letters-only.directive.mjs +85 -85
- package/{esm2020 → esm2022}/lib/forms/directives/numbers-only/numbers-only.directive.mjs +55 -55
- package/{esm2020 → esm2022}/lib/forms/forms-api.mjs +19 -19
- package/{esm2020 → esm2022}/lib/forms/forms.module.mjs +87 -87
- package/{esm2020 → esm2022}/lib/forms/models/address.mjs +1 -1
- package/esm2022/lib/forms/models/constants.mjs +10 -0
- package/{esm2020 → esm2022}/lib/forms/models/county.mjs +1 -1
- package/{esm2020 → esm2022}/lib/forms/models/enums/states.mjs +65 -65
- package/{esm2020 → esm2022}/lib/forms/pipes/phone-format.pipe.mjs +33 -33
- package/{esm2020 → esm2022}/lib/forms/services/alert.service.mjs +167 -167
- package/esm2022/lib/header/components/header/header.component.mjs +161 -0
- package/{esm2020 → esm2022}/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +39 -39
- package/{esm2020 → esm2022}/lib/header/header-api.mjs +11 -11
- package/{esm2020 → esm2022}/lib/header/header.module.mjs +85 -85
- package/{esm2020 → esm2022}/lib/header/models/header-auth.settings.mjs +31 -31
- package/{esm2020 → esm2022}/lib/header/models/header-language.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/header-theme.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/header.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/mobile-header-nav.settings.mjs +1 -1
- package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +556 -0
- package/{esm2020 → esm2022}/lib/navigation/models/nav-theme.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/models/nav.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/models/navigation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/navigation-api.mjs +8 -8
- package/{esm2020 → esm2022}/lib/navigation/navigation.module.mjs +126 -126
- package/{esm2020 → esm2022}/lib/oauth/models/constants.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementAssertionModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/coverageDetail.mjs +18 -18
- package/{esm2020 → esm2022}/lib/oauth/models/generated/finance.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/person.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/policy.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/refreshResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/hybrid-saml-oauth-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/oauth/oauth-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/oauth/oauth.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/oauth/services/hybrid-saml-oauth.service.mjs +201 -201
- package/{esm2020 → esm2022}/lib/rbac/directives/rbac-action.directive.mjs +50 -50
- package/{esm2020 → esm2022}/lib/rbac/models/access-token-claims.mjs +22 -22
- package/{esm2020 → esm2022}/lib/rbac/models/constants.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/models/decoded-access-token.mjs +68 -68
- package/{esm2020 → esm2022}/lib/rbac/models/rbac-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/models/role-access.mjs +9 -9
- package/{esm2020 → esm2022}/lib/rbac/rbac-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/rbac/rbac.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/rbac/services/ar-role-nav.service.mjs +104 -104
- package/{esm2020 → esm2022}/lib/rbac/services/oauth2-role.service.mjs +114 -114
- package/{esm2020 → esm2022}/lib/rbac/services/role-nav.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/services/tokens.mjs +3 -3
- package/{esm2020 → esm2022}/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +156 -156
- package/{esm2020 → esm2022}/lib/resize-panels/models/resize-event.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resize-panels/resize-panels-api.mjs +4 -4
- package/{esm2020 → esm2022}/lib/resize-panels/resize-panels.module.mjs +23 -23
- package/{esm2020 → esm2022}/lib/rum/models/arm-error.mjs +28 -28
- package/{esm2020 → esm2022}/lib/rum/models/rum-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rum/rum-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/rum/rum.module.mjs +48 -48
- package/{esm2020 → esm2022}/lib/rum/services/rum.service.mjs +115 -115
- package/{esm2020 → esm2022}/lib/rum/services/shared-error.service.mjs +45 -45
- package/{esm2020 → esm2022}/lib/rum/services/softheon-error-handler.service.mjs +76 -76
- package/{esm2020 → esm2022}/lib/saml/components/redirect-saml/redirect-saml.component.mjs +79 -79
- package/{esm2020 → esm2022}/lib/saml/models/i-saml-request.mjs +1 -1
- package/{esm2020 → esm2022}/lib/saml/models/i-saml-response.mjs +1 -1
- package/{esm2020 → esm2022}/lib/saml/models/redirect-saml-request.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/models/sso-gateway-model.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/saml-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/saml/saml.module.mjs +43 -43
- package/{esm2020 → esm2022}/lib/saml/services/entry/abstract-saml-entry.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/services/entry/sso-gateway-entry.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/saml/services/send-off/abstract-saml.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/services/send-off/saml.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/sof-pipe/constants/constants.mjs +16 -16
- package/{esm2020 → esm2022}/lib/sof-pipe/models/sof-date-pipe-format.mjs +1 -1
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +39 -39
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +59 -59
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.api.mjs +8 -8
- package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.module.mjs +39 -39
- package/{esm2020 → esm2022}/lib/theming/directives/css-override.directive.mjs +69 -69
- package/{esm2020 → esm2022}/lib/theming/models/css-override.mjs +10 -10
- package/{esm2020 → esm2022}/lib/theming/services/theme.service.mjs +169 -169
- package/{esm2020 → esm2022}/lib/theming/theme-api.mjs +5 -5
- package/{esm2020 → esm2022}/lib/theming/theme.module.mjs +31 -31
- package/{esm2020 → esm2022}/public-api.mjs +52 -51
- package/{esm2020 → esm2022}/softheon-armature.mjs +4 -4
- package/fesm2022/softheon-armature.mjs +7439 -0
- package/fesm2022/softheon-armature.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/alert-banner/alert-banner-api.d.ts +7 -7
- package/lib/alert-banner/alert-banner.module.d.ts +11 -11
- package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +40 -40
- package/lib/alert-banner/models/alert-banner-config.d.ts +20 -20
- package/lib/alert-banner/models/alert-banner-context.d.ts +18 -18
- package/lib/alert-banner/models/constants.d.ts +15 -15
- package/lib/alert-banner/services/alert-banner.service.d.ts +28 -28
- package/lib/armature.module.d.ts +46 -46
- package/lib/base-components/base-component-api.d.ts +13 -13
- package/lib/base-components/base-component.module.d.ts +35 -35
- package/lib/base-components/sof-alert/sof-alert.component.d.ts +40 -40
- package/lib/base-components/sof-badge/sof-badge.component.d.ts +26 -26
- package/lib/base-components/sof-banner/sof-banner.component.d.ts +34 -34
- package/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.d.ts +100 -100
- package/lib/base-components/sof-confirm-address/sof-confirm-address.component.d.ts +61 -61
- package/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.d.ts +28 -28
- package/lib/base-components/sof-modal/sof-modal.component.d.ts +51 -51
- package/lib/base-components/sof-progress-bar/sof-progress-bar.component.d.ts +40 -40
- package/lib/base-components/sof-radio-card/sof-radio-card.component.d.ts +20 -20
- package/lib/base-components/sof-simple-alert/sof-simple-alert.component.d.ts +29 -29
- package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +25 -25
- package/lib/component-save-print/components/component-save-print/component-save-print.component.d.ts +46 -46
- package/lib/component-save-print/services/component-save-print.service.d.ts +18 -18
- package/lib/component-save-print/sof-ar-component-save-print.module.d.ts +9 -9
- package/lib/core/client-generated/api/session.service.d.ts +94 -94
- package/lib/core/client-generated/configuration.d.ts +48 -48
- package/lib/core/client-generated/encoder.d.ts +10 -10
- package/lib/core/client-generated/model/applicationUserModel.d.ts +54 -54
- package/lib/core/client-generated/model/assertedUserModel.d.ts +25 -25
- package/lib/core/client-generated/model/brandingModel.d.ts +33 -33
- package/lib/core/client-generated/model/errorModel.d.ts +24 -24
- package/lib/core/client-generated/model/folderLink.d.ts +34 -34
- package/lib/core/client-generated/model/identityProfile.d.ts +82 -82
- package/lib/core/client-generated/model/models.d.ts +19 -19
- package/lib/core/client-generated/model/oAuthModel.d.ts +28 -28
- package/lib/core/client-generated/model/preferencesRow.d.ts +15 -15
- package/lib/core/client-generated/model/rolesRow.d.ts +17 -17
- package/lib/core/client-generated/model/sessionGetResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionPostRequestModel.d.ts +39 -39
- package/lib/core/client-generated/model/sessionPostResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionPutRequestModel.d.ts +39 -39
- package/lib/core/client-generated/model/sessionPutResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionResponseModel.d.ts +43 -43
- package/lib/core/client-generated/model/settingsProfile.d.ts +21 -21
- package/lib/core/client-generated/model/themePaletteColorsModel.d.ts +72 -72
- package/lib/core/client-generated/model/themePaletteModel.d.ts +65 -65
- package/lib/core/client-generated/model/trackingModel.d.ts +24 -24
- package/lib/core/client-generated/model/validationRecordsRow.d.ts +17 -17
- package/lib/core/client-generated/variables.d.ts +8 -8
- package/lib/core/components/app-template/app-template.component.d.ts +61 -61
- package/lib/core/functions/guid.d.ts +4 -4
- package/lib/core/functions/naming-convention.d.ts +6 -6
- package/lib/core/functions/route-to-pre-login-route.d.ts +6 -6
- package/lib/core/initializer/abstract-startup-service.d.ts +5 -5
- package/lib/core/initializer/initializer.service.d.ts +79 -79
- package/lib/core/interceptors/armature-auth-token-append.interceptor.d.ts +31 -31
- package/lib/core/models/base-config.d.ts +18 -18
- package/lib/core/models/constants.d.ts +13 -13
- package/lib/core/models/data-store-config.d.ts +27 -27
- package/lib/core/models/header-config.d.ts +9 -9
- package/lib/core/models/http-verbs.d.ts +10 -10
- package/lib/core/models/navigation-config.d.ts +14 -14
- package/lib/core/models/oidc-auth-settings.d.ts +11 -11
- package/lib/core/models/route-path.d.ts +5 -5
- package/lib/core/models/session-config.d.ts +18 -18
- package/lib/core/models/styles.d.ts +11 -11
- package/lib/core/models/subdomain-config.d.ts +7 -7
- package/lib/core/models/typed-session.d.ts +17 -17
- package/lib/core/models/user-entity-service-config.d.ts +14 -14
- package/lib/core/services/authorization.service.d.ts +54 -54
- package/lib/core/services/banner.service.d.ts +31 -31
- package/lib/core/services/base-config.service.d.ts +21 -21
- package/lib/core/services/custom-auth-config.service.d.ts +6 -6
- package/lib/core/services/default-config.service.d.ts +8 -8
- package/lib/core/services/session.service.d.ts +127 -127
- package/lib/core/services/user-entity.service.d.ts +47 -47
- package/lib/distributed-cache/client-generated/api/api.d.ts +3 -3
- package/lib/distributed-cache/client-generated/api/cache.service.d.ts +72 -72
- package/lib/distributed-cache/client-generated/configuration.d.ts +48 -48
- package/lib/distributed-cache/client-generated/encoder.d.ts +10 -10
- package/lib/distributed-cache/client-generated/model/cacheExpirationType.d.ts +19 -19
- package/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.d.ts +33 -33
- package/lib/distributed-cache/client-generated/model/models.d.ts +4 -4
- package/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.d.ts +20 -20
- package/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.d.ts +20 -20
- package/lib/distributed-cache/client-generated/variables.d.ts +8 -8
- package/lib/distributed-cache/distributed-cache-api.d.ts +7 -7
- package/lib/distributed-cache/distributed-cache.module.d.ts +8 -8
- package/lib/distributed-cache/models/constants.d.ts +2 -2
- package/lib/distributed-cache/models/policy-person.d.ts +19 -19
- package/lib/distributed-cache/services/server-cache.service.d.ts +72 -72
- package/lib/error/components/error-common/error-common.component.d.ts +14 -14
- package/lib/error/error-api.d.ts +4 -4
- package/lib/error/error.module.d.ts +11 -11
- package/lib/error/models/error-common-config.d.ts +21 -21
- package/lib/faq/components/faq/faq.component.d.ts +19 -19
- package/lib/faq/faq-api.d.ts +5 -5
- package/lib/faq/faq.module.d.ts +15 -15
- package/lib/faq/models/faq-config.d.ts +13 -13
- package/lib/faq/models/faq.d.ts +9 -9
- package/lib/feedback-tool/components/feedback-tool/feedback-tool.component.d.ts +62 -0
- package/lib/feedback-tool/feedback-tool-api.d.ts +3 -0
- package/lib/feedback-tool/feedback-tool.module.d.ts +14 -0
- package/lib/footer/components/footer/footer.component.d.ts +14 -14
- package/lib/footer/components/site-map/site-map.component.d.ts +13 -13
- package/lib/footer/footer-api.d.ts +7 -7
- package/lib/footer/footer.module.d.ts +14 -14
- package/lib/footer/models/enum/site-map-direction.d.ts +13 -13
- package/lib/footer/models/footer-config.d.ts +7 -7
- package/lib/footer/models/site-map-models.d.ts +41 -41
- package/lib/forms/components/sof-address/sof-address.component.d.ts +53 -53
- package/lib/forms/directives/alphanumeric/alphanumeric.directive.d.ts +31 -31
- package/lib/forms/directives/input-trim/input-trim.directive.d.ts +58 -58
- package/lib/forms/directives/letters-characters/letters-characters.directive.d.ts +27 -27
- package/lib/forms/directives/letters-only/letters-only.directive.d.ts +27 -27
- package/lib/forms/directives/numbers-only/numbers-only.directive.d.ts +22 -22
- package/lib/forms/forms-api.d.ts +14 -14
- package/lib/forms/forms.module.d.ts +21 -21
- package/lib/forms/models/address.d.ts +14 -14
- package/lib/forms/models/constants.d.ts +9 -9
- package/lib/forms/models/county.d.ts +13 -13
- package/lib/forms/models/enums/states.d.ts +64 -64
- package/lib/forms/pipes/phone-format.pipe.d.ts +10 -10
- package/lib/forms/services/alert.service.d.ts +60 -60
- package/lib/header/components/header/header.component.d.ts +120 -120
- package/lib/header/components/mobile-header-menu/mobile-header-menu.component.d.ts +26 -26
- package/lib/header/header-api.d.ts +9 -9
- package/lib/header/header.module.d.ts +20 -20
- package/lib/header/models/header-auth.settings.d.ts +30 -30
- package/lib/header/models/header-language.settings.d.ts +10 -10
- package/lib/header/models/header-theme.settings.d.ts +19 -19
- package/lib/header/models/header.settings.d.ts +53 -53
- package/lib/header/models/mobile-header-nav.settings.d.ts +11 -11
- package/lib/navigation/components/navigation/navigation.component.d.ts +200 -200
- package/lib/navigation/models/nav-theme.settings.d.ts +25 -25
- package/lib/navigation/models/nav.settings.d.ts +64 -64
- package/lib/navigation/models/navigation.d.ts +40 -40
- package/lib/navigation/navigation-api.d.ts +6 -6
- package/lib/navigation/navigation.module.d.ts +25 -25
- package/lib/oauth/models/constants.d.ts +6 -6
- package/lib/oauth/models/generated/accountManagementAssertionModel.d.ts +49 -49
- package/lib/oauth/models/generated/accountManagementRefreshRequestModel.d.ts +21 -21
- package/lib/oauth/models/generated/accountManagementResponseModel.d.ts +45 -45
- package/lib/oauth/models/generated/coverageDetail.d.ts +67 -67
- package/lib/oauth/models/generated/finance.d.ts +36 -36
- package/lib/oauth/models/generated/iSsoResponseModel.d.ts +44 -44
- package/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.d.ts +45 -45
- package/lib/oauth/models/generated/person.d.ts +53 -53
- package/lib/oauth/models/generated/policy.d.ts +51 -51
- package/lib/oauth/models/generated/refreshResponseModel.d.ts +20 -20
- package/lib/oauth/models/hybrid-saml-oauth-config.d.ts +14 -14
- package/lib/oauth/oauth-api.d.ts +12 -12
- package/lib/oauth/oauth.module.d.ts +9 -9
- package/lib/oauth/services/hybrid-saml-oauth.service.d.ts +59 -59
- package/lib/rbac/directives/rbac-action.directive.d.ts +27 -27
- package/lib/rbac/models/access-token-claims.d.ts +18 -18
- package/lib/rbac/models/constants.d.ts +4 -4
- package/lib/rbac/models/decoded-access-token.d.ts +43 -43
- package/lib/rbac/models/rbac-config.d.ts +15 -15
- package/lib/rbac/models/role-access.d.ts +7 -7
- package/lib/rbac/rbac-api.d.ts +11 -11
- package/lib/rbac/rbac.module.d.ts +19 -19
- package/lib/rbac/services/ar-role-nav.service.d.ts +25 -25
- package/lib/rbac/services/oauth2-role.service.d.ts +51 -51
- package/lib/rbac/services/role-nav.service.d.ts +12 -12
- package/lib/rbac/services/tokens.d.ts +3 -3
- package/lib/resize-panels/components/resize-panels/resize-panels.component.d.ts +64 -64
- package/lib/resize-panels/models/resize-event.d.ts +6 -6
- package/lib/resize-panels/resize-panels-api.d.ts +4 -4
- package/lib/resize-panels/resize-panels.module.d.ts +9 -9
- package/lib/rum/models/arm-error.d.ts +27 -27
- package/lib/rum/models/rum-config.d.ts +9 -9
- package/lib/rum/rum-api.d.ts +7 -7
- package/lib/rum/rum.module.d.ts +14 -14
- package/lib/rum/services/rum.service.d.ts +47 -47
- package/lib/rum/services/shared-error.service.d.ts +27 -27
- package/lib/rum/services/softheon-error-handler.service.d.ts +32 -32
- package/lib/saml/components/redirect-saml/redirect-saml.component.d.ts +41 -41
- package/lib/saml/models/i-saml-request.d.ts +4 -4
- package/lib/saml/models/i-saml-response.d.ts +4 -4
- package/lib/saml/models/redirect-saml-request.d.ts +24 -24
- package/lib/saml/models/sso-gateway-model.d.ts +17 -17
- package/lib/saml/saml-api.d.ts +11 -11
- package/lib/saml/saml.module.d.ts +9 -9
- package/lib/saml/services/entry/abstract-saml-entry.service.d.ts +16 -16
- package/lib/saml/services/entry/sso-gateway-entry.service.d.ts +22 -22
- package/lib/saml/services/send-off/abstract-saml.service.d.ts +20 -20
- package/lib/saml/services/send-off/saml.service.d.ts +32 -32
- package/lib/sof-pipe/constants/constants.d.ts +8 -8
- package/lib/sof-pipe/models/sof-date-pipe-format.d.ts +7 -7
- package/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.d.ts +19 -19
- package/lib/sof-pipe/pipes/sof-date/sof-date.pipe.d.ts +21 -21
- package/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.d.ts +12 -12
- package/lib/sof-pipe/sof-pipe.api.d.ts +7 -7
- package/lib/sof-pipe/sof-pipe.module.d.ts +10 -10
- package/lib/theming/directives/css-override.directive.d.ts +20 -20
- package/lib/theming/models/css-override.d.ts +15 -15
- package/lib/theming/services/theme.service.d.ts +48 -48
- package/lib/theming/theme-api.d.ts +5 -5
- package/lib/theming/theme.module.d.ts +9 -9
- package/package.json +17 -23
- package/public-api.d.ts +49 -48
- package/esm2020/lib/armature.module.mjs +0 -176
- package/esm2020/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
- package/esm2020/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
- package/esm2020/lib/base-components/sof-modal/sof-modal.component.mjs +0 -58
- package/esm2020/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
- package/esm2020/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -40
- package/esm2020/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -32
- package/esm2020/lib/distributed-cache/distributed-cache.module.mjs +0 -38
- package/esm2020/lib/faq/components/faq/faq.component.mjs +0 -40
- package/esm2020/lib/footer/components/footer/footer.component.mjs +0 -25
- package/esm2020/lib/forms/models/constants.mjs +0 -10
- package/esm2020/lib/header/components/header/header.component.mjs +0 -161
- package/esm2020/lib/navigation/components/navigation/navigation.component.mjs +0 -556
- package/fesm2015/softheon-armature.mjs +0 -7275
- package/fesm2015/softheon-armature.mjs.map +0 -1
- package/fesm2020/softheon-armature.mjs +0 -7332
- package/fesm2020/softheon-armature.mjs.map +0 -1
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, of } from 'rxjs';
|
|
4
|
-
import { catchError, filter, first, share, take } from 'rxjs/operators';
|
|
5
|
-
import { USER_ENTITY_SERVICE_CONFIG } from '../models/constants';
|
|
6
|
-
import { UserEntityServiceConfig } from '../models/user-entity-service-config';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "angular-oauth2-oidc";
|
|
9
|
-
import * as i2 from "@angular/common/http";
|
|
10
|
-
import * as i3 from "../models/user-entity-service-config";
|
|
11
|
-
/** The user entity service */
|
|
12
|
-
export class UserEntityService {
|
|
13
|
-
/** The user model and hash */
|
|
14
|
-
get _user() {
|
|
15
|
-
return this.userBS.value;
|
|
16
|
-
}
|
|
17
|
-
set _user(val) {
|
|
18
|
-
this.userBS.next(val);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Constructs the service
|
|
22
|
-
* @param oauthService The oauth oidc 2 service
|
|
23
|
-
* @param httpClient The http client
|
|
24
|
-
* @param userEntityServiceConfig The user entity service configurations
|
|
25
|
-
*/
|
|
26
|
-
constructor(oauthService, httpClient, userEntityServiceConfig) {
|
|
27
|
-
this.oauthService = oauthService;
|
|
28
|
-
this.httpClient = httpClient;
|
|
29
|
-
this.userEntityServiceConfig = userEntityServiceConfig;
|
|
30
|
-
/** The get user partial url */
|
|
31
|
-
this.getUserPartial = 'api/userManagement/v1/user';
|
|
32
|
-
/** the user behavior subject */
|
|
33
|
-
this.userBS = new BehaviorSubject(undefined);
|
|
34
|
-
this.userEntityServiceConfig = !this.userEntityServiceConfig ? new UserEntityServiceConfig() : this.getConfigWithDefaults();
|
|
35
|
-
// tslint:disable-next-line: no-parameter-reassignment
|
|
36
|
-
this.userEntityServiceConfig.userEntityBaseUrl = this.userEntityServiceConfig.userEntityBaseUrl || '/';
|
|
37
|
-
this.getUserPartial = this.userEntityServiceConfig.getUserPartial || this.getUserPartial;
|
|
38
|
-
this.user$ = this.userBS.asObservable()
|
|
39
|
-
.pipe(filter(val => !!val));
|
|
40
|
-
if (this.userEntityServiceConfig.getUserOnInit) {
|
|
41
|
-
const interval = setInterval(() => {
|
|
42
|
-
this.isServiceAvailable = this.oauthService.hasValidAccessToken();
|
|
43
|
-
if (!this.isServiceAvailable) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
this.getUserFromApi()
|
|
47
|
-
.then()
|
|
48
|
-
.catch();
|
|
49
|
-
clearInterval(interval);
|
|
50
|
-
}, 100);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/** Gets the user */
|
|
54
|
-
async getUser() {
|
|
55
|
-
return new Promise((resolve, reject) => {
|
|
56
|
-
this.user$.pipe(take(1), share(), catchError(e => {
|
|
57
|
-
reject(e);
|
|
58
|
-
return of(e);
|
|
59
|
-
}))
|
|
60
|
-
.subscribe(user => {
|
|
61
|
-
resolve(user);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Updates the user
|
|
67
|
-
* @param user The new user model
|
|
68
|
-
*/
|
|
69
|
-
async updateUser(user) {
|
|
70
|
-
if (user) {
|
|
71
|
-
this._user = user;
|
|
72
|
-
return Promise.resolve(this._user);
|
|
73
|
-
}
|
|
74
|
-
await this.getUserFromApi();
|
|
75
|
-
return Promise.resolve(this._user);
|
|
76
|
-
}
|
|
77
|
-
/** Returns true if the user meets the validation function provided */
|
|
78
|
-
validateUser() {
|
|
79
|
-
if (this.userEntityServiceConfig && this._user) {
|
|
80
|
-
return this.userEntityServiceConfig.validate(this._user);
|
|
81
|
-
}
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
/** Gets the user from the api */
|
|
85
|
-
async getUserFromApi() {
|
|
86
|
-
// use the local path if there is not base path provided
|
|
87
|
-
return this.oauthService.events.pipe(first(e => e.type === 'discovery_document_loaded'))
|
|
88
|
-
.toPromise()
|
|
89
|
-
.then(async () => {
|
|
90
|
-
// append the issuer to the header of the request so the api knows what tenant to use
|
|
91
|
-
const headers = new HttpHeaders({
|
|
92
|
-
'Content-Type': 'application/json; charset=utf-8',
|
|
93
|
-
Authorization: `Bearer ${this.oauthService.getAccessToken()}`,
|
|
94
|
-
'Authorization-Tenant': (
|
|
95
|
-
// tslint:disable-next-line: no-string-literal
|
|
96
|
-
this.oauthService['config']?.loginUrl || this.oauthService['config']?.issuer
|
|
97
|
-
|| this.oauthService?.loginUrl || this.oauthService?.issuer || '')
|
|
98
|
-
.replace('/account/login', '')
|
|
99
|
-
.replace('/connect/authorize', '')
|
|
100
|
-
});
|
|
101
|
-
this.userCall = this.httpClient.get(`${this.userEntityServiceConfig.userEntityBaseUrl}${this.getUserPartial}?subIdFromToken=true&createEmpty=true&withoutChildLinks=${!this.userEntityServiceConfig.includeLinks}`, { headers })
|
|
102
|
-
.toPromise();
|
|
103
|
-
return this.userCall.then(res => {
|
|
104
|
-
if (!res || res.length === 0) {
|
|
105
|
-
console.error('No user entities found');
|
|
106
|
-
}
|
|
107
|
-
this._user = res[0];
|
|
108
|
-
this.validateUser();
|
|
109
|
-
})
|
|
110
|
-
.catch(e => {
|
|
111
|
-
console.error('UserEntityService encountered an error', e);
|
|
112
|
-
throw e;
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
/** Sets the default values of the config */
|
|
117
|
-
getConfigWithDefaults() {
|
|
118
|
-
const config = this.userEntityServiceConfig;
|
|
119
|
-
config.validate = config.validate || ((user) => true);
|
|
120
|
-
// tslint:disable-next-line: triple-equals
|
|
121
|
-
config.getUserOnInit = config.getUserOnInit == undefined ? true : config.getUserOnInit;
|
|
122
|
-
config.includeLinks = config.includeLinks == undefined ? true : config.includeLinks;
|
|
123
|
-
config.getUserPartial = config.getUserPartial == undefined ? this.getUserPartial : config.getUserPartial;
|
|
124
|
-
return config;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
130
|
-
type: Injectable,
|
|
131
|
-
args: [{
|
|
132
|
-
providedIn: 'root'
|
|
133
|
-
}]
|
|
134
|
-
}], ctorParameters:
|
|
135
|
-
type: Optional
|
|
136
|
-
}, {
|
|
137
|
-
type: Inject,
|
|
138
|
-
args: [USER_ENTITY_SERVICE_CONFIG]
|
|
139
|
-
}] }]
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy91c2VyLWVudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFFL0UsOEJBQThCO0FBSTlCLE1BQU0sT0FBTyxpQkFBaUI7SUFjNUIsOEJBQThCO0lBQzlCLElBQVksS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVksS0FBSyxDQUFDLEdBQXNCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFLRDs7Ozs7T0FLRztJQUNILFlBQ21CLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ2tCLHVCQUFnRDtRQUZ4RixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2tCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUExQjNHLCtCQUErQjtRQUNkLG1CQUFjLEdBQVcsNEJBQTRCLENBQUM7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QUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGZpcnN0LCBzaGFyZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEFzc2VydGVkVXNlck1vZGVsIH0gZnJvbSAnLi4vY2xpZW50LWdlbmVyYXRlZC9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBVU0VSX0VOVElUWV9TRVJWSUNFX0NPTkZJRyB9IGZyb20gJy4uL21vZGVscy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBVc2VyRW50aXR5U2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy91c2VyLWVudGl0eS1zZXJ2aWNlLWNvbmZpZyc7XHJcblxyXG4vKiogVGhlIHVzZXIgZW50aXR5IHNlcnZpY2UgKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckVudGl0eVNlcnZpY2Uge1xyXG5cclxuICAvKiogVGhlIHVzZXIgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxBc3NlcnRlZFVzZXJNb2RlbD47XHJcblxyXG4gIC8qKiBUcnVlIGlmIHRoZSBzZXJ2aWNlIGlzIGF2YWlsYWJsZSBmb3IgdXNlICovXHJcbiAgcHJpdmF0ZSBpc1NlcnZpY2VBdmFpbGFibGU6IGJvb2xlYW47XHJcblxyXG4gIC8qKiBUaGUgZ2V0IHVzZXIgcGFydGlhbCB1cmwgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGdldFVzZXJQYXJ0aWFsOiBzdHJpbmcgPSAnYXBpL3VzZXJNYW5hZ2VtZW50L3YxL3VzZXInO1xyXG5cclxuICAvKiogVGhlIHVzZXIgY2FsbCAqL1xyXG4gIHByaXZhdGUgdXNlckNhbGw6IFByb21pc2U8QXJyYXk8QXNzZXJ0ZWRVc2VyTW9kZWw+PjtcclxuXHJcbiAgLyoqIFRoZSB1c2VyIG1vZGVsIGFuZCBoYXNoICovXHJcbiAgcHJpdmF0ZSBnZXQgX3VzZXIoKTogQXNzZXJ0ZWRVc2VyTW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckJTLnZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIHNldCBfdXNlcih2YWw6IEFzc2VydGVkVXNlck1vZGVsKSB7XHJcbiAgICB0aGlzLnVzZXJCUy5uZXh0KHZhbCk7XHJcbiAgfVxyXG5cclxuICAvKiogdGhlIHVzZXIgYmVoYXZpb3Igc3ViamVjdCAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlckJTOiBCZWhhdmlvclN1YmplY3Q8QXNzZXJ0ZWRVc2VyTW9kZWw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBc3NlcnRlZFVzZXJNb2RlbD4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBvYXV0aFNlcnZpY2UgVGhlIG9hdXRoIG9pZGMgMiBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIGh0dHBDbGllbnQgVGhlIGh0dHAgY2xpZW50XHJcbiAgICogQHBhcmFtIHVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnIFRoZSB1c2VyIGVudGl0eSBzZXJ2aWNlIGNvbmZpZ3VyYXRpb25zXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VSX0VOVElUWV9TRVJWSUNFX0NPTkZJRykgcmVhZG9ubHkgdXNlckVudGl0eVNlcnZpY2VDb25maWc6IFVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnID0gIXRoaXMudXNlckVudGl0eVNlcnZpY2VDb25maWcgPyBuZXcgVXNlckVudGl0eVNlcnZpY2VDb25maWcoKSA6IHRoaXMuZ2V0Q29uZmlnV2l0aERlZmF1bHRzKCk7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXBhcmFtZXRlci1yZWFzc2lnbm1lbnRcclxuICAgIHRoaXMudXNlckVudGl0eVNlcnZpY2VDb25maWcudXNlckVudGl0eUJhc2VVcmwgPSB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLnVzZXJFbnRpdHlCYXNlVXJsIHx8ICcvJztcclxuICAgIHRoaXMuZ2V0VXNlclBhcnRpYWwgPSB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLmdldFVzZXJQYXJ0aWFsIHx8IHRoaXMuZ2V0VXNlclBhcnRpYWw7XHJcbiAgICB0aGlzLnVzZXIkID0gdGhpcy51c2VyQlMuYXNPYnNlcnZhYmxlKClcclxuICAgICAgLnBpcGUoZmlsdGVyKHZhbCA9PiAhIXZhbCkpO1xyXG5cclxuICAgIGlmICh0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLmdldFVzZXJPbkluaXQpIHtcclxuICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NlcnZpY2VBdmFpbGFibGUgPSB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VydmljZUF2YWlsYWJsZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldFVzZXJGcm9tQXBpKClcclxuICAgICAgICAgIC50aGVuKClcclxuICAgICAgICAgIC5jYXRjaCgpO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEdldHMgdGhlIHVzZXIgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0VXNlcigpOiBQcm9taXNlPEFzc2VydGVkVXNlck1vZGVsPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXIkLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBzaGFyZSgpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9mKGUpO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5zdWJzY3JpYmUodXNlciA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHVzZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSB1c2VyXHJcbiAgICogQHBhcmFtIHVzZXIgVGhlIG5ldyB1c2VyIG1vZGVsXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVVzZXIodXNlcj86IEFzc2VydGVkVXNlck1vZGVsKTogUHJvbWlzZTxBc3NlcnRlZFVzZXJNb2RlbD4ge1xyXG4gICAgaWYgKHVzZXIpIHtcclxuICAgICAgdGhpcy5fdXNlciA9IHVzZXI7XHJcblxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3VzZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMuZ2V0VXNlckZyb21BcGkoKTtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3VzZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBtZWV0cyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBwcm92aWRlZCAqL1xyXG4gIHB1YmxpYyB2YWxpZGF0ZVVzZXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy51c2VyRW50aXR5U2VydmljZUNvbmZpZyAmJiB0aGlzLl91c2VyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLnZhbGlkYXRlKHRoaXMuX3VzZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldHMgdGhlIHVzZXIgZnJvbSB0aGUgYXBpICovXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRVc2VyRnJvbUFwaSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIHVzZSB0aGUgbG9jYWwgcGF0aCBpZiB0aGVyZSBpcyBub3QgYmFzZSBwYXRoIHByb3ZpZGVkXHJcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoZmlyc3QoZSA9PiBlLnR5cGUgPT09ICdkaXNjb3ZlcnlfZG9jdW1lbnRfbG9hZGVkJykpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgLy8gYXBwZW5kIHRoZSBpc3N1ZXIgdG8gdGhlIGhlYWRlciBvZiB0aGUgcmVxdWVzdCBzbyB0aGUgYXBpIGtub3dzIHdoYXQgdGVuYW50IHRvIHVzZVxyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLm9hdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpfWAsXHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uLVRlbmFudCc6IChcclxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXHJcbiAgICAgICAgICAgICAgdGhpcy5vYXV0aFNlcnZpY2VbJ2NvbmZpZyddPy5sb2dpblVybCB8fCB0aGlzLm9hdXRoU2VydmljZVsnY29uZmlnJ10/Lmlzc3VlclxyXG4gICAgICAgICAgICAgIHx8IHRoaXMub2F1dGhTZXJ2aWNlPy5sb2dpblVybCB8fCB0aGlzLm9hdXRoU2VydmljZT8uaXNzdWVyIHx8ICcnKVxyXG4gICAgICAgICAgICAgIC5yZXBsYWNlKCcvYWNjb3VudC9sb2dpbicsICcnKVxyXG4gICAgICAgICAgICAgIC5yZXBsYWNlKCcvY29ubmVjdC9hdXRob3JpemUnLCAnJylcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMudXNlckNhbGwgPSB0aGlzLmh0dHBDbGllbnQuZ2V0PEFycmF5PEFzc2VydGVkVXNlck1vZGVsPj4oXHJcbiAgICAgICAgICBgJHt0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLnVzZXJFbnRpdHlCYXNlVXJsfSR7dGhpcy5nZXRVc2VyUGFydGlhbH0/c3ViSWRGcm9tVG9rZW49dHJ1ZSZjcmVhdGVFbXB0eT10cnVlJndpdGhvdXRDaGlsZExpbmtzPSR7IXRoaXMudXNlckVudGl0eVNlcnZpY2VDb25maWcuaW5jbHVkZUxpbmtzfWAsXHJcbiAgICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICAgIClcclxuICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlckNhbGwudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXMgfHwgcmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyB1c2VyIGVudGl0aWVzIGZvdW5kJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl91c2VyID0gcmVzWzBdO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXIoKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVc2VyRW50aXR5U2VydmljZSBlbmNvdW50ZXJlZCBhbiBlcnJvcicsIGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldHMgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBjb25maWcgKi9cclxuICBwcml2YXRlIGdldENvbmZpZ1dpdGhEZWZhdWx0cygpOiBVc2VyRW50aXR5U2VydmljZUNvbmZpZyB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnO1xyXG4gICAgY29uZmlnLnZhbGlkYXRlID0gY29uZmlnLnZhbGlkYXRlIHx8ICgodXNlcjogQXNzZXJ0ZWRVc2VyTW9kZWwpOiBib29sZWFuID0+IHRydWUpO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB0cmlwbGUtZXF1YWxzXHJcbiAgICBjb25maWcuZ2V0VXNlck9uSW5pdCA9IGNvbmZpZy5nZXRVc2VyT25Jbml0ID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb25maWcuZ2V0VXNlck9uSW5pdDtcclxuICAgIGNvbmZpZy5pbmNsdWRlTGlua3MgPSBjb25maWcuaW5jbHVkZUxpbmtzID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb25maWcuaW5jbHVkZUxpbmtzO1xyXG4gICAgY29uZmlnLmdldFVzZXJQYXJ0aWFsID0gY29uZmlnLmdldFVzZXJQYXJ0aWFsID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0VXNlclBhcnRpYWwgOiBjb25maWcuZ2V0VXNlclBhcnRpYWw7XHJcblxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcbn1cclxuIl19
|
|
1
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, of } from 'rxjs';
|
|
4
|
+
import { catchError, filter, first, share, take } from 'rxjs/operators';
|
|
5
|
+
import { USER_ENTITY_SERVICE_CONFIG } from '../models/constants';
|
|
6
|
+
import { UserEntityServiceConfig } from '../models/user-entity-service-config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "angular-oauth2-oidc";
|
|
9
|
+
import * as i2 from "@angular/common/http";
|
|
10
|
+
import * as i3 from "../models/user-entity-service-config";
|
|
11
|
+
/** The user entity service */
|
|
12
|
+
export class UserEntityService {
|
|
13
|
+
/** The user model and hash */
|
|
14
|
+
get _user() {
|
|
15
|
+
return this.userBS.value;
|
|
16
|
+
}
|
|
17
|
+
set _user(val) {
|
|
18
|
+
this.userBS.next(val);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Constructs the service
|
|
22
|
+
* @param oauthService The oauth oidc 2 service
|
|
23
|
+
* @param httpClient The http client
|
|
24
|
+
* @param userEntityServiceConfig The user entity service configurations
|
|
25
|
+
*/
|
|
26
|
+
constructor(oauthService, httpClient, userEntityServiceConfig) {
|
|
27
|
+
this.oauthService = oauthService;
|
|
28
|
+
this.httpClient = httpClient;
|
|
29
|
+
this.userEntityServiceConfig = userEntityServiceConfig;
|
|
30
|
+
/** The get user partial url */
|
|
31
|
+
this.getUserPartial = 'api/userManagement/v1/user';
|
|
32
|
+
/** the user behavior subject */
|
|
33
|
+
this.userBS = new BehaviorSubject(undefined);
|
|
34
|
+
this.userEntityServiceConfig = !this.userEntityServiceConfig ? new UserEntityServiceConfig() : this.getConfigWithDefaults();
|
|
35
|
+
// tslint:disable-next-line: no-parameter-reassignment
|
|
36
|
+
this.userEntityServiceConfig.userEntityBaseUrl = this.userEntityServiceConfig.userEntityBaseUrl || '/';
|
|
37
|
+
this.getUserPartial = this.userEntityServiceConfig.getUserPartial || this.getUserPartial;
|
|
38
|
+
this.user$ = this.userBS.asObservable()
|
|
39
|
+
.pipe(filter(val => !!val));
|
|
40
|
+
if (this.userEntityServiceConfig.getUserOnInit) {
|
|
41
|
+
const interval = setInterval(() => {
|
|
42
|
+
this.isServiceAvailable = this.oauthService.hasValidAccessToken();
|
|
43
|
+
if (!this.isServiceAvailable) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.getUserFromApi()
|
|
47
|
+
.then()
|
|
48
|
+
.catch();
|
|
49
|
+
clearInterval(interval);
|
|
50
|
+
}, 100);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Gets the user */
|
|
54
|
+
async getUser() {
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
this.user$.pipe(take(1), share(), catchError(e => {
|
|
57
|
+
reject(e);
|
|
58
|
+
return of(e);
|
|
59
|
+
}))
|
|
60
|
+
.subscribe(user => {
|
|
61
|
+
resolve(user);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Updates the user
|
|
67
|
+
* @param user The new user model
|
|
68
|
+
*/
|
|
69
|
+
async updateUser(user) {
|
|
70
|
+
if (user) {
|
|
71
|
+
this._user = user;
|
|
72
|
+
return Promise.resolve(this._user);
|
|
73
|
+
}
|
|
74
|
+
await this.getUserFromApi();
|
|
75
|
+
return Promise.resolve(this._user);
|
|
76
|
+
}
|
|
77
|
+
/** Returns true if the user meets the validation function provided */
|
|
78
|
+
validateUser() {
|
|
79
|
+
if (this.userEntityServiceConfig && this._user) {
|
|
80
|
+
return this.userEntityServiceConfig.validate(this._user);
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/** Gets the user from the api */
|
|
85
|
+
async getUserFromApi() {
|
|
86
|
+
// use the local path if there is not base path provided
|
|
87
|
+
return this.oauthService.events.pipe(first(e => e.type === 'discovery_document_loaded'))
|
|
88
|
+
.toPromise()
|
|
89
|
+
.then(async () => {
|
|
90
|
+
// append the issuer to the header of the request so the api knows what tenant to use
|
|
91
|
+
const headers = new HttpHeaders({
|
|
92
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
93
|
+
Authorization: `Bearer ${this.oauthService.getAccessToken()}`,
|
|
94
|
+
'Authorization-Tenant': (
|
|
95
|
+
// tslint:disable-next-line: no-string-literal
|
|
96
|
+
this.oauthService['config']?.loginUrl || this.oauthService['config']?.issuer
|
|
97
|
+
|| this.oauthService?.loginUrl || this.oauthService?.issuer || '')
|
|
98
|
+
.replace('/account/login', '')
|
|
99
|
+
.replace('/connect/authorize', '')
|
|
100
|
+
});
|
|
101
|
+
this.userCall = this.httpClient.get(`${this.userEntityServiceConfig.userEntityBaseUrl}${this.getUserPartial}?subIdFromToken=true&createEmpty=true&withoutChildLinks=${!this.userEntityServiceConfig.includeLinks}`, { headers })
|
|
102
|
+
.toPromise();
|
|
103
|
+
return this.userCall.then(res => {
|
|
104
|
+
if (!res || res.length === 0) {
|
|
105
|
+
console.error('No user entities found');
|
|
106
|
+
}
|
|
107
|
+
this._user = res[0];
|
|
108
|
+
this.validateUser();
|
|
109
|
+
})
|
|
110
|
+
.catch(e => {
|
|
111
|
+
console.error('UserEntityService encountered an error', e);
|
|
112
|
+
throw e;
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/** Sets the default values of the config */
|
|
117
|
+
getConfigWithDefaults() {
|
|
118
|
+
const config = this.userEntityServiceConfig;
|
|
119
|
+
config.validate = config.validate || ((user) => true);
|
|
120
|
+
// tslint:disable-next-line: triple-equals
|
|
121
|
+
config.getUserOnInit = config.getUserOnInit == undefined ? true : config.getUserOnInit;
|
|
122
|
+
config.includeLinks = config.includeLinks == undefined ? true : config.includeLinks;
|
|
123
|
+
config.getUserPartial = config.getUserPartial == undefined ? this.getUserPartial : config.getUserPartial;
|
|
124
|
+
return config;
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserEntityService, deps: [{ token: i1.OAuthService }, { token: i2.HttpClient }, { token: USER_ENTITY_SERVICE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
127
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserEntityService, providedIn: 'root' }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserEntityService, decorators: [{
|
|
130
|
+
type: Injectable,
|
|
131
|
+
args: [{
|
|
132
|
+
providedIn: 'root'
|
|
133
|
+
}]
|
|
134
|
+
}], ctorParameters: () => [{ type: i1.OAuthService }, { type: i2.HttpClient }, { type: i3.UserEntityServiceConfig, decorators: [{
|
|
135
|
+
type: Optional
|
|
136
|
+
}, {
|
|
137
|
+
type: Inject,
|
|
138
|
+
args: [USER_ENTITY_SERVICE_CONFIG]
|
|
139
|
+
}] }] });
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy91c2VyLWVudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFFL0UsOEJBQThCO0FBSTlCLE1BQU0sT0FBTyxpQkFBaUI7SUFjNUIsOEJBQThCO0lBQzlCLElBQVksS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVksS0FBSyxDQUFDLEdBQXNCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFLRDs7Ozs7T0FLRztJQUNILFlBQ21CLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ2tCLHVCQUFnRDtRQUZ4RixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2tCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUExQjNHLCtCQUErQjtRQUNkLG1CQUFjLEdBQVcsNEJBQTRCLENBQUM7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QUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGZpcnN0LCBzaGFyZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEFzc2VydGVkVXNlck1vZGVsIH0gZnJvbSAnLi4vY2xpZW50LWdlbmVyYXRlZC9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBVU0VSX0VOVElUWV9TRVJWSUNFX0NPTkZJRyB9IGZyb20gJy4uL21vZGVscy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBVc2VyRW50aXR5U2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy91c2VyLWVudGl0eS1zZXJ2aWNlLWNvbmZpZyc7XHJcblxyXG4vKiogVGhlIHVzZXIgZW50aXR5IHNlcnZpY2UgKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckVudGl0eVNlcnZpY2Uge1xyXG5cclxuICAvKiogVGhlIHVzZXIgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxBc3NlcnRlZFVzZXJNb2RlbD47XHJcblxyXG4gIC8qKiBUcnVlIGlmIHRoZSBzZXJ2aWNlIGlzIGF2YWlsYWJsZSBmb3IgdXNlICovXHJcbiAgcHJpdmF0ZSBpc1NlcnZpY2VBdmFpbGFibGU6IGJvb2xlYW47XHJcblxyXG4gIC8qKiBUaGUgZ2V0IHVzZXIgcGFydGlhbCB1cmwgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGdldFVzZXJQYXJ0aWFsOiBzdHJpbmcgPSAnYXBpL3VzZXJNYW5hZ2VtZW50L3YxL3VzZXInO1xyXG5cclxuICAvKiogVGhlIHVzZXIgY2FsbCAqL1xyXG4gIHByaXZhdGUgdXNlckNhbGw6IFByb21pc2U8QXJyYXk8QXNzZXJ0ZWRVc2VyTW9kZWw+PjtcclxuXHJcbiAgLyoqIFRoZSB1c2VyIG1vZGVsIGFuZCBoYXNoICovXHJcbiAgcHJpdmF0ZSBnZXQgX3VzZXIoKTogQXNzZXJ0ZWRVc2VyTW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckJTLnZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIHNldCBfdXNlcih2YWw6IEFzc2VydGVkVXNlck1vZGVsKSB7XHJcbiAgICB0aGlzLnVzZXJCUy5uZXh0KHZhbCk7XHJcbiAgfVxyXG5cclxuICAvKiogdGhlIHVzZXIgYmVoYXZpb3Igc3ViamVjdCAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlckJTOiBCZWhhdmlvclN1YmplY3Q8QXNzZXJ0ZWRVc2VyTW9kZWw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBc3NlcnRlZFVzZXJNb2RlbD4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBvYXV0aFNlcnZpY2UgVGhlIG9hdXRoIG9pZGMgMiBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIGh0dHBDbGllbnQgVGhlIGh0dHAgY2xpZW50XHJcbiAgICogQHBhcmFtIHVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnIFRoZSB1c2VyIGVudGl0eSBzZXJ2aWNlIGNvbmZpZ3VyYXRpb25zXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VSX0VOVElUWV9TRVJWSUNFX0NPTkZJRykgcmVhZG9ubHkgdXNlckVudGl0eVNlcnZpY2VDb25maWc6IFVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnID0gIXRoaXMudXNlckVudGl0eVNlcnZpY2VDb25maWcgPyBuZXcgVXNlckVudGl0eVNlcnZpY2VDb25maWcoKSA6IHRoaXMuZ2V0Q29uZmlnV2l0aERlZmF1bHRzKCk7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXBhcmFtZXRlci1yZWFzc2lnbm1lbnRcclxuICAgIHRoaXMudXNlckVudGl0eVNlcnZpY2VDb25maWcudXNlckVudGl0eUJhc2VVcmwgPSB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLnVzZXJFbnRpdHlCYXNlVXJsIHx8ICcvJztcclxuICAgIHRoaXMuZ2V0VXNlclBhcnRpYWwgPSB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLmdldFVzZXJQYXJ0aWFsIHx8IHRoaXMuZ2V0VXNlclBhcnRpYWw7XHJcbiAgICB0aGlzLnVzZXIkID0gdGhpcy51c2VyQlMuYXNPYnNlcnZhYmxlKClcclxuICAgICAgLnBpcGUoZmlsdGVyKHZhbCA9PiAhIXZhbCkpO1xyXG5cclxuICAgIGlmICh0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLmdldFVzZXJPbkluaXQpIHtcclxuICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NlcnZpY2VBdmFpbGFibGUgPSB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VydmljZUF2YWlsYWJsZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldFVzZXJGcm9tQXBpKClcclxuICAgICAgICAgIC50aGVuKClcclxuICAgICAgICAgIC5jYXRjaCgpO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEdldHMgdGhlIHVzZXIgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0VXNlcigpOiBQcm9taXNlPEFzc2VydGVkVXNlck1vZGVsPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXIkLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBzaGFyZSgpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9mKGUpO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5zdWJzY3JpYmUodXNlciA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHVzZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSB1c2VyXHJcbiAgICogQHBhcmFtIHVzZXIgVGhlIG5ldyB1c2VyIG1vZGVsXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVVzZXIodXNlcj86IEFzc2VydGVkVXNlck1vZGVsKTogUHJvbWlzZTxBc3NlcnRlZFVzZXJNb2RlbD4ge1xyXG4gICAgaWYgKHVzZXIpIHtcclxuICAgICAgdGhpcy5fdXNlciA9IHVzZXI7XHJcblxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3VzZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMuZ2V0VXNlckZyb21BcGkoKTtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3VzZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBtZWV0cyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBwcm92aWRlZCAqL1xyXG4gIHB1YmxpYyB2YWxpZGF0ZVVzZXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy51c2VyRW50aXR5U2VydmljZUNvbmZpZyAmJiB0aGlzLl91c2VyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLnZhbGlkYXRlKHRoaXMuX3VzZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldHMgdGhlIHVzZXIgZnJvbSB0aGUgYXBpICovXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRVc2VyRnJvbUFwaSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIHVzZSB0aGUgbG9jYWwgcGF0aCBpZiB0aGVyZSBpcyBub3QgYmFzZSBwYXRoIHByb3ZpZGVkXHJcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoZmlyc3QoZSA9PiBlLnR5cGUgPT09ICdkaXNjb3ZlcnlfZG9jdW1lbnRfbG9hZGVkJykpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgLy8gYXBwZW5kIHRoZSBpc3N1ZXIgdG8gdGhlIGhlYWRlciBvZiB0aGUgcmVxdWVzdCBzbyB0aGUgYXBpIGtub3dzIHdoYXQgdGVuYW50IHRvIHVzZVxyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLm9hdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpfWAsXHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uLVRlbmFudCc6IChcclxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXHJcbiAgICAgICAgICAgICAgdGhpcy5vYXV0aFNlcnZpY2VbJ2NvbmZpZyddPy5sb2dpblVybCB8fCB0aGlzLm9hdXRoU2VydmljZVsnY29uZmlnJ10/Lmlzc3VlclxyXG4gICAgICAgICAgICAgIHx8IHRoaXMub2F1dGhTZXJ2aWNlPy5sb2dpblVybCB8fCB0aGlzLm9hdXRoU2VydmljZT8uaXNzdWVyIHx8ICcnKVxyXG4gICAgICAgICAgICAgIC5yZXBsYWNlKCcvYWNjb3VudC9sb2dpbicsICcnKVxyXG4gICAgICAgICAgICAgIC5yZXBsYWNlKCcvY29ubmVjdC9hdXRob3JpemUnLCAnJylcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMudXNlckNhbGwgPSB0aGlzLmh0dHBDbGllbnQuZ2V0PEFycmF5PEFzc2VydGVkVXNlck1vZGVsPj4oXHJcbiAgICAgICAgICBgJHt0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnLnVzZXJFbnRpdHlCYXNlVXJsfSR7dGhpcy5nZXRVc2VyUGFydGlhbH0/c3ViSWRGcm9tVG9rZW49dHJ1ZSZjcmVhdGVFbXB0eT10cnVlJndpdGhvdXRDaGlsZExpbmtzPSR7IXRoaXMudXNlckVudGl0eVNlcnZpY2VDb25maWcuaW5jbHVkZUxpbmtzfWAsXHJcbiAgICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICAgIClcclxuICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlckNhbGwudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXMgfHwgcmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyB1c2VyIGVudGl0aWVzIGZvdW5kJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl91c2VyID0gcmVzWzBdO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXIoKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVc2VyRW50aXR5U2VydmljZSBlbmNvdW50ZXJlZCBhbiBlcnJvcicsIGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldHMgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBjb25maWcgKi9cclxuICBwcml2YXRlIGdldENvbmZpZ1dpdGhEZWZhdWx0cygpOiBVc2VyRW50aXR5U2VydmljZUNvbmZpZyB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnO1xyXG4gICAgY29uZmlnLnZhbGlkYXRlID0gY29uZmlnLnZhbGlkYXRlIHx8ICgodXNlcjogQXNzZXJ0ZWRVc2VyTW9kZWwpOiBib29sZWFuID0+IHRydWUpO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB0cmlwbGUtZXF1YWxzXHJcbiAgICBjb25maWcuZ2V0VXNlck9uSW5pdCA9IGNvbmZpZy5nZXRVc2VyT25Jbml0ID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb25maWcuZ2V0VXNlck9uSW5pdDtcclxuICAgIGNvbmZpZy5pbmNsdWRlTGlua3MgPSBjb25maWcuaW5jbHVkZUxpbmtzID09IHVuZGVmaW5lZCA/IHRydWUgOiBjb25maWcuaW5jbHVkZUxpbmtzO1xyXG4gICAgY29uZmlnLmdldFVzZXJQYXJ0aWFsID0gY29uZmlnLmdldFVzZXJQYXJ0aWFsID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0VXNlclBhcnRpYWwgOiBjb25maWcuZ2V0VXNlclBhcnRpYWw7XHJcblxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './cache.service';
|
|
2
|
-
import { CacheService } from './cache.service';
|
|
3
|
-
export const APIS = [CacheService];
|
|
1
|
+
export * from './cache.service';
|
|
2
|
+
import { CacheService } from './cache.service';
|
|
3
|
+
export const APIS = [CacheService];
|
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9kaXN0cmlidXRlZC1jYWNoZS9jbGllbnQtZ2VuZXJhdGVkL2FwaS9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlLnNlcnZpY2UnO1xyXG5leHBvcnQgY29uc3QgQVBJUyA9IFtDYWNoZVNlcnZpY2VdO1xyXG4iXX0=
|